3
Components.utils.import("resource://services-crypto/WeaveCrypto.js");
4
cryptoSvc = new WeaveCrypto();
6
// Fallback to binary WeaveCrypto
7
cryptoSvc = Cc["@labs.mozilla.com/Weave/Crypto;1"]
8
.getService(Ci.IWeaveCrypto);
13
_("Running crypto random tests with gczeal(2).");
17
// Test salt generation.
20
salt = cryptoSvc.generateRandomBytes(0);
21
do_check_eq(salt.length, 0);
22
salt = cryptoSvc.generateRandomBytes(1);
23
do_check_eq(salt.length, 4);
24
salt = cryptoSvc.generateRandomBytes(2);
25
do_check_eq(salt.length, 4);
26
salt = cryptoSvc.generateRandomBytes(3);
27
do_check_eq(salt.length, 4);
28
salt = cryptoSvc.generateRandomBytes(4);
29
do_check_eq(salt.length, 8);
30
salt = cryptoSvc.generateRandomBytes(8);
31
do_check_eq(salt.length, 12);
33
// sanity check to make sure salts seem random
34
var salt2 = cryptoSvc.generateRandomBytes(8);
35
do_check_eq(salt2.length, 12);
36
do_check_neq(salt, salt2);
38
salt = cryptoSvc.generateRandomBytes(1024);
39
do_check_eq(salt.length, 1368);
40
salt = cryptoSvc.generateRandomBytes(16);
41
do_check_eq(salt.length, 24);
44
// Test random key generation
45
var keydata, keydata2, iv;
47
keydata = cryptoSvc.generateRandomKey();
48
do_check_eq(keydata.length, 44);
49
keydata2 = cryptoSvc.generateRandomKey();
50
do_check_neq(keydata, keydata2); // sanity check for randomness
51
iv = cryptoSvc.generateRandomIV();
52
do_check_eq(iv.length, 24);
54
cryptoSvc.algorithm = Ci.IWeaveCrypto.AES_256_CBC;
55
keydata = cryptoSvc.generateRandomKey();
56
do_check_eq(keydata.length, 44);
57
keydata2 = cryptoSvc.generateRandomKey();
58
do_check_neq(keydata, keydata2); // sanity check for randomness
59
iv = cryptoSvc.generateRandomIV();
60
do_check_eq(iv.length, 24);