@miradexio/client 0.1.1 → 0.1.3

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 (317) hide show
  1. package/README.md +57 -292
  2. package/dist/address/base58.d.ts.map +1 -1
  3. package/dist/address/base58.js +1 -2
  4. package/dist/address/base58.js.map +1 -1
  5. package/dist/address/bech32.d.ts +0 -8
  6. package/dist/address/bech32.d.ts.map +1 -1
  7. package/dist/address/bech32.js +3 -9
  8. package/dist/address/bech32.js.map +1 -1
  9. package/dist/address/evm.d.ts.map +1 -1
  10. package/dist/address/evm.js +1 -2
  11. package/dist/address/evm.js.map +1 -1
  12. package/dist/address/index.d.ts +0 -6
  13. package/dist/address/index.d.ts.map +1 -1
  14. package/dist/address/index.js +6 -9
  15. package/dist/address/index.js.map +1 -1
  16. package/dist/address/monero.d.ts +0 -10
  17. package/dist/address/monero.d.ts.map +1 -1
  18. package/dist/address/monero.js +4 -10
  19. package/dist/address/monero.js.map +1 -1
  20. package/dist/address/polkadot.d.ts +0 -5
  21. package/dist/address/polkadot.d.ts.map +1 -1
  22. package/dist/address/polkadot.js +2 -6
  23. package/dist/address/polkadot.js.map +1 -1
  24. package/dist/address/ton.d.ts +0 -6
  25. package/dist/address/ton.d.ts.map +1 -1
  26. package/dist/address/ton.js +3 -8
  27. package/dist/address/ton.js.map +1 -1
  28. package/dist/api/index.d.ts +0 -19
  29. package/dist/api/index.d.ts.map +1 -1
  30. package/dist/api/index.js +18 -37
  31. package/dist/api/index.js.map +1 -1
  32. package/dist/atomic-swap/drive.d.ts +0 -13
  33. package/dist/atomic-swap/drive.d.ts.map +1 -1
  34. package/dist/atomic-swap/drive.js +72 -114
  35. package/dist/atomic-swap/drive.js.map +1 -1
  36. package/dist/atomic-swap/extract.d.ts +0 -23
  37. package/dist/atomic-swap/extract.d.ts.map +1 -1
  38. package/dist/atomic-swap/extract.js +6 -16
  39. package/dist/atomic-swap/extract.js.map +1 -1
  40. package/dist/atomic-swap/index.d.ts +0 -7
  41. package/dist/atomic-swap/index.d.ts.map +1 -1
  42. package/dist/atomic-swap/index.js +1 -7
  43. package/dist/atomic-swap/index.js.map +1 -1
  44. package/dist/atomic-swap/monero-sweep/errors.d.ts.map +1 -1
  45. package/dist/atomic-swap/monero-sweep/errors.js +5 -20
  46. package/dist/atomic-swap/monero-sweep/errors.js.map +1 -1
  47. package/dist/atomic-swap/monero-sweep/index.d.ts +1 -13
  48. package/dist/atomic-swap/monero-sweep/index.d.ts.map +1 -1
  49. package/dist/atomic-swap/monero-sweep/index.js +36 -65
  50. package/dist/atomic-swap/monero-sweep/index.js.map +1 -1
  51. package/dist/atomic-swap/monero-sweep/ring-select.d.ts +0 -4
  52. package/dist/atomic-swap/monero-sweep/ring-select.d.ts.map +1 -1
  53. package/dist/atomic-swap/monero-sweep/ring-select.js +9 -21
  54. package/dist/atomic-swap/monero-sweep/ring-select.js.map +1 -1
  55. package/dist/atomic-swap/presign.d.ts +0 -63
  56. package/dist/atomic-swap/presign.d.ts.map +1 -1
  57. package/dist/atomic-swap/presign.js +30 -90
  58. package/dist/atomic-swap/presign.js.map +1 -1
  59. package/dist/atomic-swap/refund.d.ts +0 -18
  60. package/dist/atomic-swap/refund.d.ts.map +1 -1
  61. package/dist/atomic-swap/refund.js +16 -32
  62. package/dist/atomic-swap/refund.js.map +1 -1
  63. package/dist/atomic-swap/run.d.ts +0 -17
  64. package/dist/atomic-swap/run.d.ts.map +1 -1
  65. package/dist/atomic-swap/run.js +11 -25
  66. package/dist/atomic-swap/run.js.map +1 -1
  67. package/dist/atomic-swap/snapshot.d.ts +0 -30
  68. package/dist/atomic-swap/snapshot.d.ts.map +1 -1
  69. package/dist/atomic-swap/snapshot.js +8 -23
  70. package/dist/atomic-swap/snapshot.js.map +1 -1
  71. package/dist/atomic-swap/submit-encsig.d.ts +0 -7
  72. package/dist/atomic-swap/submit-encsig.d.ts.map +1 -1
  73. package/dist/atomic-swap/submit-encsig.js +8 -15
  74. package/dist/atomic-swap/submit-encsig.js.map +1 -1
  75. package/dist/atomic-swap/types.d.ts +2 -55
  76. package/dist/atomic-swap/types.d.ts.map +1 -1
  77. package/dist/atomic-swap/types.js +2 -3
  78. package/dist/atomic-swap/types.js.map +1 -1
  79. package/dist/blockchain/quorum-provider.d.ts +0 -15
  80. package/dist/blockchain/quorum-provider.d.ts.map +1 -1
  81. package/dist/blockchain/quorum-provider.js +7 -9
  82. package/dist/blockchain/quorum-provider.js.map +1 -1
  83. package/dist/cooperative-redeem.d.ts +5 -14
  84. package/dist/cooperative-redeem.d.ts.map +1 -1
  85. package/dist/cooperative-redeem.js +3 -20
  86. package/dist/cooperative-redeem.js.map +1 -1
  87. package/dist/engine/blockchain-querier.d.ts +0 -22
  88. package/dist/engine/blockchain-querier.d.ts.map +1 -1
  89. package/dist/engine/engine-state.d.ts +0 -8
  90. package/dist/engine/engine-state.d.ts.map +1 -1
  91. package/dist/engine/engine-state.js.map +1 -1
  92. package/dist/engine/flow-context.d.ts +0 -20
  93. package/dist/engine/flow-context.d.ts.map +1 -1
  94. package/dist/engine/flow-context.js +17 -41
  95. package/dist/engine/flow-context.js.map +1 -1
  96. package/dist/engine/flows/atomic-flow-state.d.ts +8 -1
  97. package/dist/engine/flows/atomic-flow-state.d.ts.map +1 -1
  98. package/dist/engine/flows/atomic-flow.d.ts +1 -28
  99. package/dist/engine/flows/atomic-flow.d.ts.map +1 -1
  100. package/dist/engine/flows/atomic-flow.js +98 -128
  101. package/dist/engine/flows/atomic-flow.js.map +1 -1
  102. package/dist/engine/flows/error-routing.d.ts +11 -0
  103. package/dist/engine/flows/error-routing.d.ts.map +1 -0
  104. package/dist/engine/flows/error-routing.js +17 -0
  105. package/dist/engine/flows/error-routing.js.map +1 -0
  106. package/dist/engine/flows/swap-flow.d.ts +0 -19
  107. package/dist/engine/flows/swap-flow.d.ts.map +1 -1
  108. package/dist/engine/flows/swap-flow.js +41 -83
  109. package/dist/engine/flows/swap-flow.js.map +1 -1
  110. package/dist/engine/miradex-engine.d.ts +1 -62
  111. package/dist/engine/miradex-engine.d.ts.map +1 -1
  112. package/dist/engine/miradex-engine.js +18 -50
  113. package/dist/engine/miradex-engine.js.map +1 -1
  114. package/dist/engine/pipeline.d.ts +0 -11
  115. package/dist/engine/pipeline.d.ts.map +1 -1
  116. package/dist/engine/pipeline.js +11 -21
  117. package/dist/engine/pipeline.js.map +1 -1
  118. package/dist/engine/platform.d.ts +0 -160
  119. package/dist/engine/platform.d.ts.map +1 -1
  120. package/dist/engine/platform.js +2 -0
  121. package/dist/engine/platform.js.map +1 -1
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +7 -11
  124. package/dist/index.js.map +1 -1
  125. package/dist/interfaces/blockchain.d.ts +1 -13
  126. package/dist/interfaces/blockchain.d.ts.map +1 -1
  127. package/dist/interfaces/blockchain.js +1 -0
  128. package/dist/interfaces/blockchain.js.map +1 -1
  129. package/dist/interfaces/logger.d.ts +0 -6
  130. package/dist/interfaces/logger.d.ts.map +1 -1
  131. package/dist/interfaces/logger.js.map +1 -1
  132. package/dist/lib/bitcoin/deposit-watcher.d.ts +0 -23
  133. package/dist/lib/bitcoin/deposit-watcher.d.ts.map +1 -1
  134. package/dist/lib/bitcoin/deposit-watcher.js +7 -31
  135. package/dist/lib/bitcoin/deposit-watcher.js.map +1 -1
  136. package/dist/lib/bitcoin/script-hash.d.ts.map +1 -1
  137. package/dist/lib/bitcoin/script-hash.js +2 -6
  138. package/dist/lib/bitcoin/script-hash.js.map +1 -1
  139. package/dist/lib/bitcoin/sweep.d.ts +0 -30
  140. package/dist/lib/bitcoin/sweep.d.ts.map +1 -1
  141. package/dist/lib/bitcoin/sweep.js +11 -40
  142. package/dist/lib/bitcoin/sweep.js.map +1 -1
  143. package/dist/lib/bitcoin/tx-verify.d.ts +0 -28
  144. package/dist/lib/bitcoin/tx-verify.d.ts.map +1 -1
  145. package/dist/lib/bitcoin/tx-verify.js +20 -61
  146. package/dist/lib/bitcoin/tx-verify.js.map +1 -1
  147. package/dist/lib/bitcoin/wallet.d.ts +0 -38
  148. package/dist/lib/bitcoin/wallet.d.ts.map +1 -1
  149. package/dist/lib/bitcoin/wallet.js +13 -38
  150. package/dist/lib/bitcoin/wallet.js.map +1 -1
  151. package/dist/lib/crypto/bytes.d.ts +0 -14
  152. package/dist/lib/crypto/bytes.d.ts.map +1 -1
  153. package/dist/lib/crypto/bytes.js +5 -14
  154. package/dist/lib/crypto/bytes.js.map +1 -1
  155. package/dist/lib/crypto/errors.d.ts +0 -5
  156. package/dist/lib/crypto/errors.d.ts.map +1 -1
  157. package/dist/lib/crypto/errors.js +2 -5
  158. package/dist/lib/crypto/errors.js.map +1 -1
  159. package/dist/lib/crypto/libp2p-identity.d.ts +0 -15
  160. package/dist/lib/crypto/libp2p-identity.d.ts.map +1 -1
  161. package/dist/lib/crypto/libp2p-identity.js +16 -28
  162. package/dist/lib/crypto/libp2p-identity.js.map +1 -1
  163. package/dist/lib/crypto/mnemonic.d.ts +0 -9
  164. package/dist/lib/crypto/mnemonic.d.ts.map +1 -1
  165. package/dist/lib/crypto/mnemonic.js +11 -27
  166. package/dist/lib/crypto/mnemonic.js.map +1 -1
  167. package/dist/lib/crypto/platform.d.ts +0 -6
  168. package/dist/lib/crypto/platform.d.ts.map +1 -1
  169. package/dist/lib/crypto/platform.js +2 -6
  170. package/dist/lib/crypto/platform.js.map +1 -1
  171. package/dist/lib/crypto/scalars.d.ts +0 -23
  172. package/dist/lib/crypto/scalars.d.ts.map +1 -1
  173. package/dist/lib/crypto/scalars.js +10 -23
  174. package/dist/lib/crypto/scalars.js.map +1 -1
  175. package/dist/lib/crypto/types.d.ts +0 -4
  176. package/dist/lib/crypto/types.d.ts.map +1 -1
  177. package/dist/lib/crypto/wasm.d.ts +0 -23
  178. package/dist/lib/crypto/wasm.d.ts.map +1 -1
  179. package/dist/lib/crypto/wasm.js +9 -16
  180. package/dist/lib/crypto/wasm.js.map +1 -1
  181. package/dist/lib/default-config.d.ts +1 -59
  182. package/dist/lib/default-config.d.ts.map +1 -1
  183. package/dist/lib/default-config.js +22 -61
  184. package/dist/lib/default-config.js.map +1 -1
  185. package/dist/lib/errors.d.ts +0 -54
  186. package/dist/lib/errors.d.ts.map +1 -1
  187. package/dist/lib/errors.js +12 -35
  188. package/dist/lib/errors.js.map +1 -1
  189. package/dist/lib/keystore.d.ts +0 -24
  190. package/dist/lib/keystore.d.ts.map +1 -1
  191. package/dist/lib/keystore.js +3 -10
  192. package/dist/lib/keystore.js.map +1 -1
  193. package/dist/lib/monero/output-scanner.d.ts +0 -18
  194. package/dist/lib/monero/output-scanner.d.ts.map +1 -1
  195. package/dist/lib/monero/output-scanner.js +17 -40
  196. package/dist/lib/monero/output-scanner.js.map +1 -1
  197. package/dist/lib/monero/rpc.d.ts +0 -64
  198. package/dist/lib/monero/rpc.d.ts.map +1 -1
  199. package/dist/lib/monero/rpc.js +17 -59
  200. package/dist/lib/monero/rpc.js.map +1 -1
  201. package/dist/lib/monero/verify-lock.d.ts +0 -12
  202. package/dist/lib/monero/verify-lock.d.ts.map +1 -1
  203. package/dist/lib/monero/verify-lock.js +9 -24
  204. package/dist/lib/monero/verify-lock.js.map +1 -1
  205. package/dist/lib/monero/verify-sweep.d.ts +0 -20
  206. package/dist/lib/monero/verify-sweep.d.ts.map +1 -1
  207. package/dist/lib/monero/verify-sweep.js +7 -25
  208. package/dist/lib/monero/verify-sweep.js.map +1 -1
  209. package/dist/lib/pow-solver.d.ts.map +1 -1
  210. package/dist/lib/pow-solver.js +3 -8
  211. package/dist/lib/pow-solver.js.map +1 -1
  212. package/dist/lib/retry.d.ts +7 -64
  213. package/dist/lib/retry.d.ts.map +1 -1
  214. package/dist/lib/retry.js +13 -13
  215. package/dist/lib/retry.js.map +1 -1
  216. package/dist/portable.d.ts.map +1 -1
  217. package/dist/portable.js +3 -4
  218. package/dist/portable.js.map +1 -1
  219. package/dist/quote-binding.d.ts +0 -13
  220. package/dist/quote-binding.d.ts.map +1 -1
  221. package/dist/quote-binding.js +3 -18
  222. package/dist/quote-binding.js.map +1 -1
  223. package/dist/swap-executor.d.ts +1 -5
  224. package/dist/swap-executor.d.ts.map +1 -1
  225. package/dist/swap-executor.js +1 -1
  226. package/dist/swap-executor.js.map +1 -1
  227. package/dist/types/api.d.ts +0 -6
  228. package/dist/types/api.d.ts.map +1 -1
  229. package/dist/types/api.js +6 -9
  230. package/dist/types/api.js.map +1 -1
  231. package/dist/types/errors.d.ts +0 -7
  232. package/dist/types/errors.d.ts.map +1 -1
  233. package/dist/types/errors.js +2 -7
  234. package/dist/types/errors.js.map +1 -1
  235. package/dist/types/index.js +1 -1
  236. package/dist/types/index.js.map +1 -1
  237. package/dist/types/keys.d.ts +0 -15
  238. package/dist/types/keys.d.ts.map +1 -1
  239. package/dist/types/protocol.d.ts +0 -51
  240. package/dist/types/protocol.d.ts.map +1 -1
  241. package/dist/types/protocol.js +3 -8
  242. package/dist/types/protocol.js.map +1 -1
  243. package/dist/types/status.d.ts +2 -0
  244. package/dist/types/status.d.ts.map +1 -1
  245. package/dist/types/status.js +17 -14
  246. package/dist/types/status.js.map +1 -1
  247. package/dist/types/verification.d.ts +0 -10
  248. package/dist/types/verification.d.ts.map +1 -1
  249. package/dist/types/verification.js +7 -15
  250. package/dist/types/verification.js.map +1 -1
  251. package/dist/verification/chainflip-networks.d.ts +2 -35
  252. package/dist/verification/chainflip-networks.d.ts.map +1 -1
  253. package/dist/verification/chainflip-networks.js +12 -4
  254. package/dist/verification/chainflip-networks.js.map +1 -1
  255. package/dist/verification/chainflip.d.ts +0 -40
  256. package/dist/verification/chainflip.d.ts.map +1 -1
  257. package/dist/verification/chainflip.js +49 -129
  258. package/dist/verification/chainflip.js.map +1 -1
  259. package/dist/verification/constants.d.ts +0 -40
  260. package/dist/verification/constants.d.ts.map +1 -1
  261. package/dist/verification/constants.js +14 -40
  262. package/dist/verification/constants.js.map +1 -1
  263. package/dist/verification/index.d.ts +0 -26
  264. package/dist/verification/index.d.ts.map +1 -1
  265. package/dist/verification/index.js +8 -12
  266. package/dist/verification/index.js.map +1 -1
  267. package/dist/verification/memo.d.ts +0 -15
  268. package/dist/verification/memo.d.ts.map +1 -1
  269. package/dist/verification/memo.js +9 -27
  270. package/dist/verification/memo.js.map +1 -1
  271. package/dist/verification/near-intents.d.ts +0 -63
  272. package/dist/verification/near-intents.d.ts.map +1 -1
  273. package/dist/verification/near-intents.js +25 -67
  274. package/dist/verification/near-intents.js.map +1 -1
  275. package/dist/verification/rate-oracle.d.ts +0 -22
  276. package/dist/verification/rate-oracle.d.ts.map +1 -1
  277. package/dist/verification/rate-oracle.js +6 -11
  278. package/dist/verification/rate-oracle.js.map +1 -1
  279. package/dist/verification/thorchain-networks.d.ts +0 -27
  280. package/dist/verification/thorchain-networks.d.ts.map +1 -1
  281. package/dist/verification/thorchain-networks.js +13 -15
  282. package/dist/verification/thorchain-networks.js.map +1 -1
  283. package/dist/verification/thorchain.d.ts +0 -30
  284. package/dist/verification/thorchain.d.ts.map +1 -1
  285. package/dist/verification/thorchain.js +24 -47
  286. package/dist/verification/thorchain.js.map +1 -1
  287. package/dist/wasm-pins.d.ts +3 -3
  288. package/dist/wasm-pins.js +1 -1
  289. package/dist/wire/near-intents.zod.d.ts +0 -27
  290. package/dist/wire/near-intents.zod.d.ts.map +1 -1
  291. package/dist/wire/near-intents.zod.js +15 -23
  292. package/dist/wire/near-intents.zod.js.map +1 -1
  293. package/dist/wire/server/action.zod.d.ts +0 -10
  294. package/dist/wire/server/action.zod.d.ts.map +1 -1
  295. package/dist/wire/server/action.zod.js +8 -14
  296. package/dist/wire/server/action.zod.js.map +1 -1
  297. package/dist/wire/server/common.zod.d.ts +0 -13
  298. package/dist/wire/server/common.zod.d.ts.map +1 -1
  299. package/dist/wire/server/common.zod.js +6 -14
  300. package/dist/wire/server/common.zod.js.map +1 -1
  301. package/dist/wire/server/quotes.zod.d.ts +35 -20
  302. package/dist/wire/server/quotes.zod.d.ts.map +1 -1
  303. package/dist/wire/server/quotes.zod.js +1 -0
  304. package/dist/wire/server/quotes.zod.js.map +1 -1
  305. package/dist/wire/server/swap.zod.d.ts +0 -42
  306. package/dist/wire/server/swap.zod.d.ts.map +1 -1
  307. package/dist/wire/server/swap.zod.js +12 -26
  308. package/dist/wire/server/swap.zod.js.map +1 -1
  309. package/dist/wire/thorchain.zod.d.ts +0 -8
  310. package/dist/wire/thorchain.zod.d.ts.map +1 -1
  311. package/dist/wire/thorchain.zod.js +3 -8
  312. package/dist/wire/thorchain.zod.js.map +1 -1
  313. package/package.json +4 -4
  314. package/wasm/miradex-rust/README.md +3 -4
  315. package/wasm/miradex-rust/miradex_rust.d.ts +4 -6
  316. package/wasm/miradex-rust/miradex_rust.js +4 -6
  317. package/wasm/miradex-rust/miradex_rust_bg.wasm +0 -0
