leviathan-crypto 2.0.1 → 3.0.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 (312) hide show
  1. package/CLAUDE.md +88 -281
  2. package/LICENSE +4 -0
  3. package/README.md +275 -87
  4. package/dist/aes/aes-cbc.d.ts +40 -0
  5. package/dist/aes/aes-cbc.js +158 -0
  6. package/dist/aes/aes-ctr.d.ts +50 -0
  7. package/dist/aes/aes-ctr.js +141 -0
  8. package/dist/aes/aes-gcm-siv.d.ts +67 -0
  9. package/dist/aes/aes-gcm-siv.js +217 -0
  10. package/dist/aes/aes-gcm.d.ts +61 -0
  11. package/dist/aes/aes-gcm.js +226 -0
  12. package/dist/aes/cipher-suite.d.ts +21 -0
  13. package/dist/aes/cipher-suite.js +179 -0
  14. package/dist/aes/embedded.d.ts +1 -0
  15. package/dist/aes/embedded.js +26 -0
  16. package/dist/aes/generator.d.ts +14 -0
  17. package/dist/aes/generator.js +103 -0
  18. package/dist/aes/index.d.ts +58 -0
  19. package/dist/aes/index.js +125 -0
  20. package/dist/aes/ops.d.ts +60 -0
  21. package/dist/aes/ops.js +164 -0
  22. package/dist/aes/pool-worker.d.ts +1 -0
  23. package/dist/aes/pool-worker.js +92 -0
  24. package/dist/aes/types.d.ts +1 -0
  25. package/dist/aes/types.js +23 -0
  26. package/dist/aes.wasm +0 -0
  27. package/dist/blake3/embedded.d.ts +1 -0
  28. package/dist/blake3/embedded.js +26 -0
  29. package/dist/blake3/index.d.ts +143 -0
  30. package/dist/blake3/index.js +620 -0
  31. package/dist/blake3/types.d.ts +102 -0
  32. package/dist/blake3/types.js +31 -0
  33. package/dist/blake3/validate.d.ts +29 -0
  34. package/dist/blake3/validate.js +80 -0
  35. package/dist/blake3.wasm +0 -0
  36. package/dist/chacha20/cipher-suite.d.ts +10 -0
  37. package/dist/chacha20/cipher-suite.js +98 -13
  38. package/dist/chacha20/generator.d.ts +12 -0
  39. package/dist/chacha20/generator.js +91 -0
  40. package/dist/chacha20/index.d.ts +100 -3
  41. package/dist/chacha20/index.js +169 -35
  42. package/dist/chacha20/ops.d.ts +57 -6
  43. package/dist/chacha20/ops.js +107 -27
  44. package/dist/chacha20/pool-worker.js +14 -0
  45. package/dist/chacha20/types.d.ts +1 -32
  46. package/dist/cte-wasm.d.ts +1 -0
  47. package/dist/cte-wasm.js +3 -0
  48. package/dist/cte.wasm +0 -0
  49. package/dist/curve25519.wasm +0 -0
  50. package/dist/ecdsa/der.d.ts +23 -0
  51. package/dist/ecdsa/der.js +192 -0
  52. package/dist/ecdsa/ecprivatekey-der.d.ts +32 -0
  53. package/dist/ecdsa/ecprivatekey-der.js +230 -0
  54. package/dist/ecdsa/embedded.d.ts +1 -0
  55. package/dist/ecdsa/embedded.js +25 -0
  56. package/dist/ecdsa/index.d.ts +124 -0
  57. package/dist/ecdsa/index.js +366 -0
  58. package/dist/ecdsa/types.d.ts +31 -0
  59. package/dist/ecdsa/types.js +28 -0
  60. package/dist/ecdsa/validate.d.ts +18 -0
  61. package/dist/ecdsa/validate.js +92 -0
  62. package/dist/ed25519/embedded.d.ts +1 -0
  63. package/dist/ed25519/embedded.js +31 -0
  64. package/dist/ed25519/index.d.ts +70 -0
  65. package/dist/ed25519/index.js +308 -0
  66. package/dist/ed25519/types.d.ts +27 -0
  67. package/dist/ed25519/types.js +27 -0
  68. package/dist/ed25519/validate.d.ts +7 -0
  69. package/dist/ed25519/validate.js +77 -0
  70. package/dist/embedded/aes-pool-worker.d.ts +1 -0
  71. package/dist/embedded/aes-pool-worker.js +5 -0
  72. package/dist/embedded/aes.d.ts +1 -0
  73. package/dist/embedded/aes.js +3 -0
  74. package/dist/embedded/blake3.d.ts +1 -0
  75. package/dist/embedded/blake3.js +3 -0
  76. package/dist/embedded/chacha20-pool-worker.d.ts +1 -0
  77. package/dist/embedded/chacha20-pool-worker.js +5 -0
  78. package/dist/embedded/chacha20.d.ts +1 -1
  79. package/dist/embedded/chacha20.js +2 -2
  80. package/dist/embedded/curve25519.d.ts +1 -0
  81. package/dist/embedded/curve25519.js +3 -0
  82. package/dist/embedded/mldsa.d.ts +1 -0
  83. package/dist/embedded/mldsa.js +3 -0
  84. package/dist/embedded/mlkem.d.ts +1 -0
  85. package/dist/embedded/mlkem.js +3 -0
  86. package/dist/embedded/p256.d.ts +1 -0
  87. package/dist/embedded/p256.js +3 -0
  88. package/dist/embedded/serpent-pool-worker.d.ts +1 -0
  89. package/dist/embedded/serpent-pool-worker.js +5 -0
  90. package/dist/embedded/serpent.d.ts +1 -1
  91. package/dist/embedded/serpent.js +2 -2
  92. package/dist/embedded/sha2.d.ts +1 -1
  93. package/dist/embedded/sha2.js +2 -2
  94. package/dist/embedded/sha3.d.ts +1 -1
  95. package/dist/embedded/sha3.js +2 -2
  96. package/dist/embedded/slhdsa.d.ts +1 -0
  97. package/dist/embedded/slhdsa.js +3 -0
  98. package/dist/errors.d.ts +92 -1
  99. package/dist/errors.js +111 -1
  100. package/dist/fortuna.d.ts +18 -12
  101. package/dist/fortuna.js +166 -99
  102. package/dist/index.d.ts +42 -11
  103. package/dist/index.js +65 -20
  104. package/dist/init.d.ts +1 -3
  105. package/dist/init.js +73 -7
  106. package/dist/keccak/embedded.js +1 -1
  107. package/dist/keccak/index.d.ts +2 -0
  108. package/dist/keccak/index.js +4 -2
  109. package/dist/loader.d.ts +1 -19
  110. package/dist/loader.js +26 -32
  111. package/dist/merkle/blake3-tree.d.ts +35 -0
  112. package/dist/merkle/blake3-tree.js +187 -0
  113. package/dist/merkle/checkpoint.d.ts +58 -0
  114. package/dist/merkle/checkpoint.js +217 -0
  115. package/dist/merkle/index.d.ts +19 -0
  116. package/dist/merkle/index.js +37 -0
  117. package/dist/merkle/merkle-log.d.ts +130 -0
  118. package/dist/merkle/merkle-log.js +207 -0
  119. package/dist/merkle/merkle-verifier.d.ts +126 -0
  120. package/dist/merkle/merkle-verifier.js +296 -0
  121. package/dist/merkle/proof.d.ts +70 -0
  122. package/dist/merkle/proof.js +300 -0
  123. package/dist/merkle/sha256-tree.d.ts +33 -0
  124. package/dist/merkle/sha256-tree.js +145 -0
  125. package/dist/merkle/signed-log.d.ts +156 -0
  126. package/dist/merkle/signed-log.js +356 -0
  127. package/dist/merkle/signed-note.d.ts +309 -0
  128. package/dist/merkle/signed-note.js +648 -0
  129. package/dist/merkle/sth.d.ts +31 -0
  130. package/dist/merkle/sth.js +31 -0
  131. package/dist/merkle/storage.d.ts +40 -0
  132. package/dist/merkle/storage.js +71 -0
  133. package/dist/merkle/tree.d.ts +68 -0
  134. package/dist/merkle/tree.js +94 -0
  135. package/dist/mldsa/embedded.d.ts +1 -0
  136. package/dist/{kyber → mldsa}/embedded.js +5 -5
  137. package/dist/mldsa/expand.d.ts +53 -0
  138. package/dist/mldsa/expand.js +188 -0
  139. package/dist/mldsa/format.d.ts +16 -0
  140. package/dist/mldsa/format.js +68 -0
  141. package/dist/mldsa/hashvariant.d.ts +32 -0
  142. package/dist/mldsa/hashvariant.js +248 -0
  143. package/dist/mldsa/index.d.ts +142 -0
  144. package/dist/mldsa/index.js +463 -0
  145. package/dist/mldsa/keygen.d.ts +16 -0
  146. package/dist/mldsa/keygen.js +232 -0
  147. package/dist/mldsa/params.d.ts +21 -0
  148. package/dist/mldsa/params.js +55 -0
  149. package/dist/mldsa/sha3-helpers.d.ts +30 -0
  150. package/dist/mldsa/sha3-helpers.js +124 -0
  151. package/dist/mldsa/sign.d.ts +36 -0
  152. package/dist/mldsa/sign.js +380 -0
  153. package/dist/mldsa/types.d.ts +91 -0
  154. package/dist/mldsa/types.js +25 -0
  155. package/dist/mldsa/validate.d.ts +55 -0
  156. package/dist/mldsa/validate.js +125 -0
  157. package/dist/mldsa/verify.d.ts +29 -0
  158. package/dist/mldsa/verify.js +269 -0
  159. package/dist/mldsa.wasm +0 -0
  160. package/dist/mlkem/embedded.d.ts +1 -0
  161. package/dist/mlkem/embedded.js +27 -0
  162. package/dist/mlkem/indcpa.d.ts +49 -0
  163. package/dist/{kyber → mlkem}/indcpa.js +48 -48
  164. package/dist/mlkem/index.d.ts +37 -0
  165. package/dist/{kyber → mlkem}/index.js +41 -31
  166. package/dist/mlkem/kem.d.ts +21 -0
  167. package/dist/{kyber → mlkem}/kem.js +48 -13
  168. package/dist/{kyber → mlkem}/params.d.ts +4 -4
  169. package/dist/{kyber → mlkem}/params.js +2 -2
  170. package/dist/mlkem/suite.d.ts +12 -0
  171. package/dist/{kyber → mlkem}/suite.js +17 -12
  172. package/dist/{kyber → mlkem}/types.d.ts +4 -3
  173. package/dist/{kyber → mlkem}/types.js +1 -1
  174. package/dist/mlkem/validate.d.ts +23 -0
  175. package/dist/{kyber → mlkem}/validate.js +24 -20
  176. package/dist/{kyber.wasm → mlkem.wasm} +0 -0
  177. package/dist/p256.wasm +0 -0
  178. package/dist/ratchet/index.d.ts +8 -0
  179. package/dist/ratchet/index.js +38 -0
  180. package/dist/ratchet/kdf-chain.d.ts +13 -0
  181. package/dist/ratchet/kdf-chain.js +85 -0
  182. package/dist/ratchet/ratchet-keypair.d.ts +9 -0
  183. package/dist/ratchet/ratchet-keypair.js +61 -0
  184. package/dist/ratchet/root-kdf.d.ts +4 -0
  185. package/dist/ratchet/root-kdf.js +124 -0
  186. package/dist/ratchet/skipped-key-store.d.ts +14 -0
  187. package/dist/ratchet/skipped-key-store.js +154 -0
  188. package/dist/ratchet/types.d.ts +36 -0
  189. package/dist/ratchet/types.js +26 -0
  190. package/dist/serpent/cipher-suite.d.ts +10 -0
  191. package/dist/serpent/cipher-suite.js +144 -56
  192. package/dist/serpent/generator.d.ts +12 -0
  193. package/dist/serpent/generator.js +97 -0
  194. package/dist/serpent/index.d.ts +62 -1
  195. package/dist/serpent/index.js +97 -21
  196. package/dist/serpent/pool-worker.js +28 -102
  197. package/dist/serpent/serpent-cbc.d.ts +16 -6
  198. package/dist/serpent/serpent-cbc.js +58 -37
  199. package/dist/serpent/shared-ops.d.ts +63 -0
  200. package/dist/serpent/shared-ops.js +178 -0
  201. package/dist/serpent/types.d.ts +1 -5
  202. package/dist/serpent.wasm +0 -0
  203. package/dist/sha2/hash.d.ts +2 -0
  204. package/dist/sha2/hash.js +53 -0
  205. package/dist/sha2/hkdf.js +5 -5
  206. package/dist/sha2/index.d.ts +22 -1
  207. package/dist/sha2/index.js +80 -11
  208. package/dist/sha2/types.d.ts +41 -2
  209. package/dist/sha2.wasm +0 -0
  210. package/dist/sha3/hash.d.ts +2 -0
  211. package/dist/sha3/hash.js +53 -0
  212. package/dist/sha3/index.d.ts +87 -3
  213. package/dist/sha3/index.js +317 -19
  214. package/dist/sha3/kmac.d.ts +121 -0
  215. package/dist/sha3/kmac.js +800 -0
  216. package/dist/sha3.wasm +0 -0
  217. package/dist/shared/pkcs7.d.ts +22 -0
  218. package/dist/shared/pkcs7.js +84 -0
  219. package/dist/sign/ctx.d.ts +41 -0
  220. package/dist/sign/ctx.js +102 -0
  221. package/dist/sign/envelope.d.ts +45 -0
  222. package/dist/sign/envelope.js +152 -0
  223. package/dist/sign/hasher.d.ts +9 -0
  224. package/dist/sign/hasher.js +132 -0
  225. package/dist/sign/index.d.ts +11 -0
  226. package/dist/sign/index.js +34 -0
  227. package/dist/sign/sign-stream.d.ts +25 -0
  228. package/dist/sign/sign-stream.js +112 -0
  229. package/dist/sign/suites/ecdsa-p256.d.ts +2 -0
  230. package/dist/sign/suites/ecdsa-p256.js +120 -0
  231. package/dist/sign/suites/ed25519.d.ts +3 -0
  232. package/dist/sign/suites/ed25519.js +165 -0
  233. package/dist/sign/suites/hybrid-classical.d.ts +23 -0
  234. package/dist/sign/suites/hybrid-classical.js +526 -0
  235. package/dist/sign/suites/hybrid-pq.d.ts +4 -0
  236. package/dist/sign/suites/hybrid-pq.js +234 -0
  237. package/dist/sign/suites/mldsa.d.ts +7 -0
  238. package/dist/sign/suites/mldsa.js +161 -0
  239. package/dist/sign/suites/slhdsa.d.ts +7 -0
  240. package/dist/sign/suites/slhdsa.js +176 -0
  241. package/dist/sign/types.d.ts +106 -0
  242. package/dist/sign/types.js +28 -0
  243. package/dist/sign/verify-stream.d.ts +30 -0
  244. package/dist/sign/verify-stream.js +227 -0
  245. package/dist/slhdsa/embedded.d.ts +1 -0
  246. package/dist/slhdsa/embedded.js +26 -0
  247. package/dist/slhdsa/index.d.ts +149 -0
  248. package/dist/slhdsa/index.js +493 -0
  249. package/dist/slhdsa/params.d.ts +26 -0
  250. package/dist/slhdsa/params.js +70 -0
  251. package/dist/slhdsa/prehash.d.ts +68 -0
  252. package/dist/slhdsa/prehash.js +307 -0
  253. package/dist/slhdsa/sign.d.ts +39 -0
  254. package/dist/slhdsa/sign.js +116 -0
  255. package/dist/slhdsa/types.d.ts +129 -0
  256. package/dist/slhdsa/types.js +27 -0
  257. package/dist/slhdsa/validate.d.ts +60 -0
  258. package/dist/slhdsa/validate.js +127 -0
  259. package/dist/slhdsa/verify.d.ts +32 -0
  260. package/dist/slhdsa/verify.js +107 -0
  261. package/dist/slhdsa.wasm +0 -0
  262. package/dist/stream/header.js +8 -8
  263. package/dist/stream/index.d.ts +1 -0
  264. package/dist/stream/index.js +1 -0
  265. package/dist/stream/open-stream.js +65 -22
  266. package/dist/stream/seal-stream-pool.d.ts +2 -0
  267. package/dist/stream/seal-stream-pool.js +100 -33
  268. package/dist/stream/seal-stream.d.ts +1 -1
  269. package/dist/stream/seal-stream.js +48 -19
  270. package/dist/stream/seal.js +6 -6
  271. package/dist/stream/types.d.ts +3 -1
  272. package/dist/stream/types.js +1 -1
  273. package/dist/types.d.ts +22 -1
  274. package/dist/types.js +1 -1
  275. package/dist/utils.d.ts +9 -10
  276. package/dist/utils.js +84 -59
  277. package/dist/wasm-source.d.ts +9 -8
  278. package/dist/wasm-source.js +1 -1
  279. package/dist/x25519/embedded.d.ts +1 -0
  280. package/dist/x25519/embedded.js +31 -0
  281. package/dist/x25519/index.d.ts +43 -0
  282. package/dist/x25519/index.js +159 -0
  283. package/dist/x25519/types.d.ts +25 -0
  284. package/dist/x25519/types.js +27 -0
  285. package/dist/x25519/validate.d.ts +2 -0
  286. package/dist/x25519/validate.js +39 -0
  287. package/package.json +123 -64
  288. package/SECURITY.md +0 -276
  289. package/dist/ct-wasm.d.ts +0 -1
  290. package/dist/ct-wasm.js +0 -3
  291. package/dist/ct.wasm +0 -0
  292. package/dist/docs/aead.md +0 -323
  293. package/dist/docs/architecture.md +0 -932
  294. package/dist/docs/argon2id.md +0 -302
  295. package/dist/docs/chacha20.md +0 -674
  296. package/dist/docs/exports.md +0 -241
  297. package/dist/docs/fortuna.md +0 -313
  298. package/dist/docs/init.md +0 -302
  299. package/dist/docs/loader.md +0 -161
  300. package/dist/docs/serpent.md +0 -519
  301. package/dist/docs/sha2.md +0 -613
  302. package/dist/docs/sha3.md +0 -546
  303. package/dist/docs/types.md +0 -276
  304. package/dist/docs/utils.md +0 -367
  305. package/dist/embedded/kyber.d.ts +0 -1
  306. package/dist/embedded/kyber.js +0 -3
  307. package/dist/kyber/embedded.d.ts +0 -1
  308. package/dist/kyber/indcpa.d.ts +0 -49
  309. package/dist/kyber/index.d.ts +0 -38
  310. package/dist/kyber/kem.d.ts +0 -21
  311. package/dist/kyber/suite.d.ts +0 -13
  312. package/dist/kyber/validate.d.ts +0 -19
