summaryrefslogtreecommitdiff
path: root/lib/crypto.js
diff options
context:
space:
mode:
authorFedor Indutny <fedor@indutny.com>2015-01-27 22:58:14 +0300
committerFedor Indutny <fedor@indutny.com>2015-01-28 02:02:52 +0300
commit87e62bd4c87e8674e3d1c432506e9b4991784ee2 (patch)
treeaa377dab8988789ac34dd4df50a1eba7ca8dcae4 /lib/crypto.js
parentb50fea4d490278b291321e6b96c49cf20bee1552 (diff)
downloadandroid-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.js34
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;