@noble/curves 1.9.1 → 1.9.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 (189) hide show
  1. package/README.md +56 -25
  2. package/_shortw_utils.d.ts +7 -5
  3. package/_shortw_utils.d.ts.map +1 -1
  4. package/_shortw_utils.js +2 -8
  5. package/_shortw_utils.js.map +1 -1
  6. package/abstract/bls.d.ts +60 -24
  7. package/abstract/bls.d.ts.map +1 -1
  8. package/abstract/bls.js +158 -109
  9. package/abstract/bls.js.map +1 -1
  10. package/abstract/curve.d.ts +44 -9
  11. package/abstract/curve.d.ts.map +1 -1
  12. package/abstract/curve.js +86 -7
  13. package/abstract/curve.js.map +1 -1
  14. package/abstract/edwards.d.ts +112 -25
  15. package/abstract/edwards.d.ts.map +1 -1
  16. package/abstract/edwards.js +138 -102
  17. package/abstract/edwards.js.map +1 -1
  18. package/abstract/fft.d.ts +12 -10
  19. package/abstract/fft.d.ts.map +1 -1
  20. package/abstract/fft.js +12 -13
  21. package/abstract/fft.js.map +1 -1
  22. package/abstract/hash-to-curve.d.ts +25 -11
  23. package/abstract/hash-to-curve.d.ts.map +1 -1
  24. package/abstract/hash-to-curve.js +17 -14
  25. package/abstract/hash-to-curve.js.map +1 -1
  26. package/abstract/modular.d.ts +24 -11
  27. package/abstract/modular.d.ts.map +1 -1
  28. package/abstract/modular.js +49 -20
  29. package/abstract/modular.js.map +1 -1
  30. package/abstract/montgomery.d.ts +1 -1
  31. package/abstract/montgomery.d.ts.map +1 -1
  32. package/abstract/montgomery.js +5 -4
  33. package/abstract/montgomery.js.map +1 -1
  34. package/abstract/poseidon.d.ts +5 -13
  35. package/abstract/poseidon.d.ts.map +1 -1
  36. package/abstract/poseidon.js +12 -7
  37. package/abstract/poseidon.js.map +1 -1
  38. package/abstract/tower.d.ts +20 -46
  39. package/abstract/tower.d.ts.map +1 -1
  40. package/abstract/tower.js +9 -3
  41. package/abstract/tower.js.map +1 -1
  42. package/abstract/utils.d.ts +1 -115
  43. package/abstract/utils.d.ts.map +1 -1
  44. package/abstract/utils.js +17 -371
  45. package/abstract/utils.js.map +1 -1
  46. package/abstract/weierstrass.d.ts +132 -76
  47. package/abstract/weierstrass.d.ts.map +1 -1
  48. package/abstract/weierstrass.js +462 -398
  49. package/abstract/weierstrass.js.map +1 -1
  50. package/bls12-381.d.ts +2 -0
  51. package/bls12-381.d.ts.map +1 -1
  52. package/bls12-381.js +504 -466
  53. package/bls12-381.js.map +1 -1
  54. package/bn254.d.ts +2 -0
  55. package/bn254.d.ts.map +1 -1
  56. package/bn254.js +44 -32
  57. package/bn254.js.map +1 -1
  58. package/ed25519.d.ts +8 -5
  59. package/ed25519.d.ts.map +1 -1
  60. package/ed25519.js +67 -54
  61. package/ed25519.js.map +1 -1
  62. package/ed448.d.ts +10 -6
  63. package/ed448.d.ts.map +1 -1
  64. package/ed448.js +80 -57
  65. package/ed448.js.map +1 -1
  66. package/esm/_shortw_utils.d.ts +7 -5
  67. package/esm/_shortw_utils.d.ts.map +1 -1
  68. package/esm/_shortw_utils.js +2 -8
  69. package/esm/_shortw_utils.js.map +1 -1
  70. package/esm/abstract/bls.d.ts +60 -24
  71. package/esm/abstract/bls.d.ts.map +1 -1
  72. package/esm/abstract/bls.js +158 -109
  73. package/esm/abstract/bls.js.map +1 -1
  74. package/esm/abstract/curve.d.ts +44 -9
  75. package/esm/abstract/curve.d.ts.map +1 -1
  76. package/esm/abstract/curve.js +83 -8
  77. package/esm/abstract/curve.js.map +1 -1
  78. package/esm/abstract/edwards.d.ts +112 -25
  79. package/esm/abstract/edwards.d.ts.map +1 -1
  80. package/esm/abstract/edwards.js +138 -104
  81. package/esm/abstract/edwards.js.map +1 -1
  82. package/esm/abstract/fft.d.ts +12 -10
  83. package/esm/abstract/fft.d.ts.map +1 -1
  84. package/esm/abstract/fft.js +10 -11
  85. package/esm/abstract/fft.js.map +1 -1
  86. package/esm/abstract/hash-to-curve.d.ts +25 -11
  87. package/esm/abstract/hash-to-curve.d.ts.map +1 -1
  88. package/esm/abstract/hash-to-curve.js +17 -14
  89. package/esm/abstract/hash-to-curve.js.map +1 -1
  90. package/esm/abstract/modular.d.ts +24 -11
  91. package/esm/abstract/modular.d.ts.map +1 -1
  92. package/esm/abstract/modular.js +48 -19
  93. package/esm/abstract/modular.js.map +1 -1
  94. package/esm/abstract/montgomery.d.ts +1 -1
  95. package/esm/abstract/montgomery.d.ts.map +1 -1
  96. package/esm/abstract/montgomery.js +5 -4
  97. package/esm/abstract/montgomery.js.map +1 -1
  98. package/esm/abstract/poseidon.d.ts +5 -13
  99. package/esm/abstract/poseidon.d.ts.map +1 -1
  100. package/esm/abstract/poseidon.js +12 -7
  101. package/esm/abstract/poseidon.js.map +1 -1
  102. package/esm/abstract/tower.d.ts +20 -46
  103. package/esm/abstract/tower.d.ts.map +1 -1
  104. package/esm/abstract/tower.js +9 -3
  105. package/esm/abstract/tower.js.map +1 -1
  106. package/esm/abstract/utils.d.ts +1 -115
  107. package/esm/abstract/utils.d.ts.map +1 -1
  108. package/esm/abstract/utils.js +3 -344
  109. package/esm/abstract/utils.js.map +1 -1
  110. package/esm/abstract/weierstrass.d.ts +132 -76
  111. package/esm/abstract/weierstrass.d.ts.map +1 -1
  112. package/esm/abstract/weierstrass.js +460 -400
  113. package/esm/abstract/weierstrass.js.map +1 -1
  114. package/esm/bls12-381.d.ts +2 -0
  115. package/esm/bls12-381.d.ts.map +1 -1
  116. package/esm/bls12-381.js +503 -465
  117. package/esm/bls12-381.js.map +1 -1
  118. package/esm/bn254.d.ts +2 -0
  119. package/esm/bn254.d.ts.map +1 -1
  120. package/esm/bn254.js +41 -29
  121. package/esm/bn254.js.map +1 -1
  122. package/esm/ed25519.d.ts +8 -5
  123. package/esm/ed25519.d.ts.map +1 -1
  124. package/esm/ed25519.js +62 -49
  125. package/esm/ed25519.js.map +1 -1
  126. package/esm/ed448.d.ts +10 -6
  127. package/esm/ed448.d.ts.map +1 -1
  128. package/esm/ed448.js +74 -51
  129. package/esm/ed448.js.map +1 -1
  130. package/esm/misc.d.ts.map +1 -1
  131. package/esm/misc.js +31 -26
  132. package/esm/misc.js.map +1 -1
  133. package/esm/nist.d.ts +7 -16
  134. package/esm/nist.d.ts.map +1 -1
  135. package/esm/nist.js +86 -97
  136. package/esm/nist.js.map +1 -1
  137. package/esm/p256.d.ts +3 -3
  138. package/esm/p384.d.ts +3 -3
  139. package/esm/p521.d.ts +3 -3
  140. package/esm/secp256k1.d.ts +6 -6
  141. package/esm/secp256k1.d.ts.map +1 -1
  142. package/esm/secp256k1.js +43 -40
  143. package/esm/secp256k1.js.map +1 -1
  144. package/esm/utils.d.ts +96 -0
  145. package/esm/utils.d.ts.map +1 -0
  146. package/esm/utils.js +279 -0
  147. package/esm/utils.js.map +1 -0
  148. package/misc.d.ts.map +1 -1
  149. package/misc.js +35 -30
  150. package/misc.js.map +1 -1
  151. package/nist.d.ts +7 -16
  152. package/nist.d.ts.map +1 -1
  153. package/nist.js +86 -97
  154. package/nist.js.map +1 -1
  155. package/p256.d.ts +3 -3
  156. package/p384.d.ts +3 -3
  157. package/p521.d.ts +3 -3
  158. package/package.json +14 -5
  159. package/secp256k1.d.ts +6 -6
  160. package/secp256k1.d.ts.map +1 -1
  161. package/secp256k1.js +46 -43
  162. package/secp256k1.js.map +1 -1
  163. package/src/_shortw_utils.ts +5 -15
  164. package/src/abstract/bls.ts +260 -145
  165. package/src/abstract/curve.ts +115 -13
  166. package/src/abstract/edwards.ts +279 -138
  167. package/src/abstract/fft.ts +30 -19
  168. package/src/abstract/hash-to-curve.ts +51 -27
  169. package/src/abstract/modular.ts +49 -28
  170. package/src/abstract/montgomery.ts +9 -7
  171. package/src/abstract/poseidon.ts +22 -18
  172. package/src/abstract/tower.ts +36 -67
  173. package/src/abstract/utils.ts +3 -378
  174. package/src/abstract/weierstrass.ts +700 -453
  175. package/src/bls12-381.ts +540 -489
  176. package/src/bn254.ts +47 -35
  177. package/src/ed25519.ts +80 -64
  178. package/src/ed448.ts +129 -92
  179. package/src/misc.ts +39 -34
  180. package/src/nist.ts +138 -127
  181. package/src/p256.ts +3 -3
  182. package/src/p384.ts +3 -3
  183. package/src/p521.ts +3 -3
  184. package/src/secp256k1.ts +58 -46
  185. package/src/utils.ts +328 -0
  186. package/utils.d.ts +96 -0
  187. package/utils.d.ts.map +1 -0
  188. package/utils.js +313 -0
  189. package/utils.js.map +1 -0
