@noble/curves 1.9.2 → 1.9.3
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/README.md +186 -206
- package/_shortw_utils.d.ts +1 -0
- package/_shortw_utils.d.ts.map +1 -1
- package/_shortw_utils.js +1 -0
- package/_shortw_utils.js.map +1 -1
- package/abstract/bls.d.ts +87 -62
- package/abstract/bls.d.ts.map +1 -1
- package/abstract/bls.js +170 -163
- package/abstract/bls.js.map +1 -1
- package/abstract/curve.d.ts +109 -23
- package/abstract/curve.d.ts.map +1 -1
- package/abstract/curve.js +158 -156
- package/abstract/curve.js.map +1 -1
- package/abstract/edwards.d.ts +124 -70
- package/abstract/edwards.d.ts.map +1 -1
- package/abstract/edwards.js +212 -62
- package/abstract/edwards.js.map +1 -1
- package/abstract/hash-to-curve.d.ts +8 -4
- package/abstract/hash-to-curve.d.ts.map +1 -1
- package/abstract/hash-to-curve.js +23 -11
- package/abstract/hash-to-curve.js.map +1 -1
- package/abstract/modular.d.ts +8 -3
- package/abstract/modular.d.ts.map +1 -1
- package/abstract/modular.js +79 -35
- package/abstract/modular.js.map +1 -1
- package/abstract/montgomery.d.ts +17 -4
- package/abstract/montgomery.d.ts.map +1 -1
- package/abstract/montgomery.js +19 -3
- package/abstract/montgomery.js.map +1 -1
- package/abstract/tower.d.ts +3 -3
- package/abstract/tower.d.ts.map +1 -1
- package/abstract/tower.js.map +1 -1
- package/abstract/weierstrass.d.ts +142 -116
- package/abstract/weierstrass.d.ts.map +1 -1
- package/abstract/weierstrass.js +414 -335
- package/abstract/weierstrass.js.map +1 -1
- package/bls12-381.d.ts.map +1 -1
- package/bls12-381.js +4 -4
- package/bls12-381.js.map +1 -1
- package/ed25519.d.ts +52 -66
- package/ed25519.d.ts.map +1 -1
- package/ed25519.js +128 -155
- package/ed25519.js.map +1 -1
- package/ed448.d.ts +57 -58
- package/ed448.d.ts.map +1 -1
- package/ed448.js +114 -131
- package/ed448.js.map +1 -1
- package/esm/_shortw_utils.d.ts +1 -0
- package/esm/_shortw_utils.d.ts.map +1 -1
- package/esm/_shortw_utils.js +1 -0
- package/esm/_shortw_utils.js.map +1 -1
- package/esm/abstract/bls.d.ts +87 -62
- package/esm/abstract/bls.d.ts.map +1 -1
- package/esm/abstract/bls.js +171 -164
- package/esm/abstract/bls.js.map +1 -1
- package/esm/abstract/curve.d.ts +109 -23
- package/esm/abstract/curve.d.ts.map +1 -1
- package/esm/abstract/curve.js +156 -155
- package/esm/abstract/curve.js.map +1 -1
- package/esm/abstract/edwards.d.ts +124 -70
- package/esm/abstract/edwards.d.ts.map +1 -1
- package/esm/abstract/edwards.js +210 -62
- package/esm/abstract/edwards.js.map +1 -1
- package/esm/abstract/hash-to-curve.d.ts +8 -4
- package/esm/abstract/hash-to-curve.d.ts.map +1 -1
- package/esm/abstract/hash-to-curve.js +22 -11
- package/esm/abstract/hash-to-curve.js.map +1 -1
- package/esm/abstract/modular.d.ts +8 -3
- package/esm/abstract/modular.d.ts.map +1 -1
- package/esm/abstract/modular.js +79 -35
- package/esm/abstract/modular.js.map +1 -1
- package/esm/abstract/montgomery.d.ts +17 -4
- package/esm/abstract/montgomery.d.ts.map +1 -1
- package/esm/abstract/montgomery.js +19 -3
- package/esm/abstract/montgomery.js.map +1 -1
- package/esm/abstract/tower.d.ts +3 -3
- package/esm/abstract/tower.d.ts.map +1 -1
- package/esm/abstract/tower.js.map +1 -1
- package/esm/abstract/weierstrass.d.ts +142 -116
- package/esm/abstract/weierstrass.d.ts.map +1 -1
- package/esm/abstract/weierstrass.js +411 -333
- package/esm/abstract/weierstrass.js.map +1 -1
- package/esm/bls12-381.d.ts.map +1 -1
- package/esm/bls12-381.js +4 -4
- package/esm/bls12-381.js.map +1 -1
- package/esm/ed25519.d.ts +52 -66
- package/esm/ed25519.d.ts.map +1 -1
- package/esm/ed25519.js +131 -157
- package/esm/ed25519.js.map +1 -1
- package/esm/ed448.d.ts +57 -58
- package/esm/ed448.d.ts.map +1 -1
- package/esm/ed448.js +116 -132
- package/esm/ed448.js.map +1 -1
- package/esm/index.js +7 -9
- package/esm/index.js.map +1 -1
- package/esm/jubjub.d.ts +3 -3
- package/esm/jubjub.d.ts.map +1 -1
- package/esm/jubjub.js +3 -3
- package/esm/jubjub.js.map +1 -1
- package/esm/misc.d.ts +3 -5
- package/esm/misc.d.ts.map +1 -1
- package/esm/misc.js +0 -3
- package/esm/misc.js.map +1 -1
- package/esm/nist.d.ts +0 -6
- package/esm/nist.d.ts.map +1 -1
- package/esm/nist.js +31 -15
- package/esm/nist.js.map +1 -1
- package/esm/p256.d.ts +4 -0
- package/esm/p256.d.ts.map +1 -1
- package/esm/p256.js +4 -0
- package/esm/p256.js.map +1 -1
- package/esm/p384.d.ts +4 -1
- package/esm/p384.d.ts.map +1 -1
- package/esm/p384.js +4 -1
- package/esm/p384.js.map +1 -1
- package/esm/p521.d.ts +4 -0
- package/esm/p521.d.ts.map +1 -1
- package/esm/p521.js +4 -0
- package/esm/p521.js.map +1 -1
- package/esm/secp256k1.d.ts +32 -15
- package/esm/secp256k1.d.ts.map +1 -1
- package/esm/secp256k1.js +72 -67
- package/esm/secp256k1.js.map +1 -1
- package/esm/utils.d.ts +1 -1
- package/esm/utils.js +1 -1
- package/index.js +7 -9
- package/index.js.map +1 -1
- package/jubjub.d.ts +3 -3
- package/jubjub.d.ts.map +1 -1
- package/jubjub.js +3 -3
- package/jubjub.js.map +1 -1
- package/misc.d.ts +3 -5
- package/misc.d.ts.map +1 -1
- package/misc.js +0 -3
- package/misc.js.map +1 -1
- package/nist.d.ts +0 -6
- package/nist.d.ts.map +1 -1
- package/nist.js +31 -15
- package/nist.js.map +1 -1
- package/p256.d.ts +4 -0
- package/p256.d.ts.map +1 -1
- package/p256.js +4 -0
- package/p256.js.map +1 -1
- package/p384.d.ts +4 -1
- package/p384.d.ts.map +1 -1
- package/p384.js +4 -1
- package/p384.js.map +1 -1
- package/p521.d.ts +4 -0
- package/p521.d.ts.map +1 -1
- package/p521.js +4 -0
- package/p521.js.map +1 -1
- package/package.json +4 -2
- package/secp256k1.d.ts +32 -15
- package/secp256k1.d.ts.map +1 -1
- package/secp256k1.js +70 -65
- package/secp256k1.js.map +1 -1
- package/src/_shortw_utils.ts +1 -0
- package/src/abstract/bls.ts +319 -257
- package/src/abstract/curve.ts +226 -170
- package/src/abstract/edwards.ts +350 -139
- package/src/abstract/hash-to-curve.ts +33 -16
- package/src/abstract/modular.ts +86 -35
- package/src/abstract/montgomery.ts +36 -9
- package/src/abstract/tower.ts +4 -4
- package/src/abstract/weierstrass.ts +567 -474
- package/src/bls12-381.ts +28 -20
- package/src/ed25519.ts +161 -179
- package/src/ed448.ts +150 -156
- package/src/index.ts +7 -9
- package/src/jubjub.ts +3 -3
- package/src/misc.ts +3 -7
- package/src/nist.ts +40 -16
- package/src/p256.ts +4 -0
- package/src/p384.ts +4 -2
- package/src/p521.ts +4 -0
- package/src/secp256k1.ts +91 -73
- package/src/utils.ts +1 -1
- package/utils.d.ts +1 -1
- package/utils.js +1 -1
package/abstract/bls.js
CHANGED
|
@@ -41,30 +41,20 @@ function NAfDecomposition(a) {
|
|
|
41
41
|
}
|
|
42
42
|
return res;
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
const G1 = Object.assign(G1_, (0, hash_to_curve_ts_1.createHasher)(G1_.Point, CURVE.G1.mapToCurve, {
|
|
53
|
-
...CURVE.htfDefaults,
|
|
54
|
-
...CURVE.G1.htfDefaults,
|
|
55
|
-
}));
|
|
56
|
-
// Point on G2 curve (complex numbers): (x₁, x₂+i), (y₁, y₂+i)
|
|
57
|
-
const G2_ = (0, weierstrass_ts_1.weierstrassPoints)(CURVE.G2);
|
|
58
|
-
const G2 = Object.assign(G2_, (0, hash_to_curve_ts_1.createHasher)(G2_.Point, CURVE.G2.mapToCurve, {
|
|
59
|
-
...CURVE.htfDefaults,
|
|
60
|
-
...CURVE.G2.htfDefaults,
|
|
61
|
-
}));
|
|
44
|
+
function aNonEmpty(arr) {
|
|
45
|
+
if (!Array.isArray(arr) || arr.length === 0)
|
|
46
|
+
throw new Error('expected non-empty array');
|
|
47
|
+
}
|
|
48
|
+
// This should be enough for bn254, no need to export full stuff?
|
|
49
|
+
function createBlsPairing(fields, G1, G2, params) {
|
|
50
|
+
const { Fp2, Fp12 } = fields;
|
|
51
|
+
const { twistType, ateLoopSize, xNegative, postPrecompute } = params;
|
|
62
52
|
// Applies sparse multiplication as line function
|
|
63
53
|
let lineFunction;
|
|
64
|
-
if (
|
|
54
|
+
if (twistType === 'multiplicative') {
|
|
65
55
|
lineFunction = (c0, c1, c2, f, Px, Py) => Fp12.mul014(f, c0, Fp2.mul(c1, Px), Fp2.mul(c2, Py));
|
|
66
56
|
}
|
|
67
|
-
else if (
|
|
57
|
+
else if (twistType === 'divisive') {
|
|
68
58
|
// NOTE: it should be [c0, c1, c2], but we use different order here to reduce complexity of
|
|
69
59
|
// precompute calculations.
|
|
70
60
|
lineFunction = (c0, c1, c2, f, Px, Py) => Fp12.mul034(f, Fp2.mul(c2, Py), Fp2.mul(c1, Px), c0);
|
|
@@ -108,7 +98,7 @@ function bls(CURVE) {
|
|
|
108
98
|
// Point addition and point double calculations is reused for coefficients
|
|
109
99
|
// pointAdd happens only if bit set, so wNAF is reasonable. Unfortunately we cannot combine
|
|
110
100
|
// add + double in windowed precomputes here, otherwise it would be single op (since X is static)
|
|
111
|
-
const ATE_NAF = NAfDecomposition(
|
|
101
|
+
const ATE_NAF = NAfDecomposition(ateLoopSize);
|
|
112
102
|
const calcPairingPrecomputes = (0, utils_ts_1.memoized)((point) => {
|
|
113
103
|
const p = point;
|
|
114
104
|
const { x, y } = p.toAffine();
|
|
@@ -124,9 +114,9 @@ function bls(CURVE) {
|
|
|
124
114
|
({ Rx, Ry, Rz } = pointAdd(cur, Rx, Ry, Rz, Qx, bit === -1 ? negQy : Qy));
|
|
125
115
|
ell.push(cur);
|
|
126
116
|
}
|
|
127
|
-
if (
|
|
117
|
+
if (postPrecompute) {
|
|
128
118
|
const last = ell[ell.length - 1];
|
|
129
|
-
|
|
119
|
+
postPrecompute(Rx, Ry, Rz, Qx, Qy, pointAdd.bind(null, last));
|
|
130
120
|
}
|
|
131
121
|
return ell;
|
|
132
122
|
});
|
|
@@ -143,7 +133,7 @@ function bls(CURVE) {
|
|
|
143
133
|
}
|
|
144
134
|
}
|
|
145
135
|
}
|
|
146
|
-
if (
|
|
136
|
+
if (xNegative)
|
|
147
137
|
f12 = Fp12.conjugate(f12);
|
|
148
138
|
return withFinalExponent ? Fp12.finalExponentiate(f12) : f12;
|
|
149
139
|
}
|
|
@@ -152,8 +142,8 @@ function bls(CURVE) {
|
|
|
152
142
|
function pairingBatch(pairs, withFinalExponent = true) {
|
|
153
143
|
const res = [];
|
|
154
144
|
// Cache precomputed toAffine for all points
|
|
155
|
-
(0, curve_ts_1.normalizeZ)(G1
|
|
156
|
-
(0, curve_ts_1.normalizeZ)(G2
|
|
145
|
+
(0, curve_ts_1.normalizeZ)(G1, pairs.map(({ g1 }) => g1));
|
|
146
|
+
(0, curve_ts_1.normalizeZ)(G2, pairs.map(({ g2 }) => g2));
|
|
157
147
|
for (const { g1, g2 } of pairs) {
|
|
158
148
|
if (g1.is0() || g2.is0())
|
|
159
149
|
throw new Error('pairing is not available for ZERO point');
|
|
@@ -169,110 +159,163 @@ function bls(CURVE) {
|
|
|
169
159
|
function pairing(Q, P, withFinalExponent = true) {
|
|
170
160
|
return pairingBatch([{ g1: Q, g2: P }], withFinalExponent);
|
|
171
161
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
},
|
|
162
|
+
return {
|
|
163
|
+
Fp12, // NOTE: we re-export Fp12 here because pairing results are Fp12!
|
|
164
|
+
millerLoopBatch,
|
|
165
|
+
pairing,
|
|
166
|
+
pairingBatch,
|
|
178
167
|
calcPairingPrecomputes,
|
|
179
168
|
};
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
return point instanceof G1.Point ? point : G1.Point.fromHex(point);
|
|
169
|
+
}
|
|
170
|
+
function createBlsSig(blsPairing, PubCurve, SigCurve, SignatureCoder, isSigG1) {
|
|
171
|
+
const { Fp12, pairingBatch } = blsPairing;
|
|
172
|
+
function normPub(point) {
|
|
173
|
+
return point instanceof PubCurve.Point ? point : PubCurve.Point.fromHex(point);
|
|
186
174
|
}
|
|
187
|
-
function
|
|
188
|
-
return point instanceof
|
|
175
|
+
function normSig(point) {
|
|
176
|
+
return point instanceof SigCurve.Point ? point : SigCurve.Point.fromHex(point);
|
|
189
177
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
return point instanceof PubCurve.Point ? point : PubCurve.Point.fromHex(point);
|
|
195
|
-
}
|
|
196
|
-
function normSig(point) {
|
|
197
|
-
return point instanceof SigCurve.Point ? point : SigCurve.Point.fromHex(point);
|
|
198
|
-
}
|
|
199
|
-
function amsg(m) {
|
|
200
|
-
if (!(m instanceof SigCurve.Point))
|
|
201
|
-
throw new Error(`expected valid message hashed to ${isLongSigs ? 'G2' : 'G1'} curve`);
|
|
202
|
-
return m;
|
|
203
|
-
}
|
|
204
|
-
// TODO: is this always ok?
|
|
205
|
-
const isLongSigs = SigCurve.Point.Fp.BYTES > PubCurve.Point.Fp.BYTES;
|
|
206
|
-
return {
|
|
207
|
-
// P = pk x G
|
|
208
|
-
getPublicKey(privateKey) {
|
|
209
|
-
return PubCurve.Point.fromPrivateKey(privateKey);
|
|
210
|
-
},
|
|
211
|
-
// S = pk x H(m)
|
|
212
|
-
sign(message, privateKey, unusedArg) {
|
|
213
|
-
if (unusedArg != null)
|
|
214
|
-
throw new Error('sign() expects 2 arguments');
|
|
215
|
-
amsg(message).assertValidity();
|
|
216
|
-
return message.multiply(PubCurve.normPrivateKeyToScalar(privateKey));
|
|
217
|
-
},
|
|
218
|
-
// Checks if pairing of public key & hash is equal to pairing of generator & signature.
|
|
219
|
-
// e(P, H(m)) == e(G, S)
|
|
220
|
-
// e(S, G) == e(H(m), P)
|
|
221
|
-
verify(signature, message, publicKey, unusedArg) {
|
|
222
|
-
if (unusedArg != null)
|
|
223
|
-
throw new Error('verify() expects 3 arguments');
|
|
224
|
-
signature = normSig(signature);
|
|
225
|
-
publicKey = normPub(publicKey);
|
|
226
|
-
const P = publicKey.negate();
|
|
227
|
-
const G = PubCurve.Point.BASE;
|
|
228
|
-
const Hm = amsg(message);
|
|
229
|
-
const S = signature;
|
|
230
|
-
// This code was changed in 1.9.x:
|
|
231
|
-
// Before it was G.negate() in G2, now it's always pubKey.negate
|
|
232
|
-
// TODO: understand if this is OK?
|
|
233
|
-
// prettier-ignore
|
|
234
|
-
const exp_ = isLongSigs ? [
|
|
235
|
-
{ g1: P, g2: Hm },
|
|
236
|
-
{ g1: G, g2: S }
|
|
237
|
-
] : [
|
|
238
|
-
{ g1: Hm, g2: P },
|
|
239
|
-
{ g1: S, g2: G }
|
|
240
|
-
];
|
|
241
|
-
// TODO
|
|
242
|
-
// @ts-ignore
|
|
243
|
-
const exp = pairingBatch(exp_);
|
|
244
|
-
return Fp12.eql(exp, Fp12.ONE);
|
|
245
|
-
},
|
|
246
|
-
// Adds a bunch of public key points together.
|
|
247
|
-
// pk1 + pk2 + pk3 = pkA
|
|
248
|
-
aggregatePublicKeys(publicKeys) {
|
|
249
|
-
aNonEmpty(publicKeys);
|
|
250
|
-
publicKeys = publicKeys.map((pub) => normPub(pub));
|
|
251
|
-
const agg = publicKeys.reduce((sum, p) => sum.add(p), PubCurve.Point.ZERO);
|
|
252
|
-
agg.assertValidity();
|
|
253
|
-
return agg;
|
|
254
|
-
},
|
|
255
|
-
// Adds a bunch of signature points together.
|
|
256
|
-
// pk1 + pk2 + pk3 = pkA
|
|
257
|
-
aggregateSignatures(signatures) {
|
|
258
|
-
aNonEmpty(signatures);
|
|
259
|
-
signatures = signatures.map((sig) => normSig(sig));
|
|
260
|
-
const agg = signatures.reduce((sum, s) => sum.add(s), SigCurve.Point.ZERO);
|
|
261
|
-
agg.assertValidity();
|
|
262
|
-
return agg;
|
|
263
|
-
},
|
|
264
|
-
hash(messageBytes, DST) {
|
|
265
|
-
(0, utils_ts_1.abytes)(messageBytes);
|
|
266
|
-
const opts = DST ? { DST } : undefined;
|
|
267
|
-
return SigCurve.hashToCurve(messageBytes, opts);
|
|
268
|
-
},
|
|
269
|
-
// @ts-ignore
|
|
270
|
-
Signature: isLongSigs ? CURVE.G2.Signature : CURVE.G1.ShortSignature,
|
|
271
|
-
};
|
|
178
|
+
function amsg(m) {
|
|
179
|
+
if (!(m instanceof SigCurve.Point))
|
|
180
|
+
throw new Error(`expected valid message hashed to ${!isSigG1 ? 'G2' : 'G1'} curve`);
|
|
181
|
+
return m;
|
|
272
182
|
}
|
|
273
|
-
|
|
274
|
-
const
|
|
275
|
-
|
|
183
|
+
// What matters here is what point pairing API accepts as G1 or G2, not actual size or names
|
|
184
|
+
const pair = !isSigG1
|
|
185
|
+
? (a, b) => ({ g1: a, g2: b })
|
|
186
|
+
: (a, b) => ({ g1: b, g2: a });
|
|
187
|
+
return {
|
|
188
|
+
// P = pk x G
|
|
189
|
+
getPublicKey(secretKey) {
|
|
190
|
+
// TODO: replace with
|
|
191
|
+
// const sec = PubCurve.Point.Fn.fromBytes(secretKey);
|
|
192
|
+
const sec = (0, weierstrass_ts_1._normFnElement)(PubCurve.Point.Fn, secretKey);
|
|
193
|
+
return PubCurve.Point.BASE.multiply(sec);
|
|
194
|
+
},
|
|
195
|
+
// S = pk x H(m)
|
|
196
|
+
sign(message, secretKey, unusedArg) {
|
|
197
|
+
if (unusedArg != null)
|
|
198
|
+
throw new Error('sign() expects 2 arguments');
|
|
199
|
+
// TODO: replace with
|
|
200
|
+
// PubCurve.Point.Fn.fromBytes(secretKey)
|
|
201
|
+
const sec = (0, weierstrass_ts_1._normFnElement)(PubCurve.Point.Fn, secretKey);
|
|
202
|
+
amsg(message).assertValidity();
|
|
203
|
+
return message.multiply(sec);
|
|
204
|
+
},
|
|
205
|
+
// Checks if pairing of public key & hash is equal to pairing of generator & signature.
|
|
206
|
+
// e(P, H(m)) == e(G, S)
|
|
207
|
+
// e(S, G) == e(H(m), P)
|
|
208
|
+
verify(signature, message, publicKey, unusedArg) {
|
|
209
|
+
if (unusedArg != null)
|
|
210
|
+
throw new Error('verify() expects 3 arguments');
|
|
211
|
+
signature = normSig(signature);
|
|
212
|
+
publicKey = normPub(publicKey);
|
|
213
|
+
const P = publicKey.negate();
|
|
214
|
+
const G = PubCurve.Point.BASE;
|
|
215
|
+
const Hm = amsg(message);
|
|
216
|
+
const S = signature;
|
|
217
|
+
// This code was changed in 1.9.x:
|
|
218
|
+
// Before it was G.negate() in G2, now it's always pubKey.negate
|
|
219
|
+
// e(P, -Q)===e(-P, Q)==e(P, Q)^-1. Negate can be done anywhere (as long it is done once per pair).
|
|
220
|
+
// We just moving sign, but since pairing is multiplicative, we doing X * X^-1 = 1
|
|
221
|
+
const exp = pairingBatch([pair(P, Hm), pair(G, S)]);
|
|
222
|
+
return Fp12.eql(exp, Fp12.ONE);
|
|
223
|
+
},
|
|
224
|
+
// https://ethresear.ch/t/fast-verification-of-multiple-bls-signatures/5407
|
|
225
|
+
// e(G, S) = e(G, SUM(n)(Si)) = MUL(n)(e(G, Si))
|
|
226
|
+
// TODO: maybe `{message: G2Hex, publicKey: G1Hex}[]` instead?
|
|
227
|
+
verifyBatch(signature, messages, publicKeys) {
|
|
228
|
+
aNonEmpty(messages);
|
|
229
|
+
if (publicKeys.length !== messages.length)
|
|
230
|
+
throw new Error('amount of public keys and messages should be equal');
|
|
231
|
+
const sig = normSig(signature);
|
|
232
|
+
const nMessages = messages;
|
|
233
|
+
const nPublicKeys = publicKeys.map(normPub);
|
|
234
|
+
// NOTE: this works only for exact same object
|
|
235
|
+
const messagePubKeyMap = new Map();
|
|
236
|
+
for (let i = 0; i < nPublicKeys.length; i++) {
|
|
237
|
+
const pub = nPublicKeys[i];
|
|
238
|
+
const msg = nMessages[i];
|
|
239
|
+
let keys = messagePubKeyMap.get(msg);
|
|
240
|
+
if (keys === undefined) {
|
|
241
|
+
keys = [];
|
|
242
|
+
messagePubKeyMap.set(msg, keys);
|
|
243
|
+
}
|
|
244
|
+
keys.push(pub);
|
|
245
|
+
}
|
|
246
|
+
const paired = [];
|
|
247
|
+
const G = PubCurve.Point.BASE;
|
|
248
|
+
try {
|
|
249
|
+
for (const [msg, keys] of messagePubKeyMap) {
|
|
250
|
+
const groupPublicKey = keys.reduce((acc, msg) => acc.add(msg));
|
|
251
|
+
paired.push(pair(groupPublicKey, msg));
|
|
252
|
+
}
|
|
253
|
+
paired.push(pair(G.negate(), sig));
|
|
254
|
+
return Fp12.eql(pairingBatch(paired), Fp12.ONE);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
// Adds a bunch of public key points together.
|
|
261
|
+
// pk1 + pk2 + pk3 = pkA
|
|
262
|
+
aggregatePublicKeys(publicKeys) {
|
|
263
|
+
aNonEmpty(publicKeys);
|
|
264
|
+
publicKeys = publicKeys.map((pub) => normPub(pub));
|
|
265
|
+
const agg = publicKeys.reduce((sum, p) => sum.add(p), PubCurve.Point.ZERO);
|
|
266
|
+
agg.assertValidity();
|
|
267
|
+
return agg;
|
|
268
|
+
},
|
|
269
|
+
// Adds a bunch of signature points together.
|
|
270
|
+
// pk1 + pk2 + pk3 = pkA
|
|
271
|
+
aggregateSignatures(signatures) {
|
|
272
|
+
aNonEmpty(signatures);
|
|
273
|
+
signatures = signatures.map((sig) => normSig(sig));
|
|
274
|
+
const agg = signatures.reduce((sum, s) => sum.add(s), SigCurve.Point.ZERO);
|
|
275
|
+
agg.assertValidity();
|
|
276
|
+
return agg;
|
|
277
|
+
},
|
|
278
|
+
hash(messageBytes, DST) {
|
|
279
|
+
(0, utils_ts_1.abytes)(messageBytes);
|
|
280
|
+
const opts = DST ? { DST } : undefined;
|
|
281
|
+
return SigCurve.hashToCurve(messageBytes, opts);
|
|
282
|
+
},
|
|
283
|
+
Signature: SignatureCoder,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
// G1_Point: ProjConstructor<bigint>, G2_Point: ProjConstructor<Fp2>,
|
|
287
|
+
function bls(CURVE) {
|
|
288
|
+
// Fields are specific for curve, so for now we'll need to pass them with opts
|
|
289
|
+
const { Fp, Fr, Fp2, Fp6, Fp12 } = CURVE.fields;
|
|
290
|
+
// Point on G1 curve: (x, y)
|
|
291
|
+
const G1_ = (0, weierstrass_ts_1.weierstrassPoints)(CURVE.G1);
|
|
292
|
+
const G1 = Object.assign(G1_, (0, hash_to_curve_ts_1.createHasher)(G1_.Point, CURVE.G1.mapToCurve, {
|
|
293
|
+
...CURVE.htfDefaults,
|
|
294
|
+
...CURVE.G1.htfDefaults,
|
|
295
|
+
}));
|
|
296
|
+
// Point on G2 curve (complex numbers): (x₁, x₂+i), (y₁, y₂+i)
|
|
297
|
+
const G2_ = (0, weierstrass_ts_1.weierstrassPoints)(CURVE.G2);
|
|
298
|
+
const G2 = Object.assign(G2_, (0, hash_to_curve_ts_1.createHasher)(G2_.Point, CURVE.G2.mapToCurve, {
|
|
299
|
+
...CURVE.htfDefaults,
|
|
300
|
+
...CURVE.G2.htfDefaults,
|
|
301
|
+
}));
|
|
302
|
+
const pairingRes = createBlsPairing(CURVE.fields, G1.Point, G2.Point, {
|
|
303
|
+
...CURVE.params,
|
|
304
|
+
postPrecompute: CURVE.postPrecompute,
|
|
305
|
+
});
|
|
306
|
+
const { millerLoopBatch, pairing, pairingBatch, calcPairingPrecomputes } = pairingRes;
|
|
307
|
+
const longSignatures = createBlsSig(pairingRes, G1, G2, CURVE.G2.Signature, false);
|
|
308
|
+
const shortSignatures = createBlsSig(pairingRes, G2, G1, CURVE.G1.ShortSignature, true);
|
|
309
|
+
const rand = CURVE.randomBytes || utils_ts_1.randomBytes;
|
|
310
|
+
const randomSecretKey = () => {
|
|
311
|
+
const length = (0, modular_ts_1.getMinHashLength)(Fr.ORDER);
|
|
312
|
+
return (0, modular_ts_1.mapHashToField)(rand(length), Fr.ORDER);
|
|
313
|
+
};
|
|
314
|
+
const utils = {
|
|
315
|
+
randomSecretKey,
|
|
316
|
+
randomPrivateKey: randomSecretKey,
|
|
317
|
+
calcPairingPrecomputes,
|
|
318
|
+
};
|
|
276
319
|
const { ShortSignature } = CURVE.G1;
|
|
277
320
|
const { Signature } = CURVE.G2;
|
|
278
321
|
function normP1Hash(point, htfOpts) {
|
|
@@ -321,40 +364,9 @@ function bls(CURVE) {
|
|
|
321
364
|
const agg = shortSignatures.aggregateSignatures(signatures);
|
|
322
365
|
return signatures[0] instanceof G1.Point ? agg : ShortSignature.toBytes(agg);
|
|
323
366
|
}
|
|
324
|
-
// https://ethresear.ch/t/fast-verification-of-multiple-bls-signatures/5407
|
|
325
|
-
// e(G, S) = e(G, SUM(n)(Si)) = MUL(n)(e(G, Si))
|
|
326
|
-
// TODO: maybe `{message: G2Hex, publicKey: G1Hex}[]` instead?
|
|
327
367
|
function verifyBatch(signature, messages, publicKeys, htfOpts) {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
throw new Error('amount of public keys and messages should be equal');
|
|
331
|
-
const sig = normP2(signature);
|
|
332
|
-
const nMessages = messages.map((i) => normP2Hash(i, htfOpts));
|
|
333
|
-
const nPublicKeys = publicKeys.map(normP1);
|
|
334
|
-
// NOTE: this works only for exact same object
|
|
335
|
-
const messagePubKeyMap = new Map();
|
|
336
|
-
for (let i = 0; i < nPublicKeys.length; i++) {
|
|
337
|
-
const pub = nPublicKeys[i];
|
|
338
|
-
const msg = nMessages[i];
|
|
339
|
-
let keys = messagePubKeyMap.get(msg);
|
|
340
|
-
if (keys === undefined) {
|
|
341
|
-
keys = [];
|
|
342
|
-
messagePubKeyMap.set(msg, keys);
|
|
343
|
-
}
|
|
344
|
-
keys.push(pub);
|
|
345
|
-
}
|
|
346
|
-
const paired = [];
|
|
347
|
-
try {
|
|
348
|
-
for (const [msg, keys] of messagePubKeyMap) {
|
|
349
|
-
const groupPublicKey = keys.reduce((acc, msg) => acc.add(msg));
|
|
350
|
-
paired.push({ g1: groupPublicKey, g2: msg });
|
|
351
|
-
}
|
|
352
|
-
paired.push({ g1: G1.Point.BASE.negate(), g2: sig });
|
|
353
|
-
return Fp12.eql(pairingBatch(paired), Fp12.ONE);
|
|
354
|
-
}
|
|
355
|
-
catch {
|
|
356
|
-
return false;
|
|
357
|
-
}
|
|
368
|
+
const Hm = messages.map((m) => normP2Hash(m, htfOpts));
|
|
369
|
+
return longSignatures.verifyBatch(signature, Hm, publicKeys);
|
|
358
370
|
}
|
|
359
371
|
G1.Point.BASE.precompute(4);
|
|
360
372
|
return {
|
|
@@ -363,12 +375,7 @@ function bls(CURVE) {
|
|
|
363
375
|
millerLoopBatch,
|
|
364
376
|
pairing,
|
|
365
377
|
pairingBatch,
|
|
366
|
-
// TODO!!!
|
|
367
378
|
verifyBatch,
|
|
368
|
-
curves: {
|
|
369
|
-
G1: G1_.Point,
|
|
370
|
-
G2: G2_.Point,
|
|
371
|
-
},
|
|
372
379
|
fields: {
|
|
373
380
|
Fr,
|
|
374
381
|
Fp,
|
package/abstract/bls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bls.js","sourceRoot":"","sources":["../src/abstract/bls.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bls.js","sourceRoot":"","sources":["../src/abstract/bls.ts"],"names":[],"mappings":"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"}
|
package/abstract/curve.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Methods for elliptic curve multiplication by scalars.
|
|
3
|
+
* Contains wNAF, pippenger.
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
7
|
+
import { type Hex } from '../utils.ts';
|
|
1
8
|
import { type IField } from './modular.ts';
|
|
2
9
|
export type AffinePoint<T> = {
|
|
3
10
|
x: T;
|
|
@@ -15,24 +22,76 @@ export interface Group<T extends Group<T>> {
|
|
|
15
22
|
multiply(scalar: bigint): T;
|
|
16
23
|
toAffine?(invertedZ?: any): AffinePoint<any>;
|
|
17
24
|
}
|
|
25
|
+
/** Base interface for all elliptic curve Points. */
|
|
26
|
+
export interface CurvePoint<F, P extends CurvePoint<F, P>> extends Group<P> {
|
|
27
|
+
/** Affine x coordinate. Different from projective / extended X coordinate. */
|
|
28
|
+
x: F;
|
|
29
|
+
/** Affine y coordinate. Different from projective / extended Y coordinate. */
|
|
30
|
+
y: F;
|
|
31
|
+
Z?: F;
|
|
32
|
+
assertValidity(): void;
|
|
33
|
+
clearCofactor(): P;
|
|
34
|
+
is0(): boolean;
|
|
35
|
+
isTorsionFree(): boolean;
|
|
36
|
+
isSmallOrder(): boolean;
|
|
37
|
+
multiplyUnsafe(scalar: bigint): P;
|
|
38
|
+
/**
|
|
39
|
+
* Massively speeds up `p.multiply(n)` by using precompute tables (caching). See {@link wNAF}.
|
|
40
|
+
* @param isLazy calculate cache now. Default (true) ensures it's deferred to first `multiply()`
|
|
41
|
+
*/
|
|
42
|
+
precompute(windowSize?: number, isLazy?: boolean): P;
|
|
43
|
+
/** Converts point to 2D xy affine coordinates */
|
|
44
|
+
toAffine(invertedZ?: F): AffinePoint<F>;
|
|
45
|
+
toBytes(): Uint8Array;
|
|
46
|
+
toHex(): string;
|
|
47
|
+
}
|
|
48
|
+
/** Base interface for all elliptic curve Point constructors. */
|
|
49
|
+
export interface CurvePointCons<F, P extends CurvePoint<F, P>> extends GroupConstructor<P> {
|
|
50
|
+
BASE: P;
|
|
51
|
+
ZERO: P;
|
|
52
|
+
/** Field for basic curve math */
|
|
53
|
+
Fp: IField<F>;
|
|
54
|
+
/** Scalar field, for scalars in multiply and others */
|
|
55
|
+
Fn: IField<bigint>;
|
|
56
|
+
/** Creates point from x, y. Does NOT validate if the point is valid. Use `.assertValidity()`. */
|
|
57
|
+
fromAffine(p: AffinePoint<F>): P;
|
|
58
|
+
fromBytes(bytes: Uint8Array): P;
|
|
59
|
+
fromHex(hex: Hex): P;
|
|
60
|
+
}
|
|
61
|
+
export type GetPointConsF<PC> = PC extends CurvePointCons<infer F, any> ? F : never;
|
|
62
|
+
export type GetPointConsPoint<PC> = PC extends CurvePointCons<any, infer P> ? P : never;
|
|
63
|
+
export interface CurveInfo {
|
|
64
|
+
type: 'weierstrass' | 'edwards' | 'montgomery';
|
|
65
|
+
publicKeyHasPrefix?: boolean;
|
|
66
|
+
lengths: {
|
|
67
|
+
secret: number;
|
|
68
|
+
public: number;
|
|
69
|
+
publicUncompressed?: number;
|
|
70
|
+
signature: number;
|
|
71
|
+
seed: number;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
18
74
|
export type GroupConstructor<T> = {
|
|
19
75
|
BASE: T;
|
|
20
76
|
ZERO: T;
|
|
21
77
|
};
|
|
78
|
+
/** @deprecated */
|
|
22
79
|
export type ExtendedGroupConstructor<T> = GroupConstructor<T> & {
|
|
23
80
|
Fp: IField<any>;
|
|
24
81
|
Fn: IField<bigint>;
|
|
25
82
|
fromAffine(ap: AffinePoint<any>): T;
|
|
26
83
|
};
|
|
27
84
|
export type Mapper<T> = (i: T[]) => T[];
|
|
28
|
-
export declare function negateCt<T extends
|
|
85
|
+
export declare function negateCt<T extends {
|
|
86
|
+
negate: () => T;
|
|
87
|
+
}>(condition: boolean, item: T): T;
|
|
29
88
|
/**
|
|
30
89
|
* Takes a bunch of Projective Points but executes only one
|
|
31
90
|
* inversion on all of them. Inversion is very slow operation,
|
|
32
91
|
* so this improves performance massively.
|
|
33
92
|
* Optimization: converts a list of projective points to a list of identical points with Z=1.
|
|
34
93
|
*/
|
|
35
|
-
export declare function normalizeZ<
|
|
94
|
+
export declare function normalizeZ<PC extends CurvePointCons<any, any>, F = GetPointConsF<PC>, P extends CurvePoint<F, P> = GetPointConsPoint<PC>>(c: CurvePointCons<F, P>, points: P[]): P[];
|
|
36
95
|
/** Internal wNAF opts for specific W and scalarBits */
|
|
37
96
|
export type WOpts = {
|
|
38
97
|
windows: number;
|
|
@@ -41,26 +100,12 @@ export type WOpts = {
|
|
|
41
100
|
maxNumber: number;
|
|
42
101
|
shiftBy: bigint;
|
|
43
102
|
};
|
|
44
|
-
export type IWNAF<T extends Group<T>> = {
|
|
45
|
-
constTimeNegate: <T extends Group<T>>(condition: boolean, item: T) => T;
|
|
46
|
-
hasPrecomputes(elm: T): boolean;
|
|
47
|
-
unsafeLadder(elm: T, n: bigint, p?: T): T;
|
|
48
|
-
precomputeWindow(elm: T, W: number): Group<T>[];
|
|
49
|
-
getPrecomputes(W: number, P: T, transform?: Mapper<T>): T[];
|
|
50
|
-
wNAF(W: number, precomputes: T[], n: bigint): {
|
|
51
|
-
p: T;
|
|
52
|
-
f: T;
|
|
53
|
-
};
|
|
54
|
-
wNAFUnsafe(W: number, precomputes: T[], n: bigint, acc?: T): T;
|
|
55
|
-
wNAFCached(P: T, n: bigint, transform?: Mapper<T>): {
|
|
56
|
-
p: T;
|
|
57
|
-
f: T;
|
|
58
|
-
};
|
|
59
|
-
wNAFCachedUnsafe(P: T, n: bigint, transform?: Mapper<T>, prev?: T): T;
|
|
60
|
-
setWindowSize(P: T, W: number): void;
|
|
61
|
-
};
|
|
62
103
|
/**
|
|
63
104
|
* Elliptic curve multiplication of Point by scalar. Fragile.
|
|
105
|
+
* Table generation takes **30MB of ram and 10ms on high-end CPU**,
|
|
106
|
+
* but may take much longer on slow devices. Actual generation will happen on
|
|
107
|
+
* first call of `multiply()`. By default, `BASE` point is precomputed.
|
|
108
|
+
*
|
|
64
109
|
* Scalars should always be less than curve order: this should be checked inside of a curve itself.
|
|
65
110
|
* Creates precomputation tables for fast multiplication:
|
|
66
111
|
* - private scalar is split by fixed size windows of W bits
|
|
@@ -73,12 +118,53 @@ export type IWNAF<T extends Group<T>> = {
|
|
|
73
118
|
* @todo Research returning 2d JS array of windows, instead of a single window.
|
|
74
119
|
* This would allow windows to be in different memory locations
|
|
75
120
|
*/
|
|
76
|
-
export declare
|
|
121
|
+
export declare class wNAF<F, P extends CurvePoint<F, P>> {
|
|
122
|
+
private readonly BASE;
|
|
123
|
+
private readonly ZERO;
|
|
124
|
+
private readonly Fn;
|
|
125
|
+
readonly bits: number;
|
|
126
|
+
constructor(Point: CurvePointCons<F, P>, bits: number);
|
|
127
|
+
_unsafeLadder(elm: P, n: bigint, p?: P): P;
|
|
128
|
+
/**
|
|
129
|
+
* Creates a wNAF precomputation window. Used for caching.
|
|
130
|
+
* Default window size is set by `utils.precompute()` and is equal to 8.
|
|
131
|
+
* Number of precomputed points depends on the curve size:
|
|
132
|
+
* 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:
|
|
133
|
+
* - 𝑊 is the window size
|
|
134
|
+
* - 𝑛 is the bitlength of the curve order.
|
|
135
|
+
* For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.
|
|
136
|
+
* @param point Point instance
|
|
137
|
+
* @param W window size
|
|
138
|
+
* @returns precomputed point tables flattened to a single array
|
|
139
|
+
*/
|
|
140
|
+
private precomputeWindow;
|
|
141
|
+
/**
|
|
142
|
+
* Implements ec multiplication using precomputed tables and w-ary non-adjacent form.
|
|
143
|
+
* More compact implementation:
|
|
144
|
+
* https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541
|
|
145
|
+
* @returns real and fake (for const-time) points
|
|
146
|
+
*/
|
|
147
|
+
private wNAF;
|
|
148
|
+
/**
|
|
149
|
+
* Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.
|
|
150
|
+
* @param acc accumulator point to add result of multiplication
|
|
151
|
+
* @returns point
|
|
152
|
+
*/
|
|
153
|
+
private wNAFUnsafe;
|
|
154
|
+
private getPrecomputes;
|
|
155
|
+
cached(point: P, scalar: bigint, transform?: Mapper<P>): {
|
|
156
|
+
p: P;
|
|
157
|
+
f: P;
|
|
158
|
+
};
|
|
159
|
+
unsafe(point: P, scalar: bigint, transform?: Mapper<P>, prev?: P): P;
|
|
160
|
+
createCache(P: P, W: number): void;
|
|
161
|
+
hasCache(elm: P): boolean;
|
|
162
|
+
}
|
|
77
163
|
/**
|
|
78
164
|
* Endomorphism-specific multiplication for Koblitz curves.
|
|
79
165
|
* Cost: 128 dbl, 0-256 adds.
|
|
80
166
|
*/
|
|
81
|
-
export declare function mulEndoUnsafe<T extends Group<T>>(
|
|
167
|
+
export declare function mulEndoUnsafe<T extends Group<T>>(Point: GroupConstructor<T>, point: T, k1: bigint, k2: bigint): {
|
|
82
168
|
p1: T;
|
|
83
169
|
p2: T;
|
|
84
170
|
};
|
|
@@ -90,7 +176,7 @@ export declare function mulEndoUnsafe<T extends Group<T>>(c: GroupConstructor<T>
|
|
|
90
176
|
* @param c Curve Point constructor
|
|
91
177
|
* @param fieldN field over CURVE.N - important that it's not over CURVE.P
|
|
92
178
|
* @param points array of L curve points
|
|
93
|
-
* @param scalars array of L scalars (aka
|
|
179
|
+
* @param scalars array of L scalars (aka secret keys / bigints)
|
|
94
180
|
*/
|
|
95
181
|
export declare function pippenger<T extends Group<T>>(c: GroupConstructor<T>, fieldN: IField<bigint>, points: T[], scalars: bigint[]): T;
|
|
96
182
|
/**
|