Skip to content

Commit 026ef47

Browse files
factoidforrestAlex Wilson
authored and
Alex Wilson
committed
#53 stop using optional deps to fix webpack
Reviewed by: Cody Peter Mello <[email protected]>
1 parent 53e23fe commit 026ef47

File tree

5 files changed

+19
-75
lines changed

5 files changed

+19
-75
lines changed

lib/dhe.js

+4-21
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,16 @@ var crypto = require('crypto');
1111
var Buffer = require('safer-buffer').Buffer;
1212
var algs = require('./algs');
1313
var utils = require('./utils');
14-
var nacl;
14+
var nacl = require('tweetnacl');
1515

1616
var Key = require('./key');
1717
var PrivateKey = require('./private-key');
1818

1919
var CRYPTO_HAVE_ECDH = (crypto.createECDH !== undefined);
2020

21-
var ecdh, ec, jsbn;
21+
var ecdh = require('ecc-jsbn');
22+
var ec = require('ecc-jsbn/lib/ec');
23+
var jsbn = require('jsbn').BigInteger;
2224

2325
function DiffieHellman(key) {
2426
utils.assertCompatible(key, Key, [1, 4], 'key');
@@ -43,13 +45,6 @@ function DiffieHellman(key) {
4345

4446
} else if (key.type === 'ecdsa') {
4547
if (!CRYPTO_HAVE_ECDH) {
46-
if (ecdh === undefined)
47-
ecdh = require('ecc-jsbn');
48-
if (ec === undefined)
49-
ec = require('ecc-jsbn/lib/ec');
50-
if (jsbn === undefined)
51-
jsbn = require('jsbn').BigInteger;
52-
5348
this._ecParams = new X9ECParameters(this._curve);
5449

5550
if (this._isPriv) {
@@ -76,9 +71,6 @@ function DiffieHellman(key) {
7671
this._dh.setPublicKey(key.part.Q.data);
7772

7873
} else if (key.type === 'curve25519') {
79-
if (nacl === undefined)
80-
nacl = require('tweetnacl');
81-
8274
if (this._isPriv) {
8375
utils.assertCompatible(key, PrivateKey, [1, 5], 'key');
8476
this._priv = key.part.k.data;
@@ -321,9 +313,6 @@ ECPrivate.prototype.deriveSharedSecret = function (pubKey) {
321313
};
322314

323315
function generateED25519() {
324-
if (nacl === undefined)
325-
nacl = require('tweetnacl');
326-
327316
var pair = nacl.sign.keyPair();
328317
var priv = Buffer.from(pair.secretKey);
329318
var pub = Buffer.from(pair.publicKey);
@@ -374,12 +363,6 @@ function generateECDSA(curve) {
374363
});
375364
return (key);
376365
} else {
377-
if (ecdh === undefined)
378-
ecdh = require('ecc-jsbn');
379-
if (ec === undefined)
380-
ec = require('ecc-jsbn/lib/ec');
381-
if (jsbn === undefined)
382-
jsbn = require('jsbn').BigInteger;
383366

384367
var ecParams = new X9ECParameters(curve);
385368

lib/ed-compat.js

+1-7
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,14 @@ module.exports = {
55
Signer: Signer
66
};
77

8-
var nacl;
8+
var nacl = require('tweetnacl');
99
var stream = require('stream');
1010
var util = require('util');
1111
var assert = require('assert-plus');
1212
var Buffer = require('safer-buffer').Buffer;
1313
var Signature = require('./signature');
1414

1515
function Verifier(key, hashAlgo) {
16-
if (nacl === undefined)
17-
nacl = require('tweetnacl');
18-
1916
if (hashAlgo.toLowerCase() !== 'sha512')
2017
throw (new Error('ED25519 only supports the use of ' +
2118
'SHA-512 hashes'));
@@ -61,9 +58,6 @@ Verifier.prototype.verify = function (signature, fmt) {
6158
};
6259

6360
function Signer(key, hashAlgo) {
64-
if (nacl === undefined)
65-
nacl = require('tweetnacl');
66-
6761
if (hashAlgo.toLowerCase() !== 'sha512')
6862
throw (new Error('ED25519 only supports the use of ' +
6963
'SHA-512 hashes'));

lib/private-key.js

+2-14
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,8 @@ var utils = require('./utils');
1414
var dhe = require('./dhe');
1515
var generateECDSA = dhe.generateECDSA;
1616
var generateED25519 = dhe.generateED25519;
17-
var edCompat;
18-
var nacl;
19-
20-
try {
21-
edCompat = require('./ed-compat');
22-
} catch (e) {
23-
/* Just continue through, and bail out if we try to use it. */
24-
}
17+
var edCompat = require('./ed-compat');
18+
var nacl = require('tweetnacl');
2519

2620
var Key = require('./key');
2721

@@ -90,9 +84,6 @@ PrivateKey.prototype.derive = function (newType) {
9084
var priv, pub, pair;
9185

9286
if (this.type === 'ed25519' && newType === 'curve25519') {
93-
if (nacl === undefined)
94-
nacl = require('tweetnacl');
95-
9687
priv = this.part.k.data;
9788
if (priv[0] === 0x00)
9889
priv = priv.slice(1);
@@ -108,9 +99,6 @@ PrivateKey.prototype.derive = function (newType) {
10899
]
109100
}));
110101
} else if (this.type === 'curve25519' && newType === 'ed25519') {
111-
if (nacl === undefined)
112-
nacl = require('tweetnacl');
113-
114102
priv = this.part.k.data;
115103
if (priv[0] === 0x00)
116104
priv = priv.slice(1);

lib/utils.js

+9-30
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ var crypto = require('crypto');
2828
var algs = require('./algs');
2929
var 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

3435
var 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) {
274269
function 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

284276
function 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

294283
function 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) {
325308
function 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);

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@
4343
"assert-plus": "^1.0.0",
4444
"dashdash": "^1.12.0",
4545
"getpass": "^0.1.1",
46-
"safer-buffer": "^2.0.2"
47-
},
48-
"optionalDependencies": {
46+
"safer-buffer": "^2.0.2",
4947
"jsbn": "~0.1.0",
5048
"tweetnacl": "~0.14.0",
5149
"ecc-jsbn": "~0.1.1",
5250
"bcrypt-pbkdf": "^1.0.0"
5351
},
52+
"optionalDependencies": {
53+
},
5454
"devDependencies": {
5555
"tape": "^3.5.0",
5656
"benchmark": "^1.0.0",

0 commit comments

Comments
 (0)