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

Function run_test

test/fixtures/wpt/WebCryptoAPI/generateKey/successes.js:2–165  ·  view source on GitHub ↗
(algorithmNames, slowTest)

Source from the content-addressed store, hash-verified

1
2function run_test(algorithmNames, slowTest) {
3 var subtle = crypto.subtle; // Change to test prefixed implementations
4
5 setup({explicit_timeout: true});
6
7// These tests check that generateKey successfully creates keys
8// when provided any of a wide set of correct parameters
9// and that they can be exported afterwards.
10//
11// There are a lot of combinations of possible parameters,
12// resulting in a very large number of tests
13// performed.
14
15
16// Setup: define the correct behaviors that should be sought, and create
17// helper functions that generate all possible test parameters for
18// different situations.
19
20 var allTestVectors = [ // Parameters that should work for generateKey
21 {name: "AES-CTR", resultType: CryptoKey, usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: []},
22 {name: "AES-CBC", resultType: CryptoKey, usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: []},
23 {name: "AES-GCM", resultType: CryptoKey, usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: []},
24 {name: "AES-OCB", resultType: CryptoKey, usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: []},
25 {name: "ChaCha20-Poly1305", resultType: CryptoKey, usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: []},
26 {name: "AES-KW", resultType: CryptoKey, usages: ["wrapKey", "unwrapKey"], mandatoryUsages: []},
27 {name: "HMAC", resultType: CryptoKey, usages: ["sign", "verify"], mandatoryUsages: []},
28 {name: "RSASSA-PKCS1-v1_5", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
29 {name: "RSA-PSS", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
30 {name: "RSA-OAEP", resultType: "CryptoKeyPair", usages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"], mandatoryUsages: ["decrypt", "unwrapKey"]},
31 {name: "ECDSA", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
32 {name: "ECDH", resultType: "CryptoKeyPair", usages: ["deriveKey", "deriveBits"], mandatoryUsages: ["deriveKey", "deriveBits"]},
33 {name: "Ed25519", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
34 {name: "Ed448", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
35 {name: "ML-DSA-44", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
36 {name: "ML-DSA-65", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
37 {name: "ML-DSA-87", resultType: "CryptoKeyPair", usages: ["sign", "verify"], mandatoryUsages: ["sign"]},
38 {name: "ML-KEM-512", resultType: "CryptoKeyPair", usages: ["decapsulateBits", "decapsulateKey", "encapsulateBits", "encapsulateKey"], mandatoryUsages: ["decapsulateBits", "decapsulateKey"]},
39 {name: "ML-KEM-768", resultType: "CryptoKeyPair", usages: ["decapsulateBits", "decapsulateKey", "encapsulateBits", "encapsulateKey"], mandatoryUsages: ["decapsulateBits", "decapsulateKey"]},
40 {name: "ML-KEM-1024", resultType: "CryptoKeyPair", usages: ["decapsulateBits", "decapsulateKey", "encapsulateBits", "encapsulateKey"], mandatoryUsages: ["decapsulateBits", "decapsulateKey"]},
41 {name: "X25519", resultType: "CryptoKeyPair", usages: ["deriveKey", "deriveBits"], mandatoryUsages: ["deriveKey", "deriveBits"]},
42 {name: "X448", resultType: "CryptoKeyPair", usages: ["deriveKey", "deriveBits"], mandatoryUsages: ["deriveKey", "deriveBits"]},
43 {name: "KMAC128", resultType: CryptoKey, usages: ["sign", "verify"], mandatoryUsages: []},
44 {name: "KMAC256", resultType: CryptoKey, usages: ["sign", "verify"], mandatoryUsages: []},
45 ];
46
47 var testVectors = [];
48 if (algorithmNames && !Array.isArray(algorithmNames)) {
49 algorithmNames = [algorithmNames];
50 };
51 allTestVectors.forEach(function(vector) {
52 if (!algorithmNames || algorithmNames.includes(vector.name)) {
53 testVectors.push(vector);
54 }
55 });
56
57 function parameterString(algorithm, extractable, usages) {
58 var result = "(" +
59 objectToString(algorithm) + ", " +
60 objectToString(extractable) + ", " +

Callers

nothing calls this directly

Calls 8

allNameVariantsFunction · 0.85
allValidUsagesFunction · 0.85
subsetTestFunction · 0.85
includesMethod · 0.80
forEachMethod · 0.65
setupFunction · 0.50
pushMethod · 0.45

Tested by

no test coverage detected