In the Forge Javascript cryptographic library , I find it difficult to determine how to recover the private and public keys after I used them. I tried to do the following:
var rsa = forge.pki.rsa; var keypair = rsa.generateKeyPair({bits: 2048, e: 0x10001}); var ct = keypair.publicKey.encrypt("Arbitrary Message Here"); keypair.privateKey.decrypt(ct);
What outputs: "Arbitrary Message Here" , as expected. I tried to recover the public key as follows:
var nVal = JSON.stringify(keypair.publicKey.n); var eVal = JSON.stringify(keypair.publicKey.e); var nwRsa = rsa.setPublicKey(JSON.parse(nHere), JSON.parse(eHere)); var nwCt = nwRsa.encrypt("Arbitrary Message Here");
When I try to encrypt the message again, I get the error message:
"TypeError: Object #<Object> has no method 'bitLength'"
I'm not sure why, although I suppose I used the method correctly:
pki.setRsaPublicKey = pki.rsa.setPublicKey = function(n, e) { var key = { n: n, e: e };
And I didn’t even try to recover the private key. I'm not sure what I'm doing right, can someone help me? As always in advance!
Optional Afterthough: here are the files that I import on my html page, I believe that I solved all the problems with the dependencies, but just in case (beware, they are not in alphabetical order, but in the order of dependency):
<script src="forge/util.js"></script> <script src="forge/debug.js"></script> <script src="forge/jsbn.js"></script> <script src="forge/oids.js"></script> <script src="forge/asn1.js"></script> <script src="forge/sha1.js"></script> <script src="forge/sha256.js"></script> <script src="forge/md5.js"></script> <script src="forge/md.js"></script> <script src="forge/aes.js"></script> <script src="forge/prng.js"></script> <script src="forge/random.js"></script> <script src="forge/jsbn.js"></script> <script src="forge/pkcs1.js"></script> <script src="forge/rsa.js"></script> <script src="forge/des.js"></script> <script src="forge/rc2.js"></script> <script src="forge/pbe.js"></script> <script src="forge/pem.js"></script> <script src="forge/hmac.js"></script> <script src="forge/pbkdf2.js"></script> <script src="forge/pkcs7asn1.js"></script> <script src="forge/pkcs12.js"></script> <script src="forge/pss.js"></script> <script src="forge/mgf1.js"></script> <script src="forge/mgf.js"></script> <script src="forge/x509.js"></script> <script src="forge/pki.js"></script>
TL; DR: In Forge, how to give your public key to someone else and how to store your private key for several purposes?