@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.
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/brief/address.d.ts +77 -0
- package/dist/brief/address.d.ts.map +1 -0
- package/dist/brief/address.js +217 -0
- package/dist/brief/address.js.map +1 -0
- package/dist/brief/brief.d.ts +75 -0
- package/dist/brief/brief.d.ts.map +1 -0
- package/dist/brief/brief.js +56 -0
- package/dist/brief/brief.js.map +1 -0
- package/dist/brief/index.d.ts +11 -0
- package/dist/brief/index.d.ts.map +1 -0
- package/dist/brief/index.js +11 -0
- package/dist/brief/index.js.map +1 -0
- package/dist/canonical/index.d.ts +8 -0
- package/dist/canonical/index.d.ts.map +1 -0
- package/dist/canonical/index.js +8 -0
- package/dist/canonical/index.js.map +1 -0
- package/dist/canonical/marshal.d.ts +35 -0
- package/dist/canonical/marshal.d.ts.map +1 -0
- package/dist/canonical/marshal.js +107 -0
- package/dist/canonical/marshal.js.map +1 -0
- package/dist/clockskew/index.d.ts +52 -0
- package/dist/clockskew/index.d.ts.map +1 -0
- package/dist/clockskew/index.js +62 -0
- package/dist/clockskew/index.js.map +1 -0
- package/dist/closure/closure.d.ts +106 -0
- package/dist/closure/closure.d.ts.map +1 -0
- package/dist/closure/closure.js +152 -0
- package/dist/closure/closure.js.map +1 -0
- package/dist/closure/driver.d.ts +103 -0
- package/dist/closure/driver.d.ts.map +1 -0
- package/dist/closure/driver.js +126 -0
- package/dist/closure/driver.js.map +1 -0
- package/dist/closure/index.d.ts +13 -0
- package/dist/closure/index.d.ts.map +1 -0
- package/dist/closure/index.js +13 -0
- package/dist/closure/index.js.map +1 -0
- package/dist/closure/store.d.ts +80 -0
- package/dist/closure/store.d.ts.map +1 -0
- package/dist/closure/store.js +89 -0
- package/dist/closure/store.js.map +1 -0
- package/dist/crypto/aead.d.ts +29 -0
- package/dist/crypto/aead.d.ts.map +1 -0
- package/dist/crypto/aead.js +48 -0
- package/dist/crypto/aead.js.map +1 -0
- package/dist/crypto/argon2.d.ts +20 -0
- package/dist/crypto/argon2.d.ts.map +1 -0
- package/dist/crypto/argon2.js +28 -0
- package/dist/crypto/argon2.js.map +1 -0
- package/dist/crypto/index.d.ts +14 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +14 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/kdf.d.ts +96 -0
- package/dist/crypto/kdf.d.ts.map +1 -0
- package/dist/crypto/kdf.js +122 -0
- package/dist/crypto/kdf.js.map +1 -0
- package/dist/crypto/kem.d.ts +85 -0
- package/dist/crypto/kem.d.ts.map +1 -0
- package/dist/crypto/kem.js +130 -0
- package/dist/crypto/kem.js.map +1 -0
- package/dist/crypto/mac.d.ts +19 -0
- package/dist/crypto/mac.d.ts.map +1 -0
- package/dist/crypto/mac.js +32 -0
- package/dist/crypto/mac.js.map +1 -0
- package/dist/delivery/ack.d.ts +125 -0
- package/dist/delivery/ack.d.ts.map +1 -0
- package/dist/delivery/ack.js +141 -0
- package/dist/delivery/ack.js.map +1 -0
- package/dist/delivery/blocklist.d.ts +87 -0
- package/dist/delivery/blocklist.d.ts.map +1 -0
- package/dist/delivery/blocklist.js +107 -0
- package/dist/delivery/blocklist.js.map +1 -0
- package/dist/delivery/cancel.d.ts +60 -0
- package/dist/delivery/cancel.d.ts.map +1 -0
- package/dist/delivery/cancel.js +43 -0
- package/dist/delivery/cancel.js.map +1 -0
- package/dist/delivery/disposition.d.ts +106 -0
- package/dist/delivery/disposition.d.ts.map +1 -0
- package/dist/delivery/disposition.js +105 -0
- package/dist/delivery/disposition.js.map +1 -0
- package/dist/delivery/fetch.d.ts +59 -0
- package/dist/delivery/fetch.d.ts.map +1 -0
- package/dist/delivery/fetch.js +47 -0
- package/dist/delivery/fetch.js.map +1 -0
- package/dist/delivery/forwarder.d.ts +106 -0
- package/dist/delivery/forwarder.d.ts.map +1 -0
- package/dist/delivery/forwarder.js +251 -0
- package/dist/delivery/forwarder.js.map +1 -0
- package/dist/delivery/inbox.d.ts +42 -0
- package/dist/delivery/inbox.d.ts.map +1 -0
- package/dist/delivery/inbox.js +68 -0
- package/dist/delivery/inbox.js.map +1 -0
- package/dist/delivery/index.d.ts +31 -0
- package/dist/delivery/index.d.ts.map +1 -0
- package/dist/delivery/index.js +31 -0
- package/dist/delivery/index.js.map +1 -0
- package/dist/delivery/internalroute.d.ts +50 -0
- package/dist/delivery/internalroute.d.ts.map +1 -0
- package/dist/delivery/internalroute.js +23 -0
- package/dist/delivery/internalroute.js.map +1 -0
- package/dist/delivery/pipeline.d.ts +153 -0
- package/dist/delivery/pipeline.d.ts.map +1 -0
- package/dist/delivery/pipeline.js +356 -0
- package/dist/delivery/pipeline.js.map +1 -0
- package/dist/delivery/policy_state.d.ts +105 -0
- package/dist/delivery/policy_state.d.ts.map +1 -0
- package/dist/delivery/policy_state.js +293 -0
- package/dist/delivery/policy_state.js.map +1 -0
- package/dist/delivery/queue.d.ts +47 -0
- package/dist/delivery/queue.d.ts.map +1 -0
- package/dist/delivery/queue.js +33 -0
- package/dist/delivery/queue.js.map +1 -0
- package/dist/delivery/receipt.d.ts +137 -0
- package/dist/delivery/receipt.d.ts.map +1 -0
- package/dist/delivery/receipt.js +181 -0
- package/dist/delivery/receipt.js.map +1 -0
- package/dist/delivery/receipt_store.d.ts +81 -0
- package/dist/delivery/receipt_store.d.ts.map +1 -0
- package/dist/delivery/receipt_store.js +74 -0
- package/dist/delivery/receipt_store.js.map +1 -0
- package/dist/delivery/retry.d.ts +78 -0
- package/dist/delivery/retry.d.ts.map +1 -0
- package/dist/delivery/retry.js +132 -0
- package/dist/delivery/retry.js.map +1 -0
- package/dist/delivery/scheduler.d.ts +156 -0
- package/dist/delivery/scheduler.d.ts.map +1 -0
- package/dist/delivery/scheduler.js +349 -0
- package/dist/delivery/scheduler.js.map +1 -0
- package/dist/delivery/stage_partition.d.ts +87 -0
- package/dist/delivery/stage_partition.d.ts.map +1 -0
- package/dist/delivery/stage_partition.js +122 -0
- package/dist/delivery/stage_partition.js.map +1 -0
- package/dist/delivery/staged_runner.d.ts +100 -0
- package/dist/delivery/staged_runner.d.ts.map +1 -0
- package/dist/delivery/staged_runner.js +277 -0
- package/dist/delivery/staged_runner.js.map +1 -0
- package/dist/delivery/submission.d.ts +72 -0
- package/dist/delivery/submission.d.ts.map +1 -0
- package/dist/delivery/submission.js +58 -0
- package/dist/delivery/submission.js.map +1 -0
- package/dist/delivery/sync.d.ts +68 -0
- package/dist/delivery/sync.d.ts.map +1 -0
- package/dist/delivery/sync.js +99 -0
- package/dist/delivery/sync.js.map +1 -0
- package/dist/delivery/user_policy.d.ts +74 -0
- package/dist/delivery/user_policy.d.ts.map +1 -0
- package/dist/delivery/user_policy.js +140 -0
- package/dist/delivery/user_policy.js.map +1 -0
- package/dist/discovery/cache.d.ts +37 -0
- package/dist/discovery/cache.d.ts.map +1 -0
- package/dist/discovery/cache.js +45 -0
- package/dist/discovery/cache.js.map +1 -0
- package/dist/discovery/configuration.d.ts +97 -0
- package/dist/discovery/configuration.d.ts.map +1 -0
- package/dist/discovery/configuration.js +146 -0
- package/dist/discovery/configuration.js.map +1 -0
- package/dist/discovery/dns.d.ts +56 -0
- package/dist/discovery/dns.d.ts.map +1 -0
- package/dist/discovery/dns.js +120 -0
- package/dist/discovery/dns.js.map +1 -0
- package/dist/discovery/domain_keys.d.ts +62 -0
- package/dist/discovery/domain_keys.d.ts.map +1 -0
- package/dist/discovery/domain_keys.js +89 -0
- package/dist/discovery/domain_keys.js.map +1 -0
- package/dist/discovery/index.d.ts +19 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +19 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/lookup.d.ts +72 -0
- package/dist/discovery/lookup.d.ts.map +1 -0
- package/dist/discovery/lookup.js +121 -0
- package/dist/discovery/lookup.js.map +1 -0
- package/dist/discovery/onion.d.ts +34 -0
- package/dist/discovery/onion.d.ts.map +1 -0
- package/dist/discovery/onion.js +61 -0
- package/dist/discovery/onion.js.map +1 -0
- package/dist/discovery/partition.d.ts +96 -0
- package/dist/discovery/partition.d.ts.map +1 -0
- package/dist/discovery/partition.js +247 -0
- package/dist/discovery/partition.js.map +1 -0
- package/dist/discovery/resolver.d.ts +113 -0
- package/dist/discovery/resolver.d.ts.map +1 -0
- package/dist/discovery/resolver.js +176 -0
- package/dist/discovery/resolver.js.map +1 -0
- package/dist/discovery/txt.d.ts +39 -0
- package/dist/discovery/txt.d.ts.map +1 -0
- package/dist/discovery/txt.js +71 -0
- package/dist/discovery/txt.js.map +1 -0
- package/dist/enclosure/forwarding.d.ts +128 -0
- package/dist/enclosure/forwarding.d.ts.map +1 -0
- package/dist/enclosure/forwarding.js +119 -0
- package/dist/enclosure/forwarding.js.map +1 -0
- package/dist/enclosure/index.d.ts +11 -0
- package/dist/enclosure/index.d.ts.map +1 -0
- package/dist/enclosure/index.js +11 -0
- package/dist/enclosure/index.js.map +1 -0
- package/dist/envelope/buckets.d.ts +38 -0
- package/dist/envelope/buckets.d.ts.map +1 -0
- package/dist/envelope/buckets.js +73 -0
- package/dist/envelope/buckets.js.map +1 -0
- package/dist/envelope/canonical.d.ts +28 -0
- package/dist/envelope/canonical.d.ts.map +1 -0
- package/dist/envelope/canonical.js +54 -0
- package/dist/envelope/canonical.js.map +1 -0
- package/dist/envelope/compose.d.ts +171 -0
- package/dist/envelope/compose.d.ts.map +1 -0
- package/dist/envelope/compose.js +237 -0
- package/dist/envelope/compose.js.map +1 -0
- package/dist/envelope/encode.d.ts +41 -0
- package/dist/envelope/encode.d.ts.map +1 -0
- package/dist/envelope/encode.js +69 -0
- package/dist/envelope/encode.js.map +1 -0
- package/dist/envelope/index.d.ts +20 -0
- package/dist/envelope/index.d.ts.map +1 -0
- package/dist/envelope/index.js +20 -0
- package/dist/envelope/index.js.map +1 -0
- package/dist/envelope/open_any.d.ts +48 -0
- package/dist/envelope/open_any.d.ts.map +1 -0
- package/dist/envelope/open_any.js +81 -0
- package/dist/envelope/open_any.js.map +1 -0
- package/dist/envelope/open_verified.d.ts +59 -0
- package/dist/envelope/open_verified.d.ts.map +1 -0
- package/dist/envelope/open_verified.js +67 -0
- package/dist/envelope/open_verified.js.map +1 -0
- package/dist/envelope/padding.d.ts +55 -0
- package/dist/envelope/padding.d.ts.map +1 -0
- package/dist/envelope/padding.js +162 -0
- package/dist/envelope/padding.js.map +1 -0
- package/dist/envelope/rejection.d.ts +22 -0
- package/dist/envelope/rejection.d.ts.map +1 -0
- package/dist/envelope/rejection.js +30 -0
- package/dist/envelope/rejection.js.map +1 -0
- package/dist/envelope/sendtime.d.ts +49 -0
- package/dist/envelope/sendtime.d.ts.map +1 -0
- package/dist/envelope/sendtime.js +87 -0
- package/dist/envelope/sendtime.js.map +1 -0
- package/dist/envelope/verify.d.ts +29 -0
- package/dist/envelope/verify.d.ts.map +1 -0
- package/dist/envelope/verify.js +90 -0
- package/dist/envelope/verify.js.map +1 -0
- package/dist/extensions/index.d.ts +7 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +7 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/limits.d.ts +101 -0
- package/dist/extensions/limits.d.ts.map +1 -0
- package/dist/extensions/limits.js +175 -0
- package/dist/extensions/limits.js.map +1 -0
- package/dist/handshake/abort.d.ts +49 -0
- package/dist/handshake/abort.d.ts.map +1 -0
- package/dist/handshake/abort.js +82 -0
- package/dist/handshake/abort.js.map +1 -0
- package/dist/handshake/capabilities.d.ts +46 -0
- package/dist/handshake/capabilities.d.ts.map +1 -0
- package/dist/handshake/capabilities.js +114 -0
- package/dist/handshake/capabilities.js.map +1 -0
- package/dist/handshake/client_state.d.ts +186 -0
- package/dist/handshake/client_state.d.ts.map +1 -0
- package/dist/handshake/client_state.js +520 -0
- package/dist/handshake/client_state.js.map +1 -0
- package/dist/handshake/confirm.d.ts +21 -0
- package/dist/handshake/confirm.d.ts.map +1 -0
- package/dist/handshake/confirm.js +27 -0
- package/dist/handshake/confirm.js.map +1 -0
- package/dist/handshake/driver.d.ts +126 -0
- package/dist/handshake/driver.d.ts.map +1 -0
- package/dist/handshake/driver.js +251 -0
- package/dist/handshake/driver.js.map +1 -0
- package/dist/handshake/federation.d.ts +365 -0
- package/dist/handshake/federation.d.ts.map +1 -0
- package/dist/handshake/federation.js +664 -0
- package/dist/handshake/federation.js.map +1 -0
- package/dist/handshake/first_contact.d.ts +57 -0
- package/dist/handshake/first_contact.d.ts.map +1 -0
- package/dist/handshake/first_contact.js +124 -0
- package/dist/handshake/first_contact.js.map +1 -0
- package/dist/handshake/identity.d.ts +101 -0
- package/dist/handshake/identity.d.ts.map +1 -0
- package/dist/handshake/identity.js +117 -0
- package/dist/handshake/identity.js.map +1 -0
- package/dist/handshake/index.d.ts +21 -0
- package/dist/handshake/index.d.ts.map +1 -0
- package/dist/handshake/index.js +21 -0
- package/dist/handshake/index.js.map +1 -0
- package/dist/handshake/messages.d.ts +176 -0
- package/dist/handshake/messages.d.ts.map +1 -0
- package/dist/handshake/messages.js +125 -0
- package/dist/handshake/messages.js.map +1 -0
- package/dist/handshake/pow.d.ts +53 -0
- package/dist/handshake/pow.d.ts.map +1 -0
- package/dist/handshake/pow.js +142 -0
- package/dist/handshake/pow.js.map +1 -0
- package/dist/handshake/resume_driver.d.ts +56 -0
- package/dist/handshake/resume_driver.d.ts.map +1 -0
- package/dist/handshake/resume_driver.js +75 -0
- package/dist/handshake/resume_driver.js.map +1 -0
- package/dist/handshake/server.d.ts +112 -0
- package/dist/handshake/server.d.ts.map +1 -0
- package/dist/handshake/server.js +247 -0
- package/dist/handshake/server.js.map +1 -0
- package/dist/handshake/server_state.d.ts +102 -0
- package/dist/handshake/server_state.d.ts.map +1 -0
- package/dist/handshake/server_state.js +278 -0
- package/dist/handshake/server_state.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/keys/compromise.d.ts +118 -0
- package/dist/keys/compromise.d.ts.map +1 -0
- package/dist/keys/compromise.js +218 -0
- package/dist/keys/compromise.js.map +1 -0
- package/dist/keys/device_certificate.d.ts +166 -0
- package/dist/keys/device_certificate.d.ts.map +1 -0
- package/dist/keys/device_certificate.js +328 -0
- package/dist/keys/device_certificate.js.map +1 -0
- package/dist/keys/device_records.d.ts +175 -0
- package/dist/keys/device_records.d.ts.map +1 -0
- package/dist/keys/device_records.js +418 -0
- package/dist/keys/device_records.js.map +1 -0
- package/dist/keys/directory_cache.d.ts +64 -0
- package/dist/keys/directory_cache.d.ts.map +1 -0
- package/dist/keys/directory_cache.js +98 -0
- package/dist/keys/directory_cache.js.map +1 -0
- package/dist/keys/directory_state.d.ts +79 -0
- package/dist/keys/directory_state.d.ts.map +1 -0
- package/dist/keys/directory_state.js +155 -0
- package/dist/keys/directory_state.js.map +1 -0
- package/dist/keys/index.d.ts +18 -0
- package/dist/keys/index.d.ts.map +1 -0
- package/dist/keys/index.js +18 -0
- package/dist/keys/index.js.map +1 -0
- package/dist/keys/key_revocation.d.ts +61 -0
- package/dist/keys/key_revocation.d.ts.map +1 -0
- package/dist/keys/key_revocation.js +88 -0
- package/dist/keys/key_revocation.js.map +1 -0
- package/dist/keys/request.d.ts +124 -0
- package/dist/keys/request.d.ts.map +1 -0
- package/dist/keys/request.js +130 -0
- package/dist/keys/request.js.map +1 -0
- package/dist/keys/sign.d.ts +49 -0
- package/dist/keys/sign.d.ts.map +1 -0
- package/dist/keys/sign.js +80 -0
- package/dist/keys/sign.js.map +1 -0
- package/dist/keys/signed.d.ts +80 -0
- package/dist/keys/signed.d.ts.map +1 -0
- package/dist/keys/signed.js +138 -0
- package/dist/keys/signed.js.map +1 -0
- package/dist/keys/store.d.ts +138 -0
- package/dist/keys/store.d.ts.map +1 -0
- package/dist/keys/store.js +107 -0
- package/dist/keys/store.js.map +1 -0
- package/dist/largeattachment/crypto.d.ts +47 -0
- package/dist/largeattachment/crypto.d.ts.map +1 -0
- package/dist/largeattachment/crypto.js +235 -0
- package/dist/largeattachment/crypto.js.map +1 -0
- package/dist/largeattachment/enclosure.d.ts +48 -0
- package/dist/largeattachment/enclosure.d.ts.map +1 -0
- package/dist/largeattachment/enclosure.js +102 -0
- package/dist/largeattachment/enclosure.js.map +1 -0
- package/dist/largeattachment/index.d.ts +15 -0
- package/dist/largeattachment/index.d.ts.map +1 -0
- package/dist/largeattachment/index.js +15 -0
- package/dist/largeattachment/index.js.map +1 -0
- package/dist/largeattachment/store.d.ts +36 -0
- package/dist/largeattachment/store.d.ts.map +1 -0
- package/dist/largeattachment/store.js +37 -0
- package/dist/largeattachment/store.js.map +1 -0
- package/dist/largeattachment/types.d.ts +56 -0
- package/dist/largeattachment/types.d.ts.map +1 -0
- package/dist/largeattachment/types.js +31 -0
- package/dist/largeattachment/types.js.map +1 -0
- package/dist/largeattachment/upload.d.ts +62 -0
- package/dist/largeattachment/upload.d.ts.map +1 -0
- package/dist/largeattachment/upload.js +166 -0
- package/dist/largeattachment/upload.js.map +1 -0
- package/dist/migration/index.d.ts +17 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +17 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/lockout.d.ts +48 -0
- package/dist/migration/lockout.d.ts.map +1 -0
- package/dist/migration/lockout.js +57 -0
- package/dist/migration/lockout.js.map +1 -0
- package/dist/migration/migration.d.ts +48 -0
- package/dist/migration/migration.d.ts.map +1 -0
- package/dist/migration/migration.js +58 -0
- package/dist/migration/migration.js.map +1 -0
- package/dist/migration/notice.d.ts +33 -0
- package/dist/migration/notice.d.ts.map +1 -0
- package/dist/migration/notice.js +85 -0
- package/dist/migration/notice.js.map +1 -0
- package/dist/migration/orchestrate.d.ts +109 -0
- package/dist/migration/orchestrate.d.ts.map +1 -0
- package/dist/migration/orchestrate.js +212 -0
- package/dist/migration/orchestrate.js.map +1 -0
- package/dist/migration/publication_store.d.ts +34 -0
- package/dist/migration/publication_store.d.ts.map +1 -0
- package/dist/migration/publication_store.js +44 -0
- package/dist/migration/publication_store.js.map +1 -0
- package/dist/migration/sign.d.ts +65 -0
- package/dist/migration/sign.d.ts.map +1 -0
- package/dist/migration/sign.js +331 -0
- package/dist/migration/sign.js.map +1 -0
- package/dist/migration/types.d.ts +92 -0
- package/dist/migration/types.d.ts.map +1 -0
- package/dist/migration/types.js +26 -0
- package/dist/migration/types.js.map +1 -0
- package/dist/reasoncodes.d.ts +42 -0
- package/dist/reasoncodes.d.ts.map +1 -0
- package/dist/reasoncodes.js +80 -0
- package/dist/reasoncodes.js.map +1 -0
- package/dist/recovery/bundle.d.ts +34 -0
- package/dist/recovery/bundle.d.ts.map +1 -0
- package/dist/recovery/bundle.js +144 -0
- package/dist/recovery/bundle.js.map +1 -0
- package/dist/recovery/bundle_crypto.d.ts +60 -0
- package/dist/recovery/bundle_crypto.d.ts.map +1 -0
- package/dist/recovery/bundle_crypto.js +179 -0
- package/dist/recovery/bundle_crypto.js.map +1 -0
- package/dist/recovery/bundle_store.d.ts +57 -0
- package/dist/recovery/bundle_store.d.ts.map +1 -0
- package/dist/recovery/bundle_store.js +104 -0
- package/dist/recovery/bundle_store.js.map +1 -0
- package/dist/recovery/index.d.ts +19 -0
- package/dist/recovery/index.d.ts.map +1 -0
- package/dist/recovery/index.js +19 -0
- package/dist/recovery/index.js.map +1 -0
- package/dist/recovery/manifest_crosscheck.d.ts +59 -0
- package/dist/recovery/manifest_crosscheck.d.ts.map +1 -0
- package/dist/recovery/manifest_crosscheck.js +59 -0
- package/dist/recovery/manifest_crosscheck.js.map +1 -0
- package/dist/recovery/shamir.d.ts +51 -0
- package/dist/recovery/shamir.d.ts.map +1 -0
- package/dist/recovery/shamir.js +181 -0
- package/dist/recovery/shamir.js.map +1 -0
- package/dist/recovery/sign.d.ts +61 -0
- package/dist/recovery/sign.d.ts.map +1 -0
- package/dist/recovery/sign.js +359 -0
- package/dist/recovery/sign.js.map +1 -0
- package/dist/recovery/types.d.ts +180 -0
- package/dist/recovery/types.d.ts.map +1 -0
- package/dist/recovery/types.js +31 -0
- package/dist/recovery/types.js.map +1 -0
- package/dist/reputation/abuse_report.d.ts +62 -0
- package/dist/reputation/abuse_report.d.ts.map +1 -0
- package/dist/reputation/abuse_report.js +111 -0
- package/dist/reputation/abuse_report.js.map +1 -0
- package/dist/reputation/bucketize.d.ts +31 -0
- package/dist/reputation/bucketize.d.ts.map +1 -0
- package/dist/reputation/bucketize.js +77 -0
- package/dist/reputation/bucketize.js.map +1 -0
- package/dist/reputation/gossip.d.ts +24 -0
- package/dist/reputation/gossip.d.ts.map +1 -0
- package/dist/reputation/gossip.js +64 -0
- package/dist/reputation/gossip.js.map +1 -0
- package/dist/reputation/gossip_fetch.d.ts +64 -0
- package/dist/reputation/gossip_fetch.d.ts.map +1 -0
- package/dist/reputation/gossip_fetch.js +114 -0
- package/dist/reputation/gossip_fetch.js.map +1 -0
- package/dist/reputation/index.d.ts +20 -0
- package/dist/reputation/index.d.ts.map +1 -0
- package/dist/reputation/index.js +20 -0
- package/dist/reputation/index.js.map +1 -0
- package/dist/reputation/observation_store.d.ts +67 -0
- package/dist/reputation/observation_store.d.ts.map +1 -0
- package/dist/reputation/observation_store.js +171 -0
- package/dist/reputation/observation_store.js.map +1 -0
- package/dist/reputation/pow.d.ts +91 -0
- package/dist/reputation/pow.d.ts.map +1 -0
- package/dist/reputation/pow.js +209 -0
- package/dist/reputation/pow.js.map +1 -0
- package/dist/reputation/sign.d.ts +40 -0
- package/dist/reputation/sign.d.ts.map +1 -0
- package/dist/reputation/sign.js +202 -0
- package/dist/reputation/sign.js.map +1 -0
- package/dist/reputation/types.d.ts +133 -0
- package/dist/reputation/types.d.ts.map +1 -0
- package/dist/reputation/types.js +33 -0
- package/dist/reputation/types.js.map +1 -0
- package/dist/reputation/whois.d.ts +25 -0
- package/dist/reputation/whois.d.ts.map +1 -0
- package/dist/reputation/whois.js +20 -0
- package/dist/reputation/whois.js.map +1 -0
- package/dist/seal/index.d.ts +8 -0
- package/dist/seal/index.d.ts.map +1 -0
- package/dist/seal/index.js +8 -0
- package/dist/seal/index.js.map +1 -0
- package/dist/seal/wrap.d.ts +74 -0
- package/dist/seal/wrap.d.ts.map +1 -0
- package/dist/seal/wrap.js +213 -0
- package/dist/seal/wrap.js.map +1 -0
- package/dist/session/dispatcher.d.ts +65 -0
- package/dist/session/dispatcher.d.ts.map +1 -0
- package/dist/session/dispatcher.js +96 -0
- package/dist/session/dispatcher.js.map +1 -0
- package/dist/session/index.d.ts +15 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +15 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/rekey.d.ts +108 -0
- package/dist/session/rekey.d.ts.map +1 -0
- package/dist/session/rekey.js +207 -0
- package/dist/session/rekey.js.map +1 -0
- package/dist/session/rekey_seal.d.ts +66 -0
- package/dist/session/rekey_seal.d.ts.map +1 -0
- package/dist/session/rekey_seal.js +153 -0
- package/dist/session/rekey_seal.js.map +1 -0
- package/dist/session/resume.d.ts +125 -0
- package/dist/session/resume.d.ts.map +1 -0
- package/dist/session/resume.js +263 -0
- package/dist/session/resume.js.map +1 -0
- package/dist/session/session.d.ts +136 -0
- package/dist/session/session.d.ts.map +1 -0
- package/dist/session/session.js +188 -0
- package/dist/session/session.js.map +1 -0
- package/dist/transparency/index.d.ts +13 -0
- package/dist/transparency/index.d.ts.map +1 -0
- package/dist/transparency/index.js +13 -0
- package/dist/transparency/index.js.map +1 -0
- package/dist/transparency/log.d.ts +61 -0
- package/dist/transparency/log.d.ts.map +1 -0
- package/dist/transparency/log.js +133 -0
- package/dist/transparency/log.js.map +1 -0
- package/dist/transparency/merkle.d.ts +59 -0
- package/dist/transparency/merkle.d.ts.map +1 -0
- package/dist/transparency/merkle.js +314 -0
- package/dist/transparency/merkle.js.map +1 -0
- package/dist/transparency/sign.d.ts +48 -0
- package/dist/transparency/sign.d.ts.map +1 -0
- package/dist/transparency/sign.js +140 -0
- package/dist/transparency/sign.js.map +1 -0
- package/dist/transparency/types.d.ts +97 -0
- package/dist/transparency/types.d.ts.map +1 -0
- package/dist/transparency/types.js +25 -0
- package/dist/transparency/types.js.map +1 -0
- package/dist/transport/h2.d.ts +163 -0
- package/dist/transport/h2.d.ts.map +1 -0
- package/dist/transport/h2.js +397 -0
- package/dist/transport/h2.js.map +1 -0
- package/dist/transport/index.d.ts +15 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +15 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/memory.d.ts +21 -0
- package/dist/transport/memory.d.ts.map +1 -0
- package/dist/transport/memory.js +112 -0
- package/dist/transport/memory.js.map +1 -0
- package/dist/transport/transport.d.ts +54 -0
- package/dist/transport/transport.d.ts.map +1 -0
- package/dist/transport/transport.js +20 -0
- package/dist/transport/transport.js.map +1 -0
- package/dist/transport/ws.d.ts +40 -0
- package/dist/transport/ws.d.ts.map +1 -0
- package/dist/transport/ws.js +204 -0
- package/dist/transport/ws.js.map +1 -0
- package/package.json +147 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side per-user device directory state per KEY.md §10.6.
|
|
3
|
+
*
|
|
4
|
+
* A home server keeps a {@link DirectoryState} per account. Every
|
|
5
|
+
* enrollment (§10.1) or revocation (§10.5) bumps `revision` and
|
|
6
|
+
* produces a fresh signed {@link DeviceDirectory} record consumers
|
|
7
|
+
* fetch via the directory endpoint.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { type DeviceDirectory, type DeviceDirectoryEntry } from "./device_records.js";
|
|
12
|
+
/** Inputs to {@link DirectoryState}. */
|
|
13
|
+
export interface DirectoryStateConfig {
|
|
14
|
+
userId: string;
|
|
15
|
+
/** 32-byte Ed25519 seed for the user's identity key. */
|
|
16
|
+
identitySeed: Uint8Array;
|
|
17
|
+
identityKeyId: string;
|
|
18
|
+
/**
|
|
19
|
+
* Initial seed of devices, typically loaded from durable storage at
|
|
20
|
+
* startup. The constructor sorts them by `device_id` and emits
|
|
21
|
+
* revision 1. Pass `[]` to start empty (revision 0; first add bumps
|
|
22
|
+
* to 1).
|
|
23
|
+
*/
|
|
24
|
+
initial?: DeviceDirectoryEntry[];
|
|
25
|
+
/** Wall-clock used to stamp `issued_at`. Defaults to `() => new Date()`. */
|
|
26
|
+
now?: () => Date;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Per-user directory state: tracks the active device set, increments
|
|
30
|
+
* a monotonic revision counter, and emits a freshly signed
|
|
31
|
+
* {@link DeviceDirectory} on every change.
|
|
32
|
+
*/
|
|
33
|
+
export declare class DirectoryState {
|
|
34
|
+
private readonly userId;
|
|
35
|
+
private readonly identitySeed;
|
|
36
|
+
private readonly identityKeyId;
|
|
37
|
+
private readonly nowFn;
|
|
38
|
+
private readonly devices;
|
|
39
|
+
private revisionCounter;
|
|
40
|
+
private currentDir;
|
|
41
|
+
constructor(cfg: DirectoryStateConfig);
|
|
42
|
+
/**
|
|
43
|
+
* Record an enrollment per §10.1 and emit a new directory revision.
|
|
44
|
+
* Throws when `device_id` is empty or already present.
|
|
45
|
+
*/
|
|
46
|
+
addDevice(entry: DeviceDirectoryEntry): DeviceDirectory;
|
|
47
|
+
/**
|
|
48
|
+
* Record a revocation per §10.5 by removing `deviceId` from the
|
|
49
|
+
* active set and emitting a new directory revision. Returns
|
|
50
|
+
* `{ directory, removed }` where `removed === false` means the
|
|
51
|
+
* device wasn't in the directory and the directory is unchanged
|
|
52
|
+
* (no new revision was emitted).
|
|
53
|
+
*/
|
|
54
|
+
revokeDevice(deviceId: string): {
|
|
55
|
+
directory: DeviceDirectory | null;
|
|
56
|
+
removed: boolean;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Most recently emitted directory, or `null` when the state has
|
|
60
|
+
* never emitted (empty initial set and no `addDevice` calls). The
|
|
61
|
+
* returned object is the live record; callers MUST NOT mutate it.
|
|
62
|
+
*/
|
|
63
|
+
current(): DeviceDirectory | null;
|
|
64
|
+
/** Current monotonic revision counter. */
|
|
65
|
+
revision(): number;
|
|
66
|
+
private emit;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Multi-user wrapper a home server keeps: one {@link DirectoryState}
|
|
70
|
+
* per account it hosts. Lookups are by `user_id`.
|
|
71
|
+
*/
|
|
72
|
+
export declare class DirectoryStore {
|
|
73
|
+
private states;
|
|
74
|
+
/** Associate a fresh state with `userId`. Throws when `userId` is already present. */
|
|
75
|
+
register(userId: string, state: DirectoryState): void;
|
|
76
|
+
/** Return the state for `userId`, or `null` when not registered. */
|
|
77
|
+
lookup(userId: string): DirectoryState | null;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=directory_state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory_state.d.ts","sourceRoot":"","sources":["../../src/keys/directory_state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAI1B,MAAM,qBAAqB,CAAC;AAE7B,wCAAwC;AACxC,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,YAAY,EAAE,UAAU,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACjC,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IACnE,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,UAAU,CAAgC;gBAEtC,GAAG,EAAE,oBAAoB;IA+BrC;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe;IA6BvD;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG;QAC9B,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC;KAClB;IAYD;;;;OAIG;IACH,OAAO,IAAI,eAAe,GAAG,IAAI;IAIjC,0CAA0C;IAC1C,QAAQ,IAAI,MAAM;IAIlB,OAAO,CAAC,IAAI;CA0Bb;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAqC;IAEnD,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAYrD,oEAAoE;IACpE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;CAG9C"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side per-user device directory state per KEY.md §10.6.
|
|
3
|
+
*
|
|
4
|
+
* A home server keeps a {@link DirectoryState} per account. Every
|
|
5
|
+
* enrollment (§10.1) or revocation (§10.5) bumps `revision` and
|
|
6
|
+
* produces a fresh signed {@link DeviceDirectory} record consumers
|
|
7
|
+
* fetch via the directory endpoint.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { DeviceDirectoryType, DeviceRecordVersion, signDeviceDirectory, } from "./device_records.js";
|
|
12
|
+
/**
|
|
13
|
+
* Per-user directory state: tracks the active device set, increments
|
|
14
|
+
* a monotonic revision counter, and emits a freshly signed
|
|
15
|
+
* {@link DeviceDirectory} on every change.
|
|
16
|
+
*/
|
|
17
|
+
export class DirectoryState {
|
|
18
|
+
userId;
|
|
19
|
+
identitySeed;
|
|
20
|
+
identityKeyId;
|
|
21
|
+
nowFn;
|
|
22
|
+
devices = new Map();
|
|
23
|
+
revisionCounter = 0;
|
|
24
|
+
currentDir = null;
|
|
25
|
+
constructor(cfg) {
|
|
26
|
+
if (cfg.userId === "") {
|
|
27
|
+
throw new Error("keys: directory state missing user_id");
|
|
28
|
+
}
|
|
29
|
+
if (cfg.identitySeed.length === 0 || cfg.identityKeyId === "") {
|
|
30
|
+
throw new Error("keys: directory state missing identity key");
|
|
31
|
+
}
|
|
32
|
+
this.userId = cfg.userId;
|
|
33
|
+
this.identitySeed = cfg.identitySeed;
|
|
34
|
+
this.identityKeyId = cfg.identityKeyId;
|
|
35
|
+
this.nowFn = cfg.now ?? (() => new Date());
|
|
36
|
+
if (cfg.initial !== undefined) {
|
|
37
|
+
for (const d of cfg.initial) {
|
|
38
|
+
if (d.device_id === "") {
|
|
39
|
+
throw new Error("keys: directory initial seed entry missing device_id");
|
|
40
|
+
}
|
|
41
|
+
if (this.devices.has(d.device_id)) {
|
|
42
|
+
throw new Error(`keys: directory initial seed has duplicate device_id ${JSON.stringify(d.device_id)}`);
|
|
43
|
+
}
|
|
44
|
+
this.devices.set(d.device_id, d);
|
|
45
|
+
}
|
|
46
|
+
if (this.devices.size > 0) {
|
|
47
|
+
this.emit();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Record an enrollment per §10.1 and emit a new directory revision.
|
|
53
|
+
* Throws when `device_id` is empty or already present.
|
|
54
|
+
*/
|
|
55
|
+
addDevice(entry) {
|
|
56
|
+
if (entry.device_id === "") {
|
|
57
|
+
throw new Error("keys: directory entry missing device_id");
|
|
58
|
+
}
|
|
59
|
+
if (entry.device_public_key === "") {
|
|
60
|
+
throw new Error("keys: directory entry missing device_public_key");
|
|
61
|
+
}
|
|
62
|
+
if (entry.role === "full_access" && entry.certificate_id !== null) {
|
|
63
|
+
throw new Error("keys: directory entry full_access MUST have certificate_id = null");
|
|
64
|
+
}
|
|
65
|
+
if (entry.role === "delegated") {
|
|
66
|
+
if (entry.certificate_id === null || entry.certificate_id === "") {
|
|
67
|
+
throw new Error("keys: directory entry delegated MUST set certificate_id");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (this.devices.has(entry.device_id)) {
|
|
71
|
+
throw new Error(`keys: directory already contains device_id ${JSON.stringify(entry.device_id)}`);
|
|
72
|
+
}
|
|
73
|
+
this.devices.set(entry.device_id, entry);
|
|
74
|
+
this.emit();
|
|
75
|
+
return this.currentDir;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Record a revocation per §10.5 by removing `deviceId` from the
|
|
79
|
+
* active set and emitting a new directory revision. Returns
|
|
80
|
+
* `{ directory, removed }` where `removed === false` means the
|
|
81
|
+
* device wasn't in the directory and the directory is unchanged
|
|
82
|
+
* (no new revision was emitted).
|
|
83
|
+
*/
|
|
84
|
+
revokeDevice(deviceId) {
|
|
85
|
+
if (deviceId === "") {
|
|
86
|
+
throw new Error("keys: directory revoke missing device_id");
|
|
87
|
+
}
|
|
88
|
+
if (!this.devices.has(deviceId)) {
|
|
89
|
+
return { directory: this.currentDir, removed: false };
|
|
90
|
+
}
|
|
91
|
+
this.devices.delete(deviceId);
|
|
92
|
+
this.emit();
|
|
93
|
+
return { directory: this.currentDir, removed: true };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Most recently emitted directory, or `null` when the state has
|
|
97
|
+
* never emitted (empty initial set and no `addDevice` calls). The
|
|
98
|
+
* returned object is the live record; callers MUST NOT mutate it.
|
|
99
|
+
*/
|
|
100
|
+
current() {
|
|
101
|
+
return this.currentDir;
|
|
102
|
+
}
|
|
103
|
+
/** Current monotonic revision counter. */
|
|
104
|
+
revision() {
|
|
105
|
+
return this.revisionCounter;
|
|
106
|
+
}
|
|
107
|
+
emit() {
|
|
108
|
+
this.revisionCounter += 1;
|
|
109
|
+
const entries = Array.from(this.devices.values()).sort((a, b) => a.device_id < b.device_id ? -1 : a.device_id > b.device_id ? 1 : 0);
|
|
110
|
+
const dir = {
|
|
111
|
+
type: DeviceDirectoryType,
|
|
112
|
+
version: DeviceRecordVersion,
|
|
113
|
+
user_id: this.userId,
|
|
114
|
+
revision: this.revisionCounter,
|
|
115
|
+
issued_at: isoSecond(this.nowFn()),
|
|
116
|
+
devices: entries,
|
|
117
|
+
signature: { algorithm: "", key_id: "", value: "" },
|
|
118
|
+
};
|
|
119
|
+
try {
|
|
120
|
+
signDeviceDirectory(dir, this.identitySeed, this.identityKeyId);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
// Roll back the revision bump so the next attempt does not skip
|
|
124
|
+
// a number.
|
|
125
|
+
this.revisionCounter -= 1;
|
|
126
|
+
throw new Error(`keys: sign device directory: ${err instanceof Error ? err.message : String(err)}`);
|
|
127
|
+
}
|
|
128
|
+
this.currentDir = dir;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Multi-user wrapper a home server keeps: one {@link DirectoryState}
|
|
133
|
+
* per account it hosts. Lookups are by `user_id`.
|
|
134
|
+
*/
|
|
135
|
+
export class DirectoryStore {
|
|
136
|
+
states = new Map();
|
|
137
|
+
/** Associate a fresh state with `userId`. Throws when `userId` is already present. */
|
|
138
|
+
register(userId, state) {
|
|
139
|
+
if (userId === "") {
|
|
140
|
+
throw new Error("keys: directory store register missing user_id");
|
|
141
|
+
}
|
|
142
|
+
if (this.states.has(userId)) {
|
|
143
|
+
throw new Error(`keys: directory store already has user ${JSON.stringify(userId)}`);
|
|
144
|
+
}
|
|
145
|
+
this.states.set(userId, state);
|
|
146
|
+
}
|
|
147
|
+
/** Return the state for `userId`, or `null` when not registered. */
|
|
148
|
+
lookup(userId) {
|
|
149
|
+
return this.states.get(userId) ?? null;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function isoSecond(d) {
|
|
153
|
+
return d.toISOString().replace(/\.\d{3}Z$/, "Z");
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=directory_state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory_state.js","sourceRoot":"","sources":["../../src/keys/directory_state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity-key primitives. Layer 1 surface of `KEY.md`: Ed25519
|
|
3
|
+
* sign / verify and the SEMP fingerprint format. Higher-level
|
|
4
|
+
* registry / revocation logic lands in later waves.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
export { PublicKeySize, SeedSize, SignatureSize, fingerprint, publicKeyFromSeed, sign, verify, } from "./sign.js";
|
|
9
|
+
export { type SignSignedDocResult, type SignSignedDocSpec, type VerifySignedDocResult, type VerifySignedDocSpec, signSignedDoc, verifySignedDoc, } from "./signed.js";
|
|
10
|
+
export { type AddressIdentity, type CertificateSignature, type DeviceCertificate, type EntityType, type MatcherMode, type RateLimitTier, type Scope, type ScopeEntry, type ScopeMatcher, type ScopeResource, type SignDeviceCertificateInput, type SignDeviceCertificateResult, type ValidateOptions, DeviceAuthorizePrefix, DeviceCertificateType, MaxDeviceCertificateLifetimeMs, MaxScopeMatcherEntries, MaxScopeRateLimitTiers, scopeAllowsRecipient, scopeAllowsSender, signDeviceCertificate, validateDeviceCertificate, validateScope, verifyDeviceCertificate, } from "./device_certificate.js";
|
|
11
|
+
export { type DeviceAuthorization, type DeviceAuthorizationMethod, type DeviceDirectory, type DeviceDirectoryEntry, type DeviceRegistration, type DeviceRevocation, type DeviceRevocationReason, type DeviceRole, type KeysSignature, type SignDeviceAuthorizationInput, DeviceAuthorizeRecordPrefix, DeviceDirectoryPrefix, DeviceDirectoryType, DeviceRecordVersion, DeviceRegisterPrefix, DeviceRegistrationStep, DeviceRegistrationType, DeviceRevocationPrefix, DeviceRevocationType, findDevice, requiresIdentityRotation, signDeviceAuthorization, signDeviceDirectory, signDeviceRegistration, signDeviceRevocation, validateDeviceDirectory, validateDeviceRegistration, validateDeviceRevocation, verifyDeviceAuthorization, verifyDeviceDirectory, verifyDeviceRegistration, verifyDeviceRevocation, } from "./device_records.js";
|
|
12
|
+
export { type PublicationSignature, type Revocation, type RevocationPublication, type RevocationReason, type RevokedKeyEntry, RevocationPrefix, RevocationPublicationType, RevocationVersion, isReversibleReason, signRevocationPublication, validateRevocationPublication, verifyRevocationPublication, } from "./key_revocation.js";
|
|
13
|
+
export { type KeyRecord, type KeysClientStream, type KeysRequest, type KeysRequestStep, type KeysResponse, type KeysResponseResult, type KeysResultStatus, type KeysSignatureBlock, KeysRequestType, KeysRequestVersion, fetchKeys, newKeysRequest, newKeysResponse, validateKeysRequest, } from "./request.js";
|
|
14
|
+
export { type CompromiseRotation, type CompromiseRotationInput, buildCompromiseRotation, verifyCompromiseRotation, } from "./compromise.js";
|
|
15
|
+
export { type CertificateCheck, DirectoryCache, DirectoryRollbackError, } from "./directory_cache.js";
|
|
16
|
+
export { type DirectoryStateConfig, DirectoryState, DirectoryStore, } from "./directory_state.js";
|
|
17
|
+
export { type KeyStore, type KeyStoreRecord, type KeyStoreSignature, type KeyType, type PrivateKeyStore, InMemoryKeyStore, } from "./store.js";
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,IAAI,EACJ,MAAM,GACP,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,8BAA8B,EAC9B,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,4BAA4B,EACjC,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,gBAAgB,EACrB,cAAc,EACd,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,oBAAoB,EACzB,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity-key primitives. Layer 1 surface of `KEY.md`: Ed25519
|
|
3
|
+
* sign / verify and the SEMP fingerprint format. Higher-level
|
|
4
|
+
* registry / revocation logic lands in later waves.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
export { PublicKeySize, SeedSize, SignatureSize, fingerprint, publicKeyFromSeed, sign, verify, } from "./sign.js";
|
|
9
|
+
export { signSignedDoc, verifySignedDoc, } from "./signed.js";
|
|
10
|
+
export { DeviceAuthorizePrefix, DeviceCertificateType, MaxDeviceCertificateLifetimeMs, MaxScopeMatcherEntries, MaxScopeRateLimitTiers, scopeAllowsRecipient, scopeAllowsSender, signDeviceCertificate, validateDeviceCertificate, validateScope, verifyDeviceCertificate, } from "./device_certificate.js";
|
|
11
|
+
export { DeviceAuthorizeRecordPrefix, DeviceDirectoryPrefix, DeviceDirectoryType, DeviceRecordVersion, DeviceRegisterPrefix, DeviceRegistrationStep, DeviceRegistrationType, DeviceRevocationPrefix, DeviceRevocationType, findDevice, requiresIdentityRotation, signDeviceAuthorization, signDeviceDirectory, signDeviceRegistration, signDeviceRevocation, validateDeviceDirectory, validateDeviceRegistration, validateDeviceRevocation, verifyDeviceAuthorization, verifyDeviceDirectory, verifyDeviceRegistration, verifyDeviceRevocation, } from "./device_records.js";
|
|
12
|
+
export { RevocationPrefix, RevocationPublicationType, RevocationVersion, isReversibleReason, signRevocationPublication, validateRevocationPublication, verifyRevocationPublication, } from "./key_revocation.js";
|
|
13
|
+
export { KeysRequestType, KeysRequestVersion, fetchKeys, newKeysRequest, newKeysResponse, validateKeysRequest, } from "./request.js";
|
|
14
|
+
export { buildCompromiseRotation, verifyCompromiseRotation, } from "./compromise.js";
|
|
15
|
+
export { DirectoryCache, DirectoryRollbackError, } from "./directory_cache.js";
|
|
16
|
+
export { DirectoryState, DirectoryStore, } from "./directory_state.js";
|
|
17
|
+
export { InMemoryKeyStore, } from "./store.js";
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,IAAI,EACJ,MAAM,GACP,MAAM,WAAW,CAAC;AAEnB,OAAO,EAKL,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EAcL,qBAAqB,EACrB,qBAAqB,EACrB,8BAA8B,EAC9B,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAWL,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAML,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EASL,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAGL,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,cAAc,EACd,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAML,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-key revocation primitives per KEY.md §8.
|
|
3
|
+
*
|
|
4
|
+
* The published wire shape is `SEMP_KEY_REVOCATION` — a list of
|
|
5
|
+
* revoked keys signed by the publishing party (a domain or a user).
|
|
6
|
+
* The signature uses the `SEMP-REVOCATION:` domain-separation
|
|
7
|
+
* prefix per ENVELOPE.md §4.3.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/** Wire-level constants. */
|
|
12
|
+
export declare const RevocationPublicationType = "SEMP_KEY_REVOCATION";
|
|
13
|
+
export declare const RevocationVersion = "1.0.0";
|
|
14
|
+
export declare const RevocationPrefix = "SEMP-REVOCATION:";
|
|
15
|
+
/** Reasons per §8.2 + ERRORS.md §8. */
|
|
16
|
+
export type RevocationReason = "key_compromise" | "superseded" | "cessation_of_operation" | "temporary_hold";
|
|
17
|
+
/** Report whether the revocation is potentially reversible. */
|
|
18
|
+
export declare function isReversibleReason(r: RevocationReason): boolean;
|
|
19
|
+
/** Reusable signature block. */
|
|
20
|
+
export interface PublicationSignature {
|
|
21
|
+
algorithm: string;
|
|
22
|
+
key_id: string;
|
|
23
|
+
value: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Per-key revocation record per §8.4 — embedded in a key response
|
|
27
|
+
* or in a {@link RevocationPublication}.
|
|
28
|
+
*/
|
|
29
|
+
export interface Revocation {
|
|
30
|
+
reason: RevocationReason;
|
|
31
|
+
/** ISO 8601 UTC timestamp the key was revoked. */
|
|
32
|
+
revoked_at: string;
|
|
33
|
+
/** Fingerprint of the successor key, when known. */
|
|
34
|
+
replacement_key_id?: string;
|
|
35
|
+
}
|
|
36
|
+
/** One row inside a {@link RevocationPublication}. */
|
|
37
|
+
export interface RevokedKeyEntry {
|
|
38
|
+
key_id: string;
|
|
39
|
+
/** Address (for user-key revocations); empty for domain-key revocations. */
|
|
40
|
+
address?: string;
|
|
41
|
+
reason: RevocationReason;
|
|
42
|
+
/** ISO 8601 UTC. */
|
|
43
|
+
revoked_at: string;
|
|
44
|
+
replacement_key_id?: string;
|
|
45
|
+
}
|
|
46
|
+
/** Wire shape per §8.1. */
|
|
47
|
+
export interface RevocationPublication {
|
|
48
|
+
type: typeof RevocationPublicationType;
|
|
49
|
+
version: string;
|
|
50
|
+
revoked_keys: RevokedKeyEntry[];
|
|
51
|
+
signature: PublicationSignature;
|
|
52
|
+
}
|
|
53
|
+
/** Sign a {@link RevocationPublication} under the publisher's identity key. */
|
|
54
|
+
export declare function signRevocationPublication(pub: RevocationPublication, signingPriv: Uint8Array, signingKeyId: string): string;
|
|
55
|
+
/** Verify a {@link RevocationPublication} under the publisher's identity public key. */
|
|
56
|
+
export declare function verifyRevocationPublication(pub: RevocationPublication, publisherPub: Uint8Array): boolean;
|
|
57
|
+
/** Structural validation per §8.1. Throws on first violation. */
|
|
58
|
+
export declare function validateRevocationPublication(pub: RevocationPublication, opts?: {
|
|
59
|
+
skipSignatureCheck?: boolean;
|
|
60
|
+
}): void;
|
|
61
|
+
//# sourceMappingURL=key_revocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key_revocation.d.ts","sourceRoot":"","sources":["../../src/keys/key_revocation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,4BAA4B;AAC5B,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAC/D,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,uCAAuC;AACvC,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,YAAY,GACZ,wBAAwB,GACxB,gBAAgB,CAAC;AAErB,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAE/D;AAED,gCAAgC;AAChC,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,2BAA2B;AAC3B,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,yBAAyB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,SAAS,EAAE,oBAAoB,CAAC;CACjC;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,qBAAqB,EAC1B,WAAW,EAAE,UAAU,EACvB,YAAY,EAAE,MAAM,GACnB,MAAM,CAgBR;AAED,wFAAwF;AACxF,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,qBAAqB,EAC1B,YAAY,EAAE,UAAU,GACvB,OAAO,CAYT;AAED,iEAAiE;AACjE,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,qBAAqB,EAC1B,IAAI,GAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,IAAI,CAwCN"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-key revocation primitives per KEY.md §8.
|
|
3
|
+
*
|
|
4
|
+
* The published wire shape is `SEMP_KEY_REVOCATION` — a list of
|
|
5
|
+
* revoked keys signed by the publishing party (a domain or a user).
|
|
6
|
+
* The signature uses the `SEMP-REVOCATION:` domain-separation
|
|
7
|
+
* prefix per ENVELOPE.md §4.3.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { signSignedDoc, verifySignedDoc } from "./signed.js";
|
|
12
|
+
/** Wire-level constants. */
|
|
13
|
+
export const RevocationPublicationType = "SEMP_KEY_REVOCATION";
|
|
14
|
+
export const RevocationVersion = "1.0.0";
|
|
15
|
+
export const RevocationPrefix = "SEMP-REVOCATION:";
|
|
16
|
+
/** Report whether the revocation is potentially reversible. */
|
|
17
|
+
export function isReversibleReason(r) {
|
|
18
|
+
return r === "temporary_hold";
|
|
19
|
+
}
|
|
20
|
+
/** Sign a {@link RevocationPublication} under the publisher's identity key. */
|
|
21
|
+
export function signRevocationPublication(pub, signingPriv, signingKeyId) {
|
|
22
|
+
if (signingKeyId === "") {
|
|
23
|
+
throw new Error("keys: empty signing key_id");
|
|
24
|
+
}
|
|
25
|
+
validateRevocationPublication(pub, { skipSignatureCheck: true });
|
|
26
|
+
pub.signature.algorithm = "ed25519";
|
|
27
|
+
pub.signature.key_id = signingKeyId;
|
|
28
|
+
pub.signature.value = "";
|
|
29
|
+
const { signedJSON, signatureB64 } = signSignedDoc({
|
|
30
|
+
preSignJSON: pub,
|
|
31
|
+
seed: signingPriv,
|
|
32
|
+
signaturePath: "signature.value",
|
|
33
|
+
prefix: RevocationPrefix,
|
|
34
|
+
});
|
|
35
|
+
pub.signature.value = signedJSON.signature.value;
|
|
36
|
+
return signatureB64;
|
|
37
|
+
}
|
|
38
|
+
/** Verify a {@link RevocationPublication} under the publisher's identity public key. */
|
|
39
|
+
export function verifyRevocationPublication(pub, publisherPub) {
|
|
40
|
+
validateRevocationPublication(pub);
|
|
41
|
+
if (pub.signature.value === "") {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const { ok } = verifySignedDoc({
|
|
45
|
+
signedJSON: pub,
|
|
46
|
+
publicKey: publisherPub,
|
|
47
|
+
signaturePath: "signature.value",
|
|
48
|
+
prefix: RevocationPrefix,
|
|
49
|
+
});
|
|
50
|
+
return ok;
|
|
51
|
+
}
|
|
52
|
+
/** Structural validation per §8.1. Throws on first violation. */
|
|
53
|
+
export function validateRevocationPublication(pub, opts = {}) {
|
|
54
|
+
if (pub.type !== RevocationPublicationType) {
|
|
55
|
+
throw new Error(`keys: revocation publication type ${JSON.stringify(pub.type)}, want ${RevocationPublicationType}`);
|
|
56
|
+
}
|
|
57
|
+
if (typeof pub.version !== "string" || pub.version === "") {
|
|
58
|
+
throw new Error("keys: revocation publication missing version");
|
|
59
|
+
}
|
|
60
|
+
if (!Array.isArray(pub.revoked_keys)) {
|
|
61
|
+
throw new Error("keys: revocation publication revoked_keys must be an array");
|
|
62
|
+
}
|
|
63
|
+
for (let i = 0; i < pub.revoked_keys.length; i++) {
|
|
64
|
+
const e = pub.revoked_keys[i];
|
|
65
|
+
if (typeof e.key_id !== "string" || e.key_id === "") {
|
|
66
|
+
throw new Error(`keys: revoked_keys[${i}] missing key_id`);
|
|
67
|
+
}
|
|
68
|
+
if (e.reason !== "key_compromise" &&
|
|
69
|
+
e.reason !== "superseded" &&
|
|
70
|
+
e.reason !== "cessation_of_operation" &&
|
|
71
|
+
e.reason !== "temporary_hold") {
|
|
72
|
+
throw new Error(`keys: revoked_keys[${i}] reason ${JSON.stringify(e.reason)} is invalid`);
|
|
73
|
+
}
|
|
74
|
+
if (typeof e.revoked_at !== "string" || e.revoked_at === "") {
|
|
75
|
+
throw new Error(`keys: revoked_keys[${i}] missing revoked_at`);
|
|
76
|
+
}
|
|
77
|
+
if (Number.isNaN(Date.parse(e.revoked_at))) {
|
|
78
|
+
throw new Error(`keys: revoked_keys[${i}] revoked_at is not ISO 8601`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (typeof pub.signature?.value !== "string") {
|
|
82
|
+
throw new Error("keys: revocation publication signature.value must be a string");
|
|
83
|
+
}
|
|
84
|
+
if (!opts.skipSignatureCheck && pub.signature.value === "") {
|
|
85
|
+
throw new Error("keys: revocation publication is unsigned");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=key_revocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key_revocation.js","sourceRoot":"","sources":["../../src/keys/key_revocation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEMP_KEYS request / response per CLIENT.md §5.4 + KEY.md §4.
|
|
3
|
+
*
|
|
4
|
+
* Clients send a SEMP_KEYS request over their authenticated session
|
|
5
|
+
* to ask the home server for one or more recipient users' published
|
|
6
|
+
* keys. The home server fulfills the request from cache or by
|
|
7
|
+
* fetching from the remote domain's well-known URI / federation
|
|
8
|
+
* session and returns a SEMP_KEYS response.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
/** Wire-level type discriminator. */
|
|
13
|
+
export declare const KeysRequestType = "SEMP_KEYS";
|
|
14
|
+
/** Wire-level version per ENVELOPE.md §1.4. */
|
|
15
|
+
export declare const KeysRequestVersion = "1.0.0";
|
|
16
|
+
/** Step discriminator for SEMP_KEYS messages. */
|
|
17
|
+
export type KeysRequestStep = "request" | "response";
|
|
18
|
+
/** Per-address lookup status per CLIENT.md §5.4.5. */
|
|
19
|
+
export type KeysResultStatus = "found" | "not_found" | "error";
|
|
20
|
+
/** A single key record per KEY.md §3 / §10.6. */
|
|
21
|
+
export interface KeyRecord {
|
|
22
|
+
algorithm: string;
|
|
23
|
+
/** Base64-encoded public key. */
|
|
24
|
+
public_key: string;
|
|
25
|
+
/** Lowercase-hex SHA-256 fingerprint. */
|
|
26
|
+
key_id: string;
|
|
27
|
+
/** Key kind: "identity" | "encryption". */
|
|
28
|
+
key_type?: string;
|
|
29
|
+
/** Address the key belongs to (for user-key records). */
|
|
30
|
+
address?: string;
|
|
31
|
+
/** ISO 8601 UTC. */
|
|
32
|
+
created?: string;
|
|
33
|
+
/** ISO 8601 UTC; absent for non-expiring keys. */
|
|
34
|
+
expires?: string;
|
|
35
|
+
/** Per-key revocation block when the key has been revoked. */
|
|
36
|
+
revocation?: {
|
|
37
|
+
reason: string;
|
|
38
|
+
/** ISO 8601 UTC. */
|
|
39
|
+
revoked_at: string;
|
|
40
|
+
/** Optional successor key fingerprint. */
|
|
41
|
+
replacement_key_id?: string;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** Reusable signature block. */
|
|
45
|
+
export interface KeysSignatureBlock {
|
|
46
|
+
algorithm: string;
|
|
47
|
+
key_id: string;
|
|
48
|
+
/** Base64. */
|
|
49
|
+
value: string;
|
|
50
|
+
}
|
|
51
|
+
/** SEMP_KEYS request schema per §5.4.1. */
|
|
52
|
+
export interface KeysRequest {
|
|
53
|
+
type: typeof KeysRequestType;
|
|
54
|
+
step: "request";
|
|
55
|
+
version: string;
|
|
56
|
+
/** ULID for the request — used to correlate the response. */
|
|
57
|
+
id: string;
|
|
58
|
+
/** ISO 8601 UTC. */
|
|
59
|
+
timestamp: string;
|
|
60
|
+
addresses: string[];
|
|
61
|
+
/** Default `true`. When false, the response omits domain key records. */
|
|
62
|
+
include_domain_keys: boolean;
|
|
63
|
+
}
|
|
64
|
+
/** SEMP_KEYS response schema per §5.4.3. */
|
|
65
|
+
export interface KeysResponse {
|
|
66
|
+
type: typeof KeysRequestType;
|
|
67
|
+
step: "response";
|
|
68
|
+
version: string;
|
|
69
|
+
/** Echo of the originating request id. */
|
|
70
|
+
id: string;
|
|
71
|
+
/** ISO 8601 UTC. */
|
|
72
|
+
timestamp: string;
|
|
73
|
+
results: KeysResponseResult[];
|
|
74
|
+
}
|
|
75
|
+
/** One entry in a {@link KeysResponse} per §5.4.5. */
|
|
76
|
+
export interface KeysResponseResult {
|
|
77
|
+
address: string;
|
|
78
|
+
status: KeysResultStatus;
|
|
79
|
+
/** Recipient's domain (suffix of `address` after `@`). */
|
|
80
|
+
domain: string;
|
|
81
|
+
/** Domain signing key record (when `include_domain_keys === true`). */
|
|
82
|
+
domain_key?: KeyRecord;
|
|
83
|
+
/** Domain encryption key record (when `include_domain_keys === true`). */
|
|
84
|
+
domain_enc_key?: KeyRecord;
|
|
85
|
+
/** Per-user key set. Always present (possibly empty) on `status === "found"`. */
|
|
86
|
+
user_keys: KeyRecord[];
|
|
87
|
+
/** Remote domain's signature over the key material per §5.4.5. */
|
|
88
|
+
origin_signature?: KeysSignatureBlock;
|
|
89
|
+
/** Human-readable diagnostic; populated only on `status === "error"`. */
|
|
90
|
+
error_reason?: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Construct a SEMP_KEYS request with `version` + `timestamp`
|
|
94
|
+
* pre-populated and `include_domain_keys` set to the spec default
|
|
95
|
+
* (true).
|
|
96
|
+
*/
|
|
97
|
+
export declare function newKeysRequest(id: string, addresses: string[], nowFn?: () => Date): KeysRequest;
|
|
98
|
+
/** Construct a SEMP_KEYS response echoing `requestId`. */
|
|
99
|
+
export declare function newKeysResponse(requestId: string, results: KeysResponseResult[], nowFn?: () => Date): KeysResponse;
|
|
100
|
+
/**
|
|
101
|
+
* Validate a SEMP_KEYS request structurally per §5.4.1. Throws on
|
|
102
|
+
* the first violation.
|
|
103
|
+
*/
|
|
104
|
+
export declare function validateKeysRequest(req: KeysRequest): void;
|
|
105
|
+
/**
|
|
106
|
+
* Minimal stream interface a {@link KeysFetcher} consumes. Both the
|
|
107
|
+
* h2 client's turn-based Conn and an in-memory channel pair satisfy
|
|
108
|
+
* this shape.
|
|
109
|
+
*/
|
|
110
|
+
export interface KeysClientStream {
|
|
111
|
+
send(message: Uint8Array): Promise<void>;
|
|
112
|
+
receive(): Promise<Uint8Array | null>;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Send a SEMP_KEYS request on the supplied stream and parse the
|
|
116
|
+
* response. The home server is expected to fulfill the request
|
|
117
|
+
* synchronously and respond on the same stream.
|
|
118
|
+
*
|
|
119
|
+
* Returns the parsed {@link KeysResponse}. Throws on transport
|
|
120
|
+
* failure, malformed JSON, response that is not a SEMP_KEYS
|
|
121
|
+
* response, or response whose `id` does not match the request.
|
|
122
|
+
*/
|
|
123
|
+
export declare function fetchKeys(stream: KeysClientStream, req: KeysRequest): Promise<KeysResponse>;
|
|
124
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/keys/request.ts"],"names":[],"mappings":"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"}
|