@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,202 @@
1
+ /**
2
+ * Sign / verify primitives for reputation wire records per
3
+ * REPUTATION.md §4.2 + §3.5 + §5.
4
+ *
5
+ * Reputation records use a NO-PREFIX signing input — the canonical
6
+ * bytes with `signature.value` elided are signed directly under
7
+ * Ed25519. Other SEMP records use SEMP-* domain-separation
8
+ * prefixes (registered in ENVELOPE.md §4.3) but reputation ones do
9
+ * not in the current spec.
10
+ *
11
+ * @module
12
+ */
13
+ import { marshal as canonicalMarshal } from "../canonical/index.js";
14
+ import { sign as ed25519Sign, verify as ed25519Verify, } from "../keys/index.js";
15
+ import { applyBucketing } from "./bucketize.js";
16
+ import {} from "./types.js";
17
+ /** Only signature algorithm currently defined. */
18
+ export const SignatureAlgorithmEd25519 = "ed25519";
19
+ // ---------------------------------------------------------------------------
20
+ // Observation
21
+ /**
22
+ * Bucketize metrics in place (per §4.5.1), then Ed25519-sign
23
+ * `obs.signature` over the canonical bytes with `signature.value`
24
+ * elided.
25
+ */
26
+ export function signObservation(obs, observerPriv, observerKeyId) {
27
+ if (observerKeyId === "") {
28
+ throw new Error("reputation: empty observer key_id");
29
+ }
30
+ if (obs.extensions === undefined) {
31
+ obs.extensions = {};
32
+ }
33
+ applyBucketing(obs.metrics);
34
+ obs.signature.algorithm = SignatureAlgorithmEd25519;
35
+ obs.signature.key_id = observerKeyId;
36
+ obs.signature.value = "";
37
+ const canonicalBytes = canonicalRecordBytes(obs, "signature");
38
+ const sig = ed25519Sign(observerPriv, canonicalBytes);
39
+ const sigB64 = base64Encode(sig);
40
+ obs.signature.value = sigB64;
41
+ return sigB64;
42
+ }
43
+ /** Verify `obs.signature` against `observerPub`. */
44
+ export function verifyObservation(obs, observerPub) {
45
+ if (obs.signature.value === "") {
46
+ return false;
47
+ }
48
+ let sig;
49
+ try {
50
+ sig = base64Decode(obs.signature.value);
51
+ }
52
+ catch {
53
+ return false;
54
+ }
55
+ const canonicalBytes = canonicalRecordBytes(obs, "signature");
56
+ return ed25519Verify(observerPub, sig, canonicalBytes);
57
+ }
58
+ // ---------------------------------------------------------------------------
59
+ // TrustObservations envelope
60
+ /** Sign a {@link TrustObservations} response under the observer's signing key. */
61
+ export function signTrustObservations(resp, observerPriv, observerKeyId) {
62
+ if (observerKeyId === "") {
63
+ throw new Error("reputation: empty observer key_id");
64
+ }
65
+ resp.signature.algorithm = SignatureAlgorithmEd25519;
66
+ resp.signature.key_id = observerKeyId;
67
+ resp.signature.value = "";
68
+ const canonicalBytes = canonicalRecordBytes(resp, "signature");
69
+ const sig = ed25519Sign(observerPriv, canonicalBytes);
70
+ const sigB64 = base64Encode(sig);
71
+ resp.signature.value = sigB64;
72
+ return sigB64;
73
+ }
74
+ /** Verify a {@link TrustObservations} response. */
75
+ export function verifyTrustObservations(resp, observerPub) {
76
+ if (resp.signature.value === "") {
77
+ return false;
78
+ }
79
+ let sig;
80
+ try {
81
+ sig = base64Decode(resp.signature.value);
82
+ }
83
+ catch {
84
+ return false;
85
+ }
86
+ const canonicalBytes = canonicalRecordBytes(resp, "signature");
87
+ return ed25519Verify(observerPub, sig, canonicalBytes);
88
+ }
89
+ // ---------------------------------------------------------------------------
90
+ // DisclosureAuthorization (embedded inside abuse reports)
91
+ /** Sign a {@link DisclosureAuthorization} under the affected user's identity key. */
92
+ export function signDisclosureAuthorization(auth, userPriv, userKeyId) {
93
+ if (userKeyId === "") {
94
+ throw new Error("reputation: empty user key_id");
95
+ }
96
+ auth.signature.algorithm = SignatureAlgorithmEd25519;
97
+ auth.signature.key_id = userKeyId;
98
+ auth.signature.value = "";
99
+ const canonicalBytes = canonicalRecordBytes(auth, "signature");
100
+ const sig = ed25519Sign(userPriv, canonicalBytes);
101
+ const sigB64 = base64Encode(sig);
102
+ auth.signature.value = sigB64;
103
+ return sigB64;
104
+ }
105
+ /** Verify a {@link DisclosureAuthorization} against the user's identity public key. */
106
+ export function verifyDisclosureAuthorization(auth, userPub) {
107
+ if (auth.signature.value === "") {
108
+ return false;
109
+ }
110
+ let sig;
111
+ try {
112
+ sig = base64Decode(auth.signature.value);
113
+ }
114
+ catch {
115
+ return false;
116
+ }
117
+ const canonicalBytes = canonicalRecordBytes(auth, "signature");
118
+ return ed25519Verify(userPub, sig, canonicalBytes);
119
+ }
120
+ /** Report whether the scope permits disclosing brief content. */
121
+ export function authAllowsBrief(auth) {
122
+ return auth.scope === "brief_only" || auth.scope === "brief_and_enclosure";
123
+ }
124
+ /** Report whether the scope permits disclosing enclosure content. */
125
+ export function authAllowsEnclosure(auth) {
126
+ return auth.scope === "enclosure_only" || auth.scope === "brief_and_enclosure";
127
+ }
128
+ // ---------------------------------------------------------------------------
129
+ // AbuseReport — sent over an authenticated session, no own signature
130
+ /** Structural validation of an {@link AbuseReport} per §3.2. Throws on first violation. */
131
+ export function validateAbuseReport(r) {
132
+ if (r.type !== "SEMP_ABUSE_REPORT") {
133
+ throw new Error(`reputation: abuse report type ${JSON.stringify(r.type)}, want SEMP_ABUSE_REPORT`);
134
+ }
135
+ for (const f of ["id", "reporter", "reported_domain", "category", "timestamp"]) {
136
+ if (typeof r[f] !== "string" || r[f] === "") {
137
+ throw new Error(`reputation: abuse report missing ${f}`);
138
+ }
139
+ }
140
+ if (Number.isNaN(Date.parse(r.timestamp))) {
141
+ throw new Error("reputation: abuse report timestamp is not ISO 8601");
142
+ }
143
+ if (r.evidence === undefined || r.evidence === null) {
144
+ throw new Error("reputation: abuse report missing evidence");
145
+ }
146
+ const evType = r.evidence.type;
147
+ if (evType !== "envelope_metadata" && evType !== "sealed_evidence") {
148
+ throw new Error(`reputation: abuse report evidence type ${JSON.stringify(evType)} is not valid`);
149
+ }
150
+ if (r.evidence.type === "sealed_evidence") {
151
+ if (!Array.isArray(r.evidence.envelopes) || r.evidence.envelopes.length === 0) {
152
+ throw new Error("reputation: sealed_evidence requires non-empty envelopes array");
153
+ }
154
+ // §3.7 MUST: when disclosed_brief / disclosed_enclosure is
155
+ // present, disclosure_authorization MUST also be present.
156
+ for (let i = 0; i < r.evidence.envelopes.length; i++) {
157
+ const env = r.evidence.envelopes[i];
158
+ const hasDisclosed = env.disclosed_brief !== undefined || env.disclosed_enclosure !== undefined;
159
+ if (hasDisclosed && env.disclosure_authorization === undefined) {
160
+ throw new Error(`reputation: envelopes[${i}]: disclosed content requires disclosure_authorization (§3.7)`);
161
+ }
162
+ }
163
+ }
164
+ }
165
+ // ---------------------------------------------------------------------------
166
+ // Helpers
167
+ /**
168
+ * Canonical bytes with `<topField>.value` elided. The reputation
169
+ * records sign the canonical bytes directly (no domain-separation
170
+ * prefix); other SEMP records use SEMP-* prefixes.
171
+ */
172
+ function canonicalRecordBytes(obj, topField) {
173
+ const clone = JSON.parse(JSON.stringify(obj));
174
+ const sig = clone[topField];
175
+ if (sig === undefined) {
176
+ throw new Error(`reputation: object has no ${topField} block`);
177
+ }
178
+ sig.value = "";
179
+ return canonicalMarshal(clone);
180
+ }
181
+ function base64Encode(b) {
182
+ if (typeof Buffer !== "undefined") {
183
+ return Buffer.from(b).toString("base64");
184
+ }
185
+ let bin = "";
186
+ for (let i = 0; i < b.length; i++) {
187
+ bin += String.fromCharCode(b[i] ?? 0);
188
+ }
189
+ return btoa(bin);
190
+ }
191
+ function base64Decode(s) {
192
+ if (typeof Buffer !== "undefined") {
193
+ return new Uint8Array(Buffer.from(s, "base64"));
194
+ }
195
+ const bin = atob(s);
196
+ const out = new Uint8Array(bin.length);
197
+ for (let i = 0; i < bin.length; i++) {
198
+ out[i] = bin.charCodeAt(i);
199
+ }
200
+ return out;
201
+ }
202
+ //# sourceMappingURL=sign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../src/reputation/sign.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Wire-record types for SEMP reputation per REPUTATION.md.
3
+ *
4
+ * @module
5
+ */
6
+ /** `type` discriminators per REPUTATION.md. */
7
+ export declare const ObservationType = "SEMP_TRUST_OBSERVATION";
8
+ export declare const ObservationsEnvelopeType = "SEMP_TRUST_OBSERVATIONS";
9
+ export declare const AbuseReportType = "SEMP_ABUSE_REPORT";
10
+ export declare const Version = "1.0.0";
11
+ /** Reputation publication path per §5. */
12
+ export declare const PublicationPath = "/.well-known/semp/reputation/";
13
+ /** Assessment classification per §4.6. */
14
+ export type Assessment = "trusted" | "neutral" | "suspicious" | "hostile";
15
+ /** Abuse category per §3.4 + ERRORS.md §9. */
16
+ export type AbuseCategory = "spam" | "harassment" | "phishing" | "malware" | "protocol_abuse" | "impersonation" | "other";
17
+ /**
18
+ * Report whether `c` is one of the categories defined in §3.4.
19
+ * Unknown categories are permitted for forward compatibility.
20
+ */
21
+ export declare function isKnownAbuseCategory(c: string): c is AbuseCategory;
22
+ /** Reusable signature block. */
23
+ export interface ReputationSignature {
24
+ algorithm: string;
25
+ key_id: string;
26
+ value: string;
27
+ }
28
+ /** Time window of an Observation per §4.4. */
29
+ export interface Window {
30
+ /** ISO 8601 UTC. */
31
+ start: string;
32
+ /** ISO 8601 UTC. */
33
+ end: string;
34
+ }
35
+ /** Quantitative payload of an Observation per §4.5. */
36
+ export interface Metrics {
37
+ envelopes_received: number;
38
+ envelopes_rejected: number;
39
+ abuse_reports: number;
40
+ abuse_categories?: AbuseCategory[];
41
+ unique_senders_observed?: number;
42
+ handshakes_completed?: number;
43
+ handshakes_rejected?: number;
44
+ }
45
+ /** Cap applied by Bucketize: counts at/above this clamp here. */
46
+ export declare const MaxMetricBucket: number;
47
+ /** Single signed observation record per §4.2. */
48
+ export interface Observation {
49
+ type: typeof ObservationType;
50
+ version: string;
51
+ id: string;
52
+ observer: string;
53
+ subject: string;
54
+ window: Window;
55
+ metrics: Metrics;
56
+ assessment: Assessment;
57
+ evidence_available: boolean;
58
+ evidence_uri?: string;
59
+ /** ISO 8601 UTC. */
60
+ timestamp: string;
61
+ /** ISO 8601 UTC hard expiry. */
62
+ expires: string;
63
+ signature: ReputationSignature;
64
+ /** Always emitted (even when empty) so canonical bytes are stable. */
65
+ extensions: Record<string, unknown>;
66
+ }
67
+ /** Publication envelope carrying a list of observations per §5.1. */
68
+ export interface TrustObservations {
69
+ type: typeof ObservationsEnvelopeType;
70
+ version: string;
71
+ /** Observer domain. */
72
+ observer: string;
73
+ /** Subject domain (or empty when the response is a per-observer index). */
74
+ subject: string;
75
+ observations: Observation[];
76
+ /** ISO 8601 UTC. */
77
+ timestamp: string;
78
+ signature: ReputationSignature;
79
+ }
80
+ /** Publishable hash summary per §5. */
81
+ export interface GossipHash {
82
+ domain: string;
83
+ /** Lowercase hex SHA-256. */
84
+ hash: string;
85
+ algorithm: string;
86
+ /** ISO 8601 UTC. */
87
+ as_of: string;
88
+ }
89
+ /** Disclosure scope per §3.5. */
90
+ export type DisclosureScope = "brief_only" | "enclosure_only" | "brief_and_enclosure";
91
+ /** Affected user's signed permission to include decrypted content per §3.5 + §3.7. */
92
+ export interface DisclosureAuthorization {
93
+ user: string;
94
+ /** ISO 8601 UTC. */
95
+ authorized_at: string;
96
+ scope: DisclosureScope;
97
+ signature: ReputationSignature;
98
+ }
99
+ /** Sealed-evidence envelope-shaped record per §3.5. */
100
+ export interface SealedEnvelopeEvidence {
101
+ postmark: Record<string, unknown>;
102
+ seal: Record<string, unknown>;
103
+ disclosed_brief?: Record<string, unknown>;
104
+ disclosed_enclosure?: Record<string, unknown>;
105
+ disclosure_authorization?: DisclosureAuthorization;
106
+ }
107
+ /** Polymorphic evidence payload per §3.5. */
108
+ export type Evidence = {
109
+ type: "envelope_metadata";
110
+ postmark_ids?: string[];
111
+ count?: number;
112
+ /** ISO 8601 interval string. */
113
+ window?: string;
114
+ } | {
115
+ type: "sealed_evidence";
116
+ envelopes: SealedEnvelopeEvidence[];
117
+ };
118
+ /** SEMP_ABUSE_REPORT message per §3.2. */
119
+ export interface AbuseReport {
120
+ type: typeof AbuseReportType;
121
+ version: string;
122
+ id: string;
123
+ reporter: string;
124
+ reported_domain: string;
125
+ reported_address?: string;
126
+ category: AbuseCategory | string;
127
+ /** ISO 8601 UTC. */
128
+ timestamp: string;
129
+ evidence: Evidence;
130
+ description?: string;
131
+ extensions: Record<string, unknown>;
132
+ }
133
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reputation/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Wire-record types for SEMP reputation per REPUTATION.md.
3
+ *
4
+ * @module
5
+ */
6
+ /** `type` discriminators per REPUTATION.md. */
7
+ export const ObservationType = "SEMP_TRUST_OBSERVATION";
8
+ export const ObservationsEnvelopeType = "SEMP_TRUST_OBSERVATIONS";
9
+ export const AbuseReportType = "SEMP_ABUSE_REPORT";
10
+ export const Version = "1.0.0";
11
+ /** Reputation publication path per §5. */
12
+ export const PublicationPath = "/.well-known/semp/reputation/";
13
+ /**
14
+ * Report whether `c` is one of the categories defined in §3.4.
15
+ * Unknown categories are permitted for forward compatibility.
16
+ */
17
+ export function isKnownAbuseCategory(c) {
18
+ switch (c) {
19
+ case "spam":
20
+ case "harassment":
21
+ case "phishing":
22
+ case "malware":
23
+ case "protocol_abuse":
24
+ case "impersonation":
25
+ case "other":
26
+ return true;
27
+ default:
28
+ return false;
29
+ }
30
+ }
31
+ /** Cap applied by Bucketize: counts at/above this clamp here. */
32
+ export const MaxMetricBucket = 1 << 20;
33
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/reputation/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AACxD,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AACnD,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,0CAA0C;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,+BAA+B,CAAC;AAe/D;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,CAAS;IAC5C,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,MAAM,CAAC;QACZ,KAAK,YAAY,CAAC;QAClB,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,gBAAgB,CAAC;QACtB,KAAK,eAAe,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AA4BD,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * WHOIS hooks per REPUTATION.md §2.1.
3
+ *
4
+ * Operators supply their own WHOIS implementation — there is no de
5
+ * facto WHOIS library that is both reliable and free of rate limits,
6
+ * so this is intentionally pluggable.
7
+ *
8
+ * @module
9
+ */
10
+ /**
11
+ * Recommended minimum domain registration age before a domain
12
+ * receives baseline trust per REPUTATION.md §2.1: 30 days, in
13
+ * milliseconds.
14
+ */
15
+ export declare const MinDomainAgeMs: number;
16
+ /**
17
+ * Pluggable WHOIS lookup. {@link domainAgeMs} returns the age in
18
+ * milliseconds since the domain was first registered.
19
+ */
20
+ export interface WHOIS {
21
+ domainAgeMs(domain: string): Promise<number>;
22
+ }
23
+ /** Whether `ageMs` meets the {@link MinDomainAgeMs} floor. */
24
+ export declare function meetsMinAge(ageMs: number): boolean;
25
+ //# sourceMappingURL=whois.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whois.d.ts","sourceRoot":"","sources":["../../src/reputation/whois.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAA0B,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElD"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * WHOIS hooks per REPUTATION.md §2.1.
3
+ *
4
+ * Operators supply their own WHOIS implementation — there is no de
5
+ * facto WHOIS library that is both reliable and free of rate limits,
6
+ * so this is intentionally pluggable.
7
+ *
8
+ * @module
9
+ */
10
+ /**
11
+ * Recommended minimum domain registration age before a domain
12
+ * receives baseline trust per REPUTATION.md §2.1: 30 days, in
13
+ * milliseconds.
14
+ */
15
+ export const MinDomainAgeMs = 30 * 24 * 3_600 * 1_000;
16
+ /** Whether `ageMs` meets the {@link MinDomainAgeMs} floor. */
17
+ export function meetsMinAge(ageMs) {
18
+ return ageMs >= MinDomainAgeMs;
19
+ }
20
+ //# sourceMappingURL=whois.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whois.js","sourceRoot":"","sources":["../../src/reputation/whois.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC;AAUtD,8DAA8D;AAC9D,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK,IAAI,cAAc,CAAC;AACjC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Seal layer per ENVELOPE.md §4.4. Per-recipient key wrap +
3
+ * eventual signature/MAC over the canonical envelope bytes.
4
+ *
5
+ * @module
6
+ */
7
+ export { type Suite, type WrapRandomness, WrapInfo, unwrap, wrap, wrapWithRandomness, } from "./wrap.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/seal/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,kBAAkB,GACnB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Seal layer per ENVELOPE.md §4.4. Per-recipient key wrap +
3
+ * eventual signature/MAC over the canonical envelope bytes.
4
+ *
5
+ * @module
6
+ */
7
+ export { WrapInfo, unwrap, wrap, wrapWithRandomness, } from "./wrap.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/seal/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,kBAAkB,GACnB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Seal-layer key wrap per ENVELOPE.md §4.4.1.
3
+ *
4
+ * The wrap protects a fresh symmetric key (K_brief or K_enclosure)
5
+ * for one recipient. The construction is HPKE-Base style:
6
+ *
7
+ * 1. KEM: encapsulate against the recipient's public key. For
8
+ * X25519 the encapsulation generates a fresh ephemeral and
9
+ * computes ECDH; for Kyber768+X25519 hybrid both halves run
10
+ * in parallel.
11
+ * 2. KDF: HKDF-SHA-512 over the shared secret with salt
12
+ * `kemCt || recipientPub` and info "SEMP-v1-wrap".
13
+ * 3. AEAD: zero nonce, recipient pub as AAD, plaintext = the
14
+ * symmetric key being wrapped. The zero nonce is safe because
15
+ * the wrap key is unique per call (fresh ephemeral feeds
16
+ * into the KDF).
17
+ *
18
+ * Output: `kemCt || aeadCt`, base64-encoded.
19
+ *
20
+ * @module
21
+ */
22
+ /** HKDF info context for the wrap-key expansion. */
23
+ export declare const WrapInfo = "SEMP-v1-wrap";
24
+ /** Algorithm suite identifiers used on the wire. */
25
+ export type Suite = "x25519-chacha20-poly1305" | "pq-kyber768-x25519";
26
+ /**
27
+ * Unwrap a wrapped symmetric key per §4.4.1. Reverses the wrap
28
+ * computation: split kemCt from aeadCt by AEAD-overhead size,
29
+ * decapsulate, derive wrap_key, AEAD-open.
30
+ *
31
+ * @param suite negotiated suite that produced the wrap.
32
+ * @param recipientPrivateKey for X25519: 32 bytes; for hybrid:
33
+ * 2432 bytes (kyberPriv || x25519Priv per §4.4.1).
34
+ * @param recipientPublicKey for X25519: 32 bytes; for hybrid:
35
+ * 1216 bytes (kyberPub || x25519Pub per §4.4.1).
36
+ * @param wrappedB64 base64 of (kemCt || aeadCt).
37
+ */
38
+ export declare function unwrap(suite: Suite, recipientPrivateKey: Uint8Array, recipientPublicKey: Uint8Array, wrappedB64: string): Uint8Array;
39
+ /**
40
+ * Wrap `symmetricKey` for the given recipient under the negotiated
41
+ * suite. Production code path: uses the platform CSPRNG to generate
42
+ * a fresh ephemeral every call, which is what the §4.4.1 wrap
43
+ * construction requires — wrap-key uniqueness is what makes the
44
+ * zero-nonce AEAD safe.
45
+ *
46
+ * For deterministic byte-level reproducibility (vectors, audits),
47
+ * use {@link wrapWithRandomness} instead and pass pinned
48
+ * ephemeral inputs.
49
+ */
50
+ export declare function wrap(suite: Suite, recipientPublicKey: Uint8Array, symmetricKey: Uint8Array): string;
51
+ /**
52
+ * Inputs to a deterministic wrap. The fields a caller must pin to
53
+ * reproduce the exact wrap bytes a previous run produced.
54
+ */
55
+ export interface WrapRandomness {
56
+ /** 32-byte X25519 ephemeral private key. Required for both suites. */
57
+ ephemeralX25519Priv: Uint8Array;
58
+ /**
59
+ * 32-byte ML-KEM-768 encapsulation randomness (FIPS 203 `m`).
60
+ * Required for the PQ suite, ignored for baseline.
61
+ */
62
+ kyberEncapsRandomnessM?: Uint8Array;
63
+ }
64
+ /**
65
+ * Deterministic wrap for vector reproduction and audits. Production
66
+ * code MUST use {@link wrap} (which sources fresh entropy) — a
67
+ * deterministic wrap that leaks `ephemeralX25519Priv` reduces to
68
+ * "the adversary has the wrap key". Exposed here only because
69
+ * cross-language vectors pin these inputs.
70
+ *
71
+ * Returns base64(kemCt || aeadCt) per ENVELOPE.md §4.4.1.
72
+ */
73
+ export declare function wrapWithRandomness(suite: Suite, recipientPublicKey: Uint8Array, symmetricKey: Uint8Array, randomness: WrapRandomness): string;
74
+ //# sourceMappingURL=wrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/seal/wrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAgBH,oDAAoD;AACpD,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AAEvC,oDAAoD;AACpD,MAAM,MAAM,KAAK,GAAG,0BAA0B,GAAG,oBAAoB,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,KAAK,EACZ,mBAAmB,EAAE,UAAU,EAC/B,kBAAkB,EAAE,UAAU,EAC9B,UAAU,EAAE,MAAM,GACjB,UAAU,CAqCZ;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,UAAU,EAC9B,YAAY,EAAE,UAAU,GACvB,MAAM,CAiBR;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,mBAAmB,EAAE,UAAU,CAAC;IAChC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,UAAU,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,UAAU,EAC9B,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,cAAc,GACzB,MAAM,CA2BR"}