@suveren/gateway 0.40.0 → 0.41.1

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 (301) hide show
  1. package/content/guides/6-risks.md +1 -0
  2. package/dist/control-plane/index.mjs +182 -37
  3. package/dist/mcp-server/http.mjs +357 -71
  4. package/dist/ui/assets/{index-C-lA_7Lt.js → index-CO-dj98E.js} +27 -27
  5. package/dist/ui/index.html +1 -1
  6. package/node_modules/@hap/core/README.md +3 -3
  7. package/node_modules/@hap/core/dist/index.d.mts +567 -123
  8. package/node_modules/@hap/core/dist/index.d.ts +567 -123
  9. package/node_modules/@hap/core/dist/index.js +869 -23
  10. package/node_modules/@hap/core/dist/index.mjs +829 -22
  11. package/node_modules/@hap/core/node_modules/@hpke/core/LICENSE +21 -0
  12. package/node_modules/@hap/core/node_modules/@hpke/core/README.md +263 -0
  13. package/node_modules/@hap/core/node_modules/@hpke/core/esm/mod.d.ts +11 -0
  14. package/node_modules/@hap/core/node_modules/@hpke/core/esm/mod.d.ts.map +1 -0
  15. package/node_modules/@hap/core/node_modules/@hpke/core/esm/mod.js +6 -0
  16. package/node_modules/@hap/core/node_modules/@hpke/core/esm/package.json +3 -0
  17. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/aesGcm.d.ts +80 -0
  18. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/aesGcm.d.ts.map +1 -0
  19. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/aesGcm.js +167 -0
  20. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/exportOnly.d.ts +34 -0
  21. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/exportOnly.d.ts.map +1 -0
  22. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/aeads/exportOnly.js +56 -0
  23. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/cipherSuiteNative.d.ts +145 -0
  24. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/cipherSuiteNative.d.ts.map +1 -0
  25. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/cipherSuiteNative.js +326 -0
  26. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/encryptionContext.d.ts +15 -0
  27. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/encryptionContext.d.ts.map +1 -0
  28. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/encryptionContext.js +68 -0
  29. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/exporterContext.d.ts +19 -0
  30. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/exporterContext.d.ts.map +1 -0
  31. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/exporterContext.js +62 -0
  32. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/aeadParams.d.ts +17 -0
  33. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/aeadParams.d.ts.map +1 -0
  34. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/aeadParams.js +1 -0
  35. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/cipherSuiteParams.d.ts +13 -0
  36. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/cipherSuiteParams.d.ts.map +1 -0
  37. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/cipherSuiteParams.js +1 -0
  38. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encapsulator.d.ts +8 -0
  39. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encapsulator.d.ts.map +1 -0
  40. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encapsulator.js +1 -0
  41. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encryptionContext.d.ts +40 -0
  42. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encryptionContext.d.ts.map +1 -0
  43. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/encryptionContext.js +1 -0
  44. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/exporter.d.ts +17 -0
  45. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/exporter.d.ts.map +1 -0
  46. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/exporter.js +1 -0
  47. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/keyInfo.d.ts +7 -0
  48. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/keyInfo.d.ts.map +1 -0
  49. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/keyInfo.js +1 -0
  50. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/responses.d.ts +10 -0
  51. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/responses.d.ts.map +1 -0
  52. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/interfaces/responses.js +1 -0
  53. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemNative.d.ts +26 -0
  54. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemNative.d.ts.map +1 -0
  55. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemNative.js +112 -0
  56. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.d.ts +24 -0
  57. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.d.ts.map +1 -0
  58. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.js +214 -0
  59. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.d.ts +24 -0
  60. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.d.ts.map +1 -0
  61. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.js +214 -0
  62. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX25519.d.ts +38 -0
  63. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX25519.d.ts.map +1 -0
  64. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX25519.js +66 -0
  65. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX448.d.ts +38 -0
  66. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX448.d.ts.map +1 -0
  67. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/kems/dhkemX448.js +66 -0
  68. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/mutex.d.ts +5 -0
  69. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/mutex.d.ts.map +1 -0
  70. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/mutex.js +28 -0
  71. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/native.d.ts +236 -0
  72. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/native.d.ts.map +1 -0
  73. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/native.js +235 -0
  74. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/recipientContext.d.ts +6 -0
  75. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/recipientContext.d.ts.map +1 -0
  76. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/recipientContext.js +38 -0
  77. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/senderContext.d.ts +11 -0
  78. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/senderContext.d.ts.map +1 -0
  79. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/senderContext.js +45 -0
  80. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/utils/emitNotSupported.d.ts +2 -0
  81. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/utils/emitNotSupported.d.ts.map +1 -0
  82. package/node_modules/@hap/core/node_modules/@hpke/core/esm/src/utils/emitNotSupported.js +6 -0
  83. package/node_modules/@hap/core/node_modules/@hpke/core/package.json +46 -0
  84. package/node_modules/@hap/core/node_modules/@hpke/core/script/mod.d.ts +11 -0
  85. package/node_modules/@hap/core/node_modules/@hpke/core/script/mod.d.ts.map +1 -0
  86. package/node_modules/@hap/core/node_modules/@hpke/core/script/mod.js +47 -0
  87. package/node_modules/@hap/core/node_modules/@hpke/core/script/package.json +3 -0
  88. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/aesGcm.d.ts +80 -0
  89. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/aesGcm.d.ts.map +1 -0
  90. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/aesGcm.js +183 -0
  91. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/exportOnly.d.ts +34 -0
  92. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/exportOnly.d.ts.map +1 -0
  93. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/aeads/exportOnly.js +70 -0
  94. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/cipherSuiteNative.d.ts +145 -0
  95. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/cipherSuiteNative.d.ts.map +1 -0
  96. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/cipherSuiteNative.js +340 -0
  97. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/encryptionContext.d.ts +15 -0
  98. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/encryptionContext.d.ts.map +1 -0
  99. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/encryptionContext.js +82 -0
  100. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/exporterContext.d.ts +19 -0
  101. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/exporterContext.d.ts.map +1 -0
  102. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/exporterContext.js +78 -0
  103. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/aeadParams.d.ts +17 -0
  104. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/aeadParams.d.ts.map +1 -0
  105. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/aeadParams.js +12 -0
  106. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/cipherSuiteParams.d.ts +13 -0
  107. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/cipherSuiteParams.d.ts.map +1 -0
  108. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/cipherSuiteParams.js +12 -0
  109. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encapsulator.d.ts +8 -0
  110. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encapsulator.d.ts.map +1 -0
  111. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encapsulator.js +12 -0
  112. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encryptionContext.d.ts +40 -0
  113. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encryptionContext.d.ts.map +1 -0
  114. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/encryptionContext.js +12 -0
  115. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/exporter.d.ts +17 -0
  116. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/exporter.d.ts.map +1 -0
  117. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/exporter.js +12 -0
  118. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/keyInfo.d.ts +7 -0
  119. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/keyInfo.d.ts.map +1 -0
  120. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/keyInfo.js +12 -0
  121. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/responses.d.ts +10 -0
  122. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/responses.d.ts.map +1 -0
  123. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/interfaces/responses.js +12 -0
  124. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemNative.d.ts +26 -0
  125. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemNative.d.ts.map +1 -0
  126. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemNative.js +128 -0
  127. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.d.ts +24 -0
  128. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.d.ts.map +1 -0
  129. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.js +228 -0
  130. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.d.ts +24 -0
  131. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.d.ts.map +1 -0
  132. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.js +228 -0
  133. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX25519.d.ts +38 -0
  134. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX25519.d.ts.map +1 -0
  135. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX25519.js +80 -0
  136. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX448.d.ts +38 -0
  137. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX448.d.ts.map +1 -0
  138. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/kems/dhkemX448.js +80 -0
  139. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/mutex.d.ts +5 -0
  140. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/mutex.d.ts.map +1 -0
  141. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/mutex.js +42 -0
  142. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/native.d.ts +236 -0
  143. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/native.d.ts.map +1 -0
  144. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/native.js +255 -0
  145. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/recipientContext.d.ts +6 -0
  146. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/recipientContext.d.ts.map +1 -0
  147. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/recipientContext.js +52 -0
  148. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/senderContext.d.ts +11 -0
  149. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/senderContext.d.ts.map +1 -0
  150. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/senderContext.js +59 -0
  151. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/utils/emitNotSupported.d.ts +2 -0
  152. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/utils/emitNotSupported.d.ts.map +1 -0
  153. package/node_modules/@hap/core/node_modules/@hpke/core/script/src/utils/emitNotSupported.js +19 -0
  154. package/node_modules/@hap/core/package.json +2 -1
  155. package/node_modules/@hap/core/src/canonicalize.ts +9 -0
  156. package/node_modules/@hap/core/src/commitment-modes.ts +21 -9
  157. package/node_modules/@hap/core/src/errors.ts +24 -8
  158. package/node_modules/@hap/core/src/gatekeeper.ts +52 -8
  159. package/node_modules/@hap/core/src/index.ts +5 -1
  160. package/node_modules/@hap/core/src/issuance.ts +250 -0
  161. package/node_modules/@hap/core/src/mandate.ts +52 -14
  162. package/node_modules/@hap/core/src/owner-signature.ts +86 -39
  163. package/node_modules/@hap/core/src/profile.ts +45 -0
  164. package/node_modules/@hap/core/src/proposal-content.ts +219 -0
  165. package/node_modules/@hap/core/src/ticket-projection.ts +167 -0
  166. package/node_modules/@hap/core/src/ticket.ts +254 -20
  167. package/node_modules/@hap/core/src/types.ts +33 -5
  168. package/node_modules/@hap/core/src/verifier-policy.ts +178 -0
  169. package/node_modules/@hap/core/src/versions.ts +50 -19
  170. package/node_modules/@hono/node-server/dist/index.cjs +31 -6
  171. package/node_modules/@hono/node-server/dist/index.mjs +31 -6
  172. package/node_modules/@hono/node-server/package.json +1 -1
  173. package/node_modules/@hpke/common/esm/package.json +5 -1
  174. package/node_modules/@hpke/common/esm/src/curve/montgomery.d.ts +2 -2
  175. package/node_modules/@hpke/common/esm/src/curve/montgomery.d.ts.map +1 -1
  176. package/node_modules/@hpke/common/esm/src/curve/montgomery.js +41 -26
  177. package/node_modules/@hpke/common/esm/src/hash/sha3.d.ts.map +1 -1
  178. package/node_modules/@hpke/common/esm/src/hash/sha3.js +0 -15
  179. package/node_modules/@hpke/common/esm/src/kdfs/hkdf.d.ts +2 -1
  180. package/node_modules/@hpke/common/esm/src/kdfs/hkdf.d.ts.map +1 -1
  181. package/node_modules/@hpke/common/esm/src/kdfs/hkdf.js +12 -2
  182. package/node_modules/@hpke/common/esm/src/kems/dhkemPrimitives/xCurve.d.ts.map +1 -1
  183. package/node_modules/@hpke/common/esm/src/kems/dhkemPrimitives/xCurve.js +14 -3
  184. package/node_modules/@hpke/common/esm/src/utils/misc.d.ts +6 -0
  185. package/node_modules/@hpke/common/esm/src/utils/misc.d.ts.map +1 -1
  186. package/node_modules/@hpke/common/esm/src/utils/misc.js +43 -10
  187. package/node_modules/@hpke/common/esm/src/utils/noble.d.ts +1 -1
  188. package/node_modules/@hpke/common/esm/src/utils/noble.d.ts.map +1 -1
  189. package/node_modules/@hpke/common/esm/src/utils/noble.js +21 -10
  190. package/node_modules/@hpke/common/package.json +5 -1
  191. package/node_modules/@hpke/common/script/src/curve/montgomery.d.ts +2 -2
  192. package/node_modules/@hpke/common/script/src/curve/montgomery.d.ts.map +1 -1
  193. package/node_modules/@hpke/common/script/src/curve/montgomery.js +40 -25
  194. package/node_modules/@hpke/common/script/src/hash/sha3.d.ts.map +1 -1
  195. package/node_modules/@hpke/common/script/src/hash/sha3.js +0 -15
  196. package/node_modules/@hpke/common/script/src/kdfs/hkdf.d.ts +2 -1
  197. package/node_modules/@hpke/common/script/src/kdfs/hkdf.d.ts.map +1 -1
  198. package/node_modules/@hpke/common/script/src/kdfs/hkdf.js +12 -2
  199. package/node_modules/@hpke/common/script/src/kems/dhkemPrimitives/xCurve.d.ts.map +1 -1
  200. package/node_modules/@hpke/common/script/src/kems/dhkemPrimitives/xCurve.js +13 -2
  201. package/node_modules/@hpke/common/script/src/utils/misc.d.ts +6 -0
  202. package/node_modules/@hpke/common/script/src/utils/misc.d.ts.map +1 -1
  203. package/node_modules/@hpke/common/script/src/utils/misc.js +43 -9
  204. package/node_modules/@hpke/common/script/src/utils/noble.d.ts +1 -1
  205. package/node_modules/@hpke/common/script/src/utils/noble.d.ts.map +1 -1
  206. package/node_modules/@hpke/common/script/src/utils/noble.js +22 -11
  207. package/node_modules/@hpke/core/README.md +56 -56
  208. package/node_modules/@hpke/core/esm/package.json +2 -1
  209. package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.d.ts +3 -21
  210. package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.d.ts.map +1 -1
  211. package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x25519.js +3 -201
  212. package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.d.ts +3 -21
  213. package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.d.ts.map +1 -1
  214. package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/x448.js +3 -201
  215. package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/xCurveNative.d.ts +26 -0
  216. package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/xCurveNative.d.ts.map +1 -0
  217. package/node_modules/@hpke/core/esm/src/kems/dhkemPrimitives/xCurveNative.js +216 -0
  218. package/node_modules/@hpke/core/package.json +6 -2
  219. package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.d.ts +3 -21
  220. package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.d.ts.map +1 -1
  221. package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x25519.js +4 -202
  222. package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.d.ts +3 -21
  223. package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.d.ts.map +1 -1
  224. package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/x448.js +4 -202
  225. package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/xCurveNative.d.ts +26 -0
  226. package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/xCurveNative.d.ts.map +1 -0
  227. package/node_modules/@hpke/core/script/src/kems/dhkemPrimitives/xCurveNative.js +230 -0
  228. package/node_modules/@types/node/README.md +1 -1
  229. package/node_modules/@types/node/package.json +2 -2
  230. package/node_modules/@types/node/zlib.d.ts +752 -0
  231. package/node_modules/encodeurl/README.md +14 -0
  232. package/node_modules/encodeurl/index.js +5 -10
  233. package/node_modules/encodeurl/package.json +10 -6
  234. package/node_modules/express-rate-limit/dist/index.cjs +7 -3
  235. package/node_modules/express-rate-limit/dist/index.mjs +7 -3
  236. package/node_modules/express-rate-limit/package.json +10 -10
  237. package/node_modules/hono/dist/cjs/adapter/bun/serve-static.js +1 -1
  238. package/node_modules/hono/dist/cjs/adapter/bun/websocket.js +1 -1
  239. package/node_modules/hono/dist/cjs/context.js +1 -1
  240. package/node_modules/hono/dist/cjs/helper/css/common.js +3 -5
  241. package/node_modules/hono/dist/cjs/hono-base.js +4 -10
  242. package/node_modules/hono/dist/cjs/hono.js +0 -1
  243. package/node_modules/hono/dist/cjs/middleware/basic-auth/index.js +1 -1
  244. package/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +1 -1
  245. package/node_modules/hono/dist/cjs/middleware/csrf/index.js +2 -2
  246. package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +2 -2
  247. package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +2 -2
  248. package/node_modules/hono/dist/cjs/middleware/mount/index.js +4 -4
  249. package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +13 -11
  250. package/node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js +4 -4
  251. package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +39 -51
  252. package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +15 -5
  253. package/node_modules/hono/dist/cjs/utils/jwt/jwt.js +2 -1
  254. package/node_modules/hono/dist/cjs/utils/mount.js +35 -0
  255. package/node_modules/hono/dist/cjs/utils/url.js +10 -0
  256. package/node_modules/hono/dist/cjs/validator/validator.js +1 -1
  257. package/node_modules/hono/dist/context.js +1 -1
  258. package/node_modules/hono/dist/helper/css/common.js +3 -5
  259. package/node_modules/hono/dist/hono-base.js +4 -10
  260. package/node_modules/hono/dist/hono.js +0 -1
  261. package/node_modules/hono/dist/middleware/basic-auth/index.js +1 -1
  262. package/node_modules/hono/dist/middleware/bearer-auth/index.js +1 -1
  263. package/node_modules/hono/dist/middleware/csrf/index.js +2 -2
  264. package/node_modules/hono/dist/middleware/jwk/jwk.js +2 -2
  265. package/node_modules/hono/dist/middleware/jwt/jwt.js +2 -2
  266. package/node_modules/hono/dist/middleware/language/language.js +1 -1
  267. package/node_modules/hono/dist/middleware/mount/index.js +4 -4
  268. package/node_modules/hono/dist/router/reg-exp-router/node.js +13 -11
  269. package/node_modules/hono/dist/router/reg-exp-router/prepared-router.js +5 -5
  270. package/node_modules/hono/dist/router/reg-exp-router/router.js +40 -52
  271. package/node_modules/hono/dist/router/reg-exp-router/trie.js +15 -5
  272. package/node_modules/hono/dist/types/middleware/mount/index.d.ts +1 -0
  273. package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +3 -3
  274. package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +1 -1
  275. package/node_modules/hono/dist/types/utils/mount.d.ts +4 -0
  276. package/node_modules/hono/dist/types/utils/url.d.ts +1 -0
  277. package/node_modules/hono/dist/utils/jwt/jwt.js +2 -1
  278. package/node_modules/hono/dist/utils/mount.js +34 -0
  279. package/node_modules/hono/dist/utils/url.js +10 -1
  280. package/node_modules/hono/dist/validator/validator.js +1 -1
  281. package/node_modules/hono/package.json +1 -1
  282. package/node_modules/ip-address/README.md +39 -39
  283. package/node_modules/ip-address/dist/ipv6.js +1 -1
  284. package/node_modules/ip-address/dist/ipv6.js.map +1 -1
  285. package/node_modules/ip-address/package.json +1 -1
  286. package/node_modules/jose/dist/types/jwt/decrypt.d.ts +3 -0
  287. package/node_modules/jose/dist/types/jwt/unsecured.d.ts +2 -0
  288. package/node_modules/jose/dist/types/jwt/verify.d.ts +3 -0
  289. package/node_modules/jose/dist/types/types.d.ts +8 -0
  290. package/node_modules/jose/dist/types/util/decode_jwt.d.ts +1 -0
  291. package/node_modules/jose/dist/webapi/jwks/remote.js +3 -1
  292. package/node_modules/jose/dist/webapi/lib/deflate.js +2 -1
  293. package/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +2 -1
  294. package/node_modules/jose/package.json +1 -1
  295. package/node_modules/qs/CHANGELOG.md +29 -22
  296. package/node_modules/qs/dist/qs.js +14 -14
  297. package/node_modules/qs/eslint.config.mjs +6 -0
  298. package/node_modules/qs/lib/stringify.js +1 -1
  299. package/node_modules/qs/package.json +5 -5
  300. package/node_modules/qs/test/stringify.js +74 -0
  301. package/package.json +2 -2
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Verifier policy — `HAP-verifier-policy` (protocol.md → *Owner Signatures*
3
+ * → *Verifier policy*, new in v0.8, specification-led).
4
+ *
5
+ * The relying party's own, declarative statement of what it demands of a
6
+ * ticket (or projection) before acting on or trusting it. Every present
7
+ * line is a conjunct; an unmet line is a refusal naming the line and its
8
+ * code; absent lines impose nothing. The policy is never sent to the
9
+ * Authority Server.
10
+ */
11
+
12
+ import { HapError, type HapErrorCode } from './errors';
13
+ import type { Mandate, OwnerSignatureBinding } from './types';
14
+ import type { TicketPayload } from './ticket';
15
+ import { verifyTicketSignature, verifyTicketApprovals, approvalsSufficient } from './ticket';
16
+ import { verifyTicketProjection, verifyProjectionOwner, type TicketProjection } from './ticket-projection';
17
+ import { verifyMandateSignature } from './mandate';
18
+ import { verifyOwnerSignatures, bindingRank, BINDING_RANK } from './owner-signature';
19
+
20
+ export interface VerifierPolicy {
21
+ typ: 'HAP-verifier-policy';
22
+ version: string;
23
+ trusted_issuers?: string[];
24
+ min_binding?: OwnerSignatureBinding | string;
25
+ required_owners?: string[];
26
+ profile_hashes?: Record<string, string>;
27
+ action_types?: string[];
28
+ freshness_seconds?: number;
29
+ required_fields?: string[];
30
+ require_approval_signature?: boolean;
31
+ }
32
+
33
+ /** A refusal naming the policy line that failed. */
34
+ export class PolicyError extends HapError {
35
+ constructor(public readonly line: keyof VerifierPolicy, code: HapErrorCode, message: string) {
36
+ super(code, `${line}: ${message}`);
37
+ this.name = 'PolicyError';
38
+ }
39
+ }
40
+
41
+ export interface PolicyInput {
42
+ /** The complete ticket, where the relying party holds it. */
43
+ ticket?: TicketPayload;
44
+ /** Or the projection, where only the public view was served. */
45
+ projection?: TicketProjection;
46
+ /** The mandate the artifact chains to, where the policy needs it
47
+ * (`min_binding`, `required_owners`, `profile_hashes`, `require_approval_signature`). */
48
+ mandate?: Mandate;
49
+ now?: number;
50
+ /** The relying party acts on the artifact (freshness applies to `valid_until`). */
51
+ asAuthorization?: boolean;
52
+ /** Whether the ticket's action exceeded an approval-kind cap — known to a
53
+ * party that holds the mandate's caps and the execution context. */
54
+ aboveCap?: boolean;
55
+ }
56
+
57
+ /**
58
+ * Evaluate a policy (protocol.md → *Verifier policy*, "Evaluation"). The
59
+ * artifact's own signature is verified first under `trusted_issuers` where
60
+ * present, else under any resolvable issuer.
61
+ * @throws PolicyError with the line and the code the table assigns.
62
+ */
63
+ export async function evaluateVerifierPolicy(policy: VerifierPolicy, input: PolicyInput): Promise<void> {
64
+ if (policy.typ !== 'HAP-verifier-policy') {
65
+ throw new HapError('POLICY_UNMET', 'policy document must carry typ "HAP-verifier-policy"');
66
+ }
67
+ const artifact = input.ticket ?? input.projection;
68
+ if (!artifact) throw new HapError('POLICY_UNMET', 'no ticket or projection to evaluate');
69
+ const now = input.now ?? Math.floor(Date.now() / 1000);
70
+
71
+ // trusted_issuers — an unlisted issuer, or a signature that does not verify
72
+ // under the listed key, is reported as INVALID_SIGNATURE on purpose.
73
+ try {
74
+ if (input.ticket) {
75
+ await verifyTicketSignature(input.ticket, { trustedIssuers: policy.trusted_issuers });
76
+ } else if (input.projection) {
77
+ await verifyTicketProjection(input.projection, { trustedIssuers: policy.trusted_issuers, now, asAuthorization: input.asAuthorization });
78
+ }
79
+ if (input.mandate) {
80
+ await verifyMandateSignature(input.mandate, { trustedIssuers: policy.trusted_issuers });
81
+ }
82
+ } catch (err) {
83
+ const code = err instanceof HapError ? err.code : 'INVALID_SIGNATURE';
84
+ throw new PolicyError(code === 'POLICY_UNMET' ? 'freshness_seconds' : 'trusted_issuers', code, (err as Error).message);
85
+ }
86
+
87
+ // Owner signatures on the mandate — verified once, used by two lines.
88
+ let verifiedOwnerDids: Map<string, string> | undefined; // did → binding
89
+ const needOwners = policy.min_binding !== undefined || policy.required_owners !== undefined;
90
+ if (needOwners) {
91
+ verifiedOwnerDids = new Map();
92
+ if (input.mandate) {
93
+ try {
94
+ const entries = await verifyOwnerSignatures(input.mandate);
95
+ for (const e of entries) verifiedOwnerDids.set(e.did, e.binding ?? 'raw');
96
+ if (input.projection?.owner) await verifyProjectionOwner(input.projection, input.mandate);
97
+ } catch (err) {
98
+ throw new PolicyError('min_binding', 'OWNER_SIGNATURE_REQUIRED', `no verifiable owner signature: ${(err as Error).message}`);
99
+ }
100
+ }
101
+ }
102
+
103
+ if (policy.min_binding !== undefined) {
104
+ const minRank = BINDING_RANK[policy.min_binding as OwnerSignatureBinding];
105
+ if (minRank === undefined) {
106
+ throw new PolicyError('min_binding', 'OWNER_SIGNATURE_REQUIRED', `unknown binding "${policy.min_binding}" — satisfies no minimum`);
107
+ }
108
+ const best = Math.max(-1, ...[...verifiedOwnerDids!.values()].map(bindingRank));
109
+ if (best < minRank) {
110
+ throw new PolicyError('min_binding', 'OWNER_SIGNATURE_REQUIRED', `no verified owner signature at binding >= "${policy.min_binding}"`);
111
+ }
112
+ }
113
+
114
+ if (policy.required_owners !== undefined) {
115
+ for (const did of policy.required_owners) {
116
+ if (!verifiedOwnerDids!.has(did)) {
117
+ throw new PolicyError('required_owners', 'OWNER_SIGNATURE_REQUIRED', `no verified owner signature by ${did}`);
118
+ }
119
+ }
120
+ }
121
+
122
+ if (policy.profile_hashes !== undefined) {
123
+ const mandate = input.mandate;
124
+ if (!mandate) throw new PolicyError('profile_hashes', 'PROFILE_HASH_MISMATCH', 'the mandate is needed to check profile_hashes');
125
+ const expected = policy.profile_hashes[mandate.payload.profile_id];
126
+ if (expected === undefined) {
127
+ throw new PolicyError('profile_hashes', 'PROFILE_HASH_MISMATCH', `profile ${mandate.payload.profile_id} is not listed`);
128
+ }
129
+ if (expected !== mandate.payload.profile_hash) {
130
+ throw new PolicyError('profile_hashes', 'PROFILE_HASH_MISMATCH', `profile_hash differs from the listed one for ${mandate.payload.profile_id}`);
131
+ }
132
+ if (mandate.payload.mandate_id !== artifact.mandateId) {
133
+ throw new PolicyError('profile_hashes', 'PROFILE_HASH_MISMATCH', 'the mandate supplied is not the one the artifact names');
134
+ }
135
+ }
136
+
137
+ if (policy.action_types !== undefined && !policy.action_types.includes(artifact.actionType)) {
138
+ throw new PolicyError('action_types', 'POLICY_UNMET', `actionType ${artifact.actionType} is not in the listed set`);
139
+ }
140
+
141
+ if (policy.freshness_seconds !== undefined) {
142
+ if (now - artifact.timestamp > policy.freshness_seconds) {
143
+ throw new PolicyError('freshness_seconds', 'POLICY_UNMET', `ticket is ${now - artifact.timestamp}s old, policy allows ${policy.freshness_seconds}s`);
144
+ }
145
+ if (input.projection && input.asAuthorization && now > input.projection.valid_until) {
146
+ throw new PolicyError('freshness_seconds', 'POLICY_UNMET', 'projection presented after valid_until');
147
+ }
148
+ }
149
+
150
+ if (policy.required_fields !== undefined) {
151
+ const ctx = input.ticket?.executionContext ?? input.projection?.executionContext ?? {};
152
+ for (const f of policy.required_fields) {
153
+ if (ctx[f] === undefined) {
154
+ throw new PolicyError('required_fields', 'POLICY_UNMET', `execution-context field ${f} is not ${input.ticket ? 'present' : 'disclosed'}`);
155
+ }
156
+ }
157
+ }
158
+
159
+ if (policy.require_approval_signature) {
160
+ const ticket = input.ticket;
161
+ const mandate = input.mandate;
162
+ if (!ticket || !mandate) {
163
+ throw new PolicyError('require_approval_signature', 'APPROVAL_SIGNATURE_REQUIRED', 'the complete ticket and its mandate are needed to verify approvals');
164
+ }
165
+ if (ticket.proposalId !== undefined) {
166
+ let verified;
167
+ try {
168
+ verified = await verifyTicketApprovals(ticket, mandate);
169
+ } catch (err) {
170
+ throw new PolicyError('require_approval_signature', 'APPROVAL_SIGNATURE_REQUIRED', (err as Error).message);
171
+ }
172
+ const aboveCap = input.aboveCap ?? (ticket.approvalSignatures !== undefined && ticket.approvalSignatures.length > 0);
173
+ if (!approvalsSufficient(mandate, verified, aboveCap)) {
174
+ throw new PolicyError('require_approval_signature', 'APPROVAL_SIGNATURE_REQUIRED', 'the ticket lacks a verifiable signature for each decision it rests on');
175
+ }
176
+ }
177
+ }
178
+ }
@@ -1,36 +1,52 @@
1
1
  /**
2
- * Version negotiation — protocol.md → *Version negotiation (v0.7)*.
2
+ * Version negotiation — protocol.md → *Version negotiation (v0.7)* and the
3
+ * v0.7 → v0.8 exception (*Migration from v0.7*).
3
4
  *
4
- * "Gatekeepers and Authority Servers MUST reject unknown or untrusted
5
- * versions" is a safety rule, not a transition plan; this module is the
6
- * transition plan. A mandate request carries `supported_versions`; the AS
7
- * issues at the highest version both sides support, or refuses with
8
- * `VERSION_UNSUPPORTED` where there is none. A request without the field is
9
- * read as `["0.6"]` (rule 1) — but this package issues and verifies `0.7`
10
- * only (CLAUDE.md "Decided by the owner": no backward verify path), so that
11
- * default exists to make the refusal message honest, not to accept the
12
- * mandate.
5
+ * Two sets, because v0.8 is a re-grant release:
6
+ *
7
+ * - {@link PROTOCOL_VERSION} — the one version this package ISSUES. A v0.8
8
+ * Authority Server issues `version: "0.8"` only, and refuses a mandate
9
+ * request that does not support it (rule 3, exception).
10
+ * - {@link SUPPORTED_VERSIONS} — the versions this package can VERIFY and
11
+ * ENFORCE, each under its own rules (rule 4). A Gatekeeper sends this list
12
+ * as `supported_versions`; a verifier accepts an artifact of any of them.
13
+ * v0.7 is kept so that a Gatekeeper upgraded before its Authority Server
14
+ * keeps working, and so that v0.7 artifacts remain verifiable as evidence.
15
+ *
16
+ * `negotiateVersion` picks what an Authority Server issues. Its default is
17
+ * the strict v0.8 set; an AS that bridges the transition passes the wider
18
+ * set explicitly, behind its own switch.
13
19
  */