@@ -1,3 +1,3 @@
1
- // Generated by scripts/embed-wasm.ts do not edit
1
+ // Generated by scripts/embed-wasm.ts, do not edit
2
2
  // gzip-compressed WASM binary, base64-encoded. Decoded and decompressed by loadEmbedded().
3
- export const WASM_GZ_BASE64 = 'H4sIAAAAAAAAA3WWTUwcRxbHX3X39Hz0fH8Aw4zjf3fAMLJxbLKxEZIdqrVCcRQrUaLVHtcT02YBY1jPICurlRk8XaPeL8lHH3O0tJccc/SRgw/klmO0Jx9zjKU9rF7VDJhVtpH6V/9/vXrv9UOCom5vVxCRqDj3iO6ROLwnDumedXhIdmtWjB+bzGNZ+k1EKUcI204f2U1vM+rf3ds4eBjd2SAqbkb9r/rdfvT5gwe9qE+isBn1vzzTVmUz6suve3uPv442xp5d2oz6v+2F35xGOZzmzqP9g/7YSOU3o/7np9Ll/bvR7t7jb77obkY9Sud7f+x++Ifl5d/cebTVp+xYfnRDy5yRH66YXc/Ij64va5lnuRNdX17RsmDk5GwxvxPdv9/dMT1T2TNyfetR9yFVCpOyRlcLk7pG1wqTwkbXC5PKRjdyupYRUxktvuhu0HRFL7/600EU/TkKH+7d36EZ78nWfhQePHgQPe5R093Vn29RXli5f1VnHZK255AkL0XyWPD7tX6f6PcP+v3W8hz6mLwPSPLPsfiPx1uS5Eu9PBagGxaflJonAmKVyMuSfC6kW87wKjldvaHJ6vh09VLIi6dxvPp3weo8FYeSOjb5JDMMIcuMlJxh2BKMtFxkWPIaw5ErDFe+0gdz8lgzI080s/JHTU/+pJmXbzQL8mfNovxFsyQHglmWiWZFPtesyheaNfmtZl2+1GzI7zSn5Pea0/KV5oy9ho6c+cRZQxoZhaJCTWFGBU0IOAqeQlmhoYLZUIwwG36cxMp/DwRLIatQUqiroIUUXIW8QkVhSgVtjm2b2IuYhY2cQkGhqjB9PhNgo40mO03tBL4K7LA9gh3OJbEfQOCiCgQHCA7w55HGLFpstMyJ93m/xfvzSezPIQWwc5sdK4n9S3CN47KzmsT+Aiy8x84cO+0k9heRg8/OTXaySew34ZnKOXZuJLE/iyJ0rQV2mknst1AyeTrsTCex30bDnLLYuZ3E/gUQxxAoDizkuRMKL49AYSOJAxsOx1N4hZ16EgdOeKiGyic4qJqWGpzqchIHLmyzKWBjhnuxwyJPajmJgzRcs5mCi3R4qGANlW8jDYuFM1R+GgGy3IwV2iNY4S2dM8OJrLDOzpUkDjImjYUMytybEy6N4IS1JA6ykxoOXEzxp7jhrRHc0E7iwEPWbLrIwuOawVD5OXgIWGSGys9gHgX+qGzYHCEbLiRxkMeCOZbFAmrcixdmRvDClSQOCsibTQ951Ln1fFgdIR9eTeKgiILZzKOAIteYHyq/gCLmWSwMlV/EHBZZzA6VX8IiKtx0OSyNUA6vJ3FQxazJUcYsprm1SrgyQiXMJHFQQ9VsVlBFjdPMDZVfRQ1zLBaHyq/hEposWkPl19FEi0V7qPwGWmizuDBU/hTauMDi0lD507iASyyaQ+XPoOM8RUeKdecpKHx2ZKkUOtIy8m9Hzwb6OdSubdzB4NkgOXMd4/59fDRl5NFgMMhowx0bR+dOpY3718G5CplxXaFV1qjEqNzZCZPYGwefVspPOplEFCbG4N0ixXGi8x9XMu7wfEPl8VzOu5XxIM7nrU76MYOonbX3znfXf2UanOk0/+ns+MvPJo2OnFpvoSMb6y3vVx7OIpTnE/8yt/1OXnieJNBNm2QGglFGijEDmwGkGYuwGNfgMFbgMl4RcsxjQoZ5QsgyfyR4zJ8IeeYbQoH5M6HI/IVQYg4EysxEoMJ8LlBlvhCoMb8VqDNfCjSY3wlMMb8XmNb1BWZu2uT9Uwj3UB6LRYv/cb3WFPYaCKlPHY0d/SdM7AQWLNiftnxbku/aa7DhcoiAux1YSMkfxDbc7SUiWEtEvVUiuDwolwcFG6ltP8WZYG8HYt1ZK5ck+cLTY3wtIG5Y5P1e2JNubNNNYMkTcS6pLU0zS8RjYKtc0h0L0w5Hr9JbC4KrC87vuSTb5QoDBtfKFS/NvwYtwVgR1qS2GNemcW2a1BZc2+jT2t7SOwdNI5/o0dGkEeJGiBspl7zV/3ODeWu9c5mR/3OZkcSXGe+JRfIfGU/8heSLjLflENHG+ILLV+HbRNQmohYRzRHRFSJyiegmEdWJiC/DOSK6TERNIlogog4R90klImoQUYaIquOr8i0iWiGiIvnl3t7B4/vR3e7+/tajzd99+Vnp6gd8I7z6pNvbvbrb3f8vce16BY8LAAA=';
3
+ export const WASM_GZ_BASE64 = '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';
@@ -0,0 +1 @@
1
+ export declare const WASM_GZ_BASE64 = "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";
@@ -0,0 +1,3 @@
1
+ // Generated by scripts/embed-wasm.ts, do not edit
2
+ // gzip-compressed WASM binary, base64-encoded. Decoded and decompressed by loadEmbedded().
3
+ export const WASM_GZ_BASE64 = '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';
package/dist/errors.d.ts CHANGED
@@ -3,8 +3,99 @@
3
3
  *
