MCPcopy Create free account
hub / github.com/nodejs/node / runTests

Function runTests

test/fixtures/wpt/WebCryptoAPI/import_export/symmetric_importKey.js:5–190  ·  view source on GitHub ↗
(algorithmName)

Source from the content-addressed store, hash-verified

3
4
5function runTests(algorithmName) {
6 var subtle = crypto.subtle;
7
8 // keying material for algorithms that can use any bit string.
9 var rawKeyData = [
10 new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]),
11 new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
12 17, 18, 19, 20, 21, 22, 23, 24]),
13 new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
14 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32])
15 ];
16
17 // combinations of algorithms, usages, parameters, and formats to test
18 var testVectors = [
19 {name: "AES-CTR", legalUsages: ["encrypt", "decrypt"], extractable: [true, false], formats: ["raw", "jwk"]},
20 {name: "AES-CBC", legalUsages: ["encrypt", "decrypt"], extractable: [true, false], formats: ["raw", "jwk"]},
21 {name: "AES-GCM", legalUsages: ["encrypt", "decrypt"], extractable: [true, false], formats: ["raw", "jwk"]},
22 {name: "AES-KW", legalUsages: ["wrapKey", "unwrapKey"], extractable: [true, false], formats: ["raw", "jwk"]},
23 {name: "HMAC", hash: "SHA-1", legalUsages: ["sign", "verify"], extractable: [true, false], formats: ["raw", "jwk"]},
24 {name: "HMAC", hash: "SHA-256", legalUsages: ["sign", "verify"], extractable: [true, false], formats: ["raw", "jwk"]},
25 {name: "HMAC", hash: "SHA-384", legalUsages: ["sign", "verify"], extractable: [true, false], formats: ["raw", "jwk"]},
26 {name: "HMAC", hash: "SHA-512", legalUsages: ["sign", "verify"], extractable: [true, false], formats: ["raw", "jwk"]},
27 {name: "HKDF", legalUsages: ["deriveBits", "deriveKey"], extractable: [false], formats: ["raw"]},
28 {name: "PBKDF2", legalUsages: ["deriveBits", "deriveKey"], extractable: [false], formats: ["raw"]},
29 {name: "Argon2i", legalUsages: ["deriveBits", "deriveKey"], extractable: [false], formats: ["raw-secret"]},
30 {name: "Argon2d", legalUsages: ["deriveBits", "deriveKey"], extractable: [false], formats: ["raw-secret"]},
31 {name: "Argon2id", legalUsages: ["deriveBits", "deriveKey"], extractable: [false], formats: ["raw-secret"]},
32 {name: "AES-OCB", legalUsages: ["encrypt", "decrypt"], extractable: [true, false], formats: ["raw-secret", "jwk"]},
33 {name: "ChaCha20-Poly1305", legalUsages: ["encrypt", "decrypt"], extractable: [true, false], formats: ["raw-secret", "jwk"]},
34 {name: "KMAC128", legalUsages: ["sign", "verify"], extractable: [true, false], formats: ["raw-secret", "jwk"]},
35 {name: "KMAC256", legalUsages: ["sign", "verify"], extractable: [true, false], formats: ["raw-secret", "jwk"]},
36 ];
37
38
39
40 // TESTS ARE HERE:
41 // Test every test vector, along with all available key data
42 testVectors.filter(({ name }) => name === algorithmName).forEach(function(vector) {
43 var algorithm = {name: vector.name};
44 if ("hash" in vector) {
45 algorithm.hash = vector.hash;
46 }
47
48 rawKeyData.forEach(function(keyData) {
49 if (vector.name === 'ChaCha20-Poly1305' && keyData.byteLength !== 32) return;
50 // Try each legal value of the extractable parameter
51 vector.extractable.forEach(function(extractable) {
52 vector.formats.forEach(function(format) {
53 var data = keyData;
54 if (format === "jwk") {
55 data = jwkData(keyData, algorithm);
56 }
57 // Generate all combinations of valid usages for testing
58 allValidUsages(vector.legalUsages).forEach(function(usages) {
59 testFormat(format, algorithm, data, keyData.length * 8, usages, extractable);
60 });
61 testEmptyUsages(format, algorithm, data, keyData.length * 8, extractable);
62

Callers

nothing calls this directly

Calls 7

allValidUsagesFunction · 0.85
jwkDataFunction · 0.70
testFormatFunction · 0.70
testEmptyUsagesFunction · 0.70
forEachMethod · 0.65
filterMethod · 0.65

Tested by

no test coverage detected