ox 1.1.2 → 1.3.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 (296) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/dist/core/AbiFunction.d.ts +1 -1
  3. package/dist/core/AbiFunction.d.ts.map +1 -1
  4. package/dist/core/AbiFunction.js +6 -2
  5. package/dist/core/AbiFunction.js.map +1 -1
  6. package/dist/core/AbiParameters.d.ts +1 -1
  7. package/dist/core/AbiParameters.d.ts.map +1 -1
  8. package/dist/core/AbiParameters.js +1 -13
  9. package/dist/core/AbiParameters.js.map +1 -1
  10. package/dist/core/AesGcm.d.ts +36 -1
  11. package/dist/core/AesGcm.d.ts.map +1 -1
  12. package/dist/core/AesGcm.js +44 -0
  13. package/dist/core/AesGcm.js.map +1 -1
  14. package/dist/core/Ed25519.d.ts +46 -1
  15. package/dist/core/Ed25519.d.ts.map +1 -1
  16. package/dist/core/Ed25519.js +43 -0
  17. package/dist/core/Ed25519.js.map +1 -1
  18. package/dist/core/Engine.d.ts +1 -1
  19. package/dist/core/Engine.d.ts.map +1 -1
  20. package/dist/core/Engine.js.map +1 -1
  21. package/dist/core/Hash.d.ts +200 -1
  22. package/dist/core/Hash.d.ts.map +1 -1
  23. package/dist/core/Hash.js +207 -0
  24. package/dist/core/Hash.js.map +1 -1
  25. package/dist/core/Hex.d.ts.map +1 -1
  26. package/dist/core/Hex.js +1 -4
  27. package/dist/core/Hex.js.map +1 -1
  28. package/dist/core/Rlp.d.ts +32 -0
  29. package/dist/core/Rlp.d.ts.map +1 -1
  30. package/dist/core/Rlp.js +146 -0
  31. package/dist/core/Rlp.js.map +1 -1
  32. package/dist/core/Secp256k1.d.ts +46 -1
  33. package/dist/core/Secp256k1.d.ts.map +1 -1
  34. package/dist/core/Secp256k1.js +48 -0
  35. package/dist/core/Secp256k1.js.map +1 -1
  36. package/dist/core/WebAuthn.d.ts +224 -0
  37. package/dist/core/WebAuthn.d.ts.map +1 -0
  38. package/dist/core/WebAuthn.js +343 -0
  39. package/dist/core/WebAuthn.js.map +1 -0
  40. package/dist/core/WebAuthnP256.d.ts +46 -50
  41. package/dist/core/WebAuthnP256.d.ts.map +1 -1
  42. package/dist/core/WebAuthnP256.js +44 -50
  43. package/dist/core/WebAuthnP256.js.map +1 -1
  44. package/dist/core/internal/abiParameters.d.ts +7 -87
  45. package/dist/core/internal/abiParameters.d.ts.map +1 -1
  46. package/dist/core/internal/abiParameters.js +339 -194
  47. package/dist/core/internal/abiParameters.js.map +1 -1
  48. package/dist/core/internal/engine.d.ts +35 -2
  49. package/dist/core/internal/engine.d.ts.map +1 -1
  50. package/dist/core/internal/engine.js +12 -1
  51. package/dist/core/internal/engine.js.map +1 -1
  52. package/dist/core/internal/hash.d.ts +10 -0
  53. package/dist/core/internal/hash.d.ts.map +1 -1
  54. package/dist/core/internal/hash.js +26 -1
  55. package/dist/core/internal/hash.js.map +1 -1
  56. package/dist/index.d.ts +23 -14
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +23 -14
  59. package/dist/index.js.map +1 -1
  60. package/dist/node/Engine.d.ts +1 -1
  61. package/dist/node/Engine.d.ts.map +1 -1
  62. package/dist/node/Engine.js.map +1 -1
  63. package/dist/node/Hash.d.ts +6 -4
  64. package/dist/node/Hash.d.ts.map +1 -1
  65. package/dist/node/Hash.js +35 -3
  66. package/dist/node/Hash.js.map +1 -1
  67. package/dist/tempo/AuthorizationTempo.d.ts +6 -6
  68. package/dist/tempo/AuthorizationTempo.js +6 -6
  69. package/dist/tempo/KeyAuthorization.d.ts +3 -8
  70. package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
  71. package/dist/tempo/KeyAuthorization.js +3 -8
  72. package/dist/tempo/KeyAuthorization.js.map +1 -1
  73. package/dist/tempo/SignatureEnvelope.d.ts +8 -8
  74. package/dist/tempo/SignatureEnvelope.js +8 -8
  75. package/dist/trusted-setups/Paths.d.ts +1 -0
  76. package/dist/trusted-setups/Paths.d.ts.map +1 -1
  77. package/dist/trusted-setups/Paths.js +1 -0
  78. package/dist/trusted-setups/Paths.js.map +1 -1
  79. package/dist/trusted-setups/Setups.d.ts +35 -0
  80. package/dist/trusted-setups/Setups.d.ts.map +1 -0
  81. package/dist/trusted-setups/Setups.js +29 -0
  82. package/dist/trusted-setups/Setups.js.map +1 -0
  83. package/dist/trusted-setups/index.d.ts +20 -0
  84. package/dist/trusted-setups/index.d.ts.map +1 -1
  85. package/dist/trusted-setups/index.js +20 -0
  86. package/dist/trusted-setups/index.js.map +1 -1
  87. package/dist/trusted-setups/internal/paths.d.ts.map +1 -1
  88. package/dist/trusted-setups/internal/paths.js +1 -1
  89. package/dist/trusted-setups/internal/paths.js.map +1 -1
  90. package/dist/trusted-setups/internal/setups/mainnet.d.ts +7 -0
  91. package/dist/trusted-setups/internal/setups/mainnet.d.ts.map +1 -0
  92. package/dist/trusted-setups/internal/setups/mainnet.js +11 -0
  93. package/dist/trusted-setups/internal/setups/mainnet.js.map +1 -0
  94. package/dist/wasm/Engine.d.ts +4 -3
  95. package/dist/wasm/Engine.d.ts.map +1 -1
  96. package/dist/wasm/Engine.js +5 -5
  97. package/dist/wasm/Engine.js.map +1 -1
  98. package/dist/wasm/Hash.d.ts +1 -1
  99. package/dist/wasm/Hash.d.ts.map +1 -1
  100. package/dist/wasm/Hash.js +5 -0
  101. package/dist/wasm/Hash.js.map +1 -1
  102. package/dist/wasm/Keystore.d.ts +23 -9
  103. package/dist/wasm/Keystore.d.ts.map +1 -1
  104. package/dist/wasm/Keystore.js +30 -13
  105. package/dist/wasm/Keystore.js.map +1 -1
  106. package/dist/wasm/Kzg.d.ts +112 -0
  107. package/dist/wasm/Kzg.d.ts.map +1 -0
  108. package/dist/wasm/Kzg.js +333 -0
  109. package/dist/wasm/Kzg.js.map +1 -0
  110. package/dist/wasm/Secp256k1.d.ts +55 -0
  111. package/dist/wasm/Secp256k1.d.ts.map +1 -0
  112. package/dist/wasm/Secp256k1.js +181 -0
  113. package/dist/wasm/Secp256k1.js.map +1 -0
  114. package/dist/wasm/index.d.ts +44 -1
  115. package/dist/wasm/index.d.ts.map +1 -1
  116. package/dist/wasm/index.js +44 -1
  117. package/dist/wasm/index.js.map +1 -1
  118. package/dist/wasm/internal/blake3.d.ts +10 -1
  119. package/dist/wasm/internal/blake3.d.ts.map +1 -1
  120. package/dist/wasm/internal/blake3.js +12 -1
  121. package/dist/wasm/internal/blake3.js.map +1 -1
  122. package/dist/wasm/internal/blake3.wasm.d.ts +3 -1
  123. package/dist/wasm/internal/blake3.wasm.d.ts.map +1 -1
  124. package/dist/wasm/internal/blake3.wasm.js +3 -1
  125. package/dist/wasm/internal/blake3.wasm.js.map +1 -1
  126. package/dist/wasm/internal/hash.d.ts +9 -0
  127. package/dist/wasm/internal/hash.d.ts.map +1 -1
  128. package/dist/wasm/internal/hash.js +13 -1
  129. package/dist/wasm/internal/hash.js.map +1 -1
  130. package/dist/wasm/internal/hashState.d.ts +25 -0
  131. package/dist/wasm/internal/hashState.d.ts.map +1 -0
  132. package/dist/wasm/internal/hashState.js +105 -0
  133. package/dist/wasm/internal/hashState.js.map +1 -0
  134. package/dist/wasm/internal/hashes.d.ts +12 -1
  135. package/dist/wasm/internal/hashes.d.ts.map +1 -1
  136. package/dist/wasm/internal/hashes.js +18 -1
  137. package/dist/wasm/internal/hashes.js.map +1 -1
  138. package/dist/wasm/internal/hashes.wasm.d.ts +11 -3
  139. package/dist/wasm/internal/hashes.wasm.d.ts.map +1 -1
  140. package/dist/wasm/internal/hashes.wasm.js +11 -3
  141. package/dist/wasm/internal/hashes.wasm.js.map +1 -1
  142. package/dist/wasm/internal/instantiate.d.ts +12 -0
  143. package/dist/wasm/internal/instantiate.d.ts.map +1 -1
  144. package/dist/wasm/internal/instantiate.js +23 -7
  145. package/dist/wasm/internal/instantiate.js.map +1 -1
  146. package/dist/wasm/internal/keystore.d.ts +10 -0
  147. package/dist/wasm/internal/keystore.d.ts.map +1 -0
  148. package/dist/wasm/internal/keystore.js +10 -0
  149. package/dist/wasm/internal/keystore.js.map +1 -0
  150. package/dist/wasm/internal/kzg.d.ts +17 -0
  151. package/dist/wasm/internal/kzg.d.ts.map +1 -0
  152. package/dist/wasm/internal/kzg.js +8 -0
  153. package/dist/wasm/internal/kzg.js.map +1 -0
  154. package/dist/wasm/internal/kzg.wasm.d.ts +3 -0
  155. package/dist/wasm/internal/kzg.wasm.d.ts.map +1 -0
  156. package/dist/wasm/internal/kzg.wasm.js +10 -0
  157. package/dist/wasm/internal/kzg.wasm.js.map +1 -0
  158. package/dist/wasm/internal/scrypt.d.ts +16 -0
  159. package/dist/wasm/internal/scrypt.d.ts.map +1 -0
  160. package/dist/wasm/internal/scrypt.js +78 -0
  161. package/dist/wasm/internal/scrypt.js.map +1 -0
  162. package/dist/wasm/internal/scrypt.wasm.d.ts +7 -0
  163. package/dist/wasm/internal/scrypt.wasm.d.ts.map +1 -0
  164. package/dist/wasm/internal/scrypt.wasm.js +14 -0
  165. package/dist/wasm/internal/scrypt.wasm.js.map +1 -0
  166. package/dist/wasm/internal/secp256k1.d.ts +16 -0
  167. package/dist/wasm/internal/secp256k1.d.ts.map +1 -0
  168. package/dist/wasm/internal/secp256k1.js +20 -0
  169. package/dist/wasm/internal/secp256k1.js.map +1 -0
  170. package/dist/wasm/internal/secp256k1.wasm.d.ts +3 -0
  171. package/dist/wasm/internal/secp256k1.wasm.d.ts.map +1 -0
  172. package/dist/wasm/internal/secp256k1.wasm.js +10 -0
  173. package/dist/wasm/internal/secp256k1.wasm.js.map +1 -0
  174. package/dist/webauthn/Authentication.d.ts +2 -0
  175. package/dist/webauthn/Authentication.d.ts.map +1 -1
  176. package/dist/webauthn/Authentication.js +2 -1
  177. package/dist/webauthn/Authentication.js.map +1 -1
  178. package/dist/webauthn/Registration.d.ts.map +1 -1
  179. package/dist/webauthn/Registration.js +2 -1
  180. package/dist/webauthn/Registration.js.map +1 -1
  181. package/dist/webauthn/Types.d.ts +27 -6
  182. package/dist/webauthn/Types.d.ts.map +1 -1
  183. package/dist/webauthn/internal/utils.d.ts.map +1 -1
  184. package/dist/webauthn/internal/utils.js +35 -9
  185. package/dist/webauthn/internal/utils.js.map +1 -1
  186. package/dist/zod/TypedData.d.ts +2 -2
  187. package/package.json +27 -2
  188. package/src/benchmarks/Ox.bench.ts +6 -0
  189. package/src/benchmarks/OxNode.bench.ts +8 -0
  190. package/src/benchmarks/OxV0.bench.ts +4 -0
  191. package/src/benchmarks/OxWasm.bench.ts +22 -0
  192. package/src/core/AbiFunction.ts +5 -5
  193. package/src/core/AbiParameters.ts +8 -20
  194. package/src/core/AesGcm.ts +86 -1
  195. package/src/core/Ed25519.ts +87 -1
  196. package/src/core/Engine.ts +1 -0
  197. package/src/core/Hash.ts +321 -1
  198. package/src/core/Hex.ts +1 -4
  199. package/src/core/Rlp.ts +172 -5
  200. package/src/core/Secp256k1.ts +92 -1
  201. package/src/core/WebAuthn.ts +579 -0
  202. package/src/core/WebAuthnP256.ts +47 -50
  203. package/src/core/_test/AbiFunction.test.ts +9 -0
  204. package/src/core/_test/AbiParameters.differential.fuzz.ts +156 -0
  205. package/src/core/_test/AbiParameters.encode.test.ts +22 -0
  206. package/src/core/_test/AbiParameters.fuzz.ts +4 -0
  207. package/src/core/_test/AesGcm.test.ts +76 -0
  208. package/src/core/_test/Block.test.ts +9 -2
  209. package/src/core/_test/Ed25519.test-d.ts +13 -1
  210. package/src/core/_test/Ed25519.test.ts +120 -1
  211. package/src/core/_test/Engine.test-d.ts +9 -0
  212. package/src/core/_test/Engine.test.ts +1 -1
  213. package/src/core/_test/Hash.test-d.ts +41 -0
  214. package/src/core/_test/Hash.test.ts +278 -1
  215. package/src/core/_test/Hash.vectors.test.ts +1 -2
  216. package/src/core/_test/Hex.test.ts +2 -0
  217. package/src/core/_test/Rlp.test-d.ts +18 -0
  218. package/src/core/_test/Rlp.test.ts +109 -0
  219. package/src/core/_test/Secp256k1.test-d.ts +14 -0
  220. package/src/core/_test/Secp256k1.test.ts +91 -1
  221. package/src/core/_test/Transaction.test.ts +11 -2
  222. package/src/core/_test/WebAuthn.test-d.ts +142 -0
  223. package/src/core/_test/WebAuthn.test.ts +766 -0
  224. package/src/core/_test/index.test.ts +1 -0
  225. package/src/core/internal/abiParameters.ts +466 -326
  226. package/src/core/internal/engine.ts +47 -2
  227. package/src/core/internal/hash.ts +53 -1
  228. package/src/index.ts +24 -14
  229. package/src/node/Engine.ts +1 -0
  230. package/src/node/Hash.ts +43 -6
  231. package/src/node/_test/Engine.test-d.ts +1 -0
  232. package/src/node/_test/Engine.test.ts +2 -0
  233. package/src/node/_test/Hash.test-d.ts +11 -0
  234. package/src/node/_test/Hash.test.ts +46 -0
  235. package/src/tempo/AuthorizationTempo.ts +6 -6
  236. package/src/tempo/KeyAuthorization.ts +3 -8
  237. package/src/tempo/SignatureEnvelope.ts +8 -8
  238. package/src/trusted-setups/Paths.ts +1 -0
  239. package/src/trusted-setups/README.md +39 -0
  240. package/src/trusted-setups/Setups.ts +46 -0
  241. package/src/trusted-setups/_test/Paths.test.ts +16 -0
  242. package/src/trusted-setups/_test/Setups.test-d.ts +7 -0
  243. package/src/trusted-setups/_test/Setups.test.ts +43 -0
  244. package/src/trusted-setups/_test/index.test.ts +1 -0
  245. package/src/trusted-setups/index.ts +21 -0
  246. package/src/trusted-setups/internal/paths.ts +4 -1
  247. package/src/trusted-setups/internal/setups/mainnet.source.json +7 -0
  248. package/src/trusted-setups/internal/setups/mainnet.ts +16 -0
  249. package/src/version.ts +1 -1
  250. package/src/wasm/Engine.ts +9 -6
  251. package/src/wasm/Hash.ts +10 -0
  252. package/src/wasm/Keystore.bench.ts +26 -0
  253. package/src/wasm/Keystore.ts +32 -14
  254. package/src/wasm/Kzg.bench.ts +63 -0
  255. package/src/wasm/Kzg.ts +518 -0
  256. package/src/wasm/Secp256k1.bench.ts +79 -0
  257. package/src/wasm/Secp256k1.ts +248 -0
  258. package/src/wasm/_test/Engine.test-d.ts +2 -0
  259. package/src/wasm/_test/Engine.test.ts +5 -0
  260. package/src/wasm/_test/Hash.browser.test.ts +31 -0
  261. package/src/wasm/_test/Hash.test-d.ts +17 -0
  262. package/src/wasm/_test/Hash.test.ts +252 -3
  263. package/src/wasm/_test/Keystore.browser.test.ts +31 -0
  264. package/src/wasm/_test/Keystore.fuzz.ts +50 -0
  265. package/src/wasm/_test/Keystore.test-d.ts +10 -1
  266. package/src/wasm/_test/Keystore.test.ts +289 -4
  267. package/src/wasm/_test/Kzg.test-d.ts +19 -0
  268. package/src/wasm/_test/Kzg.test.ts +220 -0
  269. package/src/wasm/_test/Runtime.test.ts +9 -0
  270. package/src/wasm/_test/Secp256k1.test-d.ts +35 -0
  271. package/src/wasm/_test/Secp256k1.test.ts +354 -0
  272. package/src/wasm/index.ts +46 -1
  273. package/src/wasm/internal/blake3.ts +23 -2
  274. package/src/wasm/internal/blake3.wasm.ts +4 -1
  275. package/src/wasm/internal/hash.ts +27 -1
  276. package/src/wasm/internal/hashState.ts +154 -0
  277. package/src/wasm/internal/hashes.ts +56 -15
  278. package/src/wasm/internal/hashes.wasm.ts +15 -3
  279. package/src/wasm/internal/instantiate.ts +29 -9
  280. package/src/wasm/internal/keystore.ts +19 -0
  281. package/src/wasm/internal/kzg.ts +50 -0
  282. package/src/wasm/internal/kzg.wasm.ts +11 -0
  283. package/src/wasm/internal/scrypt.ts +131 -0
  284. package/src/wasm/internal/scrypt.wasm.ts +17 -0
  285. package/src/wasm/internal/secp256k1.ts +62 -0
  286. package/src/wasm/internal/secp256k1.wasm.ts +11 -0
  287. package/src/webauthn/Authentication.ts +4 -0
  288. package/src/webauthn/Registration.ts +2 -0
  289. package/src/webauthn/Types.ts +32 -2
  290. package/src/webauthn/_test/Authentication.test.ts +123 -1
  291. package/src/webauthn/_test/Registration.test.ts +26 -6
  292. package/src/webauthn/_test/WebAuthn.browser.test.ts +28 -0
  293. package/src/webauthn/internal/utils.ts +41 -8
  294. package/wasm/vendor/c-kzg-4844/LICENSE +201 -0
  295. package/wasm/vendor/c-kzg-4844/blst/LICENSE +201 -0
  296. package/src/trusted-setups/internal/setups/mainnet.txt +0 -4163
