@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,119 @@
1
+ /**
2
+ * Forwarding compose per ENVELOPE.md §6.6.
3
+ *
4
+ * A forwarded enclosure carries three signatures, layered:
5
+ *
6
+ * 1. The ORIGINAL sender's `sender_signature` over their inner
7
+ * enclosure (subject, content_type, body, attachments,
8
+ * extensions). Prefix: `SEMP-ENCLOSURE-SENDER:`.
9
+ * Signed scope: the `original_enclosure_plaintext` subtree.
10
+ *
11
+ * 2. The FORWARDER's `forwarder_attestation` over the
12
+ * `forwarded_from` block — the inner sender_signature is
13
+ * already populated by step 1, so this signs over canonical
14
+ * bytes that include it. Prefix: `SEMP-FORWARDER-ATTESTATION:`.
15
+ * Signed scope: the entire `forwarded_from` subtree.
16
+ *
17
+ * 3. The FORWARDER acting as outer sender: `sender_signature`
18
+ * over the outer enclosure. Prefix: `SEMP-ENCLOSURE-SENDER:`.
19
+ * Signed scope: the entire outer enclosure object.
20
+ *
21
+ * The verify path (handlers-wave4.ts) walks these three steps in
22
+ * reverse to verify.
23
+ *
24
+ * @module
25
+ */
26
+ import { fingerprint, publicKeyFromSeed, signSignedDoc } from "../keys/index.js";
27
+ /**
28
+ * Compose a 3-signature forwarded enclosure. Returns the
29
+ * fully-signed object whose canonical bytes match the spec.
30
+ *
31
+ * Step 1: sign the inner enclosure with the original sender's
32
+ * identity key. The signed inner becomes
33
+ * `forwarded_from.original_enclosure_plaintext`.
34
+ *
35
+ * Step 2: assemble the `forwarded_from` block with the signed
36
+ * inner, original_seal/postmark/address, received_at, and a
37
+ * `forwarder_attestation` placeholder. Sign the block with the
38
+ * forwarder's identity key under the
39
+ * SEMP-FORWARDER-ATTESTATION: prefix.
40
+ *
41
+ * Step 3: assemble the outer enclosure with the signed
42
+ * forwarded_from block and a `sender_signature` placeholder.
43
+ * Sign with the forwarder's identity key under the
44
+ * SEMP-ENCLOSURE-SENDER: prefix.
45
+ */
46
+ export function composeForwarded(input) {
47
+ // Step 1: sign the inner enclosure as the original sender.
48
+ const innerPreSign = {
49
+ subject: input.innerEnclosurePlaintext.subject,
50
+ content_type: input.innerEnclosurePlaintext.content_type,
51
+ body: input.innerEnclosurePlaintext.body,
52
+ attachments: input.innerEnclosurePlaintext.attachments ?? [],
53
+ forwarded_from: input.innerEnclosurePlaintext.forwarded_from ?? null,
54
+ extensions: input.innerEnclosurePlaintext.extensions ?? {},
55
+ sender_signature: {
56
+ algorithm: "ed25519",
57
+ key_id: input.innerSenderKeyId,
58
+ value: "",
59
+ },
60
+ };
61
+ const innerSigned = signSignedDoc({
62
+ preSignJSON: innerPreSign,
63
+ seed: input.innerSenderSeed,
64
+ signaturePath: "sender_signature.value",
65
+ prefix: "SEMP-ENCLOSURE-SENDER:",
66
+ });
67
+ // Cross-check: the inner key_id MUST match the forwarder-claimed
68
+ // key. Fingerprint mismatches surface here, not at the verify
69
+ // layer.
70
+ const innerKeyIdActual = fingerprint(publicKeyFromSeed(input.innerSenderSeed));
71
+ if (innerKeyIdActual !== input.innerSenderKeyId) {
72
+ throw new Error(`composeForwarded: innerSenderKeyId ${input.innerSenderKeyId} does not match seed-derived ${innerKeyIdActual}`);
73
+ }
74
+ // Step 2: forwarder_attestation over forwarded_from.
75
+ const forwardedFromPreSign = {
76
+ original_enclosure_plaintext: innerSigned.signedJSON,
77
+ original_seal: input.originalEnvelope.original_seal,
78
+ original_postmark: input.originalEnvelope.original_postmark,
79
+ original_sender_address: input.originalEnvelope.original_sender_address,
80
+ received_at: input.receivedAt,
81
+ forwarder_attestation: {
82
+ algorithm: "ed25519",
83
+ key_id: input.forwarderKeyId,
84
+ value: "",
85
+ },
86
+ };
87
+ const fromSigned = signSignedDoc({
88
+ preSignJSON: forwardedFromPreSign,
89
+ seed: input.forwarderSeed,
90
+ signaturePath: "forwarder_attestation.value",
91
+ prefix: "SEMP-FORWARDER-ATTESTATION:",
92
+ });
93
+ const forwarderKeyIdActual = fingerprint(publicKeyFromSeed(input.forwarderSeed));
94
+ if (forwarderKeyIdActual !== input.forwarderKeyId) {
95
+ throw new Error(`composeForwarded: forwarderKeyId ${input.forwarderKeyId} does not match seed-derived ${forwarderKeyIdActual}`);
96
+ }
97
+ // Step 3: outer sender_signature.
98
+ const outerPreSign = {
99
+ subject: input.outerEnclosurePlaintext.subject,
100
+ content_type: input.outerEnclosurePlaintext.content_type,
101
+ body: input.outerEnclosurePlaintext.body,
102
+ attachments: input.outerEnclosurePlaintext.attachments ?? [],
103
+ forwarded_from: fromSigned.signedJSON,
104
+ extensions: input.outerEnclosurePlaintext.extensions ?? {},
105
+ sender_signature: {
106
+ algorithm: "ed25519",
107
+ key_id: input.forwarderKeyId,
108
+ value: "",
109
+ },
110
+ };
111
+ const outerSigned = signSignedDoc({
112
+ preSignJSON: outerPreSign,
113
+ seed: input.forwarderSeed,
114
+ signaturePath: "sender_signature.value",
115
+ prefix: "SEMP-ENCLOSURE-SENDER:",
116
+ });
117
+ return outerSigned.signedJSON;
118
+ }
119
+ //# sourceMappingURL=forwarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forwarding.js","sourceRoot":"","sources":["../../src/enclosure/forwarding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Enclosure-layer compose helpers per ENVELOPE.md §6.
3
+ *
4
+ * Today: forwarding (3-signature chain). Future: large-attachment
5
+ * enclosure pre-encryption helpers, sender-signature compose
6
+ * convenience wrappers.
7
+ *
8
+ * @module
9
+ */
10
+ export { type ComposeForwardedInput, type InnerEnclosurePlaintext, type OriginalEnvelopeRef, type OuterEnclosurePlaintext, type SignedForwardedEnclosure, composeForwarded, } from "./forwarding.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/enclosure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Enclosure-layer compose helpers per ENVELOPE.md §6.
3
+ *
4
+ * Today: forwarding (3-signature chain). Future: large-attachment
5
+ * enclosure pre-encryption helpers, sender-signature compose
6
+ * convenience wrappers.
7
+ *
8
+ * @module
9
+ */
10
+ export { composeForwarded, } from "./forwarding.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enclosure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAML,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Envelope size and recipient-count bucket math per ENVELOPE.md
3
+ * §2.4.1 (size) and §4.4.2 (recipient count).
4
+ *
5
+ * @module
6
+ */
7
+ /**
8
+ * Smallest envelope size bucket (the protocol floor). Every
9
+ * envelope, including the smallest plaintext-only message, occupies
10
+ * at least 4 KB on the wire.
11
+ */
12
+ export declare const MinEnvelopeSizeBucket = 4096;
13
+ /**
14
+ * Default ceiling on envelope size. A deployment may configure a
15
+ * smaller `max_envelope_size` via the negotiated session limit; this
16
+ * is the protocol-default fallback.
17
+ */
18
+ export declare const DefaultMaxEnvelopeSize: number;
19
+ /**
20
+ * Select the size bucket for an unpadded envelope of the given byte
21
+ * size per the default power-of-two curve (4096, 8192, 16384, ...).
22
+ *
23
+ * Throws on negative input or input that exceeds the ceiling — over-
24
+ * limit envelopes MUST be recomposed; padding is not a remedy for
25
+ * over-limit content.
26
+ */
27
+ export declare function selectSizeBucket(unpaddedSize: number, maxEnvelopeSize?: number): number;
28
+ /**
29
+ * Select the recipient-count bucket per §4.4.2. The floor is 2
30
+ * unless `realRecipients === 1` AND `singleDomainNotGroup` is true,
31
+ * in which case the floor relaxes to 1 (a single-domain non-group
32
+ * send reveals only the obvious cardinality and gains no
33
+ * obfuscation from padding to 2). Real counts above 1024 force
34
+ * recomposition into multiple envelopes — the runner returns a
35
+ * sentinel of -1 in that case so callers can detect it.
36
+ */
37
+ export declare function selectRecipientCountBucket(realRecipients: number, singleDomainNotGroup: boolean): number;
38
+ //# sourceMappingURL=buckets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buckets.d.ts","sourceRoot":"","sources":["../../src/envelope/buckets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAmB,CAAC;AAEvD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CAsBR;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,MAAM,EACtB,oBAAoB,EAAE,OAAO,GAC5B,MAAM,CAeR"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Envelope size and recipient-count bucket math per ENVELOPE.md
3
+ * §2.4.1 (size) and §4.4.2 (recipient count).
4
+ *
5
+ * @module
6
+ */
7
+ /**
8
+ * Smallest envelope size bucket (the protocol floor). Every
9
+ * envelope, including the smallest plaintext-only message, occupies
10
+ * at least 4 KB on the wire.
11
+ */
12
+ export const MinEnvelopeSizeBucket = 4096;
13
+ /**
14
+ * Default ceiling on envelope size. A deployment may configure a
15
+ * smaller `max_envelope_size` via the negotiated session limit; this
16
+ * is the protocol-default fallback.
17
+ */
18
+ export const DefaultMaxEnvelopeSize = 25 * 1024 * 1024;
19
+ /**
20
+ * Select the size bucket for an unpadded envelope of the given byte
21
+ * size per the default power-of-two curve (4096, 8192, 16384, ...).
22
+ *
23
+ * Throws on negative input or input that exceeds the ceiling — over-
24
+ * limit envelopes MUST be recomposed; padding is not a remedy for
25
+ * over-limit content.
26
+ */
27
+ export function selectSizeBucket(unpaddedSize, maxEnvelopeSize) {
28
+ if (!Number.isInteger(unpaddedSize) || unpaddedSize < 0) {
29
+ throw new Error(`envelope: invalid unpadded size ${unpaddedSize}`);
30
+ }
31
+ const ceiling = maxEnvelopeSize ?? DefaultMaxEnvelopeSize;
32
+ if (ceiling <= 0) {
33
+ throw new Error(`envelope: non-positive ceiling ${ceiling}`);
34
+ }
35
+ if (unpaddedSize > ceiling) {
36
+ throw new Error(`envelope: unpadded size ${unpaddedSize} exceeds max_envelope_size ${ceiling}`);
37
+ }
38
+ let bucket = MinEnvelopeSizeBucket;
39
+ while (bucket < unpaddedSize) {
40
+ const next = bucket * 2;
41
+ if (next > ceiling) {
42
+ return ceiling;
43
+ }
44
+ bucket = next;
45
+ }
46
+ return bucket;
47
+ }
48
+ /**
49
+ * Select the recipient-count bucket per §4.4.2. The floor is 2
50
+ * unless `realRecipients === 1` AND `singleDomainNotGroup` is true,
51
+ * in which case the floor relaxes to 1 (a single-domain non-group
52
+ * send reveals only the obvious cardinality and gains no
53
+ * obfuscation from padding to 2). Real counts above 1024 force
54
+ * recomposition into multiple envelopes — the runner returns a
55
+ * sentinel of -1 in that case so callers can detect it.
56
+ */
57
+ export function selectRecipientCountBucket(realRecipients, singleDomainNotGroup) {
58
+ if (!Number.isInteger(realRecipients) || realRecipients < 0) {
59
+ throw new Error(`envelope: invalid recipient count ${realRecipients}`);
60
+ }
61
+ if (realRecipients === 1 && singleDomainNotGroup) {
62
+ return 1;
63
+ }
64
+ if (realRecipients > 1024) {
65
+ return -1; // recomposition required
66
+ }
67
+ let bucket = 2;
68
+ while (bucket < realRecipients) {
69
+ bucket *= 2;
70
+ }
71
+ return bucket;
72
+ }
73
+ //# sourceMappingURL=buckets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buckets.js","sourceRoot":"","sources":["../../src/envelope/buckets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,eAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,OAAO,GAAG,eAAe,IAAI,sBAAsB,CAAC;IAC1D,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,YAAY,GAAG,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,2BAA2B,YAAY,8BAA8B,OAAO,EAAE,CAC/E,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,GAAG,qBAAqB,CAAC;IACnC,OAAO,MAAM,GAAG,YAAY,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CACxC,cAAsB,EACtB,oBAA6B;IAE7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,qCAAqC,cAAc,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,cAAc,KAAK,CAAC,IAAI,oBAAoB,EAAE,CAAC;QACjD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,cAAc,GAAG,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,CAAC,CAAC,yBAAyB;IACtC,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,GAAG,cAAc,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Envelope-specific canonicalization per ENVELOPE.md §4.3.
3
+ *
4
+ * On top of the generic canonical-JSON rules ({@link
5
+ * "../canonical/marshal"}), envelope canonicalization applies four
6
+ * specific elisions:
7
+ *
8
+ * - `seal.signature` is set to ""
9
+ * - `seal.session_mac` is set to ""
10
+ * - `postmark.hop_count` is omitted entirely
11
+ * - `padding` is omitted entirely
12
+ *
13
+ * These rules apply identically to the input of seal.signature
14
+ * (Ed25519) and seal.session_mac (HMAC-SHA-256); both proofs cover
15
+ * exactly the same byte stream so neither depends on the value of
16
+ * the other.
17
+ *
18
+ * @module
19
+ */
20
+ /**
21
+ * Compute the §4.3 canonical bytes from any envelope-shaped value.
22
+ * The input is treated as opaque JSON: navigate to `seal.*` and
23
+ * `postmark.*` if they exist, blank/omit the relevant fields, and
24
+ * canonicalize. Inputs without those keys are returned with the
25
+ * generic canonicalization only.
26
+ */
27
+ export declare function canonicalEnvelopeBytes(envelope: unknown): Uint8Array;
28
+ //# sourceMappingURL=canonical.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/envelope/canonical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,UAAU,CAEpE"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Envelope-specific canonicalization per ENVELOPE.md §4.3.
3
+ *
4
+ * On top of the generic canonical-JSON rules ({@link
5
+ * "../canonical/marshal"}), envelope canonicalization applies four
6
+ * specific elisions:
7
+ *
8
+ * - `seal.signature` is set to ""
9
+ * - `seal.session_mac` is set to ""
10
+ * - `postmark.hop_count` is omitted entirely
11
+ * - `padding` is omitted entirely
12
+ *
13
+ * These rules apply identically to the input of seal.signature
14
+ * (Ed25519) and seal.session_mac (HMAC-SHA-256); both proofs cover
15
+ * exactly the same byte stream so neither depends on the value of
16
+ * the other.
17
+ *
18
+ * @module
19
+ */
20
+ import { marshalWithElision } from "../canonical/index.js";
21
+ /**
22
+ * Compute the §4.3 canonical bytes from any envelope-shaped value.
23
+ * The input is treated as opaque JSON: navigate to `seal.*` and
24
+ * `postmark.*` if they exist, blank/omit the relevant fields, and
25
+ * canonicalize. Inputs without those keys are returned with the
26
+ * generic canonicalization only.
27
+ */
28
+ export function canonicalEnvelopeBytes(envelope) {
29
+ return marshalWithElision(envelope, envelopeElider);
30
+ }
31
+ function envelopeElider(v) {
32
+ if (!isRecord(v)) {
33
+ return;
34
+ }
35
+ // Top-level: drop `padding` if present.
36
+ delete v.padding;
37
+ const seal = v.seal;
38
+ if (isRecord(seal)) {
39
+ if ("signature" in seal) {
40
+ seal.signature = "";
41
+ }
42
+ if ("session_mac" in seal) {
43
+ seal.session_mac = "";
44
+ }
45
+ }
46
+ const postmark = v.postmark;
47
+ if (isRecord(postmark)) {
48
+ delete postmark.hop_count;
49
+ }
50
+ }
51
+ function isRecord(v) {
52
+ return typeof v === "object" && v !== null && !Array.isArray(v);
53
+ }
54
+ //# sourceMappingURL=canonical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/envelope/canonical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAiB;IACtD,OAAO,kBAAkB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CAAC,CAAU;IAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IACD,wCAAwC;IACxC,OAAO,CAAC,CAAC,OAAO,CAAC;IAEjB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC5B,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Envelope compose / open per ENVELOPE.md §4 + §6.5 + §7.1 + §7.2.
3
+ *
4
+ * The envelope is the wire object that carries one SEMP message
5
+ * between servers. Compose builds it; open recovers the brief and
6
+ * enclosure from a received envelope.
7
+ *
8
+ * This module exposes both the production path (fresh randomness)
9
+ * and the deterministic path (caller-pinned randomness for vectors
10
+ * + audits). The deterministic path is what the cross-language
11
+ * vectors-runner exercises; production callers MUST use the
12
+ * fresh-randomness form.
13
+ *
14
+ * Layered on top of:
15
+ * - canonical/marshal §4.3 canonical bytes (and elision)
16
+ * - seal/wrap §4.4.1 per-recipient key wrap
17
+ * - crypto/aead §7.1.1 brief / enclosure AEAD
18
+ * - keys/sign §6.5 sender_signature
19
+ * - HMAC-SHA-256 §4.3 session_mac
20
+ *
21
+ * @module
22
+ */
23
+ import { type Suite, type WrapRandomness } from "../seal/index.js";
24
+ /**
25
+ * Postmark fields populated at compose time. `hop_count` is set by
26
+ * relays in transit and is excluded from canonical bytes; it's
27
+ * not on the compose surface.
28
+ */
29
+ export interface PostmarkFields {
30
+ id: string;
31
+ session_id: string;
32
+ from_domain: string;
33
+ to_domain: string;
34
+ /** ISO 8601 timestamp string. */
35
+ expires: string;
36
+ extensions?: Record<string, unknown>;
37
+ }
38
+ /** One recipient slot in the seal. */
39
+ export interface RecipientKey {
40
+ /** SEMP fingerprint (lowercase hex of SHA-256(public_key)). */
41
+ keyId: string;
42
+ /** Recipient public key bytes (X25519 32B or hybrid 1216B per suite). */
43
+ publicKey: Uint8Array;
44
+ }
45
+ /**
46
+ * Inputs to envelope compose. All fields are required so the result
47
+ * is byte-deterministic given the inputs.
48
+ */
49
+ export interface ComposeInput {
50
+ /** Algorithm suite. */
51
+ suite: Suite;
52
+ /** Sender domain signing key id (lowercase-hex SHA-256 fingerprint). */
53
+ sealKeyId: string;
54
+ /** 32-byte Ed25519 secret seed for the sender domain signing key. */
55
+ senderDomainSigningSeed: Uint8Array;
56
+ /** Postmark fields. */
57
+ postmark: PostmarkFields;
58
+ /** Brief payload (will be canonicalized, then AEAD-sealed). */
59
+ briefPlaintext: unknown;
60
+ /** Enclosure payload (already-signed enclosure; will be canonicalized + AEAD-sealed). */
61
+ enclosurePlaintext: unknown;
62
+ /** Per-recipient keys for the brief slot (server + clients). */
63
+ briefRecipients: RecipientKey[];
64
+ /** Per-recipient keys for the enclosure slot (clients only). */
65
+ enclosureRecipients: RecipientKey[];
66
+ /** 32-byte symmetric key wrapped to every brief recipient. */
67
+ kBrief: Uint8Array;
68
+ /** 32-byte symmetric key wrapped to every enclosure recipient. */
69
+ kEnclosure: Uint8Array;
70
+ /** Envelope MAC key derived from the session. */
71
+ kEnvMAC: Uint8Array;
72
+ /** AEAD nonce for the brief seal call (12 bytes for both suites). */
73
+ briefAEADNonce: Uint8Array;
74
+ /** AEAD nonce for the enclosure seal call (12 bytes for both suites). */
75
+ enclosureAEADNonce: Uint8Array;
76
+ /**
77
+ * Per-recipient wrap randomness. Keyed by keyId. Each entry must
78
+ * carry the X25519 ephemeral private key; the PQ suite also
79
+ * requires kyberEncapsRandomnessM. The runner pins these per
80
+ * vector; production callers either generate them fresh or
81
+ * forward them from a higher layer.
82
+ */
83
+ wrapRandomness: ReadonlyMap<string, WrapRandomness>;
84
+ /** Top-level extensions object (default: {}). */
85
+ extensions?: Record<string, unknown>;
86
+ /** Seal-layer extensions (default: {}). */
87
+ sealExtensions?: Record<string, unknown>;
88
+ }
89
+ /** Wire envelope returned by {@link compose}. */
90
+ export interface Envelope {
91
+ type: "SEMP_ENVELOPE";
92
+ version: "1.0.0";
93
+ postmark: PostmarkFields;
94
+ seal: {
95
+ algorithm: string;
96
+ key_id: string;
97
+ signature: string;
98
+ session_mac: string;
99
+ brief_recipients: Record<string, string>;
100
+ enclosure_recipients: Record<string, string>;
101
+ extensions?: Record<string, unknown>;
102
+ };
103
+ brief: string;
104
+ enclosure: string;
105
+ /** Optional opaque base64-alphabet filler for size-bucket padding (§2.4). */
106
+ padding?: string;
107
+ extensions?: Record<string, unknown>;
108
+ }
109
+ /**
110
+ * Compose a wire envelope. Deterministic given the inputs (every
111
+ * randomness source is caller-supplied). Returns the wire envelope
112
+ * with seal.signature and seal.session_mac populated.
113
+ *
114
+ * Compose order:
115
+ *
116
+ * 1. AEAD-Seal the brief (canonical) under K_brief with the
117
+ * brief AEAD nonce and postmark.id as AAD per §7.1.1.
118
+ * `envelope.brief = base64(nonce || aead_ct)`.
119
+ * 2. AEAD-Seal the enclosure same way under K_enclosure.
120
+ * 3. Wrap K_brief to every brief recipient.
121
+ * 4. Wrap K_enclosure to every enclosure recipient.
122
+ * 5. Build the envelope object with seal.signature = "" and
123
+ * seal.session_mac = "" placeholders.
124
+ * 6. Compute canonical bytes per §4.3 (signature + mac blanked,
125
+ * hop_count and padding omitted), prepend SEMP-ENVELOPE:,
126
+ * Ed25519-sign with the sender domain signing seed.
127
+ * 7. Compute HMAC-SHA-256 over the same canonical bytes with
128
+ * K_env_mac.
129
+ * 8. Write both back into the envelope.
130
+ */
131
+ export declare function compose(input: ComposeInput): Envelope;
132
+ /**
133
+ * Compute the §4.3 canonical envelope bytes — signature and
134
+ * session_mac blanked, hop_count and padding omitted.
135
+ */
136
+ export declare function canonicalEnvelopeFor(envelope: unknown): Uint8Array;
137
+ /**
138
+ * Inputs to {@link openForRecipient}. Targets one recipient client;
139
+ * for the multi-recipient case the caller iterates over the slot
140
+ * map and tries each client priv until one succeeds.
141
+ */
142
+ export interface OpenInput {
143
+ suite: Suite;
144
+ envelope: Envelope;
145
+ /** Recipient client key id (matches a key in seal.*_recipients). */
146
+ recipientKeyId: string;
147
+ /** Recipient client private key (32B X25519 or 2432B hybrid). */
148
+ recipientPrivateKey: Uint8Array;
149
+ /** Recipient client public key (32B X25519 or 1216B hybrid). */
150
+ recipientPublicKey: Uint8Array;
151
+ }
152
+ /** Output of a successful open: recovered brief + enclosure plaintexts. */
153
+ export interface OpenedEnvelope {
154
+ /** Decoded brief (parsed from canonical JSON). */
155
+ brief: unknown;
156
+ /** Decoded enclosure (parsed from canonical JSON). */
157
+ enclosure: unknown;
158
+ }
159
+ /**
160
+ * Open an envelope for a specific recipient. Inverts {@link compose}:
161
+ * unwraps K_brief and K_enclosure, AEAD-decrypts both fields, and
162
+ * returns the parsed plaintexts. Throws if the recipient slot is
163
+ * absent or the AEAD tag does not verify.
164
+ *
165
+ * Does NOT verify seal.signature or seal.session_mac — those are
166
+ * the routing-server / receiving-server checks per §7.2 and live
167
+ * on the server side. {@link verifySealSignature} and
168
+ * {@link verifySessionMAC} are the corresponding verifier helpers.
169
+ */
170
+ export declare function openForRecipient(input: OpenInput): OpenedEnvelope;
171
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/envelope/compose.ts"],"names":[],"mappings":"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"}