mirror of
https://github.com/nodejs/node.git
synced 2026-10-28 10:15:07 +08:00
Delete test-crypto-ecb.js, which can no longer run anywhere: Blowfish is available only from OpenSSL's legacy provider and is absent from BoringSSL. The addon and cctest version guards become OPENSSL_IS_BORINGSSL checks. Remove legacy digest-alias coverage and unreachable OpenSSL 1.x branches. JavaScript test and benchmark gates, skip reasons, and TLS error expectations that distinguished OpenSSL 1.x from provider-backed OpenSSL now distinguish BoringSSL, including PKCS12 parsing, named DH groups, private-key serialization, RSA-PSS parameters, consolidated provider caches, FIPS availability, and empty KMAC output. Keep the CCM alternate finalization error only for BoringSSL. Provider-only test skips use version-neutral terminology or state the actual minimum OpenSSL version. Signed-off-by: Filip Skokan <panva.ip@gmail.com> Assisted-by: Codex PR-URL: https://github.com/nodejs/node/pull/64777 Fixes: https://github.com/nodejs/node/issues/56733 Refs: https://github.com/nodejs/node/pull/64211 Refs: https://github.com/nodejs/node/pull/63966 Refs: https://github.com/nodejs/node/pull/53329 Refs: https://github.com/nodejs/node/pull/48950 Refs: https://github.com/nodejs/node/issues/45465 Refs: https://github.com/nodejs/node/issues/42827 Refs: https://github.com/nodejs/node/issues/47076 Refs: https://github.com/nodejs/node/pull/62862 Refs: https://github.com/nodejs/node/pull/38512 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Richard Lau <richard.lau@ibm.com> Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
68 lines
1.4 KiB
JavaScript
68 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
|
|
const assert = require('assert');
|
|
const { hasFIPS, isBoringSSL } = require('../common/crypto');
|
|
const { subtle } = globalThis.crypto;
|
|
const fips3 = hasFIPS(3);
|
|
|
|
async function test(
|
|
algorithmName,
|
|
keyLength,
|
|
ivLength,
|
|
format = 'raw',
|
|
) {
|
|
if (fips3 && algorithmName === 'AES-OCB') {
|
|
await assert.rejects(
|
|
subtle.importKey(format, new Uint8Array(keyLength), algorithmName, false, ['decrypt']),
|
|
{ name: 'NotSupportedError', message: 'Unrecognized algorithm name' });
|
|
return;
|
|
}
|
|
const key = await subtle.importKey(
|
|
format,
|
|
new Uint8Array(keyLength),
|
|
{ name: algorithmName },
|
|
false,
|
|
['encrypt', 'decrypt'],
|
|
);
|
|
|
|
const data = new Uint8Array(32);
|
|
data.buffer.transfer();
|
|
|
|
await assert.rejects(
|
|
subtle.decrypt({ name: algorithmName, iv: new Uint8Array(ivLength) }, key, data),
|
|
{ name: 'OperationError' },
|
|
);
|
|
}
|
|
|
|
const tests = [
|
|
test('AES-GCM', 32, 12),
|
|
];
|
|
|
|
if (fips3) {
|
|
tests.push(assert.rejects(
|
|
subtle.importKey(
|
|
'raw-secret',
|
|
new Uint8Array(32),
|
|
'ChaCha20-Poly1305',
|
|
false,
|
|
['encrypt', 'decrypt']),
|
|
{ name: 'NotSupportedError' }));
|
|
} else {
|
|
tests.push(test('ChaCha20-Poly1305', 32, 12, 'raw-secret'));
|
|
}
|
|
|
|
if (!isBoringSSL) {
|
|
tests.push(test(
|
|
'AES-OCB',
|
|
32,
|
|
12,
|
|
'raw-secret'));
|
|
}
|
|
|
|
Promise.all(tests).then(common.mustCall());
|