@@ -17,17 +17,21 @@ var PUBLIC_RSA_OID = '1.2.840.113549.1.1.1';
1717
1818module . exports = ( function ( ) {
1919 /**
20- * @param arg {string|object} Key in PEM format, or data for generate key {b: bits, e: exponent}
20+ * @param key {string|object} Key in PEM format, or data for generate key {b: bits, e: exponent}
2121 * @constructor
2222 */
23- function NodeRSA ( arg ) {
23+ function NodeRSA ( key , options ) {
2424 this . keyPair = new rsa . Key ( ) ;
2525 this . $cache = { } ;
2626
27- if ( _ . isObject ( arg ) ) {
28- this . generateKeyPair ( arg . b , arg . e ) ;
29- } else if ( _ . isString ( arg ) ) {
30- this . loadFromPEM ( arg ) ;
27+ this . options = _ . merge ( {
28+ signingAlgorithm : 'RSA-SHA256'
29+ } , options || { } ) ;
30+
31+ if ( _ . isObject ( key ) ) {
32+ this . generateKeyPair ( key . b , key . e ) ;
33+ } else if ( _ . isString ( key ) ) {
34+ this . loadFromPEM ( key ) ;
3135 }
3236 }
3337
@@ -169,7 +173,7 @@ module.exports = (function() {
169173 }
170174
171175 encoding = ( ! encoding || encoding == 'buffer' ? null : encoding ) ;
172- var signer = crypt . createSign ( 'RSA-SHA256' ) ;
176+ var signer = crypt . createSign ( this . options . signingAlgorithm ) ;
173177 signer . update ( this . $getDataForEcrypt ( buffer , source_encoding ) ) ;
174178 return signer . sign ( this . getPrivatePEM ( ) , encoding ) ;
175179 } ;
@@ -185,7 +189,7 @@ module.exports = (function() {
185189 */
186190 NodeRSA . prototype . verify = function ( buffer , signature , source_encoding , signature_encoding ) {
187191 signature_encoding = ( ! signature_encoding || signature_encoding == 'buffer' ? null : signature_encoding ) ;
188- var verifier = crypt . createVerify ( 'RSA-SHA256' ) ;
192+ var verifier = crypt . createVerify ( this . options . signingAlgorithm ) ;
189193 verifier . update ( this . $getDataForEcrypt ( buffer , source_encoding ) ) ;
190194 return verifier . verify ( this . getPublicPEM ( ) , signature , signature_encoding ) ;
191195 } ;
0 commit comments