[Pki-devel] correcting JavaScript inability to handle big numbers

Andrew Wnuk awnuk at redhat.com
Wed Apr 24 01:27:43 UTC 2013


This patch corrects JavaScript inability to handle big numbers in key  
key recovery process.

Bug: 955784.
-------------- next part --------------
Index: pki/base/common/src/com/netscape/cms/servlet/key/RecoverBySerial.java
===================================================================
--- pki/base/common/src/com/netscape/cms/servlet/key/RecoverBySerial.java	(revision 2533)
+++ pki/base/common/src/com/netscape/cms/servlet/key/RecoverBySerial.java	(working copy)
@@ -68,6 +68,7 @@
 
     private final static String OUT_OP = "op";
     private final static String OUT_SERIALNO = IN_SERIALNO;
+    private final static String OUT_SERIALNO_IN_HEX = "serialNumberInHex";
     private final static String OUT_RECOVERY_SUCCESS = "recoverySuccess";
     private final static String OUT_SERVICE_URL = "serviceURL";
     private final static String OUT_ERROR = "errorDetails";
@@ -288,6 +289,8 @@
                   new BigInteger(seq), x509cert,
                       (String) sContext.get(SessionContext.USER_ID));
             header.addStringValue(OUT_SERIALNO, req.getParameter(IN_SERIALNO));
+            header.addStringValue(OUT_SERIALNO_IN_HEX,
+                new BigInteger(req.getParameter(IN_SERIALNO)).toString(16));
             header.addStringValue("requestID", reqID);
         } catch (EBaseException e) {
             String error =
@@ -404,6 +407,8 @@
                 req.getParameter(OUT_OP));
             header.addBigIntegerValue(OUT_SERIALNO,
                 new BigInteger(seq), 10);
+            header.addBigIntegerValue(OUT_SERIALNO_IN_HEX,
+                new BigInteger(seq), 16);
             header.addStringValue(OUT_SERVICE_URL,
                 req.getRequestURI());
             byte pkcs12[] = mService.doKeyRecovery(
Index: pki/base/common/src/com/netscape/cms/servlet/key/GetApprovalStatus.java
===================================================================
--- pki/base/common/src/com/netscape/cms/servlet/key/GetApprovalStatus.java	(revision 2533)
+++ pki/base/common/src/com/netscape/cms/servlet/key/GetApprovalStatus.java	(working copy)
@@ -154,6 +154,8 @@
             }
             header.addStringValue("serialNumber",
                 (String) params.get("keyID"));
+            header.addStringValue("serialNumberInHex",
+                new BigInteger((String) params.get("keyID")).toString(16));
 
             int requiredNumber = mService.getNoOfRequiredAgents();
 
Index: pki/base/common/src/com/netscape/cms/servlet/key/GrantRecovery.java
===================================================================
--- pki/base/common/src/com/netscape/cms/servlet/key/GrantRecovery.java	(revision 2533)
+++ pki/base/common/src/com/netscape/cms/servlet/key/GrantRecovery.java	(working copy)
@@ -268,6 +268,8 @@
             }
             header.addStringValue("serialNumber",
                 (String) h.get("keyID"));
+           header.addStringValue("serialNumberInHex",
+                new BigInteger((String) h.get("keyID")).toString(16));
 
             mService.addDistributedCredential(recoveryID, agentID, agentPWD);
             header.addStringValue("agentID",
Index: pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/grantRecovery.template
===================================================================
--- pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/grantRecovery.template	(revision 2533)
+++ pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/grantRecovery.template	(working copy)
@@ -33,7 +33,8 @@
 	document.write("<p>");
 	document.write('<font face="PrimaSans BT, Verdana, sans-serif" size=-1>');
 	document.write('Recovery of key with key identifier ' + 
-		toHex(result.header.serialNumber) + 
+                ((typeof(result.header.serialNumberInHex) != "undefined")?
+                 result.header.serialNumberInHex: toHex(result.header.serialNumber)) +
 		' has been granted by ' + result.header.agentID);
 	document.write('</font>');
 }