@@ -1 +1 @@
1
- {"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/webauthn/Types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAE1C,MAAM,MAAM,+BAA+B,GACvC,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,MAAM,CAAA;AAEV,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,UAAU,CAAA;AAEnE,MAAM,MAAM,sBAAsB,GAC9B,KAAK,GACL,QAAQ,GACR,UAAU,GACV,KAAK,GACL,KAAK,CAAA;AAET,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAE5C,MAAM,MAAM,8BAA8B,GACtC,aAAa,GACb,UAAU,GACV,UAAU,GACV,QAAQ,CAAA;AAEZ,MAAM,MAAM,uBAAuB,GAAG,YAAY,CAAA;AAElD,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAA;AAE7E,MAAM,MAAM,2BAA2B,GACnC,aAAa,GACb,WAAW,GACX,UAAU,CAAA;AAEd,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,UAAU,GAAG,WAAW,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,WAAW,CAAA;AAExD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;AAEtE,MAAM,WAAW,oCAAoC,CACnD,UAAU,SAAS,OAAO,GAAG,KAAK;IAElC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,CAAC,EAAE,UAAU,SAAS,IAAI,GAAG;QAAE,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,YAAY,CAAA;IAC1E,SAAS,CAAC,EAAE,gBAAgB,CAAA;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,WAAW,CAAC,EAAE,sBAAsB,CAAA;IACpC,gBAAgB,CAAC,EAAE,2BAA2B,CAAA;CAC/C;AAED;;;;GAIG;AACH,MAAM,WAAW,gCAAgC,CAC/C,UAAU,SAAS,OAAO,GAAG,KAAK,CAClC,SAAQ,qBAAqB,CAAC,UAAU,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,UAAU,SAAS,IAAI,GAAG,MAAM,GAAG,WAAW,CAAA;IAC1E,oBAAoB,IAAI,WAAW,CAAA;IACnC,YAAY,IAAI,WAAW,GAAG,IAAI,CAAA;IAClC,qBAAqB,IAAI,uBAAuB,CAAA;IAChD,aAAa,IAAI,MAAM,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,qBAAqB,CAAC,UAAU,SAAS,OAAO,GAAG,KAAK;IACvE,QAAQ,CAAC,cAAc,EAAE,UAAU,SAAS,IAAI,GAAG,MAAM,GAAG,WAAW,CAAA;CACxE;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,yBAAyB,CAAC,UAAU,SAAS,OAAO,GAAG,KAAK;IAC3E,SAAS,CAAC,EAAE,kCAAkC,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,wBAAwB,CAAC,UAAU,SAAS,OAAO,GAAG,KAAK;IAC1E,SAAS,CAAC,EAAE,8BAA8B,CAAA;IAC1C,SAAS,CAAC,EAAE,iCAAiC,CAAC,UAAU,CAAC,CAAA;IACzD,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,MAAM,mBAAmB,CAAC,UAAU,SAAS,OAAO,GAAG,KAAK,IAChE,UAAU,GAAG;IACX,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/C,QAAQ,CAAC,KAAK,EAAE,UAAU,SAAS,IAAI,GAAG,MAAM,GAAG,WAAW,CAAA;IAC9D,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAA;CACrD,GAAG,CAAC,UAAU,SAAS,IAAI,GACtB,EAAE,GACF;IACE,yBAAyB,IAAI,qCAAqC,CAAA;CACnE,CAAC,CAAA;AAEV,MAAM,WAAW,kCAAkC,CACjD,UAAU,SAAS,OAAO,GAAG,KAAK;IAElC,WAAW,CAAC,EAAE,+BAA+B,CAAA;IAC7C,sBAAsB,CAAC,EAAE,8BAA8B,CAAA;IACvD,SAAS,EAAE,UAAU,SAAS,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,YAAY,CAAA;IAC3D,kBAAkB,CAAC,EAAE,6BAA6B,CAAC,UAAU,CAAC,EAAE,CAAA;IAChE,UAAU,CAAC,EAAE,oCAAoC,CAAC,UAAU,CAAC,CAAA;IAC7D,gBAAgB,EAAE,6BAA6B,EAAE,CAAA;IACjD,EAAE,EAAE,2BAA2B,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,6BAA6B,CAAC,UAAU,CAAC,CAAA;CAChD;AAED,MAAM,WAAW,6BAA6B,CAC5C,UAAU,SAAS,OAAO,GAAG,KAAK;IAElC,EAAE,EAAE,UAAU,SAAS,IAAI,GAAG,MAAM,GAAG,YAAY,CAAA;IACnD,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAA;IACrC,IAAI,EAAE,uBAAuB,CAAA;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,6BAA6B;IAC5C,GAAG,EAAE,uBAAuB,CAAA;IAC5B,IAAI,EAAE,uBAAuB,CAAA;CAC9B;AAED,MAAM,WAAW,iCAAiC,CAChD,UAAU,SAAS,OAAO,GAAG,KAAK;IAElC,gBAAgB,CAAC,EAAE,6BAA6B,CAAC,UAAU,CAAC,EAAE,CAAA;IAC9D,SAAS,EAAE,UAAU,SAAS,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,YAAY,CAAA;IAC3D,UAAU,CAAC,EAAE,oCAAoC,CAAC,UAAU,CAAC,CAAA;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,2BAA2B,CAAA;CAC/C;AAED,MAAM,WAAW,2BAA4B,SAAQ,yBAAyB;IAC5E,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,6BAA6B,CAC5C,UAAU,SAAS,OAAO,GAAG,KAAK,CAClC,SAAQ,yBAAyB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,EAAE,EAAE,UAAU,SAAS,IAAI,GAAG,MAAM,GAAG,YAAY,CAAA;CACpD"}
1
+ {"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/webauthn/Types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/webauthn/internal/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,aAAa,CAAA;AAEzC,gBAAgB;AAChB,eAAO,MAAM,gBAAgB;;;CAAqC,CAAA;AAElE,gBAAgB;AAChB,eAAO,MAAM,YAAY,kGAMf,CAAA;AAEV,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAKjE;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,GAAG,UAAU,CAI1E;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,qDAAqD;IACrD,KAAK,EAAE,UAAU,CAAA;IACjB,uDAAuD;IACvD,QAAQ,EAAE,UAAU,CAAA;IACpB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,yBAAyB;IACzB,EAAE,EAAE,OAAO,CAAA;IACX,0BAA0B;IAC1B,EAAE,EAAE,OAAO,CAAA;IACX,+BAA+B;IAC/B,EAAE,EAAE,OAAO,CAAA;IACX,yBAAyB;IACzB,EAAE,EAAE,OAAO,CAAA;IACX,qCAAqC;IACrC,EAAE,EAAE,OAAO,CAAA;IACX,2BAA2B;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,UAAU,GAC5B,uBAAuB,GAAG,SAAS,CAoBrC;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,KAAK,CAAC,oCAAoC,GACrD,KAAK,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAYlD;AAED,gBAAgB;AAChB,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,KAAK,CAAC,oCAAoC,CAAC,IAAI,CAAC,GAC3D,KAAK,CAAC,oCAAoC,CAY5C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/webauthn/internal/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,aAAa,CAAA;AAEzC,gBAAgB;AAChB,eAAO,MAAM,gBAAgB;;;CAAqC,CAAA;AAElE,gBAAgB;AAChB,eAAO,MAAM,YAAY,kGAMf,CAAA;AAEV,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAKjE;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,GAAG,UAAU,CAK1E;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,qDAAqD;IACrD,KAAK,EAAE,UAAU,CAAA;IACjB,uDAAuD;IACvD,QAAQ,EAAE,UAAU,CAAA;IACpB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,yBAAyB;IACzB,EAAE,EAAE,OAAO,CAAA;IACX,0BAA0B;IAC1B,EAAE,EAAE,OAAO,CAAA;IACX,+BAA+B;IAC/B,EAAE,EAAE,OAAO,CAAA;IACX,yBAAyB;IACzB,EAAE,EAAE,OAAO,CAAA;IACX,qCAAqC;IACrC,EAAE,EAAE,OAAO,CAAA;IACX,2BAA2B;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,UAAU,GAC5B,uBAAuB,GAAG,SAAS,CAoBrC;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,KAAK,CAAC,oCAAoC,GACrD,KAAK,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAmBlD;AAED,gBAAgB;AAChB,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,KAAK,CAAC,oCAAoC,CAAC,IAAI,CAAC,GAC3D,KAAK,CAAC,oCAAoC,CAmB5C"}
@@ -17,9 +17,9 @@ export function bytesToArrayBuffer(bytes) {
17
17
  export function bufferSourceToBytes(source) {
18
18
  if (source instanceof Uint8Array)
19
19
  return source;
20
- if (source instanceof ArrayBuffer)
21
- return new Uint8Array(source);
22
- return new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
20
+ if (ArrayBuffer.isView(source))
21
+ return new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
22
+ return new Uint8Array(source);
23
23
  }
24
24
  /**
25
25
  * Parses the fixed 37-byte header of authenticator data into rpIdHash, flags
@@ -77,13 +77,18 @@ export function serializeResponseFields(response) {
77
77
  /** @internal */
78
78
  export function serializeExtensions(extensions) {
79
79
  const { prf, ...rest } = extensions;
80
+ const { eval: eval_, evalByCredential } = prf ?? {};
80
81
  return {
81
82
  ...rest,
82
83
  ...(prf && {
83
84
  prf: {
84
- eval: {
85
- first: Base64.fromBytes(prf.eval.first, base64UrlOptions),
86
- },
85
+ ...(eval_ && { eval: serializePrfValues(eval_) }),
86
+ ...(evalByCredential && {
87
+ evalByCredential: Object.fromEntries(Object.entries(evalByCredential).map(([id, values]) => [
88
+ id,
89
+ serializePrfValues(values),
90
+ ])),
91
+ }),
87
92
  },
88
93
  }),
89
94
  };
@@ -91,15 +96,36 @@ export function serializeExtensions(extensions) {
91
96
  /** @internal */
92
97
  export function deserializeExtensions(extensions) {
93
98
  const { prf, ...rest } = extensions;
99
+ const { eval: eval_, evalByCredential } = prf ?? {};
94
100
  return {
95
101
  ...rest,
96
102
  ...(prf && {
97
103
  prf: {
98
- eval: {
99
- first: Base64.toBytes(prf.eval.first),
100
- },
104
+ ...(eval_ && { eval: deserializePrfValues(eval_) }),
105
+ ...(evalByCredential && {
106
+ evalByCredential: Object.fromEntries(Object.entries(evalByCredential).map(([id, values]) => [
107
+ id,
108
+ deserializePrfValues(values),
109
+ ])),
110
+ }),
101
111
  },
102
112
  }),
103
113
  };
104
114
  }
115
+ function serializePrfValues(values) {
116
+ const { first, second } = values;
117
+ return {
118
+ first: Base64.fromBytes(bufferSourceToBytes(first), base64UrlOptions),
119
+ ...(second !== undefined && {
120
+ second: Base64.fromBytes(bufferSourceToBytes(second), base64UrlOptions),
121
+ }),
122
+ };
123
+ }
124
+ function deserializePrfValues(values) {
125
+ const { first, second } = values;
126
+ return {
127
+ first: Base64.toBytes(first),
128
+ ...(second !== undefined && { second: Base64.toBytes(second) }),
129
+ };
130
+ }
105
131
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/webauthn/internal/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/webauthn/internal/utils.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
34
34
  [x: `bytes7[${string}]`]: undefined;
35
35
  [x: `bytes5[${string}]`]: undefined;
36
36
  [x: `bytes3[${string}]`]: undefined;
37
+ [x: `bytes20[${string}]`]: undefined;
37
38
  [x: `bytes9[${string}]`]: undefined;
38
39
  [x: `bytes11[${string}]`]: undefined;
39
40
  [x: `bytes12[${string}]`]: undefined;
@@ -43,7 +44,6 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
43
44
  [x: `bytes17[${string}]`]: undefined;
44
45
  [x: `bytes18[${string}]`]: undefined;
45
46
  [x: `bytes19[${string}]`]: undefined;
46
- [x: `bytes20[${string}]`]: undefined;
47
47
  [x: `bytes21[${string}]`]: undefined;
48
48
  [x: `bytes22[${string}]`]: undefined;
49
49
  [x: `bytes23[${string}]`]: undefined;
@@ -134,6 +134,7 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
134
134
  bytes7?: undefined;
135
135
  bytes5?: undefined;
136
136
  bytes3?: undefined;
137
+ bytes20?: undefined;
137
138
  bytes9?: undefined;
138
139
  bytes11?: undefined;
139
140
  bytes12?: undefined;
@@ -143,7 +144,6 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
143
144
  bytes17?: undefined;
144
145
  bytes18?: undefined;
145
146
  bytes19?: undefined;
146
- bytes20?: undefined;
147
147
  bytes21?: undefined;
148
148
  bytes22?: undefined;
149
149
  bytes23?: undefined;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "ox",
3
3
  "description": "Ethereum Standard Library",
4
4
  "type": "module",
5
- "version": "1.1.2",
5
+ "version": "1.3.0",
6
6
  "main": "./dist/index.js",
7
7
  "sideEffects": false,
8
8
  "license": "MIT",
@@ -28,7 +28,9 @@
28
28
  "files": [
29
29
  "CHANGELOG.md",
30
30
  "dist",
31
- "src"
31
+ "src",
32
+ "wasm/vendor/c-kzg-4844/LICENSE",
33
+ "wasm/vendor/c-kzg-4844/blst/LICENSE"
32
34
  ],
33
35
  "dependencies": {
34
36
  "@adraffy/ens-normalize": "^1.11.0",
@@ -415,6 +417,11 @@
415
417
  "types": "./dist/core/Value.d.ts",
416
418
  "default": "./dist/core/Value.js"
417
419
  },
420
+ "./WebAuthn": {
421
+ "src": "./src/core/WebAuthn.ts",
422
+ "types": "./dist/core/WebAuthn.d.ts",
423
+ "default": "./dist/core/WebAuthn.js"
424
+ },
418
425
  "./WebAuthnP256": {
419
426
  "src": "./src/core/WebAuthnP256.ts",
420
427
  "types": "./dist/core/WebAuthnP256.d.ts",
@@ -665,6 +672,11 @@
665
672
  "types": "./dist/trusted-setups/Paths.d.ts",
666
673
  "default": "./dist/trusted-setups/Paths.js"
667
674
  },
675
+ "./trusted-setups/Setups": {
676
+ "src": "./src/trusted-setups/Setups.ts",
677
+ "types": "./dist/trusted-setups/Setups.d.ts",
678
+ "default": "./dist/trusted-setups/Setups.js"
679
+ },
668
680
  "./wasm": {
669
681
  "src": "./src/wasm/index.ts",
670
682
  "types": "./dist/wasm/index.d.ts",
@@ -690,11 +702,21 @@
690
702
  "types": "./dist/wasm/Keystore.d.ts",
691
703
  "default": "./dist/wasm/Keystore.js"
692
704
  },
705
+ "./wasm/Kzg": {
706
+ "src": "./src/wasm/Kzg.ts",
707
+ "types": "./dist/wasm/Kzg.d.ts",
708
+ "default": "./dist/wasm/Kzg.js"
709
+ },
693
710
  "./wasm/Mnemonic": {
694
711
  "src": "./src/wasm/Mnemonic.ts",
695
712
  "types": "./dist/wasm/Mnemonic.d.ts",
696
713
  "default": "./dist/wasm/Mnemonic.js"
697
714
  },
715
+ "./wasm/Secp256k1": {
716
+ "src": "./src/wasm/Secp256k1.ts",
717
+ "types": "./dist/wasm/Secp256k1.d.ts",
718
+ "default": "./dist/wasm/Secp256k1.js"
719
+ },
698
720
  "./wasm/X25519": {
699
721
  "src": "./src/wasm/X25519.ts",
700
722
  "types": "./dist/wasm/X25519.d.ts",
@@ -1040,6 +1062,9 @@
1040
1062
  "types": "./dist/index.d.ts",
1041
1063
  "typesVersions": {
1042
1064
  "*": {
1065
+ "_types/*": [
1066
+ "./dist/*.d.ts"
1067
+ ],
1043
1068
  "*": [
1044
1069
  "./dist/*",
1045
1070
  "./dist/*/index.d.ts",
@@ -0,0 +1,6 @@
1
+ import { Engine } from 'ox'
2
+ import { register } from '../../test/benchmarks/comparison.js'
3
+ import { createOperations } from '../../test/benchmarks/comparison.current.js'
4
+
5
+ Engine.reset()
6
+ register('ox', createOperations())
@@ -0,0 +1,8 @@
1
+ import { Engine } from 'ox'
2
+ import { Engine as NodeEngine } from 'ox/node'
3
+ import { register } from '../../test/benchmarks/comparison.js'
4
+ import { createOperations } from '../../test/benchmarks/comparison.current.js'
5
+
6
+ Engine.reset()
7
+ Engine.set(await NodeEngine.engine())
8
+ register('ox/node', createOperations())
@@ -0,0 +1,4 @@
1
+ import { register } from '../../test/benchmarks/comparison.js'
2
+ import { createOperations } from '../../test/benchmarks/comparison.v0.js'
3
+
4
+ register('ox v0', createOperations())
@@ -0,0 +1,22 @@
1
+ import { Engine } from 'ox'
2
+ import {
3
+ Engine as WasmEngine,
4
+ Keystore as WasmKeystore,
5
+ Secp256k1 as WasmSecp256k1,
6
+ } from 'ox/wasm'
7
+ import { register } from '../../test/benchmarks/comparison.js'
8
+ import { createOperations } from '../../test/benchmarks/comparison.current.js'
9
+
10
+ const [wasm, keystore, secp256k1] = await Promise.all([
11
+ WasmEngine.engine(),
12
+ WasmKeystore.engine(),
13
+ WasmSecp256k1.engine(),
14
+ ])
15
+
16
+ Engine.reset()
17
+ Engine.set({
18
+ ...wasm,
19
+ Keystore: keystore,
20
+ Secp256k1: secp256k1,
21
+ })
22
+ register('ox/wasm', createOperations())
@@ -6,7 +6,7 @@ import type * as Errors from './Errors.js'
6
6
  import * as Hex from './Hex.js'
7
7
  import type * as internal from './internal/abiFunction.js'
8
8
  import type * as AbiItem_internal from './internal/abiItem.js'
9
- import type * as AbiParameters_internal from './internal/abiParameters.js'
9
+ import * as AbiParameters_internal from './internal/abiParameters.js'
10
10
  import * as formatAbiItem from './internal/human-readable/formatAbiItem.js'
11
11
  import type { IsNarrowable } from './internal/types.js'
12
12
 
@@ -670,10 +670,10 @@ export function encodeData(
670
670
 
671
671
  const selector = getSelector(item)
672
672
 
673
- const data =
674
- args.length > 0 ? AbiParameters.encode(item.inputs, args) : undefined
675
-
676
- return data ? Hex.concat(selector, data) : selector
673
+ if (args.length === 0) return selector
674
+ return AbiParameters_internal.encodeParameters(item.inputs, args, {
675
+ prefix: selector,
676
+ })
677
677
  }
678
678
 
679
679
  export declare namespace encodeData {
@@ -212,29 +212,17 @@ export function encode<
212
212
  options?: encode.Options,
213
213
  ): Hex.Hex {
214
214
  const { checksumAddress = false } = options ?? {}
215
-
216
- if (parameters.length !== values.length)
217
- throw new LengthMismatchError({
218
- expectedLength: parameters.length as number,
219
- givenLength: values.length as any,
220
- })
221
- // Prepare the parameters to determine dynamic types to encode.
222
- const preparedParameters = internal.prepareParameters({
223
- checksumAddress,
224
- parameters: parameters as readonly Parameter[],
225
- values: values as any,
226
- })
227
- const data = internal.encode(preparedParameters)
228
- if (data.length === 0) return '0x'
229
- return data
215
+ return internal.encodeParameters(
216
+ parameters as readonly Parameter[],
217
+ values as readonly unknown[],
218
+ {
219
+ checksumAddress,
220
+ },
221
+ )
230
222
  }
231
223
 
232
224
  export declare namespace encode {
233
- type ErrorType =
234
- | LengthMismatchError
235
- | internal.encode.ErrorType
236
- | internal.prepareParameters.ErrorType
237
- | Errors.GlobalErrorType
225
+ type ErrorType = internal.encodeParameters.ErrorType | Errors.GlobalErrorType
238
226
 
239
227
  type Options = {
240
228
  /**
@@ -1,5 +1,5 @@
1
1
  import * as Bytes from './Bytes.js'
2
- import type * as Errors from './Errors.js'
2
+ import * as Errors from './Errors.js'
3
3
  import * as Hex from './Hex.js'
4
4
 
5
5
  export const ivLength = 16
@@ -134,6 +134,70 @@ export declare namespace encrypt {
134
134
  | Errors.GlobalErrorType
135
135
  }
136
136
 
137
+ /**
138
+ * Derives an AES-256-GCM key from a 32-byte WebAuthn PRF output.
139
+ *
140
+ * The permanent derivation contract uses the PRF output as the HMAC-SHA256
141
+ * key. Its message is the UTF-8 bytes of `ox.aesGcm.fromPrf.v1` followed by
142
+ * a 32-bit big-endian counter set to zero.
143
+ *
144
+ * @example
145
+ * ```ts twoslash
146
+ * import { AesGcm } from 'ox'
147
+ *
148
+ * const key = await AesGcm.fromPrf(
149
+ * '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
150
+ * )
151
+ * ```
152
+ *
153
+ * @param value - A 32-byte WebAuthn PRF output.
154
+ * @returns A nonextractable AES-256-GCM key for encryption and decryption.
155
+ */
156
+ export async function fromPrf(
157
+ value: Hex.Hex | Bytes.Bytes,
158
+ ): Promise<CryptoKey> {
159
+ const bytes = Bytes.from(value)
160
+ if (bytes.length !== 32) throw new InvalidPrfSizeError({ size: bytes.length })
161
+
162
+ const prfKey = await globalThis.crypto.subtle.importKey(
163
+ 'raw',
164
+ bytes,
165
+ {
166
+ name: 'HMAC',
167
+ hash: 'SHA-256',
168
+ },
169
+ false,
170
+ ['sign'],
171
+ )
172
+ const key = new Uint8Array(
173
+ await globalThis.crypto.subtle.sign(
174
+ 'HMAC',
175
+ prfKey,
176
+ Bytes.concat(fromPrfLabel, Bytes.fromNumber(0, { size: 4 })),
177
+ ),
178
+ )
179
+ try {
180
+ return await globalThis.crypto.subtle.importKey(
181
+ 'raw',
182
+ key,
183
+ { name: 'AES-GCM' },
184
+ false,
185
+ ['encrypt', 'decrypt'],
186
+ )
187
+ } finally {
188
+ key.fill(0)
189
+ }
190
+ }
191
+
192
+ export declare namespace fromPrf {
193
+ type ErrorType =
194
+ | Bytes.concat.ErrorType
195
+ | Bytes.from.ErrorType
196
+ | Bytes.fromNumber.ErrorType
197
+ | InvalidPrfSizeError
198
+ | Errors.GlobalErrorType
199
+ }
200
+
137
201
  /**
138
202
  * Derives an AES-GCM key from a password using PBKDF2.
139
203
  *
@@ -206,3 +270,24 @@ export function randomSalt(size = 32): Bytes.Bytes {
206
270
  export declare namespace randomSalt {
207
271
  type ErrorType = Bytes.random.ErrorType | Errors.GlobalErrorType
208
272
  }
273
+
274
+ /** Thrown when a WebAuthn PRF output is not 32 bytes. */
275
+ export class InvalidPrfSizeError extends Errors.BaseError {
276
+ override readonly name = 'AesGcm.InvalidPrfSizeError'
277
+
278
+ constructor(options: InvalidPrfSizeError.Options) {
279
+ super(
280
+ `PRF output must be exactly 32 bytes. Received ${options.size} bytes.`,
281
+ )
282
+ }
283
+ }
284
+
285
+ export declare namespace InvalidPrfSizeError {
286
+ /** Options for {@link ox#AesGcm.InvalidPrfSizeError}. */
287
+ type Options = {
288
+ /** Received PRF output size. */
289
+ size: number
290
+ }
291
+ }
292
+
293
+ const fromPrfLabel = Bytes.fromString('ox.aesGcm.fromPrf.v1')
@@ -1,6 +1,7 @@
1
1
  import { ed25519 } from '@noble/curves/ed25519.js'
2
2
  import * as Bytes from './Bytes.js'
3
- import type * as Errors from './Errors.js'
3
+ import * as Errors from './Errors.js'
4
+ import * as Hash from './Hash.js'
4
5
  import * as Hex from './Hex.js'
5
6
  import * as engine from './internal/ed25519.js'
6
7
 
@@ -58,6 +59,70 @@ export declare namespace createKeyPair {
58
59
  | Errors.GlobalErrorType
59
60
  }
60
61
 
62
+ /**
63
+ * Derives an Ed25519 private key from a 32-byte WebAuthn PRF output.
64
+ *
65
+ * The permanent derivation contract uses the PRF output as the HMAC-SHA256
66
+ * key. Its message is the UTF-8 bytes of `ox.ed25519.fromPrf.v1` followed by
67
+ * a 32-bit big-endian counter set to zero.
68
+ *
69
+ * @example
70
+ * ```ts twoslash
71
+ * import { Ed25519 } from 'ox'
72
+ *
73
+ * const privateKey = Ed25519.fromPrf(
74
+ * '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
75
+ * )
76
+ * ```
77
+ *
78
+ * @param value - A 32-byte WebAuthn PRF output.
79
+ * @param options - Options.
80
+ * @returns An Ed25519 private key.
81
+ */
82
+ export function fromPrf<as extends 'Hex' | 'Bytes' = 'Hex'>(
83
+ value: Hex.Hex | Bytes.Bytes,
84
+ options: fromPrf.Options<as> = {},
85
+ ): fromPrf.ReturnType<as> {
86
+ const { as = 'Hex' } = options
87
+ const bytes = Bytes.from(value)
88
+ if (bytes.length !== 32) throw new InvalidPrfSizeError({ size: bytes.length })
89
+
90
+ const privateKey = Hash.hmac256(
91
+ bytes,
92
+ Bytes.concat(fromPrfLabel, Bytes.fromNumber(0, { size: 4 })),
93
+ { as: 'Bytes' },
94
+ )
95
+ if (as === 'Hex') {
96
+ const value = Hex.fromBytes(privateKey)
97
+ privateKey.fill(0)
98
+ return value as never
99
+ }
100
+ return privateKey as never
101
+ }
102
+
103
+ export declare namespace fromPrf {
104
+ type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
105
+ /**
106
+ * Format of the returned private key.
107
+ * @default 'Hex'
108
+ */
109
+ as?: as | 'Hex' | 'Bytes' | undefined
110
+ }
111
+
112
+ type ReturnType<as extends 'Hex' | 'Bytes'> =
113
+ | (as extends 'Bytes' ? Bytes.Bytes : never)
114
+ | (as extends 'Hex' ? Hex.Hex : never)
115
+
116
+ type ErrorType =
117
+ | Bytes.concat.ErrorType
118
+ | Bytes.from.ErrorType
119
+ | Bytes.fromNumber.ErrorType
120
+ | Hash.hmac256.ErrorType
121
+ | Hex.fromBytes.ErrorType
122
+ | InvalidPrfSizeError
123
+ | Errors.GlobalErrorType
124
+ }
125
+
61
126
  /**
62
127
  * Computes the Ed25519 public key from a provided private key.
63
128
  *
@@ -345,3 +410,24 @@ export declare namespace toX25519PrivateKey {
345
410
  | Hex.fromBytes.ErrorType
346
411
  | Errors.GlobalErrorType
347
412
  }
413
+
414
+ /** Thrown when a WebAuthn PRF output is not 32 bytes. */
415
+ export class InvalidPrfSizeError extends Errors.BaseError {
416
+ override readonly name = 'Ed25519.InvalidPrfSizeError'
417
+
418
+ constructor(options: InvalidPrfSizeError.Options) {
419
+ super(
420
+ `PRF output must be exactly 32 bytes. Received ${options.size} bytes.`,
421
+ )
422
+ }
423
+ }
424
+
425
+ export declare namespace InvalidPrfSizeError {
426
+ /** Options for {@link ox#Ed25519.InvalidPrfSizeError}. */
427
+ type Options = {
428
+ /** Received PRF output size. */
429
+ size: number
430
+ }
431
+ }
432
+
433
+ const fromPrfLabel = Bytes.fromString('ox.ed25519.fromPrf.v1')
@@ -9,6 +9,7 @@ export type {
9
9
  Eddsa,
10
10
  Engine,
11
11
  Hash,
12
+ HashState,
12
13
  Keystore,
13
14
  Mnemonic,
14
15
  } from './internal/engine.js'