tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });