From dd02e9e8ce1d3cfe4a98cddc3561e888284d4a14 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Mon, 31 Jan 2022 11:41:06 +0100 Subject: [PATCH] crypto: clarify `require("crypto').getRandomValues` is Node.js specific Refs: https://github.com/nodejs/node/pull/41779 Refs: https://github.com/nodejs/node/pull/41760 --- doc/api/crypto.md | 4 +++- lib/crypto.js | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/api/crypto.md b/doc/api/crypto.md index 6d1fc3a5672ff8..53e3d94882d5a2 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -4112,7 +4112,8 @@ added: v17.4.0 * `typedArray` {Buffer|TypedArray|DataView|ArrayBuffer} * Returns: {Buffer|TypedArray|DataView|ArrayBuffer} Returns `typedArray`. -A convenient alias for [`crypto.webcrypto.getRandomValues()`][]. +A convenient alias for [`crypto.randomFillSync()`][] that has the same signature as +[`crypto.webcrypto.getRandomValues()`][]. ### `crypto.hkdf(digest, ikm, salt, info, keylen, callback)` @@ -6005,6 +6006,7 @@ See the [list of SSL OP Flags][] for details. [`crypto.publicEncrypt()`]: #cryptopublicencryptkey-buffer [`crypto.randomBytes()`]: #cryptorandombytessize-callback [`crypto.randomFill()`]: #cryptorandomfillbuffer-offset-size-callback +[`crypto.randomFillSync()`]: #cryptorandomfillsyncbuffer-offset-size [`crypto.scrypt()`]: #cryptoscryptpassword-salt-keylen-options-callback [`crypto.webcrypto.getRandomValues()`]: webcrypto.md#cryptogetrandomvaluestypedarray [`crypto.webcrypto.subtle`]: webcrypto.md#class-subtlecrypto diff --git a/lib/crypto.js b/lib/crypto.js index ac601a7664697d..412235da2c0b71 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -252,6 +252,10 @@ function getFipsForced() { return 1; } +function getRandomValues(array) { + return randomFillSync(array); +} + ObjectDefineProperty(constants, 'defaultCipherList', { value: getOptionValue('--tls-cipher-list') }); @@ -303,7 +307,7 @@ ObjectDefineProperties(module.exports, { getRandomValues: { configurable: false, enumerable: true, - get() { return lazyWebCrypto().crypto.getRandomValues; }, + get: () => getRandomValues, set: undefined, },