Skip to content

Commit 83fe463

Browse files
committedSep 18, 2023
[eslint] switch to eslint
1 parent a67d0eb commit 83fe463

File tree

8 files changed

+371
-313
lines changed

8 files changed

+371
-313
lines changed
 

‎.eslintrc

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"root": true,
3+
4+
"extends": "@ljharb",
5+
6+
"rules": {
7+
"func-style": "warn",
8+
"indent": ["error", 2],
9+
"sort-keys": "off",
10+
},
11+
12+
"overrides": [
13+
{
14+
"files": "browser/index.js",
15+
"rules": {
16+
"func-name-matching": "off",
17+
"max-statements-per-line": "off",
18+
"no-underscore-dangle": "warn",
19+
},
20+
},
21+
{
22+
"files": "browser/verify.js",
23+
"rules": {
24+
"max-params": "off",
25+
"max-statements": "off",
26+
"max-statements-per-line": "off",
27+
"no-param-reassign": "warn",
28+
"no-plusplus": "warn",
29+
"no-use-before-define": "warn",
30+
}
31+
},
32+
{
33+
"files": "browser/sign.js",
34+
"rules": {
35+
"max-params": "off",
36+
// "max-statements": "off",
37+
"max-statements-per-line": "off",
38+
"no-param-reassign": "warn",
39+
"no-plusplus": "warn",
40+
"no-use-before-define": "warn",
41+
}
42+
},
43+
],
44+
}

‎algos.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
module.exports = require('./browser/algorithms.json')
1+
'use strict';
2+
3+
module.exports = require('./browser/algorithms.json');

‎browser/index.js

+63-63
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,92 @@
1-
var Buffer = require('safe-buffer').Buffer
2-
var createHash = require('create-hash')
3-
var stream = require('readable-stream')
4-
var inherits = require('inherits')
5-
var sign = require('./sign')
6-
var verify = require('./verify')
7-
8-
var algorithms = require('./algorithms.json')
1+
'use strict';
2+
3+
var Buffer = require('safe-buffer').Buffer;
4+
var createHash = require('create-hash');
5+
var stream = require('readable-stream');
6+
var inherits = require('inherits');
7+
var sign = require('./sign');
8+
var verify = require('./verify');
9+
10+
var algorithms = require('./algorithms.json');
911
Object.keys(algorithms).forEach(function (key) {
10-
algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')
11-
algorithms[key.toLowerCase()] = algorithms[key]
12-
})
12+
algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');
13+
algorithms[key.toLowerCase()] = algorithms[key];
14+
});
1315

14-
function Sign (algorithm) {
15-
stream.Writable.call(this)
16+
function Sign(algorithm) {
17+
stream.Writable.call(this);
1618

17-
var data = algorithms[algorithm]
18-
if (!data) throw new Error('Unknown message digest')
19+
var data = algorithms[algorithm];
20+
if (!data) { throw new Error('Unknown message digest'); }
1921

20-
this._hashType = data.hash
21-
this._hash = createHash(data.hash)
22-
this._tag = data.id
23-
this._signType = data.sign
22+
this._hashType = data.hash;
23+
this._hash = createHash(data.hash);
24+
this._tag = data.id;
25+
this._signType = data.sign;
2426
}
25-
inherits(Sign, stream.Writable)
27+
inherits(Sign, stream.Writable);
2628

27-
Sign.prototype._write = function _write (data, _, done) {
28-
this._hash.update(data)
29-
done()
30-
}
29+
Sign.prototype._write = function _write(data, _, done) {
30+
this._hash.update(data);
31+
done();
32+
};
3133

32-
Sign.prototype.update = function update (data, enc) {
33-
if (typeof data === 'string') data = Buffer.from(data, enc)
34+
Sign.prototype.update = function update(data, enc) {
35+
this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);
3436

35-
this._hash.update(data)
36-
return this
37-
}
37+
return this;
38+
};
3839

39-
Sign.prototype.sign = function signMethod (key, enc) {
40-
this.end()
41-
var hash = this._hash.digest()
42-
var sig = sign(hash, key, this._hashType, this._signType, this._tag)
40+
Sign.prototype.sign = function signMethod(key, enc) {
41+
this.end();
42+
var hash = this._hash.digest();
43+
var sig = sign(hash, key, this._hashType, this._signType, this._tag);
4344

44-
return enc ? sig.toString(enc) : sig
45-
}
45+
return enc ? sig.toString(enc) : sig;
46+
};
4647

