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