PR-URL: https://github.com/nodejs/node/pull/63417 Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
55 lines
2.3 KiB
JavaScript
55 lines
2.3 KiB
JavaScript
function run_test(vectors) {
|
|
function testCryptoKeySerialization(
|
|
generateKeyAlgorithm, generateKeyUsages, exportFormat) {
|
|
promise_test(async t => {
|
|
var cryptoKey = await crypto.subtle.generateKey(
|
|
generateKeyAlgorithm, true, generateKeyUsages);
|
|
const keyExported =
|
|
await crypto.subtle.exportKey(exportFormat, cryptoKey);
|
|
|
|
const {key} = structuredClone({key: cryptoKey});
|
|
const newKeyExported =
|
|
await crypto.subtle.exportKey(exportFormat, key);
|
|
assert_true(equalBuffers(keyExported, newKeyExported));
|
|
}, 'serialization test ' + objectToString(generateKeyAlgorithm));
|
|
};
|
|
|
|
function testCryptoKeyPairSerialization(
|
|
generateKeyAlgorithm, generateKeyUsages, publicExportFormat,
|
|
privateExportFormat) {
|
|
promise_test(async t => {
|
|
var keyPair = await crypto.subtle.generateKey(
|
|
generateKeyAlgorithm, true, generateKeyUsages);
|
|
const publicKeyExported =
|
|
await crypto.subtle.exportKey(publicExportFormat, keyPair.publicKey);
|
|
const privateKeyExported = await crypto.subtle.exportKey(
|
|
privateExportFormat, keyPair.privateKey);
|
|
|
|
const {publicKey, privateKey} = structuredClone(
|
|
{publicKey: keyPair.publicKey, privateKey: keyPair.privateKey});
|
|
const newPublicKeyExported =
|
|
await crypto.subtle.exportKey(publicExportFormat, publicKey);
|
|
assert_true(equalBuffers(publicKeyExported, newPublicKeyExported));
|
|
const newPrivateKeyExported = await crypto.subtle.exportKey(
|
|
privateExportFormat, privateKey);
|
|
assert_true(equalBuffers(privateKeyExported, newPrivateKeyExported));
|
|
}, 'serialization test ' + objectToString(generateKeyAlgorithm));
|
|
};
|
|
|
|
vectors.forEach(function(vector) {
|
|
if (vector.resultType === 'CryptoKey') {
|
|
allAlgorithmSpecifiersFor(vector.name)
|
|
.forEach(function(generateKeyAlgorithm) {
|
|
testCryptoKeySerialization(
|
|
generateKeyAlgorithm, vector.usages, vector.exportFormat);
|
|
});
|
|
} else {
|
|
allAlgorithmSpecifiersFor(vector.name)
|
|
.forEach(function(generateKeyAlgorithm) {
|
|
testCryptoKeyPairSerialization(
|
|
generateKeyAlgorithm, vector.usages, vector.publicFormat,
|
|
vector.privateFormat);
|
|
});
|
|
}
|
|
});
|
|
}
|