@@ -53,6 +53,25 @@ Sign.prototype.update = function update(data, encoding) {
53
53
return this ;
54
54
} ;
55
55
56
+ function getPadding ( options ) {
57
+ return getIntOption ( 'padding' , RSA_PKCS1_PADDING , options ) ;
58
+ }
59
+
60
+ function getSaltLength ( options ) {
61
+ return getIntOption ( 'saltLength' , RSA_PSS_SALTLEN_AUTO , options ) ;
62
+ }
63
+
64
+ function getIntOption ( name , defaultValue , options ) {
65
+ if ( options . hasOwnProperty ( name ) ) {
66
+ if ( options [ name ] === options [ name ] >> 0 ) {
67
+ return options [ name ] ;
68
+ } else {
69
+ throw new ERR_INVALID_OPT_VALUE ( name , options [ name ] ) ;
70
+ }
71
+ }
72
+ return defaultValue ;
73
+ }
74
+
56
75
Sign . prototype . sign = function sign ( options , encoding ) {
57
76
if ( ! options )
58
77
throw new ERR_CRYPTO_SIGN_KEY_REQUIRED ( ) ;
@@ -61,23 +80,9 @@ Sign.prototype.sign = function sign(options, encoding) {
61
80
var passphrase = options . passphrase || null ;
62
81
63
82
// Options specific to RSA
64
- var rsaPadding = RSA_PKCS1_PADDING ;
65
- if ( options . hasOwnProperty ( 'padding' ) ) {
66
- if ( options . padding === options . padding >> 0 ) {
67
- rsaPadding = options . padding ;
68
- } else {
69
- throw new ERR_INVALID_OPT_VALUE ( 'padding' , options . padding ) ;
70
- }
71
- }
83
+ var rsaPadding = getPadding ( options ) ;
72
84
73
- var pssSaltLength = RSA_PSS_SALTLEN_AUTO ;
74
- if ( options . hasOwnProperty ( 'saltLength' ) ) {
75
- if ( options . saltLength === options . saltLength >> 0 ) {
76
- pssSaltLength = options . saltLength ;
77
- } else {
78
- throw new ERR_INVALID_OPT_VALUE ( 'saltLength' , options . saltLength ) ;
79
- }
80
- }
85
+ var pssSaltLength = getSaltLength ( options ) ;
81
86
82
87
key = toBuf ( key ) ;
83
88
if ( ! isArrayBufferView ( key ) ) {
@@ -119,23 +124,9 @@ Verify.prototype.verify = function verify(options, signature, sigEncoding) {
119
124
sigEncoding = sigEncoding || getDefaultEncoding ( ) ;
120
125
121
126
// Options specific to RSA
122
- var rsaPadding = RSA_PKCS1_PADDING ;
123
- if ( options . hasOwnProperty ( 'padding' ) ) {
124
- if ( options . padding === options . padding >> 0 ) {
125
- rsaPadding = options . padding ;
126
- } else {
127
- throw new ERR_INVALID_OPT_VALUE ( 'padding' , options . padding ) ;
128
- }
129
- }
127
+ var rsaPadding = getPadding ( options ) ;
130
128
131
- var pssSaltLength = RSA_PSS_SALTLEN_AUTO ;
132
- if ( options . hasOwnProperty ( 'saltLength' ) ) {
133
- if ( options . saltLength === options . saltLength >> 0 ) {
134
- pssSaltLength = options . saltLength ;
135
- } else {
136
- throw new ERR_INVALID_OPT_VALUE ( 'saltLength' , options . saltLength ) ;
137
- }
138
- }
129
+ var pssSaltLength = getSaltLength ( options ) ;
139
130
140
131
key = toBuf ( key ) ;
141
132
if ( ! isArrayBufferView ( key ) ) {
0 commit comments