@noble/curves 1.9.6 → 2.0.0-beta.1
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 +267 -421
- package/abstract/bls.d.ts +49 -111
- package/abstract/bls.d.ts.map +1 -1
- package/abstract/bls.js +108 -152
- package/abstract/bls.js.map +1 -1
- package/abstract/curve.d.ts +4 -45
- package/abstract/curve.d.ts.map +1 -1
- package/abstract/curve.js +22 -47
- package/abstract/curve.js.map +1 -1
- package/abstract/edwards.d.ts +11 -68
- package/abstract/edwards.d.ts.map +1 -1
- package/abstract/edwards.js +62 -134
- package/abstract/edwards.js.map +1 -1
- package/abstract/fft.js +14 -27
- package/abstract/fft.js.map +1 -1
- package/abstract/hash-to-curve.d.ts +11 -24
- package/abstract/hash-to-curve.d.ts.map +1 -1
- package/abstract/hash-to-curve.js +30 -35
- package/abstract/hash-to-curve.js.map +1 -1
- package/abstract/modular.d.ts +5 -17
- package/abstract/modular.d.ts.map +1 -1
- package/abstract/modular.js +166 -167
- package/abstract/modular.js.map +1 -1
- package/abstract/montgomery.d.ts +4 -9
- package/abstract/montgomery.d.ts.map +1 -1
- package/abstract/montgomery.js +15 -18
- package/abstract/montgomery.js.map +1 -1
- package/abstract/oprf.d.ts +282 -0
- package/abstract/oprf.d.ts.map +1 -0
- package/abstract/oprf.js +297 -0
- package/abstract/oprf.js.map +1 -0
- package/abstract/poseidon.js +20 -24
- package/abstract/poseidon.js.map +1 -1
- package/abstract/tower.d.ts.map +1 -1
- package/abstract/tower.js +43 -19
- package/abstract/tower.js.map +1 -1
- package/abstract/weierstrass.d.ts +11 -145
- package/abstract/weierstrass.d.ts.map +1 -1
- package/abstract/weierstrass.js +122 -331
- package/abstract/weierstrass.js.map +1 -1
- package/bls12-381.d.ts +2 -2
- package/bls12-381.d.ts.map +1 -1
- package/bls12-381.js +171 -180
- package/bls12-381.js.map +1 -1
- package/bn254.d.ts +58 -10
- package/bn254.d.ts.map +1 -1
- package/bn254.js +69 -97
- package/bn254.js.map +1 -1
- package/ed25519.d.ts +12 -31
- package/ed25519.d.ts.map +1 -1
- package/ed25519.js +95 -137
- package/ed25519.js.map +1 -1
- package/ed448.d.ts +11 -29
- package/ed448.d.ts.map +1 -1
- package/ed448.js +85 -123
- package/ed448.js.map +1 -1
- package/index.js +1 -1
- package/misc.d.ts +10 -14
- package/misc.d.ts.map +1 -1
- package/misc.js +51 -60
- package/misc.js.map +1 -1
- package/nist.d.ts +11 -14
- package/nist.d.ts.map +1 -1
- package/nist.js +46 -55
- package/nist.js.map +1 -1
- package/package.json +8 -223
- package/secp256k1.d.ts +7 -23
- package/secp256k1.d.ts.map +1 -1
- package/secp256k1.js +47 -60
- package/secp256k1.js.map +1 -1
- package/src/abstract/bls.ts +197 -344
- package/src/abstract/curve.ts +7 -80
- package/src/abstract/edwards.ts +49 -171
- package/src/abstract/hash-to-curve.ts +32 -45
- package/src/abstract/modular.ts +144 -130
- package/src/abstract/montgomery.ts +19 -20
- package/src/abstract/oprf.ts +600 -0
- package/src/abstract/tower.ts +0 -3
- package/src/abstract/weierstrass.ts +69 -438
- package/src/bls12-381.ts +143 -138
- package/src/bn254.ts +65 -89
- package/src/ed25519.ts +53 -105
- package/src/ed448.ts +32 -77
- package/src/index.ts +1 -1
- package/src/misc.ts +66 -49
- package/src/nist.ts +48 -57
- package/src/secp256k1.ts +32 -65
- package/src/utils.ts +41 -61
- package/src/webcrypto.ts +362 -0
- package/utils.d.ts +28 -19
- package/utils.d.ts.map +1 -1
- package/utils.js +45 -121
- package/utils.js.map +1 -1
- package/webcrypto.d.ts +47 -0
- package/webcrypto.d.ts.map +1 -0
- package/webcrypto.js +231 -0
- package/webcrypto.js.map +1 -0
- package/esm/_shortw_utils.d.ts +0 -19
- package/esm/_shortw_utils.d.ts.map +0 -1
- package/esm/_shortw_utils.js +0 -16
- package/esm/_shortw_utils.js.map +0 -1
- package/esm/abstract/bls.d.ts +0 -190
- package/esm/abstract/bls.d.ts.map +0 -1
- package/esm/abstract/bls.js +0 -408
- package/esm/abstract/bls.js.map +0 -1
- package/esm/abstract/curve.d.ts +0 -231
- package/esm/abstract/curve.d.ts.map +0 -1
- package/esm/abstract/curve.js +0 -465
- package/esm/abstract/curve.js.map +0 -1
- package/esm/abstract/edwards.d.ts +0 -243
- package/esm/abstract/edwards.d.ts.map +0 -1
- package/esm/abstract/edwards.js +0 -627
- package/esm/abstract/edwards.js.map +0 -1
- package/esm/abstract/fft.d.ts +0 -122
- package/esm/abstract/fft.d.ts.map +0 -1
- package/esm/abstract/fft.js +0 -425
- package/esm/abstract/fft.js.map +0 -1
- package/esm/abstract/hash-to-curve.d.ts +0 -102
- package/esm/abstract/hash-to-curve.d.ts.map +0 -1
- package/esm/abstract/hash-to-curve.js +0 -203
- package/esm/abstract/hash-to-curve.js.map +0 -1
- package/esm/abstract/modular.d.ts +0 -171
- package/esm/abstract/modular.d.ts.map +0 -1
- package/esm/abstract/modular.js +0 -530
- package/esm/abstract/modular.js.map +0 -1
- package/esm/abstract/montgomery.d.ts +0 -30
- package/esm/abstract/montgomery.d.ts.map +0 -1
- package/esm/abstract/montgomery.js +0 -157
- package/esm/abstract/montgomery.js.map +0 -1
- package/esm/abstract/poseidon.d.ts +0 -68
- package/esm/abstract/poseidon.d.ts.map +0 -1
- package/esm/abstract/poseidon.js +0 -296
- package/esm/abstract/poseidon.js.map +0 -1
- package/esm/abstract/tower.d.ts +0 -95
- package/esm/abstract/tower.d.ts.map +0 -1
- package/esm/abstract/tower.js +0 -714
- package/esm/abstract/tower.js.map +0 -1
- package/esm/abstract/utils.d.ts +0 -5
- package/esm/abstract/utils.d.ts.map +0 -1
- package/esm/abstract/utils.js +0 -7
- package/esm/abstract/utils.js.map +0 -1
- package/esm/abstract/weierstrass.d.ts +0 -413
- package/esm/abstract/weierstrass.d.ts.map +0 -1
- package/esm/abstract/weierstrass.js +0 -1413
- package/esm/abstract/weierstrass.js.map +0 -1
- package/esm/bls12-381.d.ts +0 -16
- package/esm/bls12-381.d.ts.map +0 -1
- package/esm/bls12-381.js +0 -705
- package/esm/bls12-381.js.map +0 -1
- package/esm/bn254.d.ts +0 -18
- package/esm/bn254.d.ts.map +0 -1
- package/esm/bn254.js +0 -214
- package/esm/bn254.js.map +0 -1
- package/esm/ed25519.d.ts +0 -106
- package/esm/ed25519.d.ts.map +0 -1
- package/esm/ed25519.js +0 -467
- package/esm/ed25519.js.map +0 -1
- package/esm/ed448.d.ts +0 -100
- package/esm/ed448.d.ts.map +0 -1
- package/esm/ed448.js +0 -459
- package/esm/ed448.js.map +0 -1
- package/esm/index.d.ts +0 -2
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -17
- package/esm/index.js.map +0 -1
- package/esm/jubjub.d.ts +0 -12
- package/esm/jubjub.d.ts.map +0 -1
- package/esm/jubjub.js +0 -12
- package/esm/jubjub.js.map +0 -1
- package/esm/misc.d.ts +0 -19
- package/esm/misc.d.ts.map +0 -1
- package/esm/misc.js +0 -109
- package/esm/misc.js.map +0 -1
- package/esm/nist.d.ts +0 -21
- package/esm/nist.d.ts.map +0 -1
- package/esm/nist.js +0 -132
- package/esm/nist.js.map +0 -1
- package/esm/p256.d.ts +0 -16
- package/esm/p256.d.ts.map +0 -1
- package/esm/p256.js +0 -16
- package/esm/p256.js.map +0 -1
- package/esm/p384.d.ts +0 -16
- package/esm/p384.d.ts.map +0 -1
- package/esm/p384.js +0 -16
- package/esm/p384.js.map +0 -1
- package/esm/p521.d.ts +0 -16
- package/esm/p521.d.ts.map +0 -1
- package/esm/p521.js +0 -16
- package/esm/p521.js.map +0 -1
- package/esm/package.json +0 -4
- package/esm/pasta.d.ts +0 -10
- package/esm/pasta.d.ts.map +0 -1
- package/esm/pasta.js +0 -10
- package/esm/pasta.js.map +0 -1
- package/esm/secp256k1.d.ts +0 -89
- package/esm/secp256k1.d.ts.map +0 -1
- package/esm/secp256k1.js +0 -294
- package/esm/secp256k1.js.map +0 -1
- package/esm/utils.d.ts +0 -110
- package/esm/utils.d.ts.map +0 -1
- package/esm/utils.js +0 -322
- package/esm/utils.js.map +0 -1
- package/src/_shortw_utils.ts +0 -21
- package/src/abstract/utils.ts +0 -7
- package/src/jubjub.ts +0 -12
- package/src/p256.ts +0 -15
- package/src/p384.ts +0 -15
- package/src/p521.ts +0 -15
- package/src/package.json +0 -3
- package/src/pasta.ts +0 -9
package/esm/secp256k1.js
DELETED
|
@@ -1,294 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SECG secp256k1. See [pdf](https://www.secg.org/sec2-v2.pdf).
|
|
3
|
-
*
|
|
4
|
-
* Belongs to Koblitz curves: it has efficiently-computable GLV endomorphism ψ,
|
|
5
|
-
* check out {@link EndomorphismOpts}. Seems to be rigid (not backdoored).
|
|
6
|
-
* @module
|
|
7
|
-
*/
|
|
8
|
-
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
9
|
-
import { sha256 } from '@noble/hashes/sha2.js';
|
|
10
|
-
import { randomBytes } from '@noble/hashes/utils.js';
|
|
11
|
-
import { createCurve } from "./_shortw_utils.js";
|
|
12
|
-
import { createHasher, isogenyMap, } from "./abstract/hash-to-curve.js";
|
|
13
|
-
import { Field, mapHashToField, mod, pow2 } from "./abstract/modular.js";
|
|
14
|
-
import { _normFnElement, mapToCurveSimpleSWU, } from "./abstract/weierstrass.js";
|
|
15
|
-
import { bytesToNumberBE, concatBytes, ensureBytes, inRange, numberToBytesBE, utf8ToBytes, } from "./utils.js";
|
|
16
|
-
// Seems like generator was produced from some seed:
|
|
17
|
-
// `Point.BASE.multiply(Point.Fn.inv(2n, N)).toAffine().x`
|
|
18
|
-
// // gives short x 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63n
|
|
19
|
-
const secp256k1_CURVE = {
|
|
20
|
-
p: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),
|
|
21
|
-
n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),
|
|
22
|
-
h: BigInt(1),
|
|
23
|
-
a: BigInt(0),
|
|
24
|
-
b: BigInt(7),
|
|
25
|
-
Gx: BigInt('0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798'),
|
|
26
|
-
Gy: BigInt('0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8'),
|
|
27
|
-
};
|
|
28
|
-
const secp256k1_ENDO = {
|
|
29
|
-
beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),
|
|
30
|
-
basises: [
|
|
31
|
-
[BigInt('0x3086d221a7d46bcde86c90e49284eb15'), -BigInt('0xe4437ed6010e88286f547fa90abfe4c3')],
|
|
32
|
-
[BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8'), BigInt('0x3086d221a7d46bcde86c90e49284eb15')],
|
|
33
|
-
],
|
|
34
|
-
};
|
|
35
|
-
const _0n = /* @__PURE__ */ BigInt(0);
|
|
36
|
-
const _1n = /* @__PURE__ */ BigInt(1);
|
|
37
|
-
const _2n = /* @__PURE__ */ BigInt(2);
|
|
38
|
-
/**
|
|
39
|
-
* √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.
|
|
40
|
-
* (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]
|
|
41
|
-
*/
|
|
42
|
-
function sqrtMod(y) {
|
|
43
|
-
const P = secp256k1_CURVE.p;
|
|
44
|
-
// prettier-ignore
|
|
45
|
-
const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);
|
|
46
|
-
// prettier-ignore
|
|
47
|
-
const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);
|
|
48
|
-
const b2 = (y * y * y) % P; // x^3, 11
|
|
49
|
-
const b3 = (b2 * b2 * y) % P; // x^7
|
|
50
|
-
const b6 = (pow2(b3, _3n, P) * b3) % P;
|
|
51
|
-
const b9 = (pow2(b6, _3n, P) * b3) % P;
|
|
52
|
-
const b11 = (pow2(b9, _2n, P) * b2) % P;
|
|
53
|
-
const b22 = (pow2(b11, _11n, P) * b11) % P;
|
|
54
|
-
const b44 = (pow2(b22, _22n, P) * b22) % P;
|
|
55
|
-
const b88 = (pow2(b44, _44n, P) * b44) % P;
|
|
56
|
-
const b176 = (pow2(b88, _88n, P) * b88) % P;
|
|
57
|
-
const b220 = (pow2(b176, _44n, P) * b44) % P;
|
|
58
|
-
const b223 = (pow2(b220, _3n, P) * b3) % P;
|
|
59
|
-
const t1 = (pow2(b223, _23n, P) * b22) % P;
|
|
60
|
-
const t2 = (pow2(t1, _6n, P) * b2) % P;
|
|
61
|
-
const root = pow2(t2, _2n, P);
|
|
62
|
-
if (!Fpk1.eql(Fpk1.sqr(root), y))
|
|
63
|
-
throw new Error('Cannot find square root');
|
|
64
|
-
return root;
|
|
65
|
-
}
|
|
66
|
-
const Fpk1 = Field(secp256k1_CURVE.p, { sqrt: sqrtMod });
|
|
67
|
-
/**
|
|
68
|
-
* secp256k1 curve, ECDSA and ECDH methods.
|
|
69
|
-
*
|
|
70
|
-
* Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`
|
|
71
|
-
*
|
|
72
|
-
* @example
|
|
73
|
-
* ```js
|
|
74
|
-
* import { secp256k1 } from '@noble/curves/secp256k1';
|
|
75
|
-
* const { secretKey, publicKey } = secp256k1.keygen();
|
|
76
|
-
* const msg = new TextEncoder().encode('hello');
|
|
77
|
-
* const sig = secp256k1.sign(msg, secretKey);
|
|
78
|
-
* const isValid = secp256k1.verify(sig, msg, publicKey) === true;
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
export const secp256k1 = createCurve({ ...secp256k1_CURVE, Fp: Fpk1, lowS: true, endo: secp256k1_ENDO }, sha256);
|
|
82
|
-
// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.
|
|
83
|
-
// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
|
|
84
|
-
/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */
|
|
85
|
-
const TAGGED_HASH_PREFIXES = {};
|
|
86
|
-
function taggedHash(tag, ...messages) {
|
|
87
|
-
let tagP = TAGGED_HASH_PREFIXES[tag];
|
|
88
|
-
if (tagP === undefined) {
|
|
89
|
-
const tagH = sha256(utf8ToBytes(tag));
|
|
90
|
-
tagP = concatBytes(tagH, tagH);
|
|
91
|
-
TAGGED_HASH_PREFIXES[tag] = tagP;
|
|
92
|
-
}
|
|
93
|
-
return sha256(concatBytes(tagP, ...messages));
|
|
94
|
-
}
|
|
95
|
-
// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03
|
|
96
|
-
const pointToBytes = (point) => point.toBytes(true).slice(1);
|
|
97
|
-
const Pointk1 = /* @__PURE__ */ (() => secp256k1.Point)();
|
|
98
|
-
const hasEven = (y) => y % _2n === _0n;
|
|
99
|
-
// Calculate point, scalar and bytes
|
|
100
|
-
function schnorrGetExtPubKey(priv) {
|
|
101
|
-
const { Fn, BASE } = Pointk1;
|
|
102
|
-
const d_ = _normFnElement(Fn, priv);
|
|
103
|
-
const p = BASE.multiply(d_); // P = d'⋅G; 0 < d' < n check is done inside
|
|
104
|
-
const scalar = hasEven(p.y) ? d_ : Fn.neg(d_);
|
|
105
|
-
return { scalar, bytes: pointToBytes(p) };
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.
|
|
109
|
-
* @returns valid point checked for being on-curve
|
|
110
|
-
*/
|
|
111
|
-
function lift_x(x) {
|
|
112
|
-
const Fp = Fpk1;
|
|
113
|
-
if (!Fp.isValidNot0(x))
|
|
114
|
-
throw new Error('invalid x: Fail if x ≥ p');
|
|
115
|
-
const xx = Fp.create(x * x);
|
|
116
|
-
const c = Fp.create(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.
|
|
117
|
-
let y = Fp.sqrt(c); // Let y = c^(p+1)/4 mod p. Same as sqrt().
|
|
118
|
-
// Return the unique point P such that x(P) = x and
|
|
119
|
-
// y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.
|
|
120
|
-
if (!hasEven(y))
|
|
121
|
-
y = Fp.neg(y);
|
|
122
|
-
const p = Pointk1.fromAffine({ x, y });
|
|
123
|
-
p.assertValidity();
|
|
124
|
-
return p;
|
|
125
|
-
}
|
|
126
|
-
const num = bytesToNumberBE;
|
|
127
|
-
/**
|
|
128
|
-
* Create tagged hash, convert it to bigint, reduce modulo-n.
|
|
129
|
-
*/
|
|
130
|
-
function challenge(...args) {
|
|
131
|
-
return Pointk1.Fn.create(num(taggedHash('BIP0340/challenge', ...args)));
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Schnorr public key is just `x` coordinate of Point as per BIP340.
|
|
135
|
-
*/
|
|
136
|
-
function schnorrGetPublicKey(secretKey) {
|
|
137
|
-
return schnorrGetExtPubKey(secretKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Creates Schnorr signature as per BIP340. Verifies itself before returning anything.
|
|
141
|
-
* auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.
|
|
142
|
-
*/
|
|
143
|
-
function schnorrSign(message, secretKey, auxRand = randomBytes(32)) {
|
|
144
|
-
const { Fn } = Pointk1;
|
|
145
|
-
const m = ensureBytes('message', message);
|
|
146
|
-
const { bytes: px, scalar: d } = schnorrGetExtPubKey(secretKey); // checks for isWithinCurveOrder
|
|
147
|
-
const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array
|
|
148
|
-
const t = Fn.toBytes(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)
|
|
149
|
-
const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)
|
|
150
|
-
// Let k' = int(rand) mod n. Fail if k' = 0. Let R = k'⋅G
|
|
151
|
-
const { bytes: rx, scalar: k } = schnorrGetExtPubKey(rand);
|
|
152
|
-
const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.
|
|
153
|
-
const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).
|
|
154
|
-
sig.set(rx, 0);
|
|
155
|
-
sig.set(Fn.toBytes(Fn.create(k + e * d)), 32);
|
|
156
|
-
// If Verify(bytes(P), m, sig) (see below) returns failure, abort
|
|
157
|
-
if (!schnorrVerify(sig, m, px))
|
|
158
|
-
throw new Error('sign: Invalid signature produced');
|
|
159
|
-
return sig;
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Verifies Schnorr signature.
|
|
163
|
-
* Will swallow errors & return false except for initial type validation of arguments.
|
|
164
|
-
*/
|
|
165
|
-
function schnorrVerify(signature, message, publicKey) {
|
|
166
|
-
const { Fn, BASE } = Pointk1;
|
|
167
|
-
const sig = ensureBytes('signature', signature, 64);
|
|
168
|
-
const m = ensureBytes('message', message);
|
|
169
|
-
const pub = ensureBytes('publicKey', publicKey, 32);
|
|
170
|
-
try {
|
|
171
|
-
const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails
|
|
172
|
-
const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.
|
|
173
|
-
if (!inRange(r, _1n, secp256k1_CURVE.p))
|
|
174
|
-
return false;
|
|
175
|
-
const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.
|
|
176
|
-
if (!inRange(s, _1n, secp256k1_CURVE.n))
|
|
177
|
-
return false;
|
|
178
|
-
// int(challenge(bytes(r)||bytes(P)||m))%n
|
|
179
|
-
const e = challenge(Fn.toBytes(r), pointToBytes(P), m);
|
|
180
|
-
// R = s⋅G - e⋅P, where -eP == (n-e)P
|
|
181
|
-
const R = BASE.multiplyUnsafe(s).add(P.multiplyUnsafe(Fn.neg(e)));
|
|
182
|
-
const { x, y } = R.toAffine();
|
|
183
|
-
// Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.
|
|
184
|
-
if (R.is0() || !hasEven(y) || x !== r)
|
|
185
|
-
return false;
|
|
186
|
-
return true;
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Schnorr signatures over secp256k1.
|
|
194
|
-
* https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
|
|
195
|
-
* @example
|
|
196
|
-
* ```js
|
|
197
|
-
* import { schnorr } from '@noble/curves/secp256k1';
|
|
198
|
-
* const { secretKey, publicKey } = schnorr.keygen();
|
|
199
|
-
* // const publicKey = schnorr.getPublicKey(secretKey);
|
|
200
|
-
* const msg = new TextEncoder().encode('hello');
|
|
201
|
-
* const sig = schnorr.sign(msg, secretKey);
|
|
202
|
-
* const isValid = schnorr.verify(sig, msg, publicKey);
|
|
203
|
-
* ```
|
|
204
|
-
*/
|
|
205
|
-
export const schnorr = /* @__PURE__ */ (() => {
|
|
206
|
-
const size = 32;
|
|
207
|
-
const seedLength = 48;
|
|
208
|
-
const randomSecretKey = (seed = randomBytes(seedLength)) => {
|
|
209
|
-
return mapHashToField(seed, secp256k1_CURVE.n);
|
|
210
|
-
};
|
|
211
|
-
// TODO: remove
|
|
212
|
-
secp256k1.utils.randomSecretKey;
|
|
213
|
-
function keygen(seed) {
|
|
214
|
-
const secretKey = randomSecretKey(seed);
|
|
215
|
-
return { secretKey, publicKey: schnorrGetPublicKey(secretKey) };
|
|
216
|
-
}
|
|
217
|
-
return {
|
|
218
|
-
keygen,
|
|
219
|
-
getPublicKey: schnorrGetPublicKey,
|
|
220
|
-
sign: schnorrSign,
|
|
221
|
-
verify: schnorrVerify,
|
|
222
|
-
Point: Pointk1,
|
|
223
|
-
utils: {
|
|
224
|
-
randomSecretKey: randomSecretKey,
|
|
225
|
-
randomPrivateKey: randomSecretKey,
|
|
226
|
-
taggedHash,
|
|
227
|
-
// TODO: remove
|
|
228
|
-
lift_x,
|
|
229
|
-
pointToBytes,
|
|
230
|
-
numberToBytesBE,
|
|
231
|
-
bytesToNumberBE,
|
|
232
|
-
mod,
|
|
233
|
-
},
|
|
234
|
-
lengths: {
|
|
235
|
-
secretKey: size,
|
|
236
|
-
publicKey: size,
|
|
237
|
-
publicKeyHasPrefix: false,
|
|
238
|
-
signature: size * 2,
|
|
239
|
-
seed: seedLength,
|
|
240
|
-
},
|
|
241
|
-
};
|
|
242
|
-
})();
|
|
243
|
-
const isoMap = /* @__PURE__ */ (() => isogenyMap(Fpk1, [
|
|
244
|
-
// xNum
|
|
245
|
-
[
|
|
246
|
-
'0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',
|
|
247
|
-
'0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',
|
|
248
|
-
'0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',
|
|
249
|
-
'0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',
|
|
250
|
-
],
|
|
251
|
-
// xDen
|
|
252
|
-
[
|
|
253
|
-
'0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',
|
|
254
|
-
'0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',
|
|
255
|
-
'0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1
|
|
256
|
-
],
|
|
257
|
-
// yNum
|
|
258
|
-
[
|
|
259
|
-
'0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',
|
|
260
|
-
'0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',
|
|
261
|
-
'0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',
|
|
262
|
-
'0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',
|
|
263
|
-
],
|
|
264
|
-
// yDen
|
|
265
|
-
[
|
|
266
|
-
'0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',
|
|
267
|
-
'0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',
|
|
268
|
-
'0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',
|
|
269
|
-
'0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1
|
|
270
|
-
],
|
|
271
|
-
].map((i) => i.map((j) => BigInt(j)))))();
|
|
272
|
-
const mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fpk1, {
|
|
273
|
-
A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),
|
|
274
|
-
B: BigInt('1771'),
|
|
275
|
-
Z: Fpk1.create(BigInt('-11')),
|
|
276
|
-
}))();
|
|
277
|
-
/** Hashing / encoding to secp256k1 points / field. RFC 9380 methods. */
|
|
278
|
-
export const secp256k1_hasher = /* @__PURE__ */ (() => createHasher(secp256k1.Point, (scalars) => {
|
|
279
|
-
const { x, y } = mapSWU(Fpk1.create(scalars[0]));
|
|
280
|
-
return isoMap(x, y);
|
|
281
|
-
}, {
|
|
282
|
-
DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',
|
|
283
|
-
encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',
|
|
284
|
-
p: Fpk1.ORDER,
|
|
285
|
-
m: 1,
|
|
286
|
-
k: 128,
|
|
287
|
-
expand: 'xmd',
|
|
288
|
-
hash: sha256,
|
|
289
|
-
}))();
|
|
290
|
-
/** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */
|
|
291
|
-
export const hashToCurve = /* @__PURE__ */ (() => secp256k1_hasher.hashToCurve)();
|
|
292
|
-
/** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */
|
|
293
|
-
export const encodeToCurve = /* @__PURE__ */ (() => secp256k1_hasher.encodeToCurve)();
|
|
294
|
-
//# sourceMappingURL=secp256k1.js.map
|
package/esm/secp256k1.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["../src/secp256k1.ts"],"names":[],"mappings":"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"}
|
package/esm/utils.d.ts
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
export { abytes, anumber, bytesToHex, bytesToUtf8, concatBytes, hexToBytes, isBytes, randomBytes, utf8ToBytes, } from '@noble/hashes/utils.js';
|
|
2
|
-
export type Hex = Uint8Array | string;
|
|
3
|
-
export type PrivKey = Hex | bigint;
|
|
4
|
-
export type CHash = {
|
|
5
|
-
(message: Uint8Array | string): Uint8Array;
|
|
6
|
-
blockLen: number;
|
|
7
|
-
outputLen: number;
|
|
8
|
-
create(opts?: {
|
|
9
|
-
dkLen?: number;
|
|
10
|
-
}): any;
|
|
11
|
-
};
|
|
12
|
-
export type FHash = (message: Uint8Array | string) => Uint8Array;
|
|
13
|
-
export declare function abool(title: string, value: boolean): void;
|
|
14
|
-
export declare function _abool2(value: boolean, title?: string): boolean;
|
|
15
|
-
/** Asserts something is Uint8Array. */
|
|
16
|
-
export declare function _abytes2(value: Uint8Array, length?: number, title?: string): Uint8Array;
|
|
17
|
-
export declare function numberToHexUnpadded(num: number | bigint): string;
|
|
18
|
-
export declare function hexToNumber(hex: string): bigint;
|
|
19
|
-
export declare function bytesToNumberBE(bytes: Uint8Array): bigint;
|
|
20
|
-
export declare function bytesToNumberLE(bytes: Uint8Array): bigint;
|
|
21
|
-
export declare function numberToBytesBE(n: number | bigint, len: number): Uint8Array;
|
|
22
|
-
export declare function numberToBytesLE(n: number | bigint, len: number): Uint8Array;
|
|
23
|
-
export declare function numberToVarBytesBE(n: number | bigint): Uint8Array;
|
|
24
|
-
/**
|
|
25
|
-
* Takes hex string or Uint8Array, converts to Uint8Array.
|
|
26
|
-
* Validates output length.
|
|
27
|
-
* Will throw error for other types.
|
|
28
|
-
* @param title descriptive title for an error e.g. 'secret key'
|
|
29
|
-
* @param hex hex string or Uint8Array
|
|
30
|
-
* @param expectedLength optional, will compare to result array's length
|
|
31
|
-
* @returns
|
|
32
|
-
*/
|
|
33
|
-
export declare function ensureBytes(title: string, hex: Hex, expectedLength?: number): Uint8Array;
|
|
34
|
-
export declare function equalBytes(a: Uint8Array, b: Uint8Array): boolean;
|
|
35
|
-
/**
|
|
36
|
-
* Copies Uint8Array. We can't use u8a.slice(), because u8a can be Buffer,
|
|
37
|
-
* and Buffer#slice creates mutable copy. Never use Buffers!
|
|
38
|
-
*/
|
|
39
|
-
export declare function copyBytes(bytes: Uint8Array): Uint8Array;
|
|
40
|
-
/**
|
|
41
|
-
* Decodes 7-bit ASCII string to Uint8Array, throws on non-ascii symbols
|
|
42
|
-
* Should be safe to use for things expected to be ASCII.
|
|
43
|
-
* Returns exact same result as utf8ToBytes for ASCII or throws.
|
|
44
|
-
*/
|
|
45
|
-
export declare function asciiToBytes(ascii: string): Uint8Array;
|
|
46
|
-
export declare function inRange(n: bigint, min: bigint, max: bigint): boolean;
|
|
47
|
-
/**
|
|
48
|
-
* Asserts min <= n < max. NOTE: It's < max and not <= max.
|
|
49
|
-
* @example
|
|
50
|
-
* aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)
|
|
51
|
-
*/
|
|
52
|
-
export declare function aInRange(title: string, n: bigint, min: bigint, max: bigint): void;
|
|
53
|
-
/**
|
|
54
|
-
* Calculates amount of bits in a bigint.
|
|
55
|
-
* Same as `n.toString(2).length`
|
|
56
|
-
* TODO: merge with nLength in modular
|
|
57
|
-
*/
|
|
58
|
-
export declare function bitLen(n: bigint): number;
|
|
59
|
-
/**
|
|
60
|
-
* Gets single bit at position.
|
|
61
|
-
* NOTE: first bit position is 0 (same as arrays)
|
|
62
|
-
* Same as `!!+Array.from(n.toString(2)).reverse()[pos]`
|
|
63
|
-
*/
|
|
64
|
-
export declare function bitGet(n: bigint, pos: number): bigint;
|
|
65
|
-
/**
|
|
66
|
-
* Sets single bit at position.
|
|
67
|
-
*/
|
|
68
|
-
export declare function bitSet(n: bigint, pos: number, value: boolean): bigint;
|
|
69
|
-
/**
|
|
70
|
-
* Calculate mask for N bits. Not using ** operator with bigints because of old engines.
|
|
71
|
-
* Same as BigInt(`0b${Array(i).fill('1').join('')}`)
|
|
72
|
-
*/
|
|
73
|
-
export declare const bitMask: (n: number) => bigint;
|
|
74
|
-
type Pred<T> = (v: Uint8Array) => T | undefined;
|
|
75
|
-
/**
|
|
76
|
-
* Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.
|
|
77
|
-
* @returns function that will call DRBG until 2nd arg returns something meaningful
|
|
78
|
-
* @example
|
|
79
|
-
* const drbg = createHmacDRBG<Key>(32, 32, hmac);
|
|
80
|
-
* drbg(seed, bytesToKey); // bytesToKey must return Key or undefined
|
|
81
|
-
*/
|
|
82
|
-
export declare function createHmacDrbg<T>(hashLen: number, qByteLen: number, hmacFn: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array): (seed: Uint8Array, predicate: Pred<T>) => T;
|
|
83
|
-
declare const validatorFns: {
|
|
84
|
-
readonly bigint: (val: any) => boolean;
|
|
85
|
-
readonly function: (val: any) => boolean;
|
|
86
|
-
readonly boolean: (val: any) => boolean;
|
|
87
|
-
readonly string: (val: any) => boolean;
|
|
88
|
-
readonly stringOrUint8Array: (val: any) => boolean;
|
|
89
|
-
readonly isSafeInteger: (val: any) => boolean;
|
|
90
|
-
readonly array: (val: any) => boolean;
|
|
91
|
-
readonly field: (val: any, object: any) => any;
|
|
92
|
-
readonly hash: (val: any) => boolean;
|
|
93
|
-
};
|
|
94
|
-
type Validator = keyof typeof validatorFns;
|
|
95
|
-
type ValMap<T extends Record<string, any>> = {
|
|
96
|
-
[K in keyof T]?: Validator;
|
|
97
|
-
};
|
|
98
|
-
export declare function validateObject<T extends Record<string, any>>(object: T, validators: ValMap<T>, optValidators?: ValMap<T>): T;
|
|
99
|
-
export declare function isHash(val: CHash): boolean;
|
|
100
|
-
export declare function _validateObject(object: Record<string, any>, fields: Record<string, string>, optFields?: Record<string, string>): void;
|
|
101
|
-
/**
|
|
102
|
-
* throws not implemented error
|
|
103
|
-
*/
|
|
104
|
-
export declare const notImplemented: () => never;
|
|
105
|
-
/**
|
|
106
|
-
* Memoizes (caches) computation result.
|
|
107
|
-
* Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.
|
|
108
|
-
*/
|
|
109
|
-
export declare function memoized<T extends object, R, O extends any[]>(fn: (arg: T, ...args: O) => R): (arg: T, ...args: O) => R;
|
|
110
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/esm/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|