services/crypto/tests/unit/test_crypto_random.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:bf36169b8a42
1 let WeaveCryptoModule = Cu.import("resource://services-crypto/WeaveCrypto.js");
2
3 let cryptoSvc = new WeaveCrypto();
4
5 function run_test() {
6 if (this.gczeal) {
7 _("Running crypto random tests with gczeal(2).");
8 gczeal(2);
9 }
10
11 // Test salt generation.
12 var salt;
13
14 salt = cryptoSvc.generateRandomBytes(0);
15 do_check_eq(salt.length, 0);
16 salt = cryptoSvc.generateRandomBytes(1);
17 do_check_eq(salt.length, 4);
18 salt = cryptoSvc.generateRandomBytes(2);
19 do_check_eq(salt.length, 4);
20 salt = cryptoSvc.generateRandomBytes(3);
21 do_check_eq(salt.length, 4);
22 salt = cryptoSvc.generateRandomBytes(4);
23 do_check_eq(salt.length, 8);
24 salt = cryptoSvc.generateRandomBytes(8);
25 do_check_eq(salt.length, 12);
26
27 // sanity check to make sure salts seem random
28 var salt2 = cryptoSvc.generateRandomBytes(8);
29 do_check_eq(salt2.length, 12);
30 do_check_neq(salt, salt2);
31
32 salt = cryptoSvc.generateRandomBytes(1024);
33 do_check_eq(salt.length, 1368);
34 salt = cryptoSvc.generateRandomBytes(16);
35 do_check_eq(salt.length, 24);
36
37
38 // Test random key generation
39 var keydata, keydata2, iv;
40
41 keydata = cryptoSvc.generateRandomKey();
42 do_check_eq(keydata.length, 44);
43 keydata2 = cryptoSvc.generateRandomKey();
44 do_check_neq(keydata, keydata2); // sanity check for randomness
45 iv = cryptoSvc.generateRandomIV();
46 do_check_eq(iv.length, 24);
47
48 cryptoSvc.algorithm = WeaveCryptoModule.AES_256_CBC;
49 keydata = cryptoSvc.generateRandomKey();
50 do_check_eq(keydata.length, 44);
51 keydata2 = cryptoSvc.generateRandomKey();
52 do_check_neq(keydata, keydata2); // sanity check for randomness
53 iv = cryptoSvc.generateRandomIV();
54 do_check_eq(iv.length, 24);
55
56 if (this.gczeal)
57 gczeal(0);
58 }

mercurial