@aztec/foundation 5.0.0-private.20260318 → 5.0.0-rc.1

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 (244) hide show
  1. package/dest/bigint-buffer/index.d.ts +1 -1
  2. package/dest/bigint-buffer/index.d.ts.map +1 -1
  3. package/dest/bigint-buffer/index.js +6 -1
  4. package/dest/branded-types/block_number.d.ts +3 -3
  5. package/dest/branded-types/block_number.d.ts.map +1 -1
  6. package/dest/branded-types/block_number.js +15 -4
  7. package/dest/branded-types/buffer32_hash.d.ts +27 -0
  8. package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
  9. package/dest/branded-types/buffer32_hash.js +12 -0
  10. package/dest/branded-types/checkpoint_number.d.ts +9 -3
  11. package/dest/branded-types/checkpoint_number.d.ts.map +1 -1
  12. package/dest/branded-types/checkpoint_number.js +11 -0
  13. package/dest/branded-types/epoch.d.ts +2 -2
  14. package/dest/branded-types/epoch.d.ts.map +1 -1
  15. package/dest/branded-types/index.d.ts +2 -1
  16. package/dest/branded-types/index.d.ts.map +1 -1
  17. package/dest/branded-types/index.js +1 -0
  18. package/dest/branded-types/index_within_checkpoint.d.ts +2 -2
  19. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -1
  20. package/dest/branded-types/slot.d.ts +5 -2
  21. package/dest/branded-types/slot.d.ts.map +1 -1
  22. package/dest/branded-types/slot.js +3 -0
  23. package/dest/buffer/buffer16.d.ts +3 -1
  24. package/dest/buffer/buffer16.d.ts.map +1 -1
  25. package/dest/buffer/buffer32.d.ts +28 -61
  26. package/dest/buffer/buffer32.d.ts.map +1 -1
  27. package/dest/buffer/buffer32.js +29 -63
  28. package/dest/collection/array.d.ts +11 -1
  29. package/dest/collection/array.d.ts.map +1 -1
  30. package/dest/collection/array.js +33 -0
  31. package/dest/collection/index.d.ts +3 -1
  32. package/dest/collection/index.d.ts.map +1 -1
  33. package/dest/collection/index.js +2 -0
  34. package/dest/collection/lru_map.d.ts +41 -0
  35. package/dest/collection/lru_map.d.ts.map +1 -0
  36. package/dest/collection/lru_map.js +119 -0
  37. package/dest/collection/lru_set.d.ts +35 -0
  38. package/dest/collection/lru_set.d.ts.map +1 -0
  39. package/dest/collection/lru_set.js +95 -0
  40. package/dest/committable/committable.js +1 -1
  41. package/dest/config/env_var.d.ts +2 -2
  42. package/dest/config/env_var.d.ts.map +1 -1
  43. package/dest/config/index.d.ts +47 -30
  44. package/dest/config/index.d.ts.map +1 -1
  45. package/dest/config/index.js +30 -45
  46. package/dest/config/network_config.d.ts +11 -55
  47. package/dest/config/network_config.d.ts.map +1 -1
  48. package/dest/config/network_name.d.ts +2 -2
  49. package/dest/config/network_name.d.ts.map +1 -1
  50. package/dest/config/network_name.js +1 -3
  51. package/dest/config/secret_value.d.ts +2 -2
  52. package/dest/config/secret_value.d.ts.map +1 -1
  53. package/dest/crypto/aes128/index.d.ts +2 -1
  54. package/dest/crypto/aes128/index.d.ts.map +1 -1
  55. package/dest/crypto/aes128/index.js +11 -2
  56. package/dest/crypto/bls/bn254_keystore.d.ts +9 -176
  57. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
  58. package/dest/crypto/bls/bn254_keystore.js +0 -17
  59. package/dest/crypto/poseidon/index.d.ts +1 -1
  60. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  61. package/dest/crypto/poseidon/index.js +40 -33
  62. package/dest/crypto/schnorr/index.d.ts +8 -7
  63. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  64. package/dest/crypto/schnorr/index.js +6 -6
  65. package/dest/crypto/schnorr/signature.d.ts +9 -29
  66. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  67. package/dest/crypto/schnorr/signature.js +20 -36
  68. package/dest/curves/bls12/field.d.ts +3 -3
  69. package/dest/curves/bls12/field.d.ts.map +1 -1
  70. package/dest/curves/bls12/field.js +0 -5
  71. package/dest/curves/bls12/point.d.ts +2 -2
  72. package/dest/curves/bls12/point.d.ts.map +1 -1
  73. package/dest/curves/bn254/field.d.ts +23 -19
  74. package/dest/curves/bn254/field.d.ts.map +1 -1
  75. package/dest/curves/bn254/field.js +23 -17
  76. package/dest/curves/grumpkin/point.d.ts +14 -28
  77. package/dest/curves/grumpkin/point.d.ts.map +1 -1
  78. package/dest/curves/grumpkin/point.js +29 -43
  79. package/dest/eth-address/index.d.ts +2 -2
  80. package/dest/eth-address/index.d.ts.map +1 -1
  81. package/dest/eth-address/index.js +0 -3
  82. package/dest/eth-signature/eth_signature.d.ts +2 -2
  83. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  84. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  85. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  86. package/dest/fifo/fifo_frame_reader.js +74 -0
  87. package/dest/fifo/index.d.ts +2 -0
  88. package/dest/fifo/index.d.ts.map +1 -0
  89. package/dest/fifo/index.js +1 -0
  90. package/dest/fifo_set/fifo_set.d.ts +15 -0
  91. package/dest/fifo_set/fifo_set.d.ts.map +1 -0
  92. package/dest/fifo_set/fifo_set.js +39 -0
  93. package/dest/fifo_set/index.d.ts +2 -0
  94. package/dest/fifo_set/index.d.ts.map +1 -0
  95. package/dest/fifo_set/index.js +1 -0
  96. package/dest/json-rpc/client/fetch.d.ts +1 -1
  97. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  98. package/dest/json-rpc/client/fetch.js +4 -3
  99. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +1 -1
  100. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  101. package/dest/json-rpc/client/safe_json_rpc_client.js +2 -2
  102. package/dest/json-rpc/client/undici.d.ts +1 -1
  103. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  104. package/dest/json-rpc/client/undici.js +5 -3
  105. package/dest/json-rpc/fixtures/test_state.d.ts +4 -8
  106. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  107. package/dest/json-rpc/fixtures/test_state.js +57 -17
  108. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +8 -3
  109. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  110. package/dest/json-rpc/server/safe_json_rpc_server.js +27 -13
  111. package/dest/log/pino-logger.d.ts +1 -1
  112. package/dest/log/pino-logger.d.ts.map +1 -1
  113. package/dest/log/pino-logger.js +17 -2
  114. package/dest/noir/noir_package_config.d.ts +19 -104
  115. package/dest/noir/noir_package_config.d.ts.map +1 -1
  116. package/dest/noir/noir_package_config.js +1 -1
  117. package/dest/queue/batch_queue.d.ts +1 -1
  118. package/dest/queue/batch_queue.d.ts.map +1 -1
  119. package/dest/queue/batch_queue.js +1 -0
  120. package/dest/retry/index.d.ts +31 -3
  121. package/dest/retry/index.d.ts.map +1 -1
  122. package/dest/retry/index.js +44 -2
  123. package/dest/schemas/api.d.ts +12 -10
  124. package/dest/schemas/api.d.ts.map +1 -1
  125. package/dest/schemas/api.js +7 -1
  126. package/dest/schemas/parse.d.ts +4 -4
  127. package/dest/schemas/parse.d.ts.map +1 -1
  128. package/dest/schemas/parse.js +6 -5
  129. package/dest/schemas/schemas.d.ts +15 -15
  130. package/dest/schemas/types.d.ts +3 -3
  131. package/dest/schemas/types.d.ts.map +1 -1
  132. package/dest/schemas/utils.d.ts +7 -11
  133. package/dest/schemas/utils.d.ts.map +1 -1
  134. package/dest/schemas/utils.js +2 -18
  135. package/dest/serialize/buffer_sink.d.ts +134 -0
  136. package/dest/serialize/buffer_sink.d.ts.map +1 -0
  137. package/dest/serialize/buffer_sink.js +297 -0
  138. package/dest/serialize/index.d.ts +2 -1
  139. package/dest/serialize/index.d.ts.map +1 -1
  140. package/dest/serialize/index.js +1 -0
  141. package/dest/string/index.js +1 -1
  142. package/dest/timer/index.d.ts +2 -2
  143. package/dest/timer/index.d.ts.map +1 -1
  144. package/dest/timer/index.js +1 -1
  145. package/dest/timer/timeout.d.ts +3 -1
  146. package/dest/timer/timeout.d.ts.map +1 -1
  147. package/dest/timer/timeout.js +26 -0
  148. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
  149. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  150. package/dest/transport/index.d.ts +1 -2
  151. package/dest/transport/index.d.ts.map +1 -1
  152. package/dest/transport/index.js +0 -1
  153. package/dest/trees/balanced_merkle_tree_root.d.ts +2 -3
  154. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -1
  155. package/dest/trees/balanced_merkle_tree_root.js +2 -3
  156. package/dest/trees/hasher.d.ts +3 -2
  157. package/dest/trees/hasher.d.ts.map +1 -1
  158. package/dest/trees/hasher.js +5 -5
  159. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  160. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  161. package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
  162. package/dest/trees/membership_witness.d.ts +2 -2
  163. package/dest/trees/membership_witness.d.ts.map +1 -1
  164. package/dest/trees/merkle_tree_calculator.d.ts +4 -2
  165. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  166. package/dest/trees/merkle_tree_calculator.js +1 -5
  167. package/dest/trees/sibling_path.d.ts +5 -4
  168. package/dest/trees/sibling_path.d.ts.map +1 -1
  169. package/dest/trees/sibling_path.js +10 -8
  170. package/dest/trees/unbalanced_merkle_tree_root.d.ts +2 -3
  171. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -1
  172. package/dest/trees/unbalanced_merkle_tree_root.js +2 -3
  173. package/dest/types/index.d.ts +23 -1
  174. package/dest/types/index.d.ts.map +1 -1
  175. package/dest/types/index.js +15 -0
  176. package/package.json +6 -4
  177. package/src/bigint-buffer/index.ts +6 -1
  178. package/src/branded-types/block_number.ts +20 -2
  179. package/src/branded-types/buffer32_hash.ts +38 -0
  180. package/src/branded-types/checkpoint_number.ts +16 -1
  181. package/src/branded-types/epoch.ts +1 -1
  182. package/src/branded-types/index.ts +1 -0
  183. package/src/branded-types/index_within_checkpoint.ts +1 -1
  184. package/src/branded-types/slot.ts +6 -1
  185. package/src/buffer/buffer16.ts +3 -0
  186. package/src/buffer/buffer32.ts +39 -68
  187. package/src/collection/array.ts +34 -0
  188. package/src/collection/index.ts +2 -0
  189. package/src/collection/lru_map.ts +143 -0
  190. package/src/collection/lru_set.ts +115 -0
  191. package/src/committable/committable.ts +1 -1
  192. package/src/config/env_var.ts +36 -22
  193. package/src/config/index.ts +102 -97
  194. package/src/config/network_name.ts +2 -5
  195. package/src/config/secret_value.ts +1 -1
  196. package/src/crypto/aes128/index.ts +11 -2
  197. package/src/crypto/bls/bn254_keystore.ts +0 -23
  198. package/src/crypto/poseidon/index.ts +42 -34
  199. package/src/crypto/schnorr/index.ts +9 -8
  200. package/src/crypto/schnorr/signature.ts +17 -46
  201. package/src/curves/bls12/field.ts +0 -7
  202. package/src/curves/bn254/field.ts +35 -34
  203. package/src/curves/grumpkin/point.ts +23 -40
  204. package/src/eth-address/index.ts +0 -4
  205. package/src/fifo/fifo_frame_reader.ts +98 -0
  206. package/src/fifo/index.ts +1 -0
  207. package/src/fifo_set/fifo_set.ts +52 -0
  208. package/src/fifo_set/index.ts +1 -0
  209. package/src/json-rpc/client/fetch.ts +4 -3
  210. package/src/json-rpc/client/safe_json_rpc_client.ts +2 -2
  211. package/src/json-rpc/client/undici.ts +5 -3
  212. package/src/json-rpc/fixtures/test_state.ts +10 -10
  213. package/src/json-rpc/server/safe_json_rpc_server.ts +31 -13
  214. package/src/log/pino-logger.ts +19 -2
  215. package/src/noir/noir_package_config.ts +32 -20
  216. package/src/queue/batch_queue.ts +1 -0
  217. package/src/retry/index.ts +66 -4
  218. package/src/schemas/api.ts +25 -25
  219. package/src/schemas/parse.ts +9 -6
  220. package/src/schemas/schemas.ts +4 -4
  221. package/src/schemas/types.ts +2 -2
  222. package/src/schemas/utils.ts +4 -38
  223. package/src/serialize/buffer_sink.ts +350 -0
  224. package/src/serialize/index.ts +1 -0
  225. package/src/string/index.ts +1 -1
  226. package/src/timer/index.ts +1 -1
  227. package/src/timer/timeout.ts +31 -0
  228. package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
  229. package/src/transport/index.ts +0 -1
  230. package/src/trees/balanced_merkle_tree_root.ts +2 -5
  231. package/src/trees/hasher.ts +6 -3
  232. package/src/trees/indexed_merkle_tree_calculator.ts +5 -1
  233. package/src/trees/merkle_tree_calculator.ts +4 -10
  234. package/src/trees/sibling_path.ts +11 -6
  235. package/src/trees/unbalanced_merkle_tree_root.ts +2 -5
  236. package/src/types/index.ts +47 -0
  237. package/dest/crypto/serialize.d.ts +0 -51
  238. package/dest/crypto/serialize.d.ts.map +0 -1
  239. package/dest/crypto/serialize.js +0 -68
  240. package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
  241. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
  242. package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
  243. package/src/crypto/serialize.ts +0 -85
  244. package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
