@noble/curves 1.8.1 → 1.9.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.
Files changed (201) hide show
  1. package/README.md +305 -433
  2. package/_shortw_utils.d.ts +2 -2
  3. package/_shortw_utils.js +2 -2
  4. package/abstract/bls.d.ts +5 -5
  5. package/abstract/bls.d.ts.map +1 -1
  6. package/abstract/bls.js +15 -16
  7. package/abstract/bls.js.map +1 -1
  8. package/abstract/curve.d.ts +11 -3
  9. package/abstract/curve.d.ts.map +1 -1
  10. package/abstract/curve.js +81 -78
  11. package/abstract/curve.js.map +1 -1
  12. package/abstract/edwards.d.ts +2 -2
  13. package/abstract/edwards.d.ts.map +1 -1
  14. package/abstract/edwards.js +58 -71
  15. package/abstract/edwards.js.map +1 -1
  16. package/abstract/hash-to-curve.d.ts +15 -9
  17. package/abstract/hash-to-curve.d.ts.map +1 -1
  18. package/abstract/hash-to-curve.js +49 -39
  19. package/abstract/hash-to-curve.js.map +1 -1
  20. package/abstract/modular.d.ts +11 -8
  21. package/abstract/modular.d.ts.map +1 -1
  22. package/abstract/modular.js +79 -67
  23. package/abstract/modular.js.map +1 -1
  24. package/abstract/montgomery.d.ts.map +1 -1
  25. package/abstract/montgomery.js +13 -12
  26. package/abstract/montgomery.js.map +1 -1
  27. package/abstract/poseidon.d.ts +40 -3
  28. package/abstract/poseidon.d.ts.map +1 -1
  29. package/abstract/poseidon.js +186 -7
  30. package/abstract/poseidon.js.map +1 -1
  31. package/abstract/tower.d.ts +2 -2
  32. package/abstract/tower.d.ts.map +1 -1
  33. package/abstract/tower.js +16 -17
  34. package/abstract/tower.js.map +1 -1
  35. package/abstract/utils.d.ts +5 -2
  36. package/abstract/utils.d.ts.map +1 -1
  37. package/abstract/utils.js +27 -14
  38. package/abstract/utils.js.map +1 -1
  39. package/abstract/weierstrass.d.ts +21 -9
  40. package/abstract/weierstrass.d.ts.map +1 -1
  41. package/abstract/weierstrass.js +103 -86
  42. package/abstract/weierstrass.js.map +1 -1
  43. package/bls12-381.d.ts +1 -1
  44. package/bls12-381.js +41 -41
  45. package/bls12-381.js.map +1 -1
  46. package/bn254.d.ts +3 -2
  47. package/bn254.d.ts.map +1 -1
  48. package/bn254.js +39 -29
  49. package/bn254.js.map +1 -1
  50. package/ed25519.d.ts +9 -6
  51. package/ed25519.d.ts.map +1 -1
  52. package/ed25519.js +70 -71
  53. package/ed25519.js.map +1 -1
  54. package/ed448.d.ts +7 -6
  55. package/ed448.d.ts.map +1 -1
  56. package/ed448.js +54 -56
  57. package/ed448.js.map +1 -1
  58. package/esm/_shortw_utils.d.ts +2 -2
  59. package/esm/_shortw_utils.js +1 -1
  60. package/esm/abstract/bls.d.ts +5 -5
  61. package/esm/abstract/bls.d.ts.map +1 -1
  62. package/esm/abstract/bls.js +6 -7
  63. package/esm/abstract/bls.js.map +1 -1
  64. package/esm/abstract/curve.d.ts +11 -3
  65. package/esm/abstract/curve.d.ts.map +1 -1
  66. package/esm/abstract/curve.js +77 -74
  67. package/esm/abstract/curve.js.map +1 -1
  68. package/esm/abstract/edwards.d.ts +2 -2
  69. package/esm/abstract/edwards.d.ts.map +1 -1
  70. package/esm/abstract/edwards.js +39 -52
  71. package/esm/abstract/edwards.js.map +1 -1
  72. package/esm/abstract/hash-to-curve.d.ts +15 -9
  73. package/esm/abstract/hash-to-curve.d.ts.map +1 -1
  74. package/esm/abstract/hash-to-curve.js +33 -23
  75. package/esm/abstract/hash-to-curve.js.map +1 -1
  76. package/esm/abstract/modular.d.ts +11 -8
  77. package/esm/abstract/modular.d.ts.map +1 -1
  78. package/esm/abstract/modular.js +71 -59
  79. package/esm/abstract/modular.js.map +1 -1
  80. package/esm/abstract/montgomery.d.ts.map +1 -1
  81. package/esm/abstract/montgomery.js +4 -3
  82. package/esm/abstract/montgomery.js.map +1 -1
  83. package/esm/abstract/poseidon.d.ts +40 -3
  84. package/esm/abstract/poseidon.d.ts.map +1 -1
  85. package/esm/abstract/poseidon.js +180 -5
  86. package/esm/abstract/poseidon.js.map +1 -1
  87. package/esm/abstract/tower.d.ts +2 -2
  88. package/esm/abstract/tower.d.ts.map +1 -1
  89. package/esm/abstract/tower.js +8 -9
  90. package/esm/abstract/tower.js.map +1 -1
  91. package/esm/abstract/utils.d.ts +5 -2
  92. package/esm/abstract/utils.d.ts.map +1 -1
  93. package/esm/abstract/utils.js +26 -13
  94. package/esm/abstract/utils.js.map +1 -1
  95. package/esm/abstract/weierstrass.d.ts +21 -9
  96. package/esm/abstract/weierstrass.d.ts.map +1 -1
  97. package/esm/abstract/weierstrass.js +76 -59
  98. package/esm/abstract/weierstrass.js.map +1 -1
  99. package/esm/bls12-381.d.ts +1 -1
  100. package/esm/bls12-381.js +9 -9
  101. package/esm/bls12-381.js.map +1 -1
  102. package/esm/bn254.d.ts +3 -2
  103. package/esm/bn254.d.ts.map +1 -1
  104. package/esm/bn254.js +17 -7
  105. package/esm/bn254.js.map +1 -1
  106. package/esm/ed25519.d.ts +9 -6
  107. package/esm/ed25519.d.ts.map +1 -1
  108. package/esm/ed25519.js +25 -26
  109. package/esm/ed25519.js.map +1 -1
  110. package/esm/ed448.d.ts +7 -6
  111. package/esm/ed448.d.ts.map +1 -1
  112. package/esm/ed448.js +17 -19
  113. package/esm/ed448.js.map +1 -1
  114. package/esm/jubjub.d.ts +7 -4
  115. package/esm/jubjub.d.ts.map +1 -1
  116. package/esm/jubjub.js +7 -60
  117. package/esm/jubjub.js.map +1 -1
  118. package/esm/misc.d.ts +21 -0
  119. package/esm/misc.d.ts.map +1 -0
  120. package/esm/misc.js +107 -0
  121. package/esm/misc.js.map +1 -0
  122. package/esm/nist.d.ts +29 -0
  123. package/esm/nist.d.ts.map +1 -0
  124. package/esm/nist.js +120 -0
  125. package/esm/nist.js.map +1 -0
  126. package/esm/p256.d.ts +9 -8
  127. package/esm/p256.d.ts.map +1 -1
  128. package/esm/p256.js +6 -43
  129. package/esm/p256.js.map +1 -1
  130. package/esm/p384.d.ts +10 -8
  131. package/esm/p384.d.ts.map +1 -1
  132. package/esm/p384.js +7 -47
  133. package/esm/p384.js.map +1 -1
  134. package/esm/p521.d.ts +6 -6
  135. package/esm/p521.d.ts.map +1 -1
  136. package/esm/p521.js +6 -55
  137. package/esm/p521.js.map +1 -1
  138. package/esm/pasta.d.ts +5 -7
  139. package/esm/pasta.d.ts.map +1 -1
  140. package/esm/pasta.js +5 -33
  141. package/esm/pasta.js.map +1 -1
  142. package/esm/secp256k1.d.ts +15 -10
  143. package/esm/secp256k1.d.ts.map +1 -1
  144. package/esm/secp256k1.js +21 -18
  145. package/esm/secp256k1.js.map +1 -1
  146. package/jubjub.d.ts +7 -4
  147. package/jubjub.d.ts.map +1 -1
  148. package/jubjub.js +8 -63
  149. package/jubjub.js.map +1 -1
  150. package/misc.d.ts +21 -0
  151. package/misc.d.ts.map +1 -0
  152. package/misc.js +112 -0
  153. package/misc.js.map +1 -0
  154. package/nist.d.ts +29 -0
  155. package/nist.d.ts.map +1 -0
  156. package/nist.js +123 -0
  157. package/nist.js.map +1 -0
  158. package/p256.d.ts +9 -8
  159. package/p256.d.ts.map +1 -1
  160. package/p256.js +5 -48
  161. package/p256.js.map +1 -1
  162. package/p384.d.ts +10 -8
  163. package/p384.d.ts.map +1 -1
  164. package/p384.js +6 -52
  165. package/p384.js.map +1 -1
  166. package/p521.d.ts +6 -6
  167. package/p521.d.ts.map +1 -1
  168. package/p521.js +5 -60
  169. package/p521.js.map +1 -1
  170. package/package.json +116 -12
  171. package/pasta.d.ts +5 -7
  172. package/pasta.d.ts.map +1 -1
  173. package/pasta.js +6 -34
  174. package/pasta.js.map +1 -1
  175. package/secp256k1.d.ts +15 -10
  176. package/secp256k1.d.ts.map +1 -1
  177. package/secp256k1.js +60 -57
  178. package/secp256k1.js.map +1 -1
  179. package/src/_shortw_utils.ts +2 -2
  180. package/src/abstract/bls.ts +10 -10
  181. package/src/abstract/curve.ts +89 -80
  182. package/src/abstract/edwards.ts +56 -63
  183. package/src/abstract/hash-to-curve.ts +49 -39
  184. package/src/abstract/modular.ts +68 -59
  185. package/src/abstract/montgomery.ts +4 -3
  186. package/src/abstract/poseidon.ts +208 -13
  187. package/src/abstract/tower.ts +9 -10
  188. package/src/abstract/utils.ts +28 -15
  189. package/src/abstract/weierstrass.ts +105 -87
  190. package/src/bls12-381.ts +10 -10
  191. package/src/bn254.ts +18 -8
  192. package/src/ed25519.ts +31 -28
  193. package/src/ed448.ts +24 -21
  194. package/src/jubjub.ts +8 -63
  195. package/src/misc.ts +123 -0
  196. package/src/nist.ts +154 -0
  197. package/src/p256.ts +6 -49
  198. package/src/p384.ts +8 -53
  199. package/src/p521.ts +6 -70
  200. package/src/pasta.ts +5 -39
  201. package/src/secp256k1.ts +25 -20
package/nist.js ADDED
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.p521_hasher = exports.secp521r1 = exports.p521 = exports.p384_hasher = exports.secp384r1 = exports.p384 = exports.p256_hasher = exports.secp256r1 = exports.p256 = void 0;
4
+ /**
5
+ * Internal module for NIST P256, P384, P521 curves.
6
+ * Do not use for now.
7
+ * @module
8
+ */
9
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
10
+ const sha2_1 = require("@noble/hashes/sha2");
11
+ const _shortw_utils_ts_1 = require("./_shortw_utils.js");
12
+ const hash_to_curve_ts_1 = require("./abstract/hash-to-curve.js");
13
+ const modular_ts_1 = require("./abstract/modular.js");
14
+ const weierstrass_ts_1 = require("./abstract/weierstrass.js");
15
+ const Fp256 = (0, modular_ts_1.Field)(BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'));
16
+ const p256_a = Fp256.create(BigInt('-3'));
17
+ const p256_b = BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b');
18
+ /**
19
+ * secp256r1 curve, ECDSA and ECDH methods.
20
+ * Field: `2n**224n * (2n**32n-1n) + 2n**192n + 2n**96n-1n`
21
+ */
22
+ // prettier-ignore
23
+ exports.p256 = (0, _shortw_utils_ts_1.createCurve)({
24
+ a: p256_a,
25
+ b: p256_b,
26
+ Fp: Fp256,
27
+ n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),
28
+ Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),
29
+ Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),
30
+ h: BigInt(1),
31
+ lowS: false
32
+ }, sha2_1.sha256);
33
+ /** Alias to p256. */
34
+ exports.secp256r1 = exports.p256;
35
+ const p256_mapSWU = /* @__PURE__ */ (() => (0, weierstrass_ts_1.mapToCurveSimpleSWU)(Fp256, {
36
+ A: p256_a,
37
+ B: p256_b,
38
+ Z: Fp256.create(BigInt('-10')),
39
+ }))();
40
+ /** Hashing / encoding to p256 points / field. RFC 9380 methods. */
41
+ exports.p256_hasher = (() => (0, hash_to_curve_ts_1.createHasher)(exports.secp256r1.ProjectivePoint, (scalars) => p256_mapSWU(scalars[0]), {
42
+ DST: 'P256_XMD:SHA-256_SSWU_RO_',
43
+ encodeDST: 'P256_XMD:SHA-256_SSWU_NU_',
44
+ p: Fp256.ORDER,
45
+ m: 1,
46
+ k: 128,
47
+ expand: 'xmd',
48
+ hash: sha2_1.sha256,
49
+ }))();
50
+ // Field over which we'll do calculations.
51
+ const Fp384 = (0, modular_ts_1.Field)(BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff'));
52
+ const p384_a = Fp384.create(BigInt('-3'));
53
+ // prettier-ignore
54
+ const p384_b = BigInt('0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef');
55
+ /**
56
+ * secp384r1 curve, ECDSA and ECDH methods.
57
+ * Field: `2n**384n - 2n**128n - 2n**96n + 2n**32n - 1n`.
58
+ * */
59
+ // prettier-ignore
60
+ exports.p384 = (0, _shortw_utils_ts_1.createCurve)({
61
+ a: p384_a,
62
+ b: p384_b,
63
+ Fp: Fp384,
64
+ n: BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973'),
65
+ Gx: BigInt('0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7'),
66
+ Gy: BigInt('0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f'),
67
+ h: BigInt(1),
68
+ lowS: false
69
+ }, sha2_1.sha384);
70
+ /** Alias to p384. */
71
+ exports.secp384r1 = exports.p384;
72
+ const p384_mapSWU = /* @__PURE__ */ (() => (0, weierstrass_ts_1.mapToCurveSimpleSWU)(Fp384, {
73
+ A: p384_a,
74
+ B: p384_b,
75
+ Z: Fp384.create(BigInt('-12')),
76
+ }))();
77
+ /** Hashing / encoding to p384 points / field. RFC 9380 methods. */
78
+ exports.p384_hasher = (() => (0, hash_to_curve_ts_1.createHasher)(exports.secp384r1.ProjectivePoint, (scalars) => p384_mapSWU(scalars[0]), {
79
+ DST: 'P384_XMD:SHA-384_SSWU_RO_',
80
+ encodeDST: 'P384_XMD:SHA-384_SSWU_NU_',
81
+ p: Fp384.ORDER,
82
+ m: 1,
83
+ k: 192,
84
+ expand: 'xmd',
85
+ hash: sha2_1.sha384,
86
+ }))();
87
+ // Field over which we'll do calculations.
88
+ const Fp521 = (0, modular_ts_1.Field)(BigInt('0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'));
89
+ const p521_a = Fp521.create(BigInt('-3'));
90
+ const p521_b = BigInt('0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00');
91
+ /**
92
+ * NIST secp521r1 aka p521 curve, ECDSA and ECDH methods.
93
+ * Field: `2n**521n - 1n`.
94
+ */
95
+ // prettier-ignore
96
+ exports.p521 = (0, _shortw_utils_ts_1.createCurve)({
97
+ a: p521_a,
98
+ b: p521_b,
99
+ Fp: Fp521,
100
+ n: BigInt('0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409'),
101
+ Gx: BigInt('0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66'),
102
+ Gy: BigInt('0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650'),
103
+ h: BigInt(1),
104
+ lowS: false,
105
+ allowedPrivateKeyLengths: [130, 131, 132] // P521 keys are variable-length. Normalize to 132b
106
+ }, sha2_1.sha512);
107
+ exports.secp521r1 = exports.p521;
108
+ const p521_mapSWU = /* @__PURE__ */ (() => (0, weierstrass_ts_1.mapToCurveSimpleSWU)(Fp521, {
109
+ A: p521_a,
110
+ B: p521_b,
111
+ Z: Fp521.create(BigInt('-4')),
112
+ }))();
113
+ /** Hashing / encoding to p521 points / field. RFC 9380 methods. */
114
+ exports.p521_hasher = (() => (0, hash_to_curve_ts_1.createHasher)(exports.secp521r1.ProjectivePoint, (scalars) => p521_mapSWU(scalars[0]), {
115
+ DST: 'P521_XMD:SHA-512_SSWU_RO_',
116
+ encodeDST: 'P521_XMD:SHA-512_SSWU_NU_',
117
+ p: Fp521.ORDER,
118
+ m: 1,
119
+ k: 256,
120
+ expand: 'xmd',
121
+ hash: sha2_1.sha512,
122
+ }))();
123
+ //# sourceMappingURL=nist.js.map
package/nist.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nist.js","sourceRoot":"","sources":["src/nist.ts"],"names":[],"mappings":"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"}
package/p256.d.ts CHANGED
@@ -1,11 +1,12 @@
1
- import { type CurveFnWithCreate } from './_shortw_utils.js';
2
- import { type HTFMethod } from './abstract/hash-to-curve.js';
3
- /** secp256r1 curve, ECDSA and ECDH methods. */
4
- export declare const p256: CurveFnWithCreate;
5
- /** Alias to p256. */
6
- export declare const secp256r1: CurveFnWithCreate;
7
- /** secp256r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
1
+ /**
2
+ * NIST secp256r1 aka p256.
3
+ * @module
4
+ */
5
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
6
+ import { type HTFMethod } from './abstract/hash-to-curve.ts';
7
+ import { p256 as p256n } from './nist.ts';
8
+ export declare const p256: typeof p256n;
9
+ export declare const secp256r1: typeof p256n;
8
10
  export declare const hashToCurve: HTFMethod<bigint>;
9
- /** secp256r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
10
11
  export declare const encodeToCurve: HTFMethod<bigint>;
11
12
  //# sourceMappingURL=p256.d.ts.map
package/p256.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"p256.d.ts","sourceRoot":"","sources":["src/p256.ts"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAQ3E,+CAA+C;AAE/C,eAAO,MAAM,IAAI,EAAE,iBAWA,CAAC;AACpB,qBAAqB;AACrB,eAAO,MAAM,SAAS,EAAE,iBAAwB,CAAC;AAmBjD,uFAAuF;AACvF,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,CAA6C,CAAC;AACxF,yFAAyF;AACzF,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAA+C,CAAC"}
1
+ {"version":3,"file":"p256.d.ts","sourceRoot":"","sources":["src/p256.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,sEAAsE;AACtE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAe,IAAI,IAAI,KAAK,EAAE,MAAM,WAAW,CAAC;AACvD,eAAO,MAAM,IAAI,EAAE,OAAO,KAAa,CAAC;AACxC,eAAO,MAAM,SAAS,EAAE,OAAO,KAAa,CAAC;AAC7C,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,CAAqD,CAAC;AAChG,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAAuD,CAAC"}
package/p256.js CHANGED
@@ -1,52 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.encodeToCurve = exports.hashToCurve = exports.secp256r1 = exports.p256 = void 0;
4
- /**
5
- * NIST secp256r1 aka p256.
6
- * https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/nist/P-256
7
- * @module
8
- */
9
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
10
- const sha256_1 = require("@noble/hashes/sha256");
11
- const _shortw_utils_js_1 = require("./_shortw_utils.js");
12
- const hash_to_curve_js_1 = require("./abstract/hash-to-curve.js");
13
- const modular_js_1 = require("./abstract/modular.js");
14
- const weierstrass_js_1 = require("./abstract/weierstrass.js");
15
- const Fp256 = (0, modular_js_1.Field)(BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'));
16
- const CURVE_A = Fp256.create(BigInt('-3'));
17
- const CURVE_B = BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b');
18
- /** secp256r1 curve, ECDSA and ECDH methods. */
19
- // prettier-ignore
20
- exports.p256 = (0, _shortw_utils_js_1.createCurve)({
21
- a: CURVE_A, // Equation params: a, b
22
- b: CURVE_B,
23
- Fp: Fp256, // Field: 2n**224n * (2n**32n-1n) + 2n**192n + 2n**96n-1n
24
- // Curve order, total count of valid points in the field
25
- n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),
26
- // Base (generator) point (x, y)
27
- Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),
28
- Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),
29
- h: BigInt(1),
30
- lowS: false,
31
- }, sha256_1.sha256);
32
- /** Alias to p256. */
33
- exports.secp256r1 = exports.p256;
34
- const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_js_1.mapToCurveSimpleSWU)(Fp256, {
35
- A: CURVE_A,
36
- B: CURVE_B,
37
- Z: Fp256.create(BigInt('-10')),
38
- }))();
39
- const htf = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.createHasher)(exports.secp256r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
40
- DST: 'P256_XMD:SHA-256_SSWU_RO_',
41
- encodeDST: 'P256_XMD:SHA-256_SSWU_NU_',
42
- p: Fp256.ORDER,
43
- m: 1,
44
- k: 128,
45
- expand: 'xmd',
46
- hash: sha256_1.sha256,
47
- }))();
48
- /** secp256r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
49
- exports.hashToCurve = (() => htf.hashToCurve)();
50
- /** secp256r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
51
- exports.encodeToCurve = (() => htf.encodeToCurve)();
4
+ const nist_ts_1 = require("./nist.js");
5
+ exports.p256 = nist_ts_1.p256;
6
+ exports.secp256r1 = nist_ts_1.p256;
7
+ exports.hashToCurve = (() => nist_ts_1.p256_hasher.hashToCurve)();
8
+ exports.encodeToCurve = (() => nist_ts_1.p256_hasher.encodeToCurve)();
52
9
  //# sourceMappingURL=p256.js.map
package/p256.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"p256.js","sourceRoot":"","sources":["src/p256.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,sEAAsE;AACtE,iDAA8C;AAC9C,yDAAyE;AACzE,kEAA2E;AAC3E,sDAA8C;AAC9C,8DAAgE;AAEhE,MAAM,KAAK,GAAG,IAAA,kBAAK,EAAC,MAAM,CAAC,oEAAoE,CAAC,CAAC,CAAC;AAClG,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,oEAAoE,CAAC,CAAC;AAE7F,+CAA+C;AAC/C,kBAAkB;AACL,QAAA,IAAI,GAAsB,IAAA,8BAAW,EAAC;IACjD,CAAC,EAAE,OAAO,EAAE,wBAAwB;IACpC,CAAC,EAAE,OAAO;IACV,EAAE,EAAE,KAAK,EAAE,yDAAyD;IACpE,wDAAwD;IACxD,CAAC,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAC/E,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAChF,EAAE,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAChF,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,IAAI,EAAE,KAAK;CACH,EAAE,eAAM,CAAC,CAAC;AACpB,qBAAqB;AACR,QAAA,SAAS,GAAsB,YAAI,CAAC;AAEjD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CACnC,IAAA,oCAAmB,EAAC,KAAK,EAAE;IACzB,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAC/B,CAAC,CAAC,EAAE,CAAC;AAER,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CAChC,IAAA,+BAAY,EAAC,iBAAS,CAAC,eAAe,EAAE,CAAC,OAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;IACjF,GAAG,EAAE,2BAA2B;IAChC,SAAS,EAAE,2BAA2B;IACtC,CAAC,EAAE,KAAK,CAAC,KAAK;IACd,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,GAAG;IACN,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,eAAM;CACb,CAAC,CAAC,EAAE,CAAC;AACR,uFAAuF;AAC1E,QAAA,WAAW,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;AACxF,yFAAyF;AAC5E,QAAA,aAAa,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"p256.js","sourceRoot":"","sources":["src/p256.ts"],"names":[],"mappings":";;;AAMA,uCAAuD;AAC1C,QAAA,IAAI,GAAiB,cAAK,CAAC;AAC3B,QAAA,SAAS,GAAiB,cAAK,CAAC;AAChC,QAAA,WAAW,GAAsC,CAAC,GAAG,EAAE,CAAC,qBAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AACnF,QAAA,aAAa,GAAsC,CAAC,GAAG,EAAE,CAAC,qBAAW,CAAC,aAAa,CAAC,EAAE,CAAC"}
package/p384.d.ts CHANGED
@@ -1,11 +1,13 @@
1
- import { type CurveFnWithCreate } from './_shortw_utils.js';
2
- import { type HTFMethod } from './abstract/hash-to-curve.js';
3
- /** secp384r1 curve, ECDSA and ECDH methods. */
4
- export declare const p384: CurveFnWithCreate;
5
- /** Alias to p384. */
6
- export declare const secp384r1: CurveFnWithCreate;
7
- /** secp384r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
1
+ /**
2
+ * NIST secp384r1 aka p384.
3
+ * @module
4
+ */
5
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
6
+ import { type HTFMethod } from './abstract/hash-to-curve.ts';
7
+ import { p384 as p384n } from './nist.ts';
8
+ export declare const p384: typeof p384n;
9
+ export declare const secp384r1: typeof p384n;
8
10
  export declare const hashToCurve: HTFMethod<bigint>;
9
- /** secp384r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
10
11
  export declare const encodeToCurve: HTFMethod<bigint>;
12
+ /** @deprecated Use `import { p384_hasher } from "@noble/curves/nist"` module. */
11
13
  //# sourceMappingURL=p384.d.ts.map
package/p384.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"p384.d.ts","sourceRoot":"","sources":["src/p384.ts"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAY3E,+CAA+C;AAE/C,eAAO,MAAM,IAAI,EAAE,iBAWA,CAAC;AACpB,qBAAqB;AACrB,eAAO,MAAM,SAAS,EAAE,iBAAwB,CAAC;AAmBjD,uFAAuF;AACvF,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,CAA6C,CAAC;AACxF,yFAAyF;AACzF,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAA+C,CAAC"}
1
+ {"version":3,"file":"p384.d.ts","sourceRoot":"","sources":["src/p384.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,sEAAsE;AACtE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAe,IAAI,IAAI,KAAK,EAAE,MAAM,WAAW,CAAC;AACvD,eAAO,MAAM,IAAI,EAAE,OAAO,KAAa,CAAC;AACxC,eAAO,MAAM,SAAS,EAAE,OAAO,KAAa,CAAC;AAC7C,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,CAAqD,CAAC;AAChG,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAAuD,CAAC;AAEpG,iFAAiF"}
package/p384.js CHANGED
@@ -1,56 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.encodeToCurve = exports.hashToCurve = exports.secp384r1 = exports.p384 = void 0;
4
- /**
5
- * NIST secp384r1 aka p384.
6
- * https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/nist/P-384
7
- * @module
8
- */
9
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
10
- const sha512_1 = require("@noble/hashes/sha512");
11
- const _shortw_utils_js_1 = require("./_shortw_utils.js");
12
- const hash_to_curve_js_1 = require("./abstract/hash-to-curve.js");
13
- const modular_js_1 = require("./abstract/modular.js");
14
- const weierstrass_js_1 = require("./abstract/weierstrass.js");
15
- // Field over which we'll do calculations.
16
- // prettier-ignore
17
- const P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff');
18
- const Fp384 = (0, modular_js_1.Field)(P);
19
- const CURVE_A = Fp384.create(BigInt('-3'));
20
- // prettier-ignore
21
- const CURVE_B = BigInt('0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef');
22
- /** secp384r1 curve, ECDSA and ECDH methods. */
23
- // prettier-ignore
24
- exports.p384 = (0, _shortw_utils_js_1.createCurve)({
25
- a: CURVE_A, // Equation params: a, b
26
- b: CURVE_B,
27
- Fp: Fp384, // Field: 2n**384n - 2n**128n - 2n**96n + 2n**32n - 1n
28
- // Curve order, total count of valid points in the field.
29
- n: BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973'),
30
- // Base (generator) point (x, y)
31
- Gx: BigInt('0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7'),
32
- Gy: BigInt('0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f'),
33
- h: BigInt(1),
34
- lowS: false,
35
- }, sha512_1.sha384);
36
- /** Alias to p384. */
37
- exports.secp384r1 = exports.p384;
38
- const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_js_1.mapToCurveSimpleSWU)(Fp384, {
39
- A: CURVE_A,
40
- B: CURVE_B,
41
- Z: Fp384.create(BigInt('-12')),
42
- }))();
43
- const htf = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.createHasher)(exports.secp384r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
44
- DST: 'P384_XMD:SHA-384_SSWU_RO_',
45
- encodeDST: 'P384_XMD:SHA-384_SSWU_NU_',
46
- p: Fp384.ORDER,
47
- m: 1,
48
- k: 192,
49
- expand: 'xmd',
50
- hash: sha512_1.sha384,
51
- }))();
52
- /** secp384r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
53
- exports.hashToCurve = (() => htf.hashToCurve)();
54
- /** secp384r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
55
- exports.encodeToCurve = (() => htf.encodeToCurve)();
4
+ const nist_ts_1 = require("./nist.js");
5
+ exports.p384 = nist_ts_1.p384;
6
+ exports.secp384r1 = nist_ts_1.p384;
7
+ exports.hashToCurve = (() => nist_ts_1.p384_hasher.hashToCurve)();
8
+ exports.encodeToCurve = (() => nist_ts_1.p384_hasher.encodeToCurve)();
9
+ /** @deprecated Use `import { p384_hasher } from "@noble/curves/nist"` module. */
56
10
  //# sourceMappingURL=p384.js.map
package/p384.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"p384.js","sourceRoot":"","sources":["src/p384.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,sEAAsE;AACtE,iDAA8C;AAC9C,yDAAyE;AACzE,kEAA2E;AAC3E,sDAA8C;AAC9C,8DAAgE;AAEhE,0CAA0C;AAC1C,kBAAkB;AAClB,MAAM,CAAC,GAAG,MAAM,CAAC,oGAAoG,CAAC,CAAC;AACvH,MAAM,KAAK,GAAG,IAAA,kBAAK,EAAC,CAAC,CAAC,CAAC;AACvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,kBAAkB;AAClB,MAAM,OAAO,GAAG,MAAM,CAAC,oGAAoG,CAAC,CAAC;AAE7H,+CAA+C;AAC/C,kBAAkB;AACL,QAAA,IAAI,GAAsB,IAAA,8BAAW,EAAC;IACjD,CAAC,EAAE,OAAO,EAAE,wBAAwB;IACpC,CAAC,EAAE,OAAO;IACV,EAAE,EAAE,KAAK,EAAE,sDAAsD;IACjE,yDAAyD;IACzD,CAAC,EAAE,MAAM,CAAC,oGAAoG,CAAC;IAC/G,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC,oGAAoG,CAAC;IAChH,EAAE,EAAE,MAAM,CAAC,oGAAoG,CAAC;IAChH,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,IAAI,EAAE,KAAK;CACH,EAAE,eAAM,CAAC,CAAC;AACpB,qBAAqB;AACR,QAAA,SAAS,GAAsB,YAAI,CAAC;AAEjD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CACnC,IAAA,oCAAmB,EAAC,KAAK,EAAE;IACzB,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAC/B,CAAC,CAAC,EAAE,CAAC;AAER,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CAChC,IAAA,+BAAY,EAAC,iBAAS,CAAC,eAAe,EAAE,CAAC,OAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;IACjF,GAAG,EAAE,2BAA2B;IAChC,SAAS,EAAE,2BAA2B;IACtC,CAAC,EAAE,KAAK,CAAC,KAAK;IACd,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,GAAG;IACN,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,eAAM;CACb,CAAC,CAAC,EAAE,CAAC;AACR,uFAAuF;AAC1E,QAAA,WAAW,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;AACxF,yFAAyF;AAC5E,QAAA,aAAa,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"p384.js","sourceRoot":"","sources":["src/p384.ts"],"names":[],"mappings":";;;AAMA,uCAAuD;AAC1C,QAAA,IAAI,GAAiB,cAAK,CAAC;AAC3B,QAAA,SAAS,GAAiB,cAAK,CAAC;AAChC,QAAA,WAAW,GAAsC,CAAC,GAAG,EAAE,CAAC,qBAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AACnF,QAAA,aAAa,GAAsC,CAAC,GAAG,EAAE,CAAC,qBAAW,CAAC,aAAa,CAAC,EAAE,CAAC;AAEpG,iFAAiF"}
package/p521.d.ts CHANGED
@@ -1,12 +1,12 @@
1
- import { type CurveFnWithCreate } from './_shortw_utils.js';
2
- import { type HTFMethod } from './abstract/hash-to-curve.js';
3
1
  /**
4
2
  * NIST secp521r1 aka p521.
3
+ * @module
5
4
  */
6
- export declare const p521: CurveFnWithCreate;
7
- export declare const secp521r1: CurveFnWithCreate;
8
- /** secp521r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
5
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
6
+ import { type HTFMethod } from './abstract/hash-to-curve.ts';
7
+ import { p521 as p521n } from './nist.ts';
8
+ export declare const p521: typeof p521n;
9
+ export declare const secp521r1: typeof p521n;
9
10
  export declare const hashToCurve: HTFMethod<bigint>;
10
- /** secp521r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
11
11
  export declare const encodeToCurve: HTFMethod<bigint>;
12
12
  //# sourceMappingURL=p521.d.ts.map
package/p521.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"p521.d.ts","sourceRoot":"","sources":["src/p521.ts"],"names":[],"mappings":"AAQA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AA2B3E;;GAEG;AAEH,eAAO,MAAM,IAAI,EAAE,iBAWA,CAAC;AACpB,eAAO,MAAM,SAAS,EAAE,iBAAwB,CAAC;AAmBjD,uFAAuF;AACvF,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,CAA6C,CAAC;AACxF,yFAAyF;AACzF,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAA+C,CAAC"}
1
+ {"version":3,"file":"p521.d.ts","sourceRoot":"","sources":["src/p521.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,sEAAsE;AACtE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAe,IAAI,IAAI,KAAK,EAAE,MAAM,WAAW,CAAC;AACvD,eAAO,MAAM,IAAI,EAAE,OAAO,KAAa,CAAC;AACxC,eAAO,MAAM,SAAS,EAAE,OAAO,KAAa,CAAC;AAC7C,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,CAAqD,CAAC;AAChG,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAAuD,CAAC"}
package/p521.js CHANGED
@@ -1,64 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.encodeToCurve = exports.hashToCurve = exports.secp521r1 = exports.p521 = void 0;
4
- /**
5
- * NIST secp521r1 aka p521.
6
- * Note that it's 521, which differs from 512 of its hash function.
7
- * https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/nist/P-521
8
- * @module
9
- */
10
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
11
- const sha512_1 = require("@noble/hashes/sha512");
12
- const _shortw_utils_js_1 = require("./_shortw_utils.js");
13
- const hash_to_curve_js_1 = require("./abstract/hash-to-curve.js");
14
- const modular_js_1 = require("./abstract/modular.js");
15
- const weierstrass_js_1 = require("./abstract/weierstrass.js");
16
- // Field over which we'll do calculations.
17
- // prettier-ignore
18
- const P = BigInt('0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');
19
- const Fp521 = (0, modular_js_1.Field)(P);
20
- const CURVE = {
21
- a: Fp521.create(BigInt('-3')),
22
- b: BigInt('0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00'),
23
- Fp: Fp521,
24
- n: BigInt('0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409'),
25
- Gx: BigInt('0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66'),
26
- Gy: BigInt('0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650'),
27
- h: BigInt(1),
28
- };
29
- /**
30
- * NIST secp521r1 aka p521.
31
- */
32
- // prettier-ignore
33
- exports.p521 = (0, _shortw_utils_js_1.createCurve)({
34
- a: CURVE.a, // Equation params: a, b
35
- b: CURVE.b,
36
- Fp: Fp521, // Field: 2n**521n - 1n
37
- // Curve order, total count of valid points in the field
38
- n: CURVE.n,
39
- Gx: CURVE.Gx, // Base point (x, y) aka generator point
40
- Gy: CURVE.Gy,
41
- h: CURVE.h,
42
- lowS: false,
43
- allowedPrivateKeyLengths: [130, 131, 132] // P521 keys are variable-length. Normalize to 132b
44
- }, sha512_1.sha512);
45
- exports.secp521r1 = exports.p521;
46
- const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_js_1.mapToCurveSimpleSWU)(Fp521, {
47
- A: CURVE.a,
48
- B: CURVE.b,
49
- Z: Fp521.create(BigInt('-4')),
50
- }))();
51
- const htf = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.createHasher)(exports.secp521r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
52
- DST: 'P521_XMD:SHA-512_SSWU_RO_',
53
- encodeDST: 'P521_XMD:SHA-512_SSWU_NU_',
54
- p: Fp521.ORDER,
55
- m: 1,
56
- k: 256,
57
- expand: 'xmd',
58
- hash: sha512_1.sha512,
59
- }))();
60
- /** secp521r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
61
- exports.hashToCurve = (() => htf.hashToCurve)();
62
- /** secp521r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
63
- exports.encodeToCurve = (() => htf.encodeToCurve)();
4
+ const nist_ts_1 = require("./nist.js");
5
+ exports.p521 = nist_ts_1.p521;
6
+ exports.secp521r1 = nist_ts_1.p521;
7
+ exports.hashToCurve = (() => nist_ts_1.p521_hasher.hashToCurve)();
8
+ exports.encodeToCurve = (() => nist_ts_1.p521_hasher.encodeToCurve)();
64
9
  //# sourceMappingURL=p521.js.map
package/p521.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"p521.js","sourceRoot":"","sources":["src/p521.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,sEAAsE;AACtE,iDAA8C;AAC9C,yDAAyE;AACzE,kEAA2E;AAC3E,sDAA8C;AAC9C,8DAAgE;AAEhE,0CAA0C;AAC1C,kBAAkB;AAClB,MAAM,CAAC,GAAG,MAAM,CAAC,uIAAuI,CAAC,CAAC;AAC1J,MAAM,KAAK,GAAG,IAAA,kBAAK,EAAC,CAAC,CAAC,CAAC;AAEvB,MAAM,KAAK,GAAG;IACZ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,EAAE,MAAM,CACP,wIAAwI,CACzI;IACD,EAAE,EAAE,KAAK;IACT,CAAC,EAAE,MAAM,CACP,wIAAwI,CACzI;IACD,EAAE,EAAE,MAAM,CACR,wIAAwI,CACzI;IACD,EAAE,EAAE,MAAM,CACR,wIAAwI,CACzI;IACD,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CACb,CAAC;AAEF;;GAEG;AACH,kBAAkB;AACL,QAAA,IAAI,GAAsB,IAAA,8BAAW,EAAC;IACjD,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,wBAAwB;IACpC,CAAC,EAAE,KAAK,CAAC,CAAC;IACV,EAAE,EAAE,KAAK,EAAE,uBAAuB;IAClC,wDAAwD;IACxD,CAAC,EAAE,KAAK,CAAC,CAAC;IACV,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,wCAAwC;IACtD,EAAE,EAAE,KAAK,CAAC,EAAE;IACZ,CAAC,EAAE,KAAK,CAAC,CAAC;IACV,IAAI,EAAE,KAAK;IACX,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,mDAAmD;CACrF,EAAE,eAAM,CAAC,CAAC;AACP,QAAA,SAAS,GAAsB,YAAI,CAAC;AAEjD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CACnC,IAAA,oCAAmB,EAAC,KAAK,EAAE;IACzB,CAAC,EAAE,KAAK,CAAC,CAAC;IACV,CAAC,EAAE,KAAK,CAAC,CAAC;IACV,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC,CAAC,EAAE,CAAC;AAER,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CAChC,IAAA,+BAAY,EAAC,iBAAS,CAAC,eAAe,EAAE,CAAC,OAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;IACjF,GAAG,EAAE,2BAA2B;IAChC,SAAS,EAAE,2BAA2B;IACtC,CAAC,EAAE,KAAK,CAAC,KAAK;IACd,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,GAAG;IACN,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,eAAM;CACb,CAAC,CAAC,EAAE,CAAC;AACR,uFAAuF;AAC1E,QAAA,WAAW,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;AACxF,yFAAyF;AAC5E,QAAA,aAAa,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"p521.js","sourceRoot":"","sources":["src/p521.ts"],"names":[],"mappings":";;;AAMA,uCAAuD;AAC1C,QAAA,IAAI,GAAiB,cAAK,CAAC;AAC3B,QAAA,SAAS,GAAiB,cAAK,CAAC;AAChC,QAAA,WAAW,GAAsC,CAAC,GAAG,EAAE,CAAC,qBAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AACnF,QAAA,aAAa,GAAsC,CAAC,GAAG,EAAE,CAAC,qBAAW,CAAC,aAAa,CAAC,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noble/curves",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "Audited & minimal JS implementation of elliptic curve cryptography",
5
5
  "files": [
6
6
  "*.js",
@@ -12,7 +12,7 @@
12
12
  "abstract"
13
13
  ],
14
14
  "scripts": {
15
- "bench": "cd benchmark; node secp256k1.js; node curves.js; node ecdh.js; node hash-to-curve.js; node modular.js; node bls.js; node ristretto255.js; node decaf448.js",
15
+ "bench": "npm run bench:install; cd benchmark; node secp256k1.js; node curves.js; node utils.js; node bls.js",
16
16
  "bench:install": "cd benchmark; npm install; npm install .. --install-links",
17
17
  "build": "tsc && tsc -p tsconfig.cjs.json",
18
18
  "build:release": "npx jsbt esbuild test/build",
@@ -32,15 +32,15 @@
32
32
  },
33
33
  "license": "MIT",
34
34
  "dependencies": {
35
- "@noble/hashes": "1.7.1"
35
+ "@noble/hashes": "1.8.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@paulmillr/jsbt": "0.3.1",
38
+ "@paulmillr/jsbt": "0.3.3",
39
39
  "fast-check": "3.0.0",
40
- "micro-bmark": "0.4.0",
41
- "micro-should": "0.5.1",
42
- "prettier": "3.3.2",
43
- "typescript": "5.5.2"
40
+ "micro-bmark": "0.4.1",
41
+ "micro-should": "0.5.2",
42
+ "prettier": "3.5.3",
43
+ "typescript": "5.8.3"
44
44
  },
45
45
  "sideEffects": false,
46
46
  "main": "index.js",
@@ -101,14 +101,14 @@
101
101
  "import": "./esm/bn254.js",
102
102
  "require": "./bn254.js"
103
103
  },
104
- "./ed25519": {
105
- "import": "./esm/ed25519.js",
106
- "require": "./ed25519.js"
107
- },
108
104
  "./ed448": {
109
105
  "import": "./esm/ed448.js",
110
106
  "require": "./ed448.js"
111
107
  },
108
+ "./ed25519": {
109
+ "import": "./esm/ed25519.js",
110
+ "require": "./ed25519.js"
111
+ },
112
112
  "./index": {
113
113
  "import": "./esm/index.js",
114
114
  "require": "./index.js"
@@ -117,6 +117,14 @@
117
117
  "import": "./esm/jubjub.js",
118
118
  "require": "./jubjub.js"
119
119
  },
120
+ "./misc": {
121
+ "import": "./esm/misc.js",
122
+ "require": "./misc.js"
123
+ },
124
+ "./nist": {
125
+ "import": "./esm/nist.js",
126
+ "require": "./nist.js"
127
+ },
120
128
  "./p256": {
121
129
  "import": "./esm/p256.js",
122
130
  "require": "./p256.js"
@@ -136,6 +144,102 @@
136
144
  "./secp256k1": {
137
145
  "import": "./esm/secp256k1.js",
138
146
  "require": "./secp256k1.js"
147
+ },
148
+ "./abstract/bls.js": {
149
+ "import": "./esm/abstract/bls.js",
150
+ "require": "./abstract/bls.js"
151
+ },
152
+ "./abstract/curve.js": {
153
+ "import": "./esm/abstract/curve.js",
154
+ "require": "./abstract/curve.js"
155
+ },
156
+ "./abstract/edwards.js": {
157
+ "import": "./esm/abstract/edwards.js",
158
+ "require": "./abstract/edwards.js"
159
+ },
160
+ "./abstract/hash-to-curve.js": {
161
+ "import": "./esm/abstract/hash-to-curve.js",
162
+ "require": "./abstract/hash-to-curve.js"
163
+ },
164
+ "./abstract/modular.js": {
165
+ "import": "./esm/abstract/modular.js",
166
+ "require": "./abstract/modular.js"
167
+ },
168
+ "./abstract/montgomery.js": {
169
+ "import": "./esm/abstract/montgomery.js",
170
+ "require": "./abstract/montgomery.js"
171
+ },
172
+ "./abstract/poseidon.js": {
173
+ "import": "./esm/abstract/poseidon.js",
174
+ "require": "./abstract/poseidon.js"
175
+ },
176
+ "./abstract/tower.js": {
177
+ "import": "./esm/abstract/tower.js",
178
+ "require": "./abstract/tower.js"
179
+ },
180
+ "./abstract/utils.js": {
181
+ "import": "./esm/abstract/utils.js",
182
+ "require": "./abstract/utils.js"
183
+ },
184
+ "./abstract/weierstrass.js": {
185
+ "import": "./esm/abstract/weierstrass.js",
186
+ "require": "./abstract/weierstrass.js"
187
+ },
188
+ "./_shortw_utils.js": {
189
+ "import": "./esm/_shortw_utils.js",
190
+ "require": "./_shortw_utils.js"
191
+ },
192
+ "./bls12-381.js": {
193
+ "import": "./esm/bls12-381.js",
194
+ "require": "./bls12-381.js"
195
+ },
196
+ "./bn254.js": {
197
+ "import": "./esm/bn254.js",
198
+ "require": "./bn254.js"
199
+ },
200
+ "./ed448.js": {
201
+ "import": "./esm/ed448.js",
202
+ "require": "./ed448.js"
203
+ },
204
+ "./ed25519.js": {
205
+ "import": "./esm/ed25519.js",
206
+ "require": "./ed25519.js"
207
+ },
208
+ "./index.js": {
209
+ "import": "./esm/index.js",
210
+ "require": "./index.js"
211
+ },
212
+ "./jubjub.js": {
213
+ "import": "./esm/jubjub.js",
214
+ "require": "./jubjub.js"
215
+ },
216
+ "./misc.js": {
217
+ "import": "./esm/misc.js",
218
+ "require": "./misc.js"
219
+ },
220
+ "./nist.js": {
221
+ "import": "./esm/nist.js",
222
+ "require": "./nist.js"
223
+ },
224
+ "./p256.js": {
225
+ "import": "./esm/p256.js",
226
+ "require": "./p256.js"
227
+ },
228
+ "./p384.js": {
229
+ "import": "./esm/p384.js",
230
+ "require": "./p384.js"
231
+ },
232
+ "./p521.js": {
233
+ "import": "./esm/p521.js",
234
+ "require": "./p521.js"
235
+ },
236
+ "./pasta.js": {
237
+ "import": "./esm/pasta.js",
238
+ "require": "./pasta.js"
239
+ },
240
+ "./secp256k1.js": {
241
+ "import": "./esm/secp256k1.js",
242
+ "require": "./secp256k1.js"
139
243
  }
140
244
  },
141
245
  "engines": {
package/pasta.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- import { type CurveFn } from './abstract/weierstrass.js';
2
- export declare const p: bigint;
3
- export declare const q: bigint;
4
- /** https://neuromancer.sk/std/other/Pallas */
5
- export declare const pallas: CurveFn;
6
- /** https://neuromancer.sk/std/other/Vesta */
7
- export declare const vesta: CurveFn;
1
+ import { pallas as pn, vesta as vn } from './misc.ts';
2
+ /** @deprecated */
3
+ export declare const pallas: typeof pn;
4
+ /** @deprecated */
5
+ export declare const vesta: typeof vn;
8
6
  //# sourceMappingURL=pasta.d.ts.map
package/pasta.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pasta.d.ts","sourceRoot":"","sources":["src/pasta.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,OAAO,EAAe,MAAM,2BAA2B,CAAC;AAEtE,eAAO,MAAM,CAAC,EAAE,MAEf,CAAC;AACF,eAAO,MAAM,CAAC,EAAE,MAEf,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,MAAM,EAAE,OASnB,CAAC;AACH,6CAA6C;AAC7C,eAAO,MAAM,KAAK,EAAE,OASlB,CAAC"}
1
+ {"version":3,"file":"pasta.d.ts","sourceRoot":"","sources":["src/pasta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,MAAM,WAAW,CAAC;AACtD,kBAAkB;AAClB,eAAO,MAAM,MAAM,EAAE,OAAO,EAAO,CAAC;AACpC,kBAAkB;AAClB,eAAO,MAAM,KAAK,EAAE,OAAO,EAAO,CAAC"}