@@ -10,15 +10,9 @@ export function uint8ArrayEquals(a, b) {
10
10
  }
11
11
  return true;
12
12
  }
13
- /**
14
- * Constant-time equality over two equal-length hex strings. Canonical
15
- * comparator for hex-encoded bytes in the client; used for digest, pubkey, and
16
- * txid equality checks.
17
- *
18
- * @remarks Hex itself is not secret at the boundaries this function is used
19
- * today, but keeping one comparator avoids footguns when future code compares
20
- * a secret-dependent hex value.
21
- */
13
+ // One CT comparator for digest / pubkey / txid checks. Hex isn't itself
14
+ // secret today, but keeping one comparator avoids footguns when a future
15
+ // caller compares a secret-dependent hex value.
22
16
  export function constantTimeEqualHex(a, b) {
23
17
  if (a.length !== b.length)
24
18
  return false;
@@ -28,11 +22,8 @@ export function constantTimeEqualHex(a, b) {
28
22
  }
29
23
  return acc === 0;
30
24
  }
31
- /**
32
- * Zero-fill a buffer holding secret bytes. Best-effort; V8 may copy buffers
33
- * internally, so this is a defence-in-depth mechanism alongside minimising
34
- * secret lifetime (AV-G.2).
35
- */
25
+ // AV-G.2: zero-fill a secret buffer. Best-effort — V8 may copy internally,
26
+ // so this is defence in depth alongside minimising secret lifetime.
36
27
  export function wipe(buf) {
37
28
  buf.fill(0);
38
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../../src/lib/crypto/bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,OAAO,IAAI,UAAU,EAAE,CAAC;AAEtD,8DAA8D;AAC9D,MAAM,UAAU,gBAAgB,CAAC,CAAa,EAAE,CAAa;IAC3D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,CAAS,EAAE,CAAS;IACvD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,GAAe;IAClC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../../src/lib/crypto/bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,OAAO,IAAI,UAAU,EAAE,CAAC;AAEtD,8DAA8D;AAC9D,MAAM,UAAU,gBAAgB,CAAC,CAAa,EAAE,CAAa;IAC3D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wEAAwE;AACxE,yEAAyE;AACzE,gDAAgD;AAChD,MAAM,UAAU,oBAAoB,CAAC,CAAS,EAAE,CAAS;IACvD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,2EAA2E;AAC3E,oEAAoE;AACpE,MAAM,UAAU,IAAI,CAAC,GAAe;IAClC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,CAAC"}
@@ -1,8 +1,3 @@
1
- /**
2
- * Unified error class for every WASM-backed operation.
3
- * `.code` is a stable string matching the Rust-side MiradexWasmError::code()
4
- * (see ../../../miradex-rust/src).
5
- */
6
1
  export declare class WasmError extends Error {
7
2
  readonly code: string;
8
3
  readonly cause?: unknown | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,KAAK;aAGhB,IAAI,EAAE,MAAM;aAEZ,KAAK,CAAC,EAAE,OAAO;IAJjC,QAAQ,CAAC,IAAI,eAAe;gBAEV,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,OAAO,YAAA;CAIlC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAU,SAAQ,KAAK;aAGhB,IAAI,EAAE,MAAM;aAEZ,KAAK,CAAC,EAAE,OAAO;IAJjC,QAAQ,CAAC,IAAI,eAAe;gBAEV,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,OAAO,YAAA;CAIlC"}
@@ -1,8 +1,5 @@
1
- /**
2
- * Unified error class for every WASM-backed operation.
3
- * `.code` is a stable string matching the Rust-side MiradexWasmError::code()
4
- * (see ../../../miradex-rust/src).
5
- */
1
+ // .code is a stable string matching MiradexWasmError::code() in Rust
2
+ // (see ../../../miradex-rust/src).
6
3
  export class WasmError extends Error {
7
4
  code;
8
5
  cause;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/lib/crypto/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGhB;IAEA;IAJT,IAAI,GAAG,WAAW,CAAC;IAC5B,YACkB,IAAY,EAC5B,OAAe,EACC,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAQ;QAEZ,UAAK,GAAL,KAAK,CAAU;IAGjC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/lib/crypto/errors.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,mCAAmC;AACnC,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGhB;IAEA;IAJT,IAAI,GAAG,WAAW,CAAC;IAC5B,YACkB,IAAY,EAC5B,OAAe,EACC,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAQ;QAEZ,UAAK,GAAL,KAAK,CAAU;IAGjC,CAAC;CACF"}
@@ -1,18 +1,3 @@
1
- /**
2
- * Derive a libp2p Ed25519 identity from a 32-byte master seed, matching
3
- * eigenwallet's swap/src/seed.rs::derive_libp2p_identity byte-for-byte:
4
- *
5
- * network_seed = SHA256(master_seed || "NETWORK")
6
- * libp2p_seed = SHA256(network_seed || "LIBP2P_IDENTITY")
7
- * keypair = Ed25519::from_bytes(libp2p_seed)
8
- * peer_id = base58btc(identity_multihash(protobuf(pubkey)))
9
- *
10
- * Note: this is plain concatenated SHA-256, NOT HMAC-SHA256. Matches the
11
- * Rust `derive` helper that does `sha256(seed.bytes() || scope)`.
12
- *
13
- * Producing the same peer-id eigenwallet would derive from the same seed is
14
- * what makes cross-binary recovery work without patching eigenwallet.
15
- */
16
1
  export interface DerivedLibp2pIdentity {
17
2
  /** 32-byte Ed25519 secret seed (hex). What eigenwallet writes to seed.pem. */
18
3
  readonly libp2pSeedHex: string;
@@ -1 +1 @@
1
- {"version":3,"file":"libp2p-identity.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/libp2p-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgCH,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AASD,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,qBAAqB,CAAC,CAwChC"}
1
+ {"version":3,"file":"libp2p-identity.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/libp2p-identity.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AASD,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,qBAAqB,CAAC,CAwChC"}
@@ -1,31 +1,19 @@
1
- /**
2
- * Derive a libp2p Ed25519 identity from a 32-byte master seed, matching
3
- * eigenwallet's swap/src/seed.rs::derive_libp2p_identity byte-for-byte:
4
- *
5
- * network_seed = SHA256(master_seed || "NETWORK")
6
- * libp2p_seed = SHA256(network_seed || "LIBP2P_IDENTITY")
7
- * keypair = Ed25519::from_bytes(libp2p_seed)
8
- * peer_id = base58btc(identity_multihash(protobuf(pubkey)))
9
- *
10
- * Note: this is plain concatenated SHA-256, NOT HMAC-SHA256. Matches the
11
- * Rust `derive` helper that does `sha256(seed.bytes() || scope)`.
12
- *
13
- * Producing the same peer-id eigenwallet would derive from the same seed is
14
- * what makes cross-binary recovery work without patching eigenwallet.
15
- */
1
+ // Byte-for-byte match with eigenwallet swap/src/seed.rs::derive_libp2p_identity:
2
+ // network_seed = SHA256(master_seed || "NETWORK")
3
+ // libp2p_seed = SHA256(network_seed || "LIBP2P_IDENTITY")
4
+ // keypair = Ed25519::from_bytes(libp2p_seed)
5
+ // peer_id = base58btc(identity_multihash(protobuf(pubkey)))
6
+ // Plain concat-SHA-256, NOT HMAC. Matching the Rust derivation gives us the
7
+ // same peer-id, which is what enables cross-binary recovery without patching.
16
8
  import { sha256, sha512 } from '@noble/hashes/sha2.js';
17
9
  import { getPublicKey, hashes as edHashes } from '@noble/ed25519';
18
10
  import { base58 } from '@scure/base';
19
11
  import { hexToBytes, bytesToHex } from '@noble/hashes/utils.js';
20
- // `@noble/ed25519`'s default async API hits WebCrypto for SHA-512, which
21
- // browsers gate to secure contexts (HTTPS / localhost / 127.0.0.1). Self-
22
- // hosted miradex-web runs over plain HTTP from a LAN IP, .local hostname,
23
- // or onion address none of which qualify and any call to
24
- // `getPublicKeyAsync` throws "crypto.subtle must be defined, consider
25
- // polyfill". Wire the pure-JS sha512 from `@noble/hashes` (sibling of the
26
- // sha256 we already use) into ed25519's sync hash slot once at module load
27
- // so we can use the sync `getPublicKey` everywhere instead. Same crypto
28
- // guarantees, zero new deps, no secure-context requirement.
12
+ // @noble/ed25519's async API uses WebCrypto SHA-512, which browsers gate to
13
+ // secure contexts. Self-hosted miradex-web runs over plain HTTP from a LAN
14
+ // IP / .local / onion none qualify so getPublicKeyAsync throws. Wire the
15
+ // pure-JS @noble/hashes sha512 into ed25519's sync hash slot to keep the
16
+ // sync API working everywhere. Same crypto, no secure-context requirement.
29
17
  edHashes.sha512 = sha512;
30
18
  const NETWORK_DOMAIN = new TextEncoder().encode('NETWORK');
31
19
  const LIBP2P_IDENTITY_DOMAIN = new TextEncoder().encode('LIBP2P_IDENTITY');
@@ -56,16 +44,16 @@ export async function deriveLibp2pIdentity(masterSeedHex) {
56
44
  throw new Error(`Ed25519 pubkey must be 32 bytes, got ${String(publicKey.length)}`);
57
45
  }
58
46
  // libp2p PublicKey protobuf:
59
- // field 1 (KeyType = Ed25519 = 1): tag 0x08, value 0x01
60
- // field 2 (Data, 32 bytes): tag 0x12, length 0x20, <32 bytes>
47
+ // field 1 KeyType=Ed25519: tag 0x08, value 0x01
48
+ // field 2 Data 32B: tag 0x12, length 0x20, <32 bytes>
61
49
  const pubkeyProto = new Uint8Array(PROTOBUF_PUBKEY_LEN);
62
50
  pubkeyProto[0] = PROTOBUF_KEYTYPE_TAG;
63
51
  pubkeyProto[1] = PROTOBUF_KEYTYPE_ED25519;
64
52
  pubkeyProto[2] = PROTOBUF_DATA_TAG;
65
53
  pubkeyProto[3] = ED25519_PUBKEY_BYTES;
66
54
  pubkeyProto.set(publicKey, 4);
67
- // Identity multihash (code 0x00) for keys 42 bytes — libp2p uses this
68
- // for Ed25519 PeerIds.
55
+ // Identity multihash (code 0x00) for keys <= 42B; libp2p uses this for
56
+ // Ed25519 PeerIds.
69
57
  const multihash = new Uint8Array(2 + pubkeyProto.length);
70
58
  multihash[0] = IDENTITY_MULTIHASH_CODE;
71
59
  multihash[1] = pubkeyProto.length;
@@ -1 +1 @@
1
- {"version":3,"file":"libp2p-identity.js","sourceRoot":"","sources":["../../../src/lib/crypto/libp2p-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEhE,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,6DAA6D;AAC7D,sEAAsE;AACtE,0EAA0E;AAC1E,2EAA2E;AAC3E,wEAAwE;AACxE,4DAA4D;AAC5D,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;AAEzB,MAAM,cAAc,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3D,MAAM,sBAAsB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE3E,SAAS,WAAW,CAAC,CAAa,EAAE,CAAa;IAC/C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACd,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,IAAgB,EAAE,KAAiB;IACtD,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC;AAWD,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,aAAqB;IAErB,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,SAAS,CAAC,MAAM,KAAK,oBAAoB,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,wCAAwC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,0DAA0D;IAC1D,wEAAwE;IACxE,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACxD,WAAW,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC;IACtC,WAAW,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC;IAC1C,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;IACnC,WAAW,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC;IACtC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAE9B,wEAAwE;IACxE,uBAAuB;IACvB,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACzD,SAAS,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC;IACvC,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;IAClC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAExC,OAAO;QACL,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC;QACrC,YAAY,EAAE,MAAM;QACpB,uBAAuB,EAAE,UAAU,CAAC,WAAW,CAAC;KACjD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"libp2p-identity.js","sourceRoot":"","sources":["../../../src/lib/crypto/libp2p-identity.ts"],"names":[],"mappings":"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"}
@@ -11,16 +11,7 @@ export interface MnemonicKeys {
11
11
  readonly b_seed: string;
12
12
  readonly derivation: KeystoreDerivation;
13
13
  }
14
- /**
15
- * Generate a fresh 24-word BIP39 mnemonic (256 bits of entropy, sourced from
16
- * the platform's `crypto.getRandomValues` via @scure/bip39) and derive every
17
- * downstream swap key.
18
- */
19
14
  export declare function generateMnemonicKeys(network?: 'mainnet' | 'testnet' | 'regtest'): MnemonicKeys;
20
- /**
21
- * Derive all keys from an existing mnemonic.
22
- * Throws if the mnemonic is invalid.
23
- */
24
15
  export declare function deriveFromMnemonic(mnemonic: string, network?: 'mainnet' | 'testnet' | 'regtest'): MnemonicKeys;
25
16
  export declare class MnemonicError extends Error {
26
17
  readonly name = "MnemonicError";
@@ -1 +1 @@
1
- {"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/mnemonic.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAczD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,SAAS,GAAG,SAAS,GAAG,SAAqB,GAAG,YAAY,CAGzG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,SAAS,GAAG,SAAS,GAAG,SAAqB,GACrD,YAAY,CAuDd;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,mBAAmB;CACjC"}
1
+ {"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/mnemonic.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAczD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;CACzC;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,SAAS,GAAG,SAAS,GAAG,SAAqB,GAAG,YAAY,CAGzG;AAGD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,SAAS,GAAG,SAAS,GAAG,SAAqB,GACrD,YAAY,CAsDd;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,mBAAmB;CACjC"}
@@ -1,19 +1,11 @@
1
- /**
2
- * BIP39 mnemonic-based deterministic key derivation for atomic swaps.
3
- *
4
- * Derivation scheme (miradex-v0):
5
- * BIP39 mnemonic (24 words, 256-bit entropy)
6
- * -> BIP32 seed (64 bytes via PBKDF2)
7
- * -> BTC key: m/84'/0'/0'/0/0 (BIP84 P2WPKH)
8
- * -> s_b: HMAC-SHA512(seed, "miradex/s_b/v0") -> first 32 bytes -> reduce mod L
9
- * -> v_b: HMAC-SHA512(seed, "miradex/v_b/v0") -> first 32 bytes -> reduce mod L
10
- *
11
- * The mnemonic is THE master recovery key. From it, the user can reconstruct:
12
- * - BTC funding wallet (WIF + address)
13
- * - Swap scalar s_b (for XMR sweep after maker redeems)
14
- * - View key v_b (for Monero view-only wallet)
15
- * - DLEQ proof (regenerated via WASM from s_b)
16
- */
1
+ // Derivation scheme miradex-v0:
2
+ // 24-word BIP39 mnemonic (256-bit entropy)
3
+ // -> BIP32 seed (PBKDF2)
4
+ // -> BTC: m/84'/0'/0'/0/0 (BIP84 P2WPKH)
5
+ // -> s_b: HMAC-SHA512(seed, "miradex/s_b/v0")[:32] mod L
6
+ // -> v_b: HMAC-SHA512(seed, "miradex/v_b/v0")[:32] mod L
7
+ // The mnemonic is the master recovery key for the BTC wallet, s_b, v_b, and
8
+ // the DLEQ proof (re-derived via WASM).
17
9
  import * as bip39 from 'bip39';
18
10
  import { BIP32Factory } from 'bip32';
19
11
  import * as ecc from 'tiny-secp256k1';
@@ -30,19 +22,12 @@ const BTC_KEY_DOMAIN = 'miradex/b/v0';
30
22
  function btcDerivationPath(network) {
31
23
  return network === 'mainnet' ? "m/84'/0'/0'/0/0" : "m/84'/1'/0'/0/0";
32
24
  }
33
- /**
34
- * Generate a fresh 24-word BIP39 mnemonic (256 bits of entropy, sourced from
35
- * the platform's `crypto.getRandomValues` via @scure/bip39) and derive every
36
- * downstream swap key.
37
- */
25
+ // 24-word BIP39, entropy from crypto.getRandomValues via @scure/bip39.
38
26
  export function generateMnemonicKeys(network = 'mainnet') {
39
27
  const mnemonic = bip39.generateMnemonic(256);
40
28
  return deriveFromMnemonic(mnemonic, network);
41
29
  }
42
- /**
43
- * Derive all keys from an existing mnemonic.
44
- * Throws if the mnemonic is invalid.
45
- */
30
+ // Throws MnemonicError on an invalid mnemonic.
46
31
  export function deriveFromMnemonic(mnemonic, network = 'mainnet') {
47
32
  const words = mnemonic.trim().split(/\s+/);
48
33
  if (words.length !== 12 && words.length !== 24) {
@@ -70,8 +55,7 @@ export function deriveFromMnemonic(mnemonic, network = 'mainnet') {
70
55
  const v_b_seed = bytesToHex(v_b_raw.subarray(0, 32));
71
56
  const b_raw = hmac(sha512, seed, new TextEncoder().encode(BTC_KEY_DOMAIN));
72
57
  const b_seed = bytesToHex(b_raw.subarray(0, 32));
73
- // AV-G.2: wipe the HMAC scratch and the root seed as soon as every derived
74
- // hex string is captured. Best-effort; V8 may copy internally.
58
+ // AV-G.2: wipe scratch + root seed as soon as the derived hex is captured.
75
59
  wipe(s_b_raw);
76
60
  wipe(v_b_raw);
77
61
  wipe(b_raw);
@@ -1 +1 @@
1
- {"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../../../src/lib/crypto/mnemonic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../../../src/lib/crypto/mnemonic.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,6CAA6C;AAC7C,6BAA6B;AAC7B,+CAA+C;AAC/C,+DAA+D;AAC/D,+DAA+D;AAC/D,4EAA4E;AAC5E,wCAAwC;AAExC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAEhC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AACvC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AACvC,MAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,MAAM,cAAc,GAAG,cAAc,CAAC;AAEtC,SAAS,iBAAiB,CAAC,OAA0C;IACnE,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACvE,CAAC;AAeD,uEAAuE;AACvE,MAAM,UAAU,oBAAoB,CAAC,UAA6C,SAAS;IACzF,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,UAA6C,SAAS;IAEtD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,aAAa,CAAC,wCAAwC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7I,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACpC,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,aAAa,CAAC,4CAA4C,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAEjD,2EAA2E;IAC3E,IAAI,CAAC,OAAO,CAAC,CAAC;IACd,IAAI,CAAC,OAAO,CAAC,CAAC;IACd,IAAI,CAAC,KAAK,CAAC,CAAC;IACZ,IAAI,CAAC,IAAI,CAAC,CAAC;IAEX,OAAO;QACL,QAAQ;QACR,GAAG;QACH,UAAU,EAAE,OAAO;QACnB,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,UAAU,EAAE;YACV,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,aAAa;YAC3B,aAAa,EAAE,eAAe;SAC/B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,GAAG,eAAe,CAAC;CACjC"}
@@ -1,10 +1,4 @@
1
- /**
2
- * Runtime environment detection for the WASM loader.
3
- * Result is cached after the first call; call `__resetPlatformCache`
4
- * from tests to observe a freshly-detected platform.
5
- */
6
1
  export type Platform = 'node' | 'browser' | 'react-native' | 'electron-renderer' | 'electron-main' | 'worker' | 'unknown';
7
2
  export declare function detectPlatform(): Platform;
8
- /** Test-only; not for production code paths. */
9
3
  export declare function __resetPlatformCache(): void;
10
4
  //# sourceMappingURL=platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/platform.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,SAAS,GACT,cAAc,GACd,mBAAmB,GACnB,eAAe,GACf,QAAQ,GACR,SAAS,CAAC;AAId,wBAAgB,cAAc,IAAI,QAAQ,CAIzC;AAwBD,gDAAgD;AAChD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/platform.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,SAAS,GACT,cAAc,GACd,mBAAmB,GACnB,eAAe,GACf,QAAQ,GACR,SAAS,CAAC;AAId,wBAAgB,cAAc,IAAI,QAAQ,CAIzC;AAyBD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -1,8 +1,4 @@
1
- /**
2
- * Runtime environment detection for the WASM loader.
3
- * Result is cached after the first call; call `__resetPlatformCache`
4
- * from tests to observe a freshly-detected platform.
5
- */
1
+ // Result is cached after the first call; tests can call __resetPlatformCache.
6
2
  let cached = null;
7
3
  export function detectPlatform() {
8
4
  if (cached)
@@ -31,7 +27,7 @@ function computePlatform() {
31
27
  return 'browser';
32
28
  return 'unknown';
33
29
  }
34
- /** Test-only; not for production code paths. */
30
+ // Test-only.
35
31
  export function __resetPlatformCache() {
36
32
  cached = null;
37
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/lib/crypto/platform.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,IAAI,MAAM,GAAoB,IAAI,CAAC;AAEnC,MAAM,UAAU,cAAc;IAC5B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,eAAe,EAAE,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,CAAC,GAAG,UAAqC,CAAC;IAEhD,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAqC,CAAC;IACrE,IAAI,SAAS,EAAE,OAAO,KAAK,aAAa;QAAE,OAAO,cAAc,CAAC;IAEhE,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,MAAM,IAAI,GAAI,OAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,UAAU;YAAE,OAAO,mBAAmB,CAAC;QACpD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,eAAe,CAAC;IACjD,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAA4C,CAAC;IACxE,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,aAAa,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IAElF,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI;QAAE,OAAO,MAAM,CAAC;IAE5E,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE/E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/lib/crypto/platform.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAW9E,IAAI,MAAM,GAAoB,IAAI,CAAC;AAEnC,MAAM,UAAU,cAAc;IAC5B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,eAAe,EAAE,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,CAAC,GAAG,UAAqC,CAAC;IAEhD,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAqC,CAAC;IACrE,IAAI,SAAS,EAAE,OAAO,KAAK,aAAa;QAAE,OAAO,cAAc,CAAC;IAEhE,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,MAAM,IAAI,GAAI,OAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,UAAU;YAAE,OAAO,mBAAmB,CAAC;QACpD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,eAAe,CAAC;IACjD,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAA4C,CAAC;IACxE,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,aAAa,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IAElF,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI;QAAE,OAAO,MAAM,CAAC;IAE5E,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE/E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,aAAa;AACb,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC"}
@@ -1,33 +1,10 @@
1
- /**
2
- * Ed25519 scalar arithmetic for atomic-swap key combination.
3
- *
4
- * All Monero scalars are encoded little-endian per the protocol spec; Bitcoin
5
- * sighash machinery is big-endian. Each function names its endianness.
6
- */
7
- /** Ed25519 scalar-field prime (2^252 + 27742317777372353535851937790883648493). */
8
1
  export declare const ED25519_GROUP_ORDER: bigint;
9
- /**
10
- * Decode a byte sequence as a little-endian bigint (byte[0] is the
11
- * least-significant byte). This is the Monero / ed25519 convention.
12
- */
13
2
  export declare function bytesToBigIntLE(bytes: Uint8Array): bigint;
14
- /**
15
- * Decode a byte sequence as a big-endian bigint (byte[0] is the
16
- * most-significant byte). This is the Bitcoin sighash convention.
17
- */
18
3
  export declare function bytesToBigIntBE(bytes: Uint8Array): bigint;
19
- /**
20
- * Back-compat alias for `bytesToBigIntLE`. Every call site should prefer the
21
- * endian-suffixed variant so the byte order is visible at the call site.
22
- */
23
4
  export declare function bytesToBigInt(bytes: Uint8Array): bigint;
24
- /** Encode a non-negative bigint as a 32-byte little-endian buffer, reduced mod L. */
25
5
  export declare function bigIntToBytes(num: bigint): Uint8Array;
26
- /** Decode a hex-encoded little-endian scalar and reduce it mod L. */
27
6
  export declare function hexToScalarLE(hex: string): bigint;
28
- /** Sum two 32-byte little-endian scalars mod L, returning a 32-byte LE buffer. */
29
7
  export declare function addScalars(a: Uint8Array, b: Uint8Array): Uint8Array;
30
- /** Back-compat hex/byte helpers used by older call sites. */
31
8
  export declare function bytesToHex(bytes: Uint8Array): string;
32
9
  export declare function hexToBytes(hex: string): Uint8Array;
33
10
  //# sourceMappingURL=scalars.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scalars.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/scalars.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,QACkC,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAQzD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMzD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAQrD;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAEnE;AAeD,6DAA6D;AAC7D,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAElD"}
1
+ {"version":3,"file":"scalars.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/scalars.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,QACkC,CAAC;AAGnE,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAQzD;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMzD;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEvD;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAQrD;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIjD;AAGD,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAEnE;AAgBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAElD"}
@@ -1,15 +1,8 @@
1
- /**
2
- * Ed25519 scalar arithmetic for atomic-swap key combination.
3
- *
4
- * All Monero scalars are encoded little-endian per the protocol spec; Bitcoin
5
- * sighash machinery is big-endian. Each function names its endianness.
6
- */
7
- /** Ed25519 scalar-field prime (2^252 + 27742317777372353535851937790883648493). */
1
+ // Monero scalars are little-endian; Bitcoin sighash is big-endian. Each
2
+ // function names its endianness explicitly.
3
+ // 2^252 + 27_742_317_777_372_353_535_851_937_790_883_648_493.
8
4
  export const ED25519_GROUP_ORDER = 2n ** 252n + 27742317777372353535851937790883648493n;
9
- /**
10
- * Decode a byte sequence as a little-endian bigint (byte[0] is the
11
- * least-significant byte). This is the Monero / ed25519 convention.
12
- */
5
+ // Monero / ed25519: byte[0] is least-significant.
13
6
  export function bytesToBigIntLE(bytes) {
14
7
  let result = 0n;
15
8
  for (let i = bytes.length - 1; i >= 0; i--) {
@@ -20,10 +13,7 @@ export function bytesToBigIntLE(bytes) {
20
13
  }
21
14
  return result;
22
15
  }
23
- /**
24
- * Decode a byte sequence as a big-endian bigint (byte[0] is the
25
- * most-significant byte). This is the Bitcoin sighash convention.
26
- */
16
+ // Bitcoin sighash: byte[0] is most-significant.
27
17
  export function bytesToBigIntBE(bytes) {
28
18
  let result = 0n;
29
19
  for (const b of bytes) {
@@ -31,14 +21,11 @@ export function bytesToBigIntBE(bytes) {
31
21
  }
32
22
  return result;
33
23
  }
34
- /**
35
- * Back-compat alias for `bytesToBigIntLE`. Every call site should prefer the
36
- * endian-suffixed variant so the byte order is visible at the call site.
37
- */
24
+ // Back-compat alias. New call sites: prefer bytesToBigIntLE.
38
25
  export function bytesToBigInt(bytes) {
39
26
  return bytesToBigIntLE(bytes);
40
27
  }
41
- /** Encode a non-negative bigint as a 32-byte little-endian buffer, reduced mod L. */
28
+ // 32B LE, reduced mod L.
42
29
  export function bigIntToBytes(num) {
43
30
  const bytes = new Uint8Array(32);
44
31
  let n = ((num % ED25519_GROUP_ORDER) + ED25519_GROUP_ORDER) % ED25519_GROUP_ORDER;
@@ -48,13 +35,13 @@ export function bigIntToBytes(num) {
48
35
  }
49
36
  return bytes;
50
37
  }
51
- /** Decode a hex-encoded little-endian scalar and reduce it mod L. */
38
+ // Decode hex LE scalar, reduce mod L.
52
39
  export function hexToScalarLE(hex) {
53
40
  const bytes = hexToBytesLocal(hex);
54
41
  const raw = bytesToBigIntLE(bytes);
55
42
  return ((raw % ED25519_GROUP_ORDER) + ED25519_GROUP_ORDER) % ED25519_GROUP_ORDER;
56
43
  }
57
- /** Sum two 32-byte little-endian scalars mod L, returning a 32-byte LE buffer. */
44
+ // Sum two 32B LE scalars mod L; returns 32B LE.
58
45
  export function addScalars(a, b) {
59
46
  return bigIntToBytes((bytesToBigIntLE(a) + bytesToBigIntLE(b)) % ED25519_GROUP_ORDER);
60
47
  }
@@ -71,7 +58,7 @@ function hexToBytesLocal(hex) {
71
58
  }
72
59
  return out;
73
60
  }
74
- /** Back-compat hex/byte helpers used by older call sites. */
61
+ // Back-compat hex/byte helpers for older call sites.
75
62
  export function bytesToHex(bytes) {
76
63
  return Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');
77
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scalars.js","sourceRoot":"","sources":["../../../src/lib/crypto/scalars.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scalars.js","sourceRoot":"","sources":["../../../src/lib/crypto/scalars.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,3 @@
1
- /**
2
- * Shape of the compiled miradex-rust module after `init()` runs.
3
- * Mirrors #[wasm_bindgen] exports in ../../../miradex-rust/src/lib.rs.
4
- */
5
1
  export interface WasmModule {
6
2
  readonly generate_client_keys: () => string;
7
3
  readonly generate_client_keys_from_seed: (s_b_hex: string, v_b_hex: string, b_hex: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,UAAU;IAEzB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,MAAM,CAAC;IAC5C,QAAQ,CAAC,8BAA8B,EAAE,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,KACV,MAAM,CAAC;IACZ,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;IAGb,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACpE,QAAQ,CAAC,cAAc,EAAE,CACvB,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,KACf,MAAM,CAAC;IACZ,QAAQ,CAAC,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/E,QAAQ,CAAC,aAAa,EAAE,CACtB,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC;IACb,QAAQ,CAAC,sBAAsB,EAAE,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,KACvB,MAAM,CAAC;IAGZ,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,KAClB,MAAM,CAAC;IACZ,QAAQ,CAAC,aAAa,EAAE,CACtB,iBAAiB,EAAE,MAAM,EACzB,4BAA4B,EAAE,MAAM,EACpC,SAAS,EAAE,MAAM,KACd,MAAM,CAAC;IACZ,QAAQ,CAAC,aAAa,EAAE,CACtB,sBAAsB,EAAE,MAAM,EAC9B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,KACjB,MAAM,CAAC;IACZ,QAAQ,CAAC,uBAAuB,EAAE,CAChC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,KACjB,MAAM,CAAC;IACZ,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,MAAM,KAC5B,OAAO,CAAC;IACb,QAAQ,CAAC,cAAc,EAAE,CACvB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,EACpB,oBAAoB,EAAE,MAAM,KACzB,MAAM,CAAC;IAGZ,QAAQ,CAAC,2BAA2B,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1E,QAAQ,CAAC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAGpF,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC;CAChC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IAEzB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,MAAM,CAAC;IAC5C,QAAQ,CAAC,8BAA8B,EAAE,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,KACV,MAAM,CAAC;IACZ,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;IAGb,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACpE,QAAQ,CAAC,cAAc,EAAE,CACvB,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,KACf,MAAM,CAAC;IACZ,QAAQ,CAAC,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/E,QAAQ,CAAC,aAAa,EAAE,CACtB,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC;IACb,QAAQ,CAAC,sBAAsB,EAAE,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,KACvB,MAAM,CAAC;IAGZ,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,KAClB,MAAM,CAAC;IACZ,QAAQ,CAAC,aAAa,EAAE,CACtB,iBAAiB,EAAE,MAAM,EACzB,4BAA4B,EAAE,MAAM,EACpC,SAAS,EAAE,MAAM,KACd,MAAM,CAAC;IACZ,QAAQ,CAAC,aAAa,EAAE,CACtB,sBAAsB,EAAE,MAAM,EAC9B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,KACjB,MAAM,CAAC;IACZ,QAAQ,CAAC,uBAAuB,EAAE,CAChC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,KACjB,MAAM,CAAC;IACZ,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,MAAM,KAC5B,OAAO,CAAC;IACb,QAAQ,CAAC,cAAc,EAAE,CACvB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,EACpB,oBAAoB,EAAE,MAAM,KACzB,MAAM,CAAC;IAGZ,QAAQ,CAAC,2BAA2B,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1E,QAAQ,CAAC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAGpF,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC;CAChC"}
@@ -1,30 +1,8 @@
1
- /**
2
- * Unified WASM loader + synchronous crypto wrappers.
3
- *
4
- * Callers invoke `await ensureWasm()` once (typically at the entry of an
5
- * atomic-swap flow) and then call the synchronous wrappers afterwards.
6
- * Thorchain, Chainflip, and NEAR-Intents verification paths never call this
7
- * file, so the WASM binary is never loaded when those providers are used.
8
- */
9
1
  import type { WasmModule } from './types.js';
10
2
  import type { ClientKeys } from '../../types/index.js';
11
3
  export interface EnsureWasmOptions {
12
- /**
13
- * When true, hash the loaded bytes and compare to SWAP_WASM_SHA256.
14
- * When undefined, falls back to process.env.MIRADEX_VERIFY_WASM === '1'.
15
- * Default: unverified (matches today's keygen-wasm behaviour).
16
- */
17
4
  readonly verifyIntegrity?: boolean;
18
- /**
19
- * Custom byte reader — used when the default platform reader cannot locate
20
- * the binary (e.g., browser with a non-default asset path).
21
- * Ignored if `overrideBytes` is provided.
22
- */
23
5
  readonly loadBytes?: () => Promise<Uint8Array>;
24
- /**
25
- * Pre-loaded bytes. Required on React Native. When provided, no byte
26
- * reader runs; integrity still runs if `verifyIntegrity` is true.
27
- */
28
6
  readonly overrideBytes?: Uint8Array;
29
7
  }
30
8
  export declare function ensureWasm(options?: EnsureWasmOptions): Promise<void>;
@@ -46,6 +24,5 @@ export declare function verifyCommitment(viewKeyHex: string, txPublicKeyHex: str
46
24
  export declare function decryptAmount(viewKeyHex: string, txPublicKeyHex: string, outputIndex: number, encryptedAmountHex: string): bigint;
47
25
  export declare function secp256k1ScalarToEd25519(secpScalarHex: string): string;
48
26
  export declare function ed25519ScalarAdd(scalarAHex: string, scalarBHex: string): string;
49
- /** Test-only: reset the cache so successive tests can re-init the module. */
50
27
  export declare function __resetWasmCache(): void;
51
28
  //# sourceMappingURL=wasm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/wasm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/wasm.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD,MAAM,WAAW,iBAAiB;IAGhC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAGnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/C,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;CACrC;AAED,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC3E;AA6FD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AACD,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAEhD;AAyBD,wBAAgB,kBAAkB,IAAI,UAAU,CAE/C;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,UAAU,CAEZ;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAET;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,YAAY,CAC1B,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAET;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAER;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAER;AAED,wBAAgB,YAAY,CAC1B,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,WAAW,CACzB,oBAAoB,EAAE,MAAM,EAC5B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,MAAM,CAER;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAQT;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAOR;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/E;AAGD,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
@@ -1,11 +1,6 @@
1
- /**
2
- * Unified WASM loader + synchronous crypto wrappers.
3
- *
4
- * Callers invoke `await ensureWasm()` once (typically at the entry of an
5
- * atomic-swap flow) and then call the synchronous wrappers afterwards.
6
- * Thorchain, Chainflip, and NEAR-Intents verification paths never call this
7
- * file, so the WASM binary is never loaded when those providers are used.
8
- */
1
+ // `await ensureWasm()` once at the entry of an atomic-swap flow, then call
2
+ // the sync wrappers below. Thorchain / Chainflip / NEAR-Intents verification
3
+ // never touches this file, so non-atomicswap providers don't load the binary.
9
4
  import { z } from 'zod';
10
5
  import { detectPlatform } from './platform.js';
11
6
  import { WasmError } from './errors.js';
@@ -107,23 +102,21 @@ async function verifyIntegrity(bytes) {
107
102
  }
108
103
  }
109
104
  async function instantiate(bytes) {
110
- // Relative import wasm files ship inside this package's tarball under
111
- // wasm/miradex-rust/. A separate `miradex-rust` npm package would simplify
112
- // resolution but introduces a `file:` dep that pnpm resolves relative to
113
- // the consumer instead of the package, breaking installs in workspaces.
105
+ // Relative import: wasm ships inside this package's tarball under
106
+ // wasm/miradex-rust/. A separate npm package would need a file: dep that
107
+ // pnpm resolves relative to the consumer, breaking workspace installs.
114
108
  const wasmBindgen = (await import('../../../wasm/miradex-rust/miradex_rust.js'));
115
109
  await wasmBindgen.default({ module_or_path: bytes });
116
110
  return wasmBindgen;
117
111
  }
118
- // Cache introspection / direct injection. `initKeygen` is the testing seam
119
- // production code only ever reaches the cache through `ensureWasm`.
112
+ // initKeygen is the testing seam; production code reaches the cache via ensureWasm.
120
113
  export function isKeygenAvailable() {
121
114
  return cached !== null;
122
115
  }
123
116
  export function initKeygen(mod) {
124
117
  cached = mod;
125
118
  }
126
- // Synchronous wrappers below every caller must `await ensureWasm()` first.
119
+ // Sync wrappers below: callers must await ensureWasm() first.
127
120
  const ClientKeysSchema = z.object({
128
121
  s_b_bitcoin: z.string(),
129
122
  s_b_monero: z.string(),
@@ -188,7 +181,7 @@ export function secp256k1ScalarToEd25519(secpScalarHex) {
188
181
  export function ed25519ScalarAdd(scalarAHex, scalarBHex) {
189
182
  return getModule().ed25519_scalar_add(scalarAHex, scalarBHex);
190
183
  }
191
- /** Test-only: reset the cache so successive tests can re-init the module. */
184
+ // Test-only.
192
185
  export function __resetWasmCache() {
193
186
  cached = null;
194
187
  initInFlight = null;