ox 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/core/Engine.d.ts +43 -11
  3. package/dist/core/Engine.d.ts.map +1 -1
  4. package/dist/core/Engine.js +40 -10
  5. package/dist/core/Engine.js.map +1 -1
  6. package/dist/core/Hash.d.ts +36 -0
  7. package/dist/core/Hash.d.ts.map +1 -1
  8. package/dist/core/Hash.js +35 -0
  9. package/dist/core/Hash.js.map +1 -1
  10. package/dist/core/internal/engine.d.ts +8 -8
  11. package/dist/core/internal/engine.d.ts.map +1 -1
  12. package/dist/index.d.ts +5 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +5 -2
  15. package/dist/index.js.map +1 -1
  16. package/dist/node/Ed25519.d.ts +33 -0
  17. package/dist/node/Ed25519.d.ts.map +1 -0
  18. package/dist/node/Ed25519.js +67 -0
  19. package/dist/node/Ed25519.js.map +1 -0
  20. package/dist/node/Engine.d.ts +29 -16
  21. package/dist/node/Engine.d.ts.map +1 -1
  22. package/dist/node/Engine.js +38 -14
  23. package/dist/node/Engine.js.map +1 -1
  24. package/dist/node/Hash.d.ts +17 -19
  25. package/dist/node/Hash.d.ts.map +1 -1
  26. package/dist/node/Hash.js +17 -19
  27. package/dist/node/Hash.js.map +1 -1
  28. package/dist/node/Keystore.d.ts +36 -0
  29. package/dist/node/Keystore.d.ts.map +1 -0
  30. package/dist/node/Keystore.js +72 -0
  31. package/dist/node/Keystore.js.map +1 -0
  32. package/dist/node/Mnemonic.d.ts +35 -0
  33. package/dist/node/Mnemonic.d.ts.map +1 -0
  34. package/dist/node/Mnemonic.js +46 -0
  35. package/dist/node/Mnemonic.js.map +1 -0
  36. package/dist/node/P256.d.ts +32 -0
  37. package/dist/node/P256.d.ts.map +1 -0
  38. package/dist/node/P256.js +34 -0
  39. package/dist/node/P256.js.map +1 -0
  40. package/dist/node/X25519.d.ts +31 -0
  41. package/dist/node/X25519.d.ts.map +1 -0
  42. package/dist/node/X25519.js +71 -0
  43. package/dist/node/X25519.js.map +1 -0
  44. package/dist/node/index.d.ts +95 -8
  45. package/dist/node/index.d.ts.map +1 -1
  46. package/dist/node/index.js +95 -8
  47. package/dist/node/index.js.map +1 -1
  48. package/dist/trusted-setups/Paths.d.ts +1 -0
  49. package/dist/trusted-setups/Paths.d.ts.map +1 -1
  50. package/dist/trusted-setups/Paths.js +1 -0
  51. package/dist/trusted-setups/Paths.js.map +1 -1
  52. package/dist/trusted-setups/Setups.d.ts +35 -0
  53. package/dist/trusted-setups/Setups.d.ts.map +1 -0
  54. package/dist/trusted-setups/Setups.js +29 -0
  55. package/dist/trusted-setups/Setups.js.map +1 -0
  56. package/dist/trusted-setups/index.d.ts +20 -0
  57. package/dist/trusted-setups/index.d.ts.map +1 -1
  58. package/dist/trusted-setups/index.js +20 -0
  59. package/dist/trusted-setups/index.js.map +1 -1
  60. package/dist/trusted-setups/internal/paths.d.ts.map +1 -1
  61. package/dist/trusted-setups/internal/paths.js +1 -1
  62. package/dist/trusted-setups/internal/paths.js.map +1 -1
  63. package/dist/trusted-setups/internal/setups/mainnet.d.ts +7 -0
  64. package/dist/trusted-setups/internal/setups/mainnet.d.ts.map +1 -0
  65. package/dist/trusted-setups/internal/setups/mainnet.js +11 -0
  66. package/dist/trusted-setups/internal/setups/mainnet.js.map +1 -0
  67. package/dist/wasm/Ed25519.d.ts +35 -0
  68. package/dist/wasm/Ed25519.d.ts.map +1 -0
  69. package/dist/wasm/Ed25519.js +88 -0
  70. package/dist/wasm/Ed25519.js.map +1 -0
  71. package/dist/wasm/Engine.d.ts +36 -26
  72. package/dist/wasm/Engine.d.ts.map +1 -1
  73. package/dist/wasm/Engine.js +44 -25
  74. package/dist/wasm/Engine.js.map +1 -1
  75. package/dist/wasm/Hash.d.ts +13 -19
  76. package/dist/wasm/Hash.d.ts.map +1 -1
  77. package/dist/wasm/Hash.js +21 -27
  78. package/dist/wasm/Hash.js.map +1 -1
  79. package/dist/wasm/Keystore.d.ts +51 -0
  80. package/dist/wasm/Keystore.d.ts.map +1 -0
  81. package/dist/wasm/Keystore.js +51 -0
  82. package/dist/wasm/Keystore.js.map +1 -0
  83. package/dist/wasm/Kzg.d.ts +112 -0
  84. package/dist/wasm/Kzg.d.ts.map +1 -0
  85. package/dist/wasm/Kzg.js +333 -0
  86. package/dist/wasm/Kzg.js.map +1 -0
  87. package/dist/wasm/Mnemonic.d.ts +33 -0
  88. package/dist/wasm/Mnemonic.d.ts.map +1 -0
  89. package/dist/wasm/Mnemonic.js +30 -0
  90. package/dist/wasm/Mnemonic.js.map +1 -0
  91. package/dist/wasm/Secp256k1.d.ts +55 -0
  92. package/dist/wasm/Secp256k1.d.ts.map +1 -0
  93. package/dist/wasm/Secp256k1.js +181 -0
  94. package/dist/wasm/Secp256k1.js.map +1 -0
  95. package/dist/wasm/X25519.d.ts +33 -0
  96. package/dist/wasm/X25519.d.ts.map +1 -0
  97. package/dist/wasm/X25519.js +53 -0
  98. package/dist/wasm/X25519.js.map +1 -0
  99. package/dist/wasm/index.d.ts +124 -12
  100. package/dist/wasm/index.d.ts.map +1 -1
  101. package/dist/wasm/index.js +124 -12
  102. package/dist/wasm/index.js.map +1 -1
  103. package/dist/wasm/internal/blake3.d.ts +11 -0
  104. package/dist/wasm/internal/blake3.d.ts.map +1 -0
  105. package/dist/wasm/internal/blake3.js +31 -0
  106. package/dist/wasm/internal/blake3.js.map +1 -0
  107. package/dist/wasm/internal/blake3.wasm.d.ts +3 -0
  108. package/dist/wasm/internal/blake3.wasm.d.ts.map +1 -0
  109. package/dist/wasm/internal/blake3.wasm.js +10 -0
  110. package/dist/wasm/internal/blake3.wasm.js.map +1 -0
  111. package/dist/wasm/internal/crypto25519.d.ts +16 -0
  112. package/dist/wasm/internal/crypto25519.d.ts.map +1 -0
  113. package/dist/wasm/internal/crypto25519.js +5 -0
  114. package/dist/wasm/internal/crypto25519.js.map +1 -0
  115. package/dist/wasm/internal/crypto25519.wasm.d.ts +3 -0
  116. package/dist/wasm/internal/crypto25519.wasm.d.ts.map +1 -0
  117. package/dist/wasm/internal/crypto25519.wasm.js +10 -0
  118. package/dist/wasm/internal/crypto25519.wasm.js.map +1 -0
  119. package/dist/wasm/internal/ed25519.d.ts +4 -0
  120. package/dist/wasm/internal/ed25519.d.ts.map +1 -0
  121. package/dist/wasm/internal/ed25519.js +21 -0
  122. package/dist/wasm/internal/ed25519.js.map +1 -0
  123. package/dist/wasm/internal/hashes.d.ts +12 -0
  124. package/dist/wasm/internal/hashes.d.ts.map +1 -0
  125. package/dist/wasm/internal/hashes.js +8 -0
  126. package/dist/wasm/internal/hashes.js.map +1 -0
  127. package/dist/wasm/internal/hashes.wasm.d.ts +4 -2
  128. package/dist/wasm/internal/hashes.wasm.d.ts.map +1 -1
  129. package/dist/wasm/internal/hashes.wasm.js +4 -2
  130. package/dist/wasm/internal/hashes.wasm.js.map +1 -1
  131. package/dist/wasm/internal/instantiate.d.ts +12 -0
  132. package/dist/wasm/internal/instantiate.d.ts.map +1 -1
  133. package/dist/wasm/internal/instantiate.js +23 -7
  134. package/dist/wasm/internal/instantiate.js.map +1 -1
  135. package/dist/wasm/internal/keystore.d.ts +10 -0
  136. package/dist/wasm/internal/keystore.d.ts.map +1 -0
  137. package/dist/wasm/internal/keystore.js +10 -0
  138. package/dist/wasm/internal/keystore.js.map +1 -0
  139. package/dist/wasm/internal/kzg.d.ts +17 -0
  140. package/dist/wasm/internal/kzg.d.ts.map +1 -0
  141. package/dist/wasm/internal/kzg.js +8 -0
  142. package/dist/wasm/internal/kzg.js.map +1 -0
  143. package/dist/wasm/internal/kzg.wasm.d.ts +3 -0
  144. package/dist/wasm/internal/kzg.wasm.d.ts.map +1 -0
  145. package/dist/wasm/internal/kzg.wasm.js +10 -0
  146. package/dist/wasm/internal/kzg.wasm.js.map +1 -0
  147. package/dist/wasm/internal/mnemonic.d.ts +4 -0
  148. package/dist/wasm/internal/mnemonic.d.ts.map +1 -0
  149. package/dist/wasm/internal/mnemonic.js +45 -0
  150. package/dist/wasm/internal/mnemonic.js.map +1 -0
  151. package/dist/wasm/internal/pbkdf2.d.ts +12 -0
  152. package/dist/wasm/internal/pbkdf2.d.ts.map +1 -0
  153. package/dist/wasm/internal/pbkdf2.js +51 -0
  154. package/dist/wasm/internal/pbkdf2.js.map +1 -0
  155. package/dist/wasm/internal/scrypt.d.ts +16 -0
  156. package/dist/wasm/internal/scrypt.d.ts.map +1 -0
  157. package/dist/wasm/internal/scrypt.js +78 -0
  158. package/dist/wasm/internal/scrypt.js.map +1 -0
  159. package/dist/wasm/internal/scrypt.wasm.d.ts +7 -0
  160. package/dist/wasm/internal/scrypt.wasm.d.ts.map +1 -0
  161. package/dist/wasm/internal/scrypt.wasm.js +14 -0
  162. package/dist/wasm/internal/scrypt.wasm.js.map +1 -0
  163. package/dist/wasm/internal/secp256k1.d.ts +16 -0
  164. package/dist/wasm/internal/secp256k1.d.ts.map +1 -0
  165. package/dist/wasm/internal/secp256k1.js +20 -0
  166. package/dist/wasm/internal/secp256k1.js.map +1 -0
  167. package/dist/wasm/internal/secp256k1.wasm.d.ts +3 -0
  168. package/dist/wasm/internal/secp256k1.wasm.d.ts.map +1 -0
  169. package/dist/wasm/internal/secp256k1.wasm.js +10 -0
  170. package/dist/wasm/internal/secp256k1.wasm.js.map +1 -0
  171. package/dist/wasm/internal/x25519.d.ts +4 -0
  172. package/dist/wasm/internal/x25519.d.ts.map +1 -0
  173. package/dist/wasm/internal/x25519.js +21 -0
  174. package/dist/wasm/internal/x25519.js.map +1 -0
  175. package/package.json +64 -2
  176. package/src/core/Engine.ts +84 -11
  177. package/src/core/Hash.ts +59 -0
  178. package/src/core/_test/Block.test.ts +9 -2
  179. package/src/core/_test/Engine.test-d.ts +56 -0
  180. package/src/core/_test/Engine.test.ts +95 -0
  181. package/src/core/_test/Hash.test-d.ts +18 -0
  182. package/src/core/_test/Hash.test.ts +100 -1
  183. package/src/core/_test/Hash.vectors.test.ts +7 -0
  184. package/src/core/_test/Transaction.test.ts +11 -2
  185. package/src/core/internal/engine.ts +8 -8
  186. package/src/index.ts +5 -2
  187. package/src/node/Ed25519.ts +87 -0
  188. package/src/node/Engine.ts +79 -23
  189. package/src/node/Hash.ts +25 -30
  190. package/src/node/Keystore.ts +103 -0
  191. package/src/node/Mnemonic.ts +68 -0
  192. package/src/node/P256.ts +48 -0
  193. package/src/node/X25519.ts +93 -0
  194. package/src/node/_test/Curves.fuzz.ts +76 -0
  195. package/src/node/_test/Ed25519.test-d.ts +35 -0
  196. package/src/node/_test/Ed25519.test.ts +220 -0
  197. package/src/node/_test/Engine.test-d.ts +28 -0
  198. package/src/node/_test/Engine.test.ts +62 -22
  199. package/src/node/_test/Hash.test-d.ts +16 -9
  200. package/src/node/_test/Hash.test.ts +10 -11
  201. package/src/node/_test/Keystore.fuzz.ts +58 -0
  202. package/src/node/_test/Keystore.test-d.ts +43 -0
  203. package/src/node/_test/Keystore.test.ts +198 -0
  204. package/src/node/_test/Mnemonic.fuzz.ts +31 -0
  205. package/src/node/_test/Mnemonic.test-d.ts +21 -0
  206. package/src/node/_test/Mnemonic.test.ts +98 -0
  207. package/src/node/_test/P256.test-d.ts +29 -0
  208. package/src/node/_test/P256.test.ts +102 -0
  209. package/src/node/_test/X25519.test-d.ts +28 -0
  210. package/src/node/_test/X25519.test.ts +239 -0
  211. package/src/node/index.ts +100 -8
  212. package/src/trusted-setups/Paths.ts +1 -0
  213. package/src/trusted-setups/README.md +39 -0
  214. package/src/trusted-setups/Setups.ts +46 -0
  215. package/src/trusted-setups/_test/Paths.test.ts +16 -0
  216. package/src/trusted-setups/_test/Setups.test-d.ts +7 -0
  217. package/src/trusted-setups/_test/Setups.test.ts +43 -0
  218. package/src/trusted-setups/_test/index.test.ts +1 -0
  219. package/src/trusted-setups/index.ts +21 -0
  220. package/src/trusted-setups/internal/paths.ts +4 -1
  221. package/src/trusted-setups/internal/setups/mainnet.source.json +7 -0
  222. package/src/trusted-setups/internal/setups/mainnet.ts +16 -0
  223. package/src/version.ts +1 -1
  224. package/src/wasm/Ed25519.ts +114 -0
  225. package/src/wasm/Engine.ts +78 -31
  226. package/src/wasm/Hash.bench.ts +2 -2
  227. package/src/wasm/Hash.ts +29 -50
  228. package/src/wasm/Keystore.bench.ts +26 -0
  229. package/src/wasm/Keystore.ts +66 -0
  230. package/src/wasm/Kzg.bench.ts +63 -0
  231. package/src/wasm/Kzg.ts +518 -0
  232. package/src/wasm/Mnemonic.ts +44 -0
  233. package/src/wasm/Secp256k1.bench.ts +79 -0
  234. package/src/wasm/Secp256k1.ts +248 -0
  235. package/src/wasm/X25519.ts +70 -0
  236. package/src/wasm/_test/Crypto25519.conformance.ts +57 -0
  237. package/src/wasm/_test/Crypto25519.fuzz.ts +187 -0
  238. package/src/wasm/_test/Ed25519.test-d.ts +28 -0
  239. package/src/wasm/_test/Ed25519.test.ts +168 -0
  240. package/src/wasm/_test/Ed25519.vectors.test.ts +73 -0
  241. package/src/wasm/_test/Engine.test-d.ts +29 -0
  242. package/src/wasm/_test/Engine.test.ts +59 -25
  243. package/src/wasm/_test/Hash.browser.test.ts +14 -7
  244. package/src/wasm/_test/Hash.fuzz.ts +58 -23
  245. package/src/wasm/_test/Hash.test-d.ts +16 -10
  246. package/src/wasm/_test/Hash.test.ts +148 -48
  247. package/src/wasm/_test/Hash.vectors.test.ts +15 -8
  248. package/src/wasm/_test/Keystore.browser.test.ts +73 -0
  249. package/src/wasm/_test/Keystore.fuzz.ts +163 -0
  250. package/src/wasm/_test/Keystore.test-d.ts +42 -0
  251. package/src/wasm/_test/Keystore.test.ts +477 -0
  252. package/src/wasm/_test/Keystore.vectors.test.ts +21 -0
  253. package/src/wasm/_test/Kzg.test-d.ts +19 -0
  254. package/src/wasm/_test/Kzg.test.ts +220 -0
  255. package/src/wasm/_test/Mnemonic.test-d.ts +17 -0
  256. package/src/wasm/_test/Mnemonic.test.ts +110 -0
  257. package/src/wasm/_test/Runtime.test.ts +9 -0
  258. package/src/wasm/_test/Secp256k1.test-d.ts +35 -0
  259. package/src/wasm/_test/Secp256k1.test.ts +354 -0
  260. package/src/wasm/_test/X25519.test-d.ts +21 -0
  261. package/src/wasm/_test/X25519.test.ts +194 -0
  262. package/src/wasm/_test/fixtures.ts +4 -0
  263. package/src/wasm/index.ts +130 -12
  264. package/src/wasm/internal/blake3.ts +45 -0
  265. package/src/wasm/internal/blake3.wasm.ts +11 -0
  266. package/src/wasm/internal/crypto25519.ts +43 -0
  267. package/src/wasm/internal/crypto25519.wasm.ts +11 -0
  268. package/src/wasm/internal/ed25519.ts +31 -0
  269. package/src/wasm/internal/hashes.ts +29 -0
  270. package/src/wasm/internal/hashes.wasm.ts +5 -2
  271. package/src/wasm/internal/instantiate.ts +29 -9
  272. package/src/wasm/internal/keystore.ts +19 -0
  273. package/src/wasm/internal/kzg.ts +50 -0
  274. package/src/wasm/internal/kzg.wasm.ts +11 -0
  275. package/src/wasm/internal/mnemonic.ts +56 -0
  276. package/src/wasm/internal/pbkdf2.ts +86 -0
  277. package/src/wasm/internal/scrypt.ts +131 -0
  278. package/src/wasm/internal/scrypt.wasm.ts +17 -0
  279. package/src/wasm/internal/secp256k1.ts +62 -0
  280. package/src/wasm/internal/secp256k1.wasm.ts +11 -0
  281. package/src/wasm/internal/x25519.ts +29 -0
  282. package/wasm/vendor/c-kzg-4844/LICENSE +201 -0
  283. package/wasm/vendor/c-kzg-4844/blst/LICENSE +201 -0
  284. package/src/trusted-setups/internal/setups/mainnet.txt +0 -4163
