@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.
Files changed (191) hide show
  1. package/README.md +282 -419
  2. package/_shortw_utils.d.ts +2 -2
  3. package/_shortw_utils.d.ts.map +1 -1
  4. package/_shortw_utils.js +2 -2
  5. package/_shortw_utils.js.map +1 -1
  6. package/abstract/bls.d.ts +5 -5
  7. package/abstract/bls.d.ts.map +1 -1
  8. package/abstract/bls.js +14 -15
  9. package/abstract/bls.js.map +1 -1
  10. package/abstract/curve.d.ts +10 -2
  11. package/abstract/curve.d.ts.map +1 -1
  12. package/abstract/curve.js +81 -78
  13. package/abstract/curve.js.map +1 -1
  14. package/abstract/edwards.d.ts +2 -2
  15. package/abstract/edwards.d.ts.map +1 -1
  16. package/abstract/edwards.js +55 -69
  17. package/abstract/edwards.js.map +1 -1
  18. package/abstract/hash-to-curve.d.ts +5 -4
  19. package/abstract/hash-to-curve.d.ts.map +1 -1
  20. package/abstract/hash-to-curve.js +20 -18
  21. package/abstract/hash-to-curve.js.map +1 -1
  22. package/abstract/modular.d.ts.map +1 -1
  23. package/abstract/modular.js +9 -9
  24. package/abstract/montgomery.js +12 -12
  25. package/abstract/poseidon.d.ts +1 -1
  26. package/abstract/poseidon.d.ts.map +1 -1
  27. package/abstract/poseidon.js +3 -3
  28. package/abstract/poseidon.js.map +1 -1
  29. package/abstract/tower.d.ts +2 -2
  30. package/abstract/tower.js +13 -13
  31. package/abstract/utils.d.ts +4 -2
  32. package/abstract/utils.d.ts.map +1 -1
  33. package/abstract/utils.js +25 -14
  34. package/abstract/utils.js.map +1 -1
  35. package/abstract/weierstrass.d.ts +19 -6
  36. package/abstract/weierstrass.d.ts.map +1 -1
  37. package/abstract/weierstrass.js +97 -80
  38. package/abstract/weierstrass.js.map +1 -1
  39. package/bls12-381.d.ts +1 -1
  40. package/bls12-381.d.ts.map +1 -1
  41. package/bls12-381.js +48 -49
  42. package/bls12-381.js.map +1 -1
  43. package/bn254.d.ts +2 -2
  44. package/bn254.d.ts.map +1 -1
  45. package/bn254.js +29 -30
  46. package/bn254.js.map +1 -1
  47. package/ed25519.d.ts +8 -6
  48. package/ed25519.d.ts.map +1 -1
  49. package/ed25519.js +65 -66
  50. package/ed25519.js.map +1 -1
  51. package/ed448.d.ts +6 -6
  52. package/ed448.d.ts.map +1 -1
  53. package/ed448.js +50 -52
  54. package/ed448.js.map +1 -1
  55. package/esm/_shortw_utils.d.ts +2 -2
  56. package/esm/_shortw_utils.d.ts.map +1 -1
  57. package/esm/_shortw_utils.js +1 -1
  58. package/esm/_shortw_utils.js.map +1 -1
  59. package/esm/abstract/bls.d.ts +5 -5
  60. package/esm/abstract/bls.d.ts.map +1 -1
  61. package/esm/abstract/bls.js +5 -6
  62. package/esm/abstract/bls.js.map +1 -1
  63. package/esm/abstract/curve.d.ts +10 -2
  64. package/esm/abstract/curve.d.ts.map +1 -1
  65. package/esm/abstract/curve.js +77 -74
  66. package/esm/abstract/curve.js.map +1 -1
  67. package/esm/abstract/edwards.d.ts +2 -2
  68. package/esm/abstract/edwards.d.ts.map +1 -1
  69. package/esm/abstract/edwards.js +36 -50
  70. package/esm/abstract/edwards.js.map +1 -1
  71. package/esm/abstract/hash-to-curve.d.ts +5 -4
  72. package/esm/abstract/hash-to-curve.d.ts.map +1 -1
  73. package/esm/abstract/hash-to-curve.js +4 -2
  74. package/esm/abstract/hash-to-curve.js.map +1 -1
  75. package/esm/abstract/modular.d.ts.map +1 -1
  76. package/esm/abstract/modular.js +1 -1
  77. package/esm/abstract/montgomery.js +2 -2
  78. package/esm/abstract/poseidon.d.ts +1 -1
  79. package/esm/abstract/poseidon.d.ts.map +1 -1
  80. package/esm/abstract/poseidon.js +1 -1
  81. package/esm/abstract/poseidon.js.map +1 -1
  82. package/esm/abstract/tower.d.ts +2 -2
  83. package/esm/abstract/tower.js +5 -5
  84. package/esm/abstract/utils.d.ts +4 -2
  85. package/esm/abstract/utils.d.ts.map +1 -1
  86. package/esm/abstract/utils.js +24 -13
  87. package/esm/abstract/utils.js.map +1 -1
  88. package/esm/abstract/weierstrass.d.ts +19 -6
  89. package/esm/abstract/weierstrass.d.ts.map +1 -1
  90. package/esm/abstract/weierstrass.js +77 -60
  91. package/esm/abstract/weierstrass.js.map +1 -1
  92. package/esm/bls12-381.d.ts +1 -1
  93. package/esm/bls12-381.d.ts.map +1 -1
  94. package/esm/bls12-381.js +16 -17
  95. package/esm/bls12-381.js.map +1 -1
  96. package/esm/bn254.d.ts +2 -2
  97. package/esm/bn254.d.ts.map +1 -1
  98. package/esm/bn254.js +7 -8
  99. package/esm/bn254.js.map +1 -1
  100. package/esm/ed25519.d.ts +8 -6
  101. package/esm/ed25519.d.ts.map +1 -1
  102. package/esm/ed25519.js +20 -21
  103. package/esm/ed25519.js.map +1 -1
  104. package/esm/ed448.d.ts +6 -6
  105. package/esm/ed448.d.ts.map +1 -1
  106. package/esm/ed448.js +13 -15
  107. package/esm/ed448.js.map +1 -1
  108. package/esm/index.js +13 -1
  109. package/esm/index.js.map +1 -1
  110. package/esm/jubjub.d.ts +1 -4
  111. package/esm/jubjub.d.ts.map +1 -1
  112. package/esm/jubjub.js +1 -60
  113. package/esm/jubjub.js.map +1 -1
  114. package/esm/misc.d.ts +15 -0
  115. package/esm/misc.d.ts.map +1 -0
  116. package/esm/misc.js +101 -0
  117. package/esm/misc.js.map +1 -0
  118. package/esm/p256.d.ts +8 -5
  119. package/esm/p256.d.ts.map +1 -1
  120. package/esm/p256.js +13 -12
  121. package/esm/p256.js.map +1 -1
  122. package/esm/p384.d.ts +8 -5
  123. package/esm/p384.d.ts.map +1 -1
  124. package/esm/p384.js +14 -15
  125. package/esm/p384.js.map +1 -1
  126. package/esm/p521.d.ts +6 -5
  127. package/esm/p521.d.ts.map +1 -1
  128. package/esm/p521.js +19 -28
  129. package/esm/p521.js.map +1 -1
  130. package/esm/pasta.d.ts +1 -7
  131. package/esm/pasta.d.ts.map +1 -1
  132. package/esm/pasta.js +1 -33
  133. package/esm/pasta.js.map +1 -1
  134. package/esm/secp256k1.d.ts +15 -10
  135. package/esm/secp256k1.d.ts.map +1 -1
  136. package/esm/secp256k1.js +18 -14
  137. package/esm/secp256k1.js.map +1 -1
  138. package/index.js +13 -1
  139. package/index.js.map +1 -1
  140. package/jubjub.d.ts +1 -4
  141. package/jubjub.d.ts.map +1 -1
  142. package/jubjub.js +5 -63
  143. package/jubjub.js.map +1 -1
  144. package/misc.d.ts +15 -0
  145. package/misc.d.ts.map +1 -0
  146. package/misc.js +106 -0
  147. package/misc.js.map +1 -0
  148. package/p256.d.ts +8 -5
  149. package/p256.d.ts.map +1 -1
  150. package/p256.js +19 -18
  151. package/p256.js.map +1 -1
  152. package/p384.d.ts +8 -5
  153. package/p384.d.ts.map +1 -1
  154. package/p384.js +19 -20
  155. package/p384.js.map +1 -1
  156. package/p521.d.ts +6 -5
  157. package/p521.d.ts.map +1 -1
  158. package/p521.js +23 -32
  159. package/p521.js.map +1 -1
  160. package/package.json +21 -16
  161. package/pasta.d.ts +1 -7
  162. package/pasta.d.ts.map +1 -1
  163. package/pasta.js +4 -34
  164. package/pasta.js.map +1 -1
  165. package/secp256k1.d.ts +15 -10
  166. package/secp256k1.d.ts.map +1 -1
  167. package/secp256k1.js +57 -53
  168. package/secp256k1.js.map +1 -1
  169. package/src/_shortw_utils.ts +2 -2
  170. package/src/abstract/bls.ts +14 -12
  171. package/src/abstract/curve.ts +88 -79
  172. package/src/abstract/edwards.ts +52 -59
  173. package/src/abstract/hash-to-curve.ts +7 -5
  174. package/src/abstract/modular.ts +1 -1
  175. package/src/abstract/montgomery.ts +2 -2
  176. package/src/abstract/poseidon.ts +1 -1
  177. package/src/abstract/tower.ts +6 -6
  178. package/src/abstract/utils.ts +26 -15
  179. package/src/abstract/weierstrass.ts +99 -77
  180. package/src/bls12-381.ts +30 -28
  181. package/src/bn254.ts +11 -13
  182. package/src/ed25519.ts +27 -26
  183. package/src/ed448.ts +21 -20
  184. package/src/index.ts +13 -1
  185. package/src/jubjub.ts +5 -63
  186. package/src/misc.ts +117 -0
  187. package/src/p256.ts +13 -12
  188. package/src/p384.ts +18 -15
  189. package/src/p521.ts +27 -32
  190. package/src/pasta.ts +1 -39
  191. package/src/secp256k1.ts +20 -16
package/p256.js CHANGED
@@ -7,46 +7,47 @@ exports.encodeToCurve = exports.hashToCurve = exports.secp256r1 = exports.p256 =
7
7
  * @module
8
8
  */
9
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'));
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
16
  const CURVE_A = Fp256.create(BigInt('-3'));
17
17
  const CURVE_B = BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b');
18
- /** secp256r1 curve, ECDSA and ECDH methods. */
18
+ /**
19
+ * secp256r1 curve, ECDSA and ECDH methods.
20
+ * Field: `2n**224n * (2n**32n-1n) + 2n**192n + 2n**96n-1n`
21
+ */
19
22
  // prettier-ignore
20
- exports.p256 = (0, _shortw_utils_js_1.createCurve)({
21
- a: CURVE_A, // Equation params: a, b
23
+ exports.p256 = (0, _shortw_utils_ts_1.createCurve)({
24
+ a: CURVE_A,
22
25
  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
26
+ Fp: Fp256,
25
27
  n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),
26
- // Base (generator) point (x, y)
27
28
  Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),
28
29
  Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),
29
30
  h: BigInt(1),
30
31
  lowS: false,
31
- }, sha256_1.sha256);
32
+ }, sha2_1.sha256);
32
33
  /** Alias to p256. */
33
34
  exports.secp256r1 = exports.p256;
34
- const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_js_1.mapToCurveSimpleSWU)(Fp256, {
35
+ const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_ts_1.mapToCurveSimpleSWU)(Fp256, {
35
36
  A: CURVE_A,
36
37
  B: CURVE_B,
37
38
  Z: Fp256.create(BigInt('-10')),
38
39
  }))();
39
- const htf = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.createHasher)(exports.secp256r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
40
+ const htf = /* @__PURE__ */ (() => (0, hash_to_curve_ts_1.createHasher)(exports.secp256r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
40
41
  DST: 'P256_XMD:SHA-256_SSWU_RO_',
41
42
  encodeDST: 'P256_XMD:SHA-256_SSWU_NU_',
42
43
  p: Fp256.ORDER,
43
44
  m: 1,
44
45
  k: 128,
45
46
  expand: 'xmd',
46
- hash: sha256_1.sha256,
47
+ hash: sha2_1.sha256,
47
48
  }))();
48
- /** secp256r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
49
+ /** secp256r1 hash-to-curve from RFC 9380. */
49
50
  exports.hashToCurve = (() => htf.hashToCurve)();
50
- /** secp256r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
51
+ /** secp256r1 encode-to-curve from RFC 9380. */
51
52
  exports.encodeToCurve = (() => htf.encodeToCurve)();
52
53
  //# 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,yDAAoE;AACpE,kEAAsE;AACtE,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":";;;AAAA;;;;GAIG;AACH,sEAAsE;AACtE,6CAA4C;AAC5C,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;;;GAGG;AACH,kBAAkB;AACL,QAAA,IAAI,GAAsB,IAAA,8BAAW,EAAC;IACjD,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,EAAE,EAAE,KAAK;IACT,CAAC,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAC/E,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,aAAM,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,aAAM;CACb,CAAC,CAAC,EAAE,CAAC;AACR,6CAA6C;AAChC,QAAA,WAAW,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;AACxF,+CAA+C;AAClC,QAAA,aAAa,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC"}
package/p384.d.ts CHANGED
@@ -1,11 +1,14 @@
1
- import { CurveFnWithCreate } from './_shortw_utils.js';
2
- import { HTFMethod } from './abstract/hash-to-curve.js';
3
- /** secp384r1 curve, ECDSA and ECDH methods. */
1
+ import { type CurveFnWithCreate } from './_shortw_utils.ts';
2
+ import { type HTFMethod } from './abstract/hash-to-curve.ts';
3
+ /**
4
+ * secp384r1 curve, ECDSA and ECDH methods.
5
+ * Field: `2n**384n - 2n**128n - 2n**96n + 2n**32n - 1n`.
6
+ * */
4
7
  export declare const p384: CurveFnWithCreate;
5
8
  /** Alias to p384. */
6
9
  export declare const secp384r1: CurveFnWithCreate;
7
- /** secp384r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
10
+ /** secp384r1 hash-to-curve from RFC 9380. */
8
11
  export declare const hashToCurve: HTFMethod<bigint>;
