@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,241 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var BN = require('../../../../bn.js-4.11.8/lib/bn');
|
|
4
|
-
var HmacDRBG = require('../../../../hmac-drbg-1.0.1/lib/hmac-drbg');
|
|
5
|
-
var utils = require('../utils');
|
|
6
|
-
var curves = require('../curves');
|
|
7
|
-
var rand = require('../../../../brorand-1.1.0/index');
|
|
8
|
-
var assert = utils.assert;
|
|
9
|
-
|
|
10
|
-
var KeyPair = require('./key');
|
|
11
|
-
var Signature = require('./signature');
|
|
12
|
-
|
|
13
|
-
function EC(options) {
|
|
14
|
-
if (!(this instanceof EC))
|
|
15
|
-
return new EC(options);
|
|
16
|
-
|
|
17
|
-
// Shortcut `elliptic.ec(curve-name)`
|
|
18
|
-
if (typeof options === 'string') {
|
|
19
|
-
assert(curves.hasOwnProperty(options), 'Unknown curve ' + options);
|
|
20
|
-
|
|
21
|
-
options = curves[options];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// Shortcut for `elliptic.ec(elliptic.curves.curveName)`
|
|
25
|
-
if (options instanceof curves.PresetCurve)
|
|
26
|
-
options = { curve: options };
|
|
27
|
-
|
|
28
|
-
this.curve = options.curve.curve;
|
|
29
|
-
this.n = this.curve.n;
|
|
30
|
-
this.nh = this.n.ushrn(1);
|
|
31
|
-
this.g = this.curve.g;
|
|
32
|
-
|
|
33
|
-
// Point on curve
|
|
34
|
-
this.g = options.curve.g;
|
|
35
|
-
this.g.precompute(options.curve.n.bitLength() + 1);
|
|
36
|
-
|
|
37
|
-
// Hash for function for DRBG
|
|
38
|
-
this.hash = options.hash || options.curve.hash;
|
|
39
|
-
}
|
|
40
|
-
module.exports = EC;
|
|
41
|
-
|
|
42
|
-
EC.prototype.keyPair = function keyPair(options) {
|
|
43
|
-
return new KeyPair(this, options);
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
|
|
47
|
-
return KeyPair.fromPrivate(this, priv, enc);
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
|
|
51
|
-
return KeyPair.fromPublic(this, pub, enc);
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
EC.prototype.genKeyPair = function genKeyPair(options) {
|
|
55
|
-
if (!options)
|
|
56
|
-
options = {};
|
|
57
|
-
|
|
58
|
-
// Instantiate Hmac_DRBG
|
|
59
|
-
var drbg = new HmacDRBG({
|
|
60
|
-
hash: this.hash,
|
|
61
|
-
pers: options.pers,
|
|
62
|
-
persEnc: options.persEnc || 'utf8',
|
|
63
|
-
entropy: options.entropy || rand(this.hash.hmacStrength),
|
|
64
|
-
entropyEnc: options.entropy && options.entropyEnc || 'utf8',
|
|
65
|
-
nonce: this.n.toArray()
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
var bytes = this.n.byteLength();
|
|
69
|
-
var ns2 = this.n.sub(new BN(2));
|
|
70
|
-
do {
|
|
71
|
-
var priv = new BN(drbg.generate(bytes));
|
|
72
|
-
if (priv.cmp(ns2) > 0)
|
|
73
|
-
continue;
|
|
74
|
-
|
|
75
|
-
priv.iaddn(1);
|
|
76
|
-
return this.keyFromPrivate(priv);
|
|
77
|
-
} while (true);
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
|
|
81
|
-
var delta = msg.byteLength() * 8 - this.n.bitLength();
|
|
82
|
-
if (delta > 0)
|
|
83
|
-
msg = msg.ushrn(delta);
|
|
84
|
-
if (!truncOnly && msg.cmp(this.n) >= 0)
|
|
85
|
-
return msg.sub(this.n);
|
|
86
|
-
else
|
|
87
|
-
return msg;
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
EC.prototype.sign = function sign(msg, key, enc, options) {
|
|
91
|
-
if (typeof enc === 'object') {
|
|
92
|
-
options = enc;
|
|
93
|
-
enc = null;
|
|
94
|
-
}
|
|
95
|
-
if (!options)
|
|
96
|
-
options = {};
|
|
97
|
-
|
|
98
|
-
key = this.keyFromPrivate(key, enc);
|
|
99
|
-
msg = this._truncateToN(new BN(msg, 16));
|
|
100
|
-
|
|
101
|
-
// Zero-extend key to provide enough entropy
|
|
102
|
-
var bytes = this.n.byteLength();
|
|
103
|
-
var bkey = key.getPrivate().toArray('be', bytes);
|
|
104
|
-
|
|
105
|
-
// Zero-extend nonce to have the same byte size as N
|
|
106
|
-
var nonce = msg.toArray('be', bytes);
|
|
107
|
-
|
|
108
|
-
// Instantiate Hmac_DRBG
|
|
109
|
-
var drbg = new HmacDRBG({
|
|
110
|
-
hash: this.hash,
|
|
111
|
-
entropy: bkey,
|
|
112
|
-
nonce: nonce,
|
|
113
|
-
pers: options.pers,
|
|
114
|
-
persEnc: options.persEnc || 'utf8'
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
// Number of bytes to generate
|
|
118
|
-
var ns1 = this.n.sub(new BN(1));
|
|
119
|
-
|
|
120
|
-
for (var iter = 0; true; iter++) {
|
|
121
|
-
var k = options.k ?
|
|
122
|
-
options.k(iter) :
|
|
123
|
-
new BN(drbg.generate(this.n.byteLength()));
|
|
124
|
-
k = this._truncateToN(k, true);
|
|
125
|
-
if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
|
|
126
|
-
continue;
|
|
127
|
-
|
|
128
|
-
var kp = this.g.mul(k);
|
|
129
|
-
if (kp.isInfinity())
|
|
130
|
-
continue;
|
|
131
|
-
|
|
132
|
-
var kpX = kp.getX();
|
|
133
|
-
var r = kpX.umod(this.n);
|
|
134
|
-
if (r.cmpn(0) === 0)
|
|
135
|
-
continue;
|
|
136
|
-
|
|
137
|
-
var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
|
|
138
|
-
s = s.umod(this.n);
|
|
139
|
-
if (s.cmpn(0) === 0)
|
|
140
|
-
continue;
|
|
141
|
-
|
|
142
|
-
var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
|
|
143
|
-
(kpX.cmp(r) !== 0 ? 2 : 0);
|
|
144
|
-
|
|
145
|
-
// Use complement of `s`, if it is > `n / 2`
|
|
146
|
-
if (options.canonical && s.cmp(this.nh) > 0) {
|
|
147
|
-
s = this.n.sub(s);
|
|
148
|
-
recoveryParam ^= 1;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
EC.prototype.verify = function verify(msg, signature, key, enc) {
|
|
156
|
-
msg = this._truncateToN(new BN(msg, 16));
|
|
157
|
-
key = this.keyFromPublic(key, enc);
|
|
158
|
-
signature = new Signature(signature, 'hex');
|
|
159
|
-
|
|
160
|
-
// Perform primitive values validation
|
|
161
|
-
var r = signature.r;
|
|
162
|
-
var s = signature.s;
|
|
163
|
-
if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
|
|
164
|
-
return false;
|
|
165
|
-
if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
|
|
166
|
-
return false;
|
|
167
|
-
|
|
168
|
-
// Validate signature
|
|
169
|
-
var sinv = s.invm(this.n);
|
|
170
|
-
var u1 = sinv.mul(msg).umod(this.n);
|
|
171
|
-
var u2 = sinv.mul(r).umod(this.n);
|
|
172
|
-
|
|
173
|
-
if (!this.curve._maxwellTrick) {
|
|
174
|
-
var p = this.g.mulAdd(u1, key.getPublic(), u2);
|
|
175
|
-
if (p.isInfinity())
|
|
176
|
-
return false;
|
|
177
|
-
|
|
178
|
-
return p.getX().umod(this.n).cmp(r) === 0;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// NOTE: Greg Maxwell's trick, inspired by:
|
|
182
|
-
// https://git.io/vad3K
|
|
183
|
-
|
|
184
|
-
var p = this.g.jmulAdd(u1, key.getPublic(), u2);
|
|
185
|
-
if (p.isInfinity())
|
|
186
|
-
return false;
|
|
187
|
-
|
|
188
|
-
// Compare `p.x` of Jacobian point with `r`,
|
|
189
|
-
// this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
|
|
190
|
-
// inverse of `p.z^2`
|
|
191
|
-
return p.eqXToP(r);
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
|
|
195
|
-
assert((3 & j) === j, 'The recovery param is more than two bits');
|
|
196
|
-
signature = new Signature(signature, enc);
|
|
197
|
-
|
|
198
|
-
var n = this.n;
|
|
199
|
-
var e = new BN(msg);
|
|
200
|
-
var r = signature.r;
|
|
201
|
-
var s = signature.s;
|
|
202
|
-
|
|
203
|
-
// A set LSB signifies that the y-coordinate is odd
|
|
204
|
-
var isYOdd = j & 1;
|
|
205
|
-
var isSecondKey = j >> 1;
|
|
206
|
-
if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
|
|
207
|
-
throw new Error('Unable to find sencond key candinate');
|
|
208
|
-
|
|
209
|
-
// 1.1. Let x = r + jn.
|
|
210
|
-
if (isSecondKey)
|
|
211
|
-
r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
|
|
212
|
-
else
|
|
213
|
-
r = this.curve.pointFromX(r, isYOdd);
|
|
214
|
-
|
|
215
|
-
var rInv = signature.r.invm(n);
|
|
216
|
-
var s1 = n.sub(e).mul(rInv).umod(n);
|
|
217
|
-
var s2 = s.mul(rInv).umod(n);
|
|
218
|
-
|
|
219
|
-
// 1.6.1 Compute Q = r^-1 (sR - eG)
|
|
220
|
-
// Q = r^-1 (sR + -eG)
|
|
221
|
-
return this.g.mulAdd(s1, r, s2);
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
|
|
225
|
-
signature = new Signature(signature, enc);
|
|
226
|
-
if (signature.recoveryParam !== null)
|
|
227
|
-
return signature.recoveryParam;
|
|
228
|
-
|
|
229
|
-
for (var i = 0; i < 4; i++) {
|
|
230
|
-
var Qprime;
|
|
231
|
-
try {
|
|
232
|
-
Qprime = this.recoverPubKey(e, signature, i);
|
|
233
|
-
} catch (e) {
|
|
234
|
-
continue;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
if (Qprime.eq(Q))
|
|
238
|
-
return i;
|
|
239
|
-
}
|
|
240
|
-
throw new Error('Unable to find valid recovery factor');
|
|
241
|
-
};
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var utils = require('../utils');
|
|
4
|
-
var assert = utils.assert;
|
|
5
|
-
var parseBytes = utils.parseBytes;
|
|
6
|
-
var cachedProperty = utils.cachedProperty;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @param {EDDSA} eddsa - instance
|
|
10
|
-
* @param {Object} params - public/private key parameters
|
|
11
|
-
*
|
|
12
|
-
* @param {Array<Byte>} [params.secret] - secret seed bytes
|
|
13
|
-
* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
|
|
14
|
-
* @param {Array<Byte>} [params.pub] - public key point encoded as bytes
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
function KeyPair(eddsa, params) {
|
|
18
|
-
this.eddsa = eddsa;
|
|
19
|
-
this._secret = parseBytes(params.secret);
|
|
20
|
-
if (eddsa.isPoint(params.pub))
|
|
21
|
-
this._pub = params.pub;
|
|
22
|
-
else
|
|
23
|
-
this._pubBytes = parseBytes(params.pub);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
KeyPair.fromPublic = function fromPublic(eddsa, pub) {
|
|
27
|
-
if (pub instanceof KeyPair)
|
|
28
|
-
return pub;
|
|
29
|
-
return new KeyPair(eddsa, { pub: pub });
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
KeyPair.fromSecret = function fromSecret(eddsa, secret) {
|
|
33
|
-
if (secret instanceof KeyPair)
|
|
34
|
-
return secret;
|
|
35
|
-
return new KeyPair(eddsa, { secret: secret });
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
KeyPair.prototype.secret = function secret() {
|
|
39
|
-
return this._secret;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
|
|
43
|
-
return this.eddsa.encodePoint(this.pub());
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
cachedProperty(KeyPair, 'pub', function pub() {
|
|
47
|
-
if (this._pubBytes)
|
|
48
|
-
return this.eddsa.decodePoint(this._pubBytes);
|
|
49
|
-
return this.eddsa.g.mul(this.priv());
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
cachedProperty(KeyPair, 'privBytes', function privBytes() {
|
|
53
|
-
var eddsa = this.eddsa;
|
|
54
|
-
var hash = this.hash();
|
|
55
|
-
var lastIx = eddsa.encodingLength - 1;
|
|
56
|
-
|
|
57
|
-
var a = hash.slice(0, eddsa.encodingLength);
|
|
58
|
-
a[0] &= 248;
|
|
59
|
-
a[lastIx] &= 127;
|
|
60
|
-
a[lastIx] |= 64;
|
|
61
|
-
|
|
62
|
-
return a;
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
cachedProperty(KeyPair, 'priv', function priv() {
|
|
66
|
-
return this.eddsa.decodeInt(this.privBytes());
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
cachedProperty(KeyPair, 'hash', function hash() {
|
|
70
|
-
return this.eddsa.hash().update(this.secret()).digest();
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
|
|
74
|
-
return this.hash().slice(this.eddsa.encodingLength);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
KeyPair.prototype.sign = function sign(message) {
|
|
78
|
-
assert(this._secret, 'KeyPair can only verify');
|
|
79
|
-
return this.eddsa.sign(message, this);
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
KeyPair.prototype.verify = function verify(message, sig) {
|
|
83
|
-
return this.eddsa.verify(message, sig, this);
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
KeyPair.prototype.getSecret = function getSecret(enc) {
|
|
87
|
-
assert(this._secret, 'KeyPair is public only');
|
|
88
|
-
return utils.encode(this.secret(), enc);
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
KeyPair.prototype.getPublic = function getPublic(enc) {
|
|
92
|
-
return utils.encode(this.pubBytes(), enc);
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
module.exports = KeyPair;
|