@noble/curves 1.8.0 → 1.8.2
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 +282 -419
- package/_shortw_utils.d.ts +2 -2
- package/_shortw_utils.d.ts.map +1 -1
- package/_shortw_utils.js +2 -2
- package/_shortw_utils.js.map +1 -1
- package/abstract/bls.d.ts +5 -5
- package/abstract/bls.d.ts.map +1 -1
- package/abstract/bls.js +14 -15
- package/abstract/bls.js.map +1 -1
- package/abstract/curve.d.ts +10 -2
- package/abstract/curve.d.ts.map +1 -1
- package/abstract/curve.js +81 -78
- package/abstract/curve.js.map +1 -1
- package/abstract/edwards.d.ts +2 -2
- package/abstract/edwards.d.ts.map +1 -1
- package/abstract/edwards.js +55 -69
- package/abstract/edwards.js.map +1 -1
- package/abstract/hash-to-curve.d.ts +5 -4
- package/abstract/hash-to-curve.d.ts.map +1 -1
- package/abstract/hash-to-curve.js +20 -18
- package/abstract/hash-to-curve.js.map +1 -1
- package/abstract/modular.d.ts.map +1 -1
- package/abstract/modular.js +9 -9
- package/abstract/montgomery.js +12 -12
- package/abstract/poseidon.d.ts +1 -1
- package/abstract/poseidon.d.ts.map +1 -1
- package/abstract/poseidon.js +3 -3
- package/abstract/poseidon.js.map +1 -1
- package/abstract/tower.d.ts +2 -2
- package/abstract/tower.js +13 -13
- package/abstract/utils.d.ts +4 -2
- package/abstract/utils.d.ts.map +1 -1
- package/abstract/utils.js +25 -14
- package/abstract/utils.js.map +1 -1
- package/abstract/weierstrass.d.ts +19 -6
- package/abstract/weierstrass.d.ts.map +1 -1
- package/abstract/weierstrass.js +97 -80
- package/abstract/weierstrass.js.map +1 -1
- package/bls12-381.d.ts +1 -1
- package/bls12-381.d.ts.map +1 -1
- package/bls12-381.js +48 -49
- package/bls12-381.js.map +1 -1
- package/bn254.d.ts +2 -2
- package/bn254.d.ts.map +1 -1
- package/bn254.js +29 -30
- package/bn254.js.map +1 -1
- package/ed25519.d.ts +8 -6
- package/ed25519.d.ts.map +1 -1
- package/ed25519.js +65 -66
- package/ed25519.js.map +1 -1
- package/ed448.d.ts +6 -6
- package/ed448.d.ts.map +1 -1
- package/ed448.js +50 -52
- package/ed448.js.map +1 -1
- package/esm/_shortw_utils.d.ts +2 -2
- package/esm/_shortw_utils.d.ts.map +1 -1
- package/esm/_shortw_utils.js +1 -1
- package/esm/_shortw_utils.js.map +1 -1
- package/esm/abstract/bls.d.ts +5 -5
- package/esm/abstract/bls.d.ts.map +1 -1
- package/esm/abstract/bls.js +5 -6
- package/esm/abstract/bls.js.map +1 -1
- package/esm/abstract/curve.d.ts +10 -2
- package/esm/abstract/curve.d.ts.map +1 -1
- package/esm/abstract/curve.js +77 -74
- package/esm/abstract/curve.js.map +1 -1
- package/esm/abstract/edwards.d.ts +2 -2
- package/esm/abstract/edwards.d.ts.map +1 -1
- package/esm/abstract/edwards.js +36 -50
- package/esm/abstract/edwards.js.map +1 -1
- package/esm/abstract/hash-to-curve.d.ts +5 -4
- package/esm/abstract/hash-to-curve.d.ts.map +1 -1
- package/esm/abstract/hash-to-curve.js +4 -2
- package/esm/abstract/hash-to-curve.js.map +1 -1
- package/esm/abstract/modular.d.ts.map +1 -1
- package/esm/abstract/modular.js +1 -1
- package/esm/abstract/montgomery.js +2 -2
- package/esm/abstract/poseidon.d.ts +1 -1
- package/esm/abstract/poseidon.d.ts.map +1 -1
- package/esm/abstract/poseidon.js +1 -1
- package/esm/abstract/poseidon.js.map +1 -1
- package/esm/abstract/tower.d.ts +2 -2
- package/esm/abstract/tower.js +5 -5
- package/esm/abstract/utils.d.ts +4 -2
- package/esm/abstract/utils.d.ts.map +1 -1
- package/esm/abstract/utils.js +24 -13
- package/esm/abstract/utils.js.map +1 -1
- package/esm/abstract/weierstrass.d.ts +19 -6
- package/esm/abstract/weierstrass.d.ts.map +1 -1
- package/esm/abstract/weierstrass.js +77 -60
- package/esm/abstract/weierstrass.js.map +1 -1
- package/esm/bls12-381.d.ts +1 -1
- package/esm/bls12-381.d.ts.map +1 -1
- package/esm/bls12-381.js +16 -17
- package/esm/bls12-381.js.map +1 -1
- package/esm/bn254.d.ts +2 -2
- package/esm/bn254.d.ts.map +1 -1
- package/esm/bn254.js +7 -8
- package/esm/bn254.js.map +1 -1
- package/esm/ed25519.d.ts +8 -6
- package/esm/ed25519.d.ts.map +1 -1
- package/esm/ed25519.js +20 -21
- package/esm/ed25519.js.map +1 -1
- package/esm/ed448.d.ts +6 -6
- package/esm/ed448.d.ts.map +1 -1
- package/esm/ed448.js +13 -15
- package/esm/ed448.js.map +1 -1
- package/esm/index.js +13 -1
- package/esm/index.js.map +1 -1
- package/esm/jubjub.d.ts +1 -4
- package/esm/jubjub.d.ts.map +1 -1
- package/esm/jubjub.js +1 -60
- package/esm/jubjub.js.map +1 -1
- package/esm/misc.d.ts +15 -0
- package/esm/misc.d.ts.map +1 -0
- package/esm/misc.js +101 -0
- package/esm/misc.js.map +1 -0
- package/esm/p256.d.ts +8 -5
- package/esm/p256.d.ts.map +1 -1
- package/esm/p256.js +13 -12
- package/esm/p256.js.map +1 -1
- package/esm/p384.d.ts +8 -5
- package/esm/p384.d.ts.map +1 -1
- package/esm/p384.js +14 -15
- package/esm/p384.js.map +1 -1
- package/esm/p521.d.ts +6 -5
- package/esm/p521.d.ts.map +1 -1
- package/esm/p521.js +19 -28
- package/esm/p521.js.map +1 -1
- package/esm/pasta.d.ts +1 -7
- package/esm/pasta.d.ts.map +1 -1
- package/esm/pasta.js +1 -33
- package/esm/pasta.js.map +1 -1
- package/esm/secp256k1.d.ts +15 -10
- package/esm/secp256k1.d.ts.map +1 -1
- package/esm/secp256k1.js +18 -14
- package/esm/secp256k1.js.map +1 -1
- package/index.js +13 -1
- package/index.js.map +1 -1
- package/jubjub.d.ts +1 -4
- package/jubjub.d.ts.map +1 -1
- package/jubjub.js +5 -63
- package/jubjub.js.map +1 -1
- package/misc.d.ts +15 -0
- package/misc.d.ts.map +1 -0
- package/misc.js +106 -0
- package/misc.js.map +1 -0
- package/p256.d.ts +8 -5
- package/p256.d.ts.map +1 -1
- package/p256.js +19 -18
- package/p256.js.map +1 -1
- package/p384.d.ts +8 -5
- package/p384.d.ts.map +1 -1
- package/p384.js +19 -20
- package/p384.js.map +1 -1
- package/p521.d.ts +6 -5
- package/p521.d.ts.map +1 -1
- package/p521.js +23 -32
- package/p521.js.map +1 -1
- package/package.json +21 -16
- package/pasta.d.ts +1 -7
- package/pasta.d.ts.map +1 -1
- package/pasta.js +4 -34
- package/pasta.js.map +1 -1
- package/secp256k1.d.ts +15 -10
- package/secp256k1.d.ts.map +1 -1
- package/secp256k1.js +57 -53
- package/secp256k1.js.map +1 -1
- package/src/_shortw_utils.ts +2 -2
- package/src/abstract/bls.ts +14 -12
- package/src/abstract/curve.ts +88 -79
- package/src/abstract/edwards.ts +52 -59
- package/src/abstract/hash-to-curve.ts +7 -5
- package/src/abstract/modular.ts +1 -1
- package/src/abstract/montgomery.ts +2 -2
- package/src/abstract/poseidon.ts +1 -1
- package/src/abstract/tower.ts +6 -6
- package/src/abstract/utils.ts +26 -15
- package/src/abstract/weierstrass.ts +99 -77
- package/src/bls12-381.ts +30 -28
- package/src/bn254.ts +11 -13
- package/src/ed25519.ts +27 -26
- package/src/ed448.ts +21 -20
- package/src/index.ts +13 -1
- package/src/jubjub.ts +5 -63
- package/src/misc.ts +117 -0
- package/src/p256.ts +13 -12
- package/src/p384.ts +18 -15
- package/src/p521.ts +27 -32
- package/src/pasta.ts +1 -39
- package/src/secp256k1.ts +20 -16
package/secp256k1.js
CHANGED
|
@@ -14,13 +14,13 @@ exports.encodeToCurve = exports.hashToCurve = exports.schnorr = exports.secp256k
|
|
|
14
14
|
* @module
|
|
15
15
|
*/
|
|
16
16
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
17
|
-
const
|
|
17
|
+
const sha2_1 = require("@noble/hashes/sha2");
|
|
18
18
|
const utils_1 = require("@noble/hashes/utils");
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
19
|
+
const _shortw_utils_ts_1 = require("./_shortw_utils.js");
|
|
20
|
+
const hash_to_curve_ts_1 = require("./abstract/hash-to-curve.js");
|
|
21
|
+
const modular_ts_1 = require("./abstract/modular.js");
|
|
22
|
+
const utils_ts_1 = require("./abstract/utils.js");
|
|
23
|
+
const weierstrass_ts_1 = require("./abstract/weierstrass.js");
|
|
24
24
|
const secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');
|
|
25
25
|
const secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');
|
|
26
26
|
const _1n = BigInt(1);
|
|
@@ -38,41 +38,43 @@ function sqrtMod(y) {
|
|
|
38
38
|
const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);
|
|
39
39
|
const b2 = (y * y * y) % P; // x^3, 11
|
|
40
40
|
const b3 = (b2 * b2 * y) % P; // x^7
|
|
41
|
-
const b6 = ((0,
|
|
42
|
-
const b9 = ((0,
|
|
43
|
-
const b11 = ((0,
|
|
44
|
-
const b22 = ((0,
|
|
45
|
-
const b44 = ((0,
|
|
46
|
-
const b88 = ((0,
|
|
47
|
-
const b176 = ((0,
|
|
48
|
-
const b220 = ((0,
|
|
49
|
-
const b223 = ((0,
|
|
50
|
-
const t1 = ((0,
|
|
51
|
-
const t2 = ((0,
|
|
52
|
-
const root = (0,
|
|
41
|
+
const b6 = ((0, modular_ts_1.pow2)(b3, _3n, P) * b3) % P;
|
|
42
|
+
const b9 = ((0, modular_ts_1.pow2)(b6, _3n, P) * b3) % P;
|
|
43
|
+
const b11 = ((0, modular_ts_1.pow2)(b9, _2n, P) * b2) % P;
|
|
44
|
+
const b22 = ((0, modular_ts_1.pow2)(b11, _11n, P) * b11) % P;
|
|
45
|
+
const b44 = ((0, modular_ts_1.pow2)(b22, _22n, P) * b22) % P;
|
|
46
|
+
const b88 = ((0, modular_ts_1.pow2)(b44, _44n, P) * b44) % P;
|
|
47
|
+
const b176 = ((0, modular_ts_1.pow2)(b88, _88n, P) * b88) % P;
|
|
48
|
+
const b220 = ((0, modular_ts_1.pow2)(b176, _44n, P) * b44) % P;
|
|
49
|
+
const b223 = ((0, modular_ts_1.pow2)(b220, _3n, P) * b3) % P;
|
|
50
|
+
const t1 = ((0, modular_ts_1.pow2)(b223, _23n, P) * b22) % P;
|
|
51
|
+
const t2 = ((0, modular_ts_1.pow2)(t1, _6n, P) * b2) % P;
|
|
52
|
+
const root = (0, modular_ts_1.pow2)(t2, _2n, P);
|
|
53
53
|
if (!Fpk1.eql(Fpk1.sqr(root), y))
|
|
54
54
|
throw new Error('Cannot find square root');
|
|
55
55
|
return root;
|
|
56
56
|
}
|
|
57
|
-
const Fpk1 = (0,
|
|
57
|
+
const Fpk1 = (0, modular_ts_1.Field)(secp256k1P, undefined, undefined, { sqrt: sqrtMod });
|
|
58
58
|
/**
|
|
59
|
-
* secp256k1
|
|
59
|
+
* secp256k1 curve, ECDSA and ECDH methods.
|
|
60
|
+
*
|
|
61
|
+
* Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`
|
|
60
62
|
*
|
|
61
63
|
* @example
|
|
64
|
+
* ```js
|
|
62
65
|
* import { secp256k1 } from '@noble/curves/secp256k1';
|
|
63
|
-
*
|
|
64
66
|
* const priv = secp256k1.utils.randomPrivateKey();
|
|
65
67
|
* const pub = secp256k1.getPublicKey(priv);
|
|
66
68
|
* const msg = new Uint8Array(32).fill(1); // message hash (not message) in ecdsa
|
|
67
69
|
* const sig = secp256k1.sign(msg, priv); // `{prehash: true}` option is available
|
|
68
70
|
* const isValid = secp256k1.verify(sig, msg, pub) === true;
|
|
71
|
+
* ```
|
|
69
72
|
*/
|
|
70
|
-
exports.secp256k1 = (0,
|
|
71
|
-
a: BigInt(0),
|
|
73
|
+
exports.secp256k1 = (0, _shortw_utils_ts_1.createCurve)({
|
|
74
|
+
a: BigInt(0),
|
|
72
75
|
b: BigInt(7),
|
|
73
|
-
Fp: Fpk1,
|
|
74
|
-
n: secp256k1N,
|
|
75
|
-
// Base point (x, y) aka generator point
|
|
76
|
+
Fp: Fpk1,
|
|
77
|
+
n: secp256k1N,
|
|
76
78
|
Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),
|
|
77
79
|
Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),
|
|
78
80
|
h: BigInt(1), // Cofactor
|
|
@@ -89,8 +91,8 @@ exports.secp256k1 = (0, _shortw_utils_js_1.createCurve)({
|
|
|
89
91
|
const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)
|
|
90
92
|
const c1 = divNearest(b2 * k, n);
|
|
91
93
|
const c2 = divNearest(-b1 * k, n);
|
|
92
|
-
let k1 = (0,
|
|
93
|
-
let k2 = (0,
|
|
94
|
+
let k1 = (0, modular_ts_1.mod)(k - c1 * a1 - c2 * a2, n);
|
|
95
|
+
let k2 = (0, modular_ts_1.mod)(-c1 * b1 - c2 * b2, n);
|
|
94
96
|
const k1neg = k1 > POW_2_128;
|
|
95
97
|
const k2neg = k2 > POW_2_128;
|
|
96
98
|
if (k1neg)
|
|
@@ -103,7 +105,7 @@ exports.secp256k1 = (0, _shortw_utils_js_1.createCurve)({
|
|
|
103
105
|
return { k1neg, k1, k2neg, k2 };
|
|
104
106
|
},
|
|
105
107
|
},
|
|
106
|
-
},
|
|
108
|
+
}, sha2_1.sha256);
|
|
107
109
|
// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.
|
|
108
110
|
// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
|
|
109
111
|
const _0n = BigInt(0);
|
|
@@ -112,17 +114,17 @@ const TAGGED_HASH_PREFIXES = {};
|
|
|
112
114
|
function taggedHash(tag, ...messages) {
|
|
113
115
|
let tagP = TAGGED_HASH_PREFIXES[tag];
|
|
114
116
|
if (tagP === undefined) {
|
|
115
|
-
const tagH = (0,
|
|
116
|
-
tagP = (0,
|
|
117
|
+
const tagH = (0, sha2_1.sha256)(Uint8Array.from(tag, (c) => c.charCodeAt(0)));
|
|
118
|
+
tagP = (0, utils_ts_1.concatBytes)(tagH, tagH);
|
|
117
119
|
TAGGED_HASH_PREFIXES[tag] = tagP;
|
|
118
120
|
}
|
|
119
|
-
return (0,
|
|
121
|
+
return (0, sha2_1.sha256)((0, utils_ts_1.concatBytes)(tagP, ...messages));
|
|
120
122
|
}
|
|
121
123
|
// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03
|
|
122
124
|
const pointToBytes = (point) => point.toRawBytes(true).slice(1);
|
|
123
|
-
const numTo32b = (n) => (0,
|
|
124
|
-
const modP = (x) => (0,
|
|
125
|
-
const modN = (x) => (0,
|
|
125
|
+
const numTo32b = (n) => (0, utils_ts_1.numberToBytesBE)(n, 32);
|
|
126
|
+
const modP = (x) => (0, modular_ts_1.mod)(x, secp256k1P);
|
|
127
|
+
const modN = (x) => (0, modular_ts_1.mod)(x, secp256k1N);
|
|
126
128
|
const Point = exports.secp256k1.ProjectivePoint;
|
|
127
129
|
const GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);
|
|
128
130
|
// Calculate point, scalar and bytes
|
|
@@ -137,7 +139,7 @@ function schnorrGetExtPubKey(priv) {
|
|
|
137
139
|
* @returns valid point checked for being on-curve
|
|
138
140
|
*/
|
|
139
141
|
function lift_x(x) {
|
|
140
|
-
(0,
|
|
142
|
+
(0, utils_ts_1.aInRange)('x', x, _1n, secp256k1P); // Fail if x ≥ p.
|
|
141
143
|
const xx = modP(x * x);
|
|
142
144
|
const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.
|
|
143
145
|
let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.
|
|
@@ -147,7 +149,7 @@ function lift_x(x) {
|
|
|
147
149
|
p.assertValidity();
|
|
148
150
|
return p;
|
|
149
151
|
}
|
|
150
|
-
const num =
|
|
152
|
+
const num = utils_ts_1.bytesToNumberBE;
|
|
151
153
|
/**
|
|
152
154
|
* Create tagged hash, convert it to bigint, reduce modulo-n.
|
|
153
155
|
*/
|
|
@@ -165,9 +167,9 @@ function schnorrGetPublicKey(privateKey) {
|
|
|
165
167
|
* auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.
|
|
166
168
|
*/
|
|
167
169
|
function schnorrSign(message, privateKey, auxRand = (0, utils_1.randomBytes)(32)) {
|
|
168
|
-
const m = (0,
|
|
170
|
+
const m = (0, utils_ts_1.ensureBytes)('message', message);
|
|
169
171
|
const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder
|
|
170
|
-
const a = (0,
|
|
172
|
+
const a = (0, utils_ts_1.ensureBytes)('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array
|
|
171
173
|
const t = numTo32b(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)
|
|
172
174
|
const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)
|
|
173
175
|
const k_ = modN(num(rand)); // Let k' = int(rand) mod n
|
|
@@ -188,16 +190,16 @@ function schnorrSign(message, privateKey, auxRand = (0, utils_1.randomBytes)(32)
|
|
|
188
190
|
* Will swallow errors & return false except for initial type validation of arguments.
|
|
189
191
|
*/
|
|
190
192
|
function schnorrVerify(signature, message, publicKey) {
|
|
191
|
-
const sig = (0,
|
|
192
|
-
const m = (0,
|
|
193
|
-
const pub = (0,
|
|
193
|
+
const sig = (0, utils_ts_1.ensureBytes)('signature', signature, 64);
|
|
194
|
+
const m = (0, utils_ts_1.ensureBytes)('message', message);
|
|
195
|
+
const pub = (0, utils_ts_1.ensureBytes)('publicKey', publicKey, 32);
|
|
194
196
|
try {
|
|
195
197
|
const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails
|
|
196
198
|
const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.
|
|
197
|
-
if (!(0,
|
|
199
|
+
if (!(0, utils_ts_1.inRange)(r, _1n, secp256k1P))
|
|
198
200
|
return false;
|
|
199
201
|
const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.
|
|
200
|
-
if (!(0,
|
|
202
|
+
if (!(0, utils_ts_1.inRange)(s, _1n, secp256k1N))
|
|
201
203
|
return false;
|
|
202
204
|
const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n
|
|
203
205
|
const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P
|
|
@@ -213,12 +215,14 @@ function schnorrVerify(signature, message, publicKey) {
|
|
|
213
215
|
* Schnorr signatures over secp256k1.
|
|
214
216
|
* https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
|
|
215
217
|
* @example
|
|
218
|
+
* ```js
|
|
216
219
|
* import { schnorr } from '@noble/curves/secp256k1';
|
|
217
220
|
* const priv = schnorr.utils.randomPrivateKey();
|
|
218
221
|
* const pub = schnorr.getPublicKey(priv);
|
|
219
222
|
* const msg = new TextEncoder().encode('hello');
|
|
220
223
|
* const sig = schnorr.sign(msg, priv);
|
|
221
224
|
* const isValid = schnorr.verify(sig, msg, pub);
|
|
225
|
+
* ```
|
|
222
226
|
*/
|
|
223
227
|
exports.schnorr = (() => ({
|
|
224
228
|
getPublicKey: schnorrGetPublicKey,
|
|
@@ -228,13 +232,13 @@ exports.schnorr = (() => ({
|
|
|
228
232
|
randomPrivateKey: exports.secp256k1.utils.randomPrivateKey,
|
|
229
233
|
lift_x,
|
|
230
234
|
pointToBytes,
|
|
231
|
-
numberToBytesBE:
|
|
232
|
-
bytesToNumberBE:
|
|
235
|
+
numberToBytesBE: utils_ts_1.numberToBytesBE,
|
|
236
|
+
bytesToNumberBE: utils_ts_1.bytesToNumberBE,
|
|
233
237
|
taggedHash,
|
|
234
|
-
mod:
|
|
238
|
+
mod: modular_ts_1.mod,
|
|
235
239
|
},
|
|
236
240
|
}))();
|
|
237
|
-
const isoMap = /* @__PURE__ */ (() => (0,
|
|
241
|
+
const isoMap = /* @__PURE__ */ (() => (0, hash_to_curve_ts_1.isogenyMap)(Fpk1, [
|
|
238
242
|
// xNum
|
|
239
243
|
[
|
|
240
244
|
'0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',
|
|
@@ -263,12 +267,12 @@ const isoMap = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.isogenyMap)(Fpk1, [
|
|
|
263
267
|
'0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1
|
|
264
268
|
],
|
|
265
269
|
].map((i) => i.map((j) => BigInt(j)))))();
|
|
266
|
-
const mapSWU = /* @__PURE__ */ (() => (0,
|
|
270
|
+
const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_ts_1.mapToCurveSimpleSWU)(Fpk1, {
|
|
267
271
|
A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),
|
|
268
272
|
B: BigInt('1771'),
|
|
269
273
|
Z: Fpk1.create(BigInt('-11')),
|
|
270
274
|
}))();
|
|
271
|
-
const htf = /* @__PURE__ */ (() => (0,
|
|
275
|
+
const htf = /* @__PURE__ */ (() => (0, hash_to_curve_ts_1.createHasher)(exports.secp256k1.ProjectivePoint, (scalars) => {
|
|
272
276
|
const { x, y } = mapSWU(Fpk1.create(scalars[0]));
|
|
273
277
|
return isoMap(x, y);
|
|
274
278
|
}, {
|
|
@@ -278,10 +282,10 @@ const htf = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.createHasher)(exports.
|
|
|
278
282
|
m: 1,
|
|
279
283
|
k: 128,
|
|
280
284
|
expand: 'xmd',
|
|
281
|
-
hash:
|
|
285
|
+
hash: sha2_1.sha256,
|
|
282
286
|
}))();
|
|
283
|
-
/** secp256k1 hash-to-curve from
|
|
287
|
+
/** secp256k1 hash-to-curve from RFC 9380. */
|
|
284
288
|
exports.hashToCurve = (() => htf.hashToCurve)();
|
|
285
|
-
/** secp256k1 encode-to-curve from
|
|
289
|
+
/** secp256k1 encode-to-curve from RFC 9380. */
|
|
286
290
|
exports.encodeToCurve = (() => htf.encodeToCurve)();
|
|
287
291
|
//# sourceMappingURL=secp256k1.js.map
|
package/secp256k1.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["src/secp256k1.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["src/secp256k1.ts"],"names":[],"mappings":"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"}
|
package/src/_shortw_utils.ts
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
6
6
|
import { hmac } from '@noble/hashes/hmac';
|
|
7
7
|
import { concatBytes, randomBytes } from '@noble/hashes/utils';
|
|
8
|
-
import { CHash } from './abstract/utils.
|
|
9
|
-
import {
|
|
8
|
+
import type { CHash } from './abstract/utils.ts';
|
|
9
|
+
import { type CurveFn, type CurveType, weierstrass } from './abstract/weierstrass.ts';
|
|
10
10
|
|
|
11
11
|
/** connects noble-curves to noble-hashes */
|
|
12
12
|
export function getHash(hash: CHash): {
|
package/src/abstract/bls.ts
CHANGED
|
@@ -16,21 +16,23 @@
|
|
|
16
16
|
* @module
|
|
17
17
|
**/
|
|
18
18
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
19
|
-
// TODO: import { AffinePoint } from './curve.
|
|
20
|
-
import { IField, getMinHashLength, mapHashToField } from './modular.js';
|
|
21
|
-
import { Hex, PrivKey, CHash, ensureBytes, memoized } from './utils.js';
|
|
22
|
-
// prettier-ignore
|
|
19
|
+
// TODO: import { AffinePoint } from './curve.ts';
|
|
23
20
|
import {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
type H2CPointConstructor,
|
|
22
|
+
type htfBasicOpts,
|
|
23
|
+
type Opts as HTFOpts,
|
|
24
|
+
type MapToCurve,
|
|
25
|
+
createHasher,
|
|
26
|
+
} from './hash-to-curve.ts';
|
|
27
|
+
import { type IField, getMinHashLength, mapHashToField } from './modular.ts';
|
|
28
|
+
import type { Fp12, Fp12Bls, Fp2, Fp2Bls, Fp6 } from './tower.ts';
|
|
29
|
+
import { type CHash, type Hex, type PrivKey, ensureBytes, memoized } from './utils.ts';
|
|
27
30
|
import {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
type CurvePointsRes,
|
|
32
|
+
type CurvePointsType,
|
|
33
|
+
type ProjPointType,
|
|
31
34
|
weierstrassPoints,
|
|
32
|
-
} from './weierstrass.
|
|
33
|
-
import type { Fp2, Fp6, Fp12, Fp2Bls, Fp12Bls } from './tower.js';
|
|
35
|
+
} from './weierstrass.ts';
|
|
34
36
|
|
|
35
37
|
type Fp = bigint; // Can be different field?
|
|
36
38
|
|
package/src/abstract/curve.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
6
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
7
|
-
import { IField,
|
|
8
|
-
import {
|
|
7
|
+
import { type IField, nLength, validateField } from './modular.ts';
|
|
8
|
+
import { bitLen, bitMask, validateObject } from './utils.ts';
|
|
9
9
|
|
|
10
10
|
const _0n = BigInt(0);
|
|
11
11
|
const _1n = BigInt(1);
|
|
@@ -40,11 +40,48 @@ function validateW(W: number, bits: number) {
|
|
|
40
40
|
throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
/** Internal wNAF opts for specific W and scalarBits */
|
|
44
|
+
export type WOpts = {
|
|
45
|
+
windows: number;
|
|
46
|
+
windowSize: number;
|
|
47
|
+
mask: bigint;
|
|
48
|
+
maxNumber: number;
|
|
49
|
+
shiftBy: bigint;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
function calcWOpts(W: number, scalarBits: number): WOpts {
|
|
53
|
+
validateW(W, scalarBits);
|
|
54
|
+
const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero
|
|
55
|
+
const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero
|
|
56
|
+
const maxNumber = 2 ** W; // W=8 256
|
|
57
|
+
const mask = bitMask(W); // W=8 255 == mask 0b11111111
|
|
58
|
+
const shiftBy = BigInt(W); // W=8 8
|
|
59
|
+
return { windows, windowSize, mask, maxNumber, shiftBy };
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function calcOffsets(n: bigint, window: number, wOpts: WOpts) {
|
|
63
|
+
const { windowSize, mask, maxNumber, shiftBy } = wOpts;
|
|
64
|
+
let wbits = Number(n & mask); // extract W bits.
|
|
65
|
+
let nextN = n >> shiftBy; // shift number by W bits.
|
|
66
|
+
|
|
67
|
+
// What actually happens here:
|
|
68
|
+
// const highestBit = Number(mask ^ (mask >> 1n));
|
|
69
|
+
// let wbits2 = wbits - 1; // skip zero
|
|
70
|
+
// if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);
|
|
71
|
+
|
|
72
|
+
// split if bits > max: +224 => 256-32
|
|
73
|
+
if (wbits > windowSize) {
|
|
74
|
+
// we skip zero, which means instead of `>= size-1`, we do `> size`
|
|
75
|
+
wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.
|
|
76
|
+
nextN += _1n; // +256 (carry)
|
|
77
|
+
}
|
|
78
|
+
const offsetStart = window * windowSize;
|
|
79
|
+
const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero
|
|
80
|
+
const isZero = wbits === 0; // is current window slice a 0?
|
|
81
|
+
const isNeg = wbits < 0; // is current window slice negative?
|
|
82
|
+
const isNegF = window % 2 !== 0; // fake random statement for noise
|
|
83
|
+
const offsetF = offsetStart; // fake offset for noise
|
|
84
|
+
return { nextN, offset, isZero, isNeg, isNegF, offsetF };
|
|
48
85
|
}
|
|
49
86
|
|
|
50
87
|
function validateMSMPoints(points: any[], c: any) {
|
|
@@ -61,9 +98,10 @@ function validateMSMScalars(scalars: any[], field: any) {
|
|
|
61
98
|
}
|
|
62
99
|
|
|
63
100
|
// Since points in different groups cannot be equal (different object constructor),
|
|
64
|
-
// we can have single place to store precomputes
|
|
101
|
+
// we can have single place to store precomputes.
|
|
102
|
+
// Allows to make points frozen / immutable.
|
|
65
103
|
const pointPrecomputes = new WeakMap<any, any[]>();
|
|
66
|
-
const pointWindowSizes = new WeakMap<any, number>();
|
|
104
|
+
const pointWindowSizes = new WeakMap<any, number>();
|
|
67
105
|
|
|
68
106
|
function getW(P: any): number {
|
|
69
107
|
return pointWindowSizes.get(P) || 1;
|
|
@@ -135,7 +173,7 @@ export function wNAF<T extends Group<T>>(c: GroupConstructor<T>, bits: number):
|
|
|
135
173
|
for (let window = 0; window < windows; window++) {
|
|
136
174
|
base = p;
|
|
137
175
|
points.push(base);
|
|
138
|
-
// =1,
|
|
176
|
+
// i=1, bc we skip 0
|
|
139
177
|
for (let i = 1; i < windowSize; i++) {
|
|
140
178
|
base = base.add(p);
|
|
141
179
|
points.push(base);
|
|
@@ -153,54 +191,34 @@ export function wNAF<T extends Group<T>>(c: GroupConstructor<T>, bits: number):
|
|
|
153
191
|
* @returns real and fake (for const-time) points
|
|
154
192
|
*/
|
|
155
193
|
wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T } {
|
|
156
|
-
//
|
|
157
|
-
//
|
|
158
|
-
|
|
159
|
-
|
|
194
|
+
// Smaller version:
|
|
195
|
+
// https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541
|
|
196
|
+
// TODO: check the scalar is less than group order?
|
|
197
|
+
// wNAF behavior is undefined otherwise. But have to carefully remove
|
|
198
|
+
// other checks before wNAF. ORDER == bits here.
|
|
199
|
+
// Accumulators
|
|
160
200
|
let p = c.ZERO;
|
|
161
201
|
let f = c.BASE;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
//
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
// +224 => 256 - 32
|
|
177
|
-
if (wbits > windowSize) {
|
|
178
|
-
wbits -= maxNumber;
|
|
179
|
-
n += _1n;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// This code was first written with assumption that 'f' and 'p' will never be infinity point:
|
|
183
|
-
// since each addition is multiplied by 2 ** W, it cannot cancel each other. However,
|
|
184
|
-
// there is negate now: it is possible that negated element from low value
|
|
185
|
-
// would be the same as high element, which will create carry into next window.
|
|
186
|
-
// It's not obvious how this can fail, but still worth investigating later.
|
|
187
|
-
|
|
188
|
-
// Check if we're onto Zero point.
|
|
189
|
-
// Add random point inside current window to f.
|
|
190
|
-
const offset1 = offset;
|
|
191
|
-
const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero
|
|
192
|
-
const cond1 = window % 2 !== 0;
|
|
193
|
-
const cond2 = wbits < 0;
|
|
194
|
-
if (wbits === 0) {
|
|
195
|
-
// The most important part for const-time getPublicKey
|
|
196
|
-
f = f.add(constTimeNegate(cond1, precomputes[offset1]));
|
|
202
|
+
// This code was first written with assumption that 'f' and 'p' will never be infinity point:
|
|
203
|
+
// since each addition is multiplied by 2 ** W, it cannot cancel each other. However,
|
|
204
|
+
// there is negate now: it is possible that negated element from low value
|
|
205
|
+
// would be the same as high element, which will create carry into next window.
|
|
206
|
+
// It's not obvious how this can fail, but still worth investigating later.
|
|
207
|
+
const wo = calcWOpts(W, bits);
|
|
208
|
+
for (let window = 0; window < wo.windows; window++) {
|
|
209
|
+
// (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise
|
|
210
|
+
const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);
|
|
211
|
+
n = nextN;
|
|
212
|
+
if (isZero) {
|
|
213
|
+
// bits are 0: add garbage to fake point
|
|
214
|
+
// Important part for const-time getPublicKey: add random "noise" point to f.
|
|
215
|
+
f = f.add(constTimeNegate(isNegF, precomputes[offsetF]));
|
|
197
216
|
} else {
|
|
198
|
-
|
|
217
|
+
// bits are 1: add to result point
|
|
218
|
+
p = p.add(constTimeNegate(isNeg, precomputes[offset]));
|
|
199
219
|
}
|
|
200
220
|
}
|
|
201
|
-
//
|
|
202
|
-
// Even if the variable is still unused, there are some checks which will
|
|
203
|
-
// throw an exception, so compiler needs to prove they won't happen, which is hard.
|
|
221
|
+
// Return both real and fake points: JIT won't eliminate f.
|
|
204
222
|
// At this point there is a way to F be infinity-point even if p is not,
|
|
205
223
|
// which makes it less const-time: around 1 bigint multiply.
|
|
206
224
|
return { p, f };
|
|
@@ -215,28 +233,19 @@ export function wNAF<T extends Group<T>>(c: GroupConstructor<T>, bits: number):
|
|
|
215
233
|
* @returns point
|
|
216
234
|
*/
|
|
217
235
|
wNAFUnsafe(W: number, precomputes: T[], n: bigint, acc: T = c.ZERO): T {
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
// +224 => 256 - 32
|
|
231
|
-
if (wbits > windowSize) {
|
|
232
|
-
wbits -= maxNumber;
|
|
233
|
-
n += _1n;
|
|
236
|
+
const wo = calcWOpts(W, bits);
|
|
237
|
+
for (let window = 0; window < wo.windows; window++) {
|
|
238
|
+
if (n === _0n) break; // Early-exit, skip 0 value
|
|
239
|
+
const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);
|
|
240
|
+
n = nextN;
|
|
241
|
+
if (isZero) {
|
|
242
|
+
// Window bits are 0: skip processing.
|
|
243
|
+
// Move to next window.
|
|
244
|
+
continue;
|
|
245
|
+
} else {
|
|
246
|
+
const item = precomputes[offset];
|
|
247
|
+
acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM
|
|
234
248
|
}
|
|
235
|
-
if (wbits === 0) continue;
|
|
236
|
-
let curr = precomputes[offset + Math.abs(wbits) - 1]; // -1 because we skip zero
|
|
237
|
-
if (wbits < 0) curr = curr.negate();
|
|
238
|
-
// NOTE: by re-using acc, we can save a lot of additions in case of MSM
|
|
239
|
-
acc = acc.add(curr);
|
|
240
249
|
}
|
|
241
250
|
return acc;
|
|
242
251
|
},
|
|
@@ -276,7 +285,7 @@ export function wNAF<T extends Group<T>>(c: GroupConstructor<T>, bits: number):
|
|
|
276
285
|
|
|
277
286
|
/**
|
|
278
287
|
* Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).
|
|
279
|
-
* 30x faster vs naive addition on L=4096, 10x faster
|
|
288
|
+
* 30x faster vs naive addition on L=4096, 10x faster than precomputes.
|
|
280
289
|
* For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.
|
|
281
290
|
* Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.
|
|
282
291
|
* @param c Curve Point constructor
|
|
@@ -303,15 +312,15 @@ export function pippenger<T extends Group<T>>(
|
|
|
303
312
|
const zero = c.ZERO;
|
|
304
313
|
const wbits = bitLen(BigInt(points.length));
|
|
305
314
|
const windowSize = wbits > 12 ? wbits - 3 : wbits > 4 ? wbits - 2 : wbits ? 2 : 1; // in bits
|
|
306
|
-
const MASK = (
|
|
307
|
-
const buckets = new Array(MASK + 1).fill(zero); // +1 for zero array
|
|
315
|
+
const MASK = bitMask(windowSize);
|
|
316
|
+
const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array
|
|
308
317
|
const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;
|
|
309
318
|
let sum = zero;
|
|
310
319
|
for (let i = lastBits; i >= 0; i -= windowSize) {
|
|
311
320
|
buckets.fill(zero);
|
|
312
321
|
for (let j = 0; j < scalars.length; j++) {
|
|
313
322
|
const scalar = scalars[j];
|
|
314
|
-
const wbits = Number((scalar >> BigInt(i)) &
|
|
323
|
+
const wbits = Number((scalar >> BigInt(i)) & MASK);
|
|
315
324
|
buckets[wbits] = buckets[wbits].add(points[j]);
|
|
316
325
|
}
|
|
317
326
|
let resI = zero; // not using this will do small speed-up, but will lose ct
|
|
@@ -378,7 +387,7 @@ export function precomputeMSMUnsafe<T extends Group<T>>(
|
|
|
378
387
|
const zero = c.ZERO;
|
|
379
388
|
const tableSize = 2 ** windowSize - 1; // table size (without zero)
|
|
380
389
|
const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item
|
|
381
|
-
const MASK =
|
|
390
|
+
const MASK = bitMask(windowSize);
|
|
382
391
|
const tables = points.map((p: T) => {
|
|
383
392
|
const res = [];
|
|
384
393
|
for (let i = 0, acc = p; i < tableSize; i++) {
|