@sempdev/semp 0.4.3

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 (559) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -0
  3. package/dist/brief/address.d.ts +77 -0
  4. package/dist/brief/address.d.ts.map +1 -0
  5. package/dist/brief/address.js +217 -0
  6. package/dist/brief/address.js.map +1 -0
  7. package/dist/brief/brief.d.ts +75 -0
  8. package/dist/brief/brief.d.ts.map +1 -0
  9. package/dist/brief/brief.js +56 -0
  10. package/dist/brief/brief.js.map +1 -0
  11. package/dist/brief/index.d.ts +11 -0
  12. package/dist/brief/index.d.ts.map +1 -0
  13. package/dist/brief/index.js +11 -0
  14. package/dist/brief/index.js.map +1 -0
  15. package/dist/canonical/index.d.ts +8 -0
  16. package/dist/canonical/index.d.ts.map +1 -0
  17. package/dist/canonical/index.js +8 -0
  18. package/dist/canonical/index.js.map +1 -0
  19. package/dist/canonical/marshal.d.ts +35 -0
  20. package/dist/canonical/marshal.d.ts.map +1 -0
  21. package/dist/canonical/marshal.js +107 -0
  22. package/dist/canonical/marshal.js.map +1 -0
  23. package/dist/clockskew/index.d.ts +52 -0
  24. package/dist/clockskew/index.d.ts.map +1 -0
  25. package/dist/clockskew/index.js +62 -0
  26. package/dist/clockskew/index.js.map +1 -0
  27. package/dist/closure/closure.d.ts +106 -0
  28. package/dist/closure/closure.d.ts.map +1 -0
  29. package/dist/closure/closure.js +152 -0
  30. package/dist/closure/closure.js.map +1 -0
  31. package/dist/closure/driver.d.ts +103 -0
  32. package/dist/closure/driver.d.ts.map +1 -0
  33. package/dist/closure/driver.js +126 -0
  34. package/dist/closure/driver.js.map +1 -0
  35. package/dist/closure/index.d.ts +13 -0
  36. package/dist/closure/index.d.ts.map +1 -0
  37. package/dist/closure/index.js +13 -0
  38. package/dist/closure/index.js.map +1 -0
  39. package/dist/closure/store.d.ts +80 -0
  40. package/dist/closure/store.d.ts.map +1 -0
  41. package/dist/closure/store.js +89 -0
  42. package/dist/closure/store.js.map +1 -0
  43. package/dist/crypto/aead.d.ts +29 -0
  44. package/dist/crypto/aead.d.ts.map +1 -0
  45. package/dist/crypto/aead.js +48 -0
  46. package/dist/crypto/aead.js.map +1 -0
  47. package/dist/crypto/argon2.d.ts +20 -0
  48. package/dist/crypto/argon2.d.ts.map +1 -0
  49. package/dist/crypto/argon2.js +28 -0
  50. package/dist/crypto/argon2.js.map +1 -0
  51. package/dist/crypto/index.d.ts +14 -0
  52. package/dist/crypto/index.d.ts.map +1 -0
  53. package/dist/crypto/index.js +14 -0
  54. package/dist/crypto/index.js.map +1 -0
  55. package/dist/crypto/kdf.d.ts +96 -0
  56. package/dist/crypto/kdf.d.ts.map +1 -0
  57. package/dist/crypto/kdf.js +122 -0
  58. package/dist/crypto/kdf.js.map +1 -0
  59. package/dist/crypto/kem.d.ts +85 -0
  60. package/dist/crypto/kem.d.ts.map +1 -0
  61. package/dist/crypto/kem.js +130 -0
  62. package/dist/crypto/kem.js.map +1 -0
  63. package/dist/crypto/mac.d.ts +19 -0
  64. package/dist/crypto/mac.d.ts.map +1 -0
  65. package/dist/crypto/mac.js +32 -0
  66. package/dist/crypto/mac.js.map +1 -0
  67. package/dist/delivery/ack.d.ts +125 -0
  68. package/dist/delivery/ack.d.ts.map +1 -0
  69. package/dist/delivery/ack.js +141 -0
  70. package/dist/delivery/ack.js.map +1 -0
  71. package/dist/delivery/blocklist.d.ts +87 -0
  72. package/dist/delivery/blocklist.d.ts.map +1 -0
  73. package/dist/delivery/blocklist.js +107 -0
  74. package/dist/delivery/blocklist.js.map +1 -0
  75. package/dist/delivery/cancel.d.ts +60 -0
  76. package/dist/delivery/cancel.d.ts.map +1 -0
  77. package/dist/delivery/cancel.js +43 -0
  78. package/dist/delivery/cancel.js.map +1 -0
  79. package/dist/delivery/disposition.d.ts +106 -0
  80. package/dist/delivery/disposition.d.ts.map +1 -0
  81. package/dist/delivery/disposition.js +105 -0
  82. package/dist/delivery/disposition.js.map +1 -0
  83. package/dist/delivery/fetch.d.ts +59 -0
  84. package/dist/delivery/fetch.d.ts.map +1 -0
  85. package/dist/delivery/fetch.js +47 -0
  86. package/dist/delivery/fetch.js.map +1 -0
  87. package/dist/delivery/forwarder.d.ts +106 -0
  88. package/dist/delivery/forwarder.d.ts.map +1 -0
  89. package/dist/delivery/forwarder.js +251 -0
  90. package/dist/delivery/forwarder.js.map +1 -0
  91. package/dist/delivery/inbox.d.ts +42 -0
  92. package/dist/delivery/inbox.d.ts.map +1 -0
  93. package/dist/delivery/inbox.js +68 -0
  94. package/dist/delivery/inbox.js.map +1 -0
  95. package/dist/delivery/index.d.ts +31 -0
  96. package/dist/delivery/index.d.ts.map +1 -0
  97. package/dist/delivery/index.js +31 -0
  98. package/dist/delivery/index.js.map +1 -0
  99. package/dist/delivery/internalroute.d.ts +50 -0
  100. package/dist/delivery/internalroute.d.ts.map +1 -0
  101. package/dist/delivery/internalroute.js +23 -0
  102. package/dist/delivery/internalroute.js.map +1 -0
  103. package/dist/delivery/pipeline.d.ts +153 -0
  104. package/dist/delivery/pipeline.d.ts.map +1 -0
  105. package/dist/delivery/pipeline.js +356 -0
  106. package/dist/delivery/pipeline.js.map +1 -0
  107. package/dist/delivery/policy_state.d.ts +105 -0
  108. package/dist/delivery/policy_state.d.ts.map +1 -0
  109. package/dist/delivery/policy_state.js +293 -0
  110. package/dist/delivery/policy_state.js.map +1 -0
  111. package/dist/delivery/queue.d.ts +47 -0
  112. package/dist/delivery/queue.d.ts.map +1 -0
  113. package/dist/delivery/queue.js +33 -0
  114. package/dist/delivery/queue.js.map +1 -0
  115. package/dist/delivery/receipt.d.ts +137 -0
  116. package/dist/delivery/receipt.d.ts.map +1 -0
  117. package/dist/delivery/receipt.js +181 -0
  118. package/dist/delivery/receipt.js.map +1 -0
  119. package/dist/delivery/receipt_store.d.ts +81 -0
  120. package/dist/delivery/receipt_store.d.ts.map +1 -0
  121. package/dist/delivery/receipt_store.js +74 -0
  122. package/dist/delivery/receipt_store.js.map +1 -0
  123. package/dist/delivery/retry.d.ts +78 -0
  124. package/dist/delivery/retry.d.ts.map +1 -0
  125. package/dist/delivery/retry.js +132 -0
  126. package/dist/delivery/retry.js.map +1 -0
  127. package/dist/delivery/scheduler.d.ts +156 -0
  128. package/dist/delivery/scheduler.d.ts.map +1 -0
  129. package/dist/delivery/scheduler.js +349 -0
  130. package/dist/delivery/scheduler.js.map +1 -0
  131. package/dist/delivery/stage_partition.d.ts +87 -0
  132. package/dist/delivery/stage_partition.d.ts.map +1 -0
  133. package/dist/delivery/stage_partition.js +122 -0
  134. package/dist/delivery/stage_partition.js.map +1 -0
  135. package/dist/delivery/staged_runner.d.ts +100 -0
  136. package/dist/delivery/staged_runner.d.ts.map +1 -0
  137. package/dist/delivery/staged_runner.js +277 -0
  138. package/dist/delivery/staged_runner.js.map +1 -0
  139. package/dist/delivery/submission.d.ts +72 -0
  140. package/dist/delivery/submission.d.ts.map +1 -0
  141. package/dist/delivery/submission.js +58 -0
  142. package/dist/delivery/submission.js.map +1 -0
  143. package/dist/delivery/sync.d.ts +68 -0
  144. package/dist/delivery/sync.d.ts.map +1 -0
  145. package/dist/delivery/sync.js +99 -0
  146. package/dist/delivery/sync.js.map +1 -0
  147. package/dist/delivery/user_policy.d.ts +74 -0
  148. package/dist/delivery/user_policy.d.ts.map +1 -0
  149. package/dist/delivery/user_policy.js +140 -0
  150. package/dist/delivery/user_policy.js.map +1 -0
  151. package/dist/discovery/cache.d.ts +37 -0
  152. package/dist/discovery/cache.d.ts.map +1 -0
  153. package/dist/discovery/cache.js +45 -0
  154. package/dist/discovery/cache.js.map +1 -0
  155. package/dist/discovery/configuration.d.ts +97 -0
  156. package/dist/discovery/configuration.d.ts.map +1 -0
  157. package/dist/discovery/configuration.js +146 -0
  158. package/dist/discovery/configuration.js.map +1 -0
  159. package/dist/discovery/dns.d.ts +56 -0
  160. package/dist/discovery/dns.d.ts.map +1 -0
  161. package/dist/discovery/dns.js +120 -0
  162. package/dist/discovery/dns.js.map +1 -0
  163. package/dist/discovery/domain_keys.d.ts +62 -0
  164. package/dist/discovery/domain_keys.d.ts.map +1 -0
  165. package/dist/discovery/domain_keys.js +89 -0
  166. package/dist/discovery/domain_keys.js.map +1 -0
  167. package/dist/discovery/index.d.ts +19 -0
  168. package/dist/discovery/index.d.ts.map +1 -0
  169. package/dist/discovery/index.js +19 -0
  170. package/dist/discovery/index.js.map +1 -0
  171. package/dist/discovery/lookup.d.ts +72 -0
  172. package/dist/discovery/lookup.d.ts.map +1 -0
  173. package/dist/discovery/lookup.js +121 -0
  174. package/dist/discovery/lookup.js.map +1 -0
  175. package/dist/discovery/onion.d.ts +34 -0
  176. package/dist/discovery/onion.d.ts.map +1 -0
  177. package/dist/discovery/onion.js +61 -0
  178. package/dist/discovery/onion.js.map +1 -0
  179. package/dist/discovery/partition.d.ts +96 -0
  180. package/dist/discovery/partition.d.ts.map +1 -0
  181. package/dist/discovery/partition.js +247 -0
  182. package/dist/discovery/partition.js.map +1 -0
  183. package/dist/discovery/resolver.d.ts +113 -0
  184. package/dist/discovery/resolver.d.ts.map +1 -0
  185. package/dist/discovery/resolver.js +176 -0
  186. package/dist/discovery/resolver.js.map +1 -0
  187. package/dist/discovery/txt.d.ts +39 -0
  188. package/dist/discovery/txt.d.ts.map +1 -0
  189. package/dist/discovery/txt.js +71 -0
  190. package/dist/discovery/txt.js.map +1 -0
  191. package/dist/enclosure/forwarding.d.ts +128 -0
  192. package/dist/enclosure/forwarding.d.ts.map +1 -0
  193. package/dist/enclosure/forwarding.js +119 -0
  194. package/dist/enclosure/forwarding.js.map +1 -0
  195. package/dist/enclosure/index.d.ts +11 -0
  196. package/dist/enclosure/index.d.ts.map +1 -0
  197. package/dist/enclosure/index.js +11 -0
  198. package/dist/enclosure/index.js.map +1 -0
  199. package/dist/envelope/buckets.d.ts +38 -0
  200. package/dist/envelope/buckets.d.ts.map +1 -0
  201. package/dist/envelope/buckets.js +73 -0
  202. package/dist/envelope/buckets.js.map +1 -0
  203. package/dist/envelope/canonical.d.ts +28 -0
  204. package/dist/envelope/canonical.d.ts.map +1 -0
  205. package/dist/envelope/canonical.js +54 -0
  206. package/dist/envelope/canonical.js.map +1 -0
  207. package/dist/envelope/compose.d.ts +171 -0
  208. package/dist/envelope/compose.d.ts.map +1 -0
  209. package/dist/envelope/compose.js +237 -0
  210. package/dist/envelope/compose.js.map +1 -0
  211. package/dist/envelope/encode.d.ts +41 -0
  212. package/dist/envelope/encode.d.ts.map +1 -0
  213. package/dist/envelope/encode.js +69 -0
  214. package/dist/envelope/encode.js.map +1 -0
  215. package/dist/envelope/index.d.ts +20 -0
  216. package/dist/envelope/index.d.ts.map +1 -0
  217. package/dist/envelope/index.js +20 -0
  218. package/dist/envelope/index.js.map +1 -0
  219. package/dist/envelope/open_any.d.ts +48 -0
  220. package/dist/envelope/open_any.d.ts.map +1 -0
  221. package/dist/envelope/open_any.js +81 -0
  222. package/dist/envelope/open_any.js.map +1 -0
  223. package/dist/envelope/open_verified.d.ts +59 -0
  224. package/dist/envelope/open_verified.d.ts.map +1 -0
  225. package/dist/envelope/open_verified.js +67 -0
  226. package/dist/envelope/open_verified.js.map +1 -0
  227. package/dist/envelope/padding.d.ts +55 -0
  228. package/dist/envelope/padding.d.ts.map +1 -0
  229. package/dist/envelope/padding.js +162 -0
  230. package/dist/envelope/padding.js.map +1 -0
  231. package/dist/envelope/rejection.d.ts +22 -0
  232. package/dist/envelope/rejection.d.ts.map +1 -0
  233. package/dist/envelope/rejection.js +30 -0
  234. package/dist/envelope/rejection.js.map +1 -0
  235. package/dist/envelope/sendtime.d.ts +49 -0
  236. package/dist/envelope/sendtime.d.ts.map +1 -0
  237. package/dist/envelope/sendtime.js +87 -0
  238. package/dist/envelope/sendtime.js.map +1 -0
  239. package/dist/envelope/verify.d.ts +29 -0
  240. package/dist/envelope/verify.d.ts.map +1 -0
  241. package/dist/envelope/verify.js +90 -0
  242. package/dist/envelope/verify.js.map +1 -0
  243. package/dist/extensions/index.d.ts +7 -0
  244. package/dist/extensions/index.d.ts.map +1 -0
  245. package/dist/extensions/index.js +7 -0
  246. package/dist/extensions/index.js.map +1 -0
  247. package/dist/extensions/limits.d.ts +101 -0
  248. package/dist/extensions/limits.d.ts.map +1 -0
  249. package/dist/extensions/limits.js +175 -0
  250. package/dist/extensions/limits.js.map +1 -0
  251. package/dist/handshake/abort.d.ts +49 -0
  252. package/dist/handshake/abort.d.ts.map +1 -0
  253. package/dist/handshake/abort.js +82 -0
  254. package/dist/handshake/abort.js.map +1 -0
  255. package/dist/handshake/capabilities.d.ts +46 -0
  256. package/dist/handshake/capabilities.d.ts.map +1 -0
  257. package/dist/handshake/capabilities.js +114 -0
  258. package/dist/handshake/capabilities.js.map +1 -0
  259. package/dist/handshake/client_state.d.ts +186 -0
  260. package/dist/handshake/client_state.d.ts.map +1 -0
  261. package/dist/handshake/client_state.js +520 -0
  262. package/dist/handshake/client_state.js.map +1 -0
  263. package/dist/handshake/confirm.d.ts +21 -0
  264. package/dist/handshake/confirm.d.ts.map +1 -0
  265. package/dist/handshake/confirm.js +27 -0
  266. package/dist/handshake/confirm.js.map +1 -0
  267. package/dist/handshake/driver.d.ts +126 -0
  268. package/dist/handshake/driver.d.ts.map +1 -0
  269. package/dist/handshake/driver.js +251 -0
  270. package/dist/handshake/driver.js.map +1 -0
  271. package/dist/handshake/federation.d.ts +365 -0
  272. package/dist/handshake/federation.d.ts.map +1 -0
  273. package/dist/handshake/federation.js +664 -0
  274. package/dist/handshake/federation.js.map +1 -0
  275. package/dist/handshake/first_contact.d.ts +57 -0
  276. package/dist/handshake/first_contact.d.ts.map +1 -0
  277. package/dist/handshake/first_contact.js +124 -0
  278. package/dist/handshake/first_contact.js.map +1 -0
  279. package/dist/handshake/identity.d.ts +101 -0
  280. package/dist/handshake/identity.d.ts.map +1 -0
  281. package/dist/handshake/identity.js +117 -0
  282. package/dist/handshake/identity.js.map +1 -0
  283. package/dist/handshake/index.d.ts +21 -0
  284. package/dist/handshake/index.d.ts.map +1 -0
  285. package/dist/handshake/index.js +21 -0
  286. package/dist/handshake/index.js.map +1 -0
  287. package/dist/handshake/messages.d.ts +176 -0
  288. package/dist/handshake/messages.d.ts.map +1 -0
  289. package/dist/handshake/messages.js +125 -0
  290. package/dist/handshake/messages.js.map +1 -0
  291. package/dist/handshake/pow.d.ts +53 -0
  292. package/dist/handshake/pow.d.ts.map +1 -0
  293. package/dist/handshake/pow.js +142 -0
  294. package/dist/handshake/pow.js.map +1 -0
  295. package/dist/handshake/resume_driver.d.ts +56 -0
  296. package/dist/handshake/resume_driver.d.ts.map +1 -0
  297. package/dist/handshake/resume_driver.js +75 -0
  298. package/dist/handshake/resume_driver.js.map +1 -0
  299. package/dist/handshake/server.d.ts +112 -0
  300. package/dist/handshake/server.d.ts.map +1 -0
  301. package/dist/handshake/server.js +247 -0
  302. package/dist/handshake/server.js.map +1 -0
  303. package/dist/handshake/server_state.d.ts +102 -0
  304. package/dist/handshake/server_state.d.ts.map +1 -0
  305. package/dist/handshake/server_state.js +278 -0
  306. package/dist/handshake/server_state.js.map +1 -0
  307. package/dist/index.d.ts +33 -0
  308. package/dist/index.d.ts.map +1 -0
  309. package/dist/index.js +33 -0
  310. package/dist/index.js.map +1 -0
  311. package/dist/keys/compromise.d.ts +118 -0
  312. package/dist/keys/compromise.d.ts.map +1 -0
  313. package/dist/keys/compromise.js +218 -0
  314. package/dist/keys/compromise.js.map +1 -0
  315. package/dist/keys/device_certificate.d.ts +166 -0
  316. package/dist/keys/device_certificate.d.ts.map +1 -0
  317. package/dist/keys/device_certificate.js +328 -0
  318. package/dist/keys/device_certificate.js.map +1 -0
  319. package/dist/keys/device_records.d.ts +175 -0
  320. package/dist/keys/device_records.d.ts.map +1 -0
  321. package/dist/keys/device_records.js +418 -0
  322. package/dist/keys/device_records.js.map +1 -0
  323. package/dist/keys/directory_cache.d.ts +64 -0
  324. package/dist/keys/directory_cache.d.ts.map +1 -0
  325. package/dist/keys/directory_cache.js +98 -0
  326. package/dist/keys/directory_cache.js.map +1 -0
  327. package/dist/keys/directory_state.d.ts +79 -0
  328. package/dist/keys/directory_state.d.ts.map +1 -0
  329. package/dist/keys/directory_state.js +155 -0
  330. package/dist/keys/directory_state.js.map +1 -0
  331. package/dist/keys/index.d.ts +18 -0
  332. package/dist/keys/index.d.ts.map +1 -0
  333. package/dist/keys/index.js +18 -0
  334. package/dist/keys/index.js.map +1 -0
  335. package/dist/keys/key_revocation.d.ts +61 -0
  336. package/dist/keys/key_revocation.d.ts.map +1 -0
  337. package/dist/keys/key_revocation.js +88 -0
  338. package/dist/keys/key_revocation.js.map +1 -0
  339. package/dist/keys/request.d.ts +124 -0
  340. package/dist/keys/request.d.ts.map +1 -0
  341. package/dist/keys/request.js +130 -0
  342. package/dist/keys/request.js.map +1 -0
  343. package/dist/keys/sign.d.ts +49 -0
  344. package/dist/keys/sign.d.ts.map +1 -0
  345. package/dist/keys/sign.js +80 -0
  346. package/dist/keys/sign.js.map +1 -0
  347. package/dist/keys/signed.d.ts +80 -0
  348. package/dist/keys/signed.d.ts.map +1 -0
  349. package/dist/keys/signed.js +138 -0
  350. package/dist/keys/signed.js.map +1 -0
  351. package/dist/keys/store.d.ts +138 -0
  352. package/dist/keys/store.d.ts.map +1 -0
  353. package/dist/keys/store.js +107 -0
  354. package/dist/keys/store.js.map +1 -0
  355. package/dist/largeattachment/crypto.d.ts +47 -0
  356. package/dist/largeattachment/crypto.d.ts.map +1 -0
  357. package/dist/largeattachment/crypto.js +235 -0
  358. package/dist/largeattachment/crypto.js.map +1 -0
  359. package/dist/largeattachment/enclosure.d.ts +48 -0
  360. package/dist/largeattachment/enclosure.d.ts.map +1 -0
  361. package/dist/largeattachment/enclosure.js +102 -0
  362. package/dist/largeattachment/enclosure.js.map +1 -0
  363. package/dist/largeattachment/index.d.ts +15 -0
  364. package/dist/largeattachment/index.d.ts.map +1 -0
  365. package/dist/largeattachment/index.js +15 -0
  366. package/dist/largeattachment/index.js.map +1 -0
  367. package/dist/largeattachment/store.d.ts +36 -0
  368. package/dist/largeattachment/store.d.ts.map +1 -0
  369. package/dist/largeattachment/store.js +37 -0
  370. package/dist/largeattachment/store.js.map +1 -0
  371. package/dist/largeattachment/types.d.ts +56 -0
  372. package/dist/largeattachment/types.d.ts.map +1 -0
  373. package/dist/largeattachment/types.js +31 -0
  374. package/dist/largeattachment/types.js.map +1 -0
  375. package/dist/largeattachment/upload.d.ts +62 -0
  376. package/dist/largeattachment/upload.d.ts.map +1 -0
  377. package/dist/largeattachment/upload.js +166 -0
  378. package/dist/largeattachment/upload.js.map +1 -0
  379. package/dist/migration/index.d.ts +17 -0
  380. package/dist/migration/index.d.ts.map +1 -0
  381. package/dist/migration/index.js +17 -0
  382. package/dist/migration/index.js.map +1 -0
  383. package/dist/migration/lockout.d.ts +48 -0
  384. package/dist/migration/lockout.d.ts.map +1 -0
  385. package/dist/migration/lockout.js +57 -0
  386. package/dist/migration/lockout.js.map +1 -0
  387. package/dist/migration/migration.d.ts +48 -0
  388. package/dist/migration/migration.d.ts.map +1 -0
  389. package/dist/migration/migration.js +58 -0
  390. package/dist/migration/migration.js.map +1 -0
  391. package/dist/migration/notice.d.ts +33 -0
  392. package/dist/migration/notice.d.ts.map +1 -0
  393. package/dist/migration/notice.js +85 -0
  394. package/dist/migration/notice.js.map +1 -0
  395. package/dist/migration/orchestrate.d.ts +109 -0
  396. package/dist/migration/orchestrate.d.ts.map +1 -0
  397. package/dist/migration/orchestrate.js +212 -0
  398. package/dist/migration/orchestrate.js.map +1 -0
  399. package/dist/migration/publication_store.d.ts +34 -0
  400. package/dist/migration/publication_store.d.ts.map +1 -0
  401. package/dist/migration/publication_store.js +44 -0
  402. package/dist/migration/publication_store.js.map +1 -0
  403. package/dist/migration/sign.d.ts +65 -0
  404. package/dist/migration/sign.d.ts.map +1 -0
  405. package/dist/migration/sign.js +331 -0
  406. package/dist/migration/sign.js.map +1 -0
  407. package/dist/migration/types.d.ts +92 -0
  408. package/dist/migration/types.d.ts.map +1 -0
  409. package/dist/migration/types.js +26 -0
  410. package/dist/migration/types.js.map +1 -0
  411. package/dist/reasoncodes.d.ts +42 -0
  412. package/dist/reasoncodes.d.ts.map +1 -0
  413. package/dist/reasoncodes.js +80 -0
  414. package/dist/reasoncodes.js.map +1 -0
  415. package/dist/recovery/bundle.d.ts +34 -0
  416. package/dist/recovery/bundle.d.ts.map +1 -0
  417. package/dist/recovery/bundle.js +144 -0
  418. package/dist/recovery/bundle.js.map +1 -0
  419. package/dist/recovery/bundle_crypto.d.ts +60 -0
  420. package/dist/recovery/bundle_crypto.d.ts.map +1 -0
  421. package/dist/recovery/bundle_crypto.js +179 -0
  422. package/dist/recovery/bundle_crypto.js.map +1 -0
  423. package/dist/recovery/bundle_store.d.ts +57 -0
  424. package/dist/recovery/bundle_store.d.ts.map +1 -0
  425. package/dist/recovery/bundle_store.js +104 -0
  426. package/dist/recovery/bundle_store.js.map +1 -0
  427. package/dist/recovery/index.d.ts +19 -0
  428. package/dist/recovery/index.d.ts.map +1 -0
  429. package/dist/recovery/index.js +19 -0
  430. package/dist/recovery/index.js.map +1 -0
  431. package/dist/recovery/manifest_crosscheck.d.ts +59 -0
  432. package/dist/recovery/manifest_crosscheck.d.ts.map +1 -0
  433. package/dist/recovery/manifest_crosscheck.js +59 -0
  434. package/dist/recovery/manifest_crosscheck.js.map +1 -0
  435. package/dist/recovery/shamir.d.ts +51 -0
  436. package/dist/recovery/shamir.d.ts.map +1 -0
  437. package/dist/recovery/shamir.js +181 -0
  438. package/dist/recovery/shamir.js.map +1 -0
  439. package/dist/recovery/sign.d.ts +61 -0
  440. package/dist/recovery/sign.d.ts.map +1 -0
  441. package/dist/recovery/sign.js +359 -0
  442. package/dist/recovery/sign.js.map +1 -0
  443. package/dist/recovery/types.d.ts +180 -0
  444. package/dist/recovery/types.d.ts.map +1 -0
  445. package/dist/recovery/types.js +31 -0
  446. package/dist/recovery/types.js.map +1 -0
  447. package/dist/reputation/abuse_report.d.ts +62 -0
  448. package/dist/reputation/abuse_report.d.ts.map +1 -0
  449. package/dist/reputation/abuse_report.js +111 -0
  450. package/dist/reputation/abuse_report.js.map +1 -0
  451. package/dist/reputation/bucketize.d.ts +31 -0
  452. package/dist/reputation/bucketize.d.ts.map +1 -0
  453. package/dist/reputation/bucketize.js +77 -0
  454. package/dist/reputation/bucketize.js.map +1 -0
  455. package/dist/reputation/gossip.d.ts +24 -0
  456. package/dist/reputation/gossip.d.ts.map +1 -0
  457. package/dist/reputation/gossip.js +64 -0
  458. package/dist/reputation/gossip.js.map +1 -0
  459. package/dist/reputation/gossip_fetch.d.ts +64 -0
  460. package/dist/reputation/gossip_fetch.d.ts.map +1 -0
  461. package/dist/reputation/gossip_fetch.js +114 -0
  462. package/dist/reputation/gossip_fetch.js.map +1 -0
  463. package/dist/reputation/index.d.ts +20 -0
  464. package/dist/reputation/index.d.ts.map +1 -0
  465. package/dist/reputation/index.js +20 -0
  466. package/dist/reputation/index.js.map +1 -0
  467. package/dist/reputation/observation_store.d.ts +67 -0
  468. package/dist/reputation/observation_store.d.ts.map +1 -0
  469. package/dist/reputation/observation_store.js +171 -0
  470. package/dist/reputation/observation_store.js.map +1 -0
  471. package/dist/reputation/pow.d.ts +91 -0
  472. package/dist/reputation/pow.d.ts.map +1 -0
  473. package/dist/reputation/pow.js +209 -0
  474. package/dist/reputation/pow.js.map +1 -0
  475. package/dist/reputation/sign.d.ts +40 -0
  476. package/dist/reputation/sign.d.ts.map +1 -0
  477. package/dist/reputation/sign.js +202 -0
  478. package/dist/reputation/sign.js.map +1 -0
  479. package/dist/reputation/types.d.ts +133 -0
  480. package/dist/reputation/types.d.ts.map +1 -0
  481. package/dist/reputation/types.js +33 -0
  482. package/dist/reputation/types.js.map +1 -0
  483. package/dist/reputation/whois.d.ts +25 -0
  484. package/dist/reputation/whois.d.ts.map +1 -0
  485. package/dist/reputation/whois.js +20 -0
  486. package/dist/reputation/whois.js.map +1 -0
  487. package/dist/seal/index.d.ts +8 -0
  488. package/dist/seal/index.d.ts.map +1 -0
  489. package/dist/seal/index.js +8 -0
  490. package/dist/seal/index.js.map +1 -0
  491. package/dist/seal/wrap.d.ts +74 -0
  492. package/dist/seal/wrap.d.ts.map +1 -0
  493. package/dist/seal/wrap.js +213 -0
  494. package/dist/seal/wrap.js.map +1 -0
  495. package/dist/session/dispatcher.d.ts +65 -0
  496. package/dist/session/dispatcher.d.ts.map +1 -0
  497. package/dist/session/dispatcher.js +96 -0
  498. package/dist/session/dispatcher.js.map +1 -0
  499. package/dist/session/index.d.ts +15 -0
  500. package/dist/session/index.d.ts.map +1 -0
  501. package/dist/session/index.js +15 -0
  502. package/dist/session/index.js.map +1 -0
  503. package/dist/session/rekey.d.ts +108 -0
  504. package/dist/session/rekey.d.ts.map +1 -0
  505. package/dist/session/rekey.js +207 -0
  506. package/dist/session/rekey.js.map +1 -0
  507. package/dist/session/rekey_seal.d.ts +66 -0
  508. package/dist/session/rekey_seal.d.ts.map +1 -0
  509. package/dist/session/rekey_seal.js +153 -0
  510. package/dist/session/rekey_seal.js.map +1 -0
  511. package/dist/session/resume.d.ts +125 -0
  512. package/dist/session/resume.d.ts.map +1 -0
  513. package/dist/session/resume.js +263 -0
  514. package/dist/session/resume.js.map +1 -0
  515. package/dist/session/session.d.ts +136 -0
  516. package/dist/session/session.d.ts.map +1 -0
  517. package/dist/session/session.js +188 -0
  518. package/dist/session/session.js.map +1 -0
  519. package/dist/transparency/index.d.ts +13 -0
  520. package/dist/transparency/index.d.ts.map +1 -0
  521. package/dist/transparency/index.js +13 -0
  522. package/dist/transparency/index.js.map +1 -0
  523. package/dist/transparency/log.d.ts +61 -0
  524. package/dist/transparency/log.d.ts.map +1 -0
  525. package/dist/transparency/log.js +133 -0
  526. package/dist/transparency/log.js.map +1 -0
  527. package/dist/transparency/merkle.d.ts +59 -0
  528. package/dist/transparency/merkle.d.ts.map +1 -0
  529. package/dist/transparency/merkle.js +314 -0
  530. package/dist/transparency/merkle.js.map +1 -0
  531. package/dist/transparency/sign.d.ts +48 -0
  532. package/dist/transparency/sign.d.ts.map +1 -0
  533. package/dist/transparency/sign.js +140 -0
  534. package/dist/transparency/sign.js.map +1 -0
  535. package/dist/transparency/types.d.ts +97 -0
  536. package/dist/transparency/types.d.ts.map +1 -0
  537. package/dist/transparency/types.js +25 -0
  538. package/dist/transparency/types.js.map +1 -0
  539. package/dist/transport/h2.d.ts +163 -0
  540. package/dist/transport/h2.d.ts.map +1 -0
  541. package/dist/transport/h2.js +397 -0
  542. package/dist/transport/h2.js.map +1 -0
  543. package/dist/transport/index.d.ts +15 -0
  544. package/dist/transport/index.d.ts.map +1 -0
  545. package/dist/transport/index.js +15 -0
  546. package/dist/transport/index.js.map +1 -0
  547. package/dist/transport/memory.d.ts +21 -0
  548. package/dist/transport/memory.d.ts.map +1 -0
  549. package/dist/transport/memory.js +112 -0
  550. package/dist/transport/memory.js.map +1 -0
  551. package/dist/transport/transport.d.ts +54 -0
  552. package/dist/transport/transport.d.ts.map +1 -0
  553. package/dist/transport/transport.js +20 -0
  554. package/dist/transport/transport.js.map +1 -0
  555. package/dist/transport/ws.d.ts +40 -0
  556. package/dist/transport/ws.d.ts.map +1 -0
  557. package/dist/transport/ws.js +204 -0
  558. package/dist/transport/ws.js.map +1 -0
  559. package/package.json +147 -0