9
- /** secp384r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
12
+ /** secp384r1 encode-to-curve from RFC 9380. */
10
13
  export declare const encodeToCurve: HTFMethod<bigint>;
11
14
  //# 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,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAgB,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAYtE,+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":"AAOA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAc3E;;;KAGK;AAEL,eAAO,MAAM,IAAI,EAAE,iBASA,CAAC;AACpB,qBAAqB;AACrB,eAAO,MAAM,SAAS,EAAE,iBAAwB,CAAC;AAmBjD,6CAA6C;AAC7C,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,CAA6C,CAAC;AACxF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAA+C,CAAC"}
package/p384.js CHANGED
@@ -7,50 +7,49 @@ exports.encodeToCurve = exports.hashToCurve = exports.secp384r1 = exports.p384 =
7
7
  * @module
8
8
  */
9
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");
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
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);
16
+ const Fp384 = (0, modular_ts_1.Field)(BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff'));
19
17
  const CURVE_A = Fp384.create(BigInt('-3'));
20
18
  // prettier-ignore
21
19
  const CURVE_B = BigInt('0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef');
22
- /** secp384r1 curve, ECDSA and ECDH methods. */
20
+ /**
21
+ * secp384r1 curve, ECDSA and ECDH methods.
22
+ * Field: `2n**384n - 2n**128n - 2n**96n + 2n**32n - 1n`.
23
+ * */
23
24
  // prettier-ignore
24
- exports.p384 = (0, _shortw_utils_js_1.createCurve)({
25
- a: CURVE_A, // Equation params: a, b
25
+ exports.p384 = (0, _shortw_utils_ts_1.createCurve)({
26
+ a: CURVE_A,
26
27
  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.
28
+ Fp: Fp384,
29
29
  n: BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973'),
30
- // Base (generator) point (x, y)
31
30
  Gx: BigInt('0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7'),
32
31
  Gy: BigInt('0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f'),
33
32
  h: BigInt(1),
34
33
  lowS: false,
35
- }, sha512_1.sha384);
34
+ }, sha2_1.sha384);
36
35
  /** Alias to p384. */
37
36
  exports.secp384r1 = exports.p384;
38
- const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_js_1.mapToCurveSimpleSWU)(Fp384, {
37
+ const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_ts_1.mapToCurveSimpleSWU)(Fp384, {
39
38
  A: CURVE_A,
40
39
  B: CURVE_B,
41
40
  Z: Fp384.create(BigInt('-12')),
42
41
  }))();
43
- const htf = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.createHasher)(exports.secp384r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
42
+ const htf = /* @__PURE__ */ (() => (0, hash_to_curve_ts_1.createHasher)(exports.secp384r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
44
43
  DST: 'P384_XMD:SHA-384_SSWU_RO_',
45
44
  encodeDST: 'P384_XMD:SHA-384_SSWU_NU_',
46
45
  p: Fp384.ORDER,
47
46
  m: 1,
48
47
  k: 192,
49
48
  expand: 'xmd',
50
- hash: sha512_1.sha384,
49
+ hash: sha2_1.sha384,
51
50
  }))();
52
- /** secp384r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
51
+ /** secp384r1 hash-to-curve from RFC 9380. */
53
52
  exports.hashToCurve = (() => htf.hashToCurve)();
54
- /** secp384r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
53
+ /** secp384r1 encode-to-curve from RFC 9380. */
55
54
  exports.encodeToCurve = (() => htf.encodeToCurve)();
56
55
  //# 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,yDAAoE;AACpE,kEAAsE;AACtE,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":";;;AAAA;;;;GAIG;AACH,sEAAsE;AACtE,6CAA4C;AAC5C,yDAAyE;AACzE,kEAA2E;AAC3E,sDAA8C;AAC9C,8DAAgE;AAEhE,0CAA0C;AAC1C,MAAM,KAAK,GAAG,IAAA,kBAAK,EACjB,MAAM,CACJ,oGAAoG,CACrG,CACF,CAAC;AACF,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;;;KAGK;AACL,kBAAkB;AACL,QAAA,IAAI,GAAsB,IAAA,8BAAW,EAAC;IACjD,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,EAAE,EAAE,KAAK;IACT,CAAC,EAAE,MAAM,CAAC,oGAAoG,CAAC;IAC/G,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,aAAM,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,aAAM;CACb,CAAC,CAAC,EAAE,CAAC;AACR,6CAA6C;AAChC,QAAA,WAAW,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;AACxF,+CAA+C;AAClC,QAAA,aAAa,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC"}
package/p521.d.ts CHANGED
@@ -1,12 +1,13 @@
1
- import { CurveFnWithCreate } from './_shortw_utils.js';
2
- import { HTFMethod } from './abstract/hash-to-curve.js';
1
+ import { type CurveFnWithCreate } from './_shortw_utils.ts';
2
+ import { type HTFMethod } from './abstract/hash-to-curve.ts';
3
3
  /**
4
- * NIST secp521r1 aka p521.
4
+ * NIST secp521r1 aka p521 curve, ECDSA and ECDH methods.
5
+ * Field: `2n**521n - 1n`.
5
6
  */
