diff --git a/lib/internal/crypto/ec.js b/lib/internal/crypto/ec.js index 809f531069bf8b..8741328dd3aa68 100644 --- a/lib/internal/crypto/ec.js +++ b/lib/internal/crypto/ec.js @@ -1,6 +1,7 @@ 'use strict'; const { + ArrayPrototypeIncludes, ObjectKeys, Promise, SafeSet, @@ -17,11 +18,6 @@ const { kSigEncP1363, } = internalBinding('crypto'); -const { - validateOneOf, - validateString, -} = require('internal/validators'); - const { codes: { ERR_MISSING_OPTION, @@ -88,11 +84,12 @@ function createECPublicKeyRaw(namedCurve, keyData) { async function ecGenerateKey(algorithm, extractable, keyUsages) { const { name, namedCurve } = algorithm; - validateString(namedCurve, 'algorithm.namedCurve'); - validateOneOf( - namedCurve, - 'algorithm.namedCurve', - ObjectKeys(kNamedCurveAliases)); + + if (!ArrayPrototypeIncludes(ObjectKeys(kNamedCurveAliases), namedCurve)) { + throw lazyDOMException( + 'Unrecognized namedCurve', + 'NotSupportedError'); + } const usageSet = new SafeSet(keyUsages); switch (name) { @@ -168,11 +165,13 @@ async function ecImportKey( keyUsages) { const { name, namedCurve } = algorithm; - validateString(namedCurve, 'algorithm.namedCurve'); - validateOneOf( - namedCurve, - 'algorithm.namedCurve', - ObjectKeys(kNamedCurveAliases)); + + if (!ArrayPrototypeIncludes(ObjectKeys(kNamedCurveAliases), namedCurve)) { + throw lazyDOMException( + 'Unrecognized namedCurve', + 'NotSupportedError'); + } + let keyObject; const usagesSet = new SafeSet(keyUsages); switch (format) { diff --git a/test/parallel/test-webcrypto-keygen.js b/test/parallel/test-webcrypto-keygen.js index e61d7c9b913abf..f012275f2b9e68 100644 --- a/test/parallel/test-webcrypto-keygen.js +++ b/test/parallel/test-webcrypto-keygen.js @@ -452,7 +452,7 @@ const vectors = { [1, true, {}, [], undefined, null].forEach(async (namedCurve) => { await assert.rejects( subtle.generateKey({ name, namedCurve }, true, privateUsages), { - code: 'ERR_INVALID_ARG_TYPE' + name: 'NotSupportedError' }); }); } diff --git a/test/wpt/status/WebCryptoAPI.json b/test/wpt/status/WebCryptoAPI.json index 14e1cd0e3e222a..069d1c8cef44bc 100644 --- a/test/wpt/status/WebCryptoAPI.json +++ b/test/wpt/status/WebCryptoAPI.json @@ -3383,48 +3383,12 @@ "generateKey/failures_ECDH.https.any.js": { "fail": { "expected": [ - "Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveKey])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveKey])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveBits, deriveKey])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveBits, deriveKey])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveBits])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveBits])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveKey])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveKey])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveBits, deriveKey])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveBits, deriveKey])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveBits])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveBits])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])", - "Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])" ] } }, "generateKey/failures_ECDSA.https.any.js": { "fail": { "expected": [ - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [sign])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [sign])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [verify, sign])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [verify, sign])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [sign, verify, sign, sign, verify])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [sign, verify, sign, sign, verify])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [sign])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [sign])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [verify, sign])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [verify, sign])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [sign, verify, sign, sign, verify])", - "Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [sign, verify, sign, sign, verify])" ] } },