Skip to content
crypto-random-values.html 1.05 KiB
Newer Older
<!DOCTYPE html>
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
<script src="resources/utilities.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Tests crypto.randomValues.");

if (!window.ArrayBuffer)
    debug("This test requres ArrayBuffers to run!");

shouldBe("'crypto' in window", "true");
shouldBe("'getRandomValues' in window.crypto", "true");

try {
    // FIXME: 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);
}

</script>
<script src="../resources/js-test-post.js"></script>