Skip to content

Instantly share code, notes, and snippets.

@panva
Last active January 6, 2023 12:35
Show Gist options
  • Save panva/bdca145f85cfe227799209bcc9f38c76 to your computer and use it in GitHub Desktop.
Save panva/bdca145f85cfe227799209bcc9f38c76 to your computer and use it in GitHub Desktop.
diff --git a/doc/api/errors.md b/doc/api/errors.md
index fe6a417ae6..b277a53e66 100644
--- a/doc/api/errors.md
+++ b/doc/api/errors.md
@@ -1112,12 +1112,6 @@ release binaries but can happen with custom builds, including distro builds.
A signing `key` was not provided to the [`sign.sign()`][] method.
-<a id="ERR_CRYPTO_UNKNOWN_ENCODING"></a>
-
-### `ERR_CRYPTO_UNKNOWN_ENCODING`
-
-Invalid encoding was provided to the update/finalise cipher methods.
-
<a id="ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH"></a>
### `ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH`
diff --git a/lib/internal/crypto/cipher.js b/lib/internal/crypto/cipher.js
index 5c87a2f8cc..f793923ec3 100644
--- a/lib/internal/crypto/cipher.js
+++ b/lib/internal/crypto/cipher.js
@@ -27,7 +27,7 @@ const {
ERR_CRYPTO_INVALID_STATE,
ERR_INVALID_ARG_TYPE,
ERR_INVALID_ARG_VALUE,
- ERR_CRYPTO_UNKNOWN_ENCODING,
+ ERR_UNKNOWN_ENCODING,
}
} = require('internal/errors');
@@ -91,16 +91,14 @@ const privateEncrypt = rsaFunctionFor(_privateEncrypt, RSA_PKCS1_PADDING,
const privateDecrypt = rsaFunctionFor(_privateDecrypt, RSA_PKCS1_OAEP_PADDING,
'private');
-const validateNormalizedEncoding = (encoding, originalEncodingName) => {
- if (!encoding) {
- throw new ERR_CRYPTO_UNKNOWN_ENCODING(originalEncodingName);
+const normalizeAndValidateEncoding = (encoding) => {
+ const normalizedEncoding = normalizeEncoding(encoding);
+ if (normalizedEncoding === undefined) {
+ validateString(encoding, 'encoding');
+ throw new ERR_UNKNOWN_ENCODING(encoding);
}
- return encoding;
-};
-
-const normalizeAndValidateEncoding = (encoding) => {
- return validateNormalizedEncoding(normalizeEncoding(encoding), encoding);
+ return normalizedEncoding;
};
const validateInputEncoding = (encoding) => {
@@ -112,10 +110,10 @@ const validateInputEncoding = (encoding) => {
};
function getDecoder(decoder, encoding) {
- const normilizedEncoding = normalizeAndValidateEncoding(encoding);
+ const normalizedEncoding = normalizeAndValidateEncoding(encoding);
- decoder ||= new StringDecoder(normilizedEncoding);
- assert(decoder.encoding === normilizedEncoding, 'Cannot change encoding');
+ decoder ||= new StringDecoder(normalizedEncoding);
+ assert(decoder.encoding === normalizedEncoding, 'Cannot change encoding');
return decoder;
}
diff --git a/lib/internal/errors.js b/lib/internal/errors.js
index 07acdb3068..5820747e0d 100644
--- a/lib/internal/errors.js
+++ b/lib/internal/errors.js
@@ -1015,7 +1015,6 @@ E('ERR_CRYPTO_SCRYPT_INVALID_PARAMETER', 'Invalid scrypt parameter', Error);
E('ERR_CRYPTO_SCRYPT_NOT_SUPPORTED', 'Scrypt algorithm not supported', Error);
// Switch to TypeError. The current implementation does not seem right.
E('ERR_CRYPTO_SIGN_KEY_REQUIRED', 'No key provided to sign', Error);
-E('ERR_CRYPTO_UNKNOWN_ENCODING', 'Unknown encoding %s', TypeError);
E('ERR_DEBUGGER_ERROR', '%s', Error);
E('ERR_DEBUGGER_STARTUP_ERROR', '%s', Error);
E('ERR_DIR_CLOSED', 'Directory handle was closed', Error);
diff --git a/test/parallel/test-crypto-encoding-validation-error.js b/test/parallel/test-crypto-encoding-validation-error.js
index 676b89c7b6..aebf4cfe21 100644
--- a/test/parallel/test-crypto-encoding-validation-error.js
+++ b/test/parallel/test-crypto-encoding-validation-error.js
@@ -17,7 +17,7 @@ const createCipher = () => {
assert.throws(
() => cipher.update('test', 'bad1', 'hex'),
- { message: /^Unknown encoding bad1$/, code: 'ERR_CRYPTO_UNKNOWN_ENCODING' }
+ { message: /^Unknown encoding: bad1$/, code: 'ERR_UNKNOWN_ENCODING' }
);
}
@@ -27,7 +27,7 @@ const createCipher = () => {
assert.throws(
() => cipher.final('bad2'),
- { message: /^Unknown encoding bad2$/, code: 'ERR_CRYPTO_UNKNOWN_ENCODING' }
+ { message: /^Unknown encoding: bad2$/, code: 'ERR_UNKNOWN_ENCODING' }
);
}
@@ -36,6 +36,6 @@ const createCipher = () => {
assert.throws(
() => cipher.update('test', 'utf-8', 'bad3'),
- { message: /^Unknown encoding bad3$/, code: 'ERR_CRYPTO_UNKNOWN_ENCODING' }
+ { message: /^Unknown encoding: bad3$/, code: 'ERR_UNKNOWN_ENCODING' }
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment