Skip to content

Commit

Permalink
crypto: add getIntOption function to reduce dupl
Browse files Browse the repository at this point in the history
This commit adds a getIntOption function to reduce the code duplicated
for getting the padding, and saltLength options.

PR-URL: #20247
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
  • Loading branch information
danbev committed Apr 26, 2018
1 parent 3b8ab2a commit d4726d2
Showing 1 changed file with 23 additions and 32 deletions.
55 changes: 23 additions & 32 deletions lib/internal/crypto/sig.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,25 @@ Sign.prototype.update = function update(data, encoding) {
return this;
};

function getPadding(options) {
return getIntOption('padding', RSA_PKCS1_PADDING, options);
}

function getSaltLength(options) {
return getIntOption('saltLength', RSA_PSS_SALTLEN_AUTO, options);
}

function getIntOption(name, defaultValue, options) {
if (options.hasOwnProperty(name)) {
if (options[name] === options[name] >> 0) {
return options[name];
} else {
throw new ERR_INVALID_OPT_VALUE(name, options[name]);
}
}
return defaultValue;
}

Sign.prototype.sign = function sign(options, encoding) {
if (!options)
throw new ERR_CRYPTO_SIGN_KEY_REQUIRED();
Expand All @@ -61,23 +80,9 @@ Sign.prototype.sign = function sign(options, encoding) {
var passphrase = options.passphrase || null;

// Options specific to RSA
var rsaPadding = RSA_PKCS1_PADDING;
if (options.hasOwnProperty('padding')) {
if (options.padding === options.padding >> 0) {
rsaPadding = options.padding;
} else {
throw new ERR_INVALID_OPT_VALUE('padding', options.padding);
}
}
var rsaPadding = getPadding(options);

var pssSaltLength = RSA_PSS_SALTLEN_AUTO;
if (options.hasOwnProperty('saltLength')) {
if (options.saltLength === options.saltLength >> 0) {
pssSaltLength = options.saltLength;
} else {
throw new ERR_INVALID_OPT_VALUE('saltLength', options.saltLength);
}
}
var pssSaltLength = getSaltLength(options);

key = toBuf(key);
if (!isArrayBufferView(key)) {
Expand Down Expand Up @@ -119,23 +124,9 @@ Verify.prototype.verify = function verify(options, signature, sigEncoding) {
sigEncoding = sigEncoding || getDefaultEncoding();

// Options specific to RSA
var rsaPadding = RSA_PKCS1_PADDING;
if (options.hasOwnProperty('padding')) {
if (options.padding === options.padding >> 0) {
rsaPadding = options.padding;
} else {
throw new ERR_INVALID_OPT_VALUE('padding', options.padding);
}
}
var rsaPadding = getPadding(options);

var pssSaltLength = RSA_PSS_SALTLEN_AUTO;
if (options.hasOwnProperty('saltLength')) {
if (options.saltLength === options.saltLength >> 0) {
pssSaltLength = options.saltLength;
} else {
throw new ERR_INVALID_OPT_VALUE('saltLength', options.saltLength);
}
}
var pssSaltLength = getSaltLength(options);

key = toBuf(key);
if (!isArrayBufferView(key)) {
Expand Down

0 comments on commit d4726d2

Please sign in to comment.