@@ -0,0 +1,181 @@
1
+ import * as Errors from '../core/Errors.js';
2
+ import * as secp256k1 from './internal/secp256k1.js';
3
+ export * from '../core/Secp256k1.js';
4
+ export { MemoryError } from './internal/instantiate.js';
5
+ const privateKeySize = 32;
6
+ const publicKeySize = 65;
7
+ const sharedSecretSize = 33;
8
+ const compactSignatureSize = 64;
9
+ const recoveredSignatureSize = 65;
10
+ const maxRawMessageSize = 8192;
11
+ /**
12
+ * Compiles WASM implementations of deterministic
13
+ * [`Secp256k1`](/api/Secp256k1) primitives, without installing them.
14
+ *
15
+ * Random key generation remains on Ox's host-backed default implementation.
16
+ *
17
+ * @example
18
+ * ```ts twoslash
19
+ * // @noErrors
20
+ * import { Engine } from 'ox'
21
+ * import { Secp256k1 } from 'ox/wasm'
22
+ *
23
+ * await Engine.install({ Secp256k1: Secp256k1.engine() })
24
+ *
25
+ * Secp256k1.getPublicKey({ privateKey: '0x...' })
26
+ * ```
27
+ *
28
+ * @returns The WASM implementation of the deterministic `Secp256k1` primitives.
29
+ */
30
+ export async function engine() {
31
+ const module = await secp256k1.load();
32
+ return {
33
+ getPublicKey(privateKey) {
34
+ assertLength(privateKey, privateKeySize, 'private key');
35
+ const size = privateKeySize + publicKeySize;
36
+ module.reserve(size);
37
+ const privateKeyPtr = module.heapBase;
38
+ const publicKeyPtr = privateKeyPtr + privateKeySize;
39
+ try {
40
+ module.view().set(privateKey, privateKeyPtr);
41
+ if (module.exports.secp256k1_get_public_key(privateKeyPtr, publicKeyPtr) !== 1)
42
+ throw new InvalidInputError({ operation: 'getPublicKey' });
43
+ return module.view().slice(publicKeyPtr, publicKeyPtr + publicKeySize);
44
+ }
45
+ finally {
46
+ module.exports.zero(privateKeyPtr, size);
47
+ }
48
+ },
49
+ getSharedSecret(privateKey, publicKey) {
50
+ assertLength(privateKey, privateKeySize, 'private key');
51
+ assertPublicKeyLength(publicKey);
52
+ const size = privateKeySize + publicKey.length + sharedSecretSize;
53
+ module.reserve(size);
54
+ const privateKeyPtr = module.heapBase;
55
+ const publicKeyPtr = privateKeyPtr + privateKeySize;
56
+ const sharedSecretPtr = publicKeyPtr + publicKey.length;
57
+ try {
58
+ const memory = module.view();
59
+ memory.set(privateKey, privateKeyPtr);
60
+ memory.set(publicKey, publicKeyPtr);
61
+ if (module.exports.secp256k1_get_shared_secret(privateKeyPtr, publicKeyPtr, publicKey.length, sharedSecretPtr) !== 1)
62
+ throw new InvalidInputError({ operation: 'getSharedSecret' });
63
+ return module
64
+ .view()
65
+ .slice(sharedSecretPtr, sharedSecretPtr + sharedSecretSize);
66
+ }
67
+ finally {
68
+ module.exports.zero(privateKeyPtr, size);
69
+ }
70
+ },
71
+ recoverPublicKey(signature, payload) {
72
+ assertLength(signature, recoveredSignatureSize, 'signature');
73
+ assertRawMessageLength(payload);
74
+ const size = recoveredSignatureSize + payload.length + publicKeySize;
75
+ module.reserve(size);
76
+ const signaturePtr = module.heapBase;
77
+ const payloadPtr = signaturePtr + recoveredSignatureSize;
78
+ const publicKeyPtr = payloadPtr + payload.length;
79
+ try {
80
+ const memory = module.view();
81
+ memory.set(signature, signaturePtr);
82
+ memory.set(payload, payloadPtr);
83
+ if (module.exports.secp256k1_recover_public_key(signaturePtr, payloadPtr, payload.length, publicKeyPtr) !== 1)
84
+ throw new InvalidInputError({ operation: 'recoverPublicKey' });
85
+ return module.view().slice(publicKeyPtr, publicKeyPtr + publicKeySize);
86
+ }
87
+ finally {
88
+ module.exports.zero(signaturePtr, size);
89
+ }
90
+ },
91
+ sign(payload, privateKey, options) {
92
+ assertLength(privateKey, privateKeySize, 'private key');
93
+ if (!options.prehash)
94
+ assertRawMessageLength(payload);
95
+ const entropy = options.extraEntropy === true
96
+ ? crypto.getRandomValues(new Uint8Array(privateKeySize))
97
+ : options.extraEntropy === false
98
+ ? undefined
99
+ : options.extraEntropy;
100
+ const entropySize = entropy?.length ?? 0;
101
+ const size = payload.length + privateKeySize + entropySize + recoveredSignatureSize;
102
+ module.reserve(size);
103
+ const payloadPtr = module.heapBase;
104
+ const privateKeyPtr = payloadPtr + payload.length;
105
+ const entropyPtr = entropy ? privateKeyPtr + privateKeySize : 0;
106
+ const signaturePtr = privateKeyPtr + privateKeySize + entropySize;
107
+ try {
108
+ const memory = module.view();
109
+ memory.set(payload, payloadPtr);
110
+ memory.set(privateKey, privateKeyPtr);
111
+ if (entropy)
112
+ memory.set(entropy, entropyPtr);
113
+ if (module.exports.secp256k1_sign(payloadPtr, payload.length, privateKeyPtr, entropyPtr, entropySize, Number(options.prehash), signaturePtr) !== 1)
114
+ throw new InvalidInputError({ operation: 'sign' });
115
+ return module
116
+ .view()
117
+ .slice(signaturePtr, signaturePtr + recoveredSignatureSize);
118
+ }
119
+ finally {
120
+ module.exports.zero(payloadPtr, size);
121
+ }
122
+ },
123
+ verify(signature, payload, publicKey, options) {
124
+ assertLength(signature, compactSignatureSize, 'signature');
125
+ assertPublicKeyLength(publicKey);
126
+ if (!options.prehash && payload.length > maxRawMessageSize)
127
+ return false;
128
+ const size = compactSignatureSize + payload.length + publicKey.length;
129
+ module.reserve(size);
130
+ const signaturePtr = module.heapBase;
131
+ const payloadPtr = signaturePtr + compactSignatureSize;
132
+ const publicKeyPtr = payloadPtr + payload.length;
133
+ try {
134
+ const memory = module.view();
135
+ memory.set(signature, signaturePtr);
136
+ memory.set(payload, payloadPtr);
137
+ memory.set(publicKey, publicKeyPtr);
138
+ return (module.exports.secp256k1_verify(signaturePtr, payloadPtr, payload.length, publicKeyPtr, publicKey.length, Number(options.prehash)) === 1);
139
+ }
140
+ finally {
141
+ module.exports.zero(signaturePtr, size);
142
+ }
143
+ },
144
+ };
145
+ }
146
+ function assertLength(value, length, name) {
147
+ if (value.length !== length)
148
+ throw new RangeError(`Secp256k1 ${name} must be ${length} bytes, got ${value.length}`);
149
+ }
150
+ function assertPublicKeyLength(publicKey) {
151
+ if (publicKey.length !== sharedSecretSize &&
152
+ publicKey.length !== publicKeySize)
153
+ throw new RangeError(`Secp256k1 public key must be 33 or 65 bytes, got ${publicKey.length}`);
154
+ }
155
+ function assertRawMessageLength(payload) {
156
+ if (payload.length > maxRawMessageSize)
157
+ throw new RangeError(`Secp256k1 unhashed payload must not exceed ${maxRawMessageSize} bytes, got ${payload.length}`);
158
+ }
159
+ /**
160
+ * Thrown when libsecp256k1 rejects a key or recovered signature.
161
+ *
162
+ * @example
163
+ * ```ts twoslash
164
+ * import { Secp256k1 } from 'ox/wasm'
165
+ *
166
+ * try {
167
+ * const engine = await Secp256k1.engine()
168
+ * engine.getPublicKey(new Uint8Array(32))
169
+ * } catch (error) {
170
+ * if (error instanceof Secp256k1.InvalidInputError)
171
+ * console.error(error.message)
172
+ * }
173
+ * ```
174
+ */
175
+ export class InvalidInputError extends Errors.BaseError {
176
+ name = 'Secp256k1.InvalidInputError';
177
+ constructor({ operation }) {
178
+ super(`WASM secp256k1 ${operation} received invalid input.`);
179
+ }
180
+ }
181
+ //# sourceMappingURL=Secp256k1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Secp256k1.js","sourceRoot":"","sources":["../../src/wasm/Secp256k1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type * as Engine from '../core/Engine.js';
2
+ import type * as Errors from '../core/Errors.js';
3
+ import * as internal from './internal/instantiate.js';
4
+ export * from '../core/X25519.js';
5
+ export { MemoryError } from './internal/instantiate.js';
6
+ /**
7
+ * Compiles WASM implementations of selected [`X25519`](/api/X25519)
8
+ * primitives, without installing them.
9
+ *
10
+ * Random key generation remains on Ox's default implementation.
11
+ *
12
+ * @example
13
+ * ```ts twoslash
14
+ * // @noErrors
15
+ * import { Engine } from 'ox'
16
+ * import { X25519 } from 'ox/wasm'
17
+ *
18
+ * await Engine.install({ X25519: X25519.engine() })
19
+ *
20
+ * X25519.getPublicKey({ privateKey: '0x...' })
21
+ * ```
22
+ *
23
+ * @returns The WASM implementation of part of the `X25519` slot.
24
+ */
25
+ export declare function engine(): Promise<engine.ReturnType>;
26
+ export declare namespace engine {
27
+ /** Every `X25519` primitive this module implements. */
28
+ type ReturnType = {
29
+ [key in 'getPublicKey' | 'getSharedSecret']-?: NonNullable<Engine.Ecdh[key]>;
30
+ };
31
+ type ErrorType = internal.MemoryError | Errors.GlobalErrorType;
32
+ }
33
+ //# sourceMappingURL=X25519.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"X25519.d.ts","sourceRoot":"","sources":["../../src/wasm/X25519.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAEhD,OAAO,KAAK,QAAQ,MAAM,2BAA2B,CAAA;AAGrD,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAIvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAuBzD;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,uDAAuD;IACvD,KAAK,UAAU,GAAG;SACf,GAAG,IAAI,cAAc,GAAG,iBAAiB,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC7E,CAAA;IAED,KAAK,SAAS,GAAG,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,eAAe,CAAA;CAC/D"}
@@ -0,0 +1,53 @@
1
+ import * as crypto25519 from './internal/crypto25519.js';
2
+ import * as x25519 from './internal/x25519.js';
3
+ export * from '../core/X25519.js';
4
+ export { MemoryError } from './internal/instantiate.js';
5
+ const keySize = 32;
6
+ /**
7
+ * Compiles WASM implementations of selected [`X25519`](/api/X25519)
8
+ * primitives, without installing them.
9
+ *
10
+ * Random key generation remains on Ox's default implementation.
11
+ *
12
+ * @example
13
+ * ```ts twoslash
14
+ * // @noErrors
15
+ * import { Engine } from 'ox'
16
+ * import { X25519 } from 'ox/wasm'
17
+ *
18
+ * await Engine.install({ X25519: X25519.engine() })
19
+ *
20
+ * X25519.getPublicKey({ privateKey: '0x...' })
21
+ * ```
22
+ *
23
+ * @returns The WASM implementation of part of the `X25519` slot.
24
+ */
25
+ export async function engine() {
26
+ const module = await crypto25519.load();
27
+ return {
28
+ getPublicKey(privateKey) {
29
+ assertLength(privateKey, 'private');
30
+ module.reserve(keySize * 2);
31
+ const privateKeyPtr = module.heapBase;
32
+ const publicKeyPtr = privateKeyPtr + keySize;
33
+ try {
34
+ module.view().set(privateKey, privateKeyPtr);
35
+ module.exports.x25519_get_public_key(privateKeyPtr, publicKeyPtr);
36
+ return module.view().slice(publicKeyPtr, publicKeyPtr + keySize);
37
+ }
38
+ finally {
39
+ module.exports.zero(privateKeyPtr, keySize * 2);
40
+ }
41
+ },
42
+ getSharedSecret(privateKey, publicKey) {
43
+ assertLength(privateKey, 'private');
44
+ assertLength(publicKey, 'public');
45
+ return x25519.getSharedSecret(module, privateKey, publicKey);
46
+ },
47
+ };
48
+ }
49
+ function assertLength(key, type) {
50
+ if (key.length !== keySize)
51
+ throw new RangeError(`X25519 ${type} key must be ${keySize} bytes, got ${key.length}`);
52
+ }
53
+ //# sourceMappingURL=X25519.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"X25519.js","sourceRoot":"","sources":["../../src/wasm/X25519.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,WAAW,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAE9C,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,MAAM,OAAO,GAAG,EAAE,CAAA;AAElB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAA;IAEvC,OAAO;QACL,YAAY,CAAC,UAAU;YACrB,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YACnC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;YAC3B,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAA;YACrC,MAAM,YAAY,GAAG,aAAa,GAAG,OAAO,CAAA;YAC5C,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;gBAC5C,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;gBACjE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,CAAA;YAClE,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;YACjD,CAAC;QACH,CAAC;QACD,eAAe,CAAC,UAAU,EAAE,SAAS;YACnC,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YACnC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACjC,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;QAC9D,CAAC;KACF,CAAA;AACH,CAAC;AAWD,SAAS,YAAY,CAAC,GAAe,EAAE,IAA0B;IAC/D,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO;QACxB,MAAM,IAAI,UAAU,CAClB,UAAU,IAAI,gBAAgB,OAAO,eAAe,GAAG,CAAC,MAAM,EAAE,CACjE,CAAA;AACL,CAAC"}
@@ -1,10 +1,10 @@
1
1
  /** @entrypointCategory WASM */
2
2
  /**
3
- * WASM implementations of ox's hash primitives, compiled from C.
3
+ * WASM implementations of Ox's supported cryptographic primitives, compiled
4
+ * from C.
4
5
  *
5
- * Load it and hand the result to {@link ox#Engine.set}. WASM must be compiled
6
- * asynchronously, so the `await` lives here -- every call afterwards is
7
- * synchronous.
6
+ * Install it during startup. WASM must be compiled asynchronously, so the
7
+ * `await` lives there. Every cryptographic call afterwards is synchronous.
8
8
  *
9
9
  * :::note
10
10
  * Performance varies by primitive, input size, runtime, and processor. Run
@@ -15,32 +15,144 @@
15
15
  * @example
16
16
  * ```ts twoslash
17
17
  * // @noErrors
18
- * import { Hash } from 'ox'
19
- * import { Engine } from 'ox/wasm'
18
+ * import { Engine, Hash } from 'ox/wasm'
20
19
  *
21
- * await Engine.load()
20
+ * await Engine.install()
22
21
  *
23
- * Hash.keccak256('0xdeadbeef')
22
+ * Hash.sha256('0xdeadbeef')
24
23
  * ```
25
24
  *
26
25
  * @category Crypto
27
26
  */
28
27
  export * as Engine from './Engine.js';
