@@ -28,8 +28,9 @@ var crypto = require('crypto');
2828var algs = require ( './algs' ) ;
2929var asn1 = require ( 'asn1' ) ;
3030
31- var ec , jsbn ;
32- var nacl ;
31+ var ec = require ( 'ecc-jsbn/lib/ec' ) ;
32+ var jsbn = require ( 'jsbn' ) . BigInteger ;
33+ var nacl = require ( 'tweetnacl' ) ;
3334
3435var MAX_CLASS_DEPTH = 3 ;
3536
@@ -257,15 +258,9 @@ function calculateDSAPublic(g, p, x) {
257258 assert . buffer ( g ) ;
258259 assert . buffer ( p ) ;
259260 assert . buffer ( x ) ;
260- try {
261- var bigInt = require ( 'jsbn' ) . BigInteger ;
262- } catch ( e ) {
263- throw ( new Error ( 'To load a PKCS#8 format DSA private key, ' +
264- 'the node jsbn library is required.' ) ) ;
265- }
266- g = new bigInt ( g ) ;
267- p = new bigInt ( p ) ;
268- x = new bigInt ( x ) ;
261+ g = new jsbn ( g ) ;
262+ p = new jsbn ( p ) ;
263+ x = new jsbn ( x ) ;
269264 var y = g . modPow ( x , p ) ;
270265 var ybuf = bigintToMpBuf ( y ) ;
271266 return ( ybuf ) ;
@@ -274,46 +269,34 @@ function calculateDSAPublic(g, p, x) {
274269function calculateED25519Public ( k ) {
275270 assert . buffer ( k ) ;
276271
277- if ( nacl === undefined )
278- nacl = require ( 'tweetnacl' ) ;
279-
280272 var kp = nacl . sign . keyPair . fromSeed ( new Uint8Array ( k ) ) ;
281273 return ( Buffer . from ( kp . publicKey ) ) ;
282274}
283275
284276function calculateX25519Public ( k ) {
285277 assert . buffer ( k ) ;
286278
287- if ( nacl === undefined )
288- nacl = require ( 'tweetnacl' ) ;
289-
290279 var kp = nacl . box . keyPair . fromSeed ( new Uint8Array ( k ) ) ;
291280 return ( Buffer . from ( kp . publicKey ) ) ;
292281}
293282
294283function addRSAMissing ( key ) {
295284 assert . object ( key ) ;
296285 assertCompatible ( key , PrivateKey , [ 1 , 1 ] ) ;
297- try {
298- var bigInt = require ( 'jsbn' ) . BigInteger ;
299- } catch ( e ) {
300- throw ( new Error ( 'To write a PEM private key from ' +
301- 'this source, the node jsbn lib is required.' ) ) ;
302- }
303286
304- var d = new bigInt ( key . part . d . data ) ;
287+ var d = new jsbn ( key . part . d . data ) ;
305288 var buf ;
306289
307290 if ( ! key . part . dmodp ) {
308- var p = new bigInt ( key . part . p . data ) ;
291+ var p = new jsbn ( key . part . p . data ) ;
309292 var dmodp = d . mod ( p . subtract ( 1 ) ) ;
310293
311294 buf = bigintToMpBuf ( dmodp ) ;
312295 key . part . dmodp = { name : 'dmodp' , data : buf } ;
313296 key . parts . push ( key . part . dmodp ) ;
314297 }
315298 if ( ! key . part . dmodq ) {
316- var q = new bigInt ( key . part . q . data ) ;
299+ var q = new jsbn ( key . part . q . data ) ;
317300 var dmodq = d . mod ( q . subtract ( 1 ) ) ;
318301
319302 buf = bigintToMpBuf ( dmodq ) ;
@@ -325,10 +308,6 @@ function addRSAMissing(key) {
325308function publicFromPrivateECDSA ( curveName , priv ) {
326309 assert . string ( curveName , 'curveName' ) ;
327310 assert . buffer ( priv ) ;
328- if ( ec === undefined )
329- ec = require ( 'ecc-jsbn/lib/ec' ) ;
330- if ( jsbn === undefined )
331- jsbn = require ( 'jsbn' ) . BigInteger ;
332311 var params = algs . curves [ curveName ] ;
333312 var p = new jsbn ( params . p ) ;
334313 var a = new jsbn ( params . a ) ;
0 commit comments