diff options
author | Fedor Indutny <fedor@indutny.com> | 2015-01-27 22:58:14 +0300 |
---|---|---|
committer | Fedor Indutny <fedor@indutny.com> | 2015-01-28 02:02:52 +0300 |
commit | 87e62bd4c87e8674e3d1c432506e9b4991784ee2 (patch) | |
tree | aa377dab8988789ac34dd4df50a1eba7ca8dcae4 /lib/crypto.js | |
parent | b50fea4d490278b291321e6b96c49cf20bee1552 (diff) | |
download | android-node-v8-87e62bd4c87e8674e3d1c432506e9b4991784ee2.tar.gz android-node-v8-87e62bd4c87e8674e3d1c432506e9b4991784ee2.tar.bz2 android-node-v8-87e62bd4c87e8674e3d1c432506e9b4991784ee2.zip |
crypto: implement privateEncrypt/publicDecrypt
PR-URL: https://github.com/iojs/io.js/pull/625
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Fix iojs/io.js#477
Diffstat (limited to 'lib/crypto.js')
-rw-r--r-- | lib/crypto.js | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/lib/crypto.js b/lib/crypto.js index 8e3a84350d..2d08433563 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -337,19 +337,31 @@ Verify.prototype.verify = function(object, signature, sigEncoding) { return this._handle.verify(toBuf(object), toBuf(signature, sigEncoding)); }; -exports.publicEncrypt = function(options, buffer) { - var key = options.key || options; - var padding = options.padding || constants.RSA_PKCS1_OAEP_PADDING; - return binding.publicEncrypt(toBuf(key), buffer, padding); -}; +function rsaPublic(method, defaultPadding) { + return function(options, buffer) { + var key = options.key || options; + var padding = options.padding || defaultPadding; + return method(toBuf(key), buffer, padding); + }; +} -exports.privateDecrypt = function(options, buffer) { - var key = options.key || options; - var passphrase = options.passphrase || null; - var padding = options.padding || constants.RSA_PKCS1_OAEP_PADDING; - return binding.privateDecrypt(toBuf(key), buffer, padding, passphrase); -}; +function rsaPrivate(method, defaultPadding) { + return function(options, buffer) { + var key = options.key || options; + var passphrase = options.passphrase || null; + var padding = options.padding || defaultPadding; + return method(toBuf(key), buffer, padding, passphrase); + }; +} +exports.publicEncrypt = rsaPublic(binding.publicEncrypt, + constants.RSA_PKCS1_OAEP_PADDING); +exports.publicDecrypt = rsaPublic(binding.publicDecrypt, + constants.RSA_PKCS1_PADDING); +exports.privateEncrypt = rsaPrivate(binding.privateEncrypt, + constants.RSA_PKCS1_PADDING); +exports.privateDecrypt = rsaPrivate(binding.privateDecrypt, + constants.RSA_PKCS1_OAEP_PADDING); exports.createDiffieHellman = exports.DiffieHellman = DiffieHellman; |