@@ -20,186 +20,28 @@ declare const bn254KeystoreSchema: z.ZodObject<{
20
20
  c: z.ZodNumber;
21
21
  prf: z.ZodString;
22
22
  salt: z.ZodString;
23
- }, "strip", z.ZodTypeAny, {
24
- dklen: number;
25
- c: number;
26
- prf: string;
27
- salt: string;
28
- }, {
29
- dklen: number;
30
- c: number;
31
- prf: string;
32
- salt: string;
33
- }>;
23
+ }, z.core.$strip>;
34
24
  message: z.ZodString;
35
- }, "strip", z.ZodTypeAny, {
36
- function: "pbkdf2";
37
- params: {
38
- dklen: number;
39
- c: number;
40
- prf: string;
41
- salt: string;
42
- };
43
- message: string;
44
- }, {
45
- function: "pbkdf2";
46
- params: {
47
- dklen: number;
48
- c: number;
49
- prf: string;
50
- salt: string;
51
- };
52
- message: string;
53
- }>;
25
+ }, z.core.$strip>;
54
26
  checksum: z.ZodObject<{
55
27
  function: z.ZodLiteral<"sha256">;
56
- params: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
28
+ params: z.ZodObject<{}, z.core.$strip>;
57
29
  message: z.ZodString;
58
- }, "strip", z.ZodTypeAny, {
59
- function: "sha256";
60
- params: {};
61
- message: string;
62
- }, {
63
- function: "sha256";
64
- params: {};
65
- message: string;
66
- }>;
30
+ }, z.core.$strip>;
67
31
  cipher: z.ZodObject<{
68
32
  function: z.ZodLiteral<"aes-128-ctr">;
69
33
  params: z.ZodObject<{
70
34
  iv: z.ZodString;
71
- }, "strip", z.ZodTypeAny, {
72
- iv: string;
73
- }, {
74
- iv: string;
75
- }>;
35
+ }, z.core.$strip>;
76
36
  message: z.ZodString;
