blob: 421ee1d3803f26899d9e8cb00eea9bc0b8bcf198 [file] [log] [blame]
if (self.importScripts)
importScripts('../../resources/js-test.js');
description("Tests crypto.randomValues.");
if (!self.ArrayBuffer)
debug("This test requres ArrayBuffers to run!");
shouldBe("'crypto' in self", "true");
shouldBe("'getRandomValues' in self.crypto", "true");
// Although the spec defines Crypto in terms of "RandomSource", it is NOT
// inheritance. The RandomSource interface should not be visible to
// javascript.
shouldBe("self.crypto.__proto__.hasOwnProperty('getRandomValues')", "true");
try {
// NOTE: This test is flaky. If we ran this test every second since the
// beginning of the universe, on average, it would have failed
// 2^{-748} times.
var reference = new Uint8Array(100);
var sample = new Uint8Array(100);
crypto.getRandomValues(reference);
crypto.getRandomValues(sample);
var matchingBytes = 0;
for (var i = 0; i < reference.length; i++) {
if (reference[i] == sample[i])
matchingBytes++;
}
shouldBe("matchingBytes < 100", "true");
} catch(ex) {
debug(ex);
}
finishJSTest();