89 lines
2.2 KiB
JavaScript
89 lines
2.2 KiB
JavaScript
|
|
unittests.register("Packet testing", function() {
|
|
|
|
var tests = [function() {
|
|
|
|
var literal = new openpgp_packet_literal();
|
|
literal.set_data('Hello world', openpgp_packet_literal.format.utf8);
|
|
|
|
var enc = new openpgp_packet_symmetrically_encrypted();
|
|
enc.data.push(literal);
|
|
|
|
var key = '12345678901234567890123456789012',
|
|
algo = openpgp.symmetric.aes256;
|
|
|
|
enc.encrypt(algo, key);
|
|
|
|
var message = new openpgp_packetlist();
|
|
message.push(enc);
|
|
|
|
|
|
var msg2 = new openpgp_packetlist();
|
|
msg2.read(message.write());
|
|
|
|
msg2.packets[0].decrypt(algo, key);
|
|
|
|
return new test_result('Symmetrically encrypted data packet',
|
|
msg2.packets[0].data.packets[0].data == literal.data);
|
|
}, function() {
|
|
var key = '12345678901234567890123456789012',
|
|
algo = openpgp.symmetric.aes256;
|
|
|
|
var literal = new openpgp_packet_literal(),
|
|
enc = new openpgp_packet_sym_encrypted_integrity_protected(),
|
|
msg = new openpgp_packetlist();
|
|
|
|
literal.set_data('Hello world!', openpgp_packet_literal.format.utf8);
|
|
enc.data.push(literal);
|
|
enc.encrypt(algo, key);
|
|
msg.push(enc);
|
|
|
|
var msg2 = new openpgp_packetlist();
|
|
msg2.read(msg.write());
|
|
|
|
msg2.packets[0].decrypt(algo, key);
|
|
|
|
return new test_result('Sym. encrypted integrity protected data packet',
|
|
msg2.packets[0].data.packets[0].data == literal.data);
|
|
|
|
}, function() {
|
|
|
|
var msg =
|
|
'-----BEGIN PGP MESSAGE-----\n' +
|
|
'Version: GnuPG v2.0.19 (GNU/Linux)\n' +
|
|
'\n' +
|
|
'jA0ECQMCpo7I8WqsebTJ0koBmm6/oqdHXJU9aPe+Po+nk/k4/PZrLmlXwz2lhqBg\n' +
|
|
'GAlY9rxVStLBrg0Hn+5gkhyHI9B85rM1BEYXQ8pP5CSFuTwbJ3O2s67dzQ==\n' +
|
|
'=VZ0/\n' +
|
|
'-----END PGP MESSAGE-----';
|
|
|
|
|
|
|
|
var msgbytes = openpgp_encoding_deArmor(msg).openpgp;
|
|
|
|
var parsed = new openpgp_packetlist();
|
|
parsed.read(msgbytes);
|
|
|
|
parsed.packets[0].decrypt('test');
|
|
|
|
var key = parsed.packets[0].key;
|
|
parsed.packets[1].decrypt(parsed.packets[0].algorithm, key);
|
|
var compressed = parsed.packets[1].data.packets[0];
|
|
compressed.decompress();
|
|
|
|
var result = compressed.data.packets[0].data;
|
|
|
|
return new test_result('Sym encrypted session key with a compressed packet',
|
|
result == 'Hello world!\n');
|
|
}];
|
|
|
|
var results = [];
|
|
|
|
for(var i in tests) {
|
|
results.push(tests[i]());
|
|
}
|
|
|
|
|
|
return results;
|
|
});
|