77
- }, "strip", z.ZodTypeAny, {
78
- function: "aes-128-ctr";
79
- params: {
80
- iv: string;
81
- };
82
- message: string;
83
- }, {
84
- function: "aes-128-ctr";
85
- params: {
86
- iv: string;
87
- };
88
- message: string;
89
- }>;
90
- }, "strip", z.ZodTypeAny, {
91
- kdf: {
92
- function: "pbkdf2";
93
- params: {
94
- dklen: number;
95
- c: number;
96
- prf: string;
97
- salt: string;
98
- };
99
- message: string;
100
- };
101
- checksum: {
102
- function: "sha256";
103
- params: {};
104
- message: string;
105
- };
106
- cipher: {
107
- function: "aes-128-ctr";
108
- params: {
109
- iv: string;
110
- };
111
- message: string;
112
- };
113
- }, {
114
- kdf: {
115
- function: "pbkdf2";
116
- params: {
117
- dklen: number;
118
- c: number;
119
- prf: string;
120
- salt: string;
121
- };
122
- message: string;
123
- };
124
- checksum: {
125
- function: "sha256";
126
- params: {};
127
- message: string;
128
- };
129
- cipher: {
130
- function: "aes-128-ctr";
131
- params: {
132
- iv: string;
133
- };
134
- message: string;
135
- };
136
- }>;
37
+ }, z.core.$strip>;
38
+ }, z.core.$strip>;
137
39
  description: z.ZodOptional<z.ZodString>;
138
40
  pubkey: z.ZodString;
139
41
  path: z.ZodString;
140
42
  uuid: z.ZodString;
141
43
  version: z.ZodNumber;
142
- }, "strip", z.ZodTypeAny, {
143
- crypto: {
144
- kdf: {
145
- function: "pbkdf2";
146
- params: {
147
- dklen: number;
148
- c: number;
149
- prf: string;
150
- salt: string;
151
- };
152
- message: string;
153
- };
154
- checksum: {
155
- function: "sha256";
156
- params: {};
157
- message: string;
158
- };
159
- cipher: {
160
- function: "aes-128-ctr";
161
- params: {
162
- iv: string;
163
- };
164
- message: string;
165
- };
166
- };
167
- description?: string | undefined;
168
- pubkey: string;
169
- path: string;
170
- uuid: string;
171
- version: number;
172
- }, {
173
- crypto: {
174
- kdf: {
175
- function: "pbkdf2";
176
- params: {
177
- dklen: number;
178
- c: number;
179
- prf: string;
180
- salt: string;
181
- };
182
- message: string;
183
- };
184
- checksum: {
185
- function: "sha256";
186
- params: {};
187
- message: string;
188
- };
189
- cipher: {
190
- function: "aes-128-ctr";
191
- params: {
192
- iv: string;
193
- };
194
- message: string;
195
- };
196
- };
197
- description?: string | undefined;
198
- pubkey: string;
199
- path: string;
200
- uuid: string;
201
- version: number;
202
- }>;
44
+ }, z.core.$strip>;
203
45
  /**
204
46
  * Error thrown when BN254 keystore operations fail
205
47
  */
@@ -283,14 +125,5 @@ export declare function decryptBn254Keystore(filePath: string, password: string)
283
125
  * @throws Bn254KeystoreError if decryption fails or checksum is invalid
284
126
  */
285
127
  export declare function decryptBn254KeystoreFromObject(keystore: Bn254Keystore, password: string): string;
