mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
58b70d2360
Register a fake AppInfo with correct OS if it doesn't exist yet. Just use Svc.Crypto instead of trying to dynamically pick the contract id. Name the head files so they load in appinfo -> helper -> http order. --HG-- rename : services/sync/tests/unit/bookmark_setup.js => services/sync/tests/unit/head_appinfo.js rename : services/sync/tests/unit/head_first.js => services/sync/tests/unit/head_helpers.js
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_eq(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);
|
|
|
|
|
|
}
|