47-
function Verify (algorithm) {
48-
stream.Writable.call(this)
48+
function Verify(algorithm) {
49+
stream.Writable.call(this);
4950

50-
var data = algorithms[algorithm]
51-
if (!data) throw new Error('Unknown message digest')
51+
var data = algorithms[algorithm];
52+
if (!data) { throw new Error('Unknown message digest'); }
5253

53-
this._hash = createHash(data.hash)
54-
this._tag = data.id
55-
this._signType = data.sign
54+
this._hash = createHash(data.hash);
55+
this._tag = data.id;
56+
this._signType = data.sign;
5657
}
57-
inherits(Verify, stream.Writable)
58+
inherits(Verify, stream.Writable);
5859

59-
Verify.prototype._write = function _write (data, _, done) {
60-
this._hash.update(data)
61-
done()
62-
}
60+
Verify.prototype._write = function _write(data, _, done) {
61+
this._hash.update(data);
62+
done();
63+
};
6364

64-
Verify.prototype.update = function update (data, enc) {
65-
if (typeof data === 'string') data = Buffer.from(data, enc)
65+
Verify.prototype.update = function update(data, enc) {
66+
this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);
6667

67-
this._hash.update(data)
68-
return this
69-
}
68+
return this;
69+
};
7070

71-
Verify.prototype.verify = function verifyMethod (key, sig, enc) {
72-
if (typeof sig === 'string') sig = Buffer.from(sig, enc)
71+
Verify.prototype.verify = function verifyMethod(key, sig, enc) {
72+
var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;
7373

74-
this.end()
75-
var hash = this._hash.digest()
76-
return verify(sig, hash, key, this._signType, this._tag)
77-
}
74+
this.end();
75+
var hash = this._hash.digest();
76+
return verify(sigBuffer, hash, key, this._signType, this._tag);
77+
};
7878

79-
function createSign (algorithm) {
80-
return new Sign(algorithm)
79+
function createSign(algorithm) {
80+
return new Sign(algorithm);
8181
}
8282

83-
function createVerify (algorithm) {
84-
return new Verify(algorithm)
83+
function createVerify(algorithm) {
84+
return new Verify(algorithm);
8585
}
8686

8787
module.exports = {
8888
Sign: createSign,
8989
Verify: createVerify,
9090
createSign: createSign,
9191
createVerify: createVerify
92-
}
92+
};

‎browser/sign.js

+105-101
Original file line numberDiff line numberDiff line change
@@ -1,143 +1,147 @@
1+
'use strict';
2+
13
// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js
2-
var Buffer = require('safe-buffer').Buffer
3-
var createHmac = require('create-hmac')
4-
var crt = require('browserify-rsa')
5-
var EC = require('elliptic').ec
6-
var BN = require('bn.js')
7-
var parseKeys = require('parse-asn1')
8-
var curves = require('./curves.json')
9-
10-
function sign (hash, key, hashType, signType, tag) {
11-
var priv = parseKeys(key)
4+
var Buffer = require('safe-buffer').Buffer;
5+
var createHmac = require('create-hmac');
6+
var crt = require('browserify-rsa');
7+
var EC = require('elliptic').ec;
8+
var BN = require('bn.js');
9+
var parseKeys = require('parse-asn1');
10+
var curves = require('./curves.json');
11+
12+
function sign(hash, key, hashType, signType, tag) {
13+
var priv = parseKeys(key);
1214
if (priv.curve) {
1315
// rsa keys can be interpreted as ecdsa ones in openssl
14-
if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')
15-
return ecSign(hash, priv)
16+
if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }
17+
return ecSign(hash, priv);
1618
} else if (priv.type === 'dsa') {
17-
if (signType !== 'dsa') throw new Error('wrong private key type')
18-
return dsaSign(hash, priv, hashType)
19-
} else {
20-
if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')
19+
if (signType !== 'dsa') { throw new Error('wrong private key type'); }
20+
return dsaSign(hash, priv, hashType);
2121
}
22-
hash = Buffer.concat([tag, hash])
23-
var len = priv.modulus.byteLength()
24-
var pad = [0, 1]
25-
while (hash.length + pad.length + 1 < len) pad.push(0xff)
26-
pad.push(0x00)
27-
var i = -1
28-
while (++i < hash.length) pad.push(hash[i])
29-
30-
var out = crt(pad, priv)
31-
return out
22+
if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }
23+
24+
hash = Buffer.concat([tag, hash]);
25+
var len = priv.modulus.byteLength();
26+
var pad = [0, 1];
27+
while (hash.length + pad.length + 1 < len) { pad.push(0xff); }
28+
pad.push(0x00);
29+
var i = -1;
30+
while (++i < hash.length) { pad.push(hash[i]); }
31+
32+
var out = crt(pad, priv);
33+
return out;
3234
}
3335

34-
function ecSign (hash, priv) {
35-
var curveId = curves[priv.curve.join('.')]
36-
if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))
36+
function ecSign(hash, priv) {
37+
var curveId = curves[priv.curve.join('.')];
38+
if (!curveId) { throw new Error('unknown curve ' + priv.curve.join('.')); }
3739

38-
var curve = new EC(curveId)
39-
var key = curve.keyFromPrivate(priv.privateKey)
40-
var out = key.sign(hash)
40+
var curve = new EC(curveId);
41+
var key = curve.keyFromPrivate(priv.privateKey);
42+
var out = key.sign(hash);
4143

42-
return Buffer.from(out.toDER())
44+
return Buffer.from(out.toDER());
4345
}
4446

45-
function dsaSign (hash, priv, algo) {
46-
var x = priv.params.priv_key
47-
var p = priv.params.p
48-
var q = priv.params.q
49-
var g = priv.params.g
50-
var r = new BN(0)
51-
var k
52-
var H = bits2int(hash, q).mod(q)
53-
var s = false
54-
var kv = getKey(x, q, hash, algo)
47+
function dsaSign(hash, priv, algo) {
48+
var x = priv.params.priv_key;
49+
var p = priv.params.p;
50+
var q = priv.params.q;
51+
var g = priv.params.g;
52+
var r = new BN(0);
53+
var k;
54+
var H = bits2int(hash, q).mod(q);
55+
var s = false;
56+
var kv = getKey(x, q, hash, algo);
5557
while (s === false) {
56-
k = makeKey(q, kv, algo)
57-
r = makeR(g, k, p, q)
58-
s = k.invm(q).imul(H.add(x.mul(r))).mod(q)
58+
k = makeKey(q, kv, algo);
59+
r = makeR(g, k, p, q);
60+
s = k.invm(q).imul(H.add(x.mul(r))).mod(q);
5961
if (s.cmpn(0) === 0) {
60-
s = false
61-
r = new BN(0)
62+
s = false;
63+
r = new BN(0);
6264
}
6365
}
64-
return toDER(r, s)
66+
return toDER(r, s);
6567
}
6668

67-
function toDER (r, s) {
68-
r = r.toArray()
69-
s = s.toArray()
69+
function toDER(r, s) {
70+
r = r.toArray();
71+
s = s.toArray();
7072

7173
// Pad values
72-
if (r[0] & 0x80) r = [0].concat(r)
73-
if (s[0] & 0x80) s = [0].concat(s)
74-
75-
var total = r.length + s.length + 4
76-
var res = [0x30, total, 0x02, r.length]
77-
res = res.concat(r, [0x02, s.length], s)
78-
return Buffer.from(res)
74+
if (r[0] & 0x80) { r = [0].concat(r); }
75+
if (s[0] & 0x80) { s = [0].concat(s); }
76+
77+
var total = r.length + s.length + 4;
78+
var res = [
79+
0x30, total, 0x02, r.length
80+
];
81+
res = res.concat(r, [0x02, s.length], s);
82+
return Buffer.from(res);
7983
}
8084

81-
function getKey (x, q, hash, algo) {
82-
x = Buffer.from(x.toArray())
85+
function getKey(x, q, hash, algo) {
86+
x = Buffer.from(x.toArray());
8387
if (x.length < q.byteLength()) {
84-
var zeros = Buffer.alloc(q.byteLength() - x.length)
85-
x = Buffer.concat([zeros, x])
88+
var zeros = Buffer.alloc(q.byteLength() - x.length);
89+
x = Buffer.concat([zeros, x]);
8690
}
87-
var hlen = hash.length
88-
var hbits = bits2octets(hash, q)
89-
var v = Buffer.alloc(hlen)
90-
v.fill(1)
91-
var k = Buffer.alloc(hlen)
92-
k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()
93-
v = createHmac(algo, k).update(v).digest()
94-
k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()
95-
v = createHmac(algo, k).update(v).digest()
96-
return { k: k, v: v }
91+
var hlen = hash.length;
92+
var hbits = bits2octets(hash, q);
93+
var v = Buffer.alloc(hlen);
94+
v.fill(1);
95+
var k = Buffer.alloc(hlen);
96+
k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();
97+
v = createHmac(algo, k).update(v).digest();
98+
k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();
99+
v = createHmac(algo, k).update(v).digest();
100+
return { k: k, v: v };
97101
}
98102

99-
function bits2int (obits, q) {
100-
var bits = new BN(obits)
101-
var shift = (obits.length << 3) - q.bitLength()
102-
if (shift > 0) bits.ishrn(shift)
103-
return bits
103+
function bits2int(obits, q) {
104+
var bits = new BN(obits);
105+
var shift = (obits.length << 3) - q.bitLength();
106+
if (shift > 0) { bits.ishrn(shift); }
107+
return bits;
104108
}
105109

106-
function bits2octets (bits, q) {
107-
bits = bits2int(bits, q)
108-
bits = bits.mod(q)
109-
var out = Buffer.from(bits.toArray())
110+
function bits2octets(bits, q) {
111+
bits = bits2int(bits, q);
112+
bits = bits.mod(q);
113+
var out = Buffer.from(bits.toArray());
110114
if (out.length < q.byteLength()) {
111-
var zeros = Buffer.alloc(q.byteLength() - out.length)
112-
out = Buffer.concat([zeros, out])
115+
var zeros = Buffer.alloc(q.byteLength() - out.length);
116+
out = Buffer.concat([zeros, out]);
113117
}
114-
return out
118+
return out;
115119
}
116120

117-
function makeKey (q, kv, algo) {
118-
var t
119-
var k
121+
function makeKey(q, kv, algo) {
122+
var t;
123+
var k;
120124

121125
do {
122-
t = Buffer.alloc(0)
126+
t = Buffer.alloc(0);
123127

124128
while (t.length * 8 < q.bitLength()) {
125-
kv.v = createHmac(algo, kv.k).update(kv.v).digest()
126-
t = Buffer.concat([t, kv.v])
129+
kv.v = createHmac(algo, kv.k).update(kv.v).digest();
130+
t = Buffer.concat([t, kv.v]);
127131
}
128132

129-
k = bits2int(t, q)
130-
kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()
131-
kv.v = createHmac(algo, kv.k).update(kv.v).digest()
132-
} while (k.cmp(q) !== -1)
133+
k = bits2int(t, q);
134+
kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();
135+
kv.v = createHmac(algo, kv.k).update(kv.v).digest();
136+
} while (k.cmp(q) !== -1);
133137

134-
return k
138+
return k;
135139
}
136140

137-
function makeR (g, k, p, q) {
138-
return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)
141+
function makeR(g, k, p, q) {
142+
return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);
139143
}
140144

141-
module.exports = sign
142-
module.exports.getKey = getKey
143-
module.exports.makeKey = makeKey
145+
module.exports = sign;
146+
module.exports.getKey = getKey;
147+
module.exports.makeKey = makeKey;

‎browser/verify.js

+59-57
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,86 @@
1+
'use strict';
2+
13
// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js
2-
var Buffer = require('safe-buffer').Buffer
3-
var BN = require('bn.js')
4-
var EC = require('elliptic').ec
5-
var parseKeys = require('parse-asn1')
6-
var curves = require('./curves.json')
4+
var Buffer = require('safe-buffer').Buffer;
5+
var BN = require('bn.js');
6+
var EC = require('elliptic').ec;
7+
var parseKeys = require('parse-asn1');
8+
var curves = require('./curves.json');
79

8-
function verify (sig, hash, key, signType, tag) {
9-
var pub = parseKeys(key)
10+
function verify(sig, hash, key, signType, tag) {
11+
var pub = parseKeys(key);
1012
if (pub.type === 'ec') {
1113
// rsa keys can be interpreted as ecdsa ones in openssl
12-
if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')
13-
return ecVerify(sig, hash, pub)
14+
if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }
15+
return ecVerify(sig, hash, pub);
1416
} else if (pub.type === 'dsa') {
15-
if (signType !== 'dsa') throw new Error('wrong public key type')
16-
return dsaVerify(sig, hash, pub)
17-
} else {
18-
if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')
17+
if (signType !== 'dsa') { throw new Error('wrong public key type'); }
18+
return dsaVerify(sig, hash, pub);
1919
}
20-
hash = Buffer.concat([tag, hash])
21-
var len = pub.modulus.byteLength()
22-
var pad = [1]
23-
var padNum = 0
20+
if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }
21+
22+
hash = Buffer.concat([tag, hash]);
23+
var len = pub.modulus.byteLength();
24+
var pad = [1];
25+
var padNum = 0;
2426
while (hash.length + pad.length + 2 < len) {
25-
pad.push(0xff)
26-
padNum++
27+
pad.push(0xff);
28+
padNum += 1;
2729
}
28-
pad.push(0x00)
29-
var i = -1
30+
pad.push(0x00);
31+
var i = -1;
3032
while (++i < hash.length) {
31-
pad.push(hash[i])
33+
pad.push(hash[i]);
3234
}
33-
pad = Buffer.from(pad)
34-
var red = BN.mont(pub.modulus)
35-
sig = new BN(sig).toRed(red)
35+
pad = Buffer.from(pad);
36+
var red = BN.mont(pub.modulus);
37+
sig = new BN(sig).toRed(red);
3638

37-
sig = sig.redPow(new BN(pub.publicExponent))
38-
sig = Buffer.from(sig.fromRed().toArray())
39-
var out = padNum < 8 ? 1 : 0
40-
len = Math.min(sig.length, pad.length)
41-
if (sig.length !== pad.length) out = 1
39+
sig = sig.redPow(new BN(pub.publicExponent));
40+
sig = Buffer.from(sig.fromRed().toArray());
41+
var out = padNum < 8 ? 1 : 0;
42+
len = Math.min(sig.length, pad.length);
43+
if (sig.length !== pad.length) { out = 1; }
4244

43-
i = -1
44-
while (++i < len) out |= sig[i] ^ pad[i]
45-
return out === 0
45+
i = -1;
46+
while (++i < len) { out |= sig[i] ^ pad[i]; }
47+
return out === 0;
4648
}
4749

48-
function ecVerify (sig, hash, pub) {
49-
var curveId = curves[pub.data.algorithm.curve.join('.')]
50-
if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))
50+
function ecVerify(sig, hash, pub) {
51+
var curveId = curves[pub.data.algorithm.curve.join('.')];
52+
if (!curveId) { throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')); }
5153

52-
var curve = new EC(curveId)
53-
var pubkey = pub.data.subjectPrivateKey.data
54+
var curve = new EC(curveId);
55+
var pubkey = pub.data.subjectPrivateKey.data;
5456

55-
return curve.verify(hash, sig, pubkey)
57+
return curve.verify(hash, sig, pubkey);
5658
}
5759

58-
function dsaVerify (sig, hash, pub) {
59-
var p = pub.data.p
60-
var q = pub.data.q
61-
var g = pub.data.g
62-
var y = pub.data.pub_key
63-
var unpacked = parseKeys.signature.decode(sig, 'der')
64-
var s = unpacked.s
65-
var r = unpacked.r
66-
checkValue(s, q)
67-
checkValue(r, q)
68-
var montp = BN.mont(p)
69-
var w = s.invm(q)
60+
function dsaVerify(sig, hash, pub) {
61+
var p = pub.data.p;
62+
var q = pub.data.q;
63+
var g = pub.data.g;
64+
var y = pub.data.pub_key;
65+
var unpacked = parseKeys.signature.decode(sig, 'der');
66+
var s = unpacked.s;
67+
var r = unpacked.r;
68+
checkValue(s, q);
69+
checkValue(r, q);
70+
var montp = BN.mont(p);
71+
var w = s.invm(q);
7072
var v = g.toRed(montp)
7173
.redPow(new BN(hash).mul(w).mod(q))
7274
.fromRed()
7375
.mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())
7476
.mod(p)
75-
.mod(q)
76-
return v.cmp(r) === 0
77+
.mod(q);
78+
return v.cmp(r) === 0;
7779
}
7880

79-
function checkValue (b, q) {
80-
if (b.cmpn(0) <= 0) throw new Error('invalid sig')
81-
if (b.cmp(q) >= q) throw new Error('invalid sig')
81+
function checkValue(b, q) {
82+
if (b.cmpn(0) <= 0) { throw new Error('invalid sig'); }
83+
if (b.cmp(q) >= q) { throw new Error('invalid sig'); }
8284
}
8385

84-
module.exports = verify
86+
module.exports = verify;

‎index.js

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
var crypto = require('crypto')
1+
'use strict';
22

3-
exports.createSign = crypto.createSign
4-
exports.Sign = crypto.Sign
3+
var crypto = require('crypto');
54

6-
exports.createVerify = crypto.createVerify
7-
exports.Verify = crypto.Verify
5+
exports.createSign = crypto.createSign;
6+
exports.Sign = crypto.Sign;
7+
8+
exports.createVerify = crypto.createVerify;
9+
exports.Verify = crypto.Verify;

‎package.json

+7-5
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@
1717
"url": "https://github.com/crypto-browserify/browserify-sign.git"
1818
},
1919
"scripts": {
20-
"coverage": "nyc npm run unit",
21-
"lint": "standard",
22-
"test": "npm run lint && npm run unit",
23-
"unit": "tape test/*.js"
20+
"coverage": "nyc npm run tests-only",
21+
"lint": "eslint --ext=js,mjs .",
22+
"tests-only": "tape 'test/**/*.js'",
23+
"pretest": "npm run lint",
24+
"test": "npm run tests-only"
2425
},
2526
"dependencies": {
2627
"bn.js": "^5.2.1",
@@ -34,8 +35,9 @@
3435
"safe-buffer": "^5.2.1"
3536
},
3637
"devDependencies": {
38+
"@ljharb/eslint-config": "^21.1.0",
39+
"eslint": "^8.8.0",
3740
"nyc": "^15.1.0",
38-
"standard": "^14.3.4",
3941
"tape": "^5.6.6"
4042
},
4143
"browser": "browser/index.js"

‎test/index.js

+83-81
Original file line numberDiff line numberDiff line change
@@ -1,132 +1,134 @@
1-
var Buffer = require('safe-buffer').Buffer
2-
var asn1 = require('parse-asn1/asn1')
3-
var test = require('tape').test
4-
var nCrypto = require('crypto')
5-
var bCrypto = require('../browser')
6-
var fixtures = require('./fixtures')
7-
8-
function isNode10 () {
9-
return parseInt(process.version.split('.')[1], 10) <= 10
1+
'use strict';
2+
3+
var Buffer = require('safe-buffer').Buffer;
4+
var asn1 = require('parse-asn1/asn1');
5+
var test = require('tape').test;
6+
var nCrypto = require('crypto');
7+
var bCrypto = require('../browser');
8+
var fixtures = require('./fixtures');
9+
10+
function isNode10() {
11+
return parseInt(process.version.split('.')[1], 10) <= 10;
1012
}
1113

1214
fixtures.valid.rsa.forEach(function (f) {
13-
var message = Buffer.from(f.message)
14-
var pub = Buffer.from(f.public, 'base64')
15-
var priv
15+
var message = Buffer.from(f.message);
16+
var pub = Buffer.from(f['public'], 'base64');
17+
var priv;
1618

1719
// skip passphrase tests in node 10
18-
if (f.passphrase && isNode10()) return
20+
if (f.passphrase && isNode10()) { return; }
1921

2022
if (f.passphrase) {
2123
priv = {
22-
key: Buffer.from(f.private, 'base64'),
24+
key: Buffer.from(f['private'], 'base64'),
2325
passphrase: f.passphrase
24-
}
26+
};
2527
} else {
26-
priv = Buffer.from(f.private, 'base64')
28+
priv = Buffer.from(f['private'], 'base64');
2729
}
2830

2931
test(f.message, function (t) {
30-
var bSign = bCrypto.createSign(f.scheme)
31-
var nSign = nCrypto.createSign(f.scheme)
32-
var bSig = bSign.update(message).sign(priv)
33-
var nSig = nSign.update(message).sign(priv)
32+
var bSign = bCrypto.createSign(f.scheme);
33+
var nSign = nCrypto.createSign(f.scheme);
34+
var bSig = bSign.update(message).sign(priv);
35+
var nSig = nSign.update(message).sign(priv);
3436

35-
t.equals(bSig.length, nSig.length, 'correct length')
36-
t.equals(bSig.toString('hex'), nSig.toString('hex'), 'equal sigs')
37-
t.equals(bSig.toString('hex'), f.signature, 'compare to known')
37+
t.equals(bSig.length, nSig.length, 'correct length');
38+
t.equals(bSig.toString('hex'), nSig.toString('hex'), 'equal sigs');
39+
t.equals(bSig.toString('hex'), f.signature, 'compare to known');
3840

39-
t.ok(nCrypto.createVerify(f.scheme).update(message).verify(pub, nSig), 'node validate node sig')
40-
t.ok(nCrypto.createVerify(f.scheme).update(message).verify(pub, bSig), 'node validate browser sig')
41+
t.ok(nCrypto.createVerify(f.scheme).update(message).verify(pub, nSig), 'node validate node sig');
42+
t.ok(nCrypto.createVerify(f.scheme).update(message).verify(pub, bSig), 'node validate browser sig');
4143

42-
t.ok(bCrypto.createVerify(f.scheme).update(message).verify(pub, nSig), 'browser validate node sig')
43-
t.ok(bCrypto.createVerify(f.scheme).update(message).verify(pub, bSig), 'browser validate browser sig')
44+
t.ok(bCrypto.createVerify(f.scheme).update(message).verify(pub, nSig), 'browser validate node sig');
45+
t.ok(bCrypto.createVerify(f.scheme).update(message).verify(pub, bSig), 'browser validate browser sig');
4446

45-
t.end()
46-
})
47-
})
47+
t.end();
48+
});
49+
});
4850

4951
fixtures.valid.ec.forEach(function (f) {
50-
var message = Buffer.from(f.message)
51-
var pub = Buffer.from(f.public, 'base64')
52-
var priv
52+
var message = Buffer.from(f.message);
53+
var pub = Buffer.from(f['public'], 'base64');
54+
var priv;
5355

5456
// skip passphrase tests in node 10
55-
if (f.passphrase && isNode10()) return
57+
if (f.passphrase && isNode10()) { return; }
5658

5759
if (f.passphrase) {
5860
priv = {
59-
key: Buffer.from(f.private, 'base64'),
61+
key: Buffer.from(f['private'], 'base64'),
6062
passphrase: f.passphrase
61-
}
63+
};
6264
} else {
63-
priv = Buffer.from(f.private, 'base64')
65+
priv = Buffer.from(f['private'], 'base64');
6466
}
6567

6668
(nCrypto.getHashes().includes(f.scheme) ? test : test.skip)(f.message, function (t) {
67-
var nSign = nCrypto.createSign(f.scheme)
68-
var bSign = bCrypto.createSign(f.scheme)
69+
var nSign = nCrypto.createSign(f.scheme);
70+
var bSign = bCrypto.createSign(f.scheme);
6971

70-
var bSig = bSign.update(message).sign(priv)
71-
var nSig = nSign.update(message).sign(priv)
72-
t.notEqual(bSig.toString('hex'), nSig.toString('hex'), 'not equal sigs')
73-
t.equals(bSig.toString('hex'), f.signature, 'sig is determanistic')
72+
var bSig = bSign.update(message).sign(priv);
73+
var nSig = nSign.update(message).sign(priv);
74+
t.notEqual(bSig.toString('hex'), nSig.toString('hex'), 'not equal sigs');
75+
t.equals(bSig.toString('hex'), f.signature, 'sig is determanistic');
7476

75-
var nVer = nCrypto.createVerify(f.scheme)
76-
t.ok(nVer.update(message).verify(pub, bSig), 'node validate browser sig')
77+
var nVer = nCrypto.createVerify(f.scheme);
78+
t.ok(nVer.update(message).verify(pub, bSig), 'node validate browser sig');
7779

78-
var bVer = bCrypto.createVerify(f.scheme)
79-
t.ok(bVer.update(message).verify(pub, nSig), 'browser validate node sig')
80+
var bVer = bCrypto.createVerify(f.scheme);
81+
t.ok(bVer.update(message).verify(pub, nSig), 'browser validate node sig');
8082

81-
t.end()
82-
})
83+
t.end();
84+
});
8385
if (f.scheme !== 'DSA' && f.scheme.toLowerCase().indexOf('dsa') === -1) {
8486
test(f.message + ' named rsa through', function (t) {
85-
var scheme = 'RSA-' + f.scheme.toUpperCase()
86-
var nSign = nCrypto.createSign(scheme)
87-
var bSign = bCrypto.createSign(scheme)
87+
var scheme = 'RSA-' + f.scheme.toUpperCase();
88+
var nSign = nCrypto.createSign(scheme);
89+
var bSign = bCrypto.createSign(scheme);
8890

89-
var bSig = bSign.update(message).sign(priv)
90-
var nSig = nSign.update(message).sign(priv)
91-
t.notEqual(bSig.toString('hex'), nSig.toString('hex'), 'not equal sigs')
92-
t.equals(bSig.toString('hex'), f.signature, 'sig is determanistic')
91+
var bSig = bSign.update(message).sign(priv);
92+
var nSig = nSign.update(message).sign(priv);
93+
t.notEqual(bSig.toString('hex'), nSig.toString('hex'), 'not equal sigs');
94+
t.equals(bSig.toString('hex'), f.signature, 'sig is determanistic');
9395

94-
var nVer = nCrypto.createVerify(f.scheme)
95-
t.ok(nVer.update(message).verify(pub, bSig), 'node validate browser sig')
96+
var nVer = nCrypto.createVerify(f.scheme);
97+
t.ok(nVer.update(message).verify(pub, bSig), 'node validate browser sig');
9698

97-
var bVer = bCrypto.createVerify(f.scheme)
98-
t.ok(bVer.update(message).verify(pub, nSig), 'browser validate node sig')
99+
var bVer = bCrypto.createVerify(f.scheme);
100+
t.ok(bVer.update(message).verify(pub, nSig), 'browser validate node sig');
99101

100-
t.end()
101-
})
102+
t.end();
103+
});
102104
}
103-
})
105+
});
104106

105107
fixtures.valid.kvectors.forEach(function (f) {
106108
test('kvector algo: ' + f.algo + ' key len: ' + f.key.length + ' msg: ' + f.msg, function (t) {
107-
var key = Buffer.from(f.key, 'base64')
109+
var key = Buffer.from(f.key, 'base64');
108110

109-
var bSig = bCrypto.createSign(f.algo).update(f.msg).sign(key)
110-
var bRS = asn1.signature.decode(bSig, 'der')
111-
t.equals(bRS.r.toString(16), f.r.toLowerCase(), 'r')
112-
t.equals(bRS.s.toString(16), f.s.toLowerCase(), 's')
111+
var bSig = bCrypto.createSign(f.algo).update(f.msg).sign(key);
112+
var bRS = asn1.signature.decode(bSig, 'der');
113+
t.equals(bRS.r.toString(16), f.r.toLowerCase(), 'r');
114+
t.equals(bRS.s.toString(16), f.s.toLowerCase(), 's');
113115

114-
t.end()
115-
})
116-
})
116+
t.end();
117+
});
118+
});
117119

118120
fixtures.invalid.verify.forEach(function (f) {
119121
test(f.description, function (t) {
120-
var sign = Buffer.from(f.signature, 'hex')
121-
var pub = Buffer.from(f.public, 'base64')
122-
var message = Buffer.from(f.message)
122+
var sign = Buffer.from(f.signature, 'hex');
123+
var pub = Buffer.from(f['public'], 'base64');
124+
var message = Buffer.from(f.message);
123125

124-
var nVerify = nCrypto.createVerify(f.scheme).update(message).verify(pub, sign)
125-
t.notOk(nVerify, 'node rejects it')
126+
var nVerify = nCrypto.createVerify(f.scheme).update(message).verify(pub, sign);
127+
t.notOk(nVerify, 'node rejects it');
126128

127-
var bVerify = bCrypto.createVerify(f.scheme).update(message).verify(pub, sign)
128-
t.notOk(bVerify, 'We reject it')
129+
var bVerify = bCrypto.createVerify(f.scheme).update(message).verify(pub, sign);
130+
t.notOk(bVerify, 'We reject it');
129131

130-
t.end()
131-
})
132-
})
132+
t.end();
133+
});
134+
});

0 commit comments

Comments
 (0)
Please sign in to comment.