@noble/curves 0.9.1 → 1.0.0
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 +197 -99
- package/abstract/bls.d.ts +43 -31
- package/abstract/bls.d.ts.map +1 -1
- package/abstract/bls.js +37 -28
- package/abstract/bls.js.map +1 -1
- package/abstract/edwards.d.ts +2 -2
- package/abstract/edwards.d.ts.map +1 -1
- package/abstract/edwards.js +30 -18
- package/abstract/edwards.js.map +1 -1
- package/abstract/hash-to-curve.d.ts +1 -1
- package/abstract/hash-to-curve.d.ts.map +1 -1
- package/abstract/hash-to-curve.js +3 -2
- package/abstract/hash-to-curve.js.map +1 -1
- package/abstract/utils.d.ts.map +1 -1
- package/abstract/utils.js +2 -2
- package/abstract/utils.js.map +1 -1
- package/abstract/weierstrass.d.ts +21 -0
- package/abstract/weierstrass.d.ts.map +1 -1
- package/abstract/weierstrass.js +27 -14
- package/abstract/weierstrass.js.map +1 -1
- package/bls12-381.d.ts.map +1 -1
- package/bls12-381.js +57 -61
- package/bls12-381.js.map +1 -1
- package/{bn.d.ts → bn254.d.ts} +1 -1
- package/bn254.d.ts.map +1 -0
- package/{bn.js → bn254.js} +1 -1
- package/bn254.js.map +1 -0
- package/ed25519.d.ts +9 -0
- package/ed25519.d.ts.map +1 -1
- package/ed25519.js +22 -8
- package/ed25519.js.map +1 -1
- package/ed448.d.ts +9 -0
- package/ed448.d.ts.map +1 -1
- package/ed448.js +16 -16
- package/ed448.js.map +1 -1
- package/esm/abstract/bls.js +37 -28
- package/esm/abstract/bls.js.map +1 -1
- package/esm/abstract/edwards.js +30 -18
- package/esm/abstract/edwards.js.map +1 -1
- package/esm/abstract/hash-to-curve.js +3 -2
- package/esm/abstract/hash-to-curve.js.map +1 -1
- package/esm/abstract/utils.js +2 -2
- package/esm/abstract/utils.js.map +1 -1
- package/esm/abstract/weierstrass.js +19 -6
- package/esm/abstract/weierstrass.js.map +1 -1
- package/esm/bls12-381.js +58 -62
- package/esm/bls12-381.js.map +1 -1
- package/esm/{bn.js → bn254.js} +1 -1
- package/esm/bn254.js.map +1 -0
- package/esm/ed25519.js +20 -7
- package/esm/ed25519.js.map +1 -1
- package/esm/ed448.js +14 -15
- package/esm/ed448.js.map +1 -1
- package/esm/p256.js +5 -6
- package/esm/p256.js.map +1 -1
- package/esm/p384.js +10 -12
- package/esm/p384.js.map +1 -1
- package/esm/p521.js +22 -18
- package/esm/p521.js.map +1 -1
- package/p256.d.ts +1 -1
- package/p256.d.ts.map +1 -1
- package/p256.js +6 -7
- package/p256.js.map +1 -1
- package/p384.d.ts +1 -1
- package/p384.d.ts.map +1 -1
- package/p384.js +11 -13
- package/p384.js.map +1 -1
- package/p521.d.ts +1 -1
- package/p521.d.ts.map +1 -1
- package/p521.js +23 -19
- package/p521.js.map +1 -1
- package/package.json +5 -8
- package/src/abstract/bls.ts +83 -61
- package/src/abstract/edwards.ts +38 -16
- package/src/abstract/hash-to-curve.ts +4 -3
- package/src/abstract/utils.ts +2 -2
- package/src/abstract/weierstrass.ts +18 -7
- package/src/bls12-381.ts +63 -67
- package/src/ed25519.ts +22 -8
- package/src/ed448.ts +15 -15
- package/src/p256.ts +15 -19
- package/src/p384.ts +17 -21
- package/src/p521.ts +34 -22
- package/bn.d.ts.map +0 -1
- package/bn.js.map +0 -1
- package/esm/bn.js.map +0 -1
- /package/src/{bn.ts → bn254.ts} +0 -0
package/src/p256.ts
CHANGED
|
@@ -5,10 +5,9 @@ import { Field } from './abstract/modular.js';
|
|
|
5
5
|
import { mapToCurveSimpleSWU } from './abstract/weierstrass.js';
|
|
6
6
|
import * as htf from './abstract/hash-to-curve.js';
|
|
7
7
|
|
|
8
|
-
// NIST secp256r1 aka
|
|
8
|
+
// NIST secp256r1 aka p256
|
|
9
9
|
// https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/nist/P-256
|
|
10
10
|
|
|
11
|
-
// Field over which we'll do calculations; 2n**224n * (2n**32n-1n) + 2n**192n + 2n**96n-1n
|
|
12
11
|
const Fp = Field(BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'));
|
|
13
12
|
const CURVE_A = Fp.create(BigInt('-3'));
|
|
14
13
|
const CURVE_B = BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b');
|
|
@@ -19,23 +18,20 @@ const mapSWU = mapToCurveSimpleSWU(Fp, {
|
|
|
19
18
|
Z: Fp.create(BigInt('-10')),
|
|
20
19
|
});
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
sha256
|
|
37
|
-
);
|
|
38
|
-
export const secp256r1 = P256;
|
|
21
|
+
// prettier-ignore
|
|
22
|
+
export const p256 = createCurve({
|
|
23
|
+
a: CURVE_A, // Equation params: a, b
|
|
24
|
+
b: CURVE_B,
|
|
25
|
+
Fp, // Field: 2n**224n * (2n**32n-1n) + 2n**192n + 2n**96n-1n
|
|
26
|
+
// Curve order, total count of valid points in the field
|
|
27
|
+
n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),
|
|
28
|
+
// Base (generator) point (x, y)
|
|
29
|
+
Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),
|
|
30
|
+
Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),
|
|
31
|
+
h: BigInt(1),
|
|
32
|
+
lowS: false,
|
|
33
|
+
} as const, sha256);
|
|
34
|
+
export const secp256r1 = p256;
|
|
39
35
|
|
|
40
36
|
const { hashToCurve, encodeToCurve } = htf.createHasher(
|
|
41
37
|
secp256r1.ProjectivePoint,
|
package/src/p384.ts
CHANGED
|
@@ -5,10 +5,10 @@ import { Field } from './abstract/modular.js';
|
|
|
5
5
|
import { mapToCurveSimpleSWU } from './abstract/weierstrass.js';
|
|
6
6
|
import * as htf from './abstract/hash-to-curve.js';
|
|
7
7
|
|
|
8
|
-
// NIST secp384r1 aka
|
|
8
|
+
// NIST secp384r1 aka p384
|
|
9
9
|
// https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/nist/P-384
|
|
10
10
|
|
|
11
|
-
// Field over which we'll do calculations.
|
|
11
|
+
// Field over which we'll do calculations.
|
|
12
12
|
// prettier-ignore
|
|
13
13
|
const P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff');
|
|
14
14
|
const Fp = Field(P);
|
|
@@ -16,31 +16,27 @@ const CURVE_A = Fp.create(BigInt('-3'));
|
|
|
16
16
|
// prettier-ignore
|
|
17
17
|
const CURVE_B = BigInt('0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef');
|
|
18
18
|
|
|
19
|
+
// prettier-ignore
|
|
20
|
+
export const p384 = createCurve({
|
|
21
|
+
a: CURVE_A, // Equation params: a, b
|
|
22
|
+
b: CURVE_B,
|
|
23
|
+
Fp, // Field: 2n**384n - 2n**128n - 2n**96n + 2n**32n - 1n
|
|
24
|
+
// Curve order, total count of valid points in the field.
|
|
25
|
+
n: BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973'),
|
|
26
|
+
// Base (generator) point (x, y)
|
|
27
|
+
Gx: BigInt('0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7'),
|
|
28
|
+
Gy: BigInt('0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f'),
|
|
29
|
+
h: BigInt(1),
|
|
30
|
+
lowS: false,
|
|
31
|
+
} as const, sha384);
|
|
32
|
+
export const secp384r1 = p384;
|
|
33
|
+
|
|
19
34
|
const mapSWU = mapToCurveSimpleSWU(Fp, {
|
|
20
35
|
A: CURVE_A,
|
|
21
36
|
B: CURVE_B,
|
|
22
37
|
Z: Fp.create(BigInt('-12')),
|
|
23
38
|
});
|
|
24
39
|
|
|
25
|
-
// prettier-ignore
|
|
26
|
-
export const P384 = createCurve({
|
|
27
|
-
// Params: a, b
|
|
28
|
-
a: CURVE_A,
|
|
29
|
-
b: CURVE_B,
|
|
30
|
-
// Field over which we'll do calculations. 2n**384n - 2n**128n - 2n**96n + 2n**32n - 1n
|
|
31
|
-
Fp,
|
|
32
|
-
// Curve order, total count of valid points in the field.
|
|
33
|
-
n: BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973'),
|
|
34
|
-
// Base point (x, y) aka generator point
|
|
35
|
-
Gx: BigInt('0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7'),
|
|
36
|
-
Gy: BigInt('0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f'),
|
|
37
|
-
h: BigInt(1),
|
|
38
|
-
lowS: false,
|
|
39
|
-
} as const,
|
|
40
|
-
sha384
|
|
41
|
-
);
|
|
42
|
-
export const secp384r1 = P384;
|
|
43
|
-
|
|
44
40
|
const { hashToCurve, encodeToCurve } = htf.createHasher(
|
|
45
41
|
secp384r1.ProjectivePoint,
|
|
46
42
|
(scalars: bigint[]) => mapSWU(scalars[0]),
|
package/src/p521.ts
CHANGED
|
@@ -5,41 +5,53 @@ import { Field } from './abstract/modular.js';
|
|
|
5
5
|
import { mapToCurveSimpleSWU } from './abstract/weierstrass.js';
|
|
6
6
|
import * as htf from './abstract/hash-to-curve.js';
|
|
7
7
|
|
|
8
|
-
// NIST secp521r1 aka
|
|
8
|
+
// NIST secp521r1 aka p521
|
|
9
9
|
// Note that it's 521, which differs from 512 of its hash function.
|
|
10
10
|
// https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/nist/P-521
|
|
11
11
|
|
|
12
|
-
// Field over which we'll do calculations
|
|
12
|
+
// Field over which we'll do calculations.
|
|
13
13
|
// prettier-ignore
|
|
14
14
|
const P = BigInt('0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');
|
|
15
15
|
const Fp = Field(P);
|
|
16
16
|
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
const CURVE = {
|
|
18
|
+
a: Fp.create(BigInt('-3')),
|
|
19
|
+
b: BigInt(
|
|
20
|
+
'0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00'
|
|
21
|
+
),
|
|
22
|
+
Fp,
|
|
23
|
+
n: BigInt(
|
|
24
|
+
'0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409'
|
|
25
|
+
),
|
|
26
|
+
Gx: BigInt(
|
|
27
|
+
'0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66'
|
|
28
|
+
),
|
|
29
|
+
Gy: BigInt(
|
|
30
|
+
'0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650'
|
|
31
|
+
),
|
|
32
|
+
h: BigInt(1),
|
|
33
|
+
};
|
|
26
34
|
|
|
27
35
|
// prettier-ignore
|
|
28
|
-
export const
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Fp,
|
|
36
|
+
export const p521 = createCurve({
|
|
37
|
+
a: CURVE.a, // Equation params: a, b
|
|
38
|
+
b: CURVE.b,
|
|
39
|
+
Fp, // Field: 2n**521n - 1n
|
|
33
40
|
// Curve order, total count of valid points in the field
|
|
34
|
-
n:
|
|
35
|
-
// Base point (x, y) aka generator point
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
h: BigInt(1),
|
|
41
|
+
n: CURVE.n,
|
|
42
|
+
Gx: CURVE.Gx, // Base point (x, y) aka generator point
|
|
43
|
+
Gy: CURVE.Gy,
|
|
44
|
+
h: CURVE.h,
|
|
39
45
|
lowS: false,
|
|
40
46
|
allowedPrivateKeyLengths: [130, 131, 132] // P521 keys are variable-length. Normalize to 132b
|
|
41
47
|
} as const, sha512);
|
|
42
|
-
export const secp521r1 =
|
|
48
|
+
export const secp521r1 = p521;
|
|
49
|
+
|
|
50
|
+
const mapSWU = mapToCurveSimpleSWU(Fp, {
|
|
51
|
+
A: CURVE.a,
|
|
52
|
+
B: CURVE.b,
|
|
53
|
+
Z: Fp.create(BigInt('-4')),
|
|
54
|
+
});
|
|
43
55
|
|
|
44
56
|
const { hashToCurve, encodeToCurve } = htf.createHasher(
|
|
45
57
|
secp521r1.ProjectivePoint,
|
package/bn.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bn.d.ts","sourceRoot":"","sources":["src/bn.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,eAAO,MAAM,KAAK,6CAShB,CAAC"}
|
package/bn.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bn.js","sourceRoot":"","sources":["src/bn.ts"],"names":[],"mappings":";;;AAAA,sEAAsE;AACtE,iDAA8C;AAC9C,8DAAwD;AACxD,yDAA6C;AAC7C,sDAA8C;AAC9C;;;;;GAKG;AACU,QAAA,KAAK,GAAG,IAAA,4BAAW,EAAC;IAC/B,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,EAAE,EAAE,IAAA,kBAAK,EAAC,MAAM,CAAC,oEAAoE,CAAC,CAAC;IACvF,CAAC,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAC/E,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACb,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACb,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,GAAG,IAAA,0BAAO,EAAC,eAAM,CAAC;CACnB,CAAC,CAAC"}
|
package/esm/bn.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bn.js","sourceRoot":"","sources":["../src/bn.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC;IAC/B,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,oEAAoE,CAAC,CAAC;IACvF,CAAC,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAC/E,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACb,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACb,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,GAAG,OAAO,CAAC,MAAM,CAAC;CACnB,CAAC,CAAC"}
|
/package/src/{bn.ts → bn254.ts}
RENAMED
|
File without changes
|