summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTobias Nießen <tniessen@tnie.de>2018-12-25 13:13:52 +0100
committerAnna Henningsen <anna@addaleax.net>2019-01-08 00:20:09 +0100
commitae2d1f0e05449221ee770a393e5c967b359d9b1b (patch)
tree5d43c4d7b0509e47ca51ad7e6cfb4d3192c29f61 /lib
parent27a03b84c42a021c94649b3f601800b7502a9c15 (diff)
downloadandroid-node-v8-ae2d1f0e05449221ee770a393e5c967b359d9b1b.tar.gz
android-node-v8-ae2d1f0e05449221ee770a393e5c967b359d9b1b.tar.bz2
android-node-v8-ae2d1f0e05449221ee770a393e5c967b359d9b1b.zip
crypto: always accept private keys as public keys
Some APIs already accept private keys instead of public keys. This changes all relevant crypto APIs to do so. PR-URL: https://github.com/nodejs/node/pull/25217 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/internal/crypto/keys.js7
-rw-r--r--lib/internal/crypto/sig.js9
2 files changed, 6 insertions, 10 deletions
diff --git a/lib/internal/crypto/keys.js b/lib/internal/crypto/keys.js
index ad82835080..db7be824ac 100644
--- a/lib/internal/crypto/keys.js
+++ b/lib/internal/crypto/keys.js
@@ -261,10 +261,6 @@ function prepareAsymmetricKey(key, isPublic, allowKeyObject = true) {
}
}
-function preparePublicKey(key, allowKeyObject) {
- return prepareAsymmetricKey(key, true, allowKeyObject);
-}
-
function preparePrivateKey(key, allowKeyObject) {
return prepareAsymmetricKey(key, false, allowKeyObject);
}
@@ -300,7 +296,7 @@ function createSecretKey(key) {
}
function createPublicKey(key) {
- const { format, type, data } = preparePublicKey(key, false);
+ const { format, type, data } = preparePublicOrPrivateKey(key, false);
const handle = new KeyObjectHandle(kKeyTypePublic);
handle.init(data, format, type);
return new PublicKeyObject(handle);
@@ -326,7 +322,6 @@ module.exports = {
// These are designed for internal use only and should not be exposed.
parsePublicKeyEncoding,
parsePrivateKeyEncoding,
- preparePublicKey,
preparePrivateKey,
preparePublicOrPrivateKey,
prepareSecretKey,
diff --git a/lib/internal/crypto/sig.js b/lib/internal/crypto/sig.js
index 32f7c37ec2..4a0c66f9cf 100644
--- a/lib/internal/crypto/sig.js
+++ b/lib/internal/crypto/sig.js
@@ -19,7 +19,7 @@ const {
} = require('internal/crypto/util');
const {
preparePrivateKey,
- preparePublicKey
+ preparePublicOrPrivateKey
} = require('internal/crypto/keys');
const { Writable } = require('stream');
@@ -112,8 +112,9 @@ Verify.prototype.verify = function verify(options, signature, sigEncoding) {
const {
data,
format,
- type
- } = preparePublicKey(options, true);
+ type,
+ passphrase
+ } = preparePublicOrPrivateKey(options, true);
sigEncoding = sigEncoding || getDefaultEncoding();
@@ -125,7 +126,7 @@ Verify.prototype.verify = function verify(options, signature, sigEncoding) {
signature = validateArrayBufferView(toBuf(signature, sigEncoding),
'signature');
- return this[kHandle].verify(data, format, type, signature,
+ return this[kHandle].verify(data, format, type, passphrase, signature,
rsaPadding, pssSaltLength);
};