tor-browser

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

derived_bits_length.js (2011B)


      1 function define_tests() {
      2    // May want to test prefixed implementations.
      3    var subtle = self.crypto.subtle;
      4 
      5    Object.keys(testCases).forEach(algorithm => {
      6        let testData = algorithms[algorithm];
      7        testCases[algorithm].forEach(testParam => {
      8            promise_test(async() => {
      9                let derivedBits, privateKey, publicKey;
     10                try {
     11                    privateKey = await subtle.importKey(testData.privateKey.format, testData.privateKey.data, testData.importAlg, false, ["deriveBits"]);
     12                    if (testData.deriveAlg.public !== undefined) {
     13                        publicKey = await subtle.importKey(testData.publicKey.format, testData.publicKey.data, testData.importAlg, false, []);
     14                        testData.deriveAlg.public = publicKey;
     15                    }
     16                    if (testParam.length === "omitted")
     17                        derivedBits = await subtle.deriveBits(testData.deriveAlg, privateKey);
     18                    else
     19                        derivedBits = await subtle.deriveBits(testData.deriveAlg, privateKey, testParam.length);
     20                    if (testParam.expected === undefined) {
     21                        assert_unreached("deriveBits should have thrown an OperationError exception.");
     22                    }
     23                    assert_array_equals(new Uint8Array(derivedBits), testParam.expected, "Derived bits do not match the expected result.");
     24                } catch (err) {
     25                    if (err instanceof AssertionError || testParam.expected !== undefined) {
     26                        throw err;
     27                    }
     28                    assert_true(privateKey !== undefined, "Key should be valid.");
     29                    assert_equals(err.name, "OperationError", "deriveBits correctly threw OperationError: " + err.message);
     30                }
     31            }, algorithm + " derivation with " + testParam.length + " as 'length' parameter");
     32        });
     33    });
     34 
     35    return Promise.resolve("define_tests");
     36 }