@noble/curves 2.0.1 → 2.2.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 (110) hide show
  1. package/README.md +214 -122
  2. package/abstract/bls.d.ts +299 -16
  3. package/abstract/bls.d.ts.map +1 -1
  4. package/abstract/bls.js +82 -22
  5. package/abstract/bls.js.map +1 -1
  6. package/abstract/curve.d.ts +274 -27
  7. package/abstract/curve.d.ts.map +1 -1
  8. package/abstract/curve.js +177 -23
  9. package/abstract/curve.js.map +1 -1
  10. package/abstract/edwards.d.ts +166 -30
  11. package/abstract/edwards.d.ts.map +1 -1
  12. package/abstract/edwards.js +221 -86
  13. package/abstract/edwards.js.map +1 -1
  14. package/abstract/fft.d.ts +322 -10
  15. package/abstract/fft.d.ts.map +1 -1
  16. package/abstract/fft.js +154 -12
  17. package/abstract/fft.js.map +1 -1
  18. package/abstract/frost.d.ts +293 -0
  19. package/abstract/frost.d.ts.map +1 -0
  20. package/abstract/frost.js +704 -0
  21. package/abstract/frost.js.map +1 -0
  22. package/abstract/hash-to-curve.d.ts +173 -24
  23. package/abstract/hash-to-curve.d.ts.map +1 -1
  24. package/abstract/hash-to-curve.js +170 -31
  25. package/abstract/hash-to-curve.js.map +1 -1
  26. package/abstract/modular.d.ts +429 -37
  27. package/abstract/modular.d.ts.map +1 -1
  28. package/abstract/modular.js +414 -119
  29. package/abstract/modular.js.map +1 -1
  30. package/abstract/montgomery.d.ts +83 -12
  31. package/abstract/montgomery.d.ts.map +1 -1
  32. package/abstract/montgomery.js +32 -7
  33. package/abstract/montgomery.js.map +1 -1
  34. package/abstract/oprf.d.ts +164 -91
  35. package/abstract/oprf.d.ts.map +1 -1
  36. package/abstract/oprf.js +88 -29
  37. package/abstract/oprf.js.map +1 -1
  38. package/abstract/poseidon.d.ts +138 -7
  39. package/abstract/poseidon.d.ts.map +1 -1
  40. package/abstract/poseidon.js +178 -15
  41. package/abstract/poseidon.js.map +1 -1
  42. package/abstract/tower.d.ts +122 -3
  43. package/abstract/tower.d.ts.map +1 -1
  44. package/abstract/tower.js +323 -139
  45. package/abstract/tower.js.map +1 -1
  46. package/abstract/weierstrass.d.ts +339 -76
  47. package/abstract/weierstrass.d.ts.map +1 -1
  48. package/abstract/weierstrass.js +395 -205
  49. package/abstract/weierstrass.js.map +1 -1
  50. package/bls12-381.d.ts +16 -2
  51. package/bls12-381.d.ts.map +1 -1
  52. package/bls12-381.js +199 -209
  53. package/bls12-381.js.map +1 -1
  54. package/bn254.d.ts +11 -2
  55. package/bn254.d.ts.map +1 -1
  56. package/bn254.js +93 -38
  57. package/bn254.js.map +1 -1
  58. package/ed25519.d.ts +125 -14
  59. package/ed25519.d.ts.map +1 -1
  60. package/ed25519.js +202 -40
  61. package/ed25519.js.map +1 -1
  62. package/ed448.d.ts +108 -14
  63. package/ed448.d.ts.map +1 -1
  64. package/ed448.js +194 -42
  65. package/ed448.js.map +1 -1
  66. package/index.js +7 -1
  67. package/index.js.map +1 -1
  68. package/misc.d.ts +106 -7
  69. package/misc.d.ts.map +1 -1
  70. package/misc.js +141 -32
  71. package/misc.js.map +1 -1
  72. package/nist.d.ts +112 -11
  73. package/nist.d.ts.map +1 -1
  74. package/nist.js +139 -17
  75. package/nist.js.map +1 -1
  76. package/package.json +11 -6
  77. package/secp256k1.d.ts +92 -15
  78. package/secp256k1.d.ts.map +1 -1
  79. package/secp256k1.js +211 -28
  80. package/secp256k1.js.map +1 -1
  81. package/src/abstract/bls.ts +350 -67
  82. package/src/abstract/curve.ts +327 -44
  83. package/src/abstract/edwards.ts +367 -143
  84. package/src/abstract/fft.ts +369 -36
  85. package/src/abstract/frost.ts +1092 -0
  86. package/src/abstract/hash-to-curve.ts +255 -56
  87. package/src/abstract/modular.ts +591 -144
  88. package/src/abstract/montgomery.ts +114 -30
  89. package/src/abstract/oprf.ts +383 -194
  90. package/src/abstract/poseidon.ts +235 -35
  91. package/src/abstract/tower.ts +428 -159
  92. package/src/abstract/weierstrass.ts +710 -312
  93. package/src/bls12-381.ts +239 -236
  94. package/src/bn254.ts +107 -46
  95. package/src/ed25519.ts +227 -55
  96. package/src/ed448.ts +227 -57
  97. package/src/index.ts +7 -1
  98. package/src/misc.ts +154 -35
  99. package/src/nist.ts +143 -20
  100. package/src/secp256k1.ts +284 -41
  101. package/src/utils.ts +583 -81
  102. package/src/webcrypto.ts +302 -73
  103. package/utils.d.ts +457 -24
  104. package/utils.d.ts.map +1 -1
  105. package/utils.js +410 -53
  106. package/utils.js.map +1 -1
  107. package/webcrypto.d.ts +167 -25
  108. package/webcrypto.d.ts.map +1 -1
  109. package/webcrypto.js +165 -58
  110. package/webcrypto.js.map +1 -1