286
- /**
287
- * Validates that a decrypted private key matches the public key in the keystore.
288
- *
289
- * @param privateKeyHex - Decrypted private key (0x-prefixed)
290
- * @param expectedPubkey - Expected public key from keystore
291
- * @param computePublicKey - Function to compute public key from private key
292
- * @returns true if keys match, false otherwise
293
- */
294
- export declare function verifyBn254Keypair(privateKeyHex: string, expectedPubkey: string, computePublicKey: (privateKey: string) => string): boolean;
295
128
  export {};
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm4yNTRfa2V5c3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vYmxzL2JuMjU0X2tleXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEI7Ozs7Ozs7O0dBUUc7QUFFSDs7R0FFRztBQUNILFFBQUEsTUFBTSxtQkFBbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBOEJ2QixDQUFDO0FBRUg7O0dBRUc7QUFDSCxxQkFBYSxrQkFBbUIsU0FBUSxLQUFLO0lBR3pCLEtBQUssQ0FBQztJQUZ4QixZQUNFLE9BQU8sRUFBRSxNQUFNLEVBQ0MsS0FBSyxDQUFDLG1CQUFPLEVBSTlCO0NBQ0Y7QUFFRCxNQUFNLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDO0FBRWhFOzs7R0FHRztBQUNILE1BQU0sV0FBVyxzQkFBc0I7SUFDckMsTUFBTSxFQUFFO1FBQ04sR0FBRyxFQUFFO1lBQ0gsUUFBUSxFQUFFLFFBQVEsQ0FBQztZQUNuQixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLE1BQU0sQ0FBQztnQkFDZCxDQUFDLEVBQUUsTUFBTSxDQUFDO2dCQUNWLEdBQUcsRUFBRSxNQUFNLENBQUM7Z0JBQ1osSUFBSSxFQUFFLE1BQU0sQ0FBQzthQUNkLENBQUM7WUFDRixPQUFPLEVBQUUsTUFBTSxDQUFDO1NBQ2pCLENBQUM7UUFDRixRQUFRLEVBQUU7WUFDUixRQUFRLEVBQUUsUUFBUSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxNQUFNLENBQUM7U0FDakIsQ0FBQztRQUNGLE1BQU0sRUFBRTtZQUNOLFFBQVEsRUFBRSxhQUFhLENBQUM7WUFDeEIsTUFBTSxFQUFFO2dCQUNOLEVBQUUsRUFBRSxNQUFNLENBQUM7YUFDWixDQUFDO1lBQ0YsT0FBTyxFQUFFLE1BQU0sQ0FBQztTQUNqQixDQUFDO0tBQ0gsQ0FBQztJQUNGLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsT0FBTyxFQUFFLE1BQU0sQ0FBQztDQUNqQjtBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHdCQUFnQixtQkFBbUIsQ0FDakMsUUFBUSxFQUFFLE1BQU0sRUFDaEIsYUFBYSxFQUFFLE1BQU0sRUFDckIsU0FBUyxFQUFFLE1BQU0sRUFDakIsY0FBYyxFQUFFLE1BQU0sR0FDckIsYUFBYSxDQThDZjtBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFnQixpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FnQmpFO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUcvRTtBQUVEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBZ0IsOEJBQThCLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FpRGhHO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixrQkFBa0IsQ0FDaEMsYUFBYSxFQUFFLE1BQU0sRUFDckIsY0FBYyxFQUFFLE1BQU0sRUFDdEIsZ0JBQWdCLEVBQUUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxLQUFLLE1BQU0sR0FDL0MsT0FBTyxDQVNUIn0=
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm4yNTRfa2V5c3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vYmxzL2JuMjU0X2tleXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEI7Ozs7Ozs7O0dBUUc7QUFFSDs7R0FFRztBQUNILFFBQUEsTUFBTSxtQkFBbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkE4QnZCLENBQUM7QUFFSDs7R0FFRztBQUNILHFCQUFhLGtCQUFtQixTQUFRLEtBQUs7SUFHekIsS0FBSyxDQUFDO0lBRnhCLFlBQ0UsT0FBTyxFQUFFLE1BQU0sRUFDQyxLQUFLLENBQUMsbUJBQU8sRUFJOUI7Q0FDRjtBQUVELE1BQU0sTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLG1CQUFtQixDQUFDLENBQUM7QUFFaEU7OztHQUdHO0FBQ0gsTUFBTSxXQUFXLHNCQUFzQjtJQUNyQyxNQUFNLEVBQUU7UUFDTixHQUFHLEVBQUU7WUFDSCxRQUFRLEVBQUUsUUFBUSxDQUFDO1lBQ25CLE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsTUFBTSxDQUFDO2dCQUNkLENBQUMsRUFBRSxNQUFNLENBQUM7Z0JBQ1YsR0FBRyxFQUFFLE1BQU0sQ0FBQztnQkFDWixJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ2QsQ0FBQztZQUNGLE9BQU8sRUFBRSxNQUFNLENBQUM7U0FDakIsQ0FBQztRQUNGLFFBQVEsRUFBRTtZQUNSLFFBQVEsRUFBRSxRQUFRLENBQUM7WUFDbkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUIsT0FBTyxFQUFFLE1BQU0sQ0FBQztTQUNqQixDQUFDO1FBQ0YsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLGFBQWEsQ0FBQztZQUN4QixNQUFNLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLE1BQU0sQ0FBQzthQUNaLENBQUM7WUFDRixPQUFPLEVBQUUsTUFBTSxDQUFDO1NBQ2pCLENBQUM7S0FDSCxDQUFDO0lBQ0YsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUNwQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixPQUFPLEVBQUUsTUFBTSxDQUFDO0NBQ2pCO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsd0JBQWdCLG1CQUFtQixDQUNqQyxRQUFRLEVBQUUsTUFBTSxFQUNoQixhQUFhLEVBQUUsTUFBTSxFQUNyQixTQUFTLEVBQUUsTUFBTSxFQUNqQixjQUFjLEVBQUUsTUFBTSxHQUNyQixhQUFhLENBOENmO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsYUFBYSxDQWdCakU7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBRy9FO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQiw4QkFBOEIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQWlEaEcifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"bn254_keystore.d.ts","sourceRoot":"","sources":["../../../src/crypto/bls/bn254_keystore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AAEH;;GAEG;AACH,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BvB,CAAC;AAEH;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAGzB,KAAK,CAAC;IAFxB,YACE,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,mBAAO,EAI9B;CACF;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE;QACN,GAAG,EAAE;YACH,QAAQ,EAAE,QAAQ,CAAC;YACnB,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAC;gBACd,CAAC,EAAE,MAAM,CAAC;gBACV,GAAG,EAAE,MAAM,CAAC;gBACZ,IAAI,EAAE,MAAM,CAAC;aACd,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC9B,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,MAAM,EAAE;YACN,QAAQ,EAAE,aAAa,CAAC;YACxB,MAAM,EAAE;gBACN,EAAE,EAAE,MAAM,CAAC;aACZ,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,aAAa,CA8Cf;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAgBjE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiDhG;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAC/C,OAAO,CAST"}
1
+ {"version":3,"file":"bn254_keystore.d.ts","sourceRoot":"","sources":["../../../src/crypto/bls/bn254_keystore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AAEH;;GAEG;AACH,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BvB,CAAC;AAEH;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAGzB,KAAK,CAAC;IAFxB,YACE,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,mBAAO,EAI9B;CACF;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE;QACN,GAAG,EAAE;YACH,QAAQ,EAAE,QAAQ,CAAC;YACnB,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAC;gBACd,CAAC,EAAE,MAAM,CAAC;gBACV,GAAG,EAAE,MAAM,CAAC;gBACZ,IAAI,EAAE,MAAM,CAAC;aACd,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC9B,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,MAAM,EAAE;YACN,QAAQ,EAAE,aAAa,CAAC;YACxB,MAAM,EAAE;gBACN,EAAE,EAAE,MAAM,CAAC;aACZ,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,aAAa,CA8Cf;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAgBjE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiDhG"}
@@ -199,20 +199,3 @@ import { z } from 'zod';
199
199
  throw new Bn254KeystoreError(`Failed to decrypt keystore: ${String(error)}`, error);
200
200
  }