14
20
  import { HapError } from './errors';
15
21
 
16
- /** The protocol version this package issues and verifies. */
17
- export const PROTOCOL_VERSION = '0.7';
22
+ /** The protocol version this package issues. */
23
+ export const PROTOCOL_VERSION = '0.8';
24
+
25
+ /** Every version this package verifies and enforces, newest first. */
26
+ export const SUPPORTED_VERSIONS: readonly string[] = ['0.8', '0.7'];
27
+
28
+ /** The versions an Authority Server built on this package issues. */
29
+ export const ISSUABLE_VERSIONS: readonly string[] = [PROTOCOL_VERSION];
18
30
 
19
- /** The protocol versions this package can verify and enforce. */
20
- export const SUPPORTED_VERSIONS: readonly string[] = ['0.7'];
31
+ /** A protocol version this package knows the rules of. */
32
+ export type SupportedVersion = '0.8' | '0.7';
33
+
34
+ export function isSupportedVersion(v: unknown): v is SupportedVersion {
35
+ return typeof v === 'string' && SUPPORTED_VERSIONS.includes(v);
36
+ }
21
37
 
22
38
  /**
23
- * The highest version both the requester and this implementation support.
39
+ * The highest version both the requester and the issuer support.
24
40
  *
25
41
  * @param requested `supported_versions` from the mandate request. Absent →
26
- * read as `["0.6"]` (protocol.md rule 1) — which, against this package's
27
- * `SUPPORTED_VERSIONS`, has no overlap and refuses honestly rather than
28
- * silently assuming `0.7`.
42
+ * read as `["0.6"]` (protocol.md rule 1), which no issuer here supports, so
43
+ * the refusal is honest rather than a silent assumption.
44
+ * @param supported What the issuer is willing to issue. Default: v0.8 only.
29
45
  * @throws HapError `VERSION_UNSUPPORTED` when no version is common to both.
30
46
  */