Index: pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/getApprovalStatus.template
===================================================================
--- pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/getApprovalStatus.template	(revision 2533)
+++ pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/getApprovalStatus.template	(working copy)
@@ -35,7 +35,8 @@
 
 function renderHexNumber(number,width)
 {
-    var num = toHex(number);
+    //var num = toHex(number);
+    var num = number;
     while (num.length < width)
         num = "0"+num;
     return "0x"+num;
@@ -53,7 +54,7 @@
         document.writeln('</tr>');
 
         document.writeln('<tr>');
-        document.write('<td><font size="-1" face="PrimaSans BT, Verdana, sans-serif">Key Identifier:</font> <font size="-1" face="PrimaSans BT, Verdana, sans-serif">' + renderHexNumber(result.header.serialNumber,8) + '</font></td>');
+        document.write('<td><font size="-1" face="PrimaSans BT, Verdana, sans-serif">Key Identifier:</font> <font size="-1" face="PrimaSans BT, Verdana, sans-serif">' + renderHexNumber(result.header.serialNumberInHex,8) + '</font></td>');
         document.writeln('</tr>');
         document.write('</table>');
 
Index: pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/finishAsyncRecovery.template
===================================================================
--- pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/finishAsyncRecovery.template	(revision 2533)
+++ pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/finishAsyncRecovery.template	(working copy)
@@ -34,7 +34,8 @@
 
 function renderHexNumber(number,width)
 {
-    var num = toHex(number);
+    //var num = toHex(number);
+    var num = number;
     while (num.length < width)
         num = "0"+num;
     return "0x"+num;
@@ -52,7 +53,7 @@
         document.writeln('</tr>');
 
         document.writeln('<tr>');
-        document.write('<td><font size="-1" face="PrimaSans BT, Verdana, sans-serif">Key Identifier:</font> <font size="-1" face="PrimaSans BT, Verdana, sans-serif">' + renderHexNumber(result.header.serialNumber,8) + '</font></td>');
+        document.write('<td><font size="-1" face="PrimaSans BT, Verdana, sans-serif">Key Identifier:</font> <font size="-1" face="PrimaSans BT, Verdana, sans-serif">' + renderHexNumber(result.header.serialNumberInHex,8) + '</font></td>');
         document.writeln('</tr>');
         document.write('</table>');
 
Index: pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/finishRecovery.template
===================================================================
--- pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/finishRecovery.template	(revision 2533)
+++ pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/finishRecovery.template	(working copy)
@@ -34,7 +34,8 @@
 
 function renderHexNumber(number,width)
 {
-    var num = toHex(number);
+    //var num = toHex(number);
+    var num = number;
     while (num.length < width)
         num = "0"+num;
     return "0x"+num;
@@ -52,7 +53,7 @@
         document.writeln('</tr>');
 
         document.writeln('<tr>');
-        document.write('<td><font size="-1" face="PrimaSans BT, Verdana, sans-serif">Key Identifier:</font> <font size="-1" face="PrimaSans BT, Verdana, sans-serif">' + renderHexNumber(result.header.serialNumber,8) + '</font></td>');
+        document.write('<td><font size="-1" face="PrimaSans BT, Verdana, sans-serif">Key Identifier:</font> <font size="-1" face="PrimaSans BT, Verdana, sans-serif">' + renderHexNumber(result.header.serialNumberInHex,8) + '</font></td>');
         document.writeln('</tr>');
         document.write('</table>');
 
Index: pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/recoverBySerial.template
===================================================================
--- pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/recoverBySerial.template	(revision 2533)
+++ pki/dogtag/kra-ui/shared/webapps/kra/agent/kra/recoverBySerial.template	(working copy)
@@ -35,7 +35,8 @@
 	document.write("<p>");
 	document.write('<font face="PrimaSans BT, Verdana, sans-serif" size=-1>');
 	document.write('Recovery request for Key with key identifier ' + 
-		toHex(result.header.serialNumber) + 
+                ((typeof(result.header.serialNumberInHex) != "undefined")?
+                 result.header.serialNumberInHex: toHex(result.header.serialNumber)) +
 		' has been submitted.\n' +
 		'Waiting for recovery agents\' approval...');
 


More information about the Pki-devel mailing list