ox 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/core/Base64.d.ts +10 -21
  3. package/dist/core/Base64.d.ts.map +1 -1
  4. package/dist/core/Base64.js +8 -127
  5. package/dist/core/Base64.js.map +1 -1
  6. package/dist/core/BinaryStateTree.d.ts.map +1 -1
  7. package/dist/core/BinaryStateTree.js +2 -2
  8. package/dist/core/BinaryStateTree.js.map +1 -1
  9. package/dist/core/Bls.d.ts.map +1 -1
  10. package/dist/core/Bls.js +19 -44
  11. package/dist/core/Bls.js.map +1 -1
  12. package/dist/core/Ed25519.d.ts.map +1 -1
  13. package/dist/core/Ed25519.js +7 -6
  14. package/dist/core/Ed25519.js.map +1 -1
  15. package/dist/core/Engine.d.ts +124 -0
  16. package/dist/core/Engine.d.ts.map +1 -0
  17. package/dist/core/Engine.js +180 -0
  18. package/dist/core/Engine.js.map +1 -0
  19. package/dist/core/Hash.d.ts +4 -4
  20. package/dist/core/Hash.d.ts.map +1 -1
  21. package/dist/core/Hash.js +9 -12
  22. package/dist/core/Hash.js.map +1 -1
  23. package/dist/core/Keystore.d.ts.map +1 -1
  24. package/dist/core/Keystore.js +15 -10
  25. package/dist/core/Keystore.js.map +1 -1
  26. package/dist/core/Mnemonic.d.ts.map +1 -1
  27. package/dist/core/Mnemonic.js +3 -2
  28. package/dist/core/Mnemonic.js.map +1 -1
  29. package/dist/core/P256.d.ts.map +1 -1
  30. package/dist/core/P256.js +8 -9
  31. package/dist/core/P256.js.map +1 -1
  32. package/dist/core/Secp256k1.d.ts.map +1 -1
  33. package/dist/core/Secp256k1.js +8 -9
  34. package/dist/core/Secp256k1.js.map +1 -1
  35. package/dist/core/WebCryptoP256.d.ts.map +1 -1
  36. package/dist/core/WebCryptoP256.js +2 -2
  37. package/dist/core/WebCryptoP256.js.map +1 -1
  38. package/dist/core/X25519.d.ts.map +1 -1
  39. package/dist/core/X25519.js +4 -3
  40. package/dist/core/X25519.js.map +1 -1
  41. package/dist/core/internal/bls.d.ts +12 -0
  42. package/dist/core/internal/bls.d.ts.map +1 -0
  43. package/dist/core/internal/bls.js +79 -0
  44. package/dist/core/internal/bls.js.map +1 -0
  45. package/dist/core/internal/codec/base64.d.ts +84 -0
  46. package/dist/core/internal/codec/base64.d.ts.map +1 -0
  47. package/dist/core/internal/codec/base64.js +177 -0
  48. package/dist/core/internal/codec/base64.js.map +1 -0
  49. package/dist/core/internal/codec/hex.d.ts +49 -4
  50. package/dist/core/internal/codec/hex.d.ts.map +1 -1
  51. package/dist/core/internal/codec/hex.js +109 -35
  52. package/dist/core/internal/codec/hex.js.map +1 -1
  53. package/dist/core/internal/curves.d.ts +17 -0
  54. package/dist/core/internal/curves.d.ts.map +1 -0
  55. package/dist/core/internal/curves.js +17 -0
  56. package/dist/core/internal/curves.js.map +1 -0
  57. package/dist/core/internal/ed25519.d.ts +14 -0
  58. package/dist/core/internal/ed25519.d.ts.map +1 -0
  59. package/dist/core/internal/ed25519.js +29 -0
  60. package/dist/core/internal/ed25519.js.map +1 -0
  61. package/dist/core/internal/engine.d.ts +278 -0
  62. package/dist/core/internal/engine.d.ts.map +1 -0
  63. package/dist/core/internal/engine.js +131 -0
  64. package/dist/core/internal/engine.js.map +1 -0
  65. package/dist/core/internal/hash.d.ts +12 -0
  66. package/dist/core/internal/hash.d.ts.map +1 -0
  67. package/dist/core/internal/hash.js +30 -0
  68. package/dist/core/internal/hash.js.map +1 -0
  69. package/dist/core/internal/keystore.d.ts +14 -0
  70. package/dist/core/internal/keystore.d.ts.map +1 -0
  71. package/dist/core/internal/keystore.js +32 -0
  72. package/dist/core/internal/keystore.js.map +1 -0
  73. package/dist/core/internal/mnemonic.d.ts +4 -0
  74. package/dist/core/internal/mnemonic.d.ts.map +1 -0
  75. package/dist/core/internal/mnemonic.js +14 -0
  76. package/dist/core/internal/mnemonic.js.map +1 -0
  77. package/dist/core/internal/p256.d.ts +14 -0
  78. package/dist/core/internal/p256.d.ts.map +1 -0
  79. package/dist/core/internal/p256.js +36 -0
  80. package/dist/core/internal/p256.js.map +1 -0
  81. package/dist/core/internal/secp256k1.d.ts +14 -0
  82. package/dist/core/internal/secp256k1.d.ts.map +1 -0
  83. package/dist/core/internal/secp256k1.js +36 -0
  84. package/dist/core/internal/secp256k1.js.map +1 -0
  85. package/dist/core/internal/x25519.d.ts +8 -0
  86. package/dist/core/internal/x25519.d.ts.map +1 -0
  87. package/dist/core/internal/x25519.js +20 -0
  88. package/dist/core/internal/x25519.js.map +1 -0
  89. package/dist/index.d.ts +35 -0
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.docs.d.ts +2 -0
  92. package/dist/index.docs.d.ts.map +1 -1
  93. package/dist/index.docs.js +2 -0
  94. package/dist/index.docs.js.map +1 -1
  95. package/dist/index.js +35 -0
  96. package/dist/index.js.map +1 -1
  97. package/dist/node/Engine.d.ts +55 -0
  98. package/dist/node/Engine.d.ts.map +1 -0
  99. package/dist/node/Engine.js +51 -0
  100. package/dist/node/Engine.js.map +1 -0
  101. package/dist/node/Hash.d.ts +39 -0
  102. package/dist/node/Hash.d.ts.map +1 -0
  103. package/dist/node/Hash.js +37 -0
  104. package/dist/node/Hash.js.map +1 -0
  105. package/dist/node/index.d.ts +39 -0
  106. package/dist/node/index.d.ts.map +1 -0
  107. package/dist/node/index.js +39 -0
  108. package/dist/node/index.js.map +1 -0
  109. package/dist/tempo/VirtualMaster.d.ts +2 -0
  110. package/dist/tempo/VirtualMaster.d.ts.map +1 -1
  111. package/dist/tempo/VirtualMaster.js +19 -5
  112. package/dist/tempo/VirtualMaster.js.map +1 -1
  113. package/dist/tempo/ZoneId.d.ts +35 -17
  114. package/dist/tempo/ZoneId.d.ts.map +1 -1
  115. package/dist/tempo/ZoneId.js +41 -16
  116. package/dist/tempo/ZoneId.js.map +1 -1
  117. package/dist/tempo/index.d.ts +5 -6
  118. package/dist/tempo/index.d.ts.map +1 -1
  119. package/dist/tempo/index.js +5 -6
  120. package/dist/tempo/index.js.map +1 -1
  121. package/dist/tempo/internal/mine.wasm.d.ts +2 -4
  122. package/dist/tempo/internal/mine.wasm.d.ts.map +1 -1
  123. package/dist/tempo/internal/mine.wasm.js +7 -12
  124. package/dist/tempo/internal/mine.wasm.js.map +1 -1
  125. package/dist/tempo/internal/virtualMasterPool.js +4 -1
  126. package/dist/tempo/internal/virtualMasterPool.js.map +1 -1
  127. package/dist/wasm/Engine.d.ts +62 -0
  128. package/dist/wasm/Engine.d.ts.map +1 -0
  129. package/dist/wasm/Engine.js +57 -0
  130. package/dist/wasm/Engine.js.map +1 -0
  131. package/dist/wasm/Hash.d.ts +49 -0
  132. package/dist/wasm/Hash.d.ts.map +1 -0
  133. package/dist/wasm/Hash.js +70 -0
  134. package/dist/wasm/Hash.js.map +1 -0
  135. package/dist/wasm/index.d.ts +46 -0
  136. package/dist/wasm/index.d.ts.map +1 -0
  137. package/dist/wasm/index.js +46 -0
  138. package/dist/wasm/index.js.map +1 -0
  139. package/dist/wasm/internal/hash.d.ts +9 -0
  140. package/dist/wasm/internal/hash.d.ts.map +1 -0
  141. package/dist/wasm/internal/hash.js +26 -0
  142. package/dist/wasm/internal/hash.js.map +1 -0
  143. package/dist/wasm/internal/hashes.wasm.d.ts +5 -0
  144. package/dist/wasm/internal/hashes.wasm.d.ts.map +1 -0
  145. package/dist/wasm/internal/hashes.wasm.js +12 -0
  146. package/dist/wasm/internal/hashes.wasm.js.map +1 -0
  147. package/dist/wasm/internal/instantiate.d.ts +56 -0
  148. package/dist/wasm/internal/instantiate.d.ts.map +1 -0
  149. package/dist/wasm/internal/instantiate.js +92 -0
  150. package/dist/wasm/internal/instantiate.js.map +1 -0
  151. package/dist/zod/TypedData.d.ts +12 -12
  152. package/package.json +36 -1
  153. package/src/core/Base64.ts +19 -166
  154. package/src/core/BinaryStateTree.ts +2 -3
  155. package/src/core/Bls.ts +27 -77
  156. package/src/core/Ed25519.ts +7 -7
  157. package/src/core/Engine.ts +235 -0
  158. package/src/core/Hash.ts +9 -12
  159. package/src/core/Keystore.ts +17 -17
  160. package/src/core/Mnemonic.ts +3 -6
  161. package/src/core/P256.ts +15 -24
  162. package/src/core/Rlp_tx.bench.ts +2 -4
  163. package/src/core/Secp256k1.ts +9 -14
  164. package/src/core/TxEnvelopeEip1559.bench.ts +0 -5
  165. package/src/core/WebCryptoP256.ts +2 -2
  166. package/src/core/X25519.ts +4 -3
  167. package/src/core/_test/AbiParameters.adversarial.fuzz.ts +1 -2
  168. package/src/core/_test/AbiParameters.fuzz.ts +1 -2
  169. package/src/core/_test/Base.fuzz.ts +1 -2
  170. package/src/core/_test/Cbor.fuzz.ts +1 -2
  171. package/src/core/_test/Engine.fuzz.ts +293 -0
  172. package/src/core/_test/Engine.test-d.ts +84 -0
  173. package/src/core/_test/Engine.test.ts +523 -0
  174. package/src/core/_test/Hash.vectors.test.ts +56 -0
  175. package/src/core/_test/Hex.fuzz.ts +1 -2
  176. package/src/core/_test/Rlp.fuzz.ts +1 -2
  177. package/src/core/_test/Signature.fuzz.ts +1 -2
  178. package/src/core/_test/curves.test.ts +7 -0
  179. package/src/core/_test/index.test.ts +1 -0
  180. package/src/core/internal/bls.ts +121 -0
  181. package/src/core/internal/codec/_test/base64.conformance.ts +156 -0
  182. package/src/core/internal/codec/_test/hex.conformance.ts +204 -0
  183. package/src/core/internal/codec/_test/hex.fuzz.ts +234 -0
  184. package/src/core/internal/codec/_test/hex.test.ts +124 -0
  185. package/src/core/internal/codec/base64.ts +222 -0
  186. package/src/core/internal/codec/hex.ts +115 -34
  187. package/src/core/internal/curves.ts +18 -0
  188. package/src/core/internal/ed25519.ts +64 -0
  189. package/src/core/internal/engine.ts +410 -0
  190. package/src/core/internal/hash.ts +48 -0
  191. package/src/core/internal/keystore.ts +107 -0
  192. package/src/core/internal/mnemonic.ts +18 -0
  193. package/src/core/internal/p256.ts +91 -0
  194. package/src/core/internal/secp256k1.ts +91 -0
  195. package/src/core/internal/x25519.ts +40 -0
  196. package/src/index.docs.ts +2 -0
  197. package/src/index.ts +36 -0
  198. package/src/node/Engine.ts +69 -0
  199. package/src/node/Hash.ts +56 -0
  200. package/src/node/_test/Engine.test.ts +62 -0
  201. package/src/node/_test/Hash.test-d.ts +26 -0
  202. package/src/node/_test/Hash.test.ts +102 -0
  203. package/src/node/index.ts +40 -0
  204. package/src/tempo/VirtualMaster.test.ts +75 -0
  205. package/src/tempo/VirtualMaster.ts +28 -6
  206. package/src/tempo/ZoneId.test-d.ts +16 -0
  207. package/src/tempo/ZoneId.test.ts +48 -13
  208. package/src/tempo/ZoneId.ts +55 -19
  209. package/src/tempo/index.ts +5 -6
  210. package/src/tempo/internal/mine.wasm.ts +7 -13
  211. package/src/tempo/internal/virtualMasterPool.ts +4 -1
  212. package/src/tsconfig.json +2 -1
  213. package/src/version.ts +1 -1
  214. package/src/wasm/Engine.ts +76 -0
  215. package/src/wasm/Hash.bench.ts +60 -0
  216. package/src/wasm/Hash.ts +109 -0
  217. package/src/wasm/_test/Engine.test.ts +62 -0
  218. package/src/wasm/_test/Hash.browser.test.ts +50 -0
  219. package/src/wasm/_test/Hash.fuzz.ts +188 -0
  220. package/src/wasm/_test/Hash.test-d.ts +28 -0
  221. package/src/wasm/_test/Hash.test.ts +211 -0
  222. package/src/wasm/_test/Hash.vectors.test.ts +117 -0
  223. package/src/wasm/_test/Runtime.test.ts +21 -0
  224. package/src/wasm/_test/runtime.wasm.ts +11 -0
  225. package/src/wasm/index.ts +47 -0
  226. package/src/wasm/internal/hash.ts +50 -0
  227. package/src/wasm/internal/hashes.wasm.ts +14 -0
  228. package/src/wasm/internal/instantiate.ts +135 -0
  229. package/src/zod/tempo/_test/ZoneId.test.ts +2 -2
  230. package/src/tempo/internal/mine.c +0 -182