@@ -0,0 +1,122 @@
1
+ /**
2
+ * HKDF-SHA-512 derivation per HANDSHAKE.md §2.4 and SESSION.md §2.1.
3
+ *
4
+ * SEMP uses HKDF-SHA-512 for both currently defined algorithm suites.
5
+ * The five per-key info labels (and the resumption label) are bound
6
+ * contexts that prevent cross-context key confusion if an
7
+ * implementation accidentally reuses a PRK across derivations.
8
+ *
9
+ * @module
10
+ */
11
+ import { extract, expand } from "@noble/hashes/hkdf.js";
12
+ import { sha512 } from "@noble/hashes/sha2.js";
13
+ /**
14
+ * Per-key HKDF info labels for the five session keys derived from
15
+ * the initial-handshake PRK. Per VECTORS.md §2.2, the rekey
16
+ * derivation reuses these same labels — cross-context separation
17
+ * comes from the salt change (rekey nonces vs handshake nonces),
18
+ * not from a different label namespace.
19
+ */
20
+ export const InfoSessionEncC2S = "SEMP-v1-session-enc-c2s";
21
+ export const InfoSessionEncS2C = "SEMP-v1-session-enc-s2c";
22
+ export const InfoSessionMACC2S = "SEMP-v1-session-mac-c2s";
23
+ export const InfoSessionMACS2C = "SEMP-v1-session-mac-s2c";
24
+ export const InfoSessionEnvMAC = "SEMP-v1-session-env-mac";
25
+ /**
26
+ * K_resumption label per HANDSHAKE.md §2.8.3 and SESSION.md §2.7.
27
+ * K_resumption is NOT used to encrypt or MAC any message in the
28
+ * current session; it is the secret a server retains so that, mixed
29
+ * with a fresh ephemeral DH on a later resume attempt, the resumed
30
+ * session derives a new key schedule.
31
+ */
32
+ export const InfoSessionResumption = "SEMP-v1-session-resumption";
33
+ /** Length in bytes of every derived session key (SESSION.md §2.1). */
34
+ export const SessionKeyLength = 32;
35
+ class HKDFSHA512 {
36
+ extract(salt, ikm) {
37
+ return extract(sha512, ikm, salt);
38
+ }
39
+ expand(prk, info, length) {
40
+ return expand(sha512, prk, info, length);
41
+ }
42
+ }
43
+ /**
44
+ * Returns a stateless HKDF-SHA-512 KDF instance. Safe for concurrent
45
+ * use; no state is held between calls.
46
+ */
47
+ export function newHKDFSHA512() {
48
+ return new HKDFSHA512();
49
+ }
50
+ /**
51
+ * Derive the five session keys from a handshake. The salt is
52
+ * `clientNonce || serverNonce`. Per VECTORS.md §2.1, the IKM is the
53
+ * shared secret from the negotiated KEM; for rekey, the same five
54
+ * keys are derived under the rekey nonces but the resumption secret
55
+ * is NOT regenerated.
56
+ */
57
+ export function deriveSessionKeys(kdf, sharedSecret, clientNonce, serverNonce) {
58
+ const salt = concat(clientNonce, serverNonce);
59
+ const prk = kdf.extract(salt, sharedSecret);
60
+ return {
61
+ encC2S: kdf.expand(prk, utf8(InfoSessionEncC2S), SessionKeyLength),
62
+ encS2C: kdf.expand(prk, utf8(InfoSessionEncS2C), SessionKeyLength),
63
+ macC2S: kdf.expand(prk, utf8(InfoSessionMACC2S), SessionKeyLength),
64
+ macS2C: kdf.expand(prk, utf8(InfoSessionMACS2C), SessionKeyLength),
65
+ envMAC: kdf.expand(prk, utf8(InfoSessionEnvMAC), SessionKeyLength),
66
+ };
67
+ }
68
+ /**
69
+ * Like {@link deriveSessionKeys} but also derives K_resumption.
70
+ * Used on the initial handshake; rekey derivations skip the
71
+ * resumption expansion.
72
+ */
73
+ export function deriveSessionKeysWithResumption(kdf, sharedSecret, clientNonce, serverNonce) {
74
+ const salt = concat(clientNonce, serverNonce);
75
+ const prk = kdf.extract(salt, sharedSecret);
76
+ return {
77
+ encC2S: kdf.expand(prk, utf8(InfoSessionEncC2S), SessionKeyLength),
78
+ encS2C: kdf.expand(prk, utf8(InfoSessionEncS2C), SessionKeyLength),
79
+ macC2S: kdf.expand(prk, utf8(InfoSessionMACC2S), SessionKeyLength),
80
+ macS2C: kdf.expand(prk, utf8(InfoSessionMACS2C), SessionKeyLength),
81
+ envMAC: kdf.expand(prk, utf8(InfoSessionEnvMAC), SessionKeyLength),
82
+ resumption: kdf.expand(prk, utf8(InfoSessionResumption), SessionKeyLength),
83
+ };
84
+ }
85
+ /**
86
+ * Derive the resumed-session keys from a rekey ECDH and a retained
87
+ * resumption secret per HANDSHAKE.md §2.8.3 and SESSION.md §2.7.
88
+ * IKM is `ephemeralSharedSecret || kResumption`, salt is
89
+ * `clientNonce || serverNonce`. The five expand labels are the same
90
+ * SEMP-v1-session-* labels as the initial derivation.
91
+ */
92
+ export function deriveResumedSessionKeys(kdf, ephemeralSharedSecret, kResumption, clientNonce, serverNonce) {
93
+ const ikm = concat(ephemeralSharedSecret, kResumption);
94
+ const salt = concat(clientNonce, serverNonce);
95
+ const prk = kdf.extract(salt, ikm);
96
+ return {
97
+ encC2S: kdf.expand(prk, utf8(InfoSessionEncC2S), SessionKeyLength),
98
+ encS2C: kdf.expand(prk, utf8(InfoSessionEncS2C), SessionKeyLength),
99
+ macC2S: kdf.expand(prk, utf8(InfoSessionMACC2S), SessionKeyLength),
100
+ macS2C: kdf.expand(prk, utf8(InfoSessionMACS2C), SessionKeyLength),
101
+ envMAC: kdf.expand(prk, utf8(InfoSessionEnvMAC), SessionKeyLength),
102
+ };
103
+ }
104
+ /**
105
+ * Derive rekey keys per SESSION.md §3.3. Identical to the initial
106
+ * derivation in label set; the cross-context separation comes from
107
+ * the salt construction (rekeyNonce || responderNonce) and a fresh
108
+ * shared secret.
109
+ */
110
+ export function deriveRekeyKeys(kdf, sharedSecret, rekeyNonce, responderNonce) {
111
+ return deriveSessionKeys(kdf, sharedSecret, rekeyNonce, responderNonce);
112
+ }
113
+ function utf8(s) {
114
+ return new TextEncoder().encode(s);
115
+ }
116
+ function concat(a, b) {
117
+ const out = new Uint8Array(a.length + b.length);
118
+ out.set(a, 0);
119
+ out.set(b, a.length);
120
+ return out;
121
+ }
122
+ //# sourceMappingURL=kdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kdf.js","sourceRoot":"","sources":["../../src/crypto/kdf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Key encapsulation primitives for the two SEMP suites.
3
+ *
4
+ * - X25519 (baseline, classical ECDH treated as a KEM).
5
+ * - Kyber768 + X25519 hybrid (PQ; ML-KEM-768 final per FIPS 203).
6
+ *
7
+ * The hybrid wire layout matches ENVELOPE.md §4.4.1 and the
8
+ * cross-language vectors:
9
+ *
10
+ * - public key: kyber_pub (1184) || x25519_pub (32) = 1216
11
+ * - private key: kyber_priv (2400) || x25519_priv (32) = 2432
12
+ * - ciphertext: kyber_ct (1088) || x25519_eph_pub (32) = 1120
13
+ * - shared: K_kyber (32) || K_x25519 (32) = 64
14
+ *
15
+ * The order is Kyber-FIRST in every layout. Earlier semp-go releases
16
+ * placed X25519 first; the cross-language vectors enforce this
17
+ * ordering.
18
+ *
19
+ * @module
20
+ */
21
+ /** ML-KEM-768 public key size. */
22
+ export declare const Kyber768PublicKeySize = 1184;
23
+ /** ML-KEM-768 private key size. */
24
+ export declare const Kyber768PrivateKeySize = 2400;
25
+ /** ML-KEM-768 ciphertext size. */
26
+ export declare const Kyber768CiphertextSize = 1088;
27
+ /** ML-KEM-768 shared-key size (also matches X25519). */
28
+ export declare const Kyber768SharedKeySize = 32;
29
+ /** X25519 byte width (point + scalar). */
30
+ export declare const X25519Size = 32;
31
+ /** Hybrid public-key wire size. */
32
+ export declare const HybridPublicKeySize: number;
33
+ /** Hybrid private-key wire size. */
34
+ export declare const HybridPrivateKeySize: number;
35
+ /** Hybrid ciphertext wire size. */
36
+ export declare const HybridCiphertextSize: number;
37
+ /** Combined hybrid shared secret width. */
38
+ export declare const HybridSharedSecretSize: number;
39
+ /** X25519 ECDH treated as KEM: pub^priv = shared secret. */
40
+ export declare function x25519Agree(secretKey: Uint8Array, publicKey: Uint8Array): Uint8Array;
41
+ /** X25519 derive public key from a 32-byte secret seed. */
42
+ export declare function x25519PublicKey(secretKey: Uint8Array): Uint8Array;
43
+ /**
44
+ * Derive an ML-KEM-768 keypair deterministically from a 64-byte
45
+ * seed (FIPS 203 internal `d || z`). USE CASES are intentionally
46
+ * narrow: cross-language test vectors and determinism audits.
47
+ * Production keygen MUST use entropy.
48
+ */
49
+ export declare function kyber768KeyPairFromSeed(seed: Uint8Array): {
50
+ publicKey: Uint8Array;
51
+ secretKey: Uint8Array;
52
+ };
53
+ /**
54
+ * ML-KEM-768 deterministic encapsulation. `m` is the 32-byte
55
+ * randomness FIPS 203 names; pinning it lets the wrap output be
56
+ * byte-deterministic for cross-language test vectors.
57
+ */
58
+ export declare function kyber768EncapsulateDeterministic(publicKey: Uint8Array, m: Uint8Array): {
59
+ ciphertext: Uint8Array;
60
+ sharedSecret: Uint8Array;
61
+ };
62
+ /** ML-KEM-768 decapsulation. */
63
+ export declare function kyber768Decapsulate(secretKey: Uint8Array, ciphertext: Uint8Array): Uint8Array;
64
+ /**
65
+ * Assemble a hybrid private key from the Kyber768 private bytes
66
+ * and an X25519 32-byte private. Layout: `kyberPriv || x25519Priv`.
67
+ *
68
+ * Test/vector-only helper. Production code MUST get hybrid keys
69
+ * from a real entropy-driven keygen.
70
+ */
71
+ export declare function hybridPrivateKeyFromKyberAndX25519(x25519Priv: Uint8Array, kyberPriv: Uint8Array): Uint8Array;
72
+ /**
73
+ * Hybrid Decapsulate. Reverses the responder-side encapsulation
74
+ * (kyber half + X25519 ECDH against the sender's ephemeral pub)
75
+ * and returns the combined shared secret `K_kyber || K_x25519`.
76
+ *
77
+ * Wire layout:
78
+ * - localPriv: kyberPriv (2400) || x25519Priv (32)
79
+ * - ciphertext: kyberCt (1088) || x25519EphPub (32)
80
+ *
81
+ * Used by the seal Unwrap path. Production code goes through the
82
+ * seal package; this primitive is exposed for the vectors runner.
83
+ */
84
+ export declare function hybridDecapsulate(ciphertext: Uint8Array, localPriv: Uint8Array): Uint8Array;
85
+ //# sourceMappingURL=kem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kem.d.ts","sourceRoot":"","sources":["../../src/crypto/kem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,kCAAkC;AAClC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,mCAAmC;AACnC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,kCAAkC;AAClC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,0CAA0C;AAC1C,eAAO,MAAM,UAAU,KAAK,CAAC;AAE7B,mCAAmC;AACnC,eAAO,MAAM,mBAAmB,QAAqC,CAAC;AACtE,oCAAoC;AACpC,eAAO,MAAM,oBAAoB,QAAsC,CAAC;AACxE,mCAAmC;AACnC,eAAO,MAAM,oBAAoB,QAAsC,CAAC;AACxE,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,QAAqC,CAAC;AAKzE,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAEpF;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,CAEjE;AAKD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG;IACzD,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;CACvB,CAMA;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,UAAU,EACrB,CAAC,EAAE,UAAU,GACZ;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,UAAU,CAAA;CAAE,CAGtD;AAED,gCAAgC;AAChC,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,UAAU,GACrB,UAAU,CAEZ;AAKD;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,GACpB,UAAU,CAWZ;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,GACpB,UAAU,CAuBZ"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Key encapsulation primitives for the two SEMP suites.
3
+ *
4
+ * - X25519 (baseline, classical ECDH treated as a KEM).
5
+ * - Kyber768 + X25519 hybrid (PQ; ML-KEM-768 final per FIPS 203).
6
+ *
7
+ * The hybrid wire layout matches ENVELOPE.md §4.4.1 and the
8
+ * cross-language vectors:
9
+ *
10
+ * - public key: kyber_pub (1184) || x25519_pub (32) = 1216
11
+ * - private key: kyber_priv (2400) || x25519_priv (32) = 2432
12
+ * - ciphertext: kyber_ct (1088) || x25519_eph_pub (32) = 1120
13
+ * - shared: K_kyber (32) || K_x25519 (32) = 64
14
+ *
15
+ * The order is Kyber-FIRST in every layout. Earlier semp-go releases
16
+ * placed X25519 first; the cross-language vectors enforce this
17
+ * ordering.
18
+ *
19
+ * @module
20
+ */
21
+ import { x25519 } from "@noble/curves/ed25519.js";
22
+ import { ml_kem768 } from "@noble/post-quantum/ml-kem.js";
23
+ /** ML-KEM-768 public key size. */
24
+ export const Kyber768PublicKeySize = 1184;
25
+ /** ML-KEM-768 private key size. */
26
+ export const Kyber768PrivateKeySize = 2400;
27
+ /** ML-KEM-768 ciphertext size. */
28
+ export const Kyber768CiphertextSize = 1088;
29
+ /** ML-KEM-768 shared-key size (also matches X25519). */
30
+ export const Kyber768SharedKeySize = 32;
31
+ /** X25519 byte width (point + scalar). */
32
+ export const X25519Size = 32;
33
+ /** Hybrid public-key wire size. */
34
+ export const HybridPublicKeySize = Kyber768PublicKeySize + X25519Size; // 1216
35
+ /** Hybrid private-key wire size. */
36
+ export const HybridPrivateKeySize = Kyber768PrivateKeySize + X25519Size; // 2432
37
+ /** Hybrid ciphertext wire size. */
38
+ export const HybridCiphertextSize = Kyber768CiphertextSize + X25519Size; // 1120
39
+ /** Combined hybrid shared secret width. */
40
+ export const HybridSharedSecretSize = Kyber768SharedKeySize + X25519Size; // 64
41
+ // ---------------------------------------------------------------------------
42
+ // X25519 (baseline KEM)
43
+ /** X25519 ECDH treated as KEM: pub^priv = shared secret. */
44
+ export function x25519Agree(secretKey, publicKey) {
45
+ return x25519.getSharedSecret(secretKey, publicKey);
46
+ }
47
+ /** X25519 derive public key from a 32-byte secret seed. */
48
+ export function x25519PublicKey(secretKey) {
49
+ return x25519.getPublicKey(secretKey);
50
+ }
51
+ // ---------------------------------------------------------------------------
52
+ // Kyber768 / ML-KEM-768
53
+ /**
54
+ * Derive an ML-KEM-768 keypair deterministically from a 64-byte
55
+ * seed (FIPS 203 internal `d || z`). USE CASES are intentionally
56
+ * narrow: cross-language test vectors and determinism audits.
57
+ * Production keygen MUST use entropy.
58
+ */
59
+ export function kyber768KeyPairFromSeed(seed) {
60
+ if (seed.length !== 64) {
61
+ throw new Error(`kyber768KeyPairFromSeed: seed must be 64 bytes, got ${seed.length}`);
62
+ }
63
+ const { secretKey, publicKey } = ml_kem768.keygen(seed);
64
+ return { publicKey, secretKey };
65
+ }
66
+ /**
67
+ * ML-KEM-768 deterministic encapsulation. `m` is the 32-byte
68
+ * randomness FIPS 203 names; pinning it lets the wrap output be
69
+ * byte-deterministic for cross-language test vectors.
70
+ */
71
+ export function kyber768EncapsulateDeterministic(publicKey, m) {
72
+ const { cipherText, sharedSecret } = ml_kem768.encapsulate(publicKey, m);
73
+ return { ciphertext: cipherText, sharedSecret };
74
+ }
75
+ /** ML-KEM-768 decapsulation. */
76
+ export function kyber768Decapsulate(secretKey, ciphertext) {
77
+ return ml_kem768.decapsulate(ciphertext, secretKey);
78
+ }
79
+ // ---------------------------------------------------------------------------
80
+ // Hybrid (Kyber768 + X25519) per SEMP suite `pq-kyber768-x25519`.
81
+ /**
82
+ * Assemble a hybrid private key from the Kyber768 private bytes
83
+ * and an X25519 32-byte private. Layout: `kyberPriv || x25519Priv`.
84
+ *
85
+ * Test/vector-only helper. Production code MUST get hybrid keys
86
+ * from a real entropy-driven keygen.
87
+ */
88
+ export function hybridPrivateKeyFromKyberAndX25519(x25519Priv, kyberPriv) {
89
+ if (x25519Priv.length !== X25519Size) {
90
+ throw new Error(`x25519 priv must be ${X25519Size} bytes`);
91
+ }
92
+ if (kyberPriv.length !== Kyber768PrivateKeySize) {
93
+ throw new Error(`kyber priv must be ${Kyber768PrivateKeySize} bytes`);
94
+ }
95
+ const out = new Uint8Array(HybridPrivateKeySize);
96
+ out.set(kyberPriv, 0);
97
+ out.set(x25519Priv, Kyber768PrivateKeySize);
98
+ return out;
99
+ }
100
+ /**
101
+ * Hybrid Decapsulate. Reverses the responder-side encapsulation
102
+ * (kyber half + X25519 ECDH against the sender's ephemeral pub)
103
+ * and returns the combined shared secret `K_kyber || K_x25519`.
104
+ *
105
+ * Wire layout:
106
+ * - localPriv: kyberPriv (2400) || x25519Priv (32)
107
+ * - ciphertext: kyberCt (1088) || x25519EphPub (32)
108
+ *
109
+ * Used by the seal Unwrap path. Production code goes through the
110
+ * seal package; this primitive is exposed for the vectors runner.
111
+ */
112
+ export function hybridDecapsulate(ciphertext, localPriv) {
113
+ if (ciphertext.length !== HybridCiphertextSize) {
114
+ throw new Error(`hybrid Decapsulate: ciphertext ${ciphertext.length} bytes, want ${HybridCiphertextSize}`);
115
+ }
116
+ if (localPriv.length !== HybridPrivateKeySize) {
117
+ throw new Error(`hybrid Decapsulate: priv ${localPriv.length} bytes, want ${HybridPrivateKeySize}`);
118
+ }
119
+ const kyberCt = ciphertext.slice(0, Kyber768CiphertextSize);
120
+ const xEphPub = ciphertext.slice(Kyber768CiphertextSize);
121
+ const kyberPriv = localPriv.slice(0, Kyber768PrivateKeySize);
122
+ const xLocalPriv = localPriv.slice(Kyber768PrivateKeySize);
123
+ const kyberSS = kyber768Decapsulate(kyberPriv, kyberCt);
124
+ const xSS = x25519Agree(xLocalPriv, xEphPub);
125
+ const shared = new Uint8Array(HybridSharedSecretSize);
126
+ shared.set(kyberSS, 0);
127
+ shared.set(xSS, Kyber768SharedKeySize);
128
+ return shared;
129
+ }
130
+ //# sourceMappingURL=kem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kem.js","sourceRoot":"","sources":["../../src/crypto/kem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * HMAC-SHA-256 helpers per ENVELOPE.md §4.3 (envelope session_mac)
3
+ * and SESSION.md §2.1 (per-direction message MAC keys).
4
+ *
5
+ * @module
6
+ */
7
+ /**
8
+ * Compute HMAC-SHA-256 over `message` keyed by `key`. The output is
9
+ * always 32 bytes — the same width every SEMP MAC field expects.
10
+ */
11
+ export declare function computeMAC(key: Uint8Array, message: Uint8Array): Uint8Array;
12
+ /**
13
+ * Constant-time MAC comparison. Returns true iff `expected` and
14
+ * `actual` are byte-for-byte identical. Use when verifying a
15
+ * received MAC against a recomputed one to avoid leaking bit-by-bit
16
+ * timing information about the expected value.
17
+ */
18
+ export declare function verifyMAC(expected: Uint8Array, actual: Uint8Array): boolean;
19
+ //# sourceMappingURL=mac.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mac.d.ts","sourceRoot":"","sources":["../../src/crypto/mac.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAS3E"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * HMAC-SHA-256 helpers per ENVELOPE.md §4.3 (envelope session_mac)
3
+ * and SESSION.md §2.1 (per-direction message MAC keys).
4
+ *
5
+ * @module
6
+ */
7
+ import { hmac } from "@noble/hashes/hmac.js";
8
+ import { sha256 } from "@noble/hashes/sha2.js";
9
+ /**
10
+ * Compute HMAC-SHA-256 over `message` keyed by `key`. The output is
11
+ * always 32 bytes — the same width every SEMP MAC field expects.
12
+ */
13
+ export function computeMAC(key, message) {
14
+ return hmac(sha256, key, message);
15
+ }
16
+ /**
17
+ * Constant-time MAC comparison. Returns true iff `expected` and
18
+ * `actual` are byte-for-byte identical. Use when verifying a
19
+ * received MAC against a recomputed one to avoid leaking bit-by-bit
20
+ * timing information about the expected value.
21
+ */
22
+ export function verifyMAC(expected, actual) {
23
+ if (expected.length !== actual.length) {
24
+ return false;
25
+ }
26
+ let diff = 0;
27
+ for (let i = 0; i < expected.length; i++) {
28
+ diff |= (expected[i] ?? 0) ^ (actual[i] ?? 0);
29
+ }
30
+ return diff === 0;
31
+ }
32
+ //# sourceMappingURL=mac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mac.js","sourceRoot":"","sources":["../../src/crypto/mac.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAe,EAAE,OAAmB;IAC7D,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,QAAoB,EAAE,MAAkB;IAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Per-attempt delivery acknowledgment objects per DELIVERY.md §1.
3
+ *
4
+ * A recipient server returns exactly one of three acknowledgments
5
+ * for every envelope delivery attempt:
6
+ *
7
+ * - `delivered` — accepted; carries a signed
8
+ * {@link "./receipt".DeliveryReceipt} per §1.1.1, MAY include a
9
+ * {@link RecipientStatus} per §1.6 if the sender matches the
10
+ * recipient's visibility rules.
11
+ * - `rejected` — explicitly refused with a reason code per §1.2.
12
+ * - `silent` — no response within the sender's timeout window
13
+ * per §1.3. The wire form for silent is "no response sent at
14
+ * all"; this module exposes a constant value the sending server
15
+ * uses internally to record the outcome on its own queue state.
16
+ *
17
+ * The {@link DeliveryAck} JSON shape is what the recipient server
18
+ * places in its response body (§1.1.1.5 example).
19
+ *
20
+ * @module
21
+ */
22
+ import type { ReasonCode } from "../reasoncodes.js";
23
+ import type { DeliveryReceipt } from "./receipt.js";
24
+ /** The three protocol-level outcomes per §1.1. */
25
+ export type Acknowledgment = "delivered" | "rejected" | "silent";
26
+ /** Per-§1.6.3 recipient state values. */
27
+ export type RecipientState = "available" | "away" | "do_not_disturb";
28
+ /** Per-§1.6.4 visibility modes. */
29
+ export type VisibilityMode = "everyone" | "domains" | "servers" | "users" | "nobody";
30
+ /** One entry in a {@link Visibility} allow list. */
31
+ export interface VisibilityEntry {
32
+ /** Entry kind. The mode constrains which kinds are honored. */
33
+ type: "domain" | "server" | "user";
34
+ /** For `type: "domain"`. */
35
+ domain?: string;
36
+ /** For `type: "server"`. */
37
+ server?: string;
38
+ /** For `type: "user"`: full address. */
39
+ address?: string;
40
+ }
41
+ /** Visibility configuration per §1.6.4. */
42
+ export interface Visibility {
43
+ mode: VisibilityMode;
44
+ /** Allow list. Entries whose `type` does not match `mode` are ignored. */
45
+ allow?: VisibilityEntry[];
46
+ }
47
+ /**
48
+ * Optional recipient status object included in `delivered`
49
+ * acknowledgments per §1.6.1.
50
+ */
51
+ export interface RecipientStatus {
52
+ state: RecipientState;
53
+ /** Freetext, max 256 UTF-8 bytes. */
54
+ message?: string;
55
+ /** ISO 8601 UTC timestamp. */
56
+ until?: string;
57
+ }
58
+ /** Maximum length of {@link RecipientStatus.message} per §1.6.2. */
59
+ export declare const MaxStatusMessageBytes = 256;
60
+ /**
61
+ * Per-attempt acknowledgment body returned inline by a recipient
62
+ * server, per §1.1.1.5 / §1.6.1. Exactly one of:
63
+ *
64
+ * - acknowledgment="delivered" with `receipt` populated and an
65
+ * optional `recipient_status`;
66
+ * - acknowledgment="rejected" with `reason_code` populated and an
67
+ * optional `reason`.
68
+ *
69
+ * The `silent` outcome is not represented on the wire — the
70
+ * recipient simply does not respond.
71
+ */
72
+ export interface DeliveryAck {
73
+ acknowledgment: Exclude<Acknowledgment, "silent">;
74
+ receipt?: DeliveryReceipt;
75
+ recipient_status?: RecipientStatus;
76
+ reason_code?: ReasonCode;
77
+ reason?: string;
78
+ }
79
+ /**
80
+ * Build a `delivered` ack from a signed receipt and optional
81
+ * recipient status. Per §1.6.4 the caller is responsible for
82
+ * deciding whether `recipientStatus` should be attached at all
83
+ * (call {@link matchVisibility} first).
84
+ */
85
+ export declare function buildDeliveredAck(receipt: DeliveryReceipt, recipientStatus?: RecipientStatus): DeliveryAck;
86
+ /** Build a `rejected` ack with a reason code and optional reason text. */
87
+ export declare function buildRejectedAck(reasonCode: ReasonCode, reason?: string): DeliveryAck;
88
+ /**
89
+ * Sender-identity inputs for {@link matchVisibility}. All three
90
+ * fields are optional; an empty value disables matching for the
91
+ * corresponding entry type.
92
+ */
93
+ export interface SenderIdentity {
94
+ /** Full sender address (e.g., `alice@example.com`). */
95
+ address?: string;
96
+ /** Sender domain (e.g., `example.com`). */
97
+ domain?: string;
98
+ /** Routing server hostname when known. */
99
+ server?: string;
100
+ }
101
+ /**
102
+ * Resolve visibility per §1.6.4. Returns true when the
103
+ * recipient_status should be attached to the acknowledgment.
104
+ *
105
+ * - `nobody` (default): never disclose, regardless of the allow list.
106
+ * - `everyone`: always disclose, regardless of the allow list.
107
+ * - `domains` / `servers` / `users`: walk the allow list looking for
108
+ * a match. The mode constrains which entry kinds are honored — in
109
+ * `domains` mode only entries with `type: "domain"`, etc.
110
+ * Mismatched entries in the allow list are ignored.
111
+ *
112
+ * All comparisons are case-insensitive. Multiple rules combine as a
113
+ * union: any matching entry returns true.
114
+ *
115
+ * A nil/undefined visibility (no configuration at all) is equivalent
116
+ * to mode=nobody.
117
+ */
118
+ export declare function matchVisibility(visibility: Visibility | undefined, sender: SenderIdentity): boolean;
119
+ /**
120
+ * Validate a {@link RecipientStatus} per §1.6.2: the `message` field
121
+ * MUST NOT exceed 256 UTF-8 bytes, and `state` MUST be one of the
122
+ * three documented values. Throws on the first violation.
123
+ */
124
+ export declare function validateRecipientStatus(s: RecipientStatus): void;
125
+ //# sourceMappingURL=ack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ack.d.ts","sourceRoot":"","sources":["../../src/delivery/ack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,kDAAkD;AAClD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEjE,yCAAyC;AACzC,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAErE,mCAAmC;AACnC,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,SAAS,GACT,SAAS,GACT,OAAO,GACP,QAAQ,CAAC;AAEb,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnC,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,cAAc,CAAC;IACtB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,eAAe,CAAC,EAAE,eAAe,GAChC,WAAW,CASb;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,WAAW,CASb;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,MAAM,EAAE,cAAc,GACrB,OAAO,CAgET;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,CAYhE"}