From 26174fcfe1992f256b78f8053a1f2b02e545d4b1 Mon Sep 17 00:00:00 2001 From: Bryan English Date: Fri, 19 Aug 2016 13:56:58 -0700 Subject: [PATCH] crypto: expose ECDH class For consistency with the rest of the crypto classes, exposes the ECDH class. Originally, only the createECDH function was exposed, and there was no real reason to hide the class. PR-URL: https://github.com/nodejs/node/pull/8188 Reviewed-By: Ben Noordhuis Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Reviewed-By: Rich Trott --- lib/crypto.js | 7 ++----- lib/internal/crypto/diffiehellman.js | 3 +++ test/parallel/test-crypto-classes.js | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/crypto.js b/lib/crypto.js index 1c8c6b36fb3..eb797b86ee5 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -79,10 +79,6 @@ const { } = require('internal/crypto/util'); const Certificate = require('internal/crypto/certificate'); -function createECDH(curve) { - return new ECDH(curve); -} - module.exports = exports = { // Methods _toBuf: toBuf, @@ -92,7 +88,7 @@ module.exports = exports = { createDecipheriv: Decipheriv, createDiffieHellman: DiffieHellman, createDiffieHellmanGroup: DiffieHellmanGroup, - createECDH, + createECDH: ECDH, createHash: Hash, createHmac: Hmac, createSign: Sign, @@ -124,6 +120,7 @@ module.exports = exports = { Decipheriv, DiffieHellman, DiffieHellmanGroup, + ECDH, Hash, Hmac, Sign, diff --git a/lib/internal/crypto/diffiehellman.js b/lib/internal/crypto/diffiehellman.js index b891a0b3541..71fd13819c6 100644 --- a/lib/internal/crypto/diffiehellman.js +++ b/lib/internal/crypto/diffiehellman.js @@ -168,6 +168,9 @@ DiffieHellman.prototype.setPrivateKey = function setPrivateKey(key, encoding) { function ECDH(curve) { + if (!(this instanceof ECDH)) + return new ECDH(curve); + if (typeof curve !== 'string') throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'curve', 'string'); diff --git a/test/parallel/test-crypto-classes.js b/test/parallel/test-crypto-classes.js index ed6bfd76c1e..3923cb0dc7c 100644 --- a/test/parallel/test-crypto-classes.js +++ b/test/parallel/test-crypto-classes.js @@ -18,6 +18,7 @@ const TEST_CASES = { 'Verify': ['RSA-SHA1'], 'DiffieHellman': [1024], 'DiffieHellmanGroup': ['modp5'], + 'ECDH': ['prime256v1'], 'Credentials': [] };