MCPcopy Index your code
hub / github.com/nodejs/node / testSuccess

Function testSuccess

test/fixtures/wpt/WebCryptoAPI/generateKey/successes.js:68–149  ·  view source on GitHub ↗
(algorithm, extractable, usages, resultType, testTag)

Source from the content-addressed store, hash-verified

66
67 // Test that a given combination of parameters is successful
68 function testSuccess(algorithm, extractable, usages, resultType, testTag) {
69 // algorithm, extractable, and usages are the generateKey parameters
70 // resultType is the expected result, either the CryptoKey object or "CryptoKeyPair"
71 // testTag is a string to prepend to the test name.
72
73 promise_test(function(test) {
74 return subtle.generateKey(algorithm, extractable, usages)
75 .then(function(result) {
76 if (resultType === "CryptoKeyPair") {
77 assert_goodCryptoKey(result.privateKey, algorithm, extractable, usages, "private");
78 assert_goodCryptoKey(result.publicKey, algorithm, true, usages, "public");
79 } else {
80 assert_goodCryptoKey(result, algorithm, extractable, usages, "secret");
81 }
82 return result;
83 }, function(err) {
84 assert_unreached("generateKey threw an unexpected error: " + err.toString());
85 })
86 .then(async function (result) {
87 // TODO: remove this block to enable ML-KEM JWK when its definition is done in IETF JOSE WG
88 if (result.publicKey?.algorithm.name.startsWith('ML-KEM')) {
89 const promises = [
90 subtle.exportKey('spki', result.publicKey),
91 extractable ? subtle.exportKey('pkcs8', result.privateKey) : undefined,
92 subtle.exportKey('raw-public', result.publicKey),
93 ];
94 if (extractable)
95 promises.push(subtle.exportKey('raw-seed', result.privateKey));
96 } else if (resultType === "CryptoKeyPair") {
97 const promises = [
98 subtle.exportKey('jwk', result.publicKey),
99 extractable ? subtle.exportKey('jwk', result.privateKey) : undefined,
100 subtle.exportKey('spki', result.publicKey),
101 extractable ? subtle.exportKey('pkcs8', result.privateKey) : undefined,
102 ];
103
104 switch (result.publicKey.algorithm.name.substring(0, 2)) {
105 case 'ML':
106 promises.push(subtle.exportKey('raw-public', result.publicKey));
107 if (extractable)
108 promises.push(subtle.exportKey('raw-seed', result.privateKey));
109 break;
110 case 'SL':
111 promises.push(subtle.exportKey('raw-public', result.publicKey));
112 if (extractable)
113 promises.push(subtle.exportKey('raw-private', result.privateKey));
114 break;
115 case 'EC':
116 case 'Ed':
117 case 'X2':
118 case 'X4':
119 promises.push(subtle.exportKey('raw', result.publicKey));
120 break;
121 case 'RS':
122 break;
123 default:
124 throw new Error('not implemented');
125 }

Callers

nothing calls this directly

Calls 11

assert_goodCryptoKeyFunction · 0.85
allMethod · 0.80
parameterStringFunction · 0.70
promise_testFunction · 0.50
assert_unreachedFunction · 0.50
assert_equalsFunction · 0.50
thenMethod · 0.45
toStringMethod · 0.45
pushMethod · 0.45
entriesMethod · 0.45
testMethod · 0.45

Tested by

no test coverage detected