4
4
  * `cipher` is the cipher name passed by the call site (e.g. `'serpent'`,
5
5
  * `'chacha20-poly1305'`, `'xchacha20-poly1305'`). The class appends
6
- * `': authentication failed'` do not include that text in the cipher name.
6
+ * `': authentication failed'`, do not include that text in the cipher name.
7
7
  */
8
8
  export declare class AuthenticationError extends Error {
9
9
  constructor(cipher: string);
10
10
  }
11
+ /**
12
+ * Thrown on signing or verification contract violations and signature
13
+ * failures within the v3 sign module.
14
+ *
15
+ * `discriminator` is a stable string identifier for the failure mode;
16
+ * consumers may switch on it. Categories:
17
+ *
18
+ * Suite layer (suite.sign / verify / signPrehashed / verifyPrehashed):
19
+ * 'sig-key-size' wrong sk or pk size for the suite
20
+ * 'sig-ctx-too-long' effective_ctx would exceed the FIPS 204 cap
21
+ * 'sig-ctx-unsupported' suite has no native context binding (pure Ed25519)
22
+ * 'sig-malformed-input' primitive validation failure, e.g. wrong digest length
23
+ *
24
+ * Envelope layer (Sign.sign / verify / signDetached / verifyDetached):
25
+ * 'sig-blob-too-short' Sign.verify input shorter than minimum
26
+ * 'sig-suite-unknown' suite_byte does not map to a known suite
27
+ * 'sig-ctx-overflow' wire ctx_len pushes past sig boundary
28
+ * 'sig-ctx-mismatch' caller ctx not equal to wire ctx
29
+ * 'verify-failed' suite.verify returned false during envelope verify
30
+ *
31
+ * Stream layer (SignStream / VerifyStream):
32
+ * 'sig-stream-finalized' update() called after finalize()
33
+ * 'sig-stream-disposed' operation on disposed stream
34
+ * 'sig-suite-mismatch' wire suite_byte not equal to VerifyStream constructor suite
35
+ */
36
+ export declare class SigningError extends Error {
37
+ readonly discriminator: string;
38
+ constructor(discriminator: string, message?: string);
39
+ }
40
+ /**
41
+ * Thrown when an X25519 Diffie-Hellman shared secret is all-zero. Per RFC
42
+ * 7748 §6.1 and §7, an all-zero output indicates that the peer's public key
43
+ * is a small-order point on Curve25519 and the resulting shared secret
44
+ * carries no contributory entropy from the local secret. Callers must
45
+ * reject the exchange rather than proceed with a known-weak key.
46
+ */
47
+ export declare class KeyAgreementError extends Error {
48
+ constructor(message: string);
49
+ }
50
+ /**
51
+ * Thrown on construction-time contract violations of the normie merkle
52
+ * surface (`MerkleLog`, `MerkleVerifier`). Wraps inputs that fail the
53
+ * c2sp.org/tlog-cosignature §Format algorithm-byte registry check, an
54
+ * unknown `hashing` value, an uninitialised required WASM module, or
55
+ * a public-key length that does not match `suite.pkSize`. Keeps the
56
+ * normie surface error class distinct from the lower-level
57
+ * `SigningError('sig-unsupported-suite')` that `SignedLog` throws so
58
+ * callers can branch cleanly on either class.
59
+ *
60
+ * `discriminator` is a stable string identifier for the failure mode;
61
+ * consumers may switch on it. Documented discriminators:
62
+ *
63
+ * 'unsupported-suite' suite.formatEnum not in the C2SP cosignature
64
+ * algorithm-byte registry
65
+ * 'unsupported-hashing' hashing argument is not 'sha256' or 'blake3'
66
+ * 'module-not-initialized' a required WASM module has not been init()'d
67
+ * 'pubkey-size' pubkey.length != suite.pkSize
68
+ * 'origin-invalid' origin empty, contains whitespace, or contains plus
69
+ */
70
+ export declare class MerkleLogError extends Error {
71
+ readonly discriminator: string;
72
+ constructor(discriminator: string, message?: string);
73
+ }
74
+ /**
75
+ * Thrown on wire-format contract violations in the merkle module's
76
+ * cosignature codec (c2sp.org/tlog-cosignature §Format and §Signed
77
+ * message). Whole-envelope errors in `parseSignedNote` and
78
+ * `parseCheckpointBody` continue to throw `RangeError` / `TypeError`;
79
+ * this class covers the cosignature-payload layer specifically.
80
+ *
81
+ * `discriminator` is a stable string identifier for the failure mode;
82
+ * consumers may switch on it. Categories:
83
+ *
84
+ * Cosignature message construction (buildCosigSignedMessage):
85
+ * 'timestamp-out-of-range' timestamp not a non-negative safe integer
86
+ *
87
+ * Timestamped-signature payload codec (emit/parseCosigSignaturePayload):
88
+ * 'timestamp-out-of-range' timestamp not a non-negative safe integer (emit)
89
+ * 'timestamp-exceeds-safe-integer' wire timestamp > Number.MAX_SAFE_INTEGER (parse)
90
+ * 'cosig-payload-length-mismatch' payload bytes != expected 8 + sigSize
91
+ *
92
+ * ML-DSA-44 cosigned_message construction (buildCosignedMessage):
93
+ * 'timestamp-out-of-range' timestamp / start / end not non-negative safe int
94
+ * 'cosigner-name-length' UTF-8 cosigner_name empty or > 255 bytes
95
+ * 'log-origin-length' UTF-8 log_origin empty or > 255 bytes
96
+ * 'cosigned-message-state' start != 0 with timestamp != 0 (spec MUST)
97
+ */
98
+ export declare class MerkleCodecError extends Error {
99
+ readonly discriminator: string;
100
+ constructor(discriminator: string, message?: string);
101
+ }
package/dist/errors.js CHANGED
@@ -27,7 +27,7 @@
27
27
  *