201
201
  }
202
- /**
203
- * Validates that a decrypted private key matches the public key in the keystore.
204
- *
205
- * @param privateKeyHex - Decrypted private key (0x-prefixed)
206
- * @param expectedPubkey - Expected public key from keystore
207
- * @param computePublicKey - Function to compute public key from private key
208
- * @returns true if keys match, false otherwise
209
- */ export function verifyBn254Keypair(privateKeyHex, expectedPubkey, computePublicKey) {
210
- try {
211
- const computedPubkey = computePublicKey(privateKeyHex);
212
- const normalizedExpected = expectedPubkey.toLowerCase().replace(/^0x/i, '');
213
- const normalizedComputed = computedPubkey.toLowerCase().replace(/^0x/i, '');
214
- return normalizedExpected === normalizedComputed;
215
- } catch {
216
- return false;
217
- }
218
- }
@@ -20,4 +20,4 @@ export declare function poseidon2HashWithSeparator(input: Fieldable[], separator
20
20
  */
21
21
  export declare function poseidon2Permutation(input: Fieldable[]): Promise<Fr[]>;
22
22
  export declare function poseidon2HashBytes(input: Buffer): Promise<Fr>;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vcG9zZWlkb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBcUIsTUFBTSw4QkFBOEIsQ0FBQztBQUVqRjs7OztHQUlHO0FBQ0gsd0JBQXNCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQVFuRTtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLDBCQUEwQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FTbkc7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQXNCLG9CQUFvQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FZNUU7QUFFRCx3QkFBc0Isa0JBQWtCLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBa0JuRSJ9
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vcG9zZWlkb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBcUIsTUFBTSw4QkFBOEIsQ0FBQztBQXNCakY7Ozs7R0FJRztBQUNILHdCQUFnQixhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFN0Q7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQiwwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBSTdGO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFzQixvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBaUI1RTtBQUVELHdCQUFnQixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FZN0QifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/poseidon/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AACjD,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,8BAA8B,CAAC;AAEjF;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAQnE;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CASnG;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAY5E;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAkBnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/poseidon/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AACjD,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,8BAA8B,CAAC;AAsBjF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAI7F;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAiB5E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAY7D"}
@@ -1,33 +1,40 @@
1
- import { Barretenberg } from '@aztec/bb.js';
1
+ import { Barretenberg, BarretenbergSync } from '@aztec/bb.js';
2
2
  import { Fr } from '../../curves/bn254/field.js';
3
3
  import { serializeToFields } from '../../serialize/serialize.js';
4
+ const IS_BROWSER = typeof self !== 'undefined';
5
+ async function poseidon2HashFields(inputFields) {
6
+ if (IS_BROWSER) {
7
+ await BarretenbergSync.initSingleton();
8
+ const api = BarretenbergSync.getSingleton();
9
+ const response = api.poseidon2Hash({
10
+ inputs: inputFields.map((i)=>i.toBuffer())
11
+ });
12
+ return Fr.fromBuffer(Buffer.from(response.hash));
13
+ } else {
14
+ await Barretenberg.initSingleton();
15
+ const api = Barretenberg.getSingleton();
16
+ const response = await api.poseidon2Hash({
17
+ inputs: inputFields.map((i)=>i.toBuffer())
18
+ });
19
+ return Fr.fromBuffer(Buffer.from(response.hash));
20
+ }
21
+ }
4
22
  /**
5
23
  * Create a poseidon hash (field) from an array of input fields.
6
24
  * @param input - The input fields to hash.
7
25
  * @returns The poseidon hash.
8
- */ export async function poseidon2Hash(input) {
9
- const inputFields = serializeToFields(input);
10
- await Barretenberg.initSingleton();
11
- const api = Barretenberg.getSingleton();
12
- const response = await api.poseidon2Hash({
13
- inputs: inputFields.map((i)=>i.toBuffer())
14
- });
15
- return Fr.fromBuffer(Buffer.from(response.hash));
26
+ */ export function poseidon2Hash(input) {
27
+ return poseidon2HashFields(serializeToFields(input));
16
28
  }
17
29
  /**
18
30
  * Create a poseidon hash (field) from an array of input fields and a domain separator.
19
31
  * @param input - The input fields to hash.
20
32
  * @param separator - The domain separator.
21
33
  * @returns The poseidon hash.
22
- */ export async function poseidon2HashWithSeparator(input, separator) {
34
+ */ export function poseidon2HashWithSeparator(input, separator) {
23
35
  const inputFields = serializeToFields(input);
24
36
  inputFields.unshift(new Fr(separator));
25
- await Barretenberg.initSingleton();
26
- const api = Barretenberg.getSingleton();
27
- const response = await api.poseidon2Hash({
28
- inputs: inputFields.map((i)=>i.toBuffer())
29
- });
30
- return Fr.fromBuffer(Buffer.from(response.hash));
37
+ return poseidon2HashFields(inputFields);
31
38
  }
32
39
  /**
33
40
  * Runs a Poseidon2 permutation.
@@ -35,18 +42,23 @@ import { serializeToFields } from '../../serialize/serialize.js';
35
42
  * @returns the output state, size 4.
36
43
  */ export async function poseidon2Permutation(input) {
37
44
  const inputFields = serializeToFields(input);
38
- // We'd like this assertion but it's not possible to use it in the browser.
39
- // assert(input.length === 4, 'Input state must be of size 4');
40
- await Barretenberg.initSingleton();
41
- const api = Barretenberg.getSingleton();
42
- const response = await api.poseidon2Permutation({
43
- inputs: inputFields.map((i)=>i.toBuffer())
44
- });
45
- // We'd like this assertion but it's not possible to use it in the browser.
46
- // assert(response.outputs.length === 4, 'Output state must be of size 4');
47
- return response.outputs.map((o)=>Fr.fromBuffer(Buffer.from(o)));
45
+ if (IS_BROWSER) {
46
+ await BarretenbergSync.initSingleton();
47
+ const api = BarretenbergSync.getSingleton();
48
+ const response = api.poseidon2Permutation({
49
+ inputs: inputFields.map((i)=>i.toBuffer())
50
+ });
51
+ return response.outputs.map((o)=>Fr.fromBuffer(Buffer.from(o)));
52
+ } else {
53
+ await Barretenberg.initSingleton();
54
+ const api = Barretenberg.getSingleton();
55
+ const response = await api.poseidon2Permutation({
56
+ inputs: inputFields.map((i)=>i.toBuffer())
57
+ });
58
+ return response.outputs.map((o)=>Fr.fromBuffer(Buffer.from(o)));
59
+ }
48
60
  }
49
- export async function poseidon2HashBytes(input) {
61
+ export function poseidon2HashBytes(input) {
50
62
  const inputFields = [];
51
63
  for(let i = 0; i < input.length; i += 31){
52
64
  const fieldBytes = Buffer.alloc(32, 0);
@@ -55,10 +67,5 @@ export async function poseidon2HashBytes(input) {
55
67
  fieldBytes.reverse();
56
68
  inputFields.push(Fr.fromBuffer(fieldBytes));
57
69
  }
58
- await Barretenberg.initSingleton();
59
- const api = Barretenberg.getSingleton();
60
- const response = await api.poseidon2Hash({
61
- inputs: inputFields.map((i)=>i.toBuffer())
62
- });
63
- return Fr.fromBuffer(Buffer.from(response.hash));
70
+ return poseidon2HashFields(inputFields);
64
71
  }
@@ -1,3 +1,4 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
1
2
  import type { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
2
3
  import { Point } from '@aztec/foundation/curves/grumpkin';
3
4
  import { SchnorrSignature } from './signature.js';
@@ -13,19 +14,19 @@ export declare class Schnorr {
13
14
  */
14
15
  computePublicKey(privateKey: GrumpkinScalar): Promise<Point>;
15
16
  /**
16
- * Constructs a Schnorr signature given a msg and a private key.
17
- * @param msg - Message over which the signature is constructed.
17
+ * Constructs a Schnorr signature over a 32-byte message field element.
18
+ * @param msg - The message hash, as a grumpkin base field element.
18
19
  * @param privateKey - The private key of the signer.
19
20
  * @returns A Schnorr signature of the form (s, e).
20
21
  */
21
- constructSignature(msg: Uint8Array, privateKey: GrumpkinScalar): Promise<SchnorrSignature>;
22
+ constructSignature(msg: Fr, privateKey: GrumpkinScalar): Promise<SchnorrSignature>;
22
23
  /**
23
- * Verifies a Schnorr signature given a Grumpkin public key.
24
- * @param msg - Message over which the signature was constructed.
24
+ * Verifies a Schnorr signature against a Grumpkin public key.
25
+ * @param msg - The message hash, as a grumpkin base field element.
25
26
  * @param pubKey - The Grumpkin public key of the signer.
26
27
  * @param sig - The Schnorr signature.
27
28
  * @returns True or false.
28
29
  */
29
- verifySignature(msg: Uint8Array, pubKey: Point, sig: SchnorrSignature): Promise<boolean>;
30
+ verifySignature(msg: Fr, pubKey: Point, sig: SchnorrSignature): Promise<boolean>;
30
31
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vc2Nobm9yci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQjs7R0FFRztBQUNILHFCQUFhLE9BQU87SUFDbEI7Ozs7T0FJRztJQUNVLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUt4RTtJQUVEOzs7OztPQUtHO0lBQ1Usa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyw2QkFRMUU7SUFFRDs7Ozs7O09BTUc7SUFDVSxlQUFlLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0Isb0JBVWpGO0NBQ0YifQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vc2Nobm9yci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQjs7R0FFRztBQUNILHFCQUFhLE9BQU87SUFDbEI7Ozs7T0FJRztJQUNVLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUt4RTtJQUVEOzs7OztPQUtHO0lBQ1Usa0JBQWtCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsY0FBYyw2QkFRbEU7SUFFRDs7Ozs7O09BTUc7SUFDVSxlQUFlLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0Isb0JBVXpFO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/schnorr/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,cAAc,gBAAgB,CAAC;AAE/B;;GAEG;AACH,qBAAa,OAAO;IAClB;;;;OAIG;IACU,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAKxE;IAED;;;;;OAKG;IACU,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,6BAQ1E;IAED;;;;;;OAMG;IACU,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,oBAUjF;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/schnorr/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,cAAc,gBAAgB,CAAC;AAE/B;;GAEG;AACH,qBAAa,OAAO;IAClB;;;;OAIG;IACU,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAKxE;IAED;;;;;OAKG;IACU,kBAAkB,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,cAAc,6BAQlE;IAED;;;;;;OAMG;IACU,eAAe,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,oBAUzE;CACF"}
@@ -21,15 +21,15 @@ export * from './signature.js';
21
21
  ]));
22
22
  }
23
23
  /**
24
- * Constructs a Schnorr signature given a msg and a private key.
25
- * @param msg - Message over which the signature is constructed.
24
+ * Constructs a Schnorr signature over a 32-byte message field element.
25
+ * @param msg - The message hash, as a grumpkin base field element.
26
26
  * @param privateKey - The private key of the signer.
27
27
  * @returns A Schnorr signature of the form (s, e).
28
28
  */ async constructSignature(msg, privateKey) {
29
29
  await BarretenbergSync.initSingleton();
30
30
  const api = BarretenbergSync.getSingleton();
31
31
  const response = api.schnorrConstructSignature({
32
- message: msg,
32
+ messageField: msg.toBuffer(),
33
33
  privateKey: privateKey.toBuffer()
34
34
  });
35
35
  return new SchnorrSignature(Buffer.from([
@@ -38,8 +38,8 @@ export * from './signature.js';
38
38
  ]));
39
39
  }
40
40
  /**
41
- * Verifies a Schnorr signature given a Grumpkin public key.
42
- * @param msg - Message over which the signature was constructed.
41
+ * Verifies a Schnorr signature against a Grumpkin public key.
42
+ * @param msg - The message hash, as a grumpkin base field element.
43
43
  * @param pubKey - The Grumpkin public key of the signer.
44
44
  * @param sig - The Schnorr signature.
45
45
  * @returns True or false.
@@ -47,7 +47,7 @@ export * from './signature.js';
47
47
  await BarretenbergSync.initSingleton();
48
48
  const api = BarretenbergSync.getSingleton();
49
49
  const response = api.schnorrVerifySignature({
50
- message: msg,
50
+ messageField: msg.toBuffer(),
51
51
  publicKey: {
52
52
  x: pubKey.x.toBuffer(),
53
53
  y: pubKey.y.toBuffer()
@@ -1,5 +1,4 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
- import { BufferReader } from '@aztec/foundation/serialize';
3
2
  import type { Signature } from '../signature/index.js';
4
3
  /**
5
4
  * Schnorr signature used for transactions.
@@ -11,28 +10,7 @@ export declare class SchnorrSignature implements Signature {
11
10
  * The size of the signature in bytes.
12
11
  */
13
12
  static SIZE: number;
14
- /**
15
- * An empty signature.
16
- */
17
- static EMPTY: SchnorrSignature;
18
13
  constructor(buffer: Buffer);
19
- /**
20
- * Determines if the provided signature is valid or not.
21
- * @param signature - The data to be checked.
22
- * @returns Boolean indicating if the provided data is a valid schnorr signature.
23
- */
24
- static isSignature(signature: string): boolean;
25
- /**
26
- * Constructs a SchnorrSignature from the provided string.
27
- * @param signature - The string to be converted to a schnorr signature.
28
- * @returns The constructed schnorr signature.
29
- */
30
- static fromString(signature: string): SchnorrSignature;
31
- /**
32
- * Generates a random schnorr signature.
33
- * @returns The randomly constructed signature.
34
- */
35
- static random(): SchnorrSignature;
36
14
  /**
37
15
  * Returns the 's' component of the signature.
38
16
  * @returns A buffer containing the signature's 's' component.
@@ -48,12 +26,6 @@ export declare class SchnorrSignature implements Signature {
48
26
  * @returns A buffer containing the signature.
49
27
  */
50
28
  toBuffer(): Buffer<ArrayBufferLike>;
51
- /**
52
- * Deserializes from a buffer.
53
- * @param buffer - The buffer representation of the object.
54
- * @returns The new object.
55
- */
56
- static fromBuffer(buffer: Buffer | BufferReader): SchnorrSignature;
57
29
  /**
58
30
  * Returns the full signature as a hex string.
59
31
  * @returns A string containing the signature in hex format.
@@ -64,5 +36,13 @@ export declare class SchnorrSignature implements Signature {
64
36
  * @returns The signature components as an array of three fields
65
37
  */
66
38
  toFields(): Fr[];
39
+ /**
40
+ * Splits the signature into the four 128-bit limbs that Noir's `EmbeddedCurveScalar` consumes:
41
+ * `[s.lo, s.hi, e.lo, e.hi]`, where each component scalar is encoded as `lo + hi * 2^128`.
42
+ *
43
+ * Each 32-byte big-endian component is sliced into its top 16 bytes (`hi`) and bottom 16 bytes
44
+ * (`lo`); each half is zero-padded into a 32-byte buffer and decoded as `Fr` (big-endian).
45
+ */
46
+ toLimbFields(): [Fr, Fr, Fr, Fr];
67
47
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3J5cHRvL3NjaG5vcnIvc2lnbmF0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sNkJBQTZCLENBQUM7QUFFckUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gscUJBQWEsZ0JBQWlCLFlBQVcsU0FBUztJQVdwQyxPQUFPLENBQUMsTUFBTTtJQVYxQjs7T0FFRztJQUNILE9BQWMsSUFBSSxTQUFNO0lBRXhCOztPQUVHO0lBQ0gsT0FBYyxLQUFLLG1CQUEwQztJQUU3RCxZQUFvQixNQUFNLEVBQUUsTUFBTSxFQUlqQztJQUVEOzs7O09BSUc7SUFDSCxPQUFjLFdBQVcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxXQUUxQztJQUVEOzs7O09BSUc7SUFDSCxPQUFjLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxvQkFLekM7SUFFRDs7O09BR0c7SUFDSCxPQUFjLE1BQU0scUJBRW5CO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLDRCQUVKO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLDRCQUVKO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSw0QkFFUDtJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLGdCQUFnQixDQUdqRTtJQUVEOzs7T0FHRztJQUNILFFBQVEsV0FFUDtJQUVEOzs7T0FHRztJQUNILFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FZZjtDQUNGIn0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3J5cHRvL3NjaG5vcnIvc2lnbmF0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdwRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxxQkFBYSxnQkFBaUIsWUFBVyxTQUFTO0lBTXBDLE9BQU8sQ0FBQyxNQUFNO0lBTDFCOztPQUVHO0lBQ0gsT0FBYyxJQUFJLFNBQU07SUFFeEIsWUFBb0IsTUFBTSxFQUFFLE1BQU0sRUFJakM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsNEJBRUo7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsNEJBRUo7SUFFRDs7O09BR0c7SUFDSCxRQUFRLDRCQUVQO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxXQUVQO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQVlmO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBTy9CO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/crypto/schnorr/signature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAY,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAWpC,OAAO,CAAC,MAAM;IAV1B;;OAEG;IACH,OAAc,IAAI,SAAM;IAExB;;OAEG;IACH,OAAc,KAAK,mBAA0C;IAE7D,YAAoB,MAAM,EAAE,MAAM,EAIjC;IAED;;;;OAIG;IACH,OAAc,WAAW,CAAC,SAAS,EAAE,MAAM,WAE1C;IAED;;;;OAIG;IACH,OAAc,UAAU,CAAC,SAAS,EAAE,MAAM,oBAKzC;IAED;;;OAGG;IACH,OAAc,MAAM,qBAEnB;IAED;;;OAGG;IACH,IAAI,CAAC,4BAEJ;IAED;;;OAGG;IACH,IAAI,CAAC,4BAEJ;IAED;;;OAGG;IACH,QAAQ,4BAEP;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAGjE;IAED;;;OAGG;IACH,QAAQ,WAEP;IAED;;;OAGG;IACH,QAAQ,IAAI,EAAE,EAAE,CAYf;CACF"}
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/crypto/schnorr/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAMpC,OAAO,CAAC,MAAM;IAL1B;;OAEG;IACH,OAAc,IAAI,SAAM;IAExB,YAAoB,MAAM,EAAE,MAAM,EAIjC;IAED;;;OAGG;IACH,IAAI,CAAC,4BAEJ;IAED;;;OAGG;IACH,IAAI,CAAC,4BAEJ;IAED;;;OAGG;IACH,QAAQ,4BAEP;IAED;;;OAGG;IACH,QAAQ,WAEP;IAED;;;OAGG;IACH,QAAQ,IAAI,EAAE,EAAE,CAYf;IAED;;;;;;OAMG;IACH,YAAY,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAO/B;CACF"}
@@ -1,6 +1,5 @@
1
- import { randomBytes } from '@aztec/foundation/crypto/random';
2
1
  import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { BufferReader, mapTuple } from '@aztec/foundation/serialize';
2
+ import { mapTuple } from '@aztec/foundation/serialize';
4
3
  /**
5
4
  * Schnorr signature used for transactions.
6
5
  * @see cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.hpp
@@ -9,9 +8,6 @@ import { BufferReader, mapTuple } from '@aztec/foundation/serialize';
9
8
  /**
10
9
  * The size of the signature in bytes.
11
10
  */ static SIZE = 64;
12
- /**
13
- * An empty signature.
14
- */ static EMPTY = new SchnorrSignature(Buffer.alloc(64));
15
11
  constructor(buffer){
16
12
  this.buffer = buffer;
17
13
  if (buffer.length !== SchnorrSignature.SIZE) {
@@ -19,29 +15,6 @@ import { BufferReader, mapTuple } from '@aztec/foundation/serialize';
19
15
  }
20
16
  }
21
17
  /**
22
- * Determines if the provided signature is valid or not.
23
- * @param signature - The data to be checked.
24
- * @returns Boolean indicating if the provided data is a valid schnorr signature.
25
- */ static isSignature(signature) {
26
- return /^(0x)?[0-9a-f]{128}$/i.test(signature);
27
- }
28
- /**
29
- * Constructs a SchnorrSignature from the provided string.
30
- * @param signature - The string to be converted to a schnorr signature.
31
- * @returns The constructed schnorr signature.
32
- */ static fromString(signature) {
33
- if (!SchnorrSignature.isSignature(signature)) {
34
- throw new Error(`Invalid signature string: ${signature}`);
35
- }
36
- return new SchnorrSignature(Buffer.from(signature.replace(/^0x/i, ''), 'hex'));
37
- }
38
- /**
39
- * Generates a random schnorr signature.
40
- * @returns The randomly constructed signature.
41
- */ static random() {
42
- return new SchnorrSignature(randomBytes(64));
43
- }
44
- /**
45
18
  * Returns the 's' component of the signature.
46
19
  * @returns A buffer containing the signature's 's' component.
47
20
  */ get s() {
@@ -60,14 +33,6 @@ import { BufferReader, mapTuple } from '@aztec/foundation/serialize';
60
33
  return this.buffer;
61
34
  }
62
35
  /**
63
- * Deserializes from a buffer.
64
- * @param buffer - The buffer representation of the object.
65
- * @returns The new object.
66
- */ static fromBuffer(buffer) {
67
- const reader = BufferReader.asReader(buffer);
68
- return new SchnorrSignature(reader.readBytes(SchnorrSignature.SIZE));
69
- }
70
- /**
71
36
  * Returns the full signature as a hex string.
72
37
  * @returns A string containing the signature in hex format.
73
38
  */ toString() {
@@ -90,4 +55,23 @@ import { BufferReader, mapTuple } from '@aztec/foundation/serialize';
90
55
  buf3
91
56
  ], Fr.fromBuffer);
92
57
  }
58
+ /**
59
+ * Splits the signature into the four 128-bit limbs that Noir's `EmbeddedCurveScalar` consumes:
60
+ * `[s.lo, s.hi, e.lo, e.hi]`, where each component scalar is encoded as `lo + hi * 2^128`.
61
+ *
62
+ * Each 32-byte big-endian component is sliced into its top 16 bytes (`hi`) and bottom 16 bytes
63
+ * (`lo`); each half is zero-padded into a 32-byte buffer and decoded as `Fr` (big-endian).
64
+ */ toLimbFields() {
65
+ const limb = (start)=>{
66
+ const buf = Buffer.alloc(32);
67
+ this.buffer.copy(buf, 16, start, start + 16);
68
+ return Fr.fromBuffer(buf);
69
+ };
70
+ return [
71
+ limb(16),
72
+ limb(0),
73
+ limb(48),
74
+ limb(32)
75
+ ];
76
+ }
93
77
  }
