@airgap/coinlib-core 0.13.46 → 0.13.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dependencies/src/axios-0.33.0/index.d.ts +345 -0
- package/dependencies/src/axios-0.33.0/lib/adapters/http.js +771 -0
- package/dependencies/src/axios-0.33.0/lib/adapters/xhr.js +305 -0
- package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/axios.js +22 -7
- package/dependencies/src/axios-0.33.0/lib/cancel/CancelToken.js +118 -0
- package/dependencies/src/axios-0.33.0/lib/cancel/CanceledError.js +24 -0
- package/dependencies/src/axios-0.33.0/lib/core/Axios.js +178 -0
- package/dependencies/src/axios-0.33.0/lib/core/AxiosError.js +173 -0
- package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/core/InterceptorManager.js +13 -2
- package/dependencies/src/axios-0.33.0/lib/core/buildFullPath.js +23 -0
- package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/core/dispatchRequest.js +34 -16
- package/dependencies/src/axios-0.33.0/lib/core/mergeConfig.js +117 -0
- package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/core/settle.js +4 -4
- package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/core/transformData.js +5 -2
- package/dependencies/src/axios-0.33.0/lib/defaults/index.js +181 -0
- package/dependencies/src/axios-0.33.0/lib/defaults/transitional.js +7 -0
- package/dependencies/src/axios-0.33.0/lib/env/classes/FormData.js +2 -0
- package/dependencies/src/axios-0.33.0/lib/env/data.js +3 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/AxiosURLSearchParams.js +50 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/bind.js +7 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/buildURL.js +63 -0
- package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/helpers/combineURLs.js +1 -1
- package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/helpers/cookies.js +15 -2
- package/dependencies/src/axios-0.33.0/lib/helpers/defaultRedactKeys.js +3 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/estimateDataURLDecodedBytes.js +79 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/formDataToJSON.js +91 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/fromDataURI.js +51 -0
- package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/helpers/isAbsoluteURL.js +1 -1
- package/dependencies/src/axios-0.33.0/lib/helpers/isAxiosError.js +13 -0
- package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/helpers/isURLSameOrigin.js +12 -12
- package/dependencies/src/axios-0.33.0/lib/helpers/null.js +2 -0
- package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/helpers/parseHeaders.js +2 -2
- package/dependencies/src/axios-0.33.0/lib/helpers/parseProtocol.js +6 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/sanitizeHeaderValue.js +22 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/shouldBypassProxy.js +187 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/toFormData.js +212 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/toURLEncodedForm.js +18 -0
- package/dependencies/src/axios-0.33.0/lib/helpers/validator.js +86 -0
- package/dependencies/src/axios-0.33.0/lib/platform/browser/classes/FormData.js +3 -0
- package/dependencies/src/axios-0.33.0/lib/platform/browser/classes/URLSearchParams.js +5 -0
- package/dependencies/src/axios-0.33.0/lib/platform/browser/index.js +11 -0
- package/dependencies/src/axios-0.33.0/lib/platform/index.js +3 -0
- package/dependencies/src/axios-0.33.0/lib/platform/node/classes/FormData.js +3 -0
- package/dependencies/src/axios-0.33.0/lib/platform/node/classes/URLSearchParams.js +5 -0
- package/dependencies/src/axios-0.33.0/lib/platform/node/index.js +11 -0
- package/dependencies/src/axios-0.33.0/lib/utils.js +565 -0
- package/dependencies/src/axios-0.33.0/package.json +100 -0
- package/dependencies/src/{bn.js-4.11.8 → bn.js-4.11.9}/lib/bn.js +7 -1
- package/dependencies/src/{elliptic-6.5.3 → elliptic-6.6.1}/lib/elliptic/curve/base.js +36 -31
- package/dependencies/src/{elliptic-6.5.1 → elliptic-6.6.1}/lib/elliptic/curve/edwards.js +13 -10
- package/dependencies/src/{elliptic-6.5.3 → elliptic-6.6.1}/lib/elliptic/curve/mont.js +1 -1
- package/dependencies/src/{elliptic-6.5.1 → elliptic-6.6.1}/lib/elliptic/curve/short.js +48 -47
- package/dependencies/src/{elliptic-6.5.3 → elliptic-6.6.1}/lib/elliptic/curves.js +21 -21
- package/dependencies/src/{elliptic-6.5.1 → elliptic-6.6.1}/lib/elliptic/ec/index.js +53 -16
- package/dependencies/src/{elliptic-6.5.3 → elliptic-6.6.1}/lib/elliptic/ec/key.js +8 -5
- package/dependencies/src/{elliptic-6.5.3 → elliptic-6.6.1}/lib/elliptic/ec/signature.js +11 -1
- package/dependencies/src/{elliptic-6.5.3 → elliptic-6.6.1}/lib/elliptic/eddsa/index.js +5 -2
- package/dependencies/src/{elliptic-6.5.3 → elliptic-6.6.1}/lib/elliptic/eddsa/signature.js +3 -2
- package/dependencies/src/{elliptic-6.5.1 → elliptic-6.6.1}/lib/elliptic/precomputed/secp256k1.js +197 -197
- package/dependencies/src/{elliptic-6.5.3 → elliptic-6.6.1}/lib/elliptic/utils.js +12 -9
- package/dependencies/src/{elliptic-6.5.1 → elliptic-6.6.1}/package.json +20 -22
- package/dependencies/src/ethereumjs-util-5.2.0/index.js +1 -1
- package/dependencies/src/follow-redirects-1.16.0/debug.js +15 -0
- package/dependencies/src/follow-redirects-1.16.0/index.js +709 -0
- package/dependencies/src/follow-redirects-1.16.0/package.json +58 -0
- package/dependencies/src/proxy-from-env-1.1.0/index.js +108 -0
- package/dependencies/src/proxy-from-env-1.1.0/package.json +34 -0
- package/dependencies/src/secp256k1-3.7.1/lib/elliptic/index.js +2 -2
- package/dependencies/src/secp256k1-4.0.2/lib/elliptic.js +1 -1
- package/dependencies/src/tiny-secp256k1-1.1.3/js.js +2 -2
- package/errors/index.d.ts +2 -2
- package/errors/index.js.map +1 -1
- package/package.json +2 -2
- package/utils/remote-data/HttpRemoteData.js +3 -8
- package/utils/remote-data/HttpRemoteData.js.map +1 -1
- package/utils/remote-data/IpfsRemoteData.js +13 -7
- package/utils/remote-data/IpfsRemoteData.js.map +1 -1
- package/utils/remote-data/Sha256RemoteData.js +5 -6
- package/utils/remote-data/Sha256RemoteData.js.map +1 -1
- package/utils/remote-data/remoteDataRequest.d.ts +16 -0
- package/utils/remote-data/remoteDataRequest.js +240 -0
- package/utils/remote-data/remoteDataRequest.js.map +1 -0
- package/dependencies/src/axios-0.19.0/index.d.ts +0 -152
- package/dependencies/src/axios-0.19.0/lib/adapters/http.js +0 -275
- package/dependencies/src/axios-0.19.0/lib/adapters/xhr.js +0 -174
- package/dependencies/src/axios-0.19.0/lib/cancel/Cancel.js +0 -19
- package/dependencies/src/axios-0.19.0/lib/cancel/CancelToken.js +0 -57
- package/dependencies/src/axios-0.19.0/lib/core/Axios.js +0 -86
- package/dependencies/src/axios-0.19.0/lib/core/createError.js +0 -18
- package/dependencies/src/axios-0.19.0/lib/core/enhanceError.js +0 -42
- package/dependencies/src/axios-0.19.0/lib/core/mergeConfig.js +0 -51
- package/dependencies/src/axios-0.19.0/lib/defaults.js +0 -98
- package/dependencies/src/axios-0.19.0/lib/helpers/bind.js +0 -11
- package/dependencies/src/axios-0.19.0/lib/helpers/buildURL.js +0 -71
- package/dependencies/src/axios-0.19.0/lib/utils.js +0 -334
- package/dependencies/src/axios-0.19.0/package.json +0 -85
- package/dependencies/src/elliptic-6.5.1/lib/elliptic/curve/base.js +0 -374
- package/dependencies/src/elliptic-6.5.1/lib/elliptic/curve/mont.js +0 -178
- package/dependencies/src/elliptic-6.5.1/lib/elliptic/curves.js +0 -206
- package/dependencies/src/elliptic-6.5.1/lib/elliptic/ec/key.js +0 -118
- package/dependencies/src/elliptic-6.5.1/lib/elliptic/ec/signature.js +0 -134
- package/dependencies/src/elliptic-6.5.1/lib/elliptic/eddsa/index.js +0 -118
- package/dependencies/src/elliptic-6.5.1/lib/elliptic/eddsa/signature.js +0 -65
- package/dependencies/src/elliptic-6.5.1/lib/elliptic/utils.js +0 -120
- package/dependencies/src/elliptic-6.5.3/lib/elliptic/curve/edwards.js +0 -432
- package/dependencies/src/elliptic-6.5.3/lib/elliptic/curve/index.js +0 -8
- package/dependencies/src/elliptic-6.5.3/lib/elliptic/curve/short.js +0 -937
- package/dependencies/src/elliptic-6.5.3/lib/elliptic/ec/index.js +0 -241
- package/dependencies/src/elliptic-6.5.3/lib/elliptic/eddsa/key.js +0 -95
- package/dependencies/src/elliptic-6.5.3/lib/elliptic/precomputed/secp256k1.js +0 -780
- package/dependencies/src/elliptic-6.5.3/lib/elliptic.js +0 -13
- package/dependencies/src/elliptic-6.5.3/package.json +0 -55
- package/dependencies/src/follow-redirects-1.5.10/index.js +0 -322
- package/dependencies/src/is-buffer-2.0.3/index.js +0 -11
- /package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/index.js +0 -0
- /package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/cancel/isCancel.js +0 -0
- /package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/helpers/deprecatedMethod.js +0 -0
- /package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/helpers/normalizeHeaderName.js +0 -0
- /package/dependencies/src/{axios-0.19.0 → axios-0.33.0}/lib/helpers/spread.js +0 -0
- /package/dependencies/src/{elliptic-6.5.1 → elliptic-6.6.1}/lib/elliptic/curve/index.js +0 -0
- /package/dependencies/src/{elliptic-6.5.1 → elliptic-6.6.1}/lib/elliptic/eddsa/key.js +0 -0
- /package/dependencies/src/{elliptic-6.5.1 → elliptic-6.6.1}/lib/elliptic.js +0 -0
- /package/dependencies/src/{follow-redirects-1.5.10 → follow-redirects-1.16.0}/http.js +0 -0
- /package/dependencies/src/{follow-redirects-1.5.10 → follow-redirects-1.16.0}/https.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var BN = require('../../../../bn.js-4.11.
|
|
3
|
+
var BN = require('../../../../bn.js-4.11.9/lib/bn');
|
|
4
4
|
var HmacDRBG = require('../../../../hmac-drbg-1.0.1/lib/hmac-drbg');
|
|
5
5
|
var utils = require('../utils');
|
|
6
6
|
var curves = require('../curves');
|
|
@@ -16,7 +16,8 @@ function EC(options) {
|
|
|
16
16
|
|
|
17
17
|
// Shortcut `elliptic.ec(curve-name)`
|
|
18
18
|
if (typeof options === 'string') {
|
|
19
|
-
assert(
|
|
19
|
+
assert(Object.prototype.hasOwnProperty.call(curves, options),
|
|
20
|
+
'Unknown curve ' + options);
|
|
20
21
|
|
|
21
22
|
options = curves[options];
|
|
22
23
|
}
|
|
@@ -62,23 +63,42 @@ EC.prototype.genKeyPair = function genKeyPair(options) {
|
|
|
62
63
|
persEnc: options.persEnc || 'utf8',
|
|
63
64
|
entropy: options.entropy || rand(this.hash.hmacStrength),
|
|
64
65
|
entropyEnc: options.entropy && options.entropyEnc || 'utf8',
|
|
65
|
-
nonce: this.n.toArray()
|
|
66
|
+
nonce: this.n.toArray(),
|
|
66
67
|
});
|
|
67
68
|
|
|
68
69
|
var bytes = this.n.byteLength();
|
|
69
70
|
var ns2 = this.n.sub(new BN(2));
|
|
70
|
-
|
|
71
|
+
for (;;) {
|
|
71
72
|
var priv = new BN(drbg.generate(bytes));
|
|
72
73
|
if (priv.cmp(ns2) > 0)
|
|
73
74
|
continue;
|
|
74
75
|
|
|
75
76
|
priv.iaddn(1);
|
|
76
77
|
return this.keyFromPrivate(priv);
|
|
77
|
-
}
|
|
78
|
+
}
|
|
78
79
|
};
|
|
79
80
|
|
|
80
|
-
EC.prototype._truncateToN = function
|
|
81
|
-
var
|
|
81
|
+
EC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) {
|
|
82
|
+
var byteLength;
|
|
83
|
+
if (BN.isBN(msg) || typeof msg === 'number') {
|
|
84
|
+
msg = new BN(msg, 16);
|
|
85
|
+
byteLength = msg.byteLength();
|
|
86
|
+
} else if (typeof msg === 'object') {
|
|
87
|
+
// BN assumes an array-like input and asserts length
|
|
88
|
+
byteLength = msg.length;
|
|
89
|
+
msg = new BN(msg, 16);
|
|
90
|
+
} else {
|
|
91
|
+
// BN converts the value to string
|
|
92
|
+
var str = msg.toString();
|
|
93
|
+
// HEX encoding
|
|
94
|
+
byteLength = (str.length + 1) >>> 1;
|
|
95
|
+
msg = new BN(str, 16);
|
|
96
|
+
}
|
|
97
|
+
// Allow overriding
|
|
98
|
+
if (typeof bitLength !== 'number') {
|
|
99
|
+
bitLength = byteLength * 8;
|
|
100
|
+
}
|
|
101
|
+
var delta = bitLength - this.n.bitLength();
|
|
82
102
|
if (delta > 0)
|
|
83
103
|
msg = msg.ushrn(delta);
|
|
84
104
|
if (!truncOnly && msg.cmp(this.n) >= 0)
|
|
@@ -95,8 +115,18 @@ EC.prototype.sign = function sign(msg, key, enc, options) {
|
|
|
95
115
|
if (!options)
|
|
96
116
|
options = {};
|
|
97
117
|
|
|
118
|
+
if (typeof msg !== 'string' && typeof msg !== 'number' && !BN.isBN(msg)) {
|
|
119
|
+
assert(typeof msg === 'object' && msg && typeof msg.length === 'number',
|
|
120
|
+
'Expected message to be an array-like, a hex string, or a BN instance');
|
|
121
|
+
assert((msg.length >>> 0) === msg.length); // non-negative 32-bit integer
|
|
122
|
+
for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]);
|
|
123
|
+
}
|
|
124
|
+
|
|
98
125
|
key = this.keyFromPrivate(key, enc);
|
|
99
|
-
msg = this._truncateToN(
|
|
126
|
+
msg = this._truncateToN(msg, false, options.msgBitLength);
|
|
127
|
+
|
|
128
|
+
// Would fail further checks, but let's make the error message clear
|
|
129
|
+
assert(!msg.isNeg(), 'Can not sign a negative message');
|
|
100
130
|
|
|
101
131
|
// Zero-extend key to provide enough entropy
|
|
102
132
|
var bytes = this.n.byteLength();
|
|
@@ -105,22 +135,25 @@ EC.prototype.sign = function sign(msg, key, enc, options) {
|
|
|
105
135
|
// Zero-extend nonce to have the same byte size as N
|
|
106
136
|
var nonce = msg.toArray('be', bytes);
|
|
107
137
|
|
|
138
|
+
// Recheck nonce to be bijective to msg
|
|
139
|
+
assert((new BN(nonce)).eq(msg), 'Can not sign message');
|
|
140
|
+
|
|
108
141
|
// Instantiate Hmac_DRBG
|
|
109
142
|
var drbg = new HmacDRBG({
|
|
110
143
|
hash: this.hash,
|
|
111
144
|
entropy: bkey,
|
|
112
145
|
nonce: nonce,
|
|
113
146
|
pers: options.pers,
|
|
114
|
-
persEnc: options.persEnc || 'utf8'
|
|
147
|
+
persEnc: options.persEnc || 'utf8',
|
|
115
148
|
});
|
|
116
149
|
|
|
117
150
|
// Number of bytes to generate
|
|
118
151
|
var ns1 = this.n.sub(new BN(1));
|
|
119
152
|
|
|
120
|
-
for (var iter = 0;
|
|
153
|
+
for (var iter = 0; ; iter++) {
|
|
121
154
|
var k = options.k ?
|
|
122
|
-
|
|
123
|
-
|
|
155
|
+
options.k(iter) :
|
|
156
|
+
new BN(drbg.generate(this.n.byteLength()));
|
|
124
157
|
k = this._truncateToN(k, true);
|
|
125
158
|
if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
|
|
126
159
|
continue;
|
|
@@ -152,8 +185,11 @@ EC.prototype.sign = function sign(msg, key, enc, options) {
|
|
|
152
185
|
}
|
|
153
186
|
};
|
|
154
187
|
|
|
155
|
-
EC.prototype.verify = function verify(msg, signature, key, enc) {
|
|
156
|
-
|
|
188
|
+
EC.prototype.verify = function verify(msg, signature, key, enc, options) {
|
|
189
|
+
if (!options)
|
|
190
|
+
options = {};
|
|
191
|
+
|
|
192
|
+
msg = this._truncateToN(msg, false, options.msgBitLength);
|
|
157
193
|
key = this.keyFromPublic(key, enc);
|
|
158
194
|
signature = new Signature(signature, 'hex');
|
|
159
195
|
|
|
@@ -169,9 +205,10 @@ EC.prototype.verify = function verify(msg, signature, key, enc) {
|
|
|
169
205
|
var sinv = s.invm(this.n);
|
|
170
206
|
var u1 = sinv.mul(msg).umod(this.n);
|
|
171
207
|
var u2 = sinv.mul(r).umod(this.n);
|
|
208
|
+
var p;
|
|
172
209
|
|
|
173
210
|
if (!this.curve._maxwellTrick) {
|
|
174
|
-
|
|
211
|
+
p = this.g.mulAdd(u1, key.getPublic(), u2);
|
|
175
212
|
if (p.isInfinity())
|
|
176
213
|
return false;
|
|
177
214
|
|
|
@@ -181,7 +218,7 @@ EC.prototype.verify = function verify(msg, signature, key, enc) {
|
|
|
181
218
|
// NOTE: Greg Maxwell's trick, inspired by:
|
|
182
219
|
// https://git.io/vad3K
|
|
183
220
|
|
|
184
|
-
|
|
221
|
+
p = this.g.jmulAdd(u1, key.getPublic(), u2);
|
|
185
222
|
if (p.isInfinity())
|
|
186
223
|
return false;
|
|
187
224
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var BN = require('../../../../bn.js-4.11.
|
|
3
|
+
var BN = require('../../../../bn.js-4.11.9/lib/bn');
|
|
4
4
|
var utils = require('../utils');
|
|
5
5
|
var assert = utils.assert;
|
|
6
6
|
|
|
@@ -23,7 +23,7 @@ KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
|
|
|
23
23
|
|
|
24
24
|
return new KeyPair(ec, {
|
|
25
25
|
pub: pub,
|
|
26
|
-
pubEnc: enc
|
|
26
|
+
pubEnc: enc,
|
|
27
27
|
});
|
|
28
28
|
};
|
|
29
29
|
|
|
@@ -33,7 +33,7 @@ KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
|
|
|
33
33
|
|
|
34
34
|
return new KeyPair(ec, {
|
|
35
35
|
priv: priv,
|
|
36
|
-
privEnc: enc
|
|
36
|
+
privEnc: enc,
|
|
37
37
|
});
|
|
38
38
|
};
|
|
39
39
|
|
|
@@ -100,6 +100,9 @@ KeyPair.prototype._importPublic = function _importPublic(key, enc) {
|
|
|
100
100
|
|
|
101
101
|
// ECDH
|
|
102
102
|
KeyPair.prototype.derive = function derive(pub) {
|
|
103
|
+
if(!pub.validate()) {
|
|
104
|
+
assert(pub.validate(), 'public point not validated');
|
|
105
|
+
}
|
|
103
106
|
return pub.mul(this.priv).getX();
|
|
104
107
|
};
|
|
105
108
|
|
|
@@ -108,8 +111,8 @@ KeyPair.prototype.sign = function sign(msg, enc, options) {
|
|
|
108
111
|
return this.ec.sign(msg, this, enc, options);
|
|
109
112
|
};
|
|
110
113
|
|
|
111
|
-
KeyPair.prototype.verify = function verify(msg, signature) {
|
|
112
|
-
return this.ec.verify(msg, signature, this);
|
|
114
|
+
KeyPair.prototype.verify = function verify(msg, signature, options) {
|
|
115
|
+
return this.ec.verify(msg, signature, this, undefined, options);
|
|
113
116
|
};
|
|
114
117
|
|
|
115
118
|
KeyPair.prototype.inspect = function inspect() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var BN = require('../../../../bn.js-4.11.
|
|
3
|
+
var BN = require('../../../../bn.js-4.11.9/lib/bn');
|
|
4
4
|
|
|
5
5
|
var utils = require('../utils');
|
|
6
6
|
var assert = utils.assert;
|
|
@@ -38,6 +38,10 @@ function getLength(buf, p) {
|
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
if(buf[p.place] === 0x00) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
|
|
41
45
|
var val = 0;
|
|
42
46
|
for (var i = 0, off = p.place; i < octetLen; i++, off++) {
|
|
43
47
|
val <<= 8;
|
|
@@ -86,6 +90,9 @@ Signature.prototype._importDER = function _importDER(data, enc) {
|
|
|
86
90
|
if (rlen === false) {
|
|
87
91
|
return false;
|
|
88
92
|
}
|
|
93
|
+
if ((data[p.place] & 128) !== 0) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
89
96
|
var r = data.slice(p.place, rlen + p.place);
|
|
90
97
|
p.place += rlen;
|
|
91
98
|
if (data[p.place++] !== 0x02) {
|
|
@@ -98,6 +105,9 @@ Signature.prototype._importDER = function _importDER(data, enc) {
|
|
|
98
105
|
if (data.length !== slen + p.place) {
|
|
99
106
|
return false;
|
|
100
107
|
}
|
|
108
|
+
if ((data[p.place] & 128) !== 0) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
101
111
|
var s = data.slice(p.place, slen + p.place);
|
|
102
112
|
if (r[0] === 0) {
|
|
103
113
|
if (r[1] & 0x80) {
|
|
@@ -14,7 +14,7 @@ function EDDSA(curve) {
|
|
|
14
14
|
if (!(this instanceof EDDSA))
|
|
15
15
|
return new EDDSA(curve);
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
curve = curves[curve].curve;
|
|
18
18
|
this.curve = curve;
|
|
19
19
|
this.g = curve.g;
|
|
20
20
|
this.g.precompute(curve.n.bitLength() + 1);
|
|
@@ -38,7 +38,7 @@ EDDSA.prototype.sign = function sign(message, secret) {
|
|
|
38
38
|
var R = this.g.mul(r);
|
|
39
39
|
var Rencoded = this.encodePoint(R);
|
|
40
40
|
var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
|
|
41
|
-
|
|
41
|
+
.mul(key.priv());
|
|
42
42
|
var S = r.add(s_).umod(this.curve.n);
|
|
43
43
|
return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
|
|
44
44
|
};
|
|
@@ -52,6 +52,9 @@ EDDSA.prototype.sign = function sign(message, secret) {
|
|
|
52
52
|
EDDSA.prototype.verify = function verify(message, sig, pub) {
|
|
53
53
|
message = parseBytes(message);
|
|
54
54
|
sig = this.makeSignature(sig);
|
|
55
|
+
if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
55
58
|
var key = this.keyFromPublic(pub);
|
|
56
59
|
var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
|
|
57
60
|
var SG = this.g.mul(sig.S());
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var BN = require('../../../../bn.js-4.11.
|
|
3
|
+
var BN = require('../../../../bn.js-4.11.9/lib/bn');
|
|
4
4
|
var utils = require('../utils');
|
|
5
5
|
var assert = utils.assert;
|
|
6
6
|
var cachedProperty = utils.cachedProperty;
|
|
@@ -21,9 +21,10 @@ function Signature(eddsa, sig) {
|
|
|
21
21
|
sig = parseBytes(sig);
|
|
22
22
|
|
|
23
23
|
if (Array.isArray(sig)) {
|
|
24
|
+
assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');
|
|
24
25
|
sig = {
|
|
25
26
|
R: sig.slice(0, eddsa.encodingLength),
|
|
26
|
-
S: sig.slice(eddsa.encodingLength)
|
|
27
|
+
S: sig.slice(eddsa.encodingLength),
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
|