<?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>