diff --git a/js/testing/test-connection.html b/js/testing/test-connection.html
new file mode 100644
index 0000000..1b2f069
--- /dev/null
+++ b/js/testing/test-connection.html
@@ -0,0 +1,123 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>Test Connect </title>
+	<script type="text/javascript" src="java_socket_bridge.js"></script>
+	
+	<script type="text/javascript" src="CCNProtocolDTags.js"></script>
+	
+	<script type="text/javascript" src="CCNTime.js"></script>
+	
+	<script type="text/javascript" src="ContentName.js"></script>
+	
+	<script type="text/javascript" src="ContentObject.js"></script>
+	
+	<script type="text/javascript" src="DateFormat.js"></script>
+	
+	<script type="text/javascript" src="Exclude.js"></script>
+
+	<script type="text/javascript" src="ExcludeAny.js"></script>
+
+	<script type="text/javascript" src="ExcludeComponent.js"></script>
+
+	<script type="text/javascript" src="Interest.js"></script>
+	
+	<script type="text/javascript" src="KeyLocator.js"></script>
+	
+	<script type="text/javascript" src="KeyName.js"></script>
+
+	<script type="text/javascript" src="PublisherID.js"></script>
+	
+	<script type="text/javascript" src="Signature.js"></script>
+	
+	<script type="text/javascript" src="SignedInfo.js"></script>
+	
+	<script type="text/javascript" src="PublisherPublicKeyDigest.js"></script>
+	
+	<script type="text/javascript" src="FaceInstance.js"></script>
+	
+	<script type="text/javascript" src="ForwardingEntry.js"></script>
+	
+	
+	<script type="text/javascript" src="encoding/BinaryXMLEncoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLCodec.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLDecoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/DataUtils.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="security/KeyManager.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.js"></script>
+
+	<script type="text/javascript">
+
+		function getAction(){
+			console.log('ABOUT TO GET');
+
+
+			var received = get('127.0.0.1',9695,'01d2f2fafdc12e4d2e532e6c6f63616c686f737400fabdc12e4d2e53525600faa563636e6400fa9d4b4559000002d28e310000');	
+
+			output= '<br /> received Content '+received;
+			
+			console.log('INTEREST RECEIVED '+ received);
+			
+			document.getElementById('result').innerHTML = output;
+		
+		}
+
+
+		function putAction(){
+			console.log('ABOUT TO PUT');
+
+			//var received = DataUtils.toString( DataUtils.toNumbers(send_test_interest()));
+			
+			var received = put('127.0.0.1',9695,'01d2f2faa563636e7800fa0285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f00fabd73656c6672656700fa1bf5048202aa03b208854a18988c72aee624da28e2e1acbccb209b8e89429041985521ed68f95a1c546872fba3d854b1377dc249b6d8ec5935e5069256c97a7f6d8a62e86222ccd2cfe5097aed3fe5ede6732ce191a8680d78e39d0c5058a2b7bb0f0687994e9f045de346b66c46498547a08da1f2f0cdfafba3afdfe7107931935ede79040137ba94a90000f20001a203e202851a4860caa4991e829bcdc9429fb711d52440968d23560726606050bf147acffc0002bab504fcb3f03aa40001e201da0a9530819f300d06092a864886f70d010101050003818d00308189028181008ed27580e3d1c4c67672208665133a1ba12d8ebf5cad8e054571926b3ff0782a04c71703384021a6cefb6616b66cbd8a679b761d69d6373a851546e26f7105510b4c23be9a3c7f2e652e100ecc1471855730659f1477ce4e8504ad1fd8f44116baaeae2ff67eec33abba790157a79bf5039e5a528a471d9d67c94e70117ed7490203010001000000019a0585058a04cabe73656c6672656700f2faad726f63636f000003e20285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f0004fa8e330003d2d63231343734383336343700000000000002d28e310000');	
+
+			output= '<br /> received Content '+received;
+						
+			document.getElementById('result').innerHTML = output;
+		
+		}
+		
+
+		</script>
+	
+</head>
+<body >
+	
+	<form>
+		Press Buttons:<br /><!--  input id="contentname" type="text" name="CONTENTNAME" value="/PARC/abc" /--> <br />
+	</form>
+	
+	<button onclick="putAction()">PUT!</button>
+	<button onclick="getAction()">GET!</button>
+
+	<div >
+		<applet id="JavaSocketBridge" archive="JavaSocketBridge.jar" code="JavaSocketBridge.class" width="0" height="0">
+		</applet>
+	</div>
+
+		<p id="result"></p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/testing/test-decode-FaceInstance.html b/js/testing/test-decode-FaceInstance.html
new file mode 100644
index 0000000..5ec30dd
--- /dev/null
+++ b/js/testing/test-decode-FaceInstance.html
@@ -0,0 +1,167 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Decode Face Instance</title>
+	
+	<script type="text/javascript" src="java_socket_bridge.js"></script>
+	
+	<script type="text/javascript" src="CCNProtocolDTags.js"></script>
+	
+	<script type="text/javascript" src="CCNTime.js"></script>
+	
+	<script type="text/javascript" src="ContentName.js"></script>
+	
+	<script type="text/javascript" src="ContentObject.js"></script>
+	
+	<script type="text/javascript" src="DateFormat.js"></script>
+	
+	<script type="text/javascript" src="Exclude.js"></script>
+
+	<script type="text/javascript" src="ExcludeAny.js"></script>
+
+	<script type="text/javascript" src="ExcludeComponent.js"></script>
+
+	<script type="text/javascript" src="Interest.js"></script>
+	
+	<script type="text/javascript" src="KeyLocator.js"></script>
+	
+	<script type="text/javascript" src="KeyName.js"></script>
+
+	<script type="text/javascript" src="PublisherID.js"></script>
+	
+	<script type="text/javascript" src="Signature.js"></script>
+	
+	<script type="text/javascript" src="SignedInfo.js"></script>
+	
+	<script type="text/javascript" src="PublisherPublicKeyDigest.js"></script>
+	
+	<script type="text/javascript" src="FaceInstance.js"></script>
+
+	<script type="text/javascript" src="ForwardingEntry.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLEncoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLCodec.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLDecoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/DataUtils.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="security/KeyManager.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.js"></script>
+
+	<script type="text/javascript">
+
+		function decode(){
+
+			var input = document.getElementById('result').innerHTML;
+
+			
+			var faceInstance = decodeHexFaceInstance(input);
+			
+			if(LOG>3)console.log('FACE INSTANCE DECODED');
+			if(LOG>3)console.log(faceInstance);
+
+			///////////////////////////////////////
+			
+			var output ="";
+			
+			if(faceInstance.PublisherPublicKeyDigest!=null ){
+				output+= "PublisherPublicKeyDigest: ";
+				
+					output+=  DataUtils.toHex(faceInstance.PublisherPublicKeyDigest.PublisherPublicKeyDigest);
+					
+					//output+= "PUBLISHER ID TYPE: ";
+					//output+=  faceInstance.PublisherPublicKeyDigest.PublisherPublicKeyDigest;
+					
+				output+= "<br />";
+				output+= "<br />";
+
+			}
+			
+			if(faceInstance.FaceID!=null){
+				output+= "FaceID: ";
+				
+				output+= faceInstance.FaceID;
+				output+= "<br />";
+			}
+			
+			if(faceInstance.IPProto!=null){
+				output+= "IPProto: ";
+				
+				output+= faceInstance.IPProto;
+				output+= "<br />";
+			}
+			
+			if(faceInstance.Host!=null){
+				output+= "Host: ";
+				
+				output+= faceInstance.Host;
+				output+= "<br />";
+			}
+			
+			if(faceInstance.Port!=null){
+				output+= "Port: ";
+				
+				output+= faceInstance.Port;
+				output+= "<br />";
+			}
+			if(faceInstance.FreshnessSeconds!=null){
+				output+= "FreshnessSeconds: ";
+				
+				output+= faceInstance.FreshnessSeconds;
+				output+= "<br />";
+			}
+			
+			/*if(interest.Name!=null && interest.Name.Components!=null){
+				output+= "NAME: ";
+				
+				for(var i=0;i<interest.Name.Components.length;i++){
+					output+= "/"+ DataUtils.toString(interest.Name.Components[i]);
+				}
+				output+= "<br />";
+				output+= "<br />";
+			}*/
+	
+			document.getElementById('result').innerHTML = output;
+			
+		}
+
+	</script>
+
+</head>
+<body >
+	<form>
+		
+		Please Enter a Interest:<br />
+		
+		<!--  input id="faceInstance" type="text" name="FACEINSTANCE" value="/PARC/abc" /--> 
+		
+	</form>
+	<button onclick="decode()">Decode</button>
+	
+	
+
+		<p id="result">058203e20285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f0004d29632310004da9631370004e2c631302e312e312e310004eaa6393639350003d2d6323134373438333634370000</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/testing/test-decode-Interest+Forwarding+Entry.html b/js/testing/test-decode-Interest+Forwarding+Entry.html
new file mode 100644
index 0000000..6910e7c
--- /dev/null
+++ b/js/testing/test-decode-Interest+Forwarding+Entry.html
@@ -0,0 +1,486 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Decode Interest + Face Instance</title>
+	
+	<script type="text/javascript" src="java_socket_bridge.js"></script>
+	
+	<script type="text/javascript" src="CCNProtocolDTags.js"></script>
+	
+	<script type="text/javascript" src="CCNTime.js"></script>
+	
+	<script type="text/javascript" src="ContentName.js"></script>
+	
+	<script type="text/javascript" src="ContentObject.js"></script>
+	
+	<script type="text/javascript" src="DateFormat.js"></script>
+	
+	<script type="text/javascript" src="Exclude.js"></script>
+
+	<script type="text/javascript" src="ExcludeAny.js"></script>
+
+	<script type="text/javascript" src="ExcludeComponent.js"></script>
+
+	<script type="text/javascript" src="Interest.js"></script>
+	
+	<script type="text/javascript" src="KeyLocator.js"></script>
+	
+	<script type="text/javascript" src="KeyName.js"></script>
+
+	<script type="text/javascript" src="PublisherID.js"></script>
+	
+	<script type="text/javascript" src="Signature.js"></script>
+	
+	<script type="text/javascript" src="SignedInfo.js"></script>
+	
+	<script type="text/javascript" src="PublisherPublicKeyDigest.js"></script>
+	
+	<script type="text/javascript" src="FaceInstance.js"></script>
+
+	<script type="text/javascript" src="ForwardingEntry.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLEncoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLCodec.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLDecoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/DataUtils.js"></script>
+	
+	<script type="text/javascript" src="encoding/EncodingUtils.js"></script>
+	
+	
+	<script language="JavaScript" type="text/javascript" src="security/KeyManager.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.js"></script>
+
+	<script type="text/javascript">
+	
+
+		
+		function decode(){
+			
+
+			var input = document.getElementById('result').innerHTML;
+
+			
+			var interest = decodeHexInterest(input);
+			
+			if(LOG>3)console.log('INTEREST DECODED');
+			if(LOG>3)console.log(interest);
+
+			///////////////////////////////////////
+			
+			var output ="";
+			
+			
+			if(interest.Name!=null && interest.Name.Components!=null){
+				output+= "NAME: ";
+				
+				for(var i=0;i<interest.Name.Components.length;i++){
+					output+= "/"+ DataUtils.toString(interest.Name.Components[i]);
+				}
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.FaceInstance!=null ){
+				output+= "FaceInstance: ";
+				
+					output+=  interest.FaceInstance;
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.Exclude!=null ){
+				output+= "Exclude: ";
+				
+					output+=  interest.Exclude;
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.ChildSelector!=null ){
+				output+= "ChildSelector: ";
+				
+					output+=  interest.ChildSelector;
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.AnswerOriginKind!=null ){
+				output+= "AnswerOriginKind: ";
+				
+					output+=  interest.AnswerOriginKind;
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.InterestLifetime!=null ){
+				output+= "InterestLifetime: ";
+				
+					output+=  interest.InterestLifetime;
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.Nonce!=null ){
+				output+= "Nonce: ";
+				
+					output+=  interest.Nonce;
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			
+			if(interest.Scope!=null ){
+				output+= "SCOPE: ";
+				
+					output+=  interest.Scope;
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+	
+			if(interest.PublisherID!=null ){
+				output+= "PUBLISHER ID: ";
+				
+					output+=  interest.PublisherID.PublisherID;
+					
+					output+= "PUBLISHER ID TYPE: ";
+					output+=  interest.PublisherID.PublisherType;
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.MaxSuffixComponents!=null ){
+				output+= "MaxSuffixComponents : ";
+				
+				output+=  interest.MaxSuffixComponents;
+
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.MinSuffixComponents!=null ){
+				output+= "MinSuffixComponents : ";
+				
+				output+=  interest.MinSuffixComponents;
+
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.MinSuffixComponents!=null ){
+				output+= "MinSuffixComponents : ";
+				
+				output+=  interest.MinSuffixComponents;
+
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.Name.Components[3] !=null){
+				
+				
+				var input = DataUtils.toHex(interest.Name.Components[3]) ;
+
+				var contentObject = decodeHexContentObject(input);
+				
+				if(contentObject.Content!=null ){
+					output+= "Content of content Object: ";
+					
+						output+=  DataUtils.toHex(contentObject.Content);
+						
+					output+= "<br />";
+					output+= "<br />";
+				}
+				
+				
+				var content = DataUtils.toHex(contentObject.Content);
+				
+				var co = contentObject;
+				
+				
+				////////////////////////////////////////
+				
+
+				if(co.Name!=null && co.Name.Components!=null){
+					output+= "NAME: ";
+					
+					for(var i=0;i<co.Name.Components.length;i++){
+						output+= "/"+ DataUtils.toString(co.Name.Components[i]);
+					}
+					output+= "<br />";
+					output+= "<br />";
+				}
+	
+				if(co.Content !=null){
+					output += "CONTENT(ASCII): "+ DataUtils.toString(co.Content);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.Content !=null){
+					output += "CONTENT(hex): "+ DataUtils.toHex(co.Content);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.Signature !=null && co.Signature.Signature!=null){
+					
+					output += "SIGNATURE(hex): "+ DataUtils.toHex(co.Signature.Signature);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.SignedInfo !=null && co.SignedInfo.Publisher!=null && co.SignedInfo.Publisher.PublisherPublicKeyDigest!=null){
+					
+					output += "Publisher Public Key Digest(hex): "+ DataUtils.toHex(co.SignedInfo.Publisher.PublisherPublicKeyDigest);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.SignedInfo !=null && co.SignedInfo.Timestamp!=null){
+					var d = new Date();
+					d.setTime( co.SignedInfo.Timestamp.msec );
+					
+					var bytes = [217, 185, 12, 225, 217, 185, 12, 225];
+					
+					output += "TimeStamp: "+d;
+					output+= "<br />";
+					output += "TimeStamp(number): "+ co.SignedInfo.Timestamp.msec;
+					
+					
+					output+= "<br />";
+				}
+			    if(co.SignedInfo !=null && co.SignedInfo.Type!=null){
+
+					output += "Type: "+co.SignedInfo.Type;
+					output+= "<br />";
+					output+= "<br />";
+				}
+			    if(co.SignedInfo !=null && co.SignedInfo.Locator!=null){
+
+					output += "Locator: "+co.SignedInfo.Locator.Type;
+					output+= "<br />";
+					output+= "<br />";
+				}
+			    if(co.SignedInfo !=null && co.SignedInfo.FreshnessSeconds!=null){
+
+					output += "FreshnessSeconds: "+co.SignedInfo.FreshnessSeconds;
+					output+= "<br />";
+					output+= "<br />";
+				}
+			    if(co.SignedInfo !=null && co.SignedInfo.FinalBlockID!=null){
+
+					output += "FinalBlockID: "+co.SignedInfo.FinalBlockID;
+					output+= "<br />";
+					output+= "<br />";
+				}
+				
+				if(co.SignedInfo!=null && co.SignedInfo.Locator!=null && co.SignedInfo.Locator.PublicKey!=null){
+					
+					var publickey = rstr2b64(DataUtils.toString(co.SignedInfo.Locator.PublicKey));
+					var publickeyHex = DataUtils.toHex(co.SignedInfo.Locator.PublicKey).toLowerCase();
+					var publickeyString = DataUtils.toString(co.SignedInfo.Locator.PublicKey);
+					
+					var signature = DataUtils.toHex(co.Signature.Signature).toLowerCase();
+					
+					
+					var input = DataUtils.toString(co.rawSignatureData);
+					 
+					
+					output += "DER Certificate: "+publickey ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					
+
+					if(LOG>2) console.log(" ContentName + SignedInfo + Content = "+input);
+					if(LOG>2) console.log(" PublicKey = "+publickey );
+					if(LOG>2) console.log(" PublicKeyHex = "+publickeyHex );
+					if(LOG>2) console.log(" PublicKeyString = "+publickeyString );
+					
+					if(LOG>2) console.log(" Signature "+signature );
+					
+					if(LOG>2) console.log(" Signature NOW IS" );
+					
+					if(LOG>2) console.log(co.Signature.Signature);
+					
+					
+					/*var x509 = new X509();
+					
+					x509.readCertPEM(publickey);
+					
+					
+					//x509.readCertPEMWithoutRSAInit(publickey);
+
+					var result = x509.subjectPublicKeyRSA.verifyString(input, signature);*/
+					//console.log('result is '+result);
+					
+					
+					var kp = publickeyHex.slice(56,314);
+					
+					output += "PUBLISHER KEY(hex): "+kp ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					console.log('PUBLIC KEY IN HEX is ');
+					console.log(kp);
+
+					var exp = publickeyHex.slice(318,324);
+					
+					console.log('kp size is '+kp.length );
+					output += "exponent: "+exp ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					console.log('EXPONENT is ');
+					console.log(exp);
+
+					
+					
+					/*var c1 = hex_sha256(input);
+					var c2 = signature;
+					
+					if(LOG>4)console.log('input is ');
+					if(LOG>4)console.log(input);
+					if(LOG>4)console.log('C1 is ');
+					if(LOG>4)console.log(c1);
+					if(LOG>4)console.log('C2 is ');
+					if(LOG>4)console.log(c2);
+					var result = c1 == c2;*/
+					
+					var rsakey = new RSAKey();
+					
+					rsakey.setPublic(kp,exp);
+					
+				    var result = rsakey.verifyString(input, signature);
+					
+				    
+				    
+				    console.log('PUBLIC KEY n after is ');
+					console.log(rsakey.n);
+
+					console.log('EXPONENT e after is ');
+					console.log(rsakey.e);
+					
+					
+					if(result)
+						output += 'SIGNATURE VALID';
+					else
+						output += 'SIGNATURE INVALID';
+
+					//output += "VALID: "+ toHex(co.SignedInfo.Locator.PublicKey);
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					
+				    //if(LOG>4) console.log('str'[1]);
+				}
+				
+				////////////////////////////////////////
+				
+				
+				var forwardingEntry = decodeHexForwardingEntry(content);
+				
+				if(LOG>3)console.log('FORWARDING ENTRY IS PRESENT');
+				if(LOG>3)console.log(forwardingEntry);
+
+				///////////////////////////////////////
+				
+				//var output ="";
+				
+				if(forwardingEntry.Action!=null ){
+					output+= "Action: ";
+					
+					output+=  DataUtils.toHex(forwardingEntry.Action);
+						
+					output+= "<br />";
+					output+= "<br />";
+				}
+				
+				if(forwardingEntry.PrefixName!=null){
+					output+= "PrefixName: ";
+					
+					output+= forwardingEntry.PrefixName.getName();
+					output+= "<br />";
+				}
+				
+				if(forwardingEntry.CCNID!=null){
+					output+= "CCNID: ";
+					
+					output+= forwardingEntry.CCNID;
+					output+= "<br />";
+				}
+				
+				if(forwardingEntry.Flags!=null){
+					output+= "Flags: ";
+					
+					output+= forwardingEntry.Flags;
+					output+= "<br />";
+				}
+				
+				if(forwardingEntry.Lifetime!=null){
+					output+= "Lifetime: ";
+					
+					output+= forwardingEntry.Lifetime;
+					output+= "<br />";
+				}
+
+				
+			}
+			
+			
+			
+			document.getElementById('result').innerHTML = output;
+			
+		}
+
+	</script>
+
+</head>
+<body >
+	<form>
+		
+		Please Press decode:<br />
+		
+
+	</form>
+	<button onclick="decode()">Decode</button>
+
+		<!-- p id="result-old-from-ccnx">01d2f2faa563636e7800fa0285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f00fabd73656c6672656700fa1bf5048202aa03b208854a18988c72aee624da28e2e1acbccb209b8e89429041985521ed68f95a1c546872fba3d854b1377dc249b6d8ec5935e5069256c97a7f6d8a62e86222ccd2cfe5097aed3fe5ede6732ce191a8680d78e39d0c5058a2b7bb0f0687994e9f045de346b66c46498547a08da1f2f0cdfafba3afdfe7107931935ede79040137ba94a90000f20001a203e202851a4860caa4991e829bcdc9429fb711d52440968d23560726606050bf147acffc0002bab504fcb3f03aa40001e201da0a9530819f300d06092a864886f70d010101050003818d00308189028181008ed27580e3d1c4c67672208665133a1ba12d8ebf5cad8e054571926b3ff0782a04c71703384021a6cefb6616b66cbd8a679b761d69d6373a851546e26f7105510b4c23be9a3c7f2e652e100ecc1471855730659f1477ce4e8504ad1fd8f44116baaeae2ff67eec33abba790157a79bf5039e5a528a471d9d67c94e70117ed7490203010001000000019a0585058a04cabe73656c6672656700f2faad726f63636f000003e20285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f0004fa8e330003d2d63231343734383336343700000000000002d28e310000</p-->
+		
+		<p id="result">01d2f2faa563636e7800fa0285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f00facd70726566697872656700fa29ad048202aa03b208854ddbf69779cdf4ef74be99474478c8bc3ca0873e0ffa1fa60120aa276db122b83404e595a8a3caeaf09630276658ba4e7beaadb4b91a8cc58e19ac4a42289507ed8d609aa9bef61a5a507f349c83d2944b8c16fecfd90d4a40ddb8687592c0a57517564235b2e359db54f51a37e1ac39e518a2196e3ffda7eb2fb301f3c404dd0000f20001a203e20285ef7c4f5d4743a8b8586ea2e741b7fc39d1dc0dbe1b1930e787cfd1d833ea7a610002bab504fce9e253d70001e2018219fd3082019b30820104020900b7d85c906bad52ee300d06092a864886f70d010105050030123110300e060355040313076178656c636476301e170d3132303432383233343433375a170d3132303532383233343433375a30123110300e060355040313076178656c63647630819f300d06092a864886f70d010101050003818d0030818902818100e17d30a7d828ab1b840b17542dcaf6207afd221e086b2a60d16cb7f54448ba9f3f08bcd099db21dd162a779e61aa89eee554d3a47de230bc7ac590d524067c3898bba6f5dc4360b845eda48cbd9cf126a723445f0e1952d7325a75faf556144f9a98af7186b0278685b8e2c08bea87171b4dee585c1828295b5395eb4a17779f0203010001300d06092a864886f70d010105050003818100cb3ab0357d7cd2ae97ed501e51a3a0e2817d418e47fb17906477af61495a7e8d8789141065b082d001f4b15193d0b43fb661cde20a6498372c6abbd3dcb9f0d12659ef07b3c6dbdf8bdf2f65477eed7adcd457d793b1c27badda7c5ade80ce95b7d8827fe78c8a35f3fb4ba648a081be2cfe84231abab3c2b531746df2e0492b000000019a02d5058a04cabe73656c6672656700f2faa56d656b69000004fa8e330003d2d63231343734383336343700000000000002d28e310000</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/testing/test-encode-decode-ContentObject-bis.html b/js/testing/test-encode-decode-ContentObject-bis.html
new file mode 100644
index 0000000..a737d3f
--- /dev/null
+++ b/js/testing/test-encode-decode-ContentObject-bis.html
@@ -0,0 +1,271 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Request Example</title>
+	
+	<script type="text/javascript" src="java_socket_bridge.js"></script>
+	
+	<script type="text/javascript" src="CCNProtocolDTags.js"></script>
+	
+	<script type="text/javascript" src="CCNTime.js"></script>
+	
+	<script type="text/javascript" src="ContentName.js"></script>
+	
+	<script type="text/javascript" src="ContentObject.js"></script>
+	
+	<script type="text/javascript" src="DateFormat.js"></script>
+	
+	<script type="text/javascript" src="Exclude.js"></script>
+
+	<script type="text/javascript" src="ExcludeAny.js"></script>
+
+	<script type="text/javascript" src="ExcludeComponent.js"></script>
+
+	<script type="text/javascript" src="Interest.js"></script>
+	
+	<script type="text/javascript" src="KeyLocator.js"></script>
+	
+	<script type="text/javascript" src="KeyName.js"></script>
+
+	<script type="text/javascript" src="PublisherID.js"></script>
+	
+	<script type="text/javascript" src="Signature.js"></script>
+	
+	<script type="text/javascript" src="SignedInfo.js"></script>
+	
+	<script type="text/javascript" src="PublisherPublicKeyDigest.js"></script>
+	
+	<script type="text/javascript" src="FaceInstance.js"></script>
+
+	<script type="text/javascript" src="ForwardingEntry.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLEncoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLCodec.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLDecoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/DataUtils.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="security/KeyManager.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.js"></script>
+
+	<script type="text/javascript">
+	
+		function encode(){
+			var contentname = new ContentName( createNameArray(document.getElementById('contentname').value) );
+			
+			var content = document.getElementById('content').value;
+			
+			var signedInfo = new SignedInfo();
+			signedInfo.setFields();
+			//var signatureBits = generateSignatureBits(contentname,content,signedInfo);
+			
+			//witness is null
+			var signature = new Signature();
+			
+			
+			var co = new ContentObject(contentname,signedInfo,content,signature); 
+			
+			co.sign();
+			
+			
+			var output = encodeToHexContentObject(co);
+			
+			document.getElementById('result').innerHTML = output;
+
+		}
+		
+		function decode(){
+			
+			
+			
+			var input = document.getElementById('result').innerHTML;
+
+			
+			var co = decodeHexContentObject(input);
+			
+			if(LOG>3)console.log('CONTENT OBJECT DECODED');
+			if(LOG>3)console.log(co);
+
+			///////////////////////////////////////
+			
+			var output ="";
+			
+			if(co==-1)
+				output+= "NO CONTENT FOUND"
+			else if (co==-2)
+				output+= "CONTENT NAME IS EMPTY"
+			else{
+				if(co.Name!=null && co.Name.Components!=null){
+					output+= "NAME: ";
+					
+					for(var i=0;i<co.Name.Components.length;i++){
+						output+= "/"+ toString(co.Name.Components[i]);
+					}
+					output+= "<br />";
+					output+= "<br />";
+				}
+	
+				if(co.Content !=null){
+					output += "CONTENT(ASCII): "+ toString(co.Content);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.Content !=null){
+					output += "CONTENT(hex): "+ toHex(co.Content);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.Signature !=null && co.Signature.Signature!=null){
+					
+					output += "SIGNATURE(hex): "+ toHex(co.Signature.Signature);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.SignedInfo !=null && co.SignedInfo.Publisher!=null && co.SignedInfo.Publisher.PublisherPublicKeyDigest!=null){
+					
+					output += "Publisher Public Key Digest(hex): "+ toHex(co.SignedInfo.Publisher.PublisherPublicKeyDigest);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.SignedInfo !=null && co.SignedInfo.Timestamp!=null){
+					
+					output += "TimeStamp(hex): "+ co.SignedInfo.Timestamp.date;
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.SignedInfo!=null && co.SignedInfo.Locator!=null && co.SignedInfo.Locator.PublicKey!=null){
+					
+					var publickey = rstr2b64(toString(co.SignedInfo.Locator.PublicKey));
+					var publickeyHex = toHex(co.SignedInfo.Locator.PublicKey).toLowerCase();
+					var publickeyString = toString(co.SignedInfo.Locator.PublicKey);
+					
+					var signature = toHex(co.Signature.Signature).toLowerCase();
+					
+					
+					var input = toString(co.rawSignatureData);
+					 
+					
+					output += "DER Certificate: "+publickey ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					
+					
+					if(LOG>2) console.log(" ContentName + SignedInfo + Content = "+input);
+					if(LOG>2) console.log(" PublicKey = "+publickey );
+					if(LOG>2) console.log(" PublicKeyHex = "+publickeyHex );
+					if(LOG>2) console.log(" PublicKeyString = "+publickeyString );
+					
+					if(LOG>2) console.log(" Signature "+signature );
+					if(LOG>2) console.log(" Signature NOW IS" );
+					if(LOG>2) console.log(co.Signature.Signature);
+					
+					
+					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 kp = publickeyHex.slice(56,314);
+					
+					output += "PUBLISHER KEY(hex): "+kp ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					console.log('kp is '+kp);
+					
+					var exp = publickeyHex.slice(318,324);
+					
+					console.log('kp size is '+kp.length );
+					output += "exponent: "+exp ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					console.log('exp is '+exp);
+					
+					
+					rsakey.setPublic(kp,exp);
+
+				    var result = rsakey.verifyString(input, signature);*/
+					
+					if(result)
+						output += 'SIGNATURE VALID';
+					else
+						output += 'SIGNATURE INVALID';
+
+						
+					
+					
+					//output += "VALID: "+ toHex(co.SignedInfo.Locator.PublicKey);
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					
+					if(LOG>4) console.log('str'[1]);
+				}
+			}
+			
+			document.getElementById('result').innerHTML = output;
+			
+		}
+
+	</script>
+
+</head>
+<body >
+	<form>
+		
+		Please Enter a Content Name:<br />
+		
+		<input id="contentname" type="text" name="CONTENTNAME" value="/PARC/abc" /> 
+		
+		Please Enter the Content:<br />
+		
+		<textarea id="content" cols="40" rows="5" name="CONTENT" value="SUCCESS"  >SUCCESS!</textarea> 
+		
+	</form>
+	<button onclick="encode()">Encode</button>
+	<button onclick="decode()">Decode</button>
+	
+	
+
+		<p id="result"></p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/testing/test-encode-decode-ContentObject.html b/js/testing/test-encode-decode-ContentObject.html
new file mode 100644
index 0000000..4d55cd7
--- /dev/null
+++ b/js/testing/test-encode-decode-ContentObject.html
@@ -0,0 +1,414 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Encode/Decode Content Object</title>
+	
+	<script type="text/javascript" src="java_socket_bridge.js"></script>
+	
+	<script type="text/javascript" src="CCNProtocolDTags.js"></script>
+	
+	<script type="text/javascript" src="CCNTime.js"></script>
+	
+	<script type="text/javascript" src="ContentName.js"></script>
+	
+	<script type="text/javascript" src="ContentObject.js"></script>
+		
+	<script type="text/javascript" src="Exclude.js"></script>
+
+	<script type="text/javascript" src="ExcludeAny.js"></script>
+
+	<script type="text/javascript" src="ExcludeComponent.js"></script>
+
+	<script type="text/javascript" src="Interest.js"></script>
+	
+	<script type="text/javascript" src="KeyLocator.js"></script>
+	
+	<script type="text/javascript" src="KeyName.js"></script>
+
+	<script type="text/javascript" src="PublisherID.js"></script>
+	
+	<script type="text/javascript" src="Signature.js"></script>
+	
+	<script type="text/javascript" src="SignedInfo.js"></script>
+	
+	<script type="text/javascript" src="PublisherPublicKeyDigest.js"></script>
+	
+	<script type="text/javascript" src="FaceInstance.js"></script>
+
+	<script type="text/javascript" src="ForwardingEntry.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLEncoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLCodec.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLDecoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/DataUtils.js"></script>
+	
+	<script type="text/javascript" src="encoding/EncodingUtils.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="security/KeyManager.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.js"></script>
+
+	<script type="text/javascript">
+	
+		function encode(){
+			var contentname = new ContentName( document.getElementById('contentname').value );
+			
+			var content = document.getElementById('content').value;
+			
+			var signedInfo = new SignedInfo();
+			
+			signedInfo.setFields();
+			//var signatureBits = generateSignatureBits(contentname,content,signedInfo);
+			
+			//witness is null
+			var signature = new Signature();
+			
+			
+			var co = new ContentObject(contentname,signedInfo,content,signature); 
+			
+			co.sign();
+			
+			
+			var output = encodeToHexContentObject(co);
+			
+			document.getElementById('result').innerHTML = output;
+
+		}
+		
+		function decode(){
+			
+			
+			
+			var input = document.getElementById('result').innerHTML;
+
+			input = input.toUpperCase();
+			
+			var co = decodeHexContentObject(input);
+			
+			if(LOG>3)console.log('CONTENT OBJECT DECODED');
+			if(LOG>3)console.log(co);
+
+			///////////////////////////////////////
+			
+			var output ="";
+			
+			if(co==-1)
+				output+= "NO CONTENT FOUND"
+			else if (co==-2)
+				output+= "CONTENT NAME IS EMPTY"
+			else{
+				
+				
+				if(co.Name!=null && co.Name.Components!=null){
+					output+= "NAME: ";
+					
+					for(var i=0;i<co.Name.Components.length;i++){
+						output+= "/"+ DataUtils.toString(co.Name.Components[i]);
+					}
+					output+= "<br />";
+					output+= "<br />";
+				}
+	
+				if(co.Content !=null){
+					output += "CONTENT(ASCII): "+ DataUtils.toString(co.Content);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.Content !=null){
+					output += "CONTENT(hex): "+ DataUtils.toHex(co.Content);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.Signature !=null && co.Signature.Signature!=null){
+					
+					output += "SIGNATURE(hex): "+ DataUtils.toHex(co.Signature.Signature);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.SignedInfo !=null && co.SignedInfo.Publisher!=null && co.SignedInfo.Publisher.PublisherPublicKeyDigest!=null){
+					
+					output += "Publisher Public Key Digest(hex): "+ DataUtils.toHex(co.SignedInfo.Publisher.PublisherPublicKeyDigest);
+					
+					output+= "<br />";
+					output+= "<br />";
+				}
+				if(co.SignedInfo !=null && co.SignedInfo.Timestamp!=null){
+					var d = new Date();
+					d.setTime( co.SignedInfo.Timestamp.msec );
+					
+					var bytes = [217, 185, 12, 225, 217, 185, 12, 225];
+					
+					output += "TimeStamp: "+d;
+					output+= "<br />";
+					output += "TimeStamp(number): "+ co.SignedInfo.Timestamp.msec;
+					
+					
+					output+= "<br />";
+				}
+				if(co.SignedInfo!=null && co.SignedInfo.Locator!=null && co.SignedInfo.Locator.Certificate!=null){
+					
+					
+					var tmp = DataUtils.toString(co.SignedInfo.Locator.Certificate);
+					
+					
+					var publickey = rstr2b64(tmp);
+					
+					
+					
+					var publickeyHex = DataUtils.toHex(co.SignedInfo.Locator.Certificate).toLowerCase();
+					
+					var publickeyString = DataUtils.toString(co.SignedInfo.Locator.Certificate);
+					
+					var signature = DataUtils.toHex(co.Signature.Signature).toLowerCase();
+					
+					
+					var input = DataUtils.toString(co.rawSignatureData);
+					 
+					
+					output += "DER Certificate: "+publickey ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					
+					
+					if(LOG>2) console.log(" ContentName + SignedInfo + Content = "+input);
+					
+					if(LOG>2) console.log("HEX OF ContentName + SignedInfo + Content = ");
+					if(LOG>2) console.log(DataUtils.stringtoBase64(input));
+					
+					if(LOG>2) console.log(" PublicKey = "+publickey );
+					if(LOG>2) console.log(" PublicKeyHex = "+publickeyHex );
+					if(LOG>2) console.log(" PublicKeyString = "+publickeyString );
+					
+					if(LOG>2) console.log(" Signature is");
+					if(LOG>2) console.log( signature );
+					//if(LOG>2) console.log(" Signature NOW IS" );
+					//if(LOG>2) console.log(co.Signature.Signature);
+
+
+					var x509 = new X509();
+
+
+					x509.readCertPEM(publickey);
+					
+					//x509.readCertPEMWithoutRSAInit(publickey);
+
+					var result = x509.subjectPublicKeyRSA.verifyByteArray(co.rawSignatureData, signature);
+					if(LOG>2) console.log('result is '+result);
+
+					
+					var n = x509.subjectPublicKeyRSA.n;
+					
+					var e =  x509.subjectPublicKeyRSA.e;
+					
+					if(LOG>2) console.log('PUBLIC KEY n after is ');
+					if(LOG>2) console.log(n);
+
+					if(LOG>2) console.log('EXPONENT e after is ');
+					if(LOG>2) console.log(e);
+					
+					/*var rsakey = new RSAKey();
+					
+					var kp = publickeyHex.slice(56,314);
+					
+					output += "PUBLISHER KEY(hex): "+kp ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					console.log('kp is '+kp);
+					
+					var exp = publickeyHex.slice(318,324);
+					
+					console.log('kp size is '+kp.length );
+					output += "exponent: "+exp ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					console.log('exp is '+exp);
+					
+					
+					rsakey.setPublic(kp,exp);
+
+				    var result = rsakey.verifyString(input, signature);*/
+					
+					if(result)
+						output += 'SIGNATURE VALID';
+					else
+						output += 'SIGNATURE INVALID';
+
+						
+					
+					
+					//output += "VALID: "+ toHex(co.SignedInfo.Locator.PublicKey);
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					
+				    //if(LOG>4) console.log('str'[1]);
+				}
+				if(co.SignedInfo!=null && co.SignedInfo.Locator!=null && co.SignedInfo.Locator.PublicKey!=null){
+					
+
+					var publickey = rstr2b64(DataUtils.toString(co.SignedInfo.Locator.PublicKey));
+					var publickeyHex = DataUtils.toHex(co.SignedInfo.Locator.PublicKey).toLowerCase();
+					var publickeyString = DataUtils.toString(co.SignedInfo.Locator.PublicKey);
+					
+					var signature = DataUtils.toHex(co.Signature.Signature).toLowerCase();
+					
+					
+					var input = DataUtils.toString(co.rawSignatureData);
+					 
+					
+					output += "DER Certificate: "+publickey ;
+			
+					output+= "<br />";
+					output+= "<br />";
+					
+					if(LOG>2) console.log(" ContentName + SignedInfo + Content = "+input);
+					if(LOG>2) console.log(" PublicKey = "+publickey );
+					if(LOG>2) console.log(" PublicKeyHex = "+publickeyHex );
+					if(LOG>2) console.log(" PublicKeyString = "+publickeyString );
+					
+					if(LOG>2) console.log(" Signature "+signature );
+					
+					if(LOG>2) console.log(" Signature NOW IS" );
+					
+					if(LOG>2) console.log(co.Signature.Signature);
+					
+					
+					/*var x509 = new X509();
+					
+					x509.readCertPEM(publickey);
+					
+					
+					//x509.readCertPEMWithoutRSAInit(publickey);
+
+					var result = x509.subjectPublicKeyRSA.verifyString(input, signature);*/
+					//console.log('result is '+result);
+					
+					
+					var kp = publickeyHex.slice(56,314);
+					
+					output += "PUBLISHER KEY(hex): "+kp ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					console.log('PUBLIC KEY IN HEX is ');
+					console.log(kp);
+
+					var exp = publickeyHex.slice(318,324);
+					
+					console.log('kp size is '+kp.length );
+					output += "exponent: "+exp ;
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					console.log('EXPONENT is ');
+					console.log(exp);
+
+					
+					
+					/*var c1 = hex_sha256(input);
+					var c2 = signature;
+					
+					if(LOG>4)console.log('input is ');
+					if(LOG>4)console.log(input);
+					if(LOG>4)console.log('C1 is ');
+					if(LOG>4)console.log(c1);
+					if(LOG>4)console.log('C2 is ');
+					if(LOG>4)console.log(c2);
+					var result = c1 == c2;*/
+					
+					var rsakey = new RSAKey();
+					
+					rsakey.setPublic(kp,exp);
+					
+					var result = rsakey.verifyByteArray(co.rawSignatureData,signature);
+				   // var result = rsakey.verifyString(input, signature);
+					
+				    
+				    
+				    console.log('PUBLIC KEY n after is ');
+					console.log(rsakey.n);
+
+					console.log('EXPONENT e after is ');
+					console.log(rsakey.e);
+					
+					
+					if(result)
+						output += 'SIGNATURE VALID';
+					else
+						output += 'SIGNATURE INVALID';
+
+						
+					
+					
+					//output += "VALID: "+ toHex(co.SignedInfo.Locator.PublicKey);
+					
+					output+= "<br />";
+					output+= "<br />";
+					
+					
+					//if(LOG>4) console.log('str'[1]);
+				}
+			}
+			
+			document.getElementById('result').innerHTML = output;
+			
+		}
+
+	</script>
+
+</head>
+<body >
+	<form>
+		
+		Please Enter a Content Name:<br />
+		
+		<input id="contentname" type="text" name="CONTENTNAME" value="/PARC/abc" /> 
+		
+		Please Enter the Content:<br />
+		
+		<textarea id="content" cols="40" rows="5" name="CONTENT" value="SUCCESS"  >SUCCESS!</textarea> 
+		
+	</form>
+	<button onclick="encode()">Encode</button>
+	<button onclick="decode()">Decode</button>
+	
+	
+	<p id="result">048202aa03b20885a8592ebf94205e85de1b143fb423680729910012bce6e2c9b2045e2988b2d7a358bf659d8bd714fbf1859560df6dacef07d07760e29d37a9a71d61ed51d04aa1ba1f6470fb985e3a328e5dcc215bc4c3aa61e3fe8f609709b34912dda892463e611fd86af2e69ff7688008f0dd1ee5680a037be308f4fbb1aef333ad33bf31170000f2fafdc12e4d2e532e6c6f63616c686f737400fabdc12e4d2e53525600faa563636e6400fa9d4b455900fa02b5c12e4d2e4b00e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f00fabdfd04fcc87f5ade00fa8d00000001a203e20285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f0002bab504fcc88dd36f0002c29d28463f0003d29e3630300003da8d000001e201eaf2fafdc12e4d2e532e6c6f63616c686f737400fabdc12e4d2e53525600faa563636e6400fa9d4b455900fa02b5c12e4d2e4b00e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f00fabdfd04fcc87f5ade0000000000019a0a9530819f300d06092a864886f70d010101050003818d0030818902818100b945ae17ef820242f542eb1af9eb92ad00a475741db5f8b4cb9d3a1131ad7f7d977e7b7809258f50cee91b56d6f16adb9c7a9492fe004f789bc5d4919b309740f910c26b8603d3f165bb62fef303663df67f244370492c6f1c5e5e9917fe7d4a3f6b0756760a805c467bcb0f143a159e267dc10eb1f4320f1ff2f247c3cbfd25020301000100000000000</p>
+	<!--  p id="result">058203e20285e0a01e093968f9740ce7f4361babf5bb05a4e55aaca5e58f73eddeb8e013aa8f0004d29632310004da9631370004e2c631302e312e312e310004eaa6393639350003d2d6323134373438333634370000</p-->
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/testing/test-encode-decode-Interest.html b/js/testing/test-encode-decode-Interest.html
new file mode 100644
index 0000000..8fdffe0
--- /dev/null
+++ b/js/testing/test-encode-decode-Interest.html
@@ -0,0 +1,190 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Encocde/Decode Interest</title>
+	
+	<script type="text/javascript" src="java_socket_bridge.js"></script>
+	
+	<script type="text/javascript" src="CCNProtocolDTags.js"></script>
+	
+	<script type="text/javascript" src="CCNTime.js"></script>
+	
+	<script type="text/javascript" src="ContentName.js"></script>
+	
+	<script type="text/javascript" src="ContentObject.js"></script>
+	
+	<script type="text/javascript" src="DateFormat.js"></script>
+	
+	<script type="text/javascript" src="Exclude.js"></script>
+
+	<script type="text/javascript" src="ExcludeAny.js"></script>
+
+	<script type="text/javascript" src="ExcludeComponent.js"></script>
+
+	<script type="text/javascript" src="Interest.js"></script>
+	
+	<script type="text/javascript" src="KeyLocator.js"></script>
+	
+	<script type="text/javascript" src="KeyName.js"></script>
+
+	<script type="text/javascript" src="PublisherID.js"></script>
+	
+	<script type="text/javascript" src="Signature.js"></script>
+	
+	<script type="text/javascript" src="SignedInfo.js"></script>
+	
+	<script type="text/javascript" src="PublisherPublicKeyDigest.js"></script>
+	
+	<script type="text/javascript" src="FaceInstance.js"></script>
+
+	<script type="text/javascript" src="ForwardingEntry.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLEncoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLCodec.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLDecoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/DataUtils.js"></script>
+	
+	<script type="text/javascript" src="encoding/EncodingUtils.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="security/KeyManager.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.js"></script>
+
+	<script type="text/javascript">
+	
+		function encode(){
+			var interest = new Interest( new ContentName(document.getElementById('interest').value ) );
+
+			interest.Scope = 1;
+			
+			var output = encodeToHexInterest(interest);
+			
+			document.getElementById('result').innerHTML = output;
+
+		}
+		
+		function decode(){
+			
+			
+			
+			var input = document.getElementById('result').innerHTML;
+
+			
+			var interest = decodeHexInterest(input);
+			
+			if(LOG>3)console.log('INTEREST DECODED');
+			if(LOG>3)console.log(interest);
+
+			///////////////////////////////////////
+			
+			var output ="";
+			
+			if(interest.Name!=null && interest.Name.Components!=null){
+				output+= "NAME: ";
+				
+				
+				output+= interest.Name.getName();
+				
+				/*for(var i=0;i<interest.Name.Components.length;i++){
+					output+= "/"+ DataUtils.toString(interest.Name.Components[i]);
+				}*/
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+	
+			
+			if(interest.Scope!=null ){
+				output+= "SCOPE: ";
+				
+					output+=  interest.Scope;
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+	
+			if(interest.PublisherID!=null ){
+				output+= "PUBLISHER ID: ";
+				
+					output+=  interest.PublisherID.PublisherID;
+					
+					output+= "PUBLISHER ID TYPE: ";
+					output+=  interest.PublisherID.PublisherType;
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.MaxSuffixComponents!=null ){
+				output+= "MaxSuffixComponents : ";
+				
+				output+=  interest.MaxSuffixComponents;
+
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.MinSuffixComponents!=null ){
+				output+= "MinSuffixComponents : ";
+				
+				output+=  interest.MinSuffixComponents;
+
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			if(interest.MinSuffixComponents!=null ){
+				output+= "MinSuffixComponents : ";
+				
+				output+=  interest.MinSuffixComponents;
+
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			document.getElementById('result').innerHTML = output;
+			
+		}
+
+	</script>
+
+</head>
+<body >
+	<form>
+		
+		Please Enter a Interest:<br />
+		
+		<input id="interest" type="text" name="INTERSET" value="/PARC/abc" /> 
+		
+	</form>
+	<button onclick="encode()">Encode</button>
+	<button onclick="decode()">Decode</button>
+	
+			<p id="result">01D2F2FAA574657374000000</p>
+	
+	
+
+		<!--  p id="result">01d2f2fafdc12e4d2e532e6c6f63616c686f737400fabdc12e4d2e53525600faa563636e6400fa9d4b4559000002d28e310000</p-->
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/testing/test-image-parsing.html b/js/testing/test-image-parsing.html
new file mode 100644
index 0000000..3ce9b84
--- /dev/null
+++ b/js/testing/test-image-parsing.html
@@ -0,0 +1,127 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Request Example</title>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.min.js"></script>
+
+		
+	<script type="text/javascript">
+		function sign(){
+			
+			var input = document.getElementById('contentname').value;
+			
+			var  _PEM_PRIVATE_KEY_STRING_ = document.getElementById('privateKey').value;
+			
+			var rsa = new RSAKey();
+			
+			rsa.readPrivateKeyFromPEMString(_PEM_PRIVATE_KEY_STRING_);
+			
+			var hSig = rsa.signString(input, "sha256");
+			
+			document.getElementById('result').innerHTML = hSig;
+
+		}
+		function verify(){
+			var input = document.getElementById('contentname').value;
+			
+			var signature = document.getElementById('result').innerHTML;
+			
+			var  _PEM_X509CERT_STRING_ = document.getElementById('certificate').value;
+			
+			var x509 = new X509();
+			
+			x509.readCertPEM(_PEM_X509CERT_STRING_);
+			
+			var result = x509.subjectPublicKeyRSA.verifyString(input, signature);
+			
+			if(result)
+				document.getElementById('result').innerHTML = 'SIGNATURE VALID';
+			else
+				document.getElementById('result').innerHTML = 'SIGNATURE INVALID';
+
+			
+		}
+
+	</script>
+	
+
+</head>
+<body >
+	<form>
+		
+		<input id="privateKey" type="hidden" value="-----BEGIN RSA PRIVATE KEY-----
+			MIICWwIBAAKBgQDRhGF7X4A0ZVlEg594WmODVVUIiiPQs04aLmvfg8SborHss5gQ
+			Xu0aIdUT6nb5rTh5hD2yfpF2WIW6M8z0WxRhwicgXwi80H1aLPf6lEPPLvN29EhQ
+			NjBpkFkAJUbS8uuhJEeKw0cE49g80eBBF4BCqSL6PFQbP9/rByxdxEoAIQIDAQAB
+			AoGAA9/q3Zk6ib2GFRpKDLO/O2KMnAfR+b4XJ6zMGeoZ7Lbpi3MW0Nawk9ckVaX0
+			ZVGqxbSIX5Cvp/yjHHpww+QbUFrw/gCjLiiYjM9E8C3uAF5AKJ0r4GBPl4u8K4bp
+			bXeSxSB60/wPQFiQAJVcA5xhZVzqNuF3EjuKdHsw+dk+dPECQQDubX/lVGFgD/xY
+			uchz56Yc7VHX+58BUkNSewSzwJRbcueqknXRWwj97SXqpnYfKqZq78dnEF10SWsr
+			/NMKi+7XAkEA4PVqDv/OZAbWr4syXZNv/Mpl4r5suzYMMUD9U8B2JIRnrhmGZPzL
+			x23N9J4hEJ+Xh8tSKVc80jOkrvGlSv+BxwJAaTOtjA3YTV+gU7Hdza53sCnSw/8F
+			YLrgc6NOJtYhX9xqdevbyn1lkU0zPr8mPYg/F84m6MXixm2iuSz8HZoyzwJARi2p
+			aYZ5/5B2lwroqnKdZBJMGKFpUDn7Mb5hiSgocxnvMkv6NjT66Xsi3iYakJII9q8C
+			Ma1qZvT/cigmdbAh7wJAQNXyoizuGEltiSaBXx4H29EdXNYWDJ9SS5f070BRbAIl
+			dqRh3rcNvpY6BKJqFapda1DjdcncZECMizT/GMrc1w==
+			-----END RSA PRIVATE KEY-----"></input>
+		
+		
+		<input id="certificate" type="hidden" value="-----BEGIN CERTIFICATE-----
+			MIIBvTCCASYCCQD55fNzc0WF7TANBgkqhkiG9w0BAQUFADAjMQswCQYDVQQGEwJK
+			UDEUMBIGA1UEChMLMDAtVEVTVC1SU0EwHhcNMTAwNTI4MDIwODUxWhcNMjAwNTI1
+			MDIwODUxWjAjMQswCQYDVQQGEwJKUDEUMBIGA1UEChMLMDAtVEVTVC1SU0EwgZ8w
+			DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANGEYXtfgDRlWUSDn3haY4NVVQiKI9Cz
+			Thoua9+DxJuiseyzmBBe7Roh1RPqdvmtOHmEPbJ+kXZYhbozzPRbFGHCJyBfCLzQ
+			fVos9/qUQ88u83b0SFA2MGmQWQAlRtLy66EkR4rDRwTj2DzR4EEXgEKpIvo8VBs/
+			3+sHLF3ESgAhAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAEZ6mXFFq3AzfaqWHmCy1
+			ARjlauYAa8ZmUFnLm0emg9dkVBJ63aEqARhtok6bDQDzSJxiLpCEF6G4b/Nv/M/M
+			LyhP+OoOTmETMegAVQMq71choVJyOFE5BtQa6M/lCHEOya5QUfoRF2HF9EjRF44K
+			3OK+u3ivTSj3zwjtpudY5Xo=
+			-----END CERTIFICATE-----"></input>
+
+		Please Enter a Text to sign:<br /><input id="contentname" type="text" name="CONTENTNAME" value="/PARC/CCNX" /> <br />
+	
+	</form>
+	<button onclick="sign()">Encode</button>
+	<button onclick="verify()">Parse</button>
+	
+	<script type="text/javascript">
+		
+		var String = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==';
+		var link = document.createElement('img');
+		link.setAttribute('src',String);
+		
+		document.body.appendChild(link);
+		
+</script>
+
+	<img src="data:image/png;base64,
+iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP
+C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA
+AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J
+REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq
+ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0
+vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />
+
+		<p id="result"></p>
+
+</body>
+</html>
diff --git a/js/testing/test-request-send-hex.html b/js/testing/test-request-send-hex.html
new file mode 100644
index 0000000..922d340
--- /dev/null
+++ b/js/testing/test-request-send-hex.html
@@ -0,0 +1,304 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Send Hex</title>
+	<script type="text/javascript" src="java_socket_bridge.js"></script>
+	
+	<script type="text/javascript" src="CCNProtocolDTags.js"></script>
+	
+	<script type="text/javascript" src="CCNTime.js"></script>
+	
+	<script type="text/javascript" src="ContentName.js"></script>
+	
+	<script type="text/javascript" src="ContentObject.js"></script>
+	
+	<script type="text/javascript" src="DateFormat.js"></script>
+	
+	<script type="text/javascript" src="Exclude.js"></script>
+
+	<script type="text/javascript" src="ExcludeAny.js"></script>
+
+	<script type="text/javascript" src="ExcludeComponent.js"></script>
+
+	<script type="text/javascript" src="Interest.js"></script>
+	
+	<script type="text/javascript" src="KeyLocator.js"></script>
+	
+	<script type="text/javascript" src="KeyName.js"></script>
+
+	<script type="text/javascript" src="PublisherID.js"></script>
+	
+	<script type="text/javascript" src="Signature.js"></script>
+	
+	<script type="text/javascript" src="SignedInfo.js"></script>
+	
+	<script type="text/javascript" src="PublisherPublicKeyDigest.js"></script>
+	
+	<script type="text/javascript" src="FaceInstance.js"></script>
+	
+	<script type="text/javascript" src="ForwardingEntry.js"></script>
+	
+	
+	<script type="text/javascript" src="encoding/BinaryXMLEncoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLCodec.js"></script>
+	
+	<script type="text/javascript" src="encoding/BinaryXMLDecoder.js"></script>
+	
+	<script type="text/javascript" src="encoding/DataUtils.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="security/KeyManager.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.js"></script>
+
+	<script type="text/javascript">
+		function run(){
+			//console.log(unescape('%04%82%02%AA%03%B2%08%85H%8EY%0C%94p%F1-%C5%E2%23lW%19%8B%0D%25%81%8D%DEBeNX%BA%0D%D0%10W%7D%BA%9F%C6%8C%2AU%BC%B8%BA%5E%F3%D1l%CDmJ%EE%C4%9D%21%0F%0Djhm%1Ah%86P%D91x%26%AC%B8%8Co%C1%CF%29.l6Mc%B4%DC%C8%D4%86%97%8F%D2%1A%7C%A2%ED%93%89%F3%E9%9D%3C%E0%D4%90%28%D4%11%A2%5D%08%EB%A4%AF%96j%15%A5s%C8%D2Jr%96q%0F%87%7F%D5%D7%B3%D3T%96%F3%16L%00%00%F2%00%01%A2%03%E2%02%85%20Ht%04Z%9F%AC%98%EB%B7%DF%AD%C4%BB%D1%AB%15%A6%E4%06SI%C6%C8%3A%84%60%84N%AB1%85%00%02%BA%B5%04%FA%C3%F9%D7%97%00%01%E2%01%DA%0A%950%81%9F0%0D%06%09%2A%86H%86%F7%0D%01%01%01%05%00%03%81%8D%000%81%89%02%81%81%00%BD%95eU%9C%17%95%C0I%A5%EFM%C9%D1%BC%8B%98%1Bf%09~%A2S%F5%D0%F5%0F%1A%1D%F9%08%ACNi%A7%97%DA%DD%2C%05%90%94Jn%84%9E%1F%BBsq%C5%3D%FD%DB%E7%80%26V%E1%D5%F4I%B8S%0D%9C%7D%A8%D6%AB%EB%D9%0E%06%12M%92%7F%2FlW%21%F1%D0%E4%9E%7Fj%11g%CA%F9%60%D9o%F5%AF%AA-%25g3wr%A9D%C8%E6%CE%B8Y%B2Z%23%1D%9E%CA%875t%FF%98%22%5C%85%3F8%EF%02%03%01%00%01%00%00%00%01%9A%06%8D%05%82%04%CA%BEnewface%00%03%E2%02%85%E0%A0%1E%099h%F9t%0C%E7%F46%1B%AB%F5%BB%05%A4%E5Z%AC%A5%E5%8Fs%ED%DE%B8%E0%13%AA%8F%00%04%D2%8E0%00%04%DA%9617%00%04%E2%CE127.0.0.1%00%04%EA%A69695%00%03%D2%D62147483647%00%00%00%00'));
+			
+			//var a = escape('%04%82%02%AA%03%B2%08%85L%90%D5X%2C%B06wHi%C5%E2%1C%03%D2M%5DB%BF%A5%8C%C8%E8g%99%EB%A7%84%25l%8EB%92%3E%AA%D8%F6%85t%FF%BB%CE%3D%B1%F4%F8%27%A7%1D.%B0%EEU%A6%06%AB%CD%1F3%C6W%93%A9%10X%28-7%7CW%D4%E4%8A3%CF%2B%E4%95%D6%B2%1D%3B%7C%E8%7C%88%7D%7B%F5%80%BC%F7%28%3A%FC%F5w%5B%8C%24%0E%0A%24%DBk%9B%8D%B5%28d%D0A%1E%BEq%0F%0Cc%DB%15%B6%26%1B%E7%E3%E3XL%00%00%F2%00%01%A2%03%E2%02%85%20Ht%04Z%9F%AC%98%EB%B7%DF%AD%C4%BB%D1%AB%15%A6%E4%06SI%C6%C8%3A%84%60%84N%AB1%85%00%02%BA%B5%04%FA%C4%C7%D3I%00%01%E2%01%DA%0A%950%81%9F0%0D%06%09%2A%86H%86%F7%0D%01%01%01%05%00%03%81%8D%000%81%89%02%81%81%00%BD%95eU%9C%17%95%C0I%A5%EFM%C9%D1%BC%8B%98%1Bf%09~%A2S%F5%D0%F5%0F%1A%1D%F9%08%ACNi%A7%97%DA%DD%2C%05%90%94Jn%84%9E%1F%BBsq%C5%3D%FD%DB%E7%80%26V%E1%D5%F4I%B8S%0D%9C%7D%A8%D6%AB%EB%D9%0E%06%12M%92%7F%2FlW%21%F1%D0%E4%9E%7Fj%11g%CA%F9%60%D9o%F5%AF%AA-%25g3wr%A9D%C8%E6%CE%B8Y%B2Z%23%1D%9E%CA%875t%FF%98%22%5C%85%3F8%EF%02%03%01%00%01%00%00%00%01%9A%06%8D%05%82%04%CA%BEnewface%00%03%E2%02%85%E0%A0%1E%099h%F9t%0C%E7%F46%1B%AB%F5%BB%05%A4%E5Z%AC%A5%E5%8Fs%ED%DE%B8%E0%13%AA%8F%00%04%D2%8E0%00%04%DA%9617%00%04%E2%CE127.0.0.1%00%04%EA%A69695%00%03%D2%D62147483647%00%00%00%00');
+			
+			//var n = a.replace("%","");
+			
+			//console.log(n);
+
+			var hex = document.getElementById('contentname').value;
+		
+			///////////////////////////////////////
+		    //createRoute(, 9695);
+			
+			
+			///  /ndn/ucla.edu/apps/hydra/mainvideo
+		    //createRoute('131.179.141.15', 9695);
+		    //createRoute('borges.metwi.ucla.edu', 9695);
+		    
+			//content object
+			//var co = queryPrefix( ContentName );
+			console.log('HEX IS');
+			console.log(hex);
+			
+		    var result = get_java_socket_bridge().connectAndStart('localhost',9695,hex);
+			
+			console.log('BINARY RESPONSE IS ' +result);
+			
+			var output ="";
+			output += "HEX ANSWER IS: "+ result;
+			
+			output+= "<br />";
+			output+= "<br />";
+
+			//result[0] and result[1] should be 0 and 4 if there is a content object found
+			if(result==null || result==undefined || result =="" ){
+				
+				
+				if(LOG>2)console.log('INVALID ANSWER');
+				output += "NO CONTENT FOUND";
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+			
+			else if(result[0] != '0'||result[1]!='4') {
+				if(LOG>2)console.log('INVALID ANSWER');
+				output += "INVALID ANSWER";
+				
+				output+= "<br />";
+				output+= "<br />";
+			}
+			else{
+				
+				var numbers = DataUtils.toNumbers(result);
+				
+				console.log('HEX RESPONSE IS \n'+numbers);
+				decoder = new BinaryXMLDecoder(numbers);
+				
+				
+				co = new ContentObject();
+	        
+				co.decode(decoder);
+
+				if(LOG>2) console.log(co);
+			
+				///////////////////////////////////////
+				
+				
+				if(co==-1)
+					output+= "NO CONTENT FOUND"
+				else if (co==-2)
+					output+= "CONTENT NAME IS EMPTY"
+				else{
+					if(co.Name!=null && co.Name.Components!=null){
+						output+= "NAME: ";
+						
+						for(var i=0;i<co.Name.Components.length;i++){
+							output+= "/"+  DataUtils.toString(co.Name.Components[i]);
+						}
+						output+= "<br />";
+						output+= "<br />";
+					}
+		
+					if(co.Content !=null){
+						output += "CONTENT(ASCII): "+  DataUtils.toString(co.Content);
+						
+						output+= "<br />";
+						output+= "<br />";
+					}
+					if(co.Content !=null){
+						output += "CONTENT(hex): "+  DataUtils.toHex(co.Content);
+						
+						output+= "<br />";
+						output+= "<br />";
+					}
+					
+					if(co.Signature !=null && co.Signature.Signature!=null){
+						
+						output += "SIGNATURE(hex): "+  DataUtils.toHex(co.Signature.Signature);
+						
+						output+= "<br />";
+						output+= "<br />";
+					}
+					if(co.SignedInfo !=null && co.SignedInfo.Publisher!=null && co.SignedInfo.Publisher.PublisherPublicKeyDigest!=null){
+						
+						output += "Publisher Public Key Digest(hex): "+ toHex(co.SignedInfo.Publisher.PublisherPublicKeyDigest);
+						
+						output+= "<br />";
+						output+= "<br />";
+					}
+					if(co.SignedInfo !=null && co.SignedInfo.Timestamp!=null){
+						
+						output += "TimeStamp(hex): "+ co.SignedInfo.Timestamp.date;
+						
+						output+= "<br />";
+						output+= "<br />";
+					}
+					if(co.SignedInfo!=null && co.SignedInfo.Locator!=null && co.SignedInfo.Locator.PublicKey!=null){
+						
+						var publickey = rstr2b64(toString(co.SignedInfo.Locator.PublicKey));
+						var publickeyHex = toHex(co.SignedInfo.Locator.PublicKey).toLowerCase();
+						var publickeyString = toString(co.SignedInfo.Locator.PublicKey);
+						
+						var signature = toHex(co.Signature.Signature).toLowerCase();
+						
+						
+						var input = toString(co.rawSignatureData);
+						 
+						
+						output += "DER Certificate: "+publickey ;
+						
+						output+= "<br />";
+						output+= "<br />";
+						
+						
+	
+						if(LOG>2) console.log(" ContentName + SignedInfo + Content = "+input);
+						if(LOG>2) console.log(" PublicKey = "+publickey );
+						if(LOG>2) console.log(" PublicKeyHex = "+publickeyHex );
+						if(LOG>2) console.log(" PublicKeyString = "+publickeyString );
+						
+						if(LOG>2) console.log(" Signature "+signature );
+						
+						if(LOG>2) console.log(" Signature NOW IS" );
+						
+						if(LOG>2) console.log(co.Signature.Signature);
+						
+						
+						/*var x509 = new X509();
+						
+						x509.readCertPEM(publickey);
+						
+						
+						//x509.readCertPEMWithoutRSAInit(publickey);
+	
+						var result = x509.subjectPublicKeyRSA.verifyString(input, signature);*/
+						//console.log('result is '+result);
+						
+						
+						var kp = publickeyHex.slice(56,314);
+						
+						output += "PUBLISHER KEY(hex): "+kp ;
+						
+						output+= "<br />";
+						output+= "<br />";
+						
+						console.log('PUBLIC KEY IN HEX is ');
+						console.log(kp);
+	
+						var exp = publickeyHex.slice(318,324);
+						
+						console.log('kp size is '+kp.length );
+						output += "exponent: "+exp ;
+						
+						output+= "<br />";
+						output+= "<br />";
+						
+						console.log('EXPONENT is ');
+						console.log(exp);
+	
+						var rsakey = new RSAKey();
+						
+						rsakey.setPublic(kp,exp);
+						
+					    var result = rsakey.verifyString(input, signature);
+						
+					    console.log('PUBLIC KEY n after is ');
+						console.log(rsakey.n);
+	
+						console.log('EXPONENT e after is ');
+						console.log(rsakey.e);
+						
+						
+						if(result)
+							output += 'SIGNATURE VALID';
+						else
+							output += 'SIGNATURE INVALID';
+	
+							
+						
+						
+						//output += "VALID: "+ toHex(co.SignedInfo.Locator.PublicKey);
+						
+						output+= "<br />";
+						output+= "<br />";
+						
+						
+						//if(LOG>4) console.log('str'[1]);
+					}
+				}
+			}
+			document.getElementById('result').innerHTML = output;
+		}
+	
+		</script>
+	
+</head>
+<body >
+	<form>
+		Please Enter a Content Name:<br /><input id="contentname" type="text" name="CONTENTNAME" value="01D2F2FAA55041524300FA9D616263000000" /> <br />
+	</form>
+	<button onclick="run()">Request Data!</button>
+	<div >
+		<applet id="JavaSocketBridge" archive="JavaSocketBridge.jar" code="JavaSocketBridge.class" width="0" height="0">
+		</applet>
+	</div>
+
+		<p id="result"></p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/testing/test-sha256.html b/js/testing/test-sha256.html
new file mode 100644
index 0000000..f30f4de
--- /dev/null
+++ b/js/testing/test-sha256.html
@@ -0,0 +1,60 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Request Example</title>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.min.js"></script>
+
+	<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/sha256.js"></script>
+	
+			
+	<script type="text/javascript">
+		function hash(){
+			
+			var input = document.getElementById('contentname').value;
+			
+			var output = "TEST1 "+hex_sha256(input);
+			
+			output+= "<br />";
+			
+			output += "TEST2 " +CryptoJS.SHA256(input);
+			
+			document.getElementById('result').innerHTML = output;
+
+		}
+		
+	</script>
+	
+
+</head>
+<body >
+	<form>
+		
+
+
+		Please Enter a Text to sign:<br /><input id="contentname" type="text" name="CONTENTNAME" value="/PARC/abc" /> <br />
+	
+	</form>
+	<button onclick="hash()">Hash</button>
+
+		<p id="result"></p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/testing/test-signature-binary.html b/js/testing/test-signature-binary.html
new file mode 100644
index 0000000..967d048
--- /dev/null
+++ b/js/testing/test-signature-binary.html
@@ -0,0 +1,111 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Request Example</title>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.min.js"></script>
+
+
+	<script type="text/javascript">
+		function sign(){
+			
+			var input = document.getElementById('contentname').value;
+			
+			var  _PEM_PRIVATE_KEY_STRING_ = document.getElementById('privateKey').value;
+			
+			var rsa = new RSAKey();
+			
+			rsa.readPrivateKeyFromPEMString(_PEM_PRIVATE_KEY_STRING_);
+			
+			var hSig = rsa.signString(input, "sha256");
+			
+			document.getElementById('result').innerHTML = hSig;
+
+		}
+		function verify(){
+			var input = document.getElementById('contentname').value;
+			
+			var signature = document.getElementById('result').innerHTML;
+			
+			var  _PEM_X509CERT_STRING_ = document.getElementById('certificate').value;
+			
+			var x509 = new X509();
+			
+			x509.readCertPEM(_PEM_X509CERT_STRING_);
+			
+			var result = x509.subjectPublicKeyRSA.verifyString(input, signature);
+			
+			if(result)
+				document.getElementById('result').innerHTML = 'SIGNATURE VALID';
+			else
+				document.getElementById('result').innerHTML = 'SIGNATURE INVALID';
+
+			
+		}
+
+	</script>
+	
+
+</head>
+<body >
+	<form>
+		
+		<input id="privateKey" type="hidden" value="-----BEGIN RSA PRIVATE KEY-----
+			MIICWwIBAAKBgQDRhGF7X4A0ZVlEg594WmODVVUIiiPQs04aLmvfg8SborHss5gQ
+			Xu0aIdUT6nb5rTh5hD2yfpF2WIW6M8z0WxRhwicgXwi80H1aLPf6lEPPLvN29EhQ
+			NjBpkFkAJUbS8uuhJEeKw0cE49g80eBBF4BCqSL6PFQbP9/rByxdxEoAIQIDAQAB
+			AoGAA9/q3Zk6ib2GFRpKDLO/O2KMnAfR+b4XJ6zMGeoZ7Lbpi3MW0Nawk9ckVaX0
+			ZVGqxbSIX5Cvp/yjHHpww+QbUFrw/gCjLiiYjM9E8C3uAF5AKJ0r4GBPl4u8K4bp
+			bXeSxSB60/wPQFiQAJVcA5xhZVzqNuF3EjuKdHsw+dk+dPECQQDubX/lVGFgD/xY
+			uchz56Yc7VHX+58BUkNSewSzwJRbcueqknXRWwj97SXqpnYfKqZq78dnEF10SWsr
+			/NMKi+7XAkEA4PVqDv/OZAbWr4syXZNv/Mpl4r5suzYMMUD9U8B2JIRnrhmGZPzL
+			x23N9J4hEJ+Xh8tSKVc80jOkrvGlSv+BxwJAaTOtjA3YTV+gU7Hdza53sCnSw/8F
+			YLrgc6NOJtYhX9xqdevbyn1lkU0zPr8mPYg/F84m6MXixm2iuSz8HZoyzwJARi2p
+			aYZ5/5B2lwroqnKdZBJMGKFpUDn7Mb5hiSgocxnvMkv6NjT66Xsi3iYakJII9q8C
+			Ma1qZvT/cigmdbAh7wJAQNXyoizuGEltiSaBXx4H29EdXNYWDJ9SS5f070BRbAIl
+			dqRh3rcNvpY6BKJqFapda1DjdcncZECMizT/GMrc1w==
+			-----END RSA PRIVATE KEY-----"></input>
+		
+		
+		<input id="certificate" type="hidden" value="-----BEGIN CERTIFICATE-----
+			MIIBvTCCASYCCQD55fNzc0WF7TANBgkqhkiG9w0BAQUFADAjMQswCQYDVQQGEwJK
+			UDEUMBIGA1UEChMLMDAtVEVTVC1SU0EwHhcNMTAwNTI4MDIwODUxWhcNMjAwNTI1
+			MDIwODUxWjAjMQswCQYDVQQGEwJKUDEUMBIGA1UEChMLMDAtVEVTVC1SU0EwgZ8w
+			DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANGEYXtfgDRlWUSDn3haY4NVVQiKI9Cz
+			Thoua9+DxJuiseyzmBBe7Roh1RPqdvmtOHmEPbJ+kXZYhbozzPRbFGHCJyBfCLzQ
+			fVos9/qUQ88u83b0SFA2MGmQWQAlRtLy66EkR4rDRwTj2DzR4EEXgEKpIvo8VBs/
+			3+sHLF3ESgAhAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAEZ6mXFFq3AzfaqWHmCy1
+			ARjlauYAa8ZmUFnLm0emg9dkVBJ63aEqARhtok6bDQDzSJxiLpCEF6G4b/Nv/M/M
+			LyhP+OoOTmETMegAVQMq71choVJyOFE5BtQa6M/lCHEOya5QUfoRF2HF9EjRF44K
+			3OK+u3ivTSj3zwjtpudY5Xo=
+			-----END CERTIFICATE-----"></input>
+
+		Please Enter a Text to sign:<br /><input id="contentname" type="text" name="CONTENTNAME" value="ª²s\nXñ­å àÄÕk...\?8ï����µhello\n�" /> <br />
+	
+	</form>
+	<button onclick="sign()">Sign</button>
+	<button onclick="verify()">Verify</button>
+	
+	
+
+		<p id="result"></p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/testing/test-signature-string.html b/js/testing/test-signature-string.html
new file mode 100644
index 0000000..dd57ff6
--- /dev/null
+++ b/js/testing/test-signature-string.html
@@ -0,0 +1,120 @@
+<?xml version = "1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"DTD/xhtml1-strict.dtd">
+<html xmlns = "http://www.w3.org/1999/xhtml">
+
+<head>
+	<title>NDN Request Example</title>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/jsbn2.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsa2.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha1.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha256.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/sha512.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/md5.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/ripemd160.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/base64.js"></script>
+	
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsapem-1.1.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/rsasign-1.2.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/asn1hex-1.1.min.js"></script>
+	<script language="JavaScript" type="text/javascript" src="securityLib/x509-1.1.min.js"></script>
+<script language="JavaScript" type="text/javascript" src="security/KeyManager.js"></script>
+	
+		
+	<script type="text/javascript">
+		function sign(){
+			
+			
+			var keyManager = new KeyManager();
+			
+			
+			
+			var input = document.getElementById('contentname').value;
+			
+			var  _PEM_PRIVATE_KEY_STRING_ = keyManager.privateKey;//document.getElementById('privateKey').value;
+			
+			var rsa = new RSAKey();
+			
+			rsa.readPrivateKeyFromPEMString(_PEM_PRIVATE_KEY_STRING_);
+			
+			var hSig = rsa.signString(input, "sha256");
+			
+			document.getElementById('result').innerHTML = hSig;
+
+		}
+		function verify(){
+			var input = document.getElementById('contentname').value;
+			
+			var signature = document.getElementById('result').innerHTML;
+			
+			var  _PEM_X509CERT_STRING_ = document.getElementById('certificate').value;
+			
+			var x509 = new X509();
+			
+			x509.readCertPEM(_PEM_X509CERT_STRING_);
+			
+			var result = x509.subjectPublicKeyRSA.verifyString(input, signature);
+			
+			if(result)
+				document.getElementById('result').innerHTML = 'SIGNATURE VALID';
+			else
+				document.getElementById('result').innerHTML = 'SIGNATURE INVALID';
+
+			
+		}
+
+	</script>
+	
+
+</head>
+<body >
+	<form>
+		
+		<input id="privateKey" type="hidden" value="-----BEGIN RSA PRIVATE KEY-----
+			MIICWwIBAAKBgQDRhGF7X4A0ZVlEg594WmODVVUIiiPQs04aLmvfg8SborHss5gQ
+			Xu0aIdUT6nb5rTh5hD2yfpF2WIW6M8z0WxRhwicgXwi80H1aLPf6lEPPLvN29EhQ
+			NjBpkFkAJUbS8uuhJEeKw0cE49g80eBBF4BCqSL6PFQbP9/rByxdxEoAIQIDAQAB
+			AoGAA9/q3Zk6ib2GFRpKDLO/O2KMnAfR+b4XJ6zMGeoZ7Lbpi3MW0Nawk9ckVaX0
+			ZVGqxbSIX5Cvp/yjHHpww+QbUFrw/gCjLiiYjM9E8C3uAF5AKJ0r4GBPl4u8K4bp
+			bXeSxSB60/wPQFiQAJVcA5xhZVzqNuF3EjuKdHsw+dk+dPECQQDubX/lVGFgD/xY
+			uchz56Yc7VHX+58BUkNSewSzwJRbcueqknXRWwj97SXqpnYfKqZq78dnEF10SWsr
+			/NMKi+7XAkEA4PVqDv/OZAbWr4syXZNv/Mpl4r5suzYMMUD9U8B2JIRnrhmGZPzL
+			x23N9J4hEJ+Xh8tSKVc80jOkrvGlSv+BxwJAaTOtjA3YTV+gU7Hdza53sCnSw/8F
+			YLrgc6NOJtYhX9xqdevbyn1lkU0zPr8mPYg/F84m6MXixm2iuSz8HZoyzwJARi2p
+			aYZ5/5B2lwroqnKdZBJMGKFpUDn7Mb5hiSgocxnvMkv6NjT66Xsi3iYakJII9q8C
+			Ma1qZvT/cigmdbAh7wJAQNXyoizuGEltiSaBXx4H29EdXNYWDJ9SS5f070BRbAIl
+			dqRh3rcNvpY6BKJqFapda1DjdcncZECMizT/GMrc1w==
+			-----END RSA PRIVATE KEY-----"></input>
+		
+		
+		<input id="certificate" type="hidden" value="-----BEGIN CERTIFICATE-----
+			MIIBvTCCASYCCQD55fNzc0WF7TANBgkqhkiG9w0BAQUFADAjMQswCQYDVQQGEwJK
+			UDEUMBIGA1UEChMLMDAtVEVTVC1SU0EwHhcNMTAwNTI4MDIwODUxWhcNMjAwNTI1
+			MDIwODUxWjAjMQswCQYDVQQGEwJKUDEUMBIGA1UEChMLMDAtVEVTVC1SU0EwgZ8w
+			DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANGEYXtfgDRlWUSDn3haY4NVVQiKI9Cz
+			Thoua9+DxJuiseyzmBBe7Roh1RPqdvmtOHmEPbJ+kXZYhbozzPRbFGHCJyBfCLzQ
+			fVos9/qUQ88u83b0SFA2MGmQWQAlRtLy66EkR4rDRwTj2DzR4EEXgEKpIvo8VBs/
+			3+sHLF3ESgAhAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAEZ6mXFFq3AzfaqWHmCy1
+			ARjlauYAa8ZmUFnLm0emg9dkVBJ63aEqARhtok6bDQDzSJxiLpCEF6G4b/Nv/M/M
+			LyhP+OoOTmETMegAVQMq71choVJyOFE5BtQa6M/lCHEOya5QUfoRF2HF9EjRF44K
+			3OK+u3ivTSj3zwjtpudY5Xo=
+			-----END CERTIFICATE-----"></input>
+
+		Please Enter a Text to sign:<br /><input id="contentname" type="text" name="CONTENTNAME" value="/PARC/CCNX" /> <br />
+	
+	</form>
+	<button onclick="sign()">Sign</button>
+	<button onclick="verify()">Verify</button>
+	
+	
+
+		<p id="result"></p>
+
+		
+	
+</body>
+
+</html>