28
+ /**
29
+ * WASM implementations of Ox's supported Ed25519 primitives.
30
+ *
31
+ * @example
32
+ * ```ts twoslash
33
+ * // @noErrors
34
+ * import { Engine } from 'ox'
35
+ * import { Ed25519 } from 'ox/wasm'
36
+ *
37
+ * await Engine.install({ Ed25519: Ed25519.engine() })
38
+ *
39
+ * Ed25519.getPublicKey({ privateKey: '0x...' })
40
+ * ```
41
+ *
42
+ * @category Crypto
43
+ */
44
+ export * as Ed25519 from './Ed25519.js';
29
45
  /**
30
46
  * WASM implementations of Ox's supported hash primitives.
31
47
  *
32
48
  * @example
33
49
  * ```ts twoslash
34
50
  * // @noErrors
35
- * import { Engine, Hash } from 'ox'
36
- * import * as WasmHash from 'ox/wasm/Hash'
51
+ * import { Engine } from 'ox'
52
+ * import { Hash } from 'ox/wasm'
37
53
  *
38
- * Engine.set(await WasmHash.create())
54
+ * await Engine.install({ Hash: Hash.engine() })
39
55
  *
40
- * Hash.keccak256('0xdeadbeef')
56
+ * Hash.sha256('0xdeadbeef')
41
57
  * ```
42
58
  *
43
59
  * @category Crypto
44
60
  */
