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