523 lines
20 KiB
HTML
523 lines
20 KiB
HTML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>LibEye Key Generation and Encryption</title>
|
|
</head>
|
|
|
|
<script src="js/forge.min.js"></script>
|
|
<script src="eyedrbg.js"></script>
|
|
<script src="eyeperms.js"></script>
|
|
<script src="test.js"></script>
|
|
<script type="text/javascript">
|
|
<!--
|
|
if(typeof BigInteger === 'undefined') {
|
|
var BigInteger = forge.jsbn.BigInteger;
|
|
}
|
|
|
|
function do_status(s) {
|
|
document.libeye.status.value = s;
|
|
}
|
|
function do_init() {
|
|
if(document.libeye.clearpassword.value.length == 0)
|
|
document.libeye.clearpassword.value = 'madman12';
|
|
var fileInput = document.getElementById('keyfile')
|
|
fileInput.addEventListener('change', loadKeyring);
|
|
fileInput = document.getElementById('pemfile')
|
|
fileInput.addEventListener('change', loadPEM);
|
|
fileInput = document.getElementById('attachfile')
|
|
fileInput.addEventListener('change', loadAttachment);
|
|
fileInput = document.getElementById('ionu')
|
|
fileInput.addEventListener('change', loadIONU);
|
|
}
|
|
|
|
function do_md5() {
|
|
var md = forge.md.md5.create();
|
|
var msg = document.libeye.plaintext.value;
|
|
md.update(msg);
|
|
document.libeye.ciphertext.value = md.digest().toHex();
|
|
}
|
|
function do_sha1() {
|
|
var md = forge.md.sha1.create();
|
|
var msg = document.libeye.plaintext.value;
|
|
md.update(msg);
|
|
document.libeye.ciphertext.value = md.digest().toHex();
|
|
}
|
|
function do_sha256() {
|
|
var md = forge.md.sha256.create();
|
|
var msg = document.libeye.plaintext.value;
|
|
md.update(msg);
|
|
document.libeye.ciphertext.value = md.digest().toHex();
|
|
//console.log(md.digest().toHex());
|
|
}
|
|
function do_hmac() {
|
|
var hmac = forge.hmac.create();
|
|
hmac.start('sha256', 'madman12');
|
|
var msg = document.libeye.plaintext.value;
|
|
hmac.update(msg);
|
|
document.libeye.ciphertext.value = hmac.digest().toHex();
|
|
}
|
|
function do_password() {
|
|
var password = createAccountCode (8, 32);
|
|
document.libeye.clearpassword.value = password;
|
|
}
|
|
function do_provision() {
|
|
var keyring = new Keyring ('challenge', 'test');
|
|
//var account = keyring.provisionAccountRSAKey ('test', 'i3gl7puh');
|
|
var account = keyring.provisionChallengeRSAKey ('tim', '["000000:tim","favbook::BOB","flame::BOB","kiss::BOB"]', '');
|
|
var tim = keyring.getKey ('tim');
|
|
console.log (tim.convertPublicToPEM());
|
|
//var account = keyring.provisionAccountRSAKey ('me', 'i3gl7puh', '', '["000000:timberes_ca9","favbook::BOB","flame::BOB","kiss::BOB"]');
|
|
//var myaccount = keyring.provisionAccountRSAKey ('me', account.code, account.salt, '["000000:timberes_ca9","favbook::BOB","flame::BOB","kiss::BOB"]');
|
|
//keyring.provisionChallengeRSAKey ("ch", '["000000:timberes_ca9","favbook::BOB","flame::BOB","kiss::BOB"]', myaccount.salt);
|
|
//myaccount = keyring.provisionAccountRSAKey ('me', myaccount.code, myaccount.salt);
|
|
//myaccount = keyring.provisionAccountRSAKey ('me', myaccount.code, myaccount.salt, '["000000:timberes_ca9","favbook::HARRY","flame::HARRY","kiss::HARRY"]');
|
|
//keyring.provisionChallengeRSAKey ('me', '["000000:timberes_ca9","favbook::HARRY","flame::HARRY","kiss::HARRY"]', myaccount.salt);
|
|
//var account = keyring.provisionAccountRSAKey ('test', 'abcdefgh');
|
|
//var myaccount = keyring.provisionAccountRSAKey ('me', account.code, account.salt, 'Bob,Bob,Bob');
|
|
//keyring.provisionChallengeRSAKey ("ch", 'Bob,Bob,Bob', myaccount.salt);
|
|
//myaccount = keyring.provisionAccountRSAKey ('me', myaccount.code, myaccount.salt);
|
|
//myaccount = keyring.provisionAccountRSAKey ('me', account.code, account.salt, 'Bob,Bob,Bob');
|
|
//myaccount = keyring.provisionAccountRSAKey ('me', account.code, account.salt, 'Bob,Bob,Bob');
|
|
//var mcf = deriveKey ('madman12');
|
|
//console.log (mcf);
|
|
//mcf = deriveKey ('madman12', mcf);
|
|
//console.log (mcf);
|
|
//mcf = deriveKey ('madman12', '6EVdXfSkSX+I15ZXGCRRH4TnpBnt17ivih5Nd7DxkPQ=');
|
|
//console.log (mcf);
|
|
//mcf = deriveKey ('madman12', mcf);
|
|
//var key = keyring.getKey ('test');
|
|
//console.log (key.convertPublicToPEM());
|
|
}
|
|
|
|
function do_slowhash() {
|
|
var password = document.libeye.clearpassword.value;
|
|
var mcf = document.libeye.mcf.value;
|
|
if (mcf.length > 22) {
|
|
deriveKey (password, mcf);
|
|
}
|
|
else {
|
|
mcf = deriveKey (password);
|
|
document.libeye.mcf.value = mcf;
|
|
}
|
|
}
|
|
function do_fasthash() {
|
|
var password = document.libeye.clearpassword.value;
|
|
var md = forge.md.sha256.create();
|
|
md.update ('CloudGuard half key');
|
|
var cghk = md.digest().toHex();
|
|
mcf = deriveUserKey (password, cghk);
|
|
document.libeye.mcf.value = mcf;
|
|
}
|
|
function do_pbkdf2() {
|
|
var before = new Date();
|
|
var hexSalt = '49734f616e6c5574';
|
|
var salt = forge.util.hexToBytes (hexSalt);
|
|
var key = forge.pkcs5.pbkdf2('madman12', salt, document.libeye.iterations, 32);
|
|
var password = document.libeye.clearpassword.value;
|
|
var count = document.libeye.iterations.value;
|
|
var key = forge.pkcs5.pbkdf2(password, salt, count, 32);
|
|
//var key = forge.pkcs5.pbkdf2('madman12', salt, 2500, 32);
|
|
var mcf = '$pbkdf2$' + count + '$' + forge.util.encode64 (key) + "$" + forge.util.encode64 (salt);
|
|
document.libeye.mcf.value = mcf;
|
|
var after = new Date();
|
|
do_status("PBKDF2 Generation Time: " + (after - before) + "ms");
|
|
}
|
|
function do_aes_encrypt() {
|
|
// generate a random IV
|
|
var iv = forge.random.getBytesSync(16);
|
|
document.libeye.iv.value = forge.util.bytesToHex(iv);
|
|
var mcf = document.libeye.mcf.value;
|
|
var fields = mcf.split('$');
|
|
var key;
|
|
if (fields.length > 3) {
|
|
key = forge.util.decode64(fields[3]);
|
|
}
|
|
else {
|
|
key = forge.util.decode64(mcf);
|
|
}
|
|
var cipher = forge.cipher.createCipher('AES-CBC', key);
|
|
cipher.start({iv: iv});
|
|
var msg = document.libeye.plaintext.value;
|
|
cipher.update(forge.util.createBuffer(msg));
|
|
cipher.finish();
|
|
var encrypted = cipher.output;
|
|
document.libeye.ciphertext.value = encrypted.toHex();
|
|
}
|
|
function do_aes_decrypt() {
|
|
var iv = forge.util.hexToBytes(document.libeye.iv.value);
|
|
var mcf = document.libeye.mcf.value;
|
|
var fields = mcf.split('$');
|
|
var key;
|
|
if (fields.length > 3) {
|
|
key = forge.util.decode64(fields[3]);
|
|
}
|
|
else {
|
|
key = forge.util.decode64(mcf);
|
|
}
|
|
var decipher = forge.cipher.createDecipher('AES-CBC', key);
|
|
decipher.start({iv: iv});
|
|
var msg = forge.util.hexToBytes(document.libeye.ciphertext.value);
|
|
decipher.update(forge.util.createBuffer(msg));
|
|
decipher.finish();
|
|
var decrypted = decipher.output;
|
|
document.libeye.decrypted.value = decrypted;
|
|
}
|
|
function do_genrsa() {
|
|
// generate an RSA key pair synchronously
|
|
var key = new Key ('random', 'rsa', IONU_KEY_TYPE_RSA, forge.pki.rsa.generateKeyPair({bits: 2048, e: 0x10001}));
|
|
var pem = key.convertPrivateToPEM();
|
|
var fp = forge.pki.getPublicKeyFingerprint(key.key.publicKey, {encoding: 'hex', delimiter: ':'});
|
|
document.libeye.fingerprint.value = fp;
|
|
document.libeye.n.value = key.key.privateKey.n.toString(16);
|
|
document.libeye.e.value = key.key.privateKey.e.toString(16);
|
|
document.libeye.d.value = key.key.privateKey.d.toString(16);
|
|
document.libeye.p.value = key.key.privateKey.p.toString(16);
|
|
document.libeye.q.value = key.key.privateKey.q.toString(16);
|
|
document.libeye.dP.value = key.key.privateKey.dP.toString(16);
|
|
document.libeye.dQ.value = key.key.privateKey.dQ.toString(16);
|
|
document.libeye.qInv.value = key.key.privateKey.qInv.toString(16);
|
|
var encrypted = key.publicKeyEncrypt('Howdy doooody', 'RSA-OAEP');
|
|
var decrypted = key.privateKeyDecrypt(encrypted, 'RSA-OAEP');
|
|
console.log (decrypted);
|
|
var keyring = new Keyring ('ionu_keyring', 'ring');
|
|
keyring.addKey (key);
|
|
console.log (keyring.toString());
|
|
keyring.saveToLocalStorage ();
|
|
//console.log (localStorage.ionu_keyring);
|
|
keyring.loadFromLocalStorage ('ionu_keyring');
|
|
var lkey = keyring.getKey ('random');
|
|
decrypted = lkey.privateKeyDecrypt(encrypted, 'RSA-OAEP');
|
|
console.log (decrypted);
|
|
}
|
|
function do_drbg() {
|
|
var before = new Date();
|
|
var drbg = new EyeDRBG (document.libeye.challenge.value);
|
|
//var bytes = drbg.randBytes (32);
|
|
//console.log(forge.util.bytesToHex(bytes));
|
|
var key = new Key ('drbg', 'rsa', IONU_KEY_TYPE_RSA, drbg.generateRSAKey());
|
|
var fp = key.getPublicKeyFingerprint();
|
|
document.libeye.fingerprint.value = fp;
|
|
document.libeye.n.value = key.key.privateKey.n.toString(16);
|
|
document.libeye.e.value = key.key.privateKey.e.toString(16);
|
|
document.libeye.d.value = key.key.privateKey.d.toString(16);
|
|
document.libeye.p.value = key.key.privateKey.p.toString(16);
|
|
document.libeye.q.value = key.key.privateKey.q.toString(16);
|
|
document.libeye.dP.value = key.key.privateKey.dP.toString(16);
|
|
document.libeye.dQ.value = key.key.privateKey.dQ.toString(16);
|
|
document.libeye.qInv.value = key.key.privateKey.qInv.toString(16);
|
|
var encrypted = key.publicKeyEncrypt('Howdy doooody', 'RSA-OAEP');
|
|
try {
|
|
var decrypted = key.privateKeyDecrypt(encrypted, 'RSA-OAEP');
|
|
console.log (decrypted);
|
|
}
|
|
catch (err) {
|
|
console.log (err.message);
|
|
}
|
|
var after = new Date();
|
|
do_status("RSA Generation Time: " + (after - before) + "ms");
|
|
}
|
|
function do_genrsa_challenge() {
|
|
var keyring = new Keyring ('challenge', 'test');
|
|
var challenge = '';
|
|
var salt = '';
|
|
var secret = 'mySecretSauce';
|
|
// Generate the secret based seed
|
|
var saltedSeed = keyring.generateSaltedChallengeSeed (challenge, secret, salt);
|
|
console.log (saltedSeed.seed);
|
|
|
|
// Generate the challenge + secret seed, returns the salt
|
|
challenge = document.libeye.challenge.value;
|
|
saltedSeed = keyring.generateSaltedChallengeSeed (challenge, secret, salt);
|
|
salt = saltedSeed.salt;
|
|
console.log (saltedSeed.seed);
|
|
|
|
// Generate the challenge + salt seed
|
|
secret = '';
|
|
saltedSeed = keyring.generateSaltedChallengeSeed (challenge, secret, salt);
|
|
console.log (saltedSeed.seed);
|
|
|
|
saltedSeed = keyring.generateSaltedChallengeSeed (challenge);
|
|
console.log (saltedSeed.seed);
|
|
|
|
//var before = new Date();
|
|
//do_status("Challenge Generation Time: " + (after - before) + "ms");
|
|
}
|
|
function do_rsa_encrypt() {
|
|
var e, n;
|
|
e = new BigInteger (document.libeye.e.value, 16);
|
|
n = new BigInteger (document.libeye.n.value, 16);
|
|
var publicKey = forge.pki.rsa.setPublicKey (n, e);
|
|
|
|
// encrypt data with a public key using RSAES-OAEP
|
|
var msg = document.libeye.plaintext.value;
|
|
var encrypted = publicKey.encrypt(msg, 'RSA-OAEP');
|
|
document.libeye.ciphertext.value = forge.util.bytesToHex(encrypted);
|
|
}
|
|
function do_rsa_decrypt() {
|
|
var n, e, d, p, q, dP, dQ, qInv;
|
|
e = new BigInteger (document.libeye.e.value, 16);
|
|
n = new BigInteger (document.libeye.n.value, 16);
|
|
d = new BigInteger (document.libeye.d.value, 16);
|
|
p = new BigInteger (document.libeye.p.value, 16);
|
|
q = new BigInteger (document.libeye.q.value, 16);
|
|
dP = new BigInteger (document.libeye.dP.value, 16);
|
|
dQ = new BigInteger (document.libeye.dQ.value, 16);
|
|
var privateKey = forge.pki.setRsaPrivateKey(n, e, d, p, q, dP, dQ, qInv);
|
|
|
|
// decrypt data with a private key using RSAES-OAEP
|
|
var msg = forge.util.hexToBytes(document.libeye.ciphertext.value);
|
|
var decrypted = privateKey.decrypt(msg, 'RSA-OAEP');
|
|
document.libeye.decrypted.value = decrypted;
|
|
}
|
|
function do_rsa_sign() {
|
|
var n, e, d, p, q, dP, dQ, qInv;
|
|
e = new BigInteger (document.libeye.e.value, 16);
|
|
n = new BigInteger (document.libeye.n.value, 16);
|
|
d = new BigInteger (document.libeye.d.value, 16);
|
|
p = new BigInteger (document.libeye.p.value, 16);
|
|
q = new BigInteger (document.libeye.q.value, 16);
|
|
dP = new BigInteger (document.libeye.dP.value, 16);
|
|
dQ = new BigInteger (document.libeye.dQ.value, 16);
|
|
var privateKey = forge.pki.setRsaPrivateKey(n, e, d, p, q, dP, dQ, qInv);
|
|
|
|
// Sign data with private key
|
|
var msg = document.libeye.plaintext.value;
|
|
var md = forge.md.sha1.create();
|
|
md.update(msg);
|
|
var signature = privateKey.sign(md);
|
|
document.libeye.ciphertext.value = forge.util.bytesToHex(signature);
|
|
}
|
|
function do_rsa_verify() {
|
|
var e, n;
|
|
e = new BigInteger (document.libeye.e.value, 16);
|
|
n = new BigInteger (document.libeye.n.value, 16);
|
|
var publicKey = forge.pki.rsa.setPublicKey (n, e);
|
|
|
|
// Verify data with public key
|
|
var msg = document.libeye.plaintext.value;
|
|
var signature = forge.util.hexToBytes(document.libeye.ciphertext.value);
|
|
var md = forge.md.sha1.create();
|
|
md.update(msg);
|
|
var verified = publicKey.verify(md.digest().bytes(), signature);
|
|
if (verified === true) {
|
|
console.log ("Verfication passed");
|
|
}
|
|
else {
|
|
console.log ("Verfication failed");
|
|
}
|
|
}
|
|
|
|
function do_cg_verify() {
|
|
var e, n;
|
|
e = new BigInteger (document.libeye.e.value, 16);
|
|
n = new BigInteger (document.libeye.n.value, 16);
|
|
var publicKey = forge.pki.rsa.setPublicKey (n, e);
|
|
|
|
var msg = forge.util.hexToBytes(document.libeye.ciphertext.value);
|
|
var decrypted = forge.pki.rsa.decrypt(msg, publicKey, true);
|
|
document.libeye.decrypted.value = decrypted;
|
|
}
|
|
function do_cg_sign() {
|
|
var n, e, d, p, q, dP, dQ, qInv;
|
|
e = new BigInteger (document.libeye.e.value, 16);
|
|
n = new BigInteger (document.libeye.n.value, 16);
|
|
d = new BigInteger (document.libeye.d.value, 16);
|
|
p = new BigInteger (document.libeye.p.value, 16);
|
|
q = new BigInteger (document.libeye.q.value, 16);
|
|
dP = new BigInteger (document.libeye.dP.value, 16);
|
|
dQ = new BigInteger (document.libeye.dQ.value, 16);
|
|
var privateKey = forge.pki.setRsaPrivateKey(n, e, d, p, q, dP, dQ, qInv);
|
|
|
|
var msg = document.libeye.plaintext.value;
|
|
var encrypted = forge.pki.rsa.encrypt(msg, privateKey, 0x01);
|
|
document.libeye.ciphertext.value = forge.util.bytesToHex(encrypted);
|
|
}
|
|
|
|
function do_loadkeyring() {
|
|
// read json from file
|
|
var reader = new FileReader();
|
|
reader.onload = function(e) {
|
|
var keydata = reader.result;
|
|
}
|
|
}
|
|
|
|
function do_perms() {
|
|
var json = JSON.parse (perms2);
|
|
var perms = new Permissions (perms2);
|
|
console.log (perms.toOrderedString());
|
|
console.log (perms.getPathHash());
|
|
perms = new Permissions (json);
|
|
console.log (perms.getPathHash());
|
|
console.log (perms.getOrderedReferences ('urn:ionu:000000:::'));
|
|
console.log (perms.getSignature ('urn:ionu:000000:::'));
|
|
perms = new Permissions (permissionstoString);
|
|
console.log (perms.getOrderedReferences ('urn:ionu:000000:::'));
|
|
console.log (perms.getSignature ('urn:ionu:000000:::'));
|
|
}
|
|
|
|
function do_savekeyring() {
|
|
var keydata = JSON.stringify(keyring);
|
|
// write json to file, which we can't do from browser so create a download link for user
|
|
|
|
if (window.MSBlobBuilder) { // IE10
|
|
var bb = new MSBlobBuilder();
|
|
bb.append(strData);
|
|
return navigator.msSaveBlob(bb, strFileName);
|
|
}
|
|
//build download link:
|
|
a = document.createElement("a"),
|
|
a.href = "data:application/json,charset=utf-8," + escape(keydata);
|
|
if ('download' in a) { // FireFox, Chrome, Safari and other modern browsers
|
|
a.setAttribute("download", n);
|
|
a.innerHTML = "downloading...";
|
|
document.body.appendChild(a);
|
|
setTimeout(function() {
|
|
var evt = document.createEvent("MouseEvents");
|
|
evt.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
|
|
a.dispatchEvent(evt);
|
|
document.body.removeChild(a);
|
|
}, 66);
|
|
return true;
|
|
}
|
|
|
|
// Else something older do iframe dataURL download
|
|
var iframe = document.createElement("iframe");
|
|
document.body.appendChild(iframe);
|
|
iframe.src = "data:application/json," + escape(strData);
|
|
setTimeout(function() {
|
|
document.body.removeChild(iframe);
|
|
}, 333);
|
|
return true;
|
|
}
|
|
|
|
function loadKeyring(evt) {
|
|
//Retrieve the first (and only!) File from the FileList object
|
|
var file = evt.target.files[0];
|
|
|
|
if (file) {
|
|
var reader = new FileReader();
|
|
reader.onload = function(e) {
|
|
var json = e.target.result;
|
|
var mcf = document.libeye.mcf.value;
|
|
var fields = mcf.split('$');
|
|
var ringkey = forge.util.decode64(fields[3]);
|
|
console.log( "Read " + file.name + " " + file.size + " bytes");
|
|
var keyring = new Keyring (json);
|
|
keyring.unlock (ringkey);
|
|
var key = keyring.getKey ('Office');
|
|
if (key.type === 'RSA') {
|
|
console.log (key.key);
|
|
}
|
|
keyring.lock (ringkey);
|
|
console.log ('hi');
|
|
console.log (keyring.toString());
|
|
console.log ('hi');
|
|
}
|
|
reader.readAsText(file);
|
|
} else {
|
|
console.log("Failed to load file");
|
|
}
|
|
}
|
|
|
|
function loadPEM(evt) {
|
|
//Retrieve the first (and only!) File from the FileList object
|
|
var file = evt.target.files[0];
|
|
|
|
if (file) {
|
|
var reader = new FileReader();
|
|
reader.onload = function(e) {
|
|
var pem = e.target.result;
|
|
console.log( "Read " + file.name + " " + file.size + " bytes");
|
|
var privateKey = forge.pki.privateKeyFromPem(pem);
|
|
var publicKey = forge.pki.rsa.setPublicKey (privateKey.n, privateKey.e);
|
|
var encrypted = publicKey.encrypt('Howdy doooody', 'RSA-OAEP');
|
|
console.log (forge.util.encode64(encrypted));
|
|
var decrypted = privateKey.decrypt(encrypted, 'RSA-OAEP');
|
|
console.log (decrypted);
|
|
}
|
|
reader.readAsText(file);
|
|
} else {
|
|
console.log("Failed to load file");
|
|
}
|
|
var keyring = new Keyring ('ionu_keyring', 'ring');
|
|
console.log (keyring.toString());
|
|
keyring.saveToLocalStorage ();
|
|
console.log (localStorage.ionu_keyring);
|
|
keyring.removeFromLocalStorage ();
|
|
keyring.loadFromLocalStorage ('ionu_keyring');
|
|
}
|
|
|
|
//-->
|
|
</script>
|
|
|
|
<body onLoad='do_init();'>
|
|
<h1>LibEye Key Generation and Encryption</h1>
|
|
|
|
<form name="libeye" onSubmit='do_encrypt();return false;'>
|
|
Password:<br>
|
|
<input name="clearpassword" type="text" value="madman12" size=20>
|
|
<input name="iterations" type="integer" value="2500" size=8>
|
|
<input name="mcf" type="text" value="" size=100>
|
|
<br>
|
|
<input type="button" value="pbkdf2" onClick="do_pbkdf2();">
|
|
<input type="button" value="SlowHash" onClick="do_slowhash();">
|
|
<input type="button" value="FastHash" onClick="do_fasthash();">
|
|
<input type="button" value="Generate" onClick="do_password();">
|
|
<input type="button" value="Provision" onClick="do_provision();">
|
|
<input type="button" value="Perms" onClick="do_perms();"><p>
|
|
Plaintext (string) and iv (hex):<br>
|
|
<input name="iv" type="text" value="" size=48><br>
|
|
<input type="button" value="aes encrypt" onClick="do_aes_encrypt();">
|
|
<input type="button" value="rsa encrypt" onClick="do_rsa_encrypt();">
|
|
<input type="button" value="rsa sign" onClick="do_rsa_sign();">
|
|
<input type="button" value="cg sign" onClick="do_cg_encrypt();">
|
|
<input type="button" value="md5" onClick="do_md5();">
|
|
<input type="button" value="sha1" onClick="do_sha1();">
|
|
<input type="button" value="sha256" onClick="do_sha256();"><p>
|
|
Ciphertext or digest (hex):<br>
|
|
<textarea name="ciphertext" rows=1 cols=80></textarea><br>
|
|
<input type="button" value="aes decrypt" onClick="do_aes_decrypt();">
|
|
<input type="button" value="rsa decrypt" onClick="do_rsa_decrypt();">
|
|
<input type="button" value="rsa verify" onClick="do_rsa_verify();"><p>
|
|
<input type="button" value="cg verify" onClick="do_cg_decrypt();">
|
|
Decrypted Plaintext (string):<br>
|
|
<input name="decrypted" type="text" size=60><p>
|
|
Status:<br>
|
|
<input name="status" type="text" size=60><p>
|
|
<hr>
|
|
<h2>RSA key</h2><p>
|
|
<input type="button" value="Compute Keys" onClick='do_compute_keys();'>
|
|
SL: <input type="file" id="sl">
|
|
Attachment: <input type="file" id="attachfile">
|
|
<input type="button" value="DRBG" onClick='do_drbg();'>
|
|
<input type="button" value="Challenge" onClick='do_genrsa_challenge();'>
|
|
answers = <input name="challenge" type="text" value="SL,Bob,Bob,Bob" size=64><br>
|
|
<input type="button" value="Random" onClick='do_genrsa();'>
|
|
Keyring: <input type="file" id="keyfile">
|
|
PEM: <input type="file" id="pemfile">
|
|
<p>
|
|
Finger Print: <textarea name="fingerprint" type="text" rows=1 cols=60></textarea><p>
|
|
N modulus (hex):<br>
|
|
<textarea name="n" type="text" rows=1 cols=120></textarea><p>
|
|
E public exponent (hex, 65537=0x10001):<br>
|
|
<input name="e" type="text" size=20><p>
|
|
D private exponent (hex):<br>
|
|
<textarea name="d" type="text" rows=1 cols=120></textarea><p>
|
|
P (hex):<br>
|
|
<textarea name="p" type="text" rows=1 cols=120></textarea><p>
|
|
Q (hex):<br>
|
|
<textarea name="q" type="text" rows=1 cols=120></textarea><p>
|
|
D mod (P-1) (hex):<br>
|
|
<textarea name="dP" type="text" rows=1 cols=120></textarea><p>
|
|
D mod (Q-1) (hex):<br>
|
|
<textarea name="dQ" type="text" rows=1 cols=120></textarea><p>
|
|
1/Q mod P (hex):<br>
|
|
<textarea name="qInv" type="text" rows=1 cols=120></textarea>
|
|
</form>
|
|
</body>
|
|
</html>
|
|
|