45
61
  export * as Hash from './Hash.js';
62
+ /**
63
+ * WASM implementations of Ox's synchronous PBKDF2-HMAC-SHA256 and scrypt
64
+ * primitives.
65
+ *
66
+ * @example
67
+ * ```ts twoslash
68
+ * // @noErrors
69
+ * import { Engine } from 'ox'
70
+ * import { Keystore } from 'ox/wasm'
71
+ *
72
+ * await Engine.install({ Keystore: Keystore.engine() })
73
+ *
74
+ * Keystore.pbkdf2({ password: 'testpassword' })
75
+ * ```
76
+ *
77
+ * @category Crypto
78
+ */
79
+ export * as Keystore from './Keystore.js';
80
+ /**
81
+ * WASM implementation of Ox's KZG interface, backed by c-kzg-4844.
82
+ *
83
+ * This module is not installed into [`Engine`](/api/Engine). Create an explicit
84
+ * instance, pass it anywhere that accepts `Kzg.Kzg`, and dispose it when done.
85
+ *
86
+ * @example
87
+ * ```ts twoslash
88
+ * // @noErrors
89
+ * import { Setups } from 'ox/trusted-setups'
90
+ * import { Kzg } from 'ox/wasm'
91
+ *
92
+ * const kzg = await Kzg.create({
93
+ * trustedSetup: Setups.mainnet
94
+ * })
95
+ *
96
+ * kzg.dispose()
97
+ * ```
98
+ *
99
+ * @category Crypto
100
+ */
101
+ export * as Kzg from './Kzg.js';
102
+ /**
103
+ * WASM implementation of Ox's BIP-39 seed derivation.
104
+ *
105
+ * @example
106
+ * ```ts twoslash
107
+ * // @noErrors
108
+ * import { Engine } from 'ox'
109
+ * import { Mnemonic } from 'ox/wasm'
110
+ *
111
+ * await Engine.install({ Mnemonic: Mnemonic.engine() })
112
+ *
113
+ * Mnemonic.toSeed(
114
+ * 'test test test test test test test test test test test junk'
115
+ * )
116
+ * ```
117
+ *
118
+ * @category Crypto
119
+ */
120
+ export * as Mnemonic from './Mnemonic.js';
121
+ /**
122
+ * WASM implementations of deterministic Secp256k1 primitives.
123
+ *
124
+ * This provider is opt-in because its embedded libsecp256k1 artifact is larger
125
+ * than the modules installed by [`Engine.install`](/api/Engine/install).
126
+ *
127
+ * @example
128
+ * ```ts twoslash
129
+ * // @noErrors
130
+ * import { Engine } from 'ox'
131
+ * import { Secp256k1 } from 'ox/wasm'
132
+ *
133
+ * await Engine.install({ Secp256k1: Secp256k1.engine() })
134
+ *
135
+ * Secp256k1.getPublicKey({ privateKey: '0x...' })
136
+ * ```
137
+ *
138
+ * @category Crypto
139
+ */
140
+ export * as Secp256k1 from './Secp256k1.js';
141
+ /**
142
+ * WASM implementations of Ox's supported X25519 primitives.
143
+ *
144
+ * @example
145
+ * ```ts twoslash
146
+ * // @noErrors
147
+ * import { Engine } from 'ox'
148
+ * import { X25519 } from 'ox/wasm'
149
+ *
150
+ * await Engine.install({ X25519: X25519.engine() })
151
+ *
152
+ * X25519.getPublicKey({ privateKey: '0x...' })
153
+ * ```
154
+ *
155
+ * @category Crypto
156
+ */
157
+ export * as X25519 from './X25519.js';
46
158
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wasm/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wasm/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
@@ -1,10 +1,10 @@
1
1
  /** @entrypointCategory WASM */
