@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,328 @@
1
+ /**
2
+ * Scoped device certificates per KEY.md §10.3.
3
+ *
4
+ * A `SEMP_DEVICE_CERTIFICATE` binds a delegated device's public key
5
+ * to a permission scope and is signed by an existing full-access
6
+ * device of the account (the issuer). The home server enforces the
7
+ * scope on every relevant operation by the delegated device.
8
+ *
9
+ * This module provides:
10
+ *
11
+ * - {@link DeviceCertificate} typed shape + the supporting
12
+ * {@link Scope}, {@link ScopeMatcher}, {@link ScopeResource},
13
+ * {@link ScopeEntry}, {@link RateLimitTier} types.
14
+ * - {@link signDeviceCertificate}: build + Ed25519-sign a certificate
15
+ * under the issuing device's signing seed (path
16
+ * `signature.value`, prefix `SEMP-DEVICE-AUTHORIZE:`).
17
+ * - {@link verifyDeviceCertificate}: Ed25519-verify against the
18
+ * issuer's published device public key.
19
+ * - {@link validateDeviceCertificate}: structural checks per
20
+ * §10.3.2 / §10.3.3 / §10.3.8 (lifetime cap, scope rules).
21
+ * - {@link scopeAllowsRecipient} / {@link scopeAllowsSender}:
22
+ * enforcement helpers that the home server invokes on each
23
+ * operation per §10.3.4.
24
+ *
25
+ * @module
26
+ */
27
+ import { signSignedDoc, verifySignedDoc } from "./signed.js";
28
+ /** `type` discriminator for a device certificate. */
29
+ export const DeviceCertificateType = "SEMP_DEVICE_CERTIFICATE";
30
+ /** Domain-separation prefix for the issuer signature, per ENVELOPE.md §4.3. */
31
+ export const DeviceAuthorizePrefix = "SEMP-DEVICE-AUTHORIZE:";
32
+ /** Combined cap on `allow + deny` size in a single matcher per §10.3.3.1. */
33
+ export const MaxScopeMatcherEntries = 10_000;
34
+ /** Cap on rate-limit tiers per scope field per §10.3.3.3. */
35
+ export const MaxScopeRateLimitTiers = 16;
36
+ /** Cap on certificate lifetime per §10.3.8: 365 days, in milliseconds. */
37
+ export const MaxDeviceCertificateLifetimeMs = 365 * 24 * 3600 * 1000;
38
+ /**
39
+ * Compute the issuer's signature over the canonical certificate
40
+ * bytes, then return a copy with `signature.{algorithm,key_id,value}`
41
+ * populated. Pre-populates the algorithm + key_id BEFORE
42
+ * canonicalization so the canonical bytes cover both — an attacker
43
+ * cannot downgrade the signing algorithm or forge a different
44
+ * issuer fingerprint.
45
+ */
46
+ export function signDeviceCertificate(input) {
47
+ if (input.issuerKeyId === "") {
48
+ throw new Error("device certificate: empty issuer key_id");
49
+ }
50
+ validateDeviceCertificate(input.certificate, { skipSignatureCheck: true });
51
+ const preSign = {
52
+ ...input.certificate,
53
+ signature: {
54
+ algorithm: "ed25519",
55
+ key_id: input.issuerKeyId,
56
+ value: "",
57
+ },
58
+ };
59
+ const { signedJSON, signatureB64 } = signSignedDoc({
60
+ preSignJSON: preSign,
61
+ seed: input.issuerSigningSeed,
62
+ signaturePath: "signature.value",
63
+ prefix: DeviceAuthorizePrefix,
64
+ });
65
+ return {
66
+ certificate: signedJSON,
67
+ signatureB64,
68
+ };
69
+ }
70
+ /**
71
+ * Ed25519-verify a certificate's signature under `issuerPub`. Returns
72
+ * true when the signature verifies. Does NOT cross-check that the
73
+ * issuer is currently a registered, non-revoked full-access device
74
+ * for the account — that requires a key directory store and is the
75
+ * caller's responsibility.
76
+ */
77
+ export function verifyDeviceCertificate(certificate, issuerPub) {
78
+ validateDeviceCertificate(certificate);
79
+ if (certificate.signature.value === "") {
80
+ return false;
81
+ }
82
+ const { ok } = verifySignedDoc({
83
+ signedJSON: certificate,
84
+ publicKey: issuerPub,
85
+ signaturePath: "signature.value",
86
+ prefix: DeviceAuthorizePrefix,
87
+ });
88
+ return ok;
89
+ }
90
+ /**
91
+ * Structural validation per §10.3.2 / §10.3.3 / §10.3.8. Throws on
92
+ * the first violation. Does NOT verify the signature; pair with
93
+ * {@link verifyDeviceCertificate}.
94
+ */
95
+ export function validateDeviceCertificate(c, opts = {}) {
96
+ if (c.type !== DeviceCertificateType) {
97
+ throw new Error(`device certificate: type ${JSON.stringify(c.type)}, want ${DeviceCertificateType}`);
98
+ }
99
+ if (typeof c.version !== "string" || c.version === "") {
100
+ throw new Error("device certificate: missing version");
101
+ }
102
+ for (const f of ["device_id", "device_public_key", "account", "issued_by"]) {
103
+ if (typeof c[f] !== "string" || c[f] === "") {
104
+ throw new Error(`device certificate: missing ${f}`);
105
+ }
106
+ }
107
+ for (const f of ["issued_at", "expires_at"]) {
108
+ if (typeof c[f] !== "string" || c[f] === "") {
109
+ throw new Error(`device certificate: missing ${f}`);
110
+ }
111
+ }
112
+ const issued = Date.parse(c.issued_at);
113
+ const expires = Date.parse(c.expires_at);
114
+ if (Number.isNaN(issued)) {
115
+ throw new Error(`device certificate: issued_at is not ISO 8601: ${c.issued_at}`);
116
+ }
117
+ if (Number.isNaN(expires)) {
118
+ throw new Error(`device certificate: expires_at is not ISO 8601: ${c.expires_at}`);
119
+ }
120
+ if (expires <= issued) {
121
+ throw new Error("device certificate: expires_at MUST be after issued_at");
122
+ }
123
+ if (expires - issued > MaxDeviceCertificateLifetimeMs) {
124
+ throw new Error(`device certificate: lifetime ${expires - issued} ms exceeds 365-day cap (KEY.md §10.3.8)`);
125
+ }
126
+ validateScope(c.scope);
127
+ if (typeof c.signature?.algorithm !== "string" || c.signature.algorithm === "") {
128
+ throw new Error("device certificate: missing signature.algorithm");
129
+ }
130
+ if (typeof c.signature?.key_id !== "string" || c.signature.key_id === "") {
131
+ throw new Error("device certificate: missing signature.key_id");
132
+ }
133
+ if (typeof c.signature?.value !== "string") {
134
+ throw new Error("device certificate: signature.value must be a string");
135
+ }
136
+ if (!opts.skipSignatureCheck && c.signature.value === "") {
137
+ throw new Error("device certificate: signature.value is empty (unsigned)");
138
+ }
139
+ }
140
+ /** Structural validation of a {@link Scope} per §10.3.3. */
141
+ export function validateScope(scope) {
142
+ if (scope === undefined || scope === null) {
143
+ throw new Error("scope: missing");
144
+ }
145
+ validateMatcher(scope.send, "scope.send", false);
146
+ validateMatcher(scope.receive, "scope.receive", true);
147
+ validateResource(scope.blocklist, "scope.blocklist");
148
+ validateResource(scope.keys, "scope.keys");
149
+ validateResource(scope.devices, "scope.devices");
150
+ }
151
+ function validateMatcher(m, path, allowDeliveryStage) {
152
+ if (m === undefined || m === null) {
153
+ throw new Error(`${path}: missing`);
154
+ }
155
+ if (!Array.isArray(m.rate_limits)) {
156
+ throw new Error(`${path}.rate_limits: missing or not an array`);
157
+ }
158
+ validateRateLimits(m.rate_limits, `${path}.rate_limits`);
159
+ const allow = m.allow ?? [];
160
+ const deny = m.deny ?? [];
161
+ switch (m.mode) {
162
+ case "unrestricted":
163
+ case "none":
164
+ if (allow.length > 0 || deny.length > 0) {
165
+ throw new Error(`${path}: mode=${m.mode} requires allow + deny absent or empty`);
166
+ }
167
+ break;
168
+ case "restricted":
169
+ if (allow.length === 0) {
170
+ throw new Error(`${path}: mode=restricted requires non-empty allow`);
171
+ }
172
+ if (deny.length > 0) {
173
+ throw new Error(`${path}: mode=restricted forbids deny`);
174
+ }
175
+ break;
176
+ case "denylist":
177
+ if (deny.length === 0) {
178
+ throw new Error(`${path}: mode=denylist requires non-empty deny`);
179
+ }
180
+ if (allow.length > 0) {
181
+ throw new Error(`${path}: mode=denylist forbids allow`);
182
+ }
183
+ break;
184
+ default:
185
+ throw new Error(`${path}: invalid mode ${JSON.stringify(m.mode)}`);
186
+ }
187
+ if (allow.length + deny.length > MaxScopeMatcherEntries) {
188
+ throw new Error(`${path}: allow + deny size ${allow.length + deny.length} exceeds cap ${MaxScopeMatcherEntries}`);
189
+ }
190
+ for (let i = 0; i < allow.length; i++) {
191
+ validateScopeEntry(allow[i], `${path}.allow[${i}]`);
192
+ }
193
+ for (let i = 0; i < deny.length; i++) {
194
+ validateScopeEntry(deny[i], `${path}.deny[${i}]`);
195
+ }
196
+ if (m.delivery_stage !== undefined) {
197
+ if (!allowDeliveryStage) {
198
+ throw new Error(`${path}: delivery_stage MUST be omitted on send matcher`);
199
+ }
200
+ if (!Number.isInteger(m.delivery_stage) || m.delivery_stage < 1) {
201
+ throw new Error(`${path}.delivery_stage: ${m.delivery_stage} MUST be a positive integer`);
202
+ }
203
+ }
204
+ }
205
+ function validateScopeEntry(e, path) {
206
+ switch (e.type) {
207
+ case "user":
208
+ if (typeof e.address !== "string" || e.address === "") {
209
+ throw new Error(`${path}: type=user requires address`);
210
+ }
211
+ break;
212
+ case "domain":
213
+ if (typeof e.domain !== "string" || e.domain === "") {
214
+ throw new Error(`${path}: type=domain requires domain`);
215
+ }
216
+ break;
217
+ case "server":
218
+ // Spec allows either `server` or `domain` as the matching key on
219
+ // server entries; the example schemas in DELIVERY.md §5.3 use
220
+ // `server`, but the device-cert example uses `domain`. Accept
221
+ // either.
222
+ if ((typeof e.server !== "string" || e.server === "") &&
223
+ (typeof e.domain !== "string" || e.domain === "")) {
224
+ throw new Error(`${path}: type=server requires server or domain`);
225
+ }
226
+ break;
227
+ default:
228
+ throw new Error(`${path}: invalid entity type ${JSON.stringify(e.type)}`);
229
+ }
230
+ }
231
+ function validateResource(r, path) {
232
+ if (r === undefined || r === null) {
233
+ throw new Error(`${path}: missing`);
234
+ }
235
+ if (typeof r.read !== "boolean") {
236
+ throw new Error(`${path}.read: must be boolean`);
237
+ }
238
+ if (typeof r.write !== "boolean") {
239
+ throw new Error(`${path}.write: must be boolean`);
240
+ }
241
+ if (!Array.isArray(r.rate_limits)) {
242
+ throw new Error(`${path}.rate_limits: missing or not an array`);
243
+ }
244
+ validateRateLimits(r.rate_limits, `${path}.rate_limits`);
245
+ }
246
+ function validateRateLimits(tiers, path) {
247
+ if (tiers.length > MaxScopeRateLimitTiers) {
248
+ throw new Error(`${path}: ${tiers.length} tiers exceeds cap ${MaxScopeRateLimitTiers}`);
249
+ }
250
+ for (let i = 0; i < tiers.length; i++) {
251
+ const t = tiers[i];
252
+ if (!Number.isInteger(t.period_seconds) || t.period_seconds < 1) {
253
+ throw new Error(`${path}[${i}].period_seconds: ${t.period_seconds} MUST be >= 1`);
254
+ }
255
+ if (!Number.isInteger(t.amount_allowed) || t.amount_allowed < 0) {
256
+ throw new Error(`${path}[${i}].amount_allowed: ${t.amount_allowed} MUST be >= 0`);
257
+ }
258
+ }
259
+ }
260
+ /**
261
+ * Report whether `matcher` permits sending to `recipient` per
262
+ * §10.3.3.1. Does NOT evaluate rate limits — the caller applies
263
+ * rate-limit tiers separately per §10.3.4.
264
+ */
265
+ export function scopeAllowsRecipient(matcher, recipient) {
266
+ switch (matcher.mode) {
267
+ case "unrestricted":
268
+ return true;
269
+ case "none":
270
+ return false;
271
+ case "restricted":
272
+ return matchAny(matcher.allow ?? [], recipient);
273
+ case "denylist":
274
+ return !matchAny(matcher.deny ?? [], recipient);
275
+ default:
276
+ // Unknown mode — fail closed.
277
+ return false;
278
+ }
279
+ }
280
+ /**
281
+ * Report whether `matcher` permits receiving from `sender` per
282
+ * §10.3.3.1. Identical evaluation to {@link scopeAllowsRecipient};
283
+ * separate name reads clearly at call sites.
284
+ */
285
+ export function scopeAllowsSender(matcher, sender) {
286
+ return scopeAllowsRecipient(matcher, sender);
287
+ }
288
+ function matchAny(entries, addr) {
289
+ const peer = addr.address.toLowerCase();
290
+ const peerDomain = peer.includes("@") ? peer.split("@").pop() ?? "" : "";
291
+ const peerServer = (addr.server ?? "").toLowerCase();
292
+ for (const entry of entries) {
293
+ switch (entry.type) {
294
+ case "user":
295
+ if (typeof entry.address === "string" &&
296
+ entry.address !== "" &&
297
+ entry.address.toLowerCase() === peer) {
298
+ return true;
299
+ }
300
+ break;
301
+ case "domain":
302
+ if (typeof entry.domain === "string" &&
303
+ entry.domain !== "" &&
304
+ entry.domain.toLowerCase() === peerDomain) {
305
+ return true;
306
+ }
307
+ break;
308
+ case "server": {
309
+ const ent = (entry.server ?? entry.domain ?? "").toLowerCase();
310
+ if (ent === "") {
311
+ continue;
312
+ }
313
+ // Server entries match either the routing server hostname (when
314
+ // known) or the recipient's domain (which is approximately the
315
+ // server identity for direct-domain deployments).
316
+ if (peerServer !== "" && ent === peerServer) {
317
+ return true;
318
+ }
319
+ if (peerServer === "" && ent === peerDomain) {
320
+ return true;
321
+ }
322
+ break;
323
+ }
324
+ }
325
+ }
326
+ return false;
327
+ }
328
+ //# sourceMappingURL=device_certificate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device_certificate.js","sourceRoot":"","sources":["../../src/keys/device_certificate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Multi-device record primitives per KEY.md §10.1, §10.5, §10.6.
3
+ *
4
+ * Three record kinds share an account-identity-key signature on the
5
+ * outer envelope so a home server or correspondent can verify
6
+ * "this record was authored by the account's current identity key"
7
+ * without knowing the device graph in advance:
8
+ *
9
+ * - {@link DeviceRegistration} (`SEMP_DEVICE`, step="register"):
10
+ * announces a new device. Carries device pubkey, role, and an
11
+ * INNER authorization signature from an existing full-access
12
+ * device that authorized the enrollment (§10.2).
13
+ * - {@link DeviceRevocation} (`SEMP_DEVICE_REVOCATION`): removes
14
+ * a device from the active set per §10.5.
15
+ * - {@link DeviceDirectory} (`SEMP_DEVICE_DIRECTORY`): the
16
+ * home server's signed list of currently active devices, with
17
+ * a monotonically increasing revision so correspondents can
18
+ * detect rollback per §10.6.
19
+ *
20
+ * The SEMP_DEVICE_CERTIFICATE (scoped delegation) lives in
21
+ * {@link "./device_certificate"}.
22
+ *
23
+ * @module
24
+ */
25
+ /** Wire-level type discriminators. */
26
+ export declare const DeviceRegistrationType = "SEMP_DEVICE";
27
+ export declare const DeviceRegistrationStep = "register";
28
+ export declare const DeviceRevocationType = "SEMP_DEVICE_REVOCATION";
29
+ export declare const DeviceDirectoryType = "SEMP_DEVICE_DIRECTORY";
30
+ export declare const DeviceRecordVersion = "1.0.0";
31
+ /** Domain-separation prefixes per ENVELOPE.md §4.3. */
32
+ export declare const DeviceRegisterPrefix = "SEMP-DEVICE-REGISTER:";
33
+ export declare const DeviceAuthorizeRecordPrefix = "SEMP-DEVICE-AUTHORIZE:";
34
+ export declare const DeviceRevocationPrefix = "SEMP-DEVICE-REVOCATION:";
35
+ export declare const DeviceDirectoryPrefix = "SEMP-DEVICE-DIRECTORY:";
36
+ /** Device authority levels per §10.1. */
37
+ export type DeviceRole = "full_access" | "delegated";
38
+ /** Authorization methods per §10.2.1. */
39
+ export type DeviceAuthorizationMethod = "qr_scan" | "numeric_code";
40
+ /** Reasons a device may be revoked per §10.5.2. */
41
+ export type DeviceRevocationReason = "key_compromise" | "lost" | "retired" | "superseded";
42
+ /**
43
+ * Report whether `r` is the kind of revocation that triggers
44
+ * mandatory identity-key rotation per §10.5.5.
45
+ */
46
+ export declare function requiresIdentityRotation(r: DeviceRevocationReason): boolean;
47
+ /** Reusable signature block. */
48
+ export interface KeysSignature {
49
+ algorithm: string;
50
+ key_id: string;
51
+ value: string;
52
+ }
53
+ /** Inner authorization block embedded in a {@link DeviceRegistration}. */
54
+ export interface DeviceAuthorization {
55
+ method: DeviceAuthorizationMethod;
56
+ authorizing_device_id: string;
57
+ authorizing_signature: KeysSignature;
58
+ }
59
+ /** SEMP_DEVICE register record per §10.1. */
60
+ export interface DeviceRegistration {
61
+ type: typeof DeviceRegistrationType;
62
+ step: typeof DeviceRegistrationStep;
63
+ version: string;
64
+ user_id: string;
65
+ device_id: string;
66
+ device_name: string;
67
+ device_type: string;
68
+ device_public_key: string;
69
+ device_identity_pubkey_algorithm: string;
70
+ /** ISO 8601 UTC. */
71
+ enrolled_at: string;
72
+ role: DeviceRole;
73
+ /** For `delegated`: matches a SEMP_DEVICE_CERTIFICATE device_id. For `full_access`: null. */
74
+ certificate_id: string | null;
75
+ authorization: DeviceAuthorization;
76
+ signature: KeysSignature;
77
+ }
78
+ /** SEMP_DEVICE_REVOCATION record per §10.5.1. */
79
+ export interface DeviceRevocation {
80
+ type: typeof DeviceRevocationType;
81
+ version: string;
82
+ user_id: string;
83
+ device_id: string;
84
+ reason: DeviceRevocationReason;
85
+ /** ISO 8601 UTC. */
86
+ revoked_at: string;
87
+ revoked_by_device_id: string;
88
+ /** Non-null only for reason="superseded". */
89
+ replacement_device_id: string | null;
90
+ signature: KeysSignature;
91
+ }
92
+ /** One entry inside a {@link DeviceDirectory} per §10.6.1. */
93
+ export interface DeviceDirectoryEntry {
94
+ device_id: string;
95
+ device_public_key: string;
96
+ device_identity_pubkey_algorithm: string;
97
+ role: DeviceRole;
98
+ certificate_id: string | null;
99
+ /** ISO 8601 UTC. */
100
+ enrolled_at: string;
101
+ device_name: string;
102
+ device_type: string;
103
+ }
104
+ /** SEMP_DEVICE_DIRECTORY record per §10.6.1. */
105
+ export interface DeviceDirectory {
106
+ type: typeof DeviceDirectoryType;
107
+ version: string;
108
+ user_id: string;
109
+ /** Monotonically non-decreasing per emission. */
110
+ revision: number;
111
+ /** ISO 8601 UTC. */
112
+ issued_at: string;
113
+ devices: DeviceDirectoryEntry[];
114
+ signature: KeysSignature;
115
+ }
116
+ /**
117
+ * Inputs to {@link signDeviceAuthorization}. The signature covers the
118
+ * length-prefixed (NUL-separated) concatenation of
119
+ * `device_id || device_public_key || enrolled_at || enroll_nonce`,
120
+ * prefixed with `SEMP-DEVICE-AUTHORIZE:`.
121
+ */
122
+ export interface SignDeviceAuthorizationInput {
123
+ /** The half-built registration; `authorization` will be replaced. */
124
+ registration: DeviceRegistration;
125
+ /** 32-byte Ed25519 secret seed for the authorizing full-access device. */
126
+ authorizingDeviceSeed: Uint8Array;
127
+ /** Stable id of the authorizing device. */
128
+ authorizingDeviceId: string;
129
+ /** Lowercase-hex SHA-256 fingerprint of the authorizing device pub. */
130
+ authorizingDeviceKeyId: string;
131
+ /** Fresh 32-byte enrollment nonce (single-use per attempt). */
132
+ enrollNonce: Uint8Array;
133
+ /** `qr_scan` or `numeric_code`. */
134
+ method: DeviceAuthorizationMethod;
135
+ }
136
+ /**
137
+ * Sign the inner authorization block and place it on
138
+ * `registration.authorization`. The caller MUST have populated
139
+ * `registration.device_id`, `device_public_key`, `enrolled_at`
140
+ * before calling.
141
+ */
142
+ export declare function signDeviceAuthorization(input: SignDeviceAuthorizationInput): void;
143
+ /**
144
+ * Verify the inner authorizing-device signature on `registration`
145
+ * using the supplied authorizing-device public key and the SAME
146
+ * `enrollNonce` that was used at sign time. Returns true on success.
147
+ */
148
+ export declare function verifyDeviceAuthorization(registration: DeviceRegistration, authorizingDevicePub: Uint8Array, enrollNonce: Uint8Array): boolean;
149
+ /** Sign the outer identity-key signature on a registration record. */
150
+ export declare function signDeviceRegistration(reg: DeviceRegistration, identityPriv: Uint8Array, identityKeyId: string): string;
151
+ /** Verify the outer identity-key signature on a registration record. */
152
+ export declare function verifyDeviceRegistration(reg: DeviceRegistration, identityPub: Uint8Array): boolean;
153
+ /** Structural validation per §10.1. Throws on first violation. */
154
+ export declare function validateDeviceRegistration(reg: DeviceRegistration, opts?: {
155
+ skipSignatureCheck?: boolean;
156
+ }): void;
157
+ /** Sign the identity-key signature on a device revocation record. */
158
+ export declare function signDeviceRevocation(rev: DeviceRevocation, identityPriv: Uint8Array, identityKeyId: string): string;
159
+ /** Verify a device revocation record. */
160
+ export declare function verifyDeviceRevocation(rev: DeviceRevocation, identityPub: Uint8Array): boolean;
161
+ /** Structural validation per §10.5.1. Throws on first violation. */
162
+ export declare function validateDeviceRevocation(rev: DeviceRevocation, opts?: {
163
+ skipSignatureCheck?: boolean;
164
+ }): void;
165
+ /** Sign the identity-key signature on a device directory record. */
166
+ export declare function signDeviceDirectory(dir: DeviceDirectory, identityPriv: Uint8Array, identityKeyId: string): string;
167
+ /** Verify a device directory record. */
168
+ export declare function verifyDeviceDirectory(dir: DeviceDirectory, identityPub: Uint8Array): boolean;
169
+ /** Structural validation per §10.6.1. Throws on first violation. */
170
+ export declare function validateDeviceDirectory(dir: DeviceDirectory, opts?: {
171
+ skipSignatureCheck?: boolean;
172
+ }): void;
173
+ /** Look up a device entry by id. Returns null when not found. */
174
+ export declare function findDevice(dir: DeviceDirectory, deviceId: string): DeviceDirectoryEntry | null;
175
+ //# sourceMappingURL=device_records.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device_records.d.ts","sourceRoot":"","sources":["../../src/keys/device_records.ts"],"names":[],"mappings":"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"}