@@ -1,48 +1,8 @@
1
- /**
2
- * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.
3
- *
4
- * ### Parameters
5
- *
6
- * To initialize a weierstrass curve, one needs to pass following params:
7
- *
8
- * * a: formula param
9
- * * b: formula param
10
- * * Fp: finite field of prime characteristic P; may be complex (Fp2). Arithmetics is done in field
11
- * * n: order of prime subgroup a.k.a total amount of valid curve points
12
- * * Gx: Base point (x, y) aka generator point. Gx = x coordinate
13
- * * Gy: ...y coordinate
14
- * * h: cofactor, usually 1. h*n = curve group order (n is only subgroup order)
15
- * * lowS: whether to enable (default) or disable "low-s" non-malleable signatures
16
- *
17
- * ### Design rationale for types
18
- *
19
- * * Interaction between classes from different curves should fail:
20
- * `k256.Point.BASE.add(p256.Point.BASE)`
21
- * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime
22
- * * Different calls of `curve()` would return different classes -
23
- * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,
24
- * it won't affect others
25
- *
26
- * TypeScript can't infer types for classes created inside a function. Classes is one instance
27
- * of nominative types in TypeScript and interfaces only check for shape, so it's hard to create
28
- * unique type for every function call.
29
- *
30
- * We can use generic types via some param, like curve opts, but that would:
31
- * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)
32
- * which is hard to debug.
33
- * 2. Params can be generic and we can't enforce them to be constant value:
34
- * if somebody creates curve from non-constant params,
35
- * it would be allowed to interact with other curves with non-constant params
36
- *
37
- * @todo https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol
38
- * @module
39
- */
40
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
1
+ import { type CHash, type Hex, type PrivKey } from '../utils.ts';
41
2
  import { type AffinePoint, type BasicCurve, type Group, type GroupConstructor } from './curve.ts';
