test_crypto_random.js (1487B)
1 const { WeaveCrypto } = ChromeUtils.importESModule( 2 "moz-src:///services/crypto/modules/WeaveCrypto.sys.mjs" 3 ); 4 5 var cryptoSvc = new WeaveCrypto(); 6 7 add_task(async function test_crypto_random() { 8 if (this.gczeal) { 9 _("Running crypto random tests with gczeal(2)."); 10 gczeal(2); 11 } 12 13 // Test salt generation. 14 var salt; 15 16 salt = cryptoSvc.generateRandomBytes(0); 17 Assert.equal(salt.length, 0); 18 salt = cryptoSvc.generateRandomBytes(1); 19 Assert.equal(salt.length, 4); 20 salt = cryptoSvc.generateRandomBytes(2); 21 Assert.equal(salt.length, 4); 22 salt = cryptoSvc.generateRandomBytes(3); 23 Assert.equal(salt.length, 4); 24 salt = cryptoSvc.generateRandomBytes(4); 25 Assert.equal(salt.length, 8); 26 salt = cryptoSvc.generateRandomBytes(8); 27 Assert.equal(salt.length, 12); 28 29 // sanity check to make sure salts seem random 30 var salt2 = cryptoSvc.generateRandomBytes(8); 31 Assert.equal(salt2.length, 12); 32 Assert.notEqual(salt, salt2); 33 34 salt = cryptoSvc.generateRandomBytes(1024); 35 Assert.equal(salt.length, 1368); 36 salt = cryptoSvc.generateRandomBytes(16); 37 Assert.equal(salt.length, 24); 38 39 // Test random key generation 40 var keydata, keydata2, iv; 41 42 keydata = await cryptoSvc.generateRandomKey(); 43 Assert.equal(keydata.length, 44); 44 keydata2 = await cryptoSvc.generateRandomKey(); 45 Assert.notEqual(keydata, keydata2); // sanity check for randomness 46 iv = cryptoSvc.generateRandomIV(); 47 Assert.equal(iv.length, 24); 48 49 if (this.gczeal) { 50 gczeal(0); 51 } 52 });