31
47
  export function negotiateVersion(
32
48
  requested: readonly string[] | undefined,
33
- supported: readonly string[] = SUPPORTED_VERSIONS,
49
+ supported: readonly string[] = ISSUABLE_VERSIONS,
34
50
  ): string {
35
51
  const requestedVersions = requested ?? ['0.6'];
36
52
  // Highest-first so a requester offering several supported versions gets the
@@ -45,3 +61,18 @@ export function negotiateVersion(
45
61
  }
46
62
  return common[0];
47
63
  }
64
+
65
+ /**
66
+ * Refuse an artifact of a version this package cannot verify (rule 4: an
67
+ * artifact is read under its own version, never re-interpreted).
68
+ * @throws HapError `VERSION_UNSUPPORTED`
69
+ */
70
+ export function assertSupportedVersion(version: unknown, what: string): asserts version is SupportedVersion {
71
+ if (!isSupportedVersion(version)) {
72
+ throw new HapError(
73
+ 'VERSION_UNSUPPORTED',
74
+ `${what} version ${JSON.stringify(version)} is not verifiable by this implementation ` +
75
+ `(verifies [${SUPPORTED_VERSIONS.join(', ')}])`,
76
+ );
77
+ }
78
+ }
@@ -169,16 +169,27 @@ const newHeadersFromIncoming = (incoming) => globalThis.Headers === GlobalHeader
169
169
  const reValidRequestUrl = /^\/[!#$&-;=?-\[\]_a-z~]*$/;
170
170
  const reDotSegment = /\/\.\.?(?:[/?#]|$)/;
171
171
  const reValidHost = /^[a-z0-9._-]+(?::(?:[1-5]\d{3,4}|[6-9]\d{3}))?$/;
172
+ const validateRequestTarget = (target) => {
173
+ const backslash = target.indexOf("\\");
174
+ if (backslash !== -1) {
175
+ const query = target.indexOf("?");
176
+ if (query === -1 || backslash < query) throw new RequestError("Backslash in request path");
177
+ }
178
+ };
172
179
  const buildUrl = (scheme, host, incomingUrl) => {
173
180
  const url = `${scheme}://${host}${incomingUrl}`;
174
181
  if (!reValidHost.test(host)) {
182
+ validateRequestTarget(incomingUrl);
175
183
  const urlObj = new URL(url);
176
184
  if (urlObj.hostname.length !== host.length && urlObj.hostname !== (host.includes(":") ? host.replace(/:\d+$/, "") : host).toLowerCase()) throw new RequestError("Invalid host header");
177
185
  return urlObj.href;
178
186
  } else if (incomingUrl.length === 0) return url + "/";
179
187
  else {
180
188
  if (incomingUrl.charCodeAt(0) !== 47) throw new RequestError("Invalid URL");
181
- if (!reValidRequestUrl.test(incomingUrl) || reDotSegment.test(incomingUrl)) return new URL(url).href;
189
+ if (!reValidRequestUrl.test(incomingUrl) || reDotSegment.test(incomingUrl)) {
190
+ validateRequestTarget(incomingUrl);
191
+ return new URL(url).href;
192
+ }
182
193
  return url;
183
194
  }
184
195
  };
@@ -591,6 +602,7 @@ const newRequest = (incoming, defaultHostname) => {
591
602
  if (incomingUrl[0] !== "/" && (incomingUrl.startsWith("http://") || incomingUrl.startsWith("https://"))) {
592
603
  if (incoming instanceof node_http2.Http2ServerRequest) throw new RequestError("Absolute URL for :path is not allowed in HTTP/2");
593
604
  try {
605
+ validateRequestTarget(incomingUrl);
594
606
  req[urlKey] = new URL(incomingUrl).href;
595
607
  } catch (e) {
596
608
  throw new RequestError("Invalid absolute URL", { cause: e });
@@ -1143,6 +1155,7 @@ const appendResponseHeaders = (headers, responseHeaders) => {
1143
1155
  });
1144
1156
  };
1145
1157
  const rejectUpgradeRequest = (socket, status, responseHeaders) => {
1158
+ if (socket.destroyed) return;
1146
1159
  const responseLines = ["Connection: close", "Content-Length: 0"];
1147
1160
  appendResponseHeaders(responseLines, responseHeaders);
1148
1161
  socket.end(`HTTP/1.1 ${status.toString()} ${node_http.STATUS_CODES[status] ?? ""}\r\n${responseLines.join("\r\n")}\r\n\r
@@ -1150,7 +1163,12 @@ const rejectUpgradeRequest = (socket, status, responseHeaders) => {
1150
1163
  };
1151
1164
  const createUpgradeRequest = (request) => {
1152
1165
  const protocol = request.socket.encrypted ? "https" : "http";
1153
- const url = new URL(request.url ?? "/", `${protocol}://${request.headers.host ?? "localhost"}`);
1166
+ const incomingUrl = request.url ?? "/";
1167
+ let url;
1168
+ if (incomingUrl[0] !== "/" && (incomingUrl.startsWith("http://") || incomingUrl.startsWith("https://"))) {
1169
+ validateRequestTarget(incomingUrl);
1170
+ url = new URL(incomingUrl).href;
1171
+ } else url = buildUrl(protocol, request.headers.host ?? "localhost", incomingUrl);
1154
1172
  const headers = new Headers();
1155
1173
  for (const key in request.headers) {
1156
1174
  const value = request.headers[key];
@@ -1187,6 +1205,10 @@ const setupWebSocket = (options) => {
1187
1205
  };
1188
1206
  server.on("upgrade", async (request, socket, head) => {
1189
1207
  if (request.headers.upgrade?.toLowerCase() !== "websocket") return;
1208
+ const ignoreSocketError = () => {};
1209
+ const reclaimWaiterOnClose = () => rejectWaiter(request);
1210
+ socket.on("error", ignoreSocketError);
1211
+ socket.once("close", reclaimWaiterOnClose);
1190
1212
  const env = {
1191
1213
  incoming: request,
1192
1214
  outgoing: void 0,
@@ -1201,8 +1223,12 @@ const setupWebSocket = (options) => {
1201
1223
  status = response.status;
1202
1224
  responseHeaders = response.headers;
1203
1225
  }
1204
- } catch {
1205
- if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, 500);
1226
+ } catch (error) {
1227
+ if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, error instanceof RequestError ? 400 : 500);
1228
+ return;
1229
+ }
1230
+ if (socket.destroyed) {
1231
+ rejectWaiter(request);
1206
1232
  return;
1207
1233
  }
1208
1234
  const waiter = waiterMap.get(request);
@@ -1214,12 +1240,11 @@ const setupWebSocket = (options) => {
1214
1240
  const addResponseHeaders = (headers) => {
1215
1241
  appendResponseHeaders(headers, responseHeaders);
1216
1242
  };
1217
- const reclaimWaiterOnClose = () => rejectWaiter(request);
1218
- socket.once("close", reclaimWaiterOnClose);
1219
1243
  wss.on("headers", addResponseHeaders);
1220
1244
  try {
1221
1245
  wss.handleUpgrade(request, socket, head, (ws) => {
1222
1246
  socket.off("close", reclaimWaiterOnClose);
1247
+ socket.off("error", ignoreSocketError);
1223
1248
  wss.emit("connection", ws, request);
1224
1249
  });
1225
1250
  } finally {
@@ -168,16 +168,27 @@ const newHeadersFromIncoming = (incoming) => globalThis.Headers === GlobalHeader
168
168
  const reValidRequestUrl = /^\/[!#$&-;=?-\[\]_a-z~]*$/;
169
169
  const reDotSegment = /\/\.\.?(?:[/?#]|$)/;
170
170
  const reValidHost = /^[a-z0-9._-]+(?::(?:[1-5]\d{3,4}|[6-9]\d{3}))?$/;
171
+ const validateRequestTarget = (target) => {
172
+ const backslash = target.indexOf("\\");
173
+ if (backslash !== -1) {
174
+ const query = target.indexOf("?");
175
+ if (query === -1 || backslash < query) throw new RequestError("Backslash in request path");
176
+ }
177
+ };
171
178
  const buildUrl = (scheme, host, incomingUrl) => {
172
179
  const url = `${scheme}://${host}${incomingUrl}`;
173
180
  if (!reValidHost.test(host)) {
181
+ validateRequestTarget(incomingUrl);
174
182
  const urlObj = new URL(url);
175
183
  if (urlObj.hostname.length !== host.length && urlObj.hostname !== (host.includes(":") ? host.replace(/:\d+$/, "") : host).toLowerCase()) throw new RequestError("Invalid host header");
176
184
  return urlObj.href;
177
185
  } else if (incomingUrl.length === 0) return url + "/";
178
186
  else {
179
187
  if (incomingUrl.charCodeAt(0) !== 47) throw new RequestError("Invalid URL");
180
- if (!reValidRequestUrl.test(incomingUrl) || reDotSegment.test(incomingUrl)) return new URL(url).href;
188
+ if (!reValidRequestUrl.test(incomingUrl) || reDotSegment.test(incomingUrl)) {
189
+ validateRequestTarget(incomingUrl);
190
+ return new URL(url).href;
191
+ }
181
192
  return url;
182
193
  }
183
194
  };
@@ -590,6 +601,7 @@ const newRequest = (incoming, defaultHostname) => {
590
601
  if (incomingUrl[0] !== "/" && (incomingUrl.startsWith("http://") || incomingUrl.startsWith("https://"))) {
591
602
  if (incoming instanceof Http2ServerRequest) throw new RequestError("Absolute URL for :path is not allowed in HTTP/2");
592
603
  try {
604
+ validateRequestTarget(incomingUrl);
593
605
  req[urlKey] = new URL(incomingUrl).href;
594
606
  } catch (e) {
595
607
  throw new RequestError("Invalid absolute URL", { cause: e });
@@ -1142,6 +1154,7 @@ const appendResponseHeaders = (headers, responseHeaders) => {
1142
1154
  });
1143
1155
  };
1144
1156
  const rejectUpgradeRequest = (socket, status, responseHeaders) => {
1157
+ if (socket.destroyed) return;
1145
1158
  const responseLines = ["Connection: close", "Content-Length: 0"];
1146
1159
  appendResponseHeaders(responseLines, responseHeaders);
1147
1160
  socket.end(`HTTP/1.1 ${status.toString()} ${STATUS_CODES[status] ?? ""}\r\n${responseLines.join("\r\n")}\r\n\r
@@ -1149,7 +1162,12 @@ const rejectUpgradeRequest = (socket, status, responseHeaders) => {
1149
1162
  };
1150
1163
  const createUpgradeRequest = (request) => {
1151
1164
  const protocol = request.socket.encrypted ? "https" : "http";
1152
- const url = new URL(request.url ?? "/", `${protocol}://${request.headers.host ?? "localhost"}`);
1165
+ const incomingUrl = request.url ?? "/";
1166
+ let url;
1167
+ if (incomingUrl[0] !== "/" && (incomingUrl.startsWith("http://") || incomingUrl.startsWith("https://"))) {
1168
+ validateRequestTarget(incomingUrl);
1169
+ url = new URL(incomingUrl).href;
1170
+ } else url = buildUrl(protocol, request.headers.host ?? "localhost", incomingUrl);
1153
1171
  const headers = new Headers();
1154
1172
  for (const key in request.headers) {
1155
1173
  const value = request.headers[key];
@@ -1186,6 +1204,10 @@ const setupWebSocket = (options) => {
1186
1204
  };
1187
1205
  server.on("upgrade", async (request, socket, head) => {
1188
1206
  if (request.headers.upgrade?.toLowerCase() !== "websocket") return;
1207
+ const ignoreSocketError = () => {};
1208
+ const reclaimWaiterOnClose = () => rejectWaiter(request);
1209
+ socket.on("error", ignoreSocketError);
1210
+ socket.once("close", reclaimWaiterOnClose);
1189
1211
  const env = {
1190
1212
  incoming: request,
1191
1213
  outgoing: void 0,
@@ -1200,8 +1222,12 @@ const setupWebSocket = (options) => {
1200
1222
  status = response.status;
1201
1223
  responseHeaders = response.headers;
1202
1224
  }
1203
- } catch {
1204
- if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, 500);
1225
+ } catch (error) {
1226
+ if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, error instanceof RequestError ? 400 : 500);
1227
+ return;
1228
+ }
1229
+ if (socket.destroyed) {
1230
+ rejectWaiter(request);
1205
1231
  return;
1206
1232
  }
1207
1233
  const waiter = waiterMap.get(request);
@@ -1213,12 +1239,11 @@ const setupWebSocket = (options) => {
1213
1239
  const addResponseHeaders = (headers) => {
1214
1240
  appendResponseHeaders(headers, responseHeaders);
1215
1241
  };
1216
- const reclaimWaiterOnClose = () => rejectWaiter(request);
1217
- socket.once("close", reclaimWaiterOnClose);
1218
1242
  wss.on("headers", addResponseHeaders);
1219
1243
  try {
1220
1244
  wss.handleUpgrade(request, socket, head, (ws) => {
1221
1245
  socket.off("close", reclaimWaiterOnClose);
1246
+ socket.off("error", ignoreSocketError);
1222
1247
  wss.emit("connection", ws, request);
1223
1248
  });
1224
1249
  } finally {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hono/node-server",
3
- "version": "2.1.5",
3
+ "version": "2.1.6",
4
4
  "description": "Node.js Adapter for Hono",
5
5
  "main": "dist/index.mjs",
6
6
  "type": "module",
@@ -1,3 +1,7 @@
1
1
  {
2
- "type": "module"
2
+ "type": "module",
3
+ "sideEffects": false,
4
+ "browser": {
5
+ "crypto": false
6
+ }
3
7
  }
@@ -12,7 +12,7 @@ export type CurveType = {
12
12
  type: "x25519" | "x448";
13
13
  adjustScalarBytes: (bytes: Uint8Array) => Uint8Array;
14
14
  powPminus2: (x: bigint) => bigint;
15
- randomBytes?: (bytesLength?: number) => Promise<Uint8Array>;
15
+ randomBytes?: (bytesLength?: number) => Uint8Array;
16
16
  };
17
17
  export type MontgomeryECDH = {
18
18
  scalarMult: (scalar: Uint8Array, u: Uint8Array) => Uint8Array;
@@ -20,7 +20,7 @@ export type MontgomeryECDH = {
20
20
  getSharedSecret: (secretKeyA: Uint8Array, publicKeyB: Uint8Array) => Uint8Array;
21
21
  getPublicKey: (secretKey: Uint8Array) => Uint8Array;
22
22
  utils: {
23
- randomSecretKey: (seed?: Uint8Array) => Promise<Uint8Array>;
23
+ randomSecretKey: (seed?: Uint8Array) => Uint8Array;
24
24
  };
25
25
  GuBytes: Uint8Array;
26
26
  lengths: CurveLengths;
@@ -1 +1 @@
1
- {"version":3,"file":"montgomery.d.ts","sourceRoot":"","sources":["../../../src/src/curve/montgomery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAI7D,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,iBAAiB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,UAAU,CAAC;IACrD,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,KAAK,UAAU,CAAC;IAC9D,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC;IACnD,eAAe,EAAE,CACf,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,KACnB,UAAU,CAAC;IAChB,YAAY,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,UAAU,CAAC;IACpD,KAAK,EAAE;QACL,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;KAC7D,CAAC;IACF,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,CACN,IAAI,CAAC,EAAE,UAAU,KACd;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC;CACvD,CAAC;AAUF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,cAAc,CA4I9D"}
1
+ {"version":3,"file":"montgomery.d.ts","sourceRoot":"","sources":["../../../src/src/curve/montgomery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAI7D,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,iBAAiB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,UAAU,CAAC;IACrD,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,KAAK,UAAU,CAAC;IAC9D,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC;IACnD,eAAe,EAAE,CACf,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,KACnB,UAAU,CAAC;IAChB,YAAY,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,UAAU,CAAC;IACpD,KAAK,EAAE;QACL,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK,UAAU,CAAC;KACpD,CAAC;IACF,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,CACN,IAAI,CAAC,EAAE,UAAU,KACd;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC;CACvD,CAAC;AAUF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,cAAc,CAqJ9D"}
@@ -13,7 +13,7 @@
13
13
  * @module
14
14
  */
15
15
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
16
- import { abytes, aInRange, bytesToNumberLE, copyBytes, numberToBytesLE, randomBytesAsync, validateObject, } from "../utils/noble.js";
16
+ import { abytes, aInRange, bytesToNumberLE, copyBytes, numberToBytesLE, randomBytes, validateObject, } from "../utils/noble.js";
17
17
  import { createKeygen } from "./curve.js";
18
18
  import { mod } from "./modular.js";
19
19
  import { N_0, N_1, N_2 } from "../consts.js";
@@ -30,8 +30,8 @@ export function montgomery(curveDef) {
30
30
  const is25519 = type === "x25519";
31
31
  if (!is25519 && type !== "x448")
32
32
  throw new Error("invalid type");
33
- const randomBytes_ = rand || randomBytesAsync;
34
- const montgomeryBits = is25519 ? 255n : 448n;
33
+ const randomBytes_ = rand || randomBytes;
34
+ const montgomeryBits = is25519 ? 255 : 448;
35
35
  const fieldLen = is25519 ? 32 : 56;
36
36
  const Gu = is25519 ? 9n : 5n;
37
37
  // RFC 7748 #5:
@@ -50,17 +50,20 @@ export function montgomery(curveDef) {
50
50
  function encodeU(u) {
51
51
  return numberToBytesLE(modP(u), fieldLen);
52
52
  }
53
+ // Mask for clearing bit 255 (x25519): (1n << 255n) - 1n
54
+ const uMask = is25519 ? (N_1 << 255n) - N_1 : N_0;
53
55
  function decodeU(u) {
54
- const _u = copyBytes(abytes(u, fieldLen, "uCoordinate"));
56
+ abytes(u, fieldLen, "uCoordinate");
57
+ let n = bytesToNumberLE(u);
55
58
  // RFC: When receiving such an array, implementations of X25519
56
59
  // (but not X448) MUST mask the most significant bit in the final byte.
57
60
  if (is25519)
58
- _u[31] &= 127; // 0b0111_1111
61
+ n &= uMask;
59
62
  // RFC: Implementations MUST accept non-canonical values and process them as
60
63
  // if they had been reduced modulo the field prime. The non-canonical
61
64
  // values are 2^255 - 19 through 2^255 - 1 for X25519 and 2^448 - 2^224
62
65
  // - 1 through 2^448 - 1 for X448.
63
- return modP(bytesToNumberLE(_u));
66
+ return modP(n);
64
67
  }
65
68
  function decodeScalar(scalar) {
66
69
  return bytesToNumberLE(adjustScalarBytes(copyBytes(abytes(scalar, fieldLen, "scalar"))));
@@ -74,24 +77,21 @@ export function montgomery(curveDef) {
74
77
  throw new Error("invalid private or public key received");
75
78
  return encodeU(pu);
76
79
  }
80
+ // Pre-decoded base point u-coordinate (avoids redundant decode on every call)
81
+ const GuDecoded = modP(Gu);
77
82
  // Computes public key from private. By doing scalar multiplication of base point.
78
83
  function scalarMultBase(scalar) {
79
- return scalarMult(scalar, GuBytes);
84
+ const pu = montgomeryLadder(GuDecoded, decodeScalar(scalar));
85
+ if (pu === N_0)
86
+ throw new Error("invalid private or public key received");
87
+ return encodeU(pu);
80
88
  }
81
89
  const getPublicKey = scalarMultBase;
82
90
  const getSharedSecret = scalarMult;
83
- // cswap from RFC7748 "example code"
84
- function cswap(swap, x_2, x_3) {
85
- // dummy = mask(swap) AND (x_2 XOR x_3)
86
- // Where mask(swap) is the all-1 or all-0 word of the same length as x_2
87
- // and x_3, computed, e.g., as mask(swap) = 0 - swap.
88
- const dummy = modP(swap * (x_2 - x_3));
89
- x_2 = modP(x_2 - dummy); // x_2 = x_2 XOR dummy
90
- x_3 = modP(x_3 + dummy); // x_3 = x_3 XOR dummy
91
- return { x_2, x_3 };
92
- }
93
91
  /**
94
92
  * Montgomery x-only multiplication ladder.
93
+ * cswap is inlined to avoid per-iteration object allocations.
94
+ * Loop counter uses number instead of bigint to avoid BigInt arithmetic overhead.
95
95
  * @param pointU u coordinate (x) on Montgomery Curve 25519
96
96
  * @param scalar by which the point would be multiplied
97
97
  * @returns new Point on Montgomery curve
@@ -106,11 +106,19 @@ export function montgomery(curveDef) {
106
106
  let x_3 = u;
107
107
  let z_3 = N_1;
108
108
  let swap = N_0;
109
- for (let t = montgomeryBits - 1n; t >= N_0; t--) {
110
- const k_t = (k >> t) & N_1;
109
+ let dummy;
110
+ for (let t = montgomeryBits - 1; t >= 0; t--) {
111
+ const k_t = (k >> BigInt(t)) & N_1;
111
112
  swap ^= k_t;
112
- ({ x_2, x_3 } = cswap(swap, x_2, x_3));
113
- ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));
113
+ // Masked cswap (best-effort constant-time for BigInt).
114
+ // Only dummy needs modP; x/z reductions are deferred to the
115
+ // subsequent multiplications in the ladder body.
116
+ dummy = modP(swap * (x_2 - x_3));
117
+ x_2 -= dummy;
118
+ x_3 += dummy;
119
+ dummy = modP(swap * (z_2 - z_3));
120
+ z_2 -= dummy;
121
+ z_3 += dummy;
114
122
  swap = k_t;
115
123
  const A = x_2 + z_2;
116
124
  const AA = modP(A * A);
@@ -126,10 +134,17 @@ export function montgomery(curveDef) {
126
134
  x_3 = modP(dacb * dacb);
127
135
  z_3 = modP(x_1 * modP(da_cb * da_cb));
128
136
  x_2 = modP(AA * BB);
129
- z_2 = modP(E * (AA + modP(a24 * E)));
137
+ // a24 is small (17-bit for x25519, 16-bit for x448), so a24 * E adds
138
+ // only ~17 bits beyond P — negligible impact on the outer multiplication.
139
+ z_2 = modP(E * (AA + a24 * E));
130
140
  }
131
- ({ x_2, x_3 } = cswap(swap, x_2, x_3));
132
- ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));
141
+ // Final masked cswap
142
+ dummy = modP(swap * (x_2 - x_3));
143
+ x_2 -= dummy;
144
+ x_3 += dummy;
145
+ dummy = modP(swap * (z_2 - z_3));
146
+ z_2 -= dummy;
147
+ z_3 += dummy;
133
148
  const z2 = powPminus2(z_2); // `Fp.pow(x, P - N_2)` is much slower equivalent
134
149
  return modP(x_2 * z2); // Return x_2 * (z_2^(p - 2))
135
150
  }
@@ -138,9 +153,9 @@ export function montgomery(curveDef) {
138
153
  publicKey: fieldLen,
139
154
  seed: fieldLen,
140
155
  };
141
- const randomSecretKey = async (seed) => {
156
+ const randomSecretKey = (seed) => {
142
157
  if (seed === undefined) {
143
- seed = await randomBytes_(fieldLen);
158
+ seed = randomBytes_(fieldLen);
144
159
  }
145
160
  abytes(seed, lengths.seed, "seed");
146
161
  return seed;
@@ -1 +1 @@
1
- {"version":3,"file":"sha3.d.ts","sourceRoot":"","sources":["../../../src/src/hash/sha3.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwBH,OAAO,EACL,KAAK,KAAK,EACV,KAAK,QAAQ,EAEb,KAAK,IAAI,EAET,KAAK,OAAO,EACb,MAAM,WAAW,CAAC;AA4CnB,kFAAkF;AAClF,wBAAgB,OAAO,CACrB,CAAC,EAAE,WAAW,EACd,MAAM,GAAE,MAAW,EACnB,CAAC,CAAC,EAAE,WAAW,GACd,IAAI,CAySN;AAED,8BAA8B;AAC9B,qBAAa,MAAO,YAAW,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;IAC5B,SAAS,CAAC,GAAG,SAAK;IAClB,SAAS,CAAC,MAAM,SAAK;IACrB,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC;IAC/B,SAAS,CAAC,SAAS,UAAS;IAC5B,OAAO,CAAC,EAAE,CAAuB;IAE1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,SAAS,UAAS;IAC5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAIvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,UAAQ,EACjB,MAAM,GAAE,MAAW;IAiBrB,KAAK,IAAI,MAAM;IAGf,0DAA0D;IAC1D,KAAK,IAAI,IAAI;IAOb,SAAS,CAAC,MAAM,IAAI,IAAI;IAOxB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAK9B,qFAAqF;IACrF,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAUpC,SAAS,CAAC,MAAM,IAAI,IAAI;IAUxB,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAKhD,yFAAyF;IACzF,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAa5C,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAOpC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAI9B,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAOvC,MAAM,IAAI,UAAU;IAGpB,OAAO,IAAI,IAAI;IAIf,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;CAehC;AAiBD,yDAAyD;AACzD,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,UAAU,EAAE,KAAgD,CAAC;AAC1E,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAAgD,CAAC;AAC1E,gCAAgC;AAChC,eAAO,MAAM,UAAU,EAAE,KAAgD,CAAC;AAC1E,gCAAgC;AAChC,eAAO,MAAM,UAAU,EAAE,KAA+C,CAAC;AAEzE,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAmB3C,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAEO,CAAC;AACzD,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAEO,CAAC"}
1
+ {"version":3,"file":"sha3.d.ts","sourceRoot":"","sources":["../../../src/src/hash/sha3.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwBH,OAAO,EACL,KAAK,KAAK,EACV,KAAK,QAAQ,EAEb,KAAK,IAAI,EAET,KAAK,OAAO,EACb,MAAM,WAAW,CAAC;AA4CnB,kFAAkF;AAClF,wBAAgB,OAAO,CACrB,CAAC,EAAE,WAAW,EACd,MAAM,GAAE,MAAW,EACnB,CAAC,CAAC,EAAE,WAAW,GACd,IAAI,CAySN;AAED,8BAA8B;AAC9B,qBAAa,MAAO,YAAW,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;IAC5B,SAAS,CAAC,GAAG,SAAK;IAClB,SAAS,CAAC,MAAM,SAAK;IACrB,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC;IAC/B,SAAS,CAAC,SAAS,UAAS;IAC5B,OAAO,CAAC,EAAE,CAAuB;IAE1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,SAAS,UAAS;IAC5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAIvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,UAAQ,EACjB,MAAM,GAAE,MAAW;IAiBrB,KAAK,IAAI,MAAM;IAGf,0DAA0D;IAC1D,KAAK,IAAI,IAAI;IAOb,SAAS,CAAC,MAAM,IAAI,IAAI;IAOxB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAK9B,qFAAqF;IACrF,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAUpC,SAAS,CAAC,MAAM,IAAI,IAAI;IAUxB,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAKhD,yFAAyF;IACzF,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAa5C,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAOpC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAI9B,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAOvC,MAAM,IAAI,UAAU;IAGpB,OAAO,IAAI,IAAI;IAIf,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;CAehC;AASD,yDAAyD;AACzD,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,UAAU,EAAE,KAAgD,CAAC;AAC1E,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAAgD,CAAC;AAC1E,gCAAgC;AAChC,eAAO,MAAM,UAAU,EAAE,KAAgD,CAAC;AAC1E,gCAAgC;AAChC,eAAO,MAAM,UAAU,EAAE,KAA+C,CAAC;AAEzE,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAmB3C,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAEO,CAAC;AACzD,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAEO,CAAC"}