2
2
  /**
3
- * WASM implementations of ox's hash primitives, compiled from C.
3
+ * WASM implementations of Ox's supported cryptographic primitives, compiled
4
+ * from C.
4
5
  *
5
- * Load it and hand the result to {@link ox#Engine.set}. WASM must be compiled
6
- * asynchronously, so the `await` lives here -- every call afterwards is
7
- * synchronous.
6
+ * Install it during startup. WASM must be compiled asynchronously, so the
7
+ * `await` lives there. Every cryptographic call afterwards is synchronous.
8
8
  *
9
9
  * :::note
10
10
  * Performance varies by primitive, input size, runtime, and processor. Run
@@ -15,32 +15,144 @@
15
15
  * @example
16
16
  * ```ts twoslash
17
17
  * // @noErrors
18
- * import { Hash } from 'ox'
19
- * import { Engine } from 'ox/wasm'
18
+ * import { Engine, Hash } from 'ox/wasm'
20
19
  *
21
- * await Engine.load()
20
+ * await Engine.install()
22
21
  *
23
- * Hash.keccak256('0xdeadbeef')
22
+ * Hash.sha256('0xdeadbeef')
24
23
  * ```
25
24
  *
26
25
  * @category Crypto
27
26
  */
28
27
  export * as Engine from './Engine.js';
