Skip to content

Commit 16afd10

Browse files
panvatargos
authored andcommitted
test: add Web Cryptography wrap/unwrap vectors
PR-URL: #59365 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ethan Arrowood <ethan@arrowood.dev> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
1 parent a6a31cb commit 16afd10

File tree

1 file changed

+36
-5
lines changed

1 file changed

+36
-5
lines changed

test/parallel/test-webcrypto-wrap-unwrap.js

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ const common = require('../common');
55
if (!common.hasCrypto)
66
common.skip('missing crypto');
77

8+
const { hasOpenSSL } = require('../common/crypto');
9+
810
const assert = require('assert');
911
const { subtle } = globalThis.crypto;
1012

@@ -187,6 +189,17 @@ async function generateKeysToWrap() {
187189
},
188190
];
189191

192+
if (hasOpenSSL(3, 5)) {
193+
for (const name of ['ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']) {
194+
parameters.push({
195+
algorithm: { name },
196+
privateUsages: ['sign'],
197+
publicUsages: ['verify'],
198+
pair: true,
199+
});
200+
}
201+
}
202+
190203
const allkeys = await Promise.all(parameters.map(async (params) => {
191204
const usages = 'usages' in params ?
192205
params.usages :
@@ -220,10 +233,28 @@ async function generateKeysToWrap() {
220233
}
221234

222235
function getFormats(key) {
223-
switch (key.key.type) {
224-
case 'secret': return ['raw', 'jwk'];
225-
case 'public': return ['spki', 'jwk'];
226-
case 'private': return ['pkcs8', 'jwk'];
236+
switch (key.type) {
237+
case 'secret': {
238+
return ['raw-secret', 'raw', 'jwk'];
239+
};
240+
case 'public': {
241+
switch (key.algorithm.name.slice(0, 2)) {
242+
case 'EC': // ECDSA, ECDH
243+
return ['spki', 'jwk', 'raw', 'raw-public'];
244+
case 'ML': // ML-DSA
245+
return ['jwk', 'raw-public'];
246+
default:
247+
return ['spki', 'jwk'];
248+
}
249+
}
250+
case 'private': {
251+
switch (key.algorithm.name.slice(0, 2)) {
252+
case 'ML': // ML-DSA
253+
return ['jwk', 'raw-seed'];
254+
default:
255+
return ['pkcs8', 'jwk'];
256+
}
257+
}
227258
}
228259
}
229260

@@ -285,7 +316,7 @@ function testWrapping(name, keys) {
285316
} = kWrappingData[name];
286317

287318
keys.forEach((key) => {
288-
getFormats(key).forEach((format) => {
319+
getFormats(key.key).forEach((format) => {
289320
variations.push(testWrap(wrappingKey, unwrappingKey, key, wrap, format));
290321
});
291322
});

0 commit comments

Comments
 (0)