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

1 file changed

Lines changed: 36 additions & 5 deletions

File tree

‎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
constassert=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(constnameof['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
constallkeys=awaitPromise.all(parameters.map(async(params)=>{
191204
constusages='usages'inparams ?
192205
params.usages :
@@ -220,10 +233,28 @@ async function generateKeysToWrap() {
220233
}
221234

222235
functiongetFormats(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)