6
7
  export declare const p521: CurveFnWithCreate;
7
8
  export declare const secp521r1: CurveFnWithCreate;
8
- /** secp521r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
9
+ /** secp521r1 hash-to-curve from RFC 9380. */
9
10
  export declare const hashToCurve: HTFMethod<bigint>;
10
- /** secp521r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
11
+ /** secp521r1 encode-to-curve from RFC 9380. */
11
12
  export declare const encodeToCurve: HTFMethod<bigint>;
12
13
  //# 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,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAgB,SAAS,EAAE,MAAM,6BAA6B,CAAC;AA2BtE;;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":"AAQA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAgB3E;;;GAGG;AAEH,eAAO,MAAM,IAAI,EAAE,iBAgBA,CAAC;AACpB,eAAO,MAAM,SAAS,EAAE,iBAAwB,CAAC;AAmBjD,6CAA6C;AAC7C,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,CAA6C,CAAC;AACxF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAA+C,CAAC"}
package/p521.js CHANGED
@@ -8,57 +8,48 @@ exports.encodeToCurve = exports.hashToCurve = exports.secp521r1 = exports.p521 =
8
8
  * @module
9
9
  */
10
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");
11
+ const sha2_1 = require("@noble/hashes/sha2");
12
+ const _shortw_utils_ts_1 = require("./_shortw_utils.js");
13
+ const hash_to_curve_ts_1 = require("./abstract/hash-to-curve.js");
14
+ const modular_ts_1 = require("./abstract/modular.js");
15
+ const weierstrass_ts_1 = require("./abstract/weierstrass.js");
16
16
  // Field over which we'll do calculations.
17
+ const Fp521 = (0, modular_ts_1.Field)(BigInt('0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'));
18
+ const CURVE_A = Fp521.create(BigInt('-3'));
19
+ const CURVE_B = BigInt('0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00');
20
+ /**
21
+ * NIST secp521r1 aka p521 curve, ECDSA and ECDH methods.
22
+ * Field: `2n**521n - 1n`.
23
+ */
17
24
  // 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'),
25
+ exports.p521 = (0, _shortw_utils_ts_1.createCurve)({
26
+ a: CURVE_A,
27
+ b: CURVE_B,
23
28
  Fp: Fp521,
24
29
  n: BigInt('0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409'),
25
30
  Gx: BigInt('0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66'),
26
31
  Gy: BigInt('0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650'),
27
32
  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
33
  lowS: false,
43
34
  allowedPrivateKeyLengths: [130, 131, 132] // P521 keys are variable-length. Normalize to 132b
44
- }, sha512_1.sha512);
35
+ }, sha2_1.sha512);
45
36
  exports.secp521r1 = exports.p521;
46
- const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_js_1.mapToCurveSimpleSWU)(Fp521, {
47
- A: CURVE.a,
48
- B: CURVE.b,
37
+ const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_ts_1.mapToCurveSimpleSWU)(Fp521, {
38
+ A: CURVE_A,
39
+ B: CURVE_B,
49
40
  Z: Fp521.create(BigInt('-4')),
50
41
  }))();
51
- const htf = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.createHasher)(exports.secp521r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
42
+ const htf = /* @__PURE__ */ (() => (0, hash_to_curve_ts_1.createHasher)(exports.secp521r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
52
43
  DST: 'P521_XMD:SHA-512_SSWU_RO_',
53
44
  encodeDST: 'P521_XMD:SHA-512_SSWU_NU_',
54
45
  p: Fp521.ORDER,
55
46
  m: 1,
56
47
  k: 256,
57
48
  expand: 'xmd',
58
- hash: sha512_1.sha512,
49
+ hash: sha2_1.sha512,
59
50
  }))();
60
- /** secp521r1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
51
+ /** secp521r1 hash-to-curve from RFC 9380. */
61
52
  exports.hashToCurve = (() => htf.hashToCurve)();
62
- /** secp521r1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
53
+ /** secp521r1 encode-to-curve from RFC 9380. */
63
54
  exports.encodeToCurve = (() => htf.encodeToCurve)();
64
55
  //# 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,yDAAoE;AACpE,kEAAsE;AACtE,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":";;;AAAA;;;;;GAKG;AACH,sEAAsE;AACtE,6CAA4C;AAC5C,yDAAyE;AACzE,kEAA2E;AAC3E,sDAA8C;AAC9C,8DAAgE;AAEhE,0CAA0C;AAC1C,MAAM,KAAK,GAAG,IAAA,kBAAK,EACjB,MAAM,CACJ,uIAAuI,CACxI,CACF,CAAC;AAEF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,MAAM,OAAO,GAAG,MAAM,CACpB,wIAAwI,CACzI,CAAC;AAEF;;;GAGG;AACH,kBAAkB;AACL,QAAA,IAAI,GAAsB,IAAA,8BAAW,EAAC;IACjD,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,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;IACZ,IAAI,EAAE,KAAK;IACX,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,mDAAmD;CACrF,EAAE,aAAM,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,OAAO;IACV,CAAC,EAAE,OAAO;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,aAAM;CACb,CAAC,CAAC,EAAE,CAAC;AACR,6CAA6C;AAChC,QAAA,WAAW,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;AACxF,+CAA+C;AAClC,QAAA,aAAa,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noble/curves",