42
- import { type IField } from './modular.ts';
43
- import { type CHash, type Hex, type PrivKey } from './utils.ts';
3
+ import { type IField, type NLength } from './modular.ts';
44
4
  export type { AffinePoint };
45
- type HmacFnSync = (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;
5
+ export type HmacFnSync = (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;
46
6
  /**
47
7
  * When Weierstrass curve has `a=0`, it becomes Koblitz curve.
48
8
  * Koblitz curves allow using **efficiently-computable GLV endomorphism ψ**.
@@ -93,28 +53,58 @@ export type SignOpts = {
93
53
  export type VerOpts = {
94
54
  lowS?: boolean;
95
55
  prehash?: boolean;
96
- format?: 'compact' | 'der' | undefined;
56
+ format?: 'compact' | 'der' | 'js' | undefined;
97
57
  };
58
+ /** Instance methods for 3D XYZ points. */
98
59
  export interface ProjPointType<T> extends Group<ProjPointType<T>> {
60
+ /** projective x coordinate. Note: different from .x */
99
61
  readonly px: T;
62
+ /** projective y coordinate. Note: different from .y */
100
63
  readonly py: T;
64
+ /** projective z coordinate */
101
65
  readonly pz: T;
66
+ /** affine x coordinate */
102
67
  get x(): T;
68
+ /** affine y coordinate */
103
69
  get y(): T;
104
- toAffine(iz?: T): AffinePoint<T>;
105
- toHex(isCompressed?: boolean): string;
106
- toRawBytes(isCompressed?: boolean): Uint8Array;
107
70
  assertValidity(): void;
108
- hasEvenY(): boolean;
71
+ clearCofactor(): ProjPointType<T>;
72
+ is0(): boolean;
73
+ isTorsionFree(): boolean;
109
74
  multiplyUnsafe(scalar: bigint): ProjPointType<T>;
75
+ /**
76
+ * Massively speeds up `p.multiply(n)` by using wnaf precompute tables (caching).
77
+ * Table generation takes 30MB of ram and 10ms on high-end CPU, but may take
78
+ * much longer on slow devices.
79
+ * Actual generation will happen on first call of `.multiply()`.
80
+ * By default, BASE point is precomputed.
81
+ * @param windowSize - table window size
82
+ * @param isLazy - (default true) allows to defer generation
83
+ */
84
+ precompute(windowSize?: number, isLazy?: boolean): ProjPointType<T>;
85
+ /** Converts 3D XYZ projective point to 2D xy affine coordinates */
86
+ toAffine(invertedZ?: T): AffinePoint<T>;
87
+ /** Encodes point using IEEE P1363 (DER) encoding. First byte is 2/3/4. Default = isCompressed. */
88
+ toBytes(isCompressed?: boolean): Uint8Array;
89
+ toHex(isCompressed?: boolean): string;
90
+ /** @deprecated use `toBytes` */
91
+ toRawBytes(isCompressed?: boolean): Uint8Array;
92
+ /** @deprecated use `multiplyUnsafe` */
110
93
  multiplyAndAddUnsafe(Q: ProjPointType<T>, a: bigint, b: bigint): ProjPointType<T> | undefined;
111
- isTorsionFree(): boolean;
112
- clearCofactor(): ProjPointType<T>;
94
+ /** @deprecated use `p.y % 2n === 0n` */
95
+ hasEvenY(): boolean;
96
+ /** @deprecated use `p.precompute(windowSize)` */
113
97
  _setWindowSize(windowSize: number): void;
114
98
  }
99
+ /** Static methods for 3D XYZ points. */
115
100
  export interface ProjConstructor<T> extends GroupConstructor<ProjPointType<T>> {
101
+ Fp: IField<T>;
102
+ Fn: IField<bigint>;
103
+ /** Does NOT validate if the point is valid. Use `.assertValidity()`. */
116
104
  new (x: T, y: T, z: T): ProjPointType<T>;
105
+ /** Does NOT validate if the point is valid. Use `.assertValidity()`. */
117
106
  fromAffine(p: AffinePoint<T>): ProjPointType<T>;
107
+ fromBytes(encodedPoint: Uint8Array): ProjPointType<T>;
118
108
  fromHex(hex: Hex): ProjPointType<T>;
119
109
  fromPrivateKey(privateKey: PrivKey): ProjPointType<T>;
120
110
  normalizeZ(points: ProjPointType<T>[]): ProjPointType<T>[];
@@ -124,18 +114,79 @@ export type CurvePointsType<T> = BasicWCurve<T> & {
124
114
  fromBytes?: (bytes: Uint8Array) => AffinePoint<T>;
125
115
  toBytes?: (c: ProjConstructor<T>, point: ProjPointType<T>, isCompressed: boolean) => Uint8Array;
126
116
  };
127
- export type CurvePointsTypeWithLength<T> = Readonly<CurvePointsType<T> & {
128
- nByteLength: number;
129
- nBitLength: number;
130
- }>;
131
- declare function validatePointOpts<T>(curve: CurvePointsType<T>): CurvePointsTypeWithLength<T>;
117
+ export type CurvePointsTypeWithLength<T> = Readonly<CurvePointsType<T> & Partial<NLength>>;
132
118
  export type CurvePointsRes<T> = {
133
- CURVE: ReturnType<typeof validatePointOpts<T>>;
119
+ /** @deprecated import individual CURVE params */
120
+ CURVE: CurvePointsType<T>;
121
+ Point: ProjConstructor<T>;
122
+ /** @deprecated use `Point` */
134
123
  ProjectivePoint: ProjConstructor<T>;
124
+ /** @deprecated */
135
125
  normPrivateKeyToScalar: (key: PrivKey) => bigint;
126
+ /** @deprecated */
136
127
  weierstrassEquation: (x: T) => T;
128
+ /** @deprecated use `Point.Fn.isValidNot0(num)` */
137
129
  isWithinCurveOrder: (num: bigint) => boolean;
138
130
  };
131
+ /**
132
+ * Weierstrass curve options.
133
+ *
134
+ * * p: prime characteristic (order) of finite field, in which arithmetics is done
135
+ * * n: order of prime subgroup a.k.a total amount of valid curve points
136
+ * * h: cofactor, usually 1. h*n is group order; n is subgroup order
137
+ * * a: formula param, must be in field of p
138
+ * * b: formula param, must be in field of p
139
+ * * Gx: x coordinate of generator point a.k.a. base point
140
+ * * Gy: y coordinate of generator point
141
+ */
142
+ export type WeierstrassOpts<T> = Readonly<{
143
+ p: bigint;
144
+ n: bigint;
145
+ h: bigint;
146
+ a: T;
147
+ b: T;
148
+ Gx: T;
149
+ Gy: T;
150
+ }>;
151
+ export type WeierstrassExtraOpts<T> = Partial<{
152
+ Fp: IField<T>;
153
+ Fn: IField<bigint>;
154
+ allowedPrivateKeyLengths: readonly number[];
155
+ allowInfinityPoint: boolean;
156
+ endo: EndomorphismOpts;
157
+ wrapPrivateKey: boolean;
158
+ isTorsionFree: (c: ProjConstructor<T>, point: ProjPointType<T>) => boolean;
159
+ clearCofactor: (c: ProjConstructor<T>, point: ProjPointType<T>) => ProjPointType<T>;
160
+ fromBytes: (bytes: Uint8Array) => AffinePoint<T>;
161
+ toBytes: (c: ProjConstructor<T>, point: ProjPointType<T>, isCompressed: boolean) => Uint8Array;
162
+ }>;
163
+ /**
164
+ * Options for ECDSA signatures over a Weierstrass curve.
165
+ */
166
+ export type ECDSAOpts = {
167
+ hash: CHash;
168
+ hmac?: HmacFnSync;
169
+ randomBytes?: (bytesLength?: number) => Uint8Array;
170
+ lowS?: boolean;
171
+ bits2int?: (bytes: Uint8Array) => bigint;
172
+ bits2int_modN?: (bytes: Uint8Array) => bigint;
173
+ };
174
+ /** ECDSA is only supported for prime fields, not Fp2 (extension fields). */
175
+ export interface ECDSA {
176
+ getPublicKey: (privateKey: PrivKey, isCompressed?: boolean) => Uint8Array;
177
+ getSharedSecret: (privateA: PrivKey, publicB: Hex, isCompressed?: boolean) => Uint8Array;
178
+ sign: (msgHash: Hex, privKey: PrivKey, opts?: SignOpts) => RecoveredSignatureType;
179
+ verify: (signature: Hex | SignatureLike, msgHash: Hex, publicKey: Hex, opts?: VerOpts) => boolean;
180
+ Point: ProjConstructor<bigint>;
181
+ Signature: SignatureConstructor;
182
+ utils: {
183
+ isValidPrivateKey(privateKey: PrivKey): boolean;
184
+ randomPrivateKey: () => Uint8Array;
185
+ normPrivateKeyToScalar: (key: PrivKey) => bigint;
186
+ /** @deprecated */
187
+ precompute: (windowSize?: number, point?: ProjPointType<bigint>) => ProjPointType<bigint>;
188
+ };
189
+ }
139
190
  export declare class DERErr extends Error {
140
191
  constructor(m?: string);
141
192
  }
@@ -169,7 +220,11 @@ export type IDER = {
169
220
  * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html
170
221
  */
171
222
  export declare const DER: IDER;
172
- export declare function weierstrassPoints<T>(opts: CurvePointsType<T>): CurvePointsRes<T>;
223
+ export declare function _legacyHelperEquat<T>(Fp: IField<T>, a: T, b: T): (x: T) => T;
224
+ export declare function _legacyHelperNormPriv(Fn: IField<bigint>, allowedPrivateKeyLengths?: readonly number[], wrapPrivateKey?: boolean): (key: PrivKey) => bigint;
225
+ export declare function weierstrassN<T>(CURVE: WeierstrassOpts<T>, curveOpts?: WeierstrassExtraOpts<T>): ProjConstructor<T>;
226
+ /** @deprecated use `weierstrassN` */
227
+ export declare function weierstrassPoints<T>(c: CurvePointsTypeWithLength<T>): CurvePointsRes<T>;
173
228
  export interface SignatureType {
174
229
  readonly r: bigint;
175
230
  readonly s: bigint;
@@ -181,40 +236,38 @@ export interface SignatureType {
181
236
  recoverPublicKey(msgHash: Hex): ProjPointType<bigint>;
182
237
  toCompactRawBytes(): Uint8Array;
183
238
  toCompactHex(): string;
184
- toDERRawBytes(isCompressed?: boolean): Uint8Array;
185
- toDERHex(isCompressed?: boolean): string;
239
+ toDERRawBytes(): Uint8Array;
240
+ toDERHex(): string;
186
241
  }
187
242
  export type RecoveredSignatureType = SignatureType & {
188
243
  readonly recovery: number;
189
244
  };
190
245
  export type SignatureConstructor = {
191
- new (r: bigint, s: bigint): SignatureType;
246
+ new (r: bigint, s: bigint, recovery?: number): SignatureType;
192
247
  fromCompact(hex: Hex): SignatureType;
193
248
  fromDER(hex: Hex): SignatureType;
194
249
  };
195
- type SignatureLike = {
250
+ export type SignatureLike = {
196
251
  r: bigint;
197
252
  s: bigint;
198
253
  };
199
254
  export type PubKey = Hex | ProjPointType<bigint>;
200
255
  export type CurveType = BasicWCurve<bigint> & {
201
256
  hash: CHash;
202
- hmac: HmacFnSync;
203
- randomBytes: (bytesLength?: number) => Uint8Array;
257
+ hmac?: HmacFnSync;
258
+ randomBytes?: (bytesLength?: number) => Uint8Array;
204
259
  lowS?: boolean;
205
260
  bits2int?: (bytes: Uint8Array) => bigint;
206
261
  bits2int_modN?: (bytes: Uint8Array) => bigint;
207
262
  };
208
- declare function validateOpts(curve: CurveType): Readonly<CurveType & {
209
- nByteLength: number;
210
- nBitLength: number;
211
- }>;
212
263
  export type CurveFn = {
213
- CURVE: ReturnType<typeof validateOpts>;
264
+ CURVE: CurvePointsType<bigint>;
214
265
  getPublicKey: (privateKey: PrivKey, isCompressed?: boolean) => Uint8Array;
215
266
  getSharedSecret: (privateA: PrivKey, publicB: Hex, isCompressed?: boolean) => Uint8Array;
216
267
  sign: (msgHash: Hex, privKey: PrivKey, opts?: SignOpts) => RecoveredSignatureType;
217
268
  verify: (signature: Hex | SignatureLike, msgHash: Hex, publicKey: Hex, opts?: VerOpts) => boolean;
269
+ Point: ProjConstructor<bigint>;
270
+ /** @deprecated use `Point` */
218
271
  ProjectivePoint: ProjConstructor<bigint>;
219
272
  Signature: SignatureConstructor;
220
273
  utils: {
@@ -224,14 +277,17 @@ export type CurveFn = {
224
277
  precompute: (windowSize?: number, point?: ProjPointType<bigint>) => ProjPointType<bigint>;
225
278
  };
226
279
  };
227
- /**
228
- * Creates short weierstrass curve and ECDSA signature methods for it.
229
- * @example
230
- * import { Field } from '@noble/curves/abstract/modular';
231
- * // Before that, define BigInt-s: a, b, p, n, Gx, Gy
232
- * const curve = weierstrass({ a, b, Fp: Field(p), n, Gx, Gy, h: 1n })
233
- */
234
- export declare function weierstrass(curveDef: CurveType): CurveFn;
280
+ export declare function ecdsa(Point: ProjConstructor<bigint>, ecdsaOpts: ECDSAOpts, curveOpts?: WeierstrassExtraOpts<bigint>): ECDSA;
281
+ export type WsPointComposed<T> = {
282
+ CURVE: WeierstrassOpts<T>;
283
+ curveOpts: WeierstrassExtraOpts<T>;
284
+ };
285
+ export type WsComposed = {
286
+ CURVE: WeierstrassOpts<bigint>;
287
+ curveOpts: WeierstrassExtraOpts<bigint>;
288
+ ecdsaOpts: ECDSAOpts;
289
+ };
290
+ export declare function weierstrass(c: CurveType): CurveFn;
235
291
  /**
236
292
  * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.
237
293
  * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.
@@ -1 +1 @@
1
- {"version":3,"file":"weierstrass.d.ts","sourceRoot":"","sources":["../src/abstract/weierstrass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"weierstrass.d.ts","sourceRoot":"","sources":["../src/abstract/weierstrass.ts"],"names":[],"mappings":"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"}