@@ -0,0 +1,278 @@
1
+ /**
2
+ * Engine slot contracts and the override registry.
3
+ *
4
+ * This module intentionally has **no imports**. It is pulled into the module
5
+ * graph of every crypto module in ox, so it must not drag any dependency along
6
+ * with it. That constraint is also why the contracts speak raw `Uint8Array`
7
+ * rather than `Bytes.Bytes`/`Hex.Hex` -- coercion stays in the public module,
8
+ * and the engine boundary is plain bytes in, plain bytes out.
9
+ *
10
+ * The registry holds **overrides only**. Defaults are never registered here,
11
+ * because a registered default has to live on a complete slot object, and a
12
+ * slot object is a single reachable value: esbuild cannot drop the properties
13
+ * of one, so every default's `@noble/*` import survives into every bundle that
14
+ * touches the slot. Measured on a keccak256-only bundle, that costs 5 kB gzip.
15
+ * Instead each slot has a resolver module under `internal/` holding one binding
16
+ * per primitive, and the fallback is chosen there, per primitive.
17
+ *
18
+ * @internal
19
+ */
20
+ /**
21
+ * Hash primitives. One-shot, synchronous, bytes in / bytes out.
22
+ *
23
+ * @internal
24
+ */
25
+ export type Hash = {
26
+ /** BLAKE3, 32-byte digest. */
27
+ blake3?: ((input: Uint8Array) => Uint8Array) | undefined;
28
+ /** HMAC-SHA256. */
29
+ hmacSha256?: ((key: Uint8Array, message: Uint8Array) => Uint8Array) | undefined;
30
+ /** Keccak256 (not FIPS-202 SHA3-256). */
31
+ keccak256?: ((input: Uint8Array) => Uint8Array) | undefined;
32
+ /** RIPEMD-160. */
33
+ ripemd160?: ((input: Uint8Array) => Uint8Array) | undefined;
34
+ /** SHA-256. */
35
+ sha256?: ((input: Uint8Array) => Uint8Array) | undefined;
36
+ };
37
+ /**
38
+ * Short-Weierstrass ECDSA. Shared by the `Secp256k1` and `P256` slots.
39
+ *
40
+ * Signatures are always low-S normalized and always returned in 65-byte
41
+ * recovered form -- the contract mandates it, so an engine cannot silently opt
42
+ * out.
43
+ *
44
+ * @internal
45
+ */
46
+ export type Ecdsa = {
47
+ /** Derives an uncompressed (65-byte) public key. */
48
+ getPublicKey?: ((privateKey: Uint8Array) => Uint8Array) | undefined;
49
+ /**
50
+ * Computes a compressed (33-byte) ECDH shared secret.
51
+ *
52
+ * `publicKey` arrives in whichever SEC1 form the caller supplied, so an
53
+ * implementation has to accept both the compressed 33-byte and uncompressed
54
+ * 65-byte encodings.
55
+ */
56
+ getSharedSecret?: ((privateKey: Uint8Array, publicKey: Uint8Array) => Uint8Array) | undefined;
57
+ /**
58
+ * Recovers an uncompressed public key from a 65-byte `yParity || r || s`
59
+ * signature, the same layout {@link Ecdsa.sign} returns.
60
+ */
61
+ recoverPublicKey?: ((signature: Uint8Array, payload: Uint8Array) => Uint8Array) | undefined;
62
+ /** Generates a random private key. */
63
+ randomSecretKey?: (() => Uint8Array) | undefined;
64
+ /** Signs a payload, returning 65 bytes of `yParity || r || s`. */
65
+ sign?: ((payload: Uint8Array, privateKey: Uint8Array, options: {
66
+ /** Extra entropy for hedged signing, or `true` for random. */
67
+ extraEntropy: boolean | Uint8Array;
68
+ /** Whether to hash the payload before signing. */
69
+ prehash: boolean;
70
+ }) => Uint8Array) | undefined;
71
+ /** Verifies a 64-byte compact (`r || s`) signature. */
72
+ verify?: ((signature: Uint8Array, payload: Uint8Array, publicKey: Uint8Array, options: {
73
+ /** Whether to hash the payload before verifying. */
74
+ prehash: boolean;
75
+ }) => boolean) | undefined;
76
+ };
77
+ /**
78
+ * Edwards-curve signatures (Ed25519).
79
+ *
80
+ * @internal
81
+ */
82
+ export type Eddsa = {
83
+ /** Derives a 32-byte public key. */
84
+ getPublicKey?: ((privateKey: Uint8Array) => Uint8Array) | undefined;
85
+ /** Generates a random private key. */
86
+ randomSecretKey?: (() => Uint8Array) | undefined;
87
+ /** Signs a payload, returning a 64-byte signature. */
88
+ sign?: ((payload: Uint8Array, privateKey: Uint8Array) => Uint8Array) | undefined;
89
+ /** Converts an Ed25519 public key to its X25519 (Montgomery) form. */
90
+ toMontgomery?: ((publicKey: Uint8Array) => Uint8Array) | undefined;
91
+ /** Converts an Ed25519 private key to its X25519 (Montgomery) form. */
92
+ toMontgomerySecret?: ((privateKey: Uint8Array) => Uint8Array) | undefined;
93
+ /** Verifies a 64-byte signature. */
94
+ verify?: ((signature: Uint8Array, payload: Uint8Array, publicKey: Uint8Array) => boolean) | undefined;
95
+ };
96
+ /**
97
+ * Montgomery-curve key agreement (X25519).
98
+ *
99
+ * @internal
100
+ */
101
+ export type Ecdh = {
102
+ /** Derives a 32-byte public key. */
103
+ getPublicKey?: ((privateKey: Uint8Array) => Uint8Array) | undefined;
104
+ /** Computes a 32-byte shared secret. */
105
+ getSharedSecret?: ((privateKey: Uint8Array, publicKey: Uint8Array) => Uint8Array) | undefined;
106
+ /** Generates a random private key. */
107
+ randomSecretKey?: (() => Uint8Array) | undefined;
108
+ };
109
+ /**
110
+ * Key derivation and symmetric primitives used by keystores.
111
+ *
112
+ * The `*Async` functions resolve independently of their synchronous twins --
113
+ * an engine that supplies only `scrypt` leaves `scryptAsync` on the default
114
+ * implementation, because wrapping a long synchronous call in a promise is
115
+ * worse than a genuinely yielding one.
116
+ *
117
+ * @internal
118
+ */
119
+ export type Keystore = {
120
+ /** AES-CTR decryption (key length selects AES-128/192/256). */
121
+ aesCtrDecrypt?: ((key: Uint8Array, iv: Uint8Array, data: Uint8Array) => Uint8Array) | undefined;
122
+ /** AES-CTR encryption (key length selects AES-128/192/256). */
123
+ aesCtrEncrypt?: ((key: Uint8Array, iv: Uint8Array, data: Uint8Array) => Uint8Array) | undefined;
124
+ /** PBKDF2-HMAC-SHA256. */
125
+ pbkdf2Sha256?: ((password: Uint8Array, salt: Uint8Array, options: {
126
+ c: number;
127
+ dkLen: number;
128
+ }) => Uint8Array) | undefined;
129
+ /** Asynchronous PBKDF2-HMAC-SHA256. */
130
+ pbkdf2Sha256Async?: ((password: Uint8Array, salt: Uint8Array, options: {
131
+ c: number;
132
+ dkLen: number;
133
+ }) => Promise<Uint8Array>) | undefined;
134
+ /** scrypt. */
135
+ scrypt?: ((password: Uint8Array, salt: Uint8Array, options: {
136
+ N: number;
137
+ dkLen: number;
138
+ p: number;
139
+ r: number;
140
+ }) => Uint8Array) | undefined;
141
+ /** Asynchronous scrypt. */
142
+ scryptAsync?: ((password: Uint8Array, salt: Uint8Array, options: {
143
+ N: number;
144
+ dkLen: number;
145
+ p: number;
146
+ r: number;
147
+ }) => Promise<Uint8Array>) | undefined;
148
+ };
149
+ /**
150
+ * BIP-39 seed derivation (PBKDF2-HMAC-SHA512, 2048 iterations).
151
+ *
152
+ * Mnemonic generation, validation, and the wordlists themselves are plain data
153
+ * and string handling, so they are not part of the engine boundary.
154
+ *
155
+ * @internal
156
+ */
157
+ export type Mnemonic = {
158
+ /** Derives a 64-byte seed from a mnemonic phrase and optional passphrase. */
159
+ toSeed?: ((mnemonic: string, passphrase?: string) => Uint8Array) | undefined;
160
+ };
161
+ /**
162
+ * BLS12-381 operations.
163
+ *
164
+ * Points cross this boundary in their compressed serialized form (48 bytes for
165
+ * G1, 96 for G2), never as projective coordinate triples -- an engine backed by
166
+ * a native library cannot be expected to reproduce another library's internal
167
+ * point representation.
168
+ *
169
+ * @internal
170
+ */
171
+ export type Bls = {
172
+ /** Aggregates compressed points of the same group. */
173
+ aggregate?: ((points: readonly Uint8Array[], group: 'G1' | 'G2') => Uint8Array) | undefined;
174
+ /** Derives a compressed public key in the given group. */
175
+ getPublicKey?: ((privateKey: Uint8Array, group: 'G1' | 'G2') => Uint8Array) | undefined;
176
+ /** Generates a random private key. */
177
+ randomSecretKey?: (() => Uint8Array) | undefined;
178
+ /** Signs a payload, returning a compressed point in the opposite group. */
179
+ sign?: ((payload: Uint8Array, privateKey: Uint8Array, options: {
180
+ /** Domain separation tag for hash-to-curve. */
181
+ dst?: Uint8Array | undefined;
182
+ /** Group of the signature. */
183
+ group: 'G1' | 'G2';
184
+ }) => Uint8Array) | undefined;
185
+ /** Verifies a compressed signature against a compressed public key. */
186
+ verify?: ((signature: Uint8Array, payload: Uint8Array, publicKey: Uint8Array, options: {
187
+ /** Domain separation tag for hash-to-curve. */
188
+ dst?: Uint8Array | undefined;
189
+ /** Group of the signature. */
190
+ signatureGroup: 'G1' | 'G2';
191
+ }) => boolean) | undefined;
192
+ };
193
+ /**
194
+ * Root engine type. Slots and functions are optional; omissions preserve
195
+ * earlier overrides, or use Ox's default when none exists.
196
+ *
197
+ * @internal
198
+ */
199
+ export type Engine = {
200
+ /** Implementation for {@link ox#Bls}. */
201
+ Bls?: Bls | undefined;
202
+ /** Implementation for {@link ox#Ed25519}. */
203
+ Ed25519?: Eddsa | undefined;
204
+ /** Implementation for {@link ox#Hash}. */
205
+ Hash?: Hash | undefined;
206
+ /** Implementation for {@link ox#Keystore}. */
207
+ Keystore?: Keystore | undefined;
208
+ /** Implementation for {@link ox#Mnemonic}. */
209
+ Mnemonic?: Mnemonic | undefined;
210
+ /** Implementation for {@link ox#P256}. */
211
+ P256?: Ecdsa | undefined;
212
+ /** Implementation for {@link ox#Secp256k1}. */
213
+ Secp256k1?: Ecdsa | undefined;
214
+ /** Implementation for {@link ox#X25519}. */
215
+ X25519?: Ecdh | undefined;
216
+ };
217
+ /**
218
+ * A slot with every function present.
219
+ *
220
+ * Slots are optional all the way down so that an engine can fill in as little
221
+ * as it likes. ox's own default implementations are held to the opposite
222
+ * standard: they back every function ox routes, so they are declared against
223
+ * this instead, and a default that goes missing or drifts from the contract
224
+ * fails to compile.
225
+ *
226
+ * @internal
227
+ */
228
+ export type Complete<slot> = {
229
+ [key in keyof slot]-?: NonNullable<slot[key]>;
230
+ };
231
+ /**
232
+ * Recognized slot names, in the order they appear on {@link Engine}.
233
+ *
234
+ * @internal
235
+ */
236
+ export declare const slots: readonly ["Bls", "Ed25519", "Hash", "Keystore", "Mnemonic", "P256", "Secp256k1", "X25519"];
237
+ /**
238
+ * Recognized primitive names, per slot.
239
+ *
240
+ * An override stored under a name no resolver reads is invisible: the default
241
+ * keeps running and nothing is reported, so a typo looks exactly like success.
242
+ * That is worst for the callers who can least afford it -- someone installing a
243
+ * policy-constrained or hardware-backed implementation silently gets ox's
244
+ * default instead. {@link Engine.set} checks against this to make it loud.
245
+ *
246
+ * @internal
247
+ */
248
+ export declare const primitives: {
249
+ readonly Bls: readonly ["aggregate", "getPublicKey", "randomSecretKey", "sign", "verify"];
250
+ readonly Ed25519: readonly ["getPublicKey", "randomSecretKey", "sign", "toMontgomery", "toMontgomerySecret", "verify"];
251
+ readonly Hash: readonly ["blake3", "hmacSha256", "keccak256", "ripemd160", "sha256"];
252
+ readonly Keystore: readonly ["aesCtrDecrypt", "aesCtrEncrypt", "pbkdf2Sha256", "pbkdf2Sha256Async", "scrypt", "scryptAsync"];
253
+ readonly Mnemonic: readonly ["toSeed"];
254
+ readonly P256: readonly ["getPublicKey", "getSharedSecret", "recoverPublicKey", "randomSecretKey", "sign", "verify"];
255
+ readonly Secp256k1: readonly ["getPublicKey", "getSharedSecret", "recoverPublicKey", "randomSecretKey", "sign", "verify"];
256
+ readonly X25519: readonly ["getPublicKey", "getSharedSecret", "randomSecretKey"];
257
+ };
258
+ /**
259
+ * The installed overrides. Empty by default -- a bare object literal, so
260
+ * bundlers treat it as side-effect free.
261
+ *
262
+ * @internal
263
+ */
264
+ export declare const overrides: Engine;
265
+ /**
266
+ * Merges overrides into the registry, one level deep. A slot set to `undefined`
267
+ * is removed.
268
+ *
269
+ * @internal
270
+ */
271
+ export declare function merge(value: Engine): void;
272
+ /**
273
+ * Removes one slot, or every slot when `slot` is omitted.
274
+ *
275
+ * @internal
276
+ */
277
+ export declare function reset(slot?: keyof Engine): void;
278
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/internal/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Engine slot contracts and the override registry.
3
+ *
4
+ * This module intentionally has **no imports**. It is pulled into the module
5
+ * graph of every crypto module in ox, so it must not drag any dependency along
6
+ * with it. That constraint is also why the contracts speak raw `Uint8Array`
7
+ * rather than `Bytes.Bytes`/`Hex.Hex` -- coercion stays in the public module,
8
+ * and the engine boundary is plain bytes in, plain bytes out.
9
+ *
10
+ * The registry holds **overrides only**. Defaults are never registered here,
11
+ * because a registered default has to live on a complete slot object, and a
12
+ * slot object is a single reachable value: esbuild cannot drop the properties
13
+ * of one, so every default's `@noble/*` import survives into every bundle that
14
+ * touches the slot. Measured on a keccak256-only bundle, that costs 5 kB gzip.
15
+ * Instead each slot has a resolver module under `internal/` holding one binding
16
+ * per primitive, and the fallback is chosen there, per primitive.
17
+ *
18
+ * @internal
19
+ */
20
+ /**
21
+ * Recognized slot names, in the order they appear on {@link Engine}.
22
+ *
23
+ * @internal
24
+ */
25
+ export const slots = [
26
+ 'Bls',
27
+ 'Ed25519',
28
+ 'Hash',
29
+ 'Keystore',
30
+ 'Mnemonic',
31
+ 'P256',
32
+ 'Secp256k1',
33
+ 'X25519',
34
+ ];
35
+ /**
36
+ * Recognized primitive names, per slot.
37
+ *
38
+ * An override stored under a name no resolver reads is invisible: the default
39
+ * keeps running and nothing is reported, so a typo looks exactly like success.
40
+ * That is worst for the callers who can least afford it -- someone installing a
41
+ * policy-constrained or hardware-backed implementation silently gets ox's
42
+ * default instead. {@link Engine.set} checks against this to make it loud.
43
+ *
44
+ * @internal
45
+ */
46
+ export const primitives = {
47
+ Bls: ['aggregate', 'getPublicKey', 'randomSecretKey', 'sign', 'verify'],
48
+ Ed25519: [
49
+ 'getPublicKey',
50
+ 'randomSecretKey',
51
+ 'sign',
52
+ 'toMontgomery',
53
+ 'toMontgomerySecret',
54
+ 'verify',
55
+ ],
56
+ Hash: ['blake3', 'hmacSha256', 'keccak256', 'ripemd160', 'sha256'],
57
+ Keystore: [
58
+ 'aesCtrDecrypt',
59
+ 'aesCtrEncrypt',
60
+ 'pbkdf2Sha256',
61
+ 'pbkdf2Sha256Async',
62
+ 'scrypt',
63
+ 'scryptAsync',
64
+ ],
65
+ Mnemonic: ['toSeed'],
66
+ P256: [
67
+ 'getPublicKey',
68
+ 'getSharedSecret',
69
+ 'recoverPublicKey',
70
+ 'randomSecretKey',
71
+ 'sign',
72
+ 'verify',
73
+ ],
74
+ Secp256k1: [
75
+ 'getPublicKey',
76
+ 'getSharedSecret',
77
+ 'recoverPublicKey',
78
+ 'randomSecretKey',
79
+ 'sign',
80
+ 'verify',
81
+ ],
82
+ X25519: ['getPublicKey', 'getSharedSecret', 'randomSecretKey'],
83
+ };
84
+ /**
85
+ * The installed overrides. Empty by default -- a bare object literal, so
86
+ * bundlers treat it as side-effect free.
87
+ *
88
+ * @internal
89
+ */
90
+ export const overrides = {};
91
+ /**
92
+ * Merges overrides into the registry, one level deep. A slot set to `undefined`
93
+ * is removed.
94
+ *
95
+ * @internal
96
+ */
97
+ export function merge(value) {
98
+ for (const key of Object.keys(value)) {
99
+ const slot = value[key];
100
+ if (slot === undefined) {
101
+ delete overrides[key];
102
+ continue;
103
+ }
104
+ // A member set to `undefined` clears that primitive. Spreading would keep
105
+ // it as an own property: calls still fall through to the default, but
106
+ // `get` would report an override that is not there.
107
+ const merged = { ...overrides[key] };
108
+ for (const [name, fn] of Object.entries(slot)) {
109
+ if (fn === undefined)
110
+ delete merged[name];
111
+ else
112
+ merged[name] = fn;
113
+ }
114
+ // An empty slot stays: `set({ Hash: {} })` is a no-op a caller wrote
115
+ // deliberately, and `get` has always reported it.
116
+ overrides[key] = merged;
117
+ }
118
+ }
119
+ /**
120
+ * Removes one slot, or every slot when `slot` is omitted.
121
+ *
122
+ * @internal
123
+ */
124
+ export function reset(slot) {
125
+ if (slot)
126
+ delete overrides[slot];
127
+ else
128
+ for (const key of Object.keys(overrides))
129
+ delete overrides[key];
130
+ }
131
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/internal/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAsRH;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK;IACL,SAAS;IACT,MAAM;IACN,UAAU;IACV,UAAU;IACV,MAAM;IACN,WAAW;IACX,QAAQ;CACoC,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,GAAG,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC;IACvE,OAAO,EAAE;QACP,cAAc;QACd,iBAAiB;QACjB,MAAM;QACN,cAAc;QACd,oBAAoB;QACpB,QAAQ;KACT;IACD,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;IAClE,QAAQ,EAAE;QACR,eAAe;QACf,eAAe;QACf,cAAc;QACd,mBAAmB;QACnB,QAAQ;QACR,aAAa;KACd;IACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,IAAI,EAAE;QACJ,cAAc;QACd,iBAAiB;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,MAAM;QACN,QAAQ;KACT;IACD,SAAS,EAAE;QACT,cAAc;QACd,iBAAiB;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,MAAM;QACN,QAAQ;KACT;IACD,MAAM,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;CAG/D,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAW,EAAE,CAAA;AAEnC;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAqB,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QACvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;YACrB,SAAQ;QACV,CAAC;QACD,0EAA0E;QAC1E,sEAAsE;QACtE,oDAAoD;QACpD,MAAM,MAAM,GAA4B,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;QAC7D,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,EAAE,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;;gBACpC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,CAAC;QACD,qEAAqE;QACrE,kDAAkD;QAClD,SAAS,CAAC,GAAG,CAAC,GAAG,MAAe,CAAA;IAClC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAmB;IACvC,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;;QAE9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAqB;YAC1D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type Complete, type Hash } from './engine.js';
2
+ /** @internal */
3
+ export declare const blake3: Complete<Hash>['blake3'];
4
+ /** @internal */
5
+ export declare const hmacSha256: Complete<Hash>['hmacSha256'];
6
+ /** @internal */
7
+ export declare const keccak256: Complete<Hash>['keccak256'];
8
+ /** @internal */
9
+ export declare const ripemd160: Complete<Hash>['ripemd160'];
10
+ /** @internal */
11
+ export declare const sha256: Complete<Hash>['sha256'];
12
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/core/internal/hash.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAa,MAAM,aAAa,CAAA;AAwBjE,gBAAgB;AAChB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CACM,CAAA;AAElD,gBAAgB;AAChB,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CACa,CAAA;AAEjE,gBAAgB;AAChB,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CACM,CAAA;AAExD,gBAAgB;AAChB,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CACM,CAAA;AAExD,gBAAgB;AAChB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CACM,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { blake3 as noble_blake3 } from '@noble/hashes/blake3.js';
2
+ import { hmac } from '@noble/hashes/hmac.js';
3
+ import { ripemd160 as noble_ripemd160 } from '@noble/hashes/legacy.js';
4
+ import { sha256 as noble_sha256 } from '@noble/hashes/sha2.js';
5
+ import { keccak_256 as noble_keccak256 } from '@noble/hashes/sha3.js';
6
+ import { overrides } from './engine.js';
7
+ /**
8
+ * Resolvers for the `Hash` slot, and ox's defaults for it, backed by
9
+ * `@noble/hashes`.
10
+ *
11
+ * Declaring the defaults against the slot contract is what keeps them honest: a
12
+ * default that goes missing, or whose signature drifts, fails to compile rather
13
+ * than failing at the call site.
14
+ */
15
+ const blake3Default = (input) => noble_blake3(input);
16
+ const hmacSha256Default = (key, message) => hmac(noble_sha256, key, message);
17
+ const keccak256Default = (input) => noble_keccak256(input);
18
+ const ripemd160Default = (input) => noble_ripemd160(input);
19
+ const sha256Default = (input) => noble_sha256(input);
20
+ /** @internal */
21
+ export const blake3 = (input) => (overrides.Hash?.blake3 ?? blake3Default)(input);
22
+ /** @internal */
23
+ export const hmacSha256 = (key, message) => (overrides.Hash?.hmacSha256 ?? hmacSha256Default)(key, message);
24
+ /** @internal */
25
+ export const keccak256 = (input) => (overrides.Hash?.keccak256 ?? keccak256Default)(input);
26
+ /** @internal */
27
+ export const ripemd160 = (input) => (overrides.Hash?.ripemd160 ?? ripemd160Default)(input);
28
+ /** @internal */
29
+ export const sha256 = (input) => (overrides.Hash?.sha256 ?? sha256Default)(input);
30
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/core/internal/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAA4B,SAAS,EAAE,MAAM,aAAa,CAAA;AAEjE;;;;;;;GAOG;AAEH,MAAM,aAAa,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAE9E,MAAM,iBAAiB,GAAiC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACvE,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;AAElC,MAAM,gBAAgB,GAAgC,CAAC,KAAK,EAAE,EAAE,CAC9D,eAAe,CAAC,KAAK,CAAC,CAAA;AAExB,MAAM,gBAAgB,GAAgC,CAAC,KAAK,EAAE,EAAE,CAC9D,eAAe,CAAC,KAAK,CAAC,CAAA;AAExB,MAAM,aAAa,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAE9E,gBAAgB;AAChB,MAAM,CAAC,MAAM,MAAM,GAA6B,CAAC,KAAK,EAAE,EAAE,CACxD,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,aAAa,CAAC,CAAC,KAAK,CAAC,CAAA;AAElD,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAiC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACvE,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,IAAI,iBAAiB,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAEjE,gBAAgB;AAChB,MAAM,CAAC,MAAM,SAAS,GAAgC,CAAC,KAAK,EAAE,EAAE,CAC9D,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,IAAI,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAA;AAExD,gBAAgB;AAChB,MAAM,CAAC,MAAM,SAAS,GAAgC,CAAC,KAAK,EAAE,EAAE,CAC9D,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,IAAI,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAA;AAExD,gBAAgB;AAChB,MAAM,CAAC,MAAM,MAAM,GAA6B,CAAC,KAAK,EAAE,EAAE,CACxD,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,aAAa,CAAC,CAAC,KAAK,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { type Complete, type Keystore } from './engine.js';
2
+ /** @internal */
3
+ export declare const aesCtrDecrypt: Complete<Keystore>['aesCtrDecrypt'];
4
+ /** @internal */
5
+ export declare const aesCtrEncrypt: Complete<Keystore>['aesCtrEncrypt'];
6
+ /** @internal */
7
+ export declare const pbkdf2Sha256: Complete<Keystore>['pbkdf2Sha256'];
8
+ /** @internal */
9
+ export declare const pbkdf2Sha256Async: Complete<Keystore>['pbkdf2Sha256Async'];
10
+ /** @internal */
11
+ export declare const scrypt: Complete<Keystore>['scrypt'];
12
+ /** @internal */
13
+ export declare const scryptAsync: Complete<Keystore>['scryptAsync'];
14
+ //# sourceMappingURL=keystore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore.d.ts","sourceRoot":"","sources":["../../../src/core/internal/keystore.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAa,MAAM,aAAa,CAAA;AA4CrE,gBAAgB;AAChB,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,eAAe,CAIiB,CAAA;AAE/E,gBAAgB;AAChB,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,eAAe,CAIiB,CAAA;AAE/E,gBAAgB;AAChB,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,cAAc,CASzD,CAAA;AAEH,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CASnE,CAAA;AAEH,gBAAgB;AAChB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CACwB,CAAA;AAExE,gBAAgB;AAChB,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,aAAa,CASvD,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { ctr } from '@noble/ciphers/aes.js';
2
+ import { pbkdf2 as pbkdf2_noble, pbkdf2Async as pbkdf2Async_noble, } from '@noble/hashes/pbkdf2.js';
3
+ import { scrypt as scrypt_noble, scryptAsync as scryptAsync_noble, } from '@noble/hashes/scrypt.js';
4
+ import { sha256 } from '@noble/hashes/sha2.js';
5
+ import { overrides } from './engine.js';
6
+ /**
7
+ * Resolvers for the `Keystore` slot, and ox's defaults for it, backed by
8
+ * `@noble/ciphers` and `@noble/hashes`.
9
+ *
10
+ * Declaring the defaults against the slot contract is what keeps them honest: a
11
+ * default that goes missing, or whose signature drifts, fails to compile rather
12
+ * than failing at the call site.
13
+ */
14
+ const aesCtrDecryptDefault = (key, iv, data) => ctr(key, iv).decrypt(data);
15
+ const aesCtrEncryptDefault = (key, iv, data) => ctr(key, iv).encrypt(data);
16
+ const pbkdf2Sha256Default = (password, salt, options) => pbkdf2_noble(sha256, password, salt, options);
17
+ const pbkdf2Sha256AsyncDefault = (password, salt, options) => pbkdf2Async_noble(sha256, password, salt, options);
18
+ const scryptDefault = (password, salt, options) => scrypt_noble(password, salt, options);
19
+ const scryptAsyncDefault = (password, salt, options) => scryptAsync_noble(password, salt, options);
20
+ /** @internal */
21
+ export const aesCtrDecrypt = (key, iv, data) => (overrides.Keystore?.aesCtrDecrypt ?? aesCtrDecryptDefault)(key, iv, data);
22
+ /** @internal */
23
+ export const aesCtrEncrypt = (key, iv, data) => (overrides.Keystore?.aesCtrEncrypt ?? aesCtrEncryptDefault)(key, iv, data);
24
+ /** @internal */
25
+ export const pbkdf2Sha256 = (password, salt, options) => (overrides.Keystore?.pbkdf2Sha256 ?? pbkdf2Sha256Default)(password, salt, options);
26
+ /** @internal */
27
+ export const pbkdf2Sha256Async = (password, salt, options) => (overrides.Keystore?.pbkdf2Sha256Async ?? pbkdf2Sha256AsyncDefault)(password, salt, options);
28
+ /** @internal */
29
+ export const scrypt = (password, salt, options) => (overrides.Keystore?.scrypt ?? scryptDefault)(password, salt, options);
30
+ /** @internal */
31
+ export const scryptAsync = (password, salt, options) => (overrides.Keystore?.scryptAsync ?? scryptAsyncDefault)(password, salt, options);
32
+ //# sourceMappingURL=keystore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore.js","sourceRoot":"","sources":["../../../src/core/internal/keystore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type Complete, type Mnemonic } from './engine.js';
2
+ /** @internal */
3
+ export declare const toSeed: Complete<Mnemonic>['toSeed'];
4
+ //# sourceMappingURL=mnemonic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../../src/core/internal/mnemonic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAa,MAAM,aAAa,CAAA;AAcrE,gBAAgB;AAChB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CACqB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { mnemonicToSeedSync } from '@scure/bip39';
2
+ import { overrides } from './engine.js';
3
+ /**
4
+ * Resolvers for the `Mnemonic` slot, and ox's defaults for it, backed by
5
+ * `@scure/bip39`.
6
+ *
7
+ * Declaring the defaults against the slot contract is what keeps them honest: a
8
+ * default that goes missing, or whose signature drifts, fails to compile rather
9
+ * than failing at the call site.
10
+ */
11
+ const toSeedDefault = (mnemonic, passphrase) => mnemonicToSeedSync(mnemonic, passphrase);
12
+ /** @internal */
13
+ export const toSeed = (mnemonic, passphrase) => (overrides.Mnemonic?.toSeed ?? toSeedDefault)(mnemonic, passphrase);
14
+ //# sourceMappingURL=mnemonic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../../../src/core/internal/mnemonic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAgC,SAAS,EAAE,MAAM,aAAa,CAAA;AAErE;;;;;;;GAOG;AAEH,MAAM,aAAa,GAAiC,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CAC3E,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AAE1C,gBAAgB;AAChB,MAAM,CAAC,MAAM,MAAM,GAAiC,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CAC3E,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,aAAa,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { type Complete, type Ecdsa } from './engine.js';
2
+ /** @internal */
3
+ export declare const getPublicKey: Complete<Ecdsa>['getPublicKey'];
4
+ /** @internal */
5
+ export declare const getSharedSecret: Complete<Ecdsa>['getSharedSecret'];
6
+ /** @internal */
7
+ export declare const randomSecretKey: Complete<Ecdsa>['randomSecretKey'];
8
+ /** @internal */
9
+ export declare const recoverPublicKey: Complete<Ecdsa>['recoverPublicKey'];
10
+ /** @internal */
11
+ export declare const sign: Complete<Ecdsa>['sign'];
12
+ /** @internal */
13
+ export declare const verify: Complete<Ecdsa>['verify'];
14
+ //# sourceMappingURL=p256.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p256.d.ts","sourceRoot":"","sources":["../../../src/core/internal/p256.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAa,MAAM,aAAa,CAAA;AA6ClE,gBAAgB;AAChB,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,cAAc,CACU,CAAA;AAEnE,gBAAgB;AAChB,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAO5D,CAAA;AAEH,gBAAgB;AAChB,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,iBAAiB,CACA,CAAA;AAE/D,gBAAgB;AAChB,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAO9D,CAAA;AAEH,gBAAgB;AAChB,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAC4B,CAAA;AAErE,gBAAgB;AAChB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAW1C,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { p256 } from '@noble/curves/nist.js';
2
+ import { overrides } from './engine.js';
3
+ /**
4
+ * Resolvers for the `P256` slot, and ox's defaults for it, backed by
5
+ * `@noble/curves`.
6
+ *
7
+ * Declaring the defaults against the slot contract is what keeps them honest: a
8
+ * default that goes missing, or whose signature drifts, fails to compile rather
9
+ * than failing at the call site. `lowS` and the recovered signature format are
10
+ * pinned here rather than in the contract, so an engine cannot opt out of them.
11
+ */
12
+ const getPublicKeyDefault = (privateKey) => p256.getPublicKey(privateKey, false);
13
+ const getSharedSecretDefault = (privateKey, publicKey) => p256.getSharedSecret(privateKey, publicKey, true);
14
+ const randomSecretKeyDefault = () => p256.utils.randomSecretKey();
15
+ const recoverPublicKeyDefault = (signature, payload) => p256.Signature.fromBytes(signature, 'recovered')
16
+ .recoverPublicKey(payload)
17
+ .toBytes(false);
18
+ const signDefault = (payload, privateKey, options) => p256.sign(payload, privateKey, {
19
+ ...options,
20
+ format: 'recovered',
21
+ lowS: true,
22
+ });
23
+ const verifyDefault = (signature, payload, publicKey, options) => p256.verify(signature, payload, publicKey, { ...options, lowS: true });
24
+ /** @internal */
25
+ export const getPublicKey = (privateKey) => (overrides.P256?.getPublicKey ?? getPublicKeyDefault)(privateKey);
26
+ /** @internal */
27
+ export const getSharedSecret = (privateKey, publicKey) => (overrides.P256?.getSharedSecret ?? getSharedSecretDefault)(privateKey, publicKey);
28
+ /** @internal */
29
+ export const randomSecretKey = () => (overrides.P256?.randomSecretKey ?? randomSecretKeyDefault)();
30
+ /** @internal */
31
+ export const recoverPublicKey = (signature, payload) => (overrides.P256?.recoverPublicKey ?? recoverPublicKeyDefault)(signature, payload);
32
+ /** @internal */
33
+ export const sign = (payload, privateKey, options) => (overrides.P256?.sign ?? signDefault)(payload, privateKey, options);
34
+ /** @internal */
35
+ export const verify = (signature, payload, publicKey, options) => (overrides.P256?.verify ?? verifyDefault)(signature, payload, publicKey, options);
36
+ //# sourceMappingURL=p256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p256.js","sourceRoot":"","sources":["../../../src/core/internal/p256.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAA6B,SAAS,EAAE,MAAM,aAAa,CAAA;AAElE;;;;;;;;GAQG;AAEH,MAAM,mBAAmB,GAAoC,CAAC,UAAU,EAAE,EAAE,CAC1E,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AAEtC,MAAM,sBAAsB,GAAuC,CACjE,UAAU,EACV,SAAS,EACT,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AAEtD,MAAM,sBAAsB,GAAuC,GAAG,EAAE,CACtE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAA;AAE9B,MAAM,uBAAuB,GAAwC,CACnE,SAAS,EACT,OAAO,EACP,EAAE,CACF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC;KAC7C,gBAAgB,CAAC,OAAO,CAAC;KACzB,OAAO,CAAC,KAAK,CAAC,CAAA;AAEnB,MAAM,WAAW,GAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAC5E,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE;IAC7B,GAAG,OAAO;IACV,MAAM,EAAE,WAAW;IACnB,IAAI,EAAE,IAAI;CACX,CAAC,CAAA;AAEJ,MAAM,aAAa,GAA8B,CAC/C,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AAE3E,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAoC,CAAC,UAAU,EAAE,EAAE,CAC1E,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,IAAI,mBAAmB,CAAC,CAAC,UAAU,CAAC,CAAA;AAEnE,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAuC,CACjE,UAAU,EACV,SAAS,EACT,EAAE,CACF,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,IAAI,sBAAsB,CAAC,CACzD,UAAU,EACV,SAAS,CACV,CAAA;AAEH,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAuC,GAAG,EAAE,CACtE,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,IAAI,sBAAsB,CAAC,EAAE,CAAA;AAE/D,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAwC,CACnE,SAAS,EACT,OAAO,EACP,EAAE,CACF,CAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,IAAI,uBAAuB,CAAC,CAC3D,SAAS,EACT,OAAO,CACR,CAAA;AAEH,gBAAgB;AAChB,MAAM,CAAC,MAAM,IAAI,GAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAC5E,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,WAAW,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAErE,gBAAgB;AAChB,MAAM,CAAC,MAAM,MAAM,GAA8B,CAC/C,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,EAAE,CACF,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,aAAa,CAAC,CACvC,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,CACR,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { type Complete, type Ecdsa } from './engine.js';
2
+ /** @internal */
3
+ export declare const getPublicKey: Complete<Ecdsa>['getPublicKey'];
4
+ /** @internal */
5
+ export declare const getSharedSecret: Complete<Ecdsa>['getSharedSecret'];
6
+ /** @internal */
7
+ export declare const randomSecretKey: Complete<Ecdsa>['randomSecretKey'];
8
+ /** @internal */
9
+ export declare const recoverPublicKey: Complete<Ecdsa>['recoverPublicKey'];
10
+ /** @internal */
11
+ export declare const sign: Complete<Ecdsa>['sign'];
12
+ /** @internal */
13
+ export declare const verify: Complete<Ecdsa>['verify'];
14
+ //# sourceMappingURL=secp256k1.d.ts.map