@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.
- package/README.md +57 -292
- package/dist/address/base58.d.ts.map +1 -1
- package/dist/address/base58.js +1 -2
- package/dist/address/base58.js.map +1 -1
- package/dist/address/bech32.d.ts +0 -8
- package/dist/address/bech32.d.ts.map +1 -1
- package/dist/address/bech32.js +3 -9
- package/dist/address/bech32.js.map +1 -1
- package/dist/address/evm.d.ts.map +1 -1
- package/dist/address/evm.js +1 -2
- package/dist/address/evm.js.map +1 -1
- package/dist/address/index.d.ts +0 -6
- package/dist/address/index.d.ts.map +1 -1
- package/dist/address/index.js +6 -9
- package/dist/address/index.js.map +1 -1
- package/dist/address/monero.d.ts +0 -10
- package/dist/address/monero.d.ts.map +1 -1
- package/dist/address/monero.js +4 -10
- package/dist/address/monero.js.map +1 -1
- package/dist/address/polkadot.d.ts +0 -5
- package/dist/address/polkadot.d.ts.map +1 -1
- package/dist/address/polkadot.js +2 -6
- package/dist/address/polkadot.js.map +1 -1
- package/dist/address/ton.d.ts +0 -6
- package/dist/address/ton.d.ts.map +1 -1
- package/dist/address/ton.js +3 -8
- package/dist/address/ton.js.map +1 -1
- package/dist/api/index.d.ts +0 -19
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +18 -37
- package/dist/api/index.js.map +1 -1
- package/dist/atomic-swap/drive.d.ts +0 -13
- package/dist/atomic-swap/drive.d.ts.map +1 -1
- package/dist/atomic-swap/drive.js +72 -114
- package/dist/atomic-swap/drive.js.map +1 -1
- package/dist/atomic-swap/extract.d.ts +0 -23
- package/dist/atomic-swap/extract.d.ts.map +1 -1
- package/dist/atomic-swap/extract.js +6 -16
- package/dist/atomic-swap/extract.js.map +1 -1
- package/dist/atomic-swap/index.d.ts +0 -7
- package/dist/atomic-swap/index.d.ts.map +1 -1
- package/dist/atomic-swap/index.js +1 -7
- package/dist/atomic-swap/index.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/errors.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/errors.js +5 -20
- package/dist/atomic-swap/monero-sweep/errors.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/index.d.ts +1 -13
- package/dist/atomic-swap/monero-sweep/index.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/index.js +36 -65
- package/dist/atomic-swap/monero-sweep/index.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/ring-select.d.ts +0 -4
- package/dist/atomic-swap/monero-sweep/ring-select.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/ring-select.js +9 -21
- package/dist/atomic-swap/monero-sweep/ring-select.js.map +1 -1
- package/dist/atomic-swap/presign.d.ts +0 -63
- package/dist/atomic-swap/presign.d.ts.map +1 -1
- package/dist/atomic-swap/presign.js +30 -90
- package/dist/atomic-swap/presign.js.map +1 -1
- package/dist/atomic-swap/refund.d.ts +0 -18
- package/dist/atomic-swap/refund.d.ts.map +1 -1
- package/dist/atomic-swap/refund.js +16 -32
- package/dist/atomic-swap/refund.js.map +1 -1
- package/dist/atomic-swap/run.d.ts +0 -17
- package/dist/atomic-swap/run.d.ts.map +1 -1
- package/dist/atomic-swap/run.js +11 -25
- package/dist/atomic-swap/run.js.map +1 -1
- package/dist/atomic-swap/snapshot.d.ts +0 -30
- package/dist/atomic-swap/snapshot.d.ts.map +1 -1
- package/dist/atomic-swap/snapshot.js +8 -23
- package/dist/atomic-swap/snapshot.js.map +1 -1
- package/dist/atomic-swap/submit-encsig.d.ts +0 -7
- package/dist/atomic-swap/submit-encsig.d.ts.map +1 -1
- package/dist/atomic-swap/submit-encsig.js +8 -15
- package/dist/atomic-swap/submit-encsig.js.map +1 -1
- package/dist/atomic-swap/types.d.ts +2 -55
- package/dist/atomic-swap/types.d.ts.map +1 -1
- package/dist/atomic-swap/types.js +2 -3
- package/dist/atomic-swap/types.js.map +1 -1
- package/dist/blockchain/quorum-provider.d.ts +0 -15
- package/dist/blockchain/quorum-provider.d.ts.map +1 -1
- package/dist/blockchain/quorum-provider.js +7 -9
- package/dist/blockchain/quorum-provider.js.map +1 -1
- package/dist/cooperative-redeem.d.ts +5 -14
- package/dist/cooperative-redeem.d.ts.map +1 -1
- package/dist/cooperative-redeem.js +3 -20
- package/dist/cooperative-redeem.js.map +1 -1
- package/dist/engine/blockchain-querier.d.ts +0 -22
- package/dist/engine/blockchain-querier.d.ts.map +1 -1
- package/dist/engine/engine-state.d.ts +0 -8
- package/dist/engine/engine-state.d.ts.map +1 -1
- package/dist/engine/engine-state.js.map +1 -1
- package/dist/engine/flow-context.d.ts +0 -20
- package/dist/engine/flow-context.d.ts.map +1 -1
- package/dist/engine/flow-context.js +17 -41
- package/dist/engine/flow-context.js.map +1 -1
- package/dist/engine/flows/atomic-flow-state.d.ts +8 -1
- package/dist/engine/flows/atomic-flow-state.d.ts.map +1 -1
- package/dist/engine/flows/atomic-flow.d.ts +1 -28
- package/dist/engine/flows/atomic-flow.d.ts.map +1 -1
- package/dist/engine/flows/atomic-flow.js +98 -128
- package/dist/engine/flows/atomic-flow.js.map +1 -1
- package/dist/engine/flows/error-routing.d.ts +11 -0
- package/dist/engine/flows/error-routing.d.ts.map +1 -0
- package/dist/engine/flows/error-routing.js +17 -0
- package/dist/engine/flows/error-routing.js.map +1 -0
- package/dist/engine/flows/swap-flow.d.ts +0 -19
- package/dist/engine/flows/swap-flow.d.ts.map +1 -1
- package/dist/engine/flows/swap-flow.js +41 -83
- package/dist/engine/flows/swap-flow.js.map +1 -1
- package/dist/engine/miradex-engine.d.ts +1 -62
- package/dist/engine/miradex-engine.d.ts.map +1 -1
- package/dist/engine/miradex-engine.js +18 -50
- package/dist/engine/miradex-engine.js.map +1 -1
- package/dist/engine/pipeline.d.ts +0 -11
- package/dist/engine/pipeline.d.ts.map +1 -1
- package/dist/engine/pipeline.js +11 -21
- package/dist/engine/pipeline.js.map +1 -1
- package/dist/engine/platform.d.ts +0 -160
- package/dist/engine/platform.d.ts.map +1 -1
- package/dist/engine/platform.js +2 -0
- package/dist/engine/platform.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -11
- package/dist/index.js.map +1 -1
- package/dist/interfaces/blockchain.d.ts +1 -13
- package/dist/interfaces/blockchain.d.ts.map +1 -1
- package/dist/interfaces/blockchain.js +1 -0
- package/dist/interfaces/blockchain.js.map +1 -1
- package/dist/interfaces/logger.d.ts +0 -6
- package/dist/interfaces/logger.d.ts.map +1 -1
- package/dist/interfaces/logger.js.map +1 -1
- package/dist/lib/bitcoin/deposit-watcher.d.ts +0 -23
- package/dist/lib/bitcoin/deposit-watcher.d.ts.map +1 -1
- package/dist/lib/bitcoin/deposit-watcher.js +7 -31
- package/dist/lib/bitcoin/deposit-watcher.js.map +1 -1
- package/dist/lib/bitcoin/script-hash.d.ts.map +1 -1
- package/dist/lib/bitcoin/script-hash.js +2 -6
- package/dist/lib/bitcoin/script-hash.js.map +1 -1
- package/dist/lib/bitcoin/sweep.d.ts +0 -30
- package/dist/lib/bitcoin/sweep.d.ts.map +1 -1
- package/dist/lib/bitcoin/sweep.js +11 -40
- package/dist/lib/bitcoin/sweep.js.map +1 -1
- package/dist/lib/bitcoin/tx-verify.d.ts +0 -28
- package/dist/lib/bitcoin/tx-verify.d.ts.map +1 -1
- package/dist/lib/bitcoin/tx-verify.js +20 -61
- package/dist/lib/bitcoin/tx-verify.js.map +1 -1
- package/dist/lib/bitcoin/wallet.d.ts +0 -38
- package/dist/lib/bitcoin/wallet.d.ts.map +1 -1
- package/dist/lib/bitcoin/wallet.js +13 -38
- package/dist/lib/bitcoin/wallet.js.map +1 -1
- package/dist/lib/crypto/bytes.d.ts +0 -14
- package/dist/lib/crypto/bytes.d.ts.map +1 -1
- package/dist/lib/crypto/bytes.js +5 -14
- package/dist/lib/crypto/bytes.js.map +1 -1
- package/dist/lib/crypto/errors.d.ts +0 -5
- package/dist/lib/crypto/errors.d.ts.map +1 -1
- package/dist/lib/crypto/errors.js +2 -5
- package/dist/lib/crypto/errors.js.map +1 -1
- package/dist/lib/crypto/libp2p-identity.d.ts +0 -15
- package/dist/lib/crypto/libp2p-identity.d.ts.map +1 -1
- package/dist/lib/crypto/libp2p-identity.js +16 -28
- package/dist/lib/crypto/libp2p-identity.js.map +1 -1
- package/dist/lib/crypto/mnemonic.d.ts +0 -9
- package/dist/lib/crypto/mnemonic.d.ts.map +1 -1
- package/dist/lib/crypto/mnemonic.js +11 -27
- package/dist/lib/crypto/mnemonic.js.map +1 -1
- package/dist/lib/crypto/platform.d.ts +0 -6
- package/dist/lib/crypto/platform.d.ts.map +1 -1
- package/dist/lib/crypto/platform.js +2 -6
- package/dist/lib/crypto/platform.js.map +1 -1
- package/dist/lib/crypto/scalars.d.ts +0 -23
- package/dist/lib/crypto/scalars.d.ts.map +1 -1
- package/dist/lib/crypto/scalars.js +10 -23
- package/dist/lib/crypto/scalars.js.map +1 -1
- package/dist/lib/crypto/types.d.ts +0 -4
- package/dist/lib/crypto/types.d.ts.map +1 -1
- package/dist/lib/crypto/wasm.d.ts +0 -23
- package/dist/lib/crypto/wasm.d.ts.map +1 -1
- package/dist/lib/crypto/wasm.js +9 -16
- package/dist/lib/crypto/wasm.js.map +1 -1
- package/dist/lib/default-config.d.ts +1 -59
- package/dist/lib/default-config.d.ts.map +1 -1
- package/dist/lib/default-config.js +22 -61
- package/dist/lib/default-config.js.map +1 -1
- package/dist/lib/errors.d.ts +0 -54
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +12 -35
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/keystore.d.ts +0 -24
- package/dist/lib/keystore.d.ts.map +1 -1
- package/dist/lib/keystore.js +3 -10
- package/dist/lib/keystore.js.map +1 -1
- package/dist/lib/monero/output-scanner.d.ts +0 -18
- package/dist/lib/monero/output-scanner.d.ts.map +1 -1
- package/dist/lib/monero/output-scanner.js +17 -40
- package/dist/lib/monero/output-scanner.js.map +1 -1
- package/dist/lib/monero/rpc.d.ts +0 -64
- package/dist/lib/monero/rpc.d.ts.map +1 -1
- package/dist/lib/monero/rpc.js +17 -59
- package/dist/lib/monero/rpc.js.map +1 -1
- package/dist/lib/monero/verify-lock.d.ts +0 -12
- package/dist/lib/monero/verify-lock.d.ts.map +1 -1
- package/dist/lib/monero/verify-lock.js +9 -24
- package/dist/lib/monero/verify-lock.js.map +1 -1
- package/dist/lib/monero/verify-sweep.d.ts +0 -20
- package/dist/lib/monero/verify-sweep.d.ts.map +1 -1
- package/dist/lib/monero/verify-sweep.js +7 -25
- package/dist/lib/monero/verify-sweep.js.map +1 -1
- package/dist/lib/pow-solver.d.ts.map +1 -1
- package/dist/lib/pow-solver.js +3 -8
- package/dist/lib/pow-solver.js.map +1 -1
- package/dist/lib/retry.d.ts +7 -64
- package/dist/lib/retry.d.ts.map +1 -1
- package/dist/lib/retry.js +13 -13
- package/dist/lib/retry.js.map +1 -1
- package/dist/portable.d.ts.map +1 -1
- package/dist/portable.js +3 -4
- package/dist/portable.js.map +1 -1
- package/dist/quote-binding.d.ts +0 -13
- package/dist/quote-binding.d.ts.map +1 -1
- package/dist/quote-binding.js +3 -18
- package/dist/quote-binding.js.map +1 -1
- package/dist/swap-executor.d.ts +1 -5
- package/dist/swap-executor.d.ts.map +1 -1
- package/dist/swap-executor.js +1 -1
- package/dist/swap-executor.js.map +1 -1
- package/dist/types/api.d.ts +0 -6
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/api.js +6 -9
- package/dist/types/api.js.map +1 -1
- package/dist/types/errors.d.ts +0 -7
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +2 -7
- package/dist/types/errors.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/keys.d.ts +0 -15
- package/dist/types/keys.d.ts.map +1 -1
- package/dist/types/protocol.d.ts +0 -51
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +3 -8
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/status.d.ts +2 -0
- package/dist/types/status.d.ts.map +1 -1
- package/dist/types/status.js +17 -14
- package/dist/types/status.js.map +1 -1
- package/dist/types/verification.d.ts +0 -10
- package/dist/types/verification.d.ts.map +1 -1
- package/dist/types/verification.js +7 -15
- package/dist/types/verification.js.map +1 -1
- package/dist/verification/chainflip-networks.d.ts +2 -35
- package/dist/verification/chainflip-networks.d.ts.map +1 -1
- package/dist/verification/chainflip-networks.js +12 -4
- package/dist/verification/chainflip-networks.js.map +1 -1
- package/dist/verification/chainflip.d.ts +0 -40
- package/dist/verification/chainflip.d.ts.map +1 -1
- package/dist/verification/chainflip.js +49 -129
- package/dist/verification/chainflip.js.map +1 -1
- package/dist/verification/constants.d.ts +0 -40
- package/dist/verification/constants.d.ts.map +1 -1
- package/dist/verification/constants.js +14 -40
- package/dist/verification/constants.js.map +1 -1
- package/dist/verification/index.d.ts +0 -26
- package/dist/verification/index.d.ts.map +1 -1
- package/dist/verification/index.js +8 -12
- package/dist/verification/index.js.map +1 -1
- package/dist/verification/memo.d.ts +0 -15
- package/dist/verification/memo.d.ts.map +1 -1
- package/dist/verification/memo.js +9 -27
- package/dist/verification/memo.js.map +1 -1
- package/dist/verification/near-intents.d.ts +0 -63
- package/dist/verification/near-intents.d.ts.map +1 -1
- package/dist/verification/near-intents.js +25 -67
- package/dist/verification/near-intents.js.map +1 -1
- package/dist/verification/rate-oracle.d.ts +0 -22
- package/dist/verification/rate-oracle.d.ts.map +1 -1
- package/dist/verification/rate-oracle.js +6 -11
- package/dist/verification/rate-oracle.js.map +1 -1
- package/dist/verification/thorchain-networks.d.ts +0 -27
- package/dist/verification/thorchain-networks.d.ts.map +1 -1
- package/dist/verification/thorchain-networks.js +13 -15
- package/dist/verification/thorchain-networks.js.map +1 -1
- package/dist/verification/thorchain.d.ts +0 -30
- package/dist/verification/thorchain.d.ts.map +1 -1
- package/dist/verification/thorchain.js +24 -47
- package/dist/verification/thorchain.js.map +1 -1
- package/dist/wasm-pins.d.ts +3 -3
- package/dist/wasm-pins.js +1 -1
- package/dist/wire/near-intents.zod.d.ts +0 -27
- package/dist/wire/near-intents.zod.d.ts.map +1 -1
- package/dist/wire/near-intents.zod.js +15 -23
- package/dist/wire/near-intents.zod.js.map +1 -1
- package/dist/wire/server/action.zod.d.ts +0 -10
- package/dist/wire/server/action.zod.d.ts.map +1 -1
- package/dist/wire/server/action.zod.js +8 -14
- package/dist/wire/server/action.zod.js.map +1 -1
- package/dist/wire/server/common.zod.d.ts +0 -13
- package/dist/wire/server/common.zod.d.ts.map +1 -1
- package/dist/wire/server/common.zod.js +6 -14
- package/dist/wire/server/common.zod.js.map +1 -1
- package/dist/wire/server/quotes.zod.d.ts +35 -20
- package/dist/wire/server/quotes.zod.d.ts.map +1 -1
- package/dist/wire/server/quotes.zod.js +1 -0
- package/dist/wire/server/quotes.zod.js.map +1 -1
- package/dist/wire/server/swap.zod.d.ts +0 -42
- package/dist/wire/server/swap.zod.d.ts.map +1 -1
- package/dist/wire/server/swap.zod.js +12 -26
- package/dist/wire/server/swap.zod.js.map +1 -1
- package/dist/wire/thorchain.zod.d.ts +0 -8
- package/dist/wire/thorchain.zod.d.ts.map +1 -1
- package/dist/wire/thorchain.zod.js +3 -8
- package/dist/wire/thorchain.zod.js.map +1 -1
- package/package.json +4 -4
- package/wasm/miradex-rust/README.md +3 -4
- package/wasm/miradex-rust/miradex_rust.d.ts +4 -6
- package/wasm/miradex-rust/miradex_rust.js +4 -6
- package/wasm/miradex-rust/miradex_rust_bg.wasm +0 -0
package/dist/lib/crypto/bytes.js
CHANGED
|
@@ -10,15 +10,9 @@ export function uint8ArrayEquals(a, b) {
|
|
|
10
10
|
}
|
|
11
11
|
return true;
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
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
|
|
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":"
|
|
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
|
-
|
|
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
|
|
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":"
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
//
|
|
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
|
|
60
|
-
// field 2
|
|
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
|
|
68
|
-
//
|
|
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
|
|
1
|
+
{"version":3,"file":"libp2p-identity.js","sourceRoot":"","sources":["../../../src/lib/crypto/libp2p-identity.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,oDAAoD;AACpD,6DAA6D;AAC7D,oDAAoD;AACpD,mEAAmE;AACnE,4EAA4E;AAC5E,8EAA8E;AAE9E,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,4EAA4E;AAC5E,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,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,kDAAkD;IAClD,+DAA+D;IAC/D,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,uEAAuE;IACvE,mBAAmB;IACnB,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"}
|
|
@@ -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":"
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
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":"AAAA
|
|
1
|
+
{"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../../../src/lib/crypto/mnemonic.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"
|
|
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
|
-
|
|
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
|
|
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":"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA
|
|
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":"
|
|
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":"
|
|
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"}
|
package/dist/lib/crypto/wasm.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
|
111
|
-
// wasm/miradex-rust/. A separate
|
|
112
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
|
|
184
|
+
// Test-only.
|
|
192
185
|
export function __resetWasmCache() {
|
|
193
186
|
cached = null;
|
|
194
187
|
initInFlight = null;
|