var unit = require('../unit.js'); unit.register("Encryption/decryption", function() { var openpgp = require('../../'); var keyring = require('../../src/openpgp.keyring.js'); var result = []; var key = openpgp.generateKeyPair(openpgp.enums.publicKey.rsa_encrypt_sign, 512, 'Test McTestington ', 'hello world'); var info = '\npassphrase: ' + passphrase + '\n' + 'userid: ' + userid + '\n' + 'message: ' + message; if(!priv_key.decryptSecretMPIs(passphrase)) { return new test_result('Generating a decryptable private key failed' + info, false); } var encrypted = openpgp.write_signed_and_encrypted_message(priv_key, pub_key, message); openpgp.keyring.importPublicKey(key.publicKeyArmored) var msg = openpgp.read_message(encrypted); var keymat = null; var sesskey = null; // Find the private (sub)key for the session key of the message for (var i = 0; i< msg[0].sessionKeys.length; i++) { if (priv_key.privateKeyPacket.publicKey.getKeyId() == msg[0].sessionKeys[i].keyId.bytes) { keymat = { key: priv_key, keymaterial: priv_key.privateKeyPacket}; sesskey = msg[0].sessionKeys[i]; break; } for (var j = 0; j < priv_key.subKeys.length; j++) { if (priv_key.subKeys[j].publicKey.getKeyId() == msg[0].sessionKeys[i].keyId.bytes) { keymat = { key: priv_key, keymaterial: priv_key.subKeys[j]}; sesskey = msg[0].sessionKeys[i]; break; } } } var decrypted = ''; if (keymat !== null) { if (!keymat.keymaterial.decryptSecretMPIs(passphrase)) { return new test_result("Password for secrect key was incorrect!", + info, false); } decrypted = msg[0].decrypt(keymat, sesskey); } else { return new test_result("No private key found!" + info, false); } result.push(new test_result(message + ' == ' + decrypted + info, message == decrypted)); //result.push(test('password', 'Test McTestington ', 'hello world')); //result.push(test('●●●●', '♔♔♔♔ ', 'łäóć')); return result; });