@@ -92,7 +92,7 @@ export declare class BLS12Fr extends BLS12Field {
92
92
  sqrt(): BLS12Fr | null;
93
93
  pow(rhs: bigint): BLS12Fr;
94
94
  toJSON(): `0x${string}`;
95
- static get schema(): import("zod").ZodType<BLS12Fr, any, string>;
95
+ static get schema(): import("zod").ZodType<BLS12Fr, string, import("zod/v4/core").$ZodTypeInternals<BLS12Fr, string>>;
96
96
  }
97
97
  /**
98
98
  * Fq field class.
@@ -143,6 +143,6 @@ export declare class BLS12Fq extends BLS12Field {
143
143
  sqrt(): BLS12Fq | null;
144
144
  pow(rhs: bigint): BLS12Fq;
145
145
  toJSON(): `0x${string}`;
146
- static get schema(): import("zod").ZodType<BLS12Fq, any, string>;
146
+ static get schema(): import("zod").ZodType<BLS12Fq, string, import("zod/v4/core").$ZodTypeInternals<BLS12Fq, string>>;
147
147
  }
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXJ2ZXMvYmxzMTIvZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUsvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFaEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBY3ZDOztHQUVHO0FBQ0gsOEJBQXNCLFVBQVU7SUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBUztJQUUxQixTQUFTLGFBQWEsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxFQWlCcEQ7SUFFRCxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUM7SUFDckMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDO0lBRWxDOztPQUVHO0lBQ0gsUUFBUSxJQUFJLE1BQU0sQ0FLakI7SUFFRCxRQUFRLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FFeEI7SUFFRCxRQUFRLElBQUksTUFBTSxDQVFqQjtJQUVELFlBQVksSUFBSTtRQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQTtLQUFFLENBVWxDO0lBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUUvQjtJQUVELEVBQUUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FFM0I7SUFFRCxNQUFNLElBQUksT0FBTyxDQUVoQjtJQUVELE9BQU8sSUFBSSxPQUFPLENBRWpCO0lBRUQsVUFBVSxJQUFJLE9BQU8sQ0FJcEI7SUFFRCxjQUFjLElBQUksTUFBTSxDQUV2QjtJQUVELE9BQU8sU0FFTjtDQUNGO0FBa0REOzs7R0FHRztBQUNILHFCQUFhLE9BQVEsU0FBUSxVQUFVO0lB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
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXJ2ZXMvYmxzMTIvZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUsvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBY3ZDOztHQUVHO0FBQ0gsOEJBQXNCLFVBQVU7SUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBUztJQUUxQixTQUFTLGFBQWEsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxFQWlCcEQ7SUFFRCxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUM7SUFDckMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDO0lBRWxDOztPQUVHO0lBQ0gsUUFBUSxJQUFJLE1BQU0sQ0FLakI7SUFFRCxRQUFRLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FFeEI7SUFFRCxRQUFRLElBQUksTUFBTSxDQVFqQjtJQUVELFlBQVksSUFBSTtRQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQTtLQUFFLENBVWxDO0lBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUUvQjtJQUVELEVBQUUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FFM0I7SUFFRCxNQUFNLElBQUksT0FBTyxDQUVoQjtJQUVELE9BQU8sSUFBSSxPQUFPLENBRWpCO0lBRUQsVUFBVSxJQUFJLE9BQU8sQ0FJcEI7SUFFRCxjQUFjLElBQUksTUFBTSxDQUV2QjtJQUVELE9BQU8sU0FFTjtDQUNGO0FBa0REOzs7R0FHRztBQUNILHFCQUFhLE9BQVEsU0FBUSxVQUFVO0lB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