package/abstract/bls.d.ts CHANGED
@@ -1,60 +1,219 @@
1
+ /**
2
+ * BLS != BLS.
3
+ * The file implements BLS (Boneh-Lynn-Shacham) signatures.
4
+ * Used in both BLS (Barreto-Lynn-Scott) and BN (Barreto-Naehrig)
5
+ * families of pairing-friendly curves.
6
+ * Consists of two curves: G1 and G2:
7
+ * - G1 is a subgroup of (x, y) E(Fq) over y² = x³ + 4.
8
+ * - G2 is a subgroup of ((x₁, x₂+i), (y₁, y₂+i)) E(Fq²) over y² = x³ + 4(1 + i) where i is √-1
9
+ * - Gt, created by bilinear (ate) pairing e(G1, G2), consists of p-th roots of unity in
10
+ * Fq^k where k is embedding degree. Only degree 12 is currently supported, 24 is not.
11
+ * Pairing is used to aggregate and verify signatures.
12
+ * There are two modes of operation:
13
+ * - Long signatures: X-byte keys + 2X-byte sigs (G1 keys + G2 sigs).
14
+ * - Short signatures: 2X-byte keys + X-byte sigs (G2 keys + G1 sigs).
15
+ * @module
16
+ **/
17
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
18
+ import { type TArg, type TRet } from '../utils.ts';
1
19
  import { type CurveLengths } from './curve.ts';
2
- import { type H2CHasher, type H2CHashOpts, type H2COpts, type MapToCurve } from './hash-to-curve.ts';
20
+ import { type H2CHasher, type H2COpts, type MapToCurve } from './hash-to-curve.ts';
3
21
  import { type IField } from './modular.ts';
4
22
  import type { Fp12, Fp12Bls, Fp2, Fp2Bls, Fp6Bls } from './tower.ts';
5
23
  import { type WeierstrassPoint, type WeierstrassPointCons } from './weierstrass.ts';
6
24
  type Fp = bigint;
25
+ /**
26
+ * Twist convention used by the pairing formulas for a concrete curve family.
27
+ * BLS12-381 uses a multiplicative twist, while BN254 uses a divisive one.
28
+ */
7
29
  export type BlsTwistType = 'multiplicative' | 'divisive';
30
+ /**
31
+ * Codec exposed as `curve.shortSignatures.Signature`.
32
+ * Use it to parse or serialize G1 signatures in short-signature mode.
33
+ * In this mode, public keys live in G2.
34
+ */
8
35
  export type BlsShortSignatureCoder<Fp> = {
9
- fromBytes(bytes: Uint8Array): WeierstrassPoint<Fp>;
36
+ /**
37
+ * Parse a compressed signature from raw bytes.
38
+ * @param bytes - Compressed signature bytes.
39
+ * @returns Parsed signature point.
40
+ */
41
+ fromBytes(bytes: TArg<Uint8Array>): WeierstrassPoint<Fp>;
42
+ /**
43
+ * Parse a compressed signature from a hex string.
44
+ * @param hex - Compressed signature hex string.
45
+ * @returns Parsed signature point.
46
+ */
10
47
  fromHex(hex: string): WeierstrassPoint<Fp>;
11
- toBytes(point: WeierstrassPoint<Fp>): Uint8Array;
48
+ /**
49
+ * Encode a signature point into compressed bytes.
50
+ * @param point - Signature point.
51
+ * @returns Compressed signature bytes.
52
+ */
53
+ toBytes(point: WeierstrassPoint<Fp>): TRet<Uint8Array>;
54
+ /**
55
+ * Encode a signature point into a hex string.
56
+ * @param point - Signature point.
57
+ * @returns Compressed signature hex.
58
+ */
12
59
  toHex(point: WeierstrassPoint<Fp>): string;
13
60
  };
61
+ /**
62
+ * Codec exposed as `curve.longSignatures.Signature`.
63
+ * Use it to parse or serialize G2 signatures in long-signature mode.
64
+ * In this mode, public keys live in G1.
65
+ */
14
66
  export type BlsLongSignatureCoder<Fp> = {
15
- fromBytes(bytes: Uint8Array): WeierstrassPoint<Fp>;
67
+ /**
68
+ * Parse a compressed signature from raw bytes.
69
+ * @param bytes - Compressed signature bytes.
70
+ * @returns Parsed signature point.
71
+ */
72
+ fromBytes(bytes: TArg<Uint8Array>): WeierstrassPoint<Fp>;
73
+ /**
74
+ * Parse a compressed signature from a hex string.
75
+ * @param hex - Compressed signature hex string.
76
+ * @returns Parsed signature point.
77
+ */
16
78
  fromHex(hex: string): WeierstrassPoint<Fp>;
17
- toBytes(point: WeierstrassPoint<Fp>): Uint8Array;
79
+ /**
80
+ * Encode a signature point into compressed bytes.
81
+ * @param point - Signature point.
82
+ * @returns Compressed signature bytes.
83
+ */
84
+ toBytes(point: WeierstrassPoint<Fp>): TRet<Uint8Array>;
85
+ /**
86
+ * Encode a signature point into a hex string.
87
+ * @param point - Signature point.
88
+ * @returns Compressed signature hex.
89
+ */
18
90
  toHex(point: WeierstrassPoint<Fp>): string;
19
91
  };
92
+ /** Tower fields needed by pairing code, hash-to-curve, and subgroup arithmetic. */
20
93
  export type BlsFields = {
94
+ /** Base field of G1 coordinates. */
21
95
  Fp: IField<Fp>;
96
+ /** Scalar field used for secret scalars and subgroup order arithmetic. */
22
97
  Fr: IField<bigint>;
98
+ /** Quadratic extension field used by G2. */
23
99
  Fp2: Fp2Bls;
100
+ /** Sextic extension field used inside pairing arithmetic. */
24
101
  Fp6: Fp6Bls;
102
+ /** Degree-12 extension field that contains the GT target group. */
25
103
  Fp12: Fp12Bls;
26
104
  };
105
+ /**
106
+ * Callback used by pairing post-processing hooks to add one more G2 point to the Miller-loop state.
107
+ * @param Rx - Current projective X coordinate.
108
+ * @param Ry - Current projective Y coordinate.
109
+ * @param Rz - Current projective Z coordinate.
110
+ * @param Qx - G2 affine x coordinate.
111
+ * @param Qy - G2 affine y coordinate.
112
+ * @returns Updated projective accumulator coordinates.
113
+ */
27
114
  export type BlsPostPrecomputePointAddFn = (Rx: Fp2, Ry: Fp2, Rz: Fp2, Qx: Fp2, Qy: Fp2) => {
28
115
  Rx: Fp2;
29
116
  Ry: Fp2;
30
117
  Rz: Fp2;
31
118
  };
119
+ /**
120
+ * Hook for curve-specific pairing cleanup after the Miller loop precomputes are built.
121
+ * @param Rx - Current projective X coordinate.
122
+ * @param Ry - Current projective Y coordinate.
123
+ * @param Rz - Current projective Z coordinate.
124
+ * @param Qx - G2 affine x coordinate.
125
+ * @param Qy - G2 affine y coordinate.
126
+ * @param pointAdd - Callback used to fold one more point into the accumulator.
127
+ */
32
128
  export type BlsPostPrecomputeFn = (Rx: Fp2, Ry: Fp2, Rz: Fp2, Qx: Fp2, Qy: Fp2, pointAdd: BlsPostPrecomputePointAddFn) => void;
129
+ /** Low-level pairing helpers shared by BLS curve bundles. */
33
130
  export type BlsPairing = {
131
+ /** Byte lengths for keys and signatures exposed by this pairing family. */
34
132
  lengths: CurveLengths;
133
+ /** Scalar field used by the pairing and signing helpers. */
35
134
  Fr: IField<bigint>;
135
+ /** Target field used for the GT result of pairings. */
36
136
  Fp12: Fp12Bls;
137
+ /**
138
+ * Build Miller-loop precomputes for one G2 point.
139
+ * @param p - G2 point to precompute.
140
+ * @returns Pairing precompute table.
141
+ */
37
142
  calcPairingPrecomputes: (p: WeierstrassPoint<Fp2>) => Precompute;
143
+ /**
144
+ * Evaluate a batch of Miller loops from precomputed line coefficients.
145
+ * @param pairs - Precomputed Miller-loop inputs.
146
+ * @returns Accumulated GT value before or after final exponentiation.
147
+ */
38
148
  millerLoopBatch: (pairs: [Precompute, Fp, Fp][]) => Fp12;
149
+ /**
150
+ * Pair one G1 point with one G2 point.
151
+ * @param P - G1 point.
152
+ * @param Q - G2 point.
153
+ * @param withFinalExponent - Whether to apply the final exponentiation step.
154
+ * @returns GT pairing result.
155
+ * @throws If either point is the point at infinity. {@link Error}
156
+ */
39
157
  pairing: (P: WeierstrassPoint<Fp>, Q: WeierstrassPoint<Fp2>, withFinalExponent?: boolean) => Fp12;
158
+ /**
159
+ * Pair many G1/G2 pairs in one batch.
160
+ * @param pairs - Point pairs to accumulate.
161
+ * @param withFinalExponent - Whether to apply the final exponentiation step.
162
+ * @returns GT pairing result. Empty input returns the multiplicative identity in GT.
163
+ */
40
164
  pairingBatch: (pairs: {
41
165
  g1: WeierstrassPoint<Fp>;
42
166
  g2: WeierstrassPoint<Fp2>;
43
167
  }[], withFinalExponent?: boolean) => Fp12;
44
- randomSecretKey: (seed?: Uint8Array) => Uint8Array;
168
+ /**
169
+ * Generate a random secret key for this pairing family.
170
+ * @param seed - Optional seed material.
171
+ * @returns Secret key bytes.
172
+ */
173
+ randomSecretKey: (seed?: TArg<Uint8Array>) => TRet<Uint8Array>;
45
174
  };
175
+ /**
176
+ * Parameters that define the Miller-loop shape and twist handling
177
+ * for a concrete pairing family.
178
+ */
46
179
  export type BlsPairingParams = {
180
+ /** Signed loop parameter used by the Miller loop. */
47
181
  ateLoopSize: bigint;
182
+ /** Whether the signed Miller-loop parameter is negative. */
48
183
  xNegative: boolean;
184
+ /**
185
+ * Twist convention used by the pairing formulas.
186
+ * BLS12-381 is multiplicative; BN254 is divisive.
187
+ */
49
188
  twistType: BlsTwistType;
50
- randomBytes?: (len?: number) => Uint8Array;
189
+ /**
190
+ * Optional RNG override used by helper constructors.
191
+ * Receives the requested byte length and returns random bytes.
192
+ */
193
+ randomBytes?: (len?: number) => TRet<Uint8Array>;
194
+ /**
195
+ * Optional hook for curve-specific untwisting after precomputation.
196
+ * Used by BN254 after the Miller loop.
197
+ */
51
198
  postPrecompute?: BlsPostPrecomputeFn;
52
199
  };
200
+ /** Hash-to-curve settings shared by the G1 and G2 hashers inside a BLS curve bundle. */
53
201
  export type BlsHasherParams = {
202
+ /**
203
+ * Optional map-to-curve override for G1.
204
+ * Receives the hash-to-field tuple and returns one affine G1 point.
205
+ */
54
206
  mapToG1?: MapToCurve<Fp>;
207
+ /**
208
+ * Optional map-to-curve override for G2.
209
+ * Receives the hash-to-field tuple and returns one affine G2 point.
210
+ */
55
211
  mapToG2?: MapToCurve<Fp2>;
212
+ /** Shared baseline hash-to-curve options. */
56
213
  hasherOpts: H2COpts;
214
+ /** G1-specific hash-to-curve options merged on top of `hasherOpts`. */
57
215
  hasherOptsG1: H2COpts;
216
+ /** G2-specific hash-to-curve options merged on top of `hasherOpts`. */
58
217
  hasherOptsG2: H2COpts;
59
218
  };