28
28
  * `cipher` is the cipher name passed by the call site (e.g. `'serpent'`,
29
29
  * `'chacha20-poly1305'`, `'xchacha20-poly1305'`). The class appends
30
- * `': authentication failed'` do not include that text in the cipher name.
30
+ * `': authentication failed'`, do not include that text in the cipher name.
31
31
  */
32
32
  export class AuthenticationError extends Error {
33
33
  constructor(cipher) {
@@ -36,3 +36,113 @@ export class AuthenticationError extends Error {
36
36
  Object.setPrototypeOf(this, AuthenticationError.prototype);
37
37
  }
38
38
  }
39
+ /**
40
+ * Thrown on signing or verification contract violations and signature
41
+ * failures within the v3 sign module.
42
+ *
43
+ * `discriminator` is a stable string identifier for the failure mode;
44
+ * consumers may switch on it. Categories:
45
+ *
46
+ * Suite layer (suite.sign / verify / signPrehashed / verifyPrehashed):
47
+ * 'sig-key-size' wrong sk or pk size for the suite
48
+ * 'sig-ctx-too-long' effective_ctx would exceed the FIPS 204 cap
49
+ * 'sig-ctx-unsupported' suite has no native context binding (pure Ed25519)
50
+ * 'sig-malformed-input' primitive validation failure, e.g. wrong digest length
51
+ *
52
+ * Envelope layer (Sign.sign / verify / signDetached / verifyDetached):
53
+ * 'sig-blob-too-short' Sign.verify input shorter than minimum
54
+ * 'sig-suite-unknown' suite_byte does not map to a known suite
55
+ * 'sig-ctx-overflow' wire ctx_len pushes past sig boundary
56
+ * 'sig-ctx-mismatch' caller ctx not equal to wire ctx
57
+ * 'verify-failed' suite.verify returned false during envelope verify
58
+ *
59
+ * Stream layer (SignStream / VerifyStream):
60
+ * 'sig-stream-finalized' update() called after finalize()
61
+ * 'sig-stream-disposed' operation on disposed stream
62
+ * 'sig-suite-mismatch' wire suite_byte not equal to VerifyStream constructor suite
63
+ */
64
+ export class SigningError extends Error {
65
+ discriminator;
66
+ constructor(discriminator, message) {
67
+ super(message ?? `leviathan-crypto SigningError: ${discriminator}`);
68
+ this.discriminator = discriminator;
69
+ this.name = 'SigningError';
70
+ Object.setPrototypeOf(this, SigningError.prototype);
71
+ }
72
+ }
73
+ /**
74
+ * Thrown when an X25519 Diffie-Hellman shared secret is all-zero. Per RFC
75
+ * 7748 §6.1 and §7, an all-zero output indicates that the peer's public key
76
+ * is a small-order point on Curve25519 and the resulting shared secret
77
+ * carries no contributory entropy from the local secret. Callers must
78
+ * reject the exchange rather than proceed with a known-weak key.
79
+ */
80
+ export class KeyAgreementError extends Error {
81
+ constructor(message) {
82
+ super(message);
83
+ this.name = 'KeyAgreementError';
84
+ Object.setPrototypeOf(this, KeyAgreementError.prototype);
85
+ }
86
+ }
87
+ /**
88
+ * Thrown on construction-time contract violations of the normie merkle
89
+ * surface (`MerkleLog`, `MerkleVerifier`). Wraps inputs that fail the
90
+ * c2sp.org/tlog-cosignature §Format algorithm-byte registry check, an
91
+ * unknown `hashing` value, an uninitialised required WASM module, or
92
+ * a public-key length that does not match `suite.pkSize`. Keeps the
93
+ * normie surface error class distinct from the lower-level
94
+ * `SigningError('sig-unsupported-suite')` that `SignedLog` throws so
95
+ * callers can branch cleanly on either class.
96
+ *
97
+ * `discriminator` is a stable string identifier for the failure mode;
98
+ * consumers may switch on it. Documented discriminators:
99
+ *
100
+ * 'unsupported-suite' suite.formatEnum not in the C2SP cosignature
101
+ * algorithm-byte registry
102
+ * 'unsupported-hashing' hashing argument is not 'sha256' or 'blake3'
103
+ * 'module-not-initialized' a required WASM module has not been init()'d
104
+ * 'pubkey-size' pubkey.length != suite.pkSize
105
+ * 'origin-invalid' origin empty, contains whitespace, or contains plus
106
+ */
107
+ export class MerkleLogError extends Error {
108
+ discriminator;
109
+ constructor(discriminator, message) {
110
+ super(message ?? `leviathan-crypto MerkleLogError: ${discriminator}`);
111
+ this.discriminator = discriminator;
112
+ this.name = 'MerkleLogError';
113
+ Object.setPrototypeOf(this, MerkleLogError.prototype);
114
+ }
115
+ }
116
+ /**
117
+ * Thrown on wire-format contract violations in the merkle module's
118
+ * cosignature codec (c2sp.org/tlog-cosignature §Format and §Signed
119
+ * message). Whole-envelope errors in `parseSignedNote` and
120
+ * `parseCheckpointBody` continue to throw `RangeError` / `TypeError`;
121
+ * this class covers the cosignature-payload layer specifically.
122
+ *
123
+ * `discriminator` is a stable string identifier for the failure mode;
124
+ * consumers may switch on it. Categories:
125
+ *
126
+ * Cosignature message construction (buildCosigSignedMessage):
127
+ * 'timestamp-out-of-range' timestamp not a non-negative safe integer
128
+ *
129
+ * Timestamped-signature payload codec (emit/parseCosigSignaturePayload):
130
+ * 'timestamp-out-of-range' timestamp not a non-negative safe integer (emit)
131
+ * 'timestamp-exceeds-safe-integer' wire timestamp > Number.MAX_SAFE_INTEGER (parse)
132
+ * 'cosig-payload-length-mismatch' payload bytes != expected 8 + sigSize
133
+ *
134
+ * ML-DSA-44 cosigned_message construction (buildCosignedMessage):
135
+ * 'timestamp-out-of-range' timestamp / start / end not non-negative safe int
136
+ * 'cosigner-name-length' UTF-8 cosigner_name empty or > 255 bytes
137
+ * 'log-origin-length' UTF-8 log_origin empty or > 255 bytes
138
+ * 'cosigned-message-state' start != 0 with timestamp != 0 (spec MUST)
139
+ */
140
+ export class MerkleCodecError extends Error {
141
+ discriminator;
142
+ constructor(discriminator, message) {
143
+ super(message ?? `leviathan-crypto MerkleCodecError: ${discriminator}`);
144
+ this.discriminator = discriminator;
145
+ this.name = 'MerkleCodecError';
146
+ Object.setPrototypeOf(this, MerkleCodecError.prototype);
147
+ }
148
+ }
package/dist/fortuna.d.ts CHANGED
@@ -1,7 +1,8 @@
1
+ import type { Generator, HashFn } from './types.js';
1
2
  /**
2
- * Fortuna CSPRNG spec §9.3–§9.5
3
+ * Fortuna CSPRNG, spec §9.39.5
3
4
  *
4
- * Use `Fortuna.create()` to instantiate. Direct construction is not allowed.
5
+ * Use `Fortuna.create({ generator, hash })` to instantiate. Direct construction is not allowed.
5
6
  */
6
7
  export declare class Fortuna {
7
8
  private static readonly NUM_POOLS;
@@ -9,8 +10,8 @@ export declare class Fortuna {
9
10
  private static readonly MS_PER_RESEED;
10
11
  private static readonly NODE_STATS_INTERVAL;
11
12
  private static readonly CRYPTO_INTERVAL;
12
- private serpent;
13
- private sha;
13
+ private gen;
14
+ private hash;
14
15
  private poolHash;
15
16
  private poolEntropy;
16
17
  private genKey;
@@ -25,12 +26,14 @@ export declare class Fortuna {
25
26
  private robin;
26
27
  private boundCollectors;
27
28
  private timers;
28
- static create(opts?: {
29
+ static create(opts: {
30
+ generator: Generator;
31
+ hash: HashFn;
29
32
  msPerReseed?: number;
30
33
  entropy?: Uint8Array;
31
34
  }): Promise<Fortuna>;
32
35
  private constructor();
33
- /** Get n random bytes. Always returns Uint8Array instance is guaranteed seeded after create(). */
36
+ /** Get n random bytes. Always returns Uint8Array, instance is guaranteed seeded after create(). */
34
37
  get(length: number): Uint8Array;
35
38
  /** Add external entropy to the pools. */
36
39
  addEntropy(entropy: Uint8Array): void;
@@ -38,15 +41,18 @@ export declare class Fortuna {
38
41
  getEntropy(): number;
39
42
  /** Permanently dispose this instance. Wipes key material, stops all collectors. */
40
43
  stop(): void;
41
- /** Generate n blocks of 16 bytes each. — spec §9.4 */
42
- private generateBlocks;
43
- /** Get length pseudo-random bytes. — spec §9.4 */
44
+ /** Get length pseudo-random bytes., spec §9.4 */
44
45
  private pseudoRandomData;
45
- /** Reseed the generator spec §9.4 */
46
+ /** Reseed the generator, spec §9.4 */
46
47
  private reseed;
47
- /** Increment 16-byte little-endian counter. spec §9.4 */
48
+ /** Drain pool 0 into a fresh seed and reseed. Used by the deterministic
49
+ * test factory; production reseeds in get() walk the §9.5.5 schedule
50
+ * across all pools, not just pool 0. Caller is responsible for any
51
+ * entropy-threshold check. */
52
+ private reseedFromPool0;
53
+ /** Increment little-endian counter., spec §9.4 */
48
54
  private incrementCounter;
49
- /** Add an event to a pool via hash chaining: poolHash[i] = SHA256(poolHash[i] ‖ eventId ‖ data). */
55
+ /** Add an event to a pool via hash chaining: poolHash[i] = hash(poolHash[i] ‖ eventId ‖ data). */
50
56
  private addRandomEvent;
51
57
  private initialize;
52
58
  private startCollectors;