mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
1df3de932f
Check for both 1624 and 1644 length private keys.
65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
Cu.import("resource://services-sync/util.js");
|
|
|
|
function run_test() {
|
|
let cryptoSvc = Svc.Crypto;
|
|
|
|
var salt = cryptoSvc.generateRandomBytes(16);
|
|
do_check_eq(salt.length, 24);
|
|
|
|
var iv = cryptoSvc.generateRandomIV();
|
|
do_check_eq(iv.length, 24);
|
|
|
|
var symKey = cryptoSvc.generateRandomKey();
|
|
do_check_eq(symKey.length, 44);
|
|
|
|
|
|
// Tests with a 2048 bit key (the default)
|
|
do_check_eq(cryptoSvc.keypairBits, 2048)
|
|
|
|
var pubOut = {};
|
|
var privOut = {};
|
|
cryptoSvc.generateKeypair("my passphrase", salt, iv, pubOut, privOut);
|
|
var pubKey = pubOut.value;
|
|
var privKey = privOut.value;
|
|
do_check_true(!!pubKey);
|
|
do_check_true(!!privKey);
|
|
do_check_eq(pubKey.length, 392);
|
|
do_check_true(privKey.length == 1624 || privKey.length == 1644);
|
|
|
|
// do some key wrapping
|
|
var wrappedKey = cryptoSvc.wrapSymmetricKey(symKey, pubKey);
|
|
do_check_eq(wrappedKey.length, 344);
|
|
|
|
var unwrappedKey = cryptoSvc.unwrapSymmetricKey(wrappedKey, privKey,
|
|
"my passphrase", salt, iv);
|
|
do_check_eq(unwrappedKey.length, 44);
|
|
|
|
// The acid test... Is our unwrapped key the same thing we started with?
|
|
do_check_eq(unwrappedKey, symKey);
|
|
|
|
|
|
// Tests with a 1024 bit key
|
|
cryptoSvc.keypairBits = 1024;
|
|
do_check_eq(cryptoSvc.keypairBits, 1024)
|
|
|
|
cryptoSvc.generateKeypair("my passphrase", salt, iv, pubOut, privOut);
|
|
var pubKey = pubOut.value;
|
|
var privKey = privOut.value;
|
|
do_check_true(!!pubKey);
|
|
do_check_true(!!privKey);
|
|
do_check_eq(pubKey.length, 216);
|
|
do_check_eq(privKey.length, 856);
|
|
|
|
// do some key wrapping
|
|
wrappedKey = cryptoSvc.wrapSymmetricKey(symKey, pubKey);
|
|
do_check_eq(wrappedKey.length, 172);
|
|
unwrappedKey = cryptoSvc.unwrapSymmetricKey(wrappedKey, privKey,
|
|
"my passphrase", salt, iv);
|
|
do_check_eq(unwrappedKey.length, 44);
|
|
|
|
// The acid test... Is our unwrapped key the same thing we started with?
|
|
do_check_eq(unwrappedKey, symKey);
|
|
|
|
|
|
}
|