@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,278 @@
1
+ /**
2
+ * Stateful handshake server per HANDSHAKE.md §2.
3
+ *
4
+ * Mirror of `semp-go/handshake.Server`: a state machine the caller
5
+ * drives over a transport. The class never performs network I/O
6
+ * directly — the caller moves bytes between this object and the
7
+ * underlying transport.
8
+ *
9
+ * Lifecycle:
10
+ *
11
+ * ```ts
12
+ * const s = new HandshakeServer({ ... });
13
+ * const initBytes = await transport.receive();
14
+ * const respBytes = s.onInit(initBytes);
15
+ * await transport.send(respBytes);
16
+ *
17
+ * const confirmBytes = await transport.receive();
18
+ * const acceptedBytes = s.onConfirm(confirmBytes);
19
+ * await transport.send(acceptedBytes);
20
+ *
21
+ * // s.session() now usable
22
+ * ```
23
+ *
24
+ * The high-level {@link "./server".runServer} wraps this state
25
+ * machine with the transport plumbing for callers who don't want
26
+ * to manage step ordering manually.
27
+ *
28
+ * @module
29
+ */
30
+ import { marshal as canonicalMarshal } from "../canonical/index.js";
31
+ import { deriveSessionKeysWithResumption, newHKDFSHA512, x25519Agree, x25519PublicKey, } from "../crypto/index.js";
32
+ import { fingerprint, publicKeyFromSeed } from "../keys/index.js";
33
+ import { confirmationHash } from "./confirm.js";
34
+ import { buildAccepted, buildRejected, buildResponse, } from "./messages.js";
35
+ /**
36
+ * Error thrown when a built-in policy check rejects the peer
37
+ * (suite mismatch, confirmation-hash mismatch, identity-proof
38
+ * verdict). The associated `step="rejected"` bytes have already
39
+ * been written to {@link HandshakeServer.lastRejectedBytes} so the
40
+ * caller can transmit them before closing the transport.
41
+ */
42
+ export class HandshakeServerRejectionError extends Error {
43
+ reasonCode;
44
+ reason;
45
+ rejectedBytes;
46
+ name = "HandshakeServerRejectionError";
47
+ constructor(reasonCode, reason, rejectedBytes) {
48
+ super(`handshake server rejected: ${reasonCode}${reason !== undefined ? ` (${reason})` : ""}`);
49
+ this.reasonCode = reasonCode;
50
+ this.reason = reason;
51
+ this.rejectedBytes = rejectedBytes;
52
+ }
53
+ }
54
+ /**
55
+ * Stateful handshake server. One instance handles exactly one
56
+ * handshake — discard after success or error. Re-using an instance
57
+ * is a programming error (the state machine is single-shot).
58
+ */
59
+ export class HandshakeServer {
60
+ cfg;
61
+ sessionId = "";
62
+ serverEphPriv = null;
63
+ serverNonce = null;
64
+ initCanonical = null;
65
+ respCanonical = null;
66
+ sessionKeys = null;
67
+ serverIdProof = null;
68
+ finalSession = null;
69
+ constructor(cfg) {
70
+ if (cfg.supportedSuites.length === 0) {
71
+ throw new Error("handshake: server has no supported suites");
72
+ }
73
+ if (cfg.serverDomainSigningSeed.length === 0) {
74
+ throw new Error("handshake: empty server domain signing seed");
75
+ }
76
+ if (cfg.domain === "") {
77
+ throw new Error("handshake: empty server domain");
78
+ }
79
+ this.cfg = cfg;
80
+ }
81
+ /**
82
+ * Process the client's INIT and produce signed RESPONSE bytes per
83
+ * §2.2 / §2.3. Throws {@link HandshakeServerRejectionError} on
84
+ * suite mismatch — the rejection bytes are accessible on the
85
+ * thrown error for the caller to transmit before closing the
86
+ * transport.
87
+ */
88
+ onInit(data) {
89
+ if (this.initCanonical !== null) {
90
+ throw new Error("handshake: onInit called twice");
91
+ }
92
+ const text = new TextDecoder().decode(data);
93
+ const m = JSON.parse(text);
94
+ if (m.type !== "SEMP_HANDSHAKE" || m.step !== "init") {
95
+ throw new Error("handshake: init type/step mismatch");
96
+ }
97
+ const init = m;
98
+ this.initCanonical = data;
99
+ this.sessionId = this.cfg.generateSessionId();
100
+ const negotiated = pickSuite(init.capabilities.encryption_algorithms, this.cfg.supportedSuites);
101
+ if (negotiated === undefined) {
102
+ const rej = buildRejectedSigned(this.sessionId, "version_unsupported", undefined, this.cfg.serverDomainSigningSeed);
103
+ throw new HandshakeServerRejectionError("version_unsupported", undefined, rej);
104
+ }
105
+ this.serverEphPriv = this.cfg.serverEphemeralPriv ?? randomBytes(32);
106
+ const serverEphPub = x25519PublicKey(this.serverEphPriv);
107
+ const serverEphKeyId = fingerprint(serverEphPub);
108
+ this.serverNonce = this.cfg.serverNonce ?? randomBytes(32);
109
+ const clientEphPub = base64Decode(init.client_ephemeral_key.key);
110
+ const clientNonce = base64Decode(init.nonce);
111
+ const shared = x25519Agree(this.serverEphPriv, clientEphPub);
112
+ const kdf = newHKDFSHA512();
113
+ this.sessionKeys = deriveSessionKeysWithResumption(kdf, shared, clientNonce, this.serverNonce);
114
+ this.serverIdProof = {
115
+ domain: this.cfg.domain,
116
+ key_id: fingerprint(publicKeyFromSeed(this.cfg.serverDomainSigningSeed)),
117
+ signature: this.cfg.identityProofSignature({
118
+ serverEphemeralKey: {
119
+ algorithm: negotiated,
120
+ key: base64Encode(serverEphPub),
121
+ key_id: serverEphKeyId,
122
+ },
123
+ clientNonce: init.nonce,
124
+ serverNonce: base64Encode(this.serverNonce),
125
+ }),
126
+ };
127
+ const resp = buildResponse({
128
+ sessionId: this.sessionId,
129
+ clientNonce: init.nonce,
130
+ serverNonce: base64Encode(this.serverNonce),
131
+ serverEphemeralKey: {
132
+ algorithm: negotiated,
133
+ key: base64Encode(serverEphPub),
134
+ key_id: serverEphKeyId,
135
+ },
136
+ serverIdentityProof: this.serverIdProof,
137
+ negotiated: {
138
+ encryption_algorithm: negotiated,
139
+ extensions: [],
140
+ },
141
+ serverDomainSigningSeed: this.cfg.serverDomainSigningSeed,
142
+ });
143
+ this.respCanonical = canonicalMarshal(resp);
144
+ return this.respCanonical;
145
+ }
146
+ /**
147
+ * Process the client's CONFIRM and produce signed ACCEPTED bytes
148
+ * per §2.4 / §2.5. Throws {@link HandshakeServerRejectionError}
149
+ * on confirmation-hash mismatch or identity-proof verdict
150
+ * failure.
151
+ */
152
+ onConfirm(data) {
153
+ if (this.initCanonical === null ||
154
+ this.respCanonical === null ||
155
+ this.sessionKeys === null ||
156
+ this.serverIdProof === null) {
157
+ throw new Error("handshake: onConfirm before onInit");
158
+ }
159
+ const text = new TextDecoder().decode(data);
160
+ const m = JSON.parse(text);
161
+ if (m.type !== "SEMP_HANDSHAKE" || m.step !== "confirm") {
162
+ throw new Error("handshake: confirm type/step mismatch");
163
+ }
164
+ const confirm = m;
165
+ const wantHash = confirmationHash(this.initCanonical, this.respCanonical);
166
+ const gotHash = base64Decode(confirm.confirmation_hash);
167
+ if (!constantTimeEqual(gotHash, wantHash)) {
168
+ const rej = buildRejectedSigned(this.sessionId, "handshake_invalid", undefined, this.cfg.serverDomainSigningSeed);
169
+ throw new HandshakeServerRejectionError("handshake_invalid", "confirmation hash mismatch", rej);
170
+ }
171
+ if (this.cfg.verifyIdentityProof !== undefined) {
172
+ const verdict = this.cfg.verifyIdentityProof({
173
+ identityProofB64: confirm.identity_proof,
174
+ sessionKeys: this.sessionKeys,
175
+ });
176
+ if (!verdict.ok) {
177
+ const code = verdict.reasonCode ?? "auth_failed";
178
+ const rej = buildRejectedSigned(this.sessionId, code, verdict.reason, this.cfg.serverDomainSigningSeed);
179
+ throw new HandshakeServerRejectionError(code, verdict.reason, rej);
180
+ }
181
+ }
182
+ const ticket = this.cfg.resumptionTicket?.(this.sessionKeys);
183
+ const accepted = buildAccepted({
184
+ sessionId: this.sessionId,
185
+ sessionTTL: this.cfg.sessionTTL,
186
+ permissions: [...this.cfg.permissions],
187
+ serverDomainSigningSeed: this.cfg.serverDomainSigningSeed,
188
+ ...(ticket !== undefined ? { resumptionTicket: ticket } : {}),
189
+ ...(this.cfg.acceptedExtensions !== undefined
190
+ ? { extensions: this.cfg.acceptedExtensions }
191
+ : {}),
192
+ });
193
+ this.finalSession = {
194
+ sessionId: this.sessionId,
195
+ sessionTTL: this.cfg.sessionTTL,
196
+ permissions: [...this.cfg.permissions],
197
+ keys: this.sessionKeys,
198
+ serverIdentityProofKeyId: this.serverIdProof.key_id,
199
+ serverIdentityProofSignature: this.serverIdProof.signature,
200
+ extensions: this.cfg.acceptedExtensions ?? {},
201
+ ...(ticket !== undefined ? { resumptionTicket: ticket } : {}),
202
+ };
203
+ if (this.serverEphPriv !== null) {
204
+ this.serverEphPriv.fill(0);
205
+ this.serverEphPriv = null;
206
+ }
207
+ return canonicalMarshal(accepted);
208
+ }
209
+ /** Final session, populated by {@link onConfirm}. */
210
+ session() {
211
+ if (this.finalSession === null) {
212
+ throw new Error("handshake: server session not yet established (call onConfirm first)");
213
+ }
214
+ return this.finalSession;
215
+ }
216
+ /** Wipe in-memory secret state. Idempotent. */
217
+ erase() {
218
+ if (this.serverEphPriv !== null) {
219
+ this.serverEphPriv.fill(0);
220
+ this.serverEphPriv = null;
221
+ }
222
+ this.sessionKeys = null;
223
+ }
224
+ }
225
+ function pickSuite(offered, supported) {
226
+ for (const s of supported) {
227
+ if (offered.includes(s)) {
228
+ return s;
229
+ }
230
+ }
231
+ return undefined;
232
+ }
233
+ function buildRejectedSigned(sessionId, reasonCode, reason, serverDomainSigningSeed) {
234
+ const rej = buildRejected({
235
+ sessionId,
236
+ reasonCode,
237
+ reason,
238
+ serverDomainSigningSeed,
239
+ });
240
+ return canonicalMarshal(rej);
241
+ }
242
+ function constantTimeEqual(a, b) {
243
+ if (a.length !== b.length) {
244
+ return false;
245
+ }
246
+ let diff = 0;
247
+ for (let i = 0; i < a.length; i++) {
248
+ diff |= (a[i] ?? 0) ^ (b[i] ?? 0);
249
+ }
250
+ return diff === 0;
251
+ }
252
+ function randomBytes(n) {
253
+ const out = new Uint8Array(n);
254
+ globalThis.crypto.getRandomValues(out);
255
+ return out;
256
+ }
257
+ function base64Encode(b) {
258
+ if (typeof Buffer !== "undefined") {
259
+ return Buffer.from(b).toString("base64");
260
+ }
261
+ let bin = "";
262
+ for (let i = 0; i < b.length; i++) {
263
+ bin += String.fromCharCode(b[i] ?? 0);
264
+ }
265
+ return btoa(bin);
266
+ }
267
+ function base64Decode(s) {
268
+ if (typeof Buffer !== "undefined") {
269
+ return new Uint8Array(Buffer.from(s, "base64"));
270
+ }
271
+ const bin = atob(s);
272
+ const out = new Uint8Array(bin.length);
273
+ for (let i = 0; i < bin.length; i++) {
274
+ out[i] = bin.charCodeAt(i);
275
+ }
276
+ return out;
277
+ }
278
+ //# sourceMappingURL=server_state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server_state.js","sourceRoot":"","sources":["../../src/handshake/server_state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * SEMP: Sealed Envelope Messaging Protocol — TypeScript implementation.
3
+ *
4
+ * @see {@link https://github.com/semp-dev/semp-spec}
5
+ *
6
+ * This entry point re-exports the most commonly used names from each
7
+ * layer. Callers who want a smaller import surface can target a
8
+ * specific sub-module: `import { newHKDFSHA512 } from "semp/crypto"`.
9
+ *
10
+ * @module
11
+ */
12
+ export * as brief from "./brief/index.js";
13
+ export * as canonical from "./canonical/index.js";
14
+ export * as clockskew from "./clockskew/index.js";
15
+ export * as closure from "./closure/index.js";
16
+ export * as crypto from "./crypto/index.js";
17
+ export * as delivery from "./delivery/index.js";
18
+ export * as discovery from "./discovery/index.js";
19
+ export * as enclosure from "./enclosure/index.js";
20
+ export * as envelope from "./envelope/index.js";
21
+ export * as extensions from "./extensions/index.js";
22
+ export * as handshake from "./handshake/index.js";
23
+ export * as keys from "./keys/index.js";
24
+ export * as largeattachment from "./largeattachment/index.js";
25
+ export * as migration from "./migration/index.js";
26
+ export * as recovery from "./recovery/index.js";
27
+ export * as reputation from "./reputation/index.js";
28
+ export * as seal from "./seal/index.js";
29
+ export * as session from "./session/index.js";
30
+ export * as transparency from "./transparency/index.js";
31
+ export * as transport from "./transport/index.js";
32
+ export { type ReasonCode, KnownReasonCodes, isKnownReasonCode, isRecoverable, } from "./reasoncodes.js";
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,KAAK,UAAU,EACf,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACd,MAAM,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,33 @@
1
+ /**
2
+ * SEMP: Sealed Envelope Messaging Protocol — TypeScript implementation.
3
+ *
4
+ * @see {@link https://github.com/semp-dev/semp-spec}
5
+ *
6
+ * This entry point re-exports the most commonly used names from each
7
+ * layer. Callers who want a smaller import surface can target a
8
+ * specific sub-module: `import { newHKDFSHA512 } from "semp/crypto"`.
9
+ *
10
+ * @module
11
+ */
12
+ export * as brief from "./brief/index.js";
13
+ export * as canonical from "./canonical/index.js";
14
+ export * as clockskew from "./clockskew/index.js";
15
+ export * as closure from "./closure/index.js";
16
+ export * as crypto from "./crypto/index.js";
17
+ export * as delivery from "./delivery/index.js";
18
+ export * as discovery from "./discovery/index.js";
19
+ export * as enclosure from "./enclosure/index.js";
20
+ export * as envelope from "./envelope/index.js";
21
+ export * as extensions from "./extensions/index.js";
22
+ export * as handshake from "./handshake/index.js";
23
+ export * as keys from "./keys/index.js";
24
+ export * as largeattachment from "./largeattachment/index.js";
25
+ export * as migration from "./migration/index.js";
26
+ export * as recovery from "./recovery/index.js";
27
+ export * as reputation from "./reputation/index.js";
28
+ export * as seal from "./seal/index.js";
29
+ export * as session from "./session/index.js";
30
+ export * as transparency from "./transparency/index.js";
31
+ export * as transport from "./transport/index.js";
32
+ export { KnownReasonCodes, isKnownReasonCode, isRecoverable, } from "./reasoncodes.js";
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAEL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACd,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * KEY.md §10.5.5 atomic identity-key rotation cascade.
3
+ *
4
+ * Revoking a device with reason `key_compromise` MUST be done in
5
+ * the same transaction as rotating to a new identity key plus a new
6
+ * encryption key — the compromised device held the shared identity
7
+ * private key, so the adversary holds it too. A partial cascade
8
+ * (device revoked but identity key not rotated) leaves the account
9
+ * vulnerable and is a specification violation.
10
+ *
11
+ * The bundle a revoking device produces:
12
+ *
13
+ * 1. {@link DeviceRevocation} for the compromised device, reason
14
+ * `key_compromise`, signed by the prior identity key.
15
+ * 2. {@link SuccessorRecord} linking the prior identity key to the
16
+ * new one, with `recovery_signature` and `new_key_signature`
17
+ * populated. The home server fills in `domain_signature` on
18
+ * receipt per RECOVERY.md §7.3.
19
+ * 3. New identity + new encryption public keys, fresh and ready to
20
+ * publish via the account's key endpoint.
21
+ * 4. {@link RevocationPublication} for the prior identity key,
22
+ * reason `key_compromise`, `replacement_key_id` pointing at the
23
+ * new identity key, signed by the prior identity key (which the
24
+ * revoking device still holds).
25
+ *
26
+ * The home server runs {@link verifyCompromiseRotation} on receipt,
27
+ * then commits all four artifacts atomically.
28
+ *
29
+ * @module
30
+ */
31
+ import { type SuccessorRecord } from "../recovery/index.js";
32
+ import { type DeviceRevocation } from "./device_records.js";
33
+ import { type RevocationPublication } from "./key_revocation.js";
34
+ /**
35
+ * The four-artifact bundle a revoking device produces for the
36
+ * KEY.md §10.5.5 atomic identity-key rotation cascade.
37
+ *
38
+ * The home server MUST treat the bundle atomically: either every
39
+ * artifact lands or none of them do.
40
+ */
41
+ export interface CompromiseRotation {
42
+ device_revocation: DeviceRevocation;
43
+ successor: SuccessorRecord;
44
+ /** Raw bytes of the new identity public key. */
45
+ new_identity_public_key: Uint8Array;
46
+ new_identity_key_id: string;
47
+ /** Raw bytes of the new encryption public key. */
48
+ new_encryption_public_key: Uint8Array;
49
+ new_encryption_key_id: string;
50
+ prior_identity_revocation: RevocationPublication;
51
+ }
52
+ /**
53
+ * Inputs to {@link buildCompromiseRotation}. The caller is
54
+ * responsible for generating the new keys (typically with a
55
+ * fresh Ed25519 / X25519 / Kyber768 key pair) and for deriving
56
+ * the recovery signing key from the user's recovery secret per
57
+ * RECOVERY.md §3.3.
58
+ */
59
+ export interface CompromiseRotationInput {
60
+ /** Account's full SEMP address. */
61
+ userId: string;
62
+ /** Device being revoked. */
63
+ compromisedDeviceId: string;
64
+ /** Device producing the cascade — recorded as `revoked_by_device_id`. */
65
+ revokingDeviceId: string;
66
+ /** 32-byte Ed25519 seed for the prior identity key. */
67
+ priorIdentitySeed: Uint8Array;
68
+ priorIdentityKeyId: string;
69
+ /** 32-byte Ed25519 seed for the new identity key. */
70
+ newIdentitySeed: Uint8Array;
71
+ /** Raw public bytes of the new identity key. */
72
+ newIdentityPublicKey: Uint8Array;
73
+ newIdentityKeyId: string;
74
+ /**
75
+ * Raw public bytes of the new encryption key. Only the public half
76
+ * is needed in the cascade; the private half is sync'd to remaining
77
+ * full-access devices via the device-sync channel per §10.5.5
78
+ * step 5.
79
+ */
80
+ newEncryptionPublicKey: Uint8Array;
81
+ newEncryptionKeyId: string;
82
+ /**
83
+ * 32-byte Ed25519 seed of the recovery signing key derived from the
84
+ * user's recovery secret per RECOVERY.md §3.3. Signs the successor
85
+ * record's `recovery_signature`.
86
+ */
87
+ recoverySeed: Uint8Array;
88
+ recoveryKeyId: string;
89
+ /** Wall-clock used to stamp `revoked_at` and `recovered_at`. Defaults to `new Date()`. */
90
+ now?: Date;
91
+ }
92
+ /**
93
+ * Produce the four-artifact bundle a revoking device submits to the
94
+ * home server atomically.
95
+ *
96
+ * The successor record's `domain_signature` is left empty; the home
97
+ * server adds it on receipt per RECOVERY.md §7.3.
98
+ *
99
+ * Throws on missing input or signing failure.
100
+ */
101
+ export declare function buildCompromiseRotation(input: CompromiseRotationInput): CompromiseRotation;
102
+ /**
103
+ * Verify every device-side signature in the cascade. The home server
104
+ * runs this on receipt before committing the bundle, then adds its
105
+ * own `domain_signature` to the successor record per RECOVERY.md §7.3.
106
+ *
107
+ * Throws on the first violation.
108
+ *
109
+ * @param c - the bundle
110
+ * @param priorIdentityPub - published public half of the prior
111
+ * identity key (the home server resolves it from the account's
112
+ * now-revoked-but-historical key set)
113
+ * @param recoveryVerifyPub - the `recovery_verify_pk` that the prior
114
+ * identity key signed at bundle upload time per RECOVERY.md §7.5
115
+ * (the home server resolves it from the prior key record)
116
+ */
117
+ export declare function verifyCompromiseRotation(c: CompromiseRotation, priorIdentityPub: Uint8Array, recoveryVerifyPub: Uint8Array): void;
118
+ //# sourceMappingURL=compromise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compromise.d.ts","sourceRoot":"","sources":["../../src/keys/compromise.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EACL,KAAK,eAAe,EAOrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,gBAAgB,EAKtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,qBAAqB,EAM3B,MAAM,qBAAqB,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,SAAS,EAAE,eAAe,CAAC;IAC3B,gDAAgD;IAChD,uBAAuB,EAAE,UAAU,CAAC;IACpC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kDAAkD;IAClD,yBAAyB,EAAE,UAAU,CAAC;IACtC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yBAAyB,EAAE,qBAAqB,CAAC;CAClD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;IAEzB,uDAAuD;IACvD,iBAAiB,EAAE,UAAU,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAE3B,qDAAqD;IACrD,eAAe,EAAE,UAAU,CAAC;IAC5B,gDAAgD;IAChD,oBAAoB,EAAE,UAAU,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,sBAAsB,EAAE,UAAU,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,YAAY,EAAE,UAAU,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IAEtB,0FAA0F;IAC1F,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,uBAAuB,GAC7B,kBAAkB,CA0GpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,CAAC,EAAE,kBAAkB,EACrB,gBAAgB,EAAE,UAAU,EAC5B,iBAAiB,EAAE,UAAU,GAC5B,IAAI,CAiEN"}