60
219
  type PrecomputeSingle = [Fp2, Fp2, Fp2][];
@@ -65,16 +224,39 @@ type Precompute = PrecomputeSingle[];
65
224
  * - G2 is a subgroup of ((x₁, x₂+i), (y₁, y₂+i)) E(Fq²) over y² = x³ + 4(1 + i) where i is √-1
66
225
  */
67
226
  export interface BlsCurvePair {
227
+ /** Byte lengths for keys and signatures exposed by this curve family. */
68
228
  lengths: CurveLengths;
229
+ /**
230
+ * Shared Miller-loop batch evaluator.
231
+ * @param pairs - Precomputed Miller-loop inputs.
232
+ * @returns Accumulated GT value.
233
+ */
69
234
  millerLoopBatch: BlsPairing['millerLoopBatch'];
235
+ /**
236
+ * Pair one G1 point with one G2 point.
237
+ * @param P - G1 point.
238
+ * @param Q - G2 point.
239
+ * @param withFinalExponent - Whether to apply the final exponentiation step.
240
+ * @returns GT pairing result.
241
+ * @throws If either point is the point at infinity. {@link Error}
242
+ */
70
243
  pairing: BlsPairing['pairing'];
244
+ /**
245
+ * Pair many G1/G2 pairs in one batch.
246
+ * @param pairs - Point pairs to accumulate.
247
+ * @param withFinalExponent - Whether to apply the final exponentiation step.
248
+ * @returns GT pairing result. Empty input returns the multiplicative identity in GT.
249
+ */
71
250
  pairingBatch: BlsPairing['pairingBatch'];
251
+ /** G1 point constructor for the base field subgroup. */
72
252
  G1: {
73
253
  Point: WeierstrassPointCons<Fp>;
74
254
  };
255
+ /** G2 point constructor for the twist subgroup. */
75
256
  G2: {
76
257
  Point: WeierstrassPointCons<Fp2>;
77
258
  };
259
+ /** Tower fields exposed by the pairing implementation. */
78
260
  fields: {
79
261
  Fp: IField<Fp>;
80
262
  Fp2: Fp2Bls;
@@ -82,47 +264,148 @@ export interface BlsCurvePair {
82
264
  Fp12: Fp12Bls;
83
265
  Fr: IField<bigint>;
84
266
  };
267
+ /** Utility helpers shared by hashers and signers. */
85
268
  utils: {
86
- randomSecretKey: (seed?: Uint8Array) => Uint8Array;
269
+ randomSecretKey: (seed?: TArg<Uint8Array>) => TRet<Uint8Array>;
87
270
  calcPairingPrecomputes: BlsPairing['calcPairingPrecomputes'];
88
271
  };
272
+ /** Public pairing parameters exposed for introspection. */
89
273
  params: {
90
274
  ateLoopSize: bigint;
91
275
  twistType: BlsTwistType;
92
276
  };
93
277
  }
278
+ /** BLS curve bundle extended with hash-to-curve helpers for G1 and G2. */
94
279
  export interface BlsCurvePairWithHashers extends BlsCurvePair {
280
+ /** G1 hasher bundle with RFC 9380 helpers. */
95
281
  G1: H2CHasher<WeierstrassPointCons<Fp>>;
282
+ /** G2 hasher bundle with RFC 9380 helpers. */
96
283
  G2: H2CHasher<WeierstrassPointCons<Fp2>>;
97
284
  }
285
+ /** BLS curve bundle extended with both hashers and signature helpers. */
98
286
  export interface BlsCurvePairWithSignatures extends BlsCurvePairWithHashers {
287
+ /** Long-signature mode: G1 public keys and G2 signatures. */
99
288
  longSignatures: BlsSigs<bigint, Fp2>;
289
+ /** Short-signature mode: G2 public keys and G1 signatures. */
100
290
  shortSignatures: BlsSigs<Fp2, bigint>;
101
291
  }
102
- type BLSInput = Uint8Array;
292
+ type BLSInput = TArg<Uint8Array>;
293
+ /** BLS signer helpers for one signature mode. */
103
294
  export interface BlsSigs<P, S> {
295
+ /** Byte lengths for secret keys, public keys, and signatures. */
104
296
  lengths: CurveLengths;
105
- keygen(seed?: Uint8Array): {
106
- secretKey: Uint8Array;
297
+ /**
298
+ * Generate a secret/public key pair for this signature mode.
299
+ * @param seed - Optional seed material.
300
+ * @returns Secret and public key pair.
301
+ */
302
+ keygen(seed?: TArg<Uint8Array>): {
303
+ secretKey: TRet<Uint8Array>;
107
304
  publicKey: WeierstrassPoint<P>;
108
305
  };
109
- getPublicKey(secretKey: Uint8Array): WeierstrassPoint<P>;
110
- sign(hashedMessage: WeierstrassPoint<S>, secretKey: Uint8Array): WeierstrassPoint<S>;
306
+ /**
307
+ * Derive the public key from a secret key.
308
+ * @param secretKey - Secret key bytes.
309
+ * @returns Public-key point.
310
+ */
311
+ getPublicKey(secretKey: TArg<Uint8Array>): WeierstrassPoint<P>;
312
+ /**
313
+ * Sign a message already hashed onto the signature subgroup.
314
+ * @param hashedMessage - Message mapped to the signature subgroup.
315
+ * @param secretKey - Secret key bytes.
316
+ * @returns Signature point.
317
+ */
318
+ sign(hashedMessage: WeierstrassPoint<S>, secretKey: TArg<Uint8Array>): WeierstrassPoint<S>;
319
+ /**
320
+ * Verify one signature against one public key and hashed message.
321
+ * @param signature - Signature point or encoded signature.
322
+ * @param message - Hashed message point.
323
+ * @param publicKey - Public-key point or encoded key.
324
+ * @returns Whether the signature is valid.
325
+ */
111
326
  verify(signature: WeierstrassPoint<S> | BLSInput, message: WeierstrassPoint<S>, publicKey: WeierstrassPoint<P> | BLSInput): boolean;
327
+ /**
328
+ * Verify one aggregated signature against many `(message, publicKey)` pairs.
329
+ * @param signature - Aggregated signature.
330
+ * @param items - Message/public-key pairs.
331
+ * @returns Whether the aggregated signature is valid. Same-message aggregate verification still
332
+ * requires proof of possession or another rogue-key defense from the caller.
333
+ */
112
334
  verifyBatch: (signature: WeierstrassPoint<S> | BLSInput, items: {
113
335
  message: WeierstrassPoint<S>;
114
336
  publicKey: WeierstrassPoint<P> | BLSInput;
115
337
  }[]) => boolean;
338
+ /**
339
+ * Add many public keys into one aggregate point.
340
+ * @param publicKeys - Public keys to aggregate.
341
+ * @returns Aggregated public-key point. This is raw point addition and does not add proof of
342
+ * possession or rogue-key protection on its own.
343
+ */
116
344
  aggregatePublicKeys(publicKeys: (WeierstrassPoint<P> | BLSInput)[]): WeierstrassPoint<P>;
345
+ /**
346
+ * Add many signatures into one aggregate point.
347
+ * @param signatures - Signatures to aggregate.
348
+ * @returns Aggregated signature point. This is raw point addition and does not change the proof
349
+ * of possession requirements of the aggregate-verification scheme.
350
+ */
117
351
  aggregateSignatures(signatures: (WeierstrassPoint<S> | BLSInput)[]): WeierstrassPoint<S>;
118
- hash(message: Uint8Array, DST?: string | Uint8Array, hashOpts?: H2CHashOpts): WeierstrassPoint<S>;
352
+ /**
353
+ * Hash an arbitrary message onto the signature subgroup.
354
+ * @param message - Message bytes.
355
+ * @param DST - Optional domain separation tag.
356
+ * @returns Curve point on the signature subgroup.
357
+ */
358
+ hash(message: TArg<Uint8Array>, DST?: TArg<string | Uint8Array>): WeierstrassPoint<S>;
359
+ /** Signature codec for this mode. */
119
360
  Signature: BlsLongSignatureCoder<S>;
120
361
  }
121
362
  type BlsSignatureCoders = Partial<{
122
363
  LongSignature: BlsLongSignatureCoder<Fp2>;
123
364
  ShortSignature: BlsShortSignatureCoder<Fp>;
124
365
  }>;
125
- export declare function blsBasic(fields: BlsFields, G1_Point: WeierstrassPointCons<Fp>, G2_Point: WeierstrassPointCons<Fp2>, params: BlsPairingParams): BlsCurvePair;
126
- export declare function bls(fields: BlsFields, G1_Point: WeierstrassPointCons<Fp>, G2_Point: WeierstrassPointCons<Fp2>, params: BlsPairingParams, hasherParams: BlsHasherParams, signatureCoders: BlsSignatureCoders): BlsCurvePairWithSignatures;
366
+ /**
367
+ * @param fields - Tower field implementations.
368
+ * @param G1_Point - G1 point constructor.
369
+ * @param G2_Point - G2 point constructor.
370
+ * @param params - Pairing parameters. See {@link BlsPairingParams}.
371
+ * @returns Pairing-only BLS helpers. The returned pairing surface rejects infinity inputs, while
372
+ * empty `pairingBatch(...)` calls return the multiplicative identity in GT. This keeps the
373
+ * low-level pairing API fail-closed for BLS-style callers, where identity points usually signal
374
+ * broken hash / wiring instead of an intentionally neutral pairing term. This also eagerly
375
+ * precomputes the G1 base-point table as a performance side effect.
376
+ * @throws If the pairing parameters or underlying curve helpers are inconsistent. {@link Error}
377
+ * @example
378
+ * ```ts
379
+ * import { blsBasic } from '@noble/curves/abstract/bls.js';
380
+ * import { bn254 } from '@noble/curves/bn254.js';
381
+ * // Pair a G1 point with a G2 point without the higher-level signer helpers.
382
+ * const gt = bn254.pairing(bn254.G1.Point.BASE, bn254.G2.Point.BASE);
383
+ * ```
384
+ */
385
+ export declare function blsBasic(fields: TArg<BlsFields>, G1_Point: WeierstrassPointCons<Fp>, G2_Point: WeierstrassPointCons<Fp2>, params: TArg<BlsPairingParams>): BlsCurvePair;
386
+ /**
387
+ * @param fields - Tower field implementations.
388
+ * @param G1_Point - G1 point constructor.
389
+ * @param G2_Point - G2 point constructor.
390
+ * @param params - Pairing parameters. See {@link BlsPairingParams}.
391
+ * @param hasherParams - Hash-to-curve configuration. See {@link BlsHasherParams}.
392
+ * @param signatureCoders - Signature codecs.
393
+ * @returns BLS helpers with signers. The inherited pairing surface still rejects infinity inputs,
394
+ * and empty `pairingBatch(...)` calls still return the multiplicative identity in GT. Aggregate
395
+ * verification still requires proof of possession or another rogue-key defense from the caller.
396
+ * @throws If the pairing, hashing, or signature helpers are configured inconsistently. {@link Error}
397
+ * @example
398
+ * ```ts
399
+ * import { bls } from '@noble/curves/abstract/bls.js';
400
+ * import { bls12_381 } from '@noble/curves/bls12-381.js';
401
+ * const sigs = bls12_381.longSignatures;
402
+ * // Use the full BLS helper set when you need hashing, keygen, signing, and verification.
403
+ * const { secretKey, publicKey } = sigs.keygen();
404
+ * const msg = sigs.hash(new TextEncoder().encode('hello noble'));
405
+ * const sig = sigs.sign(msg, secretKey);
406
+ * const isValid = sigs.verify(sig, msg, publicKey);
407
+ * ```
408
+ */
409
+ export declare function bls(fields: TArg<BlsFields>, G1_Point: WeierstrassPointCons<Fp>, G2_Point: WeierstrassPointCons<Fp2>, params: TArg<BlsPairingParams>, hasherParams: TArg<BlsHasherParams>, signatureCoders: BlsSignatureCoders): BlsCurvePairWithSignatures;
127
410
  export {};
128
411
  //# sourceMappingURL=bls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bls.d.ts","sourceRoot":"","sources":["../src/abstract/bls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bls.d.ts","sourceRoot":"","sources":["../src/abstract/bls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;IAeI;AACJ,sEAAsE;AACtE,OAAO,EAAuC,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAoC,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEpF,KAAK,EAAE,GAAG,MAAM,CAAC;AAKjB;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,UAAU,CAAC;AAEzD;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,CAAC,EAAE,IAAI;IACvC;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACzD;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC3C;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;CAC5C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAAC,EAAE,IAAI;IACtC;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACzD;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC3C;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;CAC5C,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,SAAS,GAAG;IACtB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnB,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,2BAA2B,GAAG,CACxC,EAAE,EAAE,GAAG,EACP,EAAE,EAAE,GAAG,EACP,EAAE,EAAE,GAAG,EACP,EAAE,EAAE,GAAG,EACP,EAAE,EAAE,GAAG,KACJ;IAAE,EAAE,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,GAAG,CAAA;CAAE,CAAC;AACnC;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,EAAE,EAAE,GAAG,EACP,EAAE,EAAE,GAAG,EACP,EAAE,EAAE,GAAG,EACP,EAAE,EAAE,GAAG,EACP,EAAE,EAAE,GAAG,EACP,QAAQ,EAAE,2BAA2B,KAClC,IAAI,CAAC;AACV,6DAA6D;AAC7D,MAAM,MAAM,UAAU,GAAG;IACvB,2EAA2E;IAC3E,OAAO,EAAE,YAAY,CAAC;IACtB,4DAA4D;IAC5D,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnB,uDAAuD;IACvD,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,sBAAsB,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC;IACjE;;;;OAIG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IACzD;;;;;;;OAOG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAClG;;;;;OAKG;IACH,YAAY,EAAE,CACZ,KAAK,EAAE;QAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAAC,EAAE,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAA;KAAE,EAAE,EAChE,iBAAiB,CAAC,EAAE,OAAO,KACxB,IAAI,CAAC;IACV;;;;OAIG;IACH,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;CAChE,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAG7B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,EAAE,YAAY,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD;;;OAGG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC,CAAC;AACF,wFAAwF;AACxF,MAAM,MAAM,eAAe,GAAG;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,YAAY,EAAE,OAAO,CAAC;IACtB,uEAAuE;IACvE,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AACF,KAAK,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AAC1C,KAAK,UAAU,GAAG,gBAAgB,EAAE,CAAC;AAErC;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,OAAO,EAAE,YAAY,CAAC;IACtB;;;;OAIG;IACH,eAAe,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC/C;;;;;;;OAOG;IACH,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B;;;;;OAKG;IACH,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACzC,wDAAwD;IACxD,EAAE,EAAE;QAAE,KAAK,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAA;KAAE,CAAC;IACxC,mDAAmD;IACnD,EAAE,EAAE;QAAE,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC;IACzC,0DAA0D;IAC1D,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,OAAO,CAAC;QACd,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KACpB,CAAC;IACF,qDAAqD;IACrD,KAAK,EAAE;QACL,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,sBAAsB,EAAE,UAAU,CAAC,wBAAwB,CAAC,CAAC;KAC9D,CAAC;IACF,2DAA2D;IAC3D,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,YAAY,CAAC;KACzB,CAAC;CACH;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,8CAA8C;IAC9C,EAAE,EAAE,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,8CAA8C;IAC9C,EAAE,EAAE,SAAS,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1C;AAED,yEAAyE;AACzE,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE,6DAA6D;IAC7D,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,8DAA8D;IAC9D,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACjC,iDAAiD;AACjD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B,iEAAiE;IACjE,OAAO,EAAE,YAAY,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;QAC/B,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC;IACF;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC/D;;;;;OAKG;IACH,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC3F;;;;;;OAMG;IACH,MAAM,CACJ,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,EACzC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,GACxC,OAAO,CAAC;IACX;;;;;;OAMG;IACH,WAAW,EAAE,CACX,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,EACzC,KAAK,EAAE;QAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;KAAE,EAAE,KACjF,OAAO,CAAC;IACb;;;;;OAKG;IACH,mBAAmB,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACzF;;;;;OAKG;IACH,mBAAmB,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACzF;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtF,qCAAqC;IACrC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;CACrC;AAiVD,KAAK,kBAAkB,GAAG,OAAO,CAAC;IAChC,aAAa,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC1C,cAAc,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAAC;CAC5C,CAAC,CAAC;AAGH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EACvB,QAAQ,EAAE,oBAAoB,CAAC,EAAE,CAAC,EAClC,QAAQ,EAAE,oBAAoB,CAAC,GAAG,CAAC,EACnC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAC7B,YAAY,CAuCd;AAiCD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,GAAG,CACjB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EACvB,QAAQ,EAAE,oBAAoB,CAAC,EAAE,CAAC,EAClC,QAAQ,EAAE,oBAAoB,CAAC,GAAG,CAAC,EACnC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAC9B,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,EACnC,eAAe,EAAE,kBAAkB,GAClC,0BAA0B,CA0B5B"}