Modified the test htmls to compare the output and signature of lwndn and ccnx. Function to compute the size of the ContentObject
diff --git a/js/Signature.js b/js/Signature.js
index f8f4d69..06badef 100644
--- a/js/Signature.js
+++ b/js/Signature.js
@@ -38,11 +38,11 @@
if (decoder.peekStartElement(CCNProtocolDTags.DigestAlgorithm)) {
- if(LOG>4)console.log('DIGIEST ALGORITHM FOUND');
+ if(LOG>4)console.log('DIGEST ALGORITHM FOUND');
this.DigestAlgorithm = decoder.readUTF8Element(CCNProtocolDTags.DigestAlgorithm);
}
if (decoder.peekStartElement(CCNProtocolDTags.Witness)) {
- if(LOG>4)console.log('WITNESS FOUND FOUND');
+ if(LOG>4)console.log('WITNESS FOUND');
this.Witness = decoder.readBinaryElement(CCNProtocolDTags.Witness);
}
diff --git a/js/java_socket_bridge.js b/js/java_socket_bridge.js
index f0d745d..8e0e7c7 100644
--- a/js/java_socket_bridge.js
+++ b/js/java_socket_bridge.js
@@ -367,6 +367,20 @@
}
+/**
+ * Computes the size in bytes of the ContentObject once encoded
+ * @param co the content object to encode
+ * @returns the size in bytes of the encoded ContentObject
+ */
+function getContentObjectSize(co){
+ var enc = new BinaryXMLEncoder();
+
+ co.encode(enc);
+
+ return enc.getReducedOstream().length;
+}
+
+
function encodeToHexInterest(int){
@@ -388,7 +402,11 @@
co.encode(enc);
- var hex = toHex(enc.getReducedOstream());
+ var reducedOstream = enc.getReducedOstream();
+
+ if(LOG>3) console.log("In encodeToHexContentObject, reducedOstream: ", reducedOstream);
+
+ var hex = toHex(reducedOstream);
return hex;
diff --git a/js/security/KeyManager.js b/js/security/KeyManager.js
index 7521c84..dcf036d 100644
--- a/js/security/KeyManager.js
+++ b/js/security/KeyManager.js
@@ -3,6 +3,7 @@
var KeyManager = function KeyManager(){
this.certificate =
+// "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhfTCn2CirG4QLF1QtyvYgev0iHghrKmDRbLf1REi6nz8IvNCZ2yHdFip3nmGqie7lVNOkfeIwvHrFkNUkBnw4mLum9dxDYLhF7aSMvZzxJqcjRF8OGVLXMlp1+vVWFE+amK9xhrAnhoW44sCL6ocXG03uWFwYKClbU5XrShd3nwIDAQAB";
'MIIBvTCCASYCCQD55fNzc0WF7TANBgkqhkiG9w0BAQUFADAjMQswCQYDVQQGEwJK'+
'UDEUMBIGA1UEChMLMDAtVEVTVC1SU0EwHhcNMTAwNTI4MDIwODUxWhcNMjAwNTI1'+
'MDIwODUxWjAjMQswCQYDVQQGEwJKUDEUMBIGA1UEChMLMDAtVEVTVC1SU0EwgZ8w'+
@@ -15,6 +16,9 @@
'3OK+u3ivTSj3zwjtpudY5Xo=';
this.privateKey =
+// '3082025c02010002818100bd9565559c1795c049a5ef4dc9d1bc8b981b66097ea253f5d0f50f1a1df908ac4e69a797dadd2c0590944a6e849e1fbb7371c53dfddbe7802656e1d5f449b8530d9c7da8d6abebd90e06124d927f2f6c5721f1d0e49e7f6a1167caf960d96ff5afaa2d2567337772a944c8e6ceb859b25a231d9eca873574ff98225c853f38ef02030100010281805e8e57d7661e014bc1afe87644d5be1365cf2c8a49c5ced888dae1286690a1f9c6b63da7a8baad4d2d3a39117c459d9011d949c64c8a54a17efdd06fb502dbd27c27d89a6d984eddc7c41a20178ad3cf6998c82d4ca576c6e34b47d1e49d39e7f4ddb31371e2af7bf2f6ef21bf79a82132035e756b6e2ab44d4d8521dd0bb461024100efcd7cdc0f32e32565cd4980cd2f42b122b81f9ae49cce5abb4db30ae6b7c3c18433233eb5b7d870197fb4d84b128086ff6d99e0097212d37e3fa5e6511e9631024100ca638d4921c4b3a9aaa28bf1df74a140f63e16fd5c84b51f34002d4da77e23ad68a470bf7cbffd891c040fb867f181d662a769e0cedaad5e5cd7be1efc94591f02400f08f63421ebd1dc0d66f29dd5bf89d1eb5859faef2c79afaca0b18214771f19e9fcfecfb6bb0121fe2748a26b0a8cee69e3684b68ac334bf9556a44677fa07102401970b61bd140d68ca744536f0df5ad276b4c96bb365c002071faebb6ed2ceff3264a3559fca66d8a449946189a084397dd42ca0e56322ac4c7cadebd2a66c365024100c040c81d88e824684420ab98cbdf6615bb90bcedcb82081ab19375972c706d6596101b0d313017e26ec106ff814371b70db2deb00f8b25897b9b46ce8dd135d1';
+// '30820276020100300d06092a864886f70d0101010500048202603082025c02010002818100bd9565559c1795c049a5ef4dc9d1bc8b981b66097ea253f5d0f50f1a1df908ac4e69a797dadd2c0590944a6e849e1fbb7371c53dfddbe7802656e1d5f449b8530d9c7da8d6abebd90e06124d927f2f6c5721f1d0e49e7f6a1167caf960d96ff5afaa2d2567337772a944c8e6ceb859b25a231d9eca873574ff98225c853f38ef02030100010281805e8e57d7661e014bc1afe87644d5be1365cf2c8a49c5ced888dae1286690a1f9c6b63da7a8baad4d2d3a39117c459d9011d949c64c8a54a17efdd06fb502dbd27c27d89a6d984eddc7c41a20178ad3cf6998c82d4ca576c6e34b47d1e49d39e7f4ddb31371e2af7bf2f6ef21bf79a82132035e756b6e2ab44d4d8521dd0bb461024100efcd7cdc0f32e32565cd4980cd2f42b122b81f9ae49cce5abb4db30ae6b7c3c18433233eb5b7d870197fb4d84b128086ff6d99e0097212d37e3fa5e6511e9631024100ca638d4921c4b3a9aaa28bf1df74a140f63e16fd5c84b51f34002d4da77e23ad68a470bf7cbffd891c040fb867f181d662a769e0cedaad5e5cd7be1efc94591f02400f08f63421ebd1dc0d66f29dd5bf89d1eb5859faef2c79afaca0b18214771f19e9fcfecfb6bb0121fe2748a26b0a8cee69e3684b68ac334bf9556a44677fa07102401970b61bd140d68ca744536f0df5ad276b4c96bb365c002071faebb6ed2ceff3264a3559fca66d8a449946189a084397dd42ca0e56322ac4c7cadebd2a66c365024100c040c81d88e824684420ab98cbdf6615bb90bcedcb82081ab19375972c706d6596101b0d313017e26ec106ff814371b70db2deb00f8b25897b9b46ce8dd135d1';
+// "MIICXAIBAAKBgQC9lWVVnBeVwEml703J0byLmBtmCX6iU/XQ9Q8aHfkIrE5pp5fa3SwFkJRKboSeH7tzccU9/dvngCZW4dX0SbhTDZx9qNar69kOBhJNkn8vbFch8dDknn9qEWfK+WDZb/Wvqi0lZzN3cqlEyObOuFmyWiMdnsqHNXT/mCJchT847wIDAQABAoGAXo5X12YeAUvBr+h2RNW+E2XPLIpJxc7YiNrhKGaQofnGtj2nqLqtTS06ORF8RZ2QEdlJxkyKVKF+/dBvtQLb0nwn2JptmE7dx8QaIBeK089pmMgtTKV2xuNLR9HknTnn9N2zE3Hir3vy9u8hv3moITIDXnVrbiq0TU2FId0LtGECQQDvzXzcDzLjJWXNSYDNL0KxIrgfmuSczlq7TbMK5rfDwYQzIz61t9hwGX+02EsSgIb/bZngCXIS034/peZRHpYxAkEAymONSSHEs6mqoovx33ShQPY+Fv1chLUfNAAtTad+I61opHC/fL/9iRwED7hn8YHWYqdp4M7arV5c174e/JRZHwJADwj2NCHr0dwNZvKd1b+J0etYWfrvLHmvrKCxghR3Hxnp/P7PtrsBIf4nSKJrCozuaeNoS2isM0v5VWpEZ3+gcQJAGXC2G9FA1oynRFNvDfWtJ2tMlrs2XAAgcfrrtu0s7/MmSjVZ/KZtikSZRhiaCEOX3ULKDlYyKsTHyt69KmbDZQJBAMBAyB2I6CRoRCCrmMvfZhW7kLzty4IIGrGTdZcscG1llhAbDTEwF+JuwQb/gUNxtw2y3rAPiyWJe5tGzo3RNdE=";
'MIICWwIBAAKBgQDRhGF7X4A0ZVlEg594WmODVVUIiiPQs04aLmvfg8SborHss5gQ'+
'Xu0aIdUT6nb5rTh5hD2yfpF2WIW6M8z0WxRhwicgXwi80H1aLPf6lEPPLvN29EhQ'+
'NjBpkFkAJUbS8uuhJEeKw0cE49g80eBBF4BCqSL6PFQbP9/rByxdxEoAIQIDAQAB'+
diff --git a/js/test-encode-decode-ContentObject.html b/js/test-encode-decode-ContentObject.html
index a737d3f..482e5c0 100644
--- a/js/test-encode-decode-ContentObject.html
+++ b/js/test-encode-decode-ContentObject.html
@@ -88,9 +88,16 @@
co.sign();
+ var coSize = getContentObjectSize(co);
+
var output = encodeToHexContentObject(co);
+ if(LOG>3) console.log("Size: ", coSize);
+
+
+ document.getElementById('coSize').innerHTML = coSize;
+
document.getElementById('result').innerHTML = output;
}
@@ -104,12 +111,7 @@
var co = decodeHexContentObject(input);
- if(LOG>3)console.log('CONTENT OBJECT DECODED');
- if(LOG>3)console.log(co);
-
- ///////////////////////////////////////
-
- var output ="";
+var output ="";
if(co==-1)
output+= "NO CONTENT FOUND"
@@ -138,6 +140,7 @@
output+= "<br />";
output+= "<br />";
}
+
if(co.Signature !=null && co.Signature.Signature!=null){
output += "SIGNATURE(hex): "+ toHex(co.Signature.Signature);
@@ -147,6 +150,7 @@
}
if(co.SignedInfo !=null && co.SignedInfo.Publisher!=null && co.SignedInfo.Publisher.PublisherPublicKeyDigest!=null){
+ output += "Publisher Public Key Digest: " + co.SignedInfo.Publisher.PublisherPublicKeyDigest + "<br />";
output += "Publisher Public Key Digest(hex): "+ toHex(co.SignedInfo.Publisher.PublisherPublicKeyDigest);
output+= "<br />";
@@ -169,6 +173,8 @@
var input = toString(co.rawSignatureData);
+
+ if(LOG>2) console.log("Input: ", input, "; raw signature data: ", co.rawSignatureData);
output += "DER Certificate: "+publickey ;
@@ -188,29 +194,33 @@
if(LOG>2) console.log(co.Signature.Signature);
- var x509 = new X509();
+ /*var x509 = new X509();
x509.readCertPEM(publickey);
//x509.readCertPEMWithoutRSAInit(publickey);
- var result = x509.subjectPublicKeyRSA.verifyString(input, signature);
- console.log('result is '+result);
- /*var rsakey = new RSAKey();
+ var result = x509.subjectPublicKeyRSA.verifyString(input, signature);*/
+ //console.log('result is '+result);
- var kp = publickeyHex.slice(56,314);
+
+ //var kp = publickeyHex.slice(56,314);
+ var kp = publickeyHex.slice(336,594)
+// var kp = '00bd9565559c1795c049a5ef4dc9d1bc8b981b66097ea253f5d0f50f1a1df908ac4e69a797dadd2c0590944a6e849e1fbb7371c53dfddbe7802656e1d5f449b8530d9c7da8d6abebd90e06124d927f2f6c5721f1d0e49e7f6a1167caf960d96ff5afaa2d2567337772a944c8e6ceb859b25a231d9eca873574ff98225c853f38ef';
output += "PUBLISHER KEY(hex): "+kp ;
output+= "<br />";
output+= "<br />";
- console.log('kp is '+kp);
+ if(LOG>3) console.log('kp is '+kp);
- var exp = publickeyHex.slice(318,324);
+ //var exp = publickeyHex.slice(318,324);
+ var exp = publickeyHex.slice(598,604);
+// var exp = '5e8e57d7661e014bc1afe87644d5be1365cf2c8a49c5ced888dae1286690a1f9c6b63da7a8baad4d2d3a39117c459d9011d949c64c8a54a17efdd06fb502dbd27c27d89a6d984eddc7c41a20178ad3cf6998c82d4ca576c6e34b47d1e49d39e7f4ddb31371e2af7bf2f6ef21bf79a82132035e756b6e2ab44d4d8521dd0bb461';
- console.log('kp size is '+kp.length );
+ if(LOG>3) console.log('kp size is '+kp.length );
output += "exponent: "+exp ;
output+= "<br />";
@@ -218,10 +228,21 @@
console.log('exp is '+exp);
-
+ var rsakey = new RSAKey();
rsakey.setPublic(kp,exp);
-
- var result = rsakey.verifyString(input, signature);*/
+ var result = rsakey.verifyString(input, signature);
+
+ var inputBis = toHex(co.Name).concat(toHex(co.SignedInfo), toHex(co.Content));
+
+// if(LOG>0){
+// console.log("Input: ", input);
+// console.log("Input bis: ", inputBis);
+// console.log("Verify input bis: ", rsakey.verifyString(inputBis, signature));
+// }
+
+ //var x509 = new X509();
+ //x509.readCertPEM(publickey);
+ //if(LOG>0) console.log("x509 verif: ", x509.subjectPublicKeyRSA.verifyString(input, signature));
if(result)
output += 'SIGNATURE VALID';
@@ -243,6 +264,8 @@
document.getElementById('result').innerHTML = output;
+ return input;
+
}
</script>
@@ -257,15 +280,22 @@
Please Enter the Content:<br />
- <textarea id="content" cols="40" rows="5" name="CONTENT" value="SUCCESS" >SUCCESS!</textarea>
+ <textarea id="content" cols="40" rows="5" name="CONTENT" value="SUCCESS" >SUCCESS!</textarea>
+
+
</form>
- <button onclick="encode()">Encode</button>
- <button onclick="decode()">Decode</button>
-
-
+ <div>
+ <button onclick="encode()">Encode</button>
+ <button onclick="decode()">Decode</button>
+ </div>
+ <div>
+ <p>Size: <span id="coSize"></span></p>
+
+ <p id="result"></p>
+
+ </div>
- <p id="result"></p>
</body>
</html>
\ No newline at end of file
diff --git a/js/test-request-data.html b/js/test-request-data.html
index 0dd63b2..582e7ea 100644
--- a/js/test-request-data.html
+++ b/js/test-request-data.html
@@ -92,6 +92,10 @@
//content object
var co = queryPrefix( ContentName );
+ var coSize = getContentObjectSize(co);
+
+ document.getElementById('coSize').innerHTML = coSize;
+
///////////////////////////////////////
var output ="";
@@ -101,6 +105,10 @@
else if (co==-2)
output+= "CONTENT NAME IS EMPTY"
else{
+ output += "Content: " + toString(toHex(co));
+ output+="<br />";
+ output+= "<br />";
+
if(co.Name!=null && co.Name.Components!=null){
output+= "NAME: ";
@@ -156,6 +164,12 @@
var input = toString(co.rawSignatureData);
+
+ var inputBis = toString(co.rawSignatureData.slice(0,co.rawSignatureData.length-2).concat([0]));
+
+ console.log("Input bis: ", toHex(co.rawSignatureData.slice(0,co.rawSignatureData.length-2).concat([0])));
+
+ if(LOG>2) console.log("Input: ", toHex(co.rawSignatureData), "; raw signature data: ", co.rawSignatureData, "; to hex: ", toHex(co.rawSignatureData));
output += "DER Certificate: "+publickey ;
@@ -209,7 +223,11 @@
rsakey.setPublic(kp,exp);
var result = rsakey.verifyString(input, signature);
- var inputBis = toHex(co.Name).concat(toHex(co.SignedInfo), toHex(co.Content));
+ var resultBis = rsakey.verify(inputBis, signature);
+
+ console.log("result bis: ", resultBis);
+
+ //var inputBis = toHex(co.Name).concat(toHex(co.SignedInfo), toHex(co.Content));
// if(LOG>0){
// console.log("Input: ", input);
@@ -249,13 +267,19 @@
<form>
Please Enter a Content Name:<br /><input id="contentname" type="text" name="CONTENTNAME" value="/PARC/abc" /> <br />
</form>
- <button onclick="run()">Request Data!</button>
+ <div>
+ <button onclick="run()">Request Data!</button>
+ </div>
<div >
<applet id="JavaSocketBridge" archive="JavaSocketBridge.jar" code="JavaSocketBridge.class" width="0" height="0">
</applet>
</div>
- <p id="result"></p>
-
+ <div>
+ <p>Size: <span id="coSize"></span></p>
+
+ <p id="result"></p>
+
+ </div>
</body>
</html>
\ No newline at end of file