From 8e1be3799b0aca64983c6a7998d0ddb0d3529742 Mon Sep 17 00:00:00 2001 From: Gerhard Stoebich Date: Mon, 5 Nov 2018 17:07:48 +0100 Subject: [PATCH 1/2] crypto: allow monkey patching of pseudoRandomBytes Make `pseudoRandomBytes` and it's aliases `prng` and `rng` configurable to allow monkey patching. --- lib/crypto.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/crypto.js b/lib/crypto.js index 2645e78e5eba21..daaa50267f9acf 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -247,12 +247,14 @@ Object.defineProperties(exports, { // The ecosystem needs those to exist for backwards compatibility. prng: { enumerable: false, + configurable: true, value: pendingDeprecation ? deprecate(randomBytes, 'crypto.prng is deprecated.', 'DEP0115') : randomBytes }, pseudoRandomBytes: { enumerable: false, + configurable: true, value: pendingDeprecation ? deprecate(randomBytes, 'crypto.pseudoRandomBytes is deprecated.', 'DEP0115') : @@ -260,6 +262,7 @@ Object.defineProperties(exports, { }, rng: { enumerable: false, + configurable: true, value: pendingDeprecation ? deprecate(randomBytes, 'crypto.rng is deprecated.', 'DEP0115') : randomBytes From fa4a6951cf9fbca5ae07fcf6b1b20ca7109b42a4 Mon Sep 17 00:00:00 2001 From: Gerhard Stoebich Date: Wed, 7 Nov 2018 18:33:04 +0100 Subject: [PATCH 2/2] set additionally writeable: true add test --- lib/crypto.js | 3 +++ test/parallel/test-crypto-random.js | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/crypto.js b/lib/crypto.js index daaa50267f9acf..a3865ab7e46d9b 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -248,6 +248,7 @@ Object.defineProperties(exports, { prng: { enumerable: false, configurable: true, + writable: true, value: pendingDeprecation ? deprecate(randomBytes, 'crypto.prng is deprecated.', 'DEP0115') : randomBytes @@ -255,6 +256,7 @@ Object.defineProperties(exports, { pseudoRandomBytes: { enumerable: false, configurable: true, + writable: true, value: pendingDeprecation ? deprecate(randomBytes, 'crypto.pseudoRandomBytes is deprecated.', 'DEP0115') : @@ -263,6 +265,7 @@ Object.defineProperties(exports, { rng: { enumerable: false, configurable: true, + writable: true, value: pendingDeprecation ? deprecate(randomBytes, 'crypto.rng is deprecated.', 'DEP0115') : randomBytes diff --git a/test/parallel/test-crypto-random.js b/test/parallel/test-crypto-random.js index df06134e4326f9..4c85545b4e40b1 100644 --- a/test/parallel/test-crypto-random.js +++ b/test/parallel/test-crypto-random.js @@ -306,3 +306,12 @@ assert.throws( } ); }); + + +['pseudoRandomBytes', 'prng', 'rng'].forEach((f) => { + const desc = Object.getOwnPropertyDescriptor(crypto, f); + assert.ok(desc); + assert.strictEqual(desc.configurable, true); + assert.strictEqual(desc.writable, true); + assert.strictEqual(desc.enumerable, false); +});