28
+ /**
29
+ * WASM implementations of Ox's supported Ed25519 primitives.
30
+ *
31
+ * @example
32
+ * ```ts twoslash
33
+ * // @noErrors
34
+ * import { Engine } from 'ox'
35
+ * import { Ed25519 } from 'ox/wasm'
36
+ *
37
+ * await Engine.install({ Ed25519: Ed25519.engine() })
38
+ *
39
+ * Ed25519.getPublicKey({ privateKey: '0x...' })
40
+ * ```
41
+ *
42
+ * @category Crypto
43
+ */
44
+ export * as Ed25519 from './Ed25519.js';
29
45
  /**
30
46
  * WASM implementations of Ox's supported hash primitives.
31
47
  *
32
48
  * @example
33
49
  * ```ts twoslash
34
50
  * // @noErrors
35
- * import { Engine, Hash } from 'ox'
36
- * import * as WasmHash from 'ox/wasm/Hash'
51
+ * import { Engine } from 'ox'
52
+ * import { Hash } from 'ox/wasm'
37
53
  *
38
- * Engine.set(await WasmHash.create())
54
+ * await Engine.install({ Hash: Hash.engine() })
39
55
  *
40
- * Hash.keccak256('0xdeadbeef')
56
+ * Hash.sha256('0xdeadbeef')
41
57
  * ```
42
58
  *
43
59
  * @category Crypto
44
60
  */