3
- "version": "1.8.0",
3
+ "version": "1.8.2",
4
4
  "description": "Audited & minimal JS implementation of elliptic curve cryptography",
5
5
  "files": [
6
6
  "*.js",
@@ -12,15 +12,17 @@
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
- "build": "tsc && tsc -p tsconfig.esm.json",
18
- "build:release": "cd build && npm i && npm run build",
17
+ "build": "tsc && tsc -p tsconfig.cjs.json",
18
+ "build:release": "npx jsbt esbuild test/build",
19
19
  "build:clean": "rm {.,esm,abstract,esm/abstract}/*.{js,d.ts,d.ts.map,js.map} 2> /dev/null",
20
20
  "lint": "prettier --check 'src/**/*.{js,ts}' 'test/*.js'",
21
21
  "format": "prettier --write 'src/**/*.{js,ts}' 'test/*.js'",
22
22
  "test": "node test/index.js",
23
- "test:coverage": "c8 node test/index.js"
23
+ "test:bun": "bun test/index.js",
24
+ "test:deno": "deno --allow-env --allow-read test/index.js",
25
+ "test:coverage": "npm install --no-save c8@10.1.2 && npx c8 npm test"
24
26
  },
25
27
  "author": "Paul Miller (https://paulmillr.com)",
26
28
  "homepage": "https://paulmillr.com/noble/",
@@ -30,16 +32,15 @@
30
32
  },
31
33
  "license": "MIT",
32
34
  "dependencies": {
33
- "@noble/hashes": "1.7.0"
35
+ "@noble/hashes": "1.7.2"
34
36
  },
35
37
  "devDependencies": {
36
- "@paulmillr/jsbt": "0.2.1",
37
- "c8": "10.1.2",
38
+ "@paulmillr/jsbt": "0.3.3",
38
39
  "fast-check": "3.0.0",
39
- "micro-bmark": "0.3.1",
40
- "micro-should": "0.4.0",
41
- "prettier": "3.3.2",
42
- "typescript": "5.5.2"
40
+ "micro-bmark": "0.4.0",
41
+ "micro-should": "0.5.1",
42
+ "prettier": "3.5.2",
43
+ "typescript": "5.8.2"
43
44
  },
44
45
  "sideEffects": false,
45
46
  "main": "index.js",
@@ -100,14 +101,14 @@
100
101
  "import": "./esm/bn254.js",
101
102
  "require": "./bn254.js"
102
103
  },
103
- "./ed25519": {
104
- "import": "./esm/ed25519.js",
105
- "require": "./ed25519.js"
106
- },
107
104
  "./ed448": {
108
105
  "import": "./esm/ed448.js",
109
106
  "require": "./ed448.js"
110
107
  },
108
+ "./ed25519": {
109
+ "import": "./esm/ed25519.js",
110
+ "require": "./ed25519.js"
111
+ },
111
112
  "./index": {
112
113
  "import": "./esm/index.js",
113
114
  "require": "./index.js"
@@ -116,6 +117,10 @@
116
117
  "import": "./esm/jubjub.js",
117
118
  "require": "./jubjub.js"
118
119
  },
120
+ "./misc": {
121
+ "import": "./esm/misc.js",
122
+ "require": "./misc.js"
123
+ },
119
124
  "./p256": {
120
125
  "import": "./esm/p256.js",
121
126
  "require": "./p256.js"
package/pasta.d.ts CHANGED
@@ -1,8 +1,2 @@
1
- import { 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
+ export { pallas, vesta } from './misc.ts';
8
2
  //# 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,OAAO,EAAe,MAAM,2BAA2B,CAAC;AAEjE,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,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC"}
package/pasta.js CHANGED
@@ -1,37 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.vesta = exports.pallas = exports.q = exports.p = void 0;
4
- /**
5
- * Pasta curves. See [Spec](https://o1-labs.github.io/proof-systems/specs/pasta.html).
6
- * @module
7
- */
8
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
9
- const sha256_1 = require("@noble/hashes/sha256");
10
- const _shortw_utils_js_1 = require("./_shortw_utils.js");
11
- const modular_js_1 = require("./abstract/modular.js");
12
- const weierstrass_js_1 = require("./abstract/weierstrass.js");
13
- exports.p = BigInt('0x40000000000000000000000000000000224698fc094cf91b992d30ed00000001');
14
- exports.q = BigInt('0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000001');
15
- /** https://neuromancer.sk/std/other/Pallas */
16
- exports.pallas = (0, weierstrass_js_1.weierstrass)({
17
- a: BigInt(0),
18
- b: BigInt(5),
19
- Fp: (0, modular_js_1.Field)(exports.p),
20
- n: exports.q,
21
- Gx: (0, modular_js_1.mod)(BigInt(-1), exports.p),
22
- Gy: BigInt(2),
23
- h: BigInt(1),
24
- ...(0, _shortw_utils_js_1.getHash)(sha256_1.sha256),
25
- });
26
- /** https://neuromancer.sk/std/other/Vesta */
27
- exports.vesta = (0, weierstrass_js_1.weierstrass)({
28
- a: BigInt(0),
29
- b: BigInt(5),
30
- Fp: (0, modular_js_1.Field)(exports.q),
31
- n: exports.p,
32
- Gx: (0, modular_js_1.mod)(BigInt(-1), exports.q),
33
- Gy: BigInt(2),
34
- h: BigInt(1),
35
- ...(0, _shortw_utils_js_1.getHash)(sha256_1.sha256),
36
- });
3
+ exports.vesta = exports.pallas = void 0;
4
+ var misc_ts_1 = require("./misc.js");
5
+ Object.defineProperty(exports, "pallas", { enumerable: true, get: function () { return misc_ts_1.pallas; } });
6
+ Object.defineProperty(exports, "vesta", { enumerable: true, get: function () { return misc_ts_1.vesta; } });
37
7
  //# sourceMappingURL=pasta.js.map
package/pasta.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pasta.js","sourceRoot":"","sources":["src/pasta.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,sEAAsE;AACtE,iDAA8C;AAC9C,yDAA6C;AAC7C,sDAAmD;AACnD,8DAAiE;AAEpD,QAAA,CAAC,GAAW,MAAM,CAC7B,oEAAoE,CACrE,CAAC;AACW,QAAA,CAAC,GAAW,MAAM,CAC7B,oEAAoE,CACrE,CAAC;AAEF,8CAA8C;AACjC,QAAA,MAAM,GAAY,IAAA,4BAAW,EAAC;IACzC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,EAAE,EAAE,IAAA,kBAAK,EAAC,SAAC,CAAC;IACZ,CAAC,EAAE,SAAC;IACJ,EAAE,EAAE,IAAA,gBAAG,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,SAAC,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACb,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,GAAG,IAAA,0BAAO,EAAC,eAAM,CAAC;CACnB,CAAC,CAAC;AACH,6CAA6C;AAChC,QAAA,KAAK,GAAY,IAAA,4BAAW,EAAC;IACxC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,EAAE,EAAE,IAAA,kBAAK,EAAC,SAAC,CAAC;IACZ,CAAC,EAAE,SAAC;IACJ,EAAE,EAAE,IAAA,gBAAG,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,SAAC,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACb,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,GAAG,IAAA,0BAAO,EAAC,eAAM,CAAC;CACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"pasta.js","sourceRoot":"","sources":["src/pasta.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAAjC,iGAAA,MAAM,OAAA;AAAE,gGAAA,KAAK,OAAA"}
package/secp256k1.d.ts CHANGED
@@ -1,20 +1,23 @@
1
- import { CurveFnWithCreate } from './_shortw_utils.js';
2
- import { HTFMethod } from './abstract/hash-to-curve.js';
3
- import { mod } from './abstract/modular.js';
4
- import type { Hex, PrivKey } from './abstract/utils.js';
5
- import { bytesToNumberBE, numberToBytesBE } from './abstract/utils.js';
6
- import { ProjPointType as PointType } from './abstract/weierstrass.js';
1
+ import { type CurveFnWithCreate } from './_shortw_utils.ts';
2
+ import { type HTFMethod } from './abstract/hash-to-curve.ts';
3
+ import { mod } from './abstract/modular.ts';
4
+ import type { Hex, PrivKey } from './abstract/utils.ts';
5
+ import { bytesToNumberBE, numberToBytesBE } from './abstract/utils.ts';
6
+ import { type ProjPointType as PointType } from './abstract/weierstrass.ts';
7
7
  /**
8
- * secp256k1 short weierstrass curve and ECDSA signatures over it.
8
+ * secp256k1 curve, ECDSA and ECDH methods.
9
+ *
10
+ * Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`
9
11
  *
10
12
  * @example
13
+ * ```js
11
14
  * import { secp256k1 } from '@noble/curves/secp256k1';
12
- *
13
15
  * const priv = secp256k1.utils.randomPrivateKey();
14
16
  * const pub = secp256k1.getPublicKey(priv);
15
17
  * const msg = new Uint8Array(32).fill(1); // message hash (not message) in ecdsa
16
18
  * const sig = secp256k1.sign(msg, priv); // `{prehash: true}` option is available
17
19
  * const isValid = secp256k1.verify(sig, msg, pub) === true;
20
+ * ```
18
21
  */
19
22
  export declare const secp256k1: CurveFnWithCreate;
20
23
  declare function taggedHash(tag: string, ...messages: Uint8Array[]): Uint8Array;
@@ -55,17 +58,19 @@ export type SecpSchnorr = {
55
58
  * Schnorr signatures over secp256k1.
56
59
  * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
57
60
  * @example
61
+ * ```js
58
62
  * import { schnorr } from '@noble/curves/secp256k1';
59
63
  * const priv = schnorr.utils.randomPrivateKey();
60
64
  * const pub = schnorr.getPublicKey(priv);
61
65
  * const msg = new TextEncoder().encode('hello');
62
66
  * const sig = schnorr.sign(msg, priv);
63
67
  * const isValid = schnorr.verify(sig, msg, pub);
68
+ * ```
64
69
  */
65
70
  export declare const schnorr: SecpSchnorr;
66
- /** secp256k1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
71
+ /** secp256k1 hash-to-curve from RFC 9380. */
67
72
  export declare const hashToCurve: HTFMethod<bigint>;
68
- /** secp256k1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
73
+ /** secp256k1 encode-to-curve from RFC 9380. */
69
74
  export declare const encodeToCurve: HTFMethod<bigint>;
70
75
  export {};
71
76
  //# sourceMappingURL=secp256k1.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"secp256k1.d.ts","sourceRoot":"","sources":["src/secp256k1.ts"],"names":[],"mappings":"AAeA,OAAO,EAAe,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAgB,SAAS,EAAc,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAS,GAAG,EAAQ,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAGL,eAAe,EAGf,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,IAAI,SAAS,EAAuB,MAAM,2BAA2B,CAAC;AAsC5F;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,EAAE,iBAsCvB,CAAC;AAOF,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,CAQtE;AAkBD;;;GAGG;AACH,iBAAS,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAS5C;AASD;;GAEG;AACH,iBAAS,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU,CAExD;AAED;;;GAGG;AACH,iBAAS,WAAW,CAClB,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,OAAO,EACnB,OAAO,GAAE,GAAqB,GAC7B,UAAU,CAgBZ;AAED;;;GAGG;AACH,iBAAS,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAiB5E;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,OAAO,mBAAmB,CAAC;IACzC,IAAI,EAAE,OAAO,WAAW,CAAC;IACzB,MAAM,EAAE,OAAO,aAAa,CAAC;IAC7B,KAAK,EAAE;QACL,gBAAgB,EAAE,MAAM,UAAU,CAAC;QACnC,MAAM,EAAE,OAAO,MAAM,CAAC;QACtB,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC;QACvD,eAAe,EAAE,OAAO,eAAe,CAAC;QACxC,eAAe,EAAE,OAAO,eAAe,CAAC;QACxC,UAAU,EAAE,OAAO,UAAU,CAAC;QAC9B,GAAG,EAAE,OAAO,GAAG,CAAC;KACjB,CAAC;CACH,CAAC;AACF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,EAAE,WAajB,CAAC;AA2DN,uFAAuF;AACvF,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,CAA6C,CAAC;AAExF,yFAAyF;AACzF,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAA+C,CAAC"}
1
+ {"version":3,"file":"secp256k1.d.ts","sourceRoot":"","sources":["src/secp256k1.ts"],"names":[],"mappings":"AAeA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAgB,KAAK,SAAS,EAAc,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAS,GAAG,EAAQ,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAEL,eAAe,EAIf,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAuB,KAAK,aAAa,IAAI,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAsCjG;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,EAAE,iBAqCvB,CAAC;AAOF,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,CAQtE;AAkBD;;;GAGG;AACH,iBAAS,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAS5C;AASD;;GAEG;AACH,iBAAS,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU,CAExD;AAED;;;GAGG;AACH,iBAAS,WAAW,CAClB,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,OAAO,EACnB,OAAO,GAAE,GAAqB,GAC7B,UAAU,CAgBZ;AAED;;;GAGG;AACH,iBAAS,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAiB5E;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,OAAO,mBAAmB,CAAC;IACzC,IAAI,EAAE,OAAO,WAAW,CAAC;IACzB,MAAM,EAAE,OAAO,aAAa,CAAC;IAC7B,KAAK,EAAE;QACL,gBAAgB,EAAE,MAAM,UAAU,CAAC;QACnC,MAAM,EAAE,OAAO,MAAM,CAAC;QACtB,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC;QACvD,eAAe,EAAE,OAAO,eAAe,CAAC;QACxC,eAAe,EAAE,OAAO,eAAe,CAAC;QACxC,UAAU,EAAE,OAAO,UAAU,CAAC;QAC9B,GAAG,EAAE,OAAO,GAAG,CAAC;KACjB,CAAC;CACH,CAAC;AACF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,EAAE,WAajB,CAAC;AA2DN,6CAA6C;AAC7C,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,CAA6C,CAAC;AAExF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAA+C,CAAC"}