crypto: deprecate aliases for randomBytes

PR-URL: https://github.com/nodejs/node/pull/22519
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Tobias Nießen 2018-08-25 12:04:35 +02:00
parent f417ea1eae
commit 221df2286d
No known key found for this signature in database
GPG Key ID: 718207F8FD156B70
3 changed files with 32 additions and 3 deletions

View File

@ -1039,6 +1039,17 @@ Type: Runtime
The `crypto._toBuf()` function was not designed to be used by modules outside
of Node.js core and will be removed in the future.
<a id="DEP0115"></a>
### DEP0115: crypto.prng(), crypto.pseudoRandomBytes(), crypto.rng()
Type: Runtime
In recent versions of Node.js, there is no difference between
[`crypto.randomBytes()`][] and `crypto.pseudoRandomBytes()`. The latter is
deprecated along with the undocumented aliases `crypto.prng()` and
`crypto.rng()` in favor of [`crypto.randomBytes()`][] and will be removed in a
future release.
[`--pending-deprecation`]: cli.html#cli_pending_deprecation
[`Buffer.allocUnsafeSlow(size)`]: buffer.html#buffer_class_method_buffer_allocunsafeslow_size
[`Buffer.from(array)`]: buffer.html#buffer_class_method_buffer_from_array
@ -1065,6 +1076,7 @@ of Node.js core and will be removed in the future.
[`crypto.DEFAULT_ENCODING`]: crypto.html#crypto_crypto_default_encoding
[`crypto.fips`]: crypto.html#crypto_crypto_fips
[`crypto.pbkdf2()`]: crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback
[`crypto.randomBytes()`]: crypto.html#crypto_crypto_randombytes_size_callback
[`crypto.scrypt()`]: crypto.html#crypto_crypto_scrypt_password_salt_keylen_options_callback
[`decipher.final()`]: crypto.html#crypto_decipher_final_outputencoding
[`decipher.setAuthTag()`]: crypto.html#crypto_decipher_setauthtag_buffer

View File

@ -155,14 +155,11 @@ module.exports = exports = {
pbkdf2Sync,
privateDecrypt,
privateEncrypt,
prng: randomBytes,
pseudoRandomBytes: randomBytes,
publicDecrypt,
publicEncrypt,
randomBytes,
randomFill,
randomFillSync,
rng: randomBytes,
scrypt,
scryptSync,
setEngine,
@ -234,5 +231,22 @@ Object.defineProperties(exports, {
configurable: false,
enumerable: true,
value: constants
},
// Aliases for randomBytes are deprecated.
// The ecosystem needs those to exist for backwards compatibility with
// ancient Node.js runtimes (0.10, 0.12).
prng: {
enumerable: false,
value: deprecate(randomBytes, 'crypto.prng is deprecated.', 'DEP0115')
},
pseudoRandomBytes: {
enumerable: false,
value: deprecate(randomBytes,
'crypto.pseudoRandomBytes is deprecated.', 'DEP0115')
},
rng: {
enumerable: false,
value: deprecate(randomBytes, 'crypto.rng is deprecated.', 'DEP0115')
}
});

View File

@ -35,6 +35,9 @@ const kMaxPossibleLength = Math.min(kMaxLength, kMaxUint32);
// bump, we register a lot of exit listeners
process.setMaxListeners(256);
common.expectWarning('DeprecationWarning',
'crypto.pseudoRandomBytes is deprecated.', 'DEP0115');
{
[crypto.randomBytes, crypto.pseudoRandomBytes].forEach((f) => {
[undefined, null, false, true, {}, []].forEach((value) => {