45
61
  export * as Hash from './Hash.js';
62
+ /**
63
+ * WASM implementations of Ox's synchronous PBKDF2-HMAC-SHA256 and scrypt
64
+ * primitives.
65
+ *
66
+ * @example
67
+ * ```ts twoslash
68
+ * // @noErrors
69
+ * import { Engine } from 'ox'
70
+ * import { Keystore } from 'ox/wasm'
71
+ *
72
+ * await Engine.install({ Keystore: Keystore.engine() })
73
+ *
74
+ * Keystore.pbkdf2({ password: 'testpassword' })
75
+ * ```
76
+ *
77
+ * @category Crypto
78
+ */
79
+ export * as Keystore from './Keystore.js';
80
+ /**
81
+ * WASM implementation of Ox's KZG interface, backed by c-kzg-4844.
82
+ *
83
+ * This module is not installed into [`Engine`](/api/Engine). Create an explicit
84
+ * instance, pass it anywhere that accepts `Kzg.Kzg`, and dispose it when done.
85
+ *
86
+ * @example
87
+ * ```ts twoslash
88
+ * // @noErrors
89
+ * import { Setups } from 'ox/trusted-setups'
90
+ * import { Kzg } from 'ox/wasm'
91
+ *
92
+ * const kzg = await Kzg.create({
93
+ * trustedSetup: Setups.mainnet
94
+ * })
95
+ *
96
+ * kzg.dispose()
97
+ * ```
98
+ *
99
+ * @category Crypto
100
+ */
101
+ export * as Kzg from './Kzg.js';
102
+ /**
103
+ * WASM implementation of Ox's BIP-39 seed derivation.
104
+ *
105
+ * @example
106
+ * ```ts twoslash
107
+ * // @noErrors
108
+ * import { Engine } from 'ox'
109
+ * import { Mnemonic } from 'ox/wasm'
110
+ *
111
+ * await Engine.install({ Mnemonic: Mnemonic.engine() })
112
+ *
113
+ * Mnemonic.toSeed(
114
+ * 'test test test test test test test test test test test junk'
115
+ * )
116
+ * ```
117
+ *
118
+ * @category Crypto
119
+ */
120
+ export * as Mnemonic from './Mnemonic.js';
121
+ /**
122
+ * WASM implementations of deterministic Secp256k1 primitives.
123
+ *
124
+ * This provider is opt-in because its embedded libsecp256k1 artifact is larger
125
+ * than the modules installed by [`Engine.install`](/api/Engine/install).
126
+ *
127
+ * @example
128
+ * ```ts twoslash
129
+ * // @noErrors
130
+ * import { Engine } from 'ox'
131
+ * import { Secp256k1 } from 'ox/wasm'
132
+ *
133
+ * await Engine.install({ Secp256k1: Secp256k1.engine() })
134
+ *
135
+ * Secp256k1.getPublicKey({ privateKey: '0x...' })
136
+ * ```
137
+ *
138
+ * @category Crypto
139
+ */
140
+ export * as Secp256k1 from './Secp256k1.js';
141
+ /**
142
+ * WASM implementations of Ox's supported X25519 primitives.
143
+ *
144
+ * @example
145
+ * ```ts twoslash
146
+ * // @noErrors
147
+ * import { Engine } from 'ox'
148
+ * import { X25519 } from 'ox/wasm'
149
+ *
150
+ * await Engine.install({ X25519: X25519.engine() })
151
+ *
152
+ * X25519.getPublicKey({ privateKey: '0x...' })
153
+ * ```
154
+ *
155
+ * @category Crypto
156
+ */
157
+ export * as X25519 from './X25519.js';
46
158
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wasm/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wasm/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
@@ -0,0 +1,11 @@
1
+ import * as internal from './instantiate.js';
2
+ /** Exports supplied by the dedicated portable BLAKE3 artifact. @internal */
3
+ export type Exports = {
4
+ blake3_hash(input: number, length: number, out: number): void;
5
+ zero(ptr: number, length: number): void;
6
+ };
7
+ /** Returns the one memoized BLAKE3 instance shared by its providers. */
8
+ export declare function load(): Promise<internal.Module<Exports>>;
9
+ /** Hashes an input through a loaded BLAKE3 module. @internal */
10
+ export declare function hash(module: internal.Module<Exports>, input: Uint8Array): Uint8Array;
11
+ //# sourceMappingURL=blake3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blake3.d.ts","sourceRoot":"","sources":["../../../src/wasm/internal/blake3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAA;AAK5C,4EAA4E;AAC5E,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACxC,CAAA;AAMD,wEAAwE;AACxE,wBAAgB,IAAI,sCAEnB;AAED,gEAAgE;AAChE,wBAAgB,IAAI,CAClB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAChC,KAAK,EAAE,UAAU,GAChB,UAAU,CAmBZ"}