@kya-os/mcp 1.16.2 → 1.18.0
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/AUDITABILITY.md +129 -8
- package/CHANGELOG.md +641 -0
- package/CONFORMANCE.md +12 -6
- package/README.md +67 -26
- package/SPEC.md +105 -18
- package/dist/audit/adapters/legacy-audit-log.d.ts +0 -1
- package/dist/audit/adapters/mcp.d.ts +0 -1
- package/dist/audit/adapters/mcp.js +35 -20
- package/dist/audit/adapters/mcp.js.map +1 -1
- package/dist/audit/adapters/references.d.ts +9 -0
- package/dist/audit/adapters/references.js +22 -0
- package/dist/audit/adapters/references.js.map +1 -0
- package/dist/audit/assurance.d.ts +0 -1
- package/dist/audit/checkpoint-coordinator.d.ts +0 -1
- package/dist/audit/checkpoint.d.ts +17 -1
- package/dist/audit/checkpoint.js +76 -21
- package/dist/audit/checkpoint.js.map +1 -1
- package/dist/audit/cli.d.ts +0 -1
- package/dist/audit/crypto.d.ts +0 -1
- package/dist/audit/crypto.js +12 -3
- package/dist/audit/crypto.js.map +1 -1
- package/dist/audit/errors.d.ts +0 -1
- package/dist/audit/evidence.d.ts +0 -1
- package/dist/audit/index.d.ts +0 -1
- package/dist/audit/integrity.d.ts +0 -1
- package/dist/audit/merkle.d.ts +0 -1
- package/dist/audit/mirror-service.d.ts +0 -1
- package/dist/audit/projection.d.ts +1 -1
- package/dist/audit/projection.js +23 -2
- package/dist/audit/projection.js.map +1 -1
- package/dist/audit/providers/anchor.d.ts +0 -1
- package/dist/audit/providers/evidence.d.ts +0 -1
- package/dist/audit/providers/journal.d.ts +0 -1
- package/dist/audit/providers/memory-journal.d.ts +0 -1
- package/dist/audit/providers/observer.d.ts +0 -1
- package/dist/audit/providers/outbox.d.ts +35 -6
- package/dist/audit/providers/outbox.js +46 -8
- package/dist/audit/providers/outbox.js.map +1 -1
- package/dist/audit/providers/recorder-client.d.ts +0 -1
- package/dist/audit/providers/source-state.d.ts +24 -2
- package/dist/audit/providers/source-state.js +65 -44
- package/dist/audit/providers/source-state.js.map +1 -1
- package/dist/audit/read-contract.d.ts +0 -1
- package/dist/audit/read-service.d.ts +2 -3
- package/dist/audit/read-service.js +17 -12
- package/dist/audit/read-service.js.map +1 -1
- package/dist/audit/recorder-service.d.ts +33 -5
- package/dist/audit/recorder-service.js +116 -20
- package/dist/audit/recorder-service.js.map +1 -1
- package/dist/audit/reference-recorder.d.ts +0 -1
- package/dist/audit/replay-bundle.d.ts +0 -1
- package/dist/audit/replay-bundle.js +143 -36
- package/dist/audit/replay-bundle.js.map +1 -1
- package/dist/audit/schemas.d.ts +0 -1
- package/dist/audit/service.d.ts +6 -3
- package/dist/audit/service.js +55 -24
- package/dist/audit/service.js.map +1 -1
- package/dist/audit/testing/index.d.ts +0 -1
- package/dist/audit/testing/provider-contracts.d.ts +1 -2
- package/dist/audit/testing/provider-contracts.js +32 -2
- package/dist/audit/testing/provider-contracts.js.map +1 -1
- package/dist/audit/types.d.ts +0 -1
- package/dist/audit/verifier.d.ts +57 -5
- package/dist/audit/verifier.js +240 -49
- package/dist/audit/verifier.js.map +1 -1
- package/dist/auth/handshake.d.ts +12 -1
- package/dist/auth/handshake.js +44 -11
- package/dist/auth/handshake.js.map +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/types.d.ts +0 -1
- package/dist/authz/accountability.d.ts +0 -1
- package/dist/authz/adapter.d.ts +0 -1
- package/dist/authz/examples/inmemory-oidc.d.ts +0 -1
- package/dist/authz/index.d.ts +0 -1
- package/dist/authz/oidc/authorize.d.ts +0 -1
- package/dist/authz/oidc/metadata.d.ts +0 -1
- package/dist/authz/oidc/oidc-adapter.d.ts +0 -1
- package/dist/authz/oidc/oidc-adapter.js +51 -3
- package/dist/authz/oidc/oidc-adapter.js.map +1 -1
- package/dist/authz/oidc/pending-flow-store.d.ts +6 -1
- package/dist/authz/oidc/pending-flow-store.js +22 -2
- package/dist/authz/oidc/pending-flow-store.js.map +1 -1
- package/dist/authz/oidc/pkce.d.ts +0 -1
- package/dist/authz/registry.d.ts +0 -1
- package/dist/authz/requirement.d.ts +0 -1
- package/dist/card/build.d.ts +0 -1
- package/dist/card/builder.d.ts +0 -1
- package/dist/card/cimd.d.ts +19 -5
- package/dist/card/cimd.js +52 -7
- package/dist/card/cimd.js.map +1 -1
- package/dist/card/delegation.d.ts +12 -4
- package/dist/card/delegation.js +38 -22
- package/dist/card/delegation.js.map +1 -1
- package/dist/card/emit.d.ts +0 -1
- package/dist/card/index.d.ts +0 -1
- package/dist/card/middleware.d.ts +0 -1
- package/dist/card/proof/build.d.ts +0 -1
- package/dist/card/proof/canonical.d.ts +0 -1
- package/dist/card/proof/canonical.js +6 -1
- package/dist/card/proof/canonical.js.map +1 -1
- package/dist/card/proof/http-sig.d.ts +0 -1
- package/dist/card/proof/index.d.ts +0 -1
- package/dist/card/proof/nonce-cache.d.ts +15 -14
- package/dist/card/proof/nonce-cache.js +22 -20
- package/dist/card/proof/nonce-cache.js.map +1 -1
- package/dist/card/proof/signer.d.ts +0 -1
- package/dist/card/proof/types.d.ts +10 -4
- package/dist/card/proof/types.js +2 -2
- package/dist/card/proof/verify.d.ts +0 -1
- package/dist/card/proof/verify.js +17 -3
- package/dist/card/proof/verify.js.map +1 -1
- package/dist/card/resolve.d.ts +0 -1
- package/dist/card/resolve.js +13 -8
- package/dist/card/resolve.js.map +1 -1
- package/dist/card/revocation.d.ts +0 -1
- package/dist/card/revocation.js +18 -6
- package/dist/card/revocation.js.map +1 -1
- package/dist/card/schema.d.ts +7 -6
- package/dist/card/schema.js +7 -3
- package/dist/card/schema.js.map +1 -1
- package/dist/card/verify.d.ts +0 -1
- package/dist/delegation/audience-validator.d.ts +0 -1
- package/dist/delegation/bitstring.d.ts +0 -1
- package/dist/delegation/cascading-revocation.d.ts +1 -2
- package/dist/delegation/cascading-revocation.js +34 -36
- package/dist/delegation/cascading-revocation.js.map +1 -1
- package/dist/delegation/chain-enforcement.d.ts +42 -5
- package/dist/delegation/chain-enforcement.js +127 -34
- package/dist/delegation/chain-enforcement.js.map +1 -1
- package/dist/delegation/delegation-graph.d.ts +30 -1
- package/dist/delegation/delegation-graph.js +33 -0
- package/dist/delegation/delegation-graph.js.map +1 -1
- package/dist/delegation/delegation-registration.d.ts +22 -0
- package/dist/delegation/delegation-registration.js +51 -0
- package/dist/delegation/delegation-registration.js.map +1 -0
- package/dist/delegation/delegation-status-entry.d.ts +22 -0
- package/dist/delegation/delegation-status-entry.js +42 -0
- package/dist/delegation/delegation-status-entry.js.map +1 -0
- package/dist/delegation/did-key-resolver.d.ts +0 -1
- package/dist/delegation/did-key-resolver.js +15 -4
- package/dist/delegation/did-key-resolver.js.map +1 -1
- package/dist/delegation/did-linkage.d.ts +0 -1
- package/dist/delegation/did-resolver-registry.d.ts +0 -1
- package/dist/delegation/did-web-resolver.d.ts +0 -1
- package/dist/delegation/did-web-resolver.js +40 -5
- package/dist/delegation/did-web-resolver.js.map +1 -1
- package/dist/delegation/holder-binding.d.ts +11 -11
- package/dist/delegation/holder-binding.js +8 -17
- package/dist/delegation/holder-binding.js.map +1 -1
- package/dist/delegation/index.d.ts +0 -1
- package/dist/delegation/outbound-headers.d.ts +0 -1
- package/dist/delegation/outbound-proof.d.ts +0 -1
- package/dist/delegation/scope-matcher.d.ts +25 -2
- package/dist/delegation/scope-matcher.js +75 -5
- package/dist/delegation/scope-matcher.js.map +1 -1
- package/dist/delegation/status-cache.d.ts +0 -1
- package/dist/delegation/statuslist-manager.d.ts +18 -2
- package/dist/delegation/statuslist-manager.js +40 -14
- package/dist/delegation/statuslist-manager.js.map +1 -1
- package/dist/delegation/storage/memory-graph-storage.d.ts +9 -3
- package/dist/delegation/storage/memory-graph-storage.js +28 -14
- package/dist/delegation/storage/memory-graph-storage.js.map +1 -1
- package/dist/delegation/storage/memory-statuslist-storage.d.ts +0 -1
- package/dist/delegation/utils.d.ts +5 -5
- package/dist/delegation/utils.js +4 -4
- package/dist/delegation/utils.js.map +1 -1
- package/dist/delegation/vc-issuer.d.ts +0 -1
- package/dist/delegation/vc-jwt-verify.d.ts +7 -2
- package/dist/delegation/vc-jwt-verify.js +55 -3
- package/dist/delegation/vc-jwt-verify.js.map +1 -1
- package/dist/delegation/vc-verification-checks.d.ts +0 -1
- package/dist/delegation/vc-verification-checks.js +9 -5
- package/dist/delegation/vc-verification-checks.js.map +1 -1
- package/dist/delegation/vc-verifier.d.ts +0 -1
- package/dist/delegation/vc-verifier.types.d.ts +0 -1
- package/dist/delegation/verification-method-key.d.ts +0 -1
- package/dist/delegation/verification-method-key.js +4 -3
- package/dist/delegation/verification-method-key.js.map +1 -1
- package/dist/errors.d.ts +0 -1
- package/dist/extension/declaration.d.ts +0 -1
- package/dist/extension/gate.d.ts +0 -1
- package/dist/extension/index.d.ts +0 -1
- package/dist/extension/settings.d.ts +0 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/cheqd/dlr.d.ts +0 -1
- package/dist/integrations/cheqd/dlr.js +6 -1
- package/dist/integrations/cheqd/dlr.js.map +1 -1
- package/dist/integrations/cheqd/index.d.ts +0 -1
- package/dist/integrations/cheqd/linkage.d.ts +0 -1
- package/dist/integrations/cheqd/registrar.d.ts +0 -1
- package/dist/integrations/cheqd/resolver.d.ts +0 -1
- package/dist/integrations/cheqd/statuslist-resolver.d.ts +0 -1
- package/dist/logging/index.d.ts +0 -1
- package/dist/logging/logger.d.ts +0 -1
- package/dist/middleware/index.d.ts +0 -1
- package/dist/middleware/kya-os-transport.d.ts +5 -3
- package/dist/middleware/kya-os-transport.js +58 -24
- package/dist/middleware/kya-os-transport.js.map +1 -1
- package/dist/middleware/with-kya-os-server.d.ts +30 -4
- package/dist/middleware/with-kya-os-server.js +19 -0
- package/dist/middleware/with-kya-os-server.js.map +1 -1
- package/dist/middleware/with-kya-os.config-types.d.ts +32 -4
- package/dist/middleware/with-kya-os.d.ts +0 -1
- package/dist/middleware/with-kya-os.delegation-gate.d.ts +2 -1
- package/dist/middleware/with-kya-os.delegation-gate.js +37 -9
- package/dist/middleware/with-kya-os.delegation-gate.js.map +1 -1
- package/dist/middleware/with-kya-os.delegation-verify.d.ts +1 -1
- package/dist/middleware/with-kya-os.delegation-verify.js +52 -9
- package/dist/middleware/with-kya-os.delegation-verify.js.map +1 -1
- package/dist/middleware/with-kya-os.deps.d.ts +0 -1
- package/dist/middleware/with-kya-os.grants.d.ts +13 -6
- package/dist/middleware/with-kya-os.grants.js +56 -18
- package/dist/middleware/with-kya-os.grants.js.map +1 -1
- package/dist/middleware/with-kya-os.helpers.d.ts +0 -1
- package/dist/middleware/with-kya-os.js +14 -4
- package/dist/middleware/with-kya-os.js.map +1 -1
- package/dist/middleware/with-kya-os.policy-gate.d.ts +0 -1
- package/dist/middleware/with-kya-os.policy-gate.js +18 -9
- package/dist/middleware/with-kya-os.policy-gate.js.map +1 -1
- package/dist/middleware/with-kya-os.protocol.d.ts +0 -1
- package/dist/middleware/with-kya-os.session.d.ts +28 -1
- package/dist/middleware/with-kya-os.session.js +146 -7
- package/dist/middleware/with-kya-os.session.js.map +1 -1
- package/dist/middleware/with-kya-os.types.d.ts +28 -5
- package/dist/policy/approval.d.ts +13 -2
- package/dist/policy/approval.js +15 -4
- package/dist/policy/approval.js.map +1 -1
- package/dist/policy/classifier.d.ts +0 -1
- package/dist/policy/default-engine.d.ts +5 -2
- package/dist/policy/default-engine.js +10 -2
- package/dist/policy/default-engine.js.map +1 -1
- package/dist/policy/engine.d.ts +0 -1
- package/dist/policy/index.d.ts +0 -1
- package/dist/policy/projection.d.ts +0 -1
- package/dist/policy/types.d.ts +0 -1
- package/dist/proof/covered-request.d.ts +46 -0
- package/dist/proof/covered-request.js +107 -0
- package/dist/proof/covered-request.js.map +1 -0
- package/dist/proof/errors.d.ts +3 -1
- package/dist/proof/errors.js +5 -0
- package/dist/proof/errors.js.map +1 -1
- package/dist/proof/generator.d.ts +51 -1
- package/dist/proof/generator.js +71 -13
- package/dist/proof/generator.js.map +1 -1
- package/dist/proof/index.d.ts +1 -2
- package/dist/proof/index.js.map +1 -1
- package/dist/proof/verifier.d.ts +50 -12
- package/dist/proof/verifier.js +164 -84
- package/dist/proof/verifier.js.map +1 -1
- package/dist/providers/audit-log.d.ts +0 -1
- package/dist/providers/base.d.ts +19 -1
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/grant-store.d.ts +8 -2
- package/dist/providers/grant-store.js +5 -5
- package/dist/providers/grant-store.js.map +1 -1
- package/dist/providers/index.d.ts +0 -1
- package/dist/providers/memory.d.ts +19 -1
- package/dist/providers/memory.js +53 -7
- package/dist/providers/memory.js.map +1 -1
- package/dist/providers/node-crypto.d.ts +4 -1
- package/dist/providers/node-crypto.js +32 -9
- package/dist/providers/node-crypto.js.map +1 -1
- package/dist/providers/nonce-admission.d.ts +31 -0
- package/dist/providers/nonce-admission.js +47 -0
- package/dist/providers/nonce-admission.js.map +1 -0
- package/dist/providers/nonce-retention.d.ts +8 -0
- package/dist/providers/nonce-retention.js +15 -0
- package/dist/providers/nonce-retention.js.map +1 -0
- package/dist/providers/runtime-fetch.d.ts +0 -1
- package/dist/providers/system-clock.d.ts +0 -1
- package/dist/providers/web-crypto.d.ts +0 -1
- package/dist/providers/web-crypto.js +7 -1
- package/dist/providers/web-crypto.js.map +1 -1
- package/dist/session/index.d.ts +0 -1
- package/dist/session/manager.d.ts +13 -1
- package/dist/session/manager.js +25 -9
- package/dist/session/manager.js.map +1 -1
- package/dist/session/session-store.d.ts +0 -1
- package/dist/types/protocol.d.ts +11 -3
- package/dist/types/protocol.js +21 -14
- package/dist/types/protocol.js.map +1 -1
- package/dist/utils/base58.d.ts +16 -3
- package/dist/utils/base58.js +34 -12
- package/dist/utils/base58.js.map +1 -1
- package/dist/utils/base64.d.ts +0 -1
- package/dist/utils/canonical-json.d.ts +7 -1
- package/dist/utils/canonical-json.js +130 -60
- package/dist/utils/canonical-json.js.map +1 -1
- package/dist/utils/crypto-service.d.ts +0 -1
- package/dist/utils/crypto-service.js +22 -2
- package/dist/utils/crypto-service.js.map +1 -1
- package/dist/utils/did-helpers.d.ts +0 -1
- package/dist/utils/ed25519-constants.d.ts +0 -1
- package/dist/utils/ed25519-public-key.d.ts +27 -0
- package/dist/utils/ed25519-public-key.js +86 -0
- package/dist/utils/ed25519-public-key.js.map +1 -0
- package/dist/utils/guards.d.ts +0 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/ip-classifier.d.ts +0 -1
- package/dist/utils/safe-fetch-transports.d.ts +0 -1
- package/dist/utils/safe-fetch-types.d.ts +0 -1
- package/dist/utils/safe-fetch.d.ts +0 -1
- package/dist/utils/statuslist-bits.d.ts +0 -1
- package/dist/utils/statuslist-purpose.d.ts +0 -1
- package/dist/utils/ttl-cache.d.ts +0 -1
- package/dist/utils/url.d.ts +0 -1
- package/package.json +24 -19
- package/schemas/card-delegation-credential.json +4 -1
- package/dist/audit/adapters/legacy-audit-log.d.ts.map +0 -1
- package/dist/audit/adapters/mcp.d.ts.map +0 -1
- package/dist/audit/assurance.d.ts.map +0 -1
- package/dist/audit/checkpoint-coordinator.d.ts.map +0 -1
- package/dist/audit/checkpoint.d.ts.map +0 -1
- package/dist/audit/cli.d.ts.map +0 -1
- package/dist/audit/crypto.d.ts.map +0 -1
- package/dist/audit/errors.d.ts.map +0 -1
- package/dist/audit/evidence.d.ts.map +0 -1
- package/dist/audit/index.d.ts.map +0 -1
- package/dist/audit/integrity.d.ts.map +0 -1
- package/dist/audit/merkle.d.ts.map +0 -1
- package/dist/audit/mirror-service.d.ts.map +0 -1
- package/dist/audit/projection.d.ts.map +0 -1
- package/dist/audit/providers/anchor.d.ts.map +0 -1
- package/dist/audit/providers/evidence.d.ts.map +0 -1
- package/dist/audit/providers/journal.d.ts.map +0 -1
- package/dist/audit/providers/memory-journal.d.ts.map +0 -1
- package/dist/audit/providers/observer.d.ts.map +0 -1
- package/dist/audit/providers/outbox.d.ts.map +0 -1
- package/dist/audit/providers/recorder-client.d.ts.map +0 -1
- package/dist/audit/providers/source-state.d.ts.map +0 -1
- package/dist/audit/read-contract.d.ts.map +0 -1
- package/dist/audit/read-service.d.ts.map +0 -1
- package/dist/audit/recorder-service.d.ts.map +0 -1
- package/dist/audit/reference-recorder.d.ts.map +0 -1
- package/dist/audit/replay-bundle.d.ts.map +0 -1
- package/dist/audit/schemas.d.ts.map +0 -1
- package/dist/audit/service.d.ts.map +0 -1
- package/dist/audit/testing/index.d.ts.map +0 -1
- package/dist/audit/testing/provider-contracts.d.ts.map +0 -1
- package/dist/audit/types.d.ts.map +0 -1
- package/dist/audit/verifier.d.ts.map +0 -1
- package/dist/auth/handshake.d.ts.map +0 -1
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/authz/accountability.d.ts.map +0 -1
- package/dist/authz/adapter.d.ts.map +0 -1
- package/dist/authz/examples/inmemory-oidc.d.ts.map +0 -1
- package/dist/authz/index.d.ts.map +0 -1
- package/dist/authz/oidc/authorize.d.ts.map +0 -1
- package/dist/authz/oidc/metadata.d.ts.map +0 -1
- package/dist/authz/oidc/oidc-adapter.d.ts.map +0 -1
- package/dist/authz/oidc/pending-flow-store.d.ts.map +0 -1
- package/dist/authz/oidc/pkce.d.ts.map +0 -1
- package/dist/authz/registry.d.ts.map +0 -1
- package/dist/authz/requirement.d.ts.map +0 -1
- package/dist/card/build.d.ts.map +0 -1
- package/dist/card/builder.d.ts.map +0 -1
- package/dist/card/cimd.d.ts.map +0 -1
- package/dist/card/delegation.d.ts.map +0 -1
- package/dist/card/emit.d.ts.map +0 -1
- package/dist/card/index.d.ts.map +0 -1
- package/dist/card/middleware.d.ts.map +0 -1
- package/dist/card/proof/build.d.ts.map +0 -1
- package/dist/card/proof/canonical.d.ts.map +0 -1
- package/dist/card/proof/http-sig.d.ts.map +0 -1
- package/dist/card/proof/index.d.ts.map +0 -1
- package/dist/card/proof/nonce-cache.d.ts.map +0 -1
- package/dist/card/proof/signer.d.ts.map +0 -1
- package/dist/card/proof/types.d.ts.map +0 -1
- package/dist/card/proof/verify.d.ts.map +0 -1
- package/dist/card/resolve.d.ts.map +0 -1
- package/dist/card/revocation.d.ts.map +0 -1
- package/dist/card/schema.d.ts.map +0 -1
- package/dist/card/verify.d.ts.map +0 -1
- package/dist/delegation/audience-validator.d.ts.map +0 -1
- package/dist/delegation/bitstring.d.ts.map +0 -1
- package/dist/delegation/cascading-revocation.d.ts.map +0 -1
- package/dist/delegation/chain-enforcement.d.ts.map +0 -1
- package/dist/delegation/delegation-graph.d.ts.map +0 -1
- package/dist/delegation/did-key-resolver.d.ts.map +0 -1
- package/dist/delegation/did-linkage.d.ts.map +0 -1
- package/dist/delegation/did-resolver-registry.d.ts.map +0 -1
- package/dist/delegation/did-web-resolver.d.ts.map +0 -1
- package/dist/delegation/holder-binding.d.ts.map +0 -1
- package/dist/delegation/index.d.ts.map +0 -1
- package/dist/delegation/outbound-headers.d.ts.map +0 -1
- package/dist/delegation/outbound-proof.d.ts.map +0 -1
- package/dist/delegation/scope-matcher.d.ts.map +0 -1
- package/dist/delegation/status-cache.d.ts.map +0 -1
- package/dist/delegation/statuslist-manager.d.ts.map +0 -1
- package/dist/delegation/storage/memory-graph-storage.d.ts.map +0 -1
- package/dist/delegation/storage/memory-statuslist-storage.d.ts.map +0 -1
- package/dist/delegation/utils.d.ts.map +0 -1
- package/dist/delegation/vc-issuer.d.ts.map +0 -1
- package/dist/delegation/vc-jwt-verify.d.ts.map +0 -1
- package/dist/delegation/vc-verification-checks.d.ts.map +0 -1
- package/dist/delegation/vc-verifier.d.ts.map +0 -1
- package/dist/delegation/vc-verifier.types.d.ts.map +0 -1
- package/dist/delegation/verification-method-key.d.ts.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/extension/declaration.d.ts.map +0 -1
- package/dist/extension/gate.d.ts.map +0 -1
- package/dist/extension/index.d.ts.map +0 -1
- package/dist/extension/settings.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/integrations/cheqd/dlr.d.ts.map +0 -1
- package/dist/integrations/cheqd/index.d.ts.map +0 -1
- package/dist/integrations/cheqd/linkage.d.ts.map +0 -1
- package/dist/integrations/cheqd/registrar.d.ts.map +0 -1
- package/dist/integrations/cheqd/resolver.d.ts.map +0 -1
- package/dist/integrations/cheqd/statuslist-resolver.d.ts.map +0 -1
- package/dist/logging/index.d.ts.map +0 -1
- package/dist/logging/logger.d.ts.map +0 -1
- package/dist/middleware/index.d.ts.map +0 -1
- package/dist/middleware/kya-os-transport.d.ts.map +0 -1
- package/dist/middleware/with-kya-os-server.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.config-types.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.delegation-gate.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.delegation-verify.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.deps.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.grants.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.helpers.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.policy-gate.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.protocol.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.session.d.ts.map +0 -1
- package/dist/middleware/with-kya-os.types.d.ts.map +0 -1
- package/dist/policy/approval.d.ts.map +0 -1
- package/dist/policy/classifier.d.ts.map +0 -1
- package/dist/policy/default-engine.d.ts.map +0 -1
- package/dist/policy/engine.d.ts.map +0 -1
- package/dist/policy/index.d.ts.map +0 -1
- package/dist/policy/projection.d.ts.map +0 -1
- package/dist/policy/types.d.ts.map +0 -1
- package/dist/proof/errors.d.ts.map +0 -1
- package/dist/proof/generator.d.ts.map +0 -1
- package/dist/proof/index.d.ts.map +0 -1
- package/dist/proof/verifier.d.ts.map +0 -1
- package/dist/providers/audit-log.d.ts.map +0 -1
- package/dist/providers/base.d.ts.map +0 -1
- package/dist/providers/grant-store.d.ts.map +0 -1
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/memory.d.ts.map +0 -1
- package/dist/providers/node-crypto.d.ts.map +0 -1
- package/dist/providers/runtime-fetch.d.ts.map +0 -1
- package/dist/providers/system-clock.d.ts.map +0 -1
- package/dist/providers/web-crypto.d.ts.map +0 -1
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/manager.d.ts.map +0 -1
- package/dist/session/session-store.d.ts.map +0 -1
- package/dist/types/protocol.d.ts.map +0 -1
- package/dist/utils/base58.d.ts.map +0 -1
- package/dist/utils/base64.d.ts.map +0 -1
- package/dist/utils/canonical-json.d.ts.map +0 -1
- package/dist/utils/crypto-service.d.ts.map +0 -1
- package/dist/utils/did-helpers.d.ts.map +0 -1
- package/dist/utils/ed25519-constants.d.ts.map +0 -1
- package/dist/utils/guards.d.ts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/ip-classifier.d.ts.map +0 -1
- package/dist/utils/safe-fetch-transports.d.ts.map +0 -1
- package/dist/utils/safe-fetch-types.d.ts.map +0 -1
- package/dist/utils/safe-fetch.d.ts.map +0 -1
- package/dist/utils/statuslist-bits.d.ts.map +0 -1
- package/dist/utils/statuslist-purpose.d.ts.map +0 -1
- package/dist/utils/ttl-cache.d.ts.map +0 -1
- package/dist/utils/url.d.ts.map +0 -1
|
@@ -15,6 +15,14 @@ function sameHead(left, right) {
|
|
|
15
15
|
return left === right;
|
|
16
16
|
return left.entryDigest === right.entryDigest && left.sequence === right.sequence;
|
|
17
17
|
}
|
|
18
|
+
/** The later of two heads; at an equal sequence the first one is kept. */
|
|
19
|
+
function higherHead(current, candidate) {
|
|
20
|
+
if (candidate === null)
|
|
21
|
+
return current;
|
|
22
|
+
if (current === null)
|
|
23
|
+
return candidate;
|
|
24
|
+
return BigInt(candidate.sequence) > BigInt(current.sequence) ? candidate : current;
|
|
25
|
+
}
|
|
18
26
|
function sameSigner(left, right) {
|
|
19
27
|
return left.did === right.did && left.kid === right.kid && left.alg === right.alg;
|
|
20
28
|
}
|
|
@@ -31,6 +39,12 @@ export class AuditRecorderService {
|
|
|
31
39
|
config;
|
|
32
40
|
maxAppendConflicts;
|
|
33
41
|
initialization;
|
|
42
|
+
/** Highest head this recorder has itself appended in its epoch. */
|
|
43
|
+
committedHead = null;
|
|
44
|
+
/** Highest head the journal has reported in a compare-and-append result. */
|
|
45
|
+
reportedHead = null;
|
|
46
|
+
/** Write-ahead evidence objects held by submissions in flight, by object ID. */
|
|
47
|
+
heldEvidence = new Map();
|
|
34
48
|
constructor(config) {
|
|
35
49
|
this.config = config;
|
|
36
50
|
if ((config.previousEpochId === undefined) !==
|
|
@@ -62,29 +76,66 @@ export class AuditRecorderService {
|
|
|
62
76
|
throw new AuditProtocolError(AUDIT_ERROR_CODES.EPOCH_MISMATCH, 'Wrong audit ledger epoch');
|
|
63
77
|
}
|
|
64
78
|
await this.ensureInitialized();
|
|
65
|
-
|
|
79
|
+
const held = this.holdEvidence(submission.encryptedEvidence);
|
|
66
80
|
try {
|
|
67
|
-
|
|
81
|
+
const stored = await this.persistSubmittedEvidence(submission.encryptedEvidence, producerEvent);
|
|
82
|
+
try {
|
|
83
|
+
return await this.appendEvent(producerEvent, context, false, identity);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
await this.disposeUncommittedEvidence(stored, identity);
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
68
89
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
throw error;
|
|
90
|
+
finally {
|
|
91
|
+
this.releaseEvidence(held);
|
|
72
92
|
}
|
|
73
93
|
}
|
|
74
94
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
95
|
+
* Registers this submission as a holder of each evidence object it carries.
|
|
96
|
+
* An object two submissions hold at once is marked shared for as long as
|
|
97
|
+
* either still holds it: both may have seen it as new, and the other may
|
|
98
|
+
* already have committed a reference to it.
|
|
79
99
|
*/
|
|
80
|
-
|
|
81
|
-
|
|
100
|
+
holdEvidence(evidence) {
|
|
101
|
+
const objectIds = [...new Set(evidence.map((item) => item.ref.objectId))];
|
|
102
|
+
for (const objectId of objectIds) {
|
|
103
|
+
const hold = this.heldEvidence.get(objectId);
|
|
104
|
+
if (hold === undefined)
|
|
105
|
+
this.heldEvidence.set(objectId, { holders: 1, shared: false });
|
|
106
|
+
else
|
|
107
|
+
this.heldEvidence.set(objectId, { holders: hold.holders + 1, shared: true });
|
|
108
|
+
}
|
|
109
|
+
return objectIds;
|
|
110
|
+
}
|
|
111
|
+
releaseEvidence(objectIds) {
|
|
112
|
+
for (const objectId of objectIds) {
|
|
113
|
+
const hold = this.heldEvidence.get(objectId);
|
|
114
|
+
if (hold.holders === 1)
|
|
115
|
+
this.heldEvidence.delete(objectId);
|
|
116
|
+
else
|
|
117
|
+
this.heldEvidence.set(objectId, { ...hold, holders: hold.holders - 1 });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Best-effort compensation for write-ahead evidence whose append failed. Only
|
|
122
|
+
* objects this submission newly stored are disposed: an object that already
|
|
123
|
+
* existed may be referenced by another committed entry, and so may one that
|
|
124
|
+
* a concurrent submission held at the same time. They are disposed only
|
|
125
|
+
* after re-confirming that no committed entry claims this event identity, so
|
|
126
|
+
* a raced idempotent commit is never stripped of its evidence. Failures here
|
|
127
|
+
* leave orphans for operator retention tooling.
|
|
128
|
+
*/
|
|
129
|
+
async disposeUncommittedEvidence(stored, identity) {
|
|
130
|
+
if (stored.length === 0 || this.config.evidence === undefined)
|
|
82
131
|
return;
|
|
83
132
|
try {
|
|
84
133
|
const committed = await this.config.journal.getByIdempotencyKey(this.config.ledgerId, identity.idempotencyKey);
|
|
85
134
|
if (committed !== null)
|
|
86
135
|
return;
|
|
87
|
-
for (const item of
|
|
136
|
+
for (const item of stored) {
|
|
137
|
+
if (this.heldEvidence.get(item.ref.objectId)?.shared === true)
|
|
138
|
+
continue;
|
|
88
139
|
await this.config.evidence.applyRetention({
|
|
89
140
|
kind: 'dispose',
|
|
90
141
|
ref: item.ref,
|
|
@@ -114,15 +165,17 @@ export class AuditRecorderService {
|
|
|
114
165
|
throw new AuditProtocolError(AUDIT_ERROR_CODES.UNAUTHORIZED_SUBMISSION, 'Event tenant does not match the authenticated tenant authority');
|
|
115
166
|
}
|
|
116
167
|
}
|
|
168
|
+
/** Persists write-ahead evidence and returns the objects that did not exist before. */
|
|
117
169
|
async persistSubmittedEvidence(evidence, event) {
|
|
118
170
|
if (evidence.length === 0)
|
|
119
|
-
return;
|
|
171
|
+
return [];
|
|
120
172
|
if (this.config.evidence === undefined) {
|
|
121
173
|
throw new AuditProtocolError(AUDIT_ERROR_CODES.EVIDENCE_FAILURE, 'Encrypted evidence was submitted but no evidence provider is configured');
|
|
122
174
|
}
|
|
123
175
|
try {
|
|
124
176
|
const refs = new Map(collectAuditEvidenceRefs(event).map((ref) => [ref.objectId, ref]));
|
|
125
177
|
const submitted = new Set();
|
|
178
|
+
const stored = [];
|
|
126
179
|
for (const item of evidence) {
|
|
127
180
|
const referenced = refs.get(item.ref.objectId);
|
|
128
181
|
if (submitted.has(item.ref.objectId) || referenced === undefined ||
|
|
@@ -130,8 +183,12 @@ export class AuditRecorderService {
|
|
|
130
183
|
throw new AuditProtocolError(AUDIT_ERROR_CODES.EVIDENCE_FAILURE, 'Submitted evidence does not exactly match a unique frozen event reference', { objectId: item.ref.objectId });
|
|
131
184
|
}
|
|
132
185
|
submitted.add(item.ref.objectId);
|
|
186
|
+
const existed = await this.config.evidence.has(item.ref);
|
|
133
187
|
await this.config.evidence.putIfAbsent(item);
|
|
188
|
+
if (!existed)
|
|
189
|
+
stored.push(item);
|
|
134
190
|
}
|
|
191
|
+
return stored;
|
|
135
192
|
}
|
|
136
193
|
catch (error) {
|
|
137
194
|
if (error instanceof AuditProtocolError &&
|
|
@@ -242,7 +299,14 @@ export class AuditRecorderService {
|
|
|
242
299
|
}
|
|
243
300
|
const ledger = this.ledgerRef();
|
|
244
301
|
for (let attempt = 0; attempt <= this.maxAppendConflicts; attempt += 1) {
|
|
245
|
-
|
|
302
|
+
// A read behind this recorder's own commits (a lagging replica) is not
|
|
303
|
+
// an append position: compare-and-append against the committed head, so
|
|
304
|
+
// a stale read costs one retry and a journal that really moved backwards
|
|
305
|
+
// answers with a conflict that proves it instead of accepting a second
|
|
306
|
+
// entry at a receipted sequence.
|
|
307
|
+
const committed = this.committedHead;
|
|
308
|
+
const reported = this.reportedHead;
|
|
309
|
+
const head = higherHead(committed, await this.config.journal.getHead(ledger));
|
|
246
310
|
if (genesis && head !== null) {
|
|
247
311
|
const raced = await this.config.journal.getByIdempotencyKey(this.config.ledgerId, idempotencyKey);
|
|
248
312
|
if (raced !== null)
|
|
@@ -261,20 +325,52 @@ export class AuditRecorderService {
|
|
|
261
325
|
catch (error) {
|
|
262
326
|
throw new AuditProtocolError(AUDIT_ERROR_CODES.JOURNAL_FAILURE, 'Audit journal append failed', undefined, { cause: error });
|
|
263
327
|
}
|
|
264
|
-
if (result.kind === 'appended'
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
: result.entry
|
|
328
|
+
if (result.kind === 'appended') {
|
|
329
|
+
const appended = {
|
|
330
|
+
...ledger,
|
|
331
|
+
sequence: result.entry.core.sequence,
|
|
332
|
+
entryDigest: result.entry.entryDigest,
|
|
333
|
+
};
|
|
334
|
+
this.committedHead = higherHead(this.committedHead, appended);
|
|
335
|
+
this.reportedHead = higherHead(this.reportedHead, appended);
|
|
336
|
+
return result.entry;
|
|
268
337
|
}
|
|
269
|
-
if (result.kind === 'idempotency_conflict') {
|
|
270
|
-
|
|
338
|
+
if (result.kind === 'duplicate' || result.kind === 'idempotency_conflict') {
|
|
339
|
+
const existing = result.kind === 'duplicate' ? result.entry : result.existing;
|
|
340
|
+
// A replica that lost the cold-start genesis race finds a genesis that
|
|
341
|
+
// differs only in recorder-authored timing; it is accepted on epoch
|
|
342
|
+
// configuration, never as an event-identity conflict.
|
|
343
|
+
return genesis
|
|
344
|
+
? this.validateExistingGenesis(existing)
|
|
345
|
+
: this.resolveDuplicate(existing, eventDigest);
|
|
271
346
|
}
|
|
347
|
+
this.assertNoRegression(result.actualHead, committed, reported);
|
|
348
|
+
this.reportedHead = higherHead(this.reportedHead, result.actualHead);
|
|
272
349
|
if (sameHead(head, result.actualHead)) {
|
|
273
350
|
throw new AuditProtocolError(AUDIT_ERROR_CODES.JOURNAL_FAILURE, 'Audit journal reported a head conflict without advancing its head');
|
|
274
351
|
}
|
|
275
352
|
}
|
|
276
353
|
throw new AuditProtocolError(AUDIT_ERROR_CODES.APPEND_CONFLICT_EXHAUSTED, 'Audit append conflict retry budget exhausted');
|
|
277
354
|
}
|
|
355
|
+
/**
|
|
356
|
+
* The compare-and-append result is the journal's authoritative head. One
|
|
357
|
+
* below a head this recorder had committed before issuing the append, or a
|
|
358
|
+
* different digest at a sequence the journal already reported, means a
|
|
359
|
+
* failover to a lagging primary or a restore. Retrying there would sign a
|
|
360
|
+
* second entry at a receipted sequence, so the recorder fails closed. The
|
|
361
|
+
* heads compared are the ones known when the append was issued, so a
|
|
362
|
+
* concurrent submission's later commit never makes a correct answer look
|
|
363
|
+
* stale.
|
|
364
|
+
*/
|
|
365
|
+
assertNoRegression(actual, committed, reported) {
|
|
366
|
+
const forks = (known) => known !== null && actual !== null &&
|
|
367
|
+
known.sequence === actual.sequence && known.entryDigest !== actual.entryDigest;
|
|
368
|
+
if ((committed !== null &&
|
|
369
|
+
(actual === null || BigInt(actual.sequence) < BigInt(committed.sequence))) ||
|
|
370
|
+
forks(committed) || forks(reported)) {
|
|
371
|
+
throw new AuditProtocolError(AUDIT_ERROR_CODES.JOURNAL_FAILURE, 'Audit journal head moved behind a head this recorder already committed or saw', { committedSequence: committed?.sequence, reportedSequence: actual?.sequence });
|
|
372
|
+
}
|
|
373
|
+
}
|
|
278
374
|
async identifyEvent(event, context) {
|
|
279
375
|
const eventDigest = await digestAuditEvent(this.config.hasher, event);
|
|
280
376
|
const idempotencyKey = await hashAuditValue(this.config.hasher, AUDIT_DIGEST_DOMAINS.idempotency, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder-service.js","sourceRoot":"","sources":["../../src/audit/recorder-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recorder-service.js","sourceRoot":"","sources":["../../src/audit/recorder-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,4 +40,3 @@ export interface ReferenceRecorderOptions {
|
|
|
40
40
|
export declare function sampleAuditEvent(sequence: number, overrides?: Partial<AuditProducerEventCoreV1>): AuditProducerEventCoreV1;
|
|
41
41
|
/** Compose an in-memory reference recorder with a freshly generated Ed25519 signing key. */
|
|
42
42
|
export declare function createInMemoryReferenceRecorder(options?: ReferenceRecorderOptions): Promise<ReferenceRecorder>;
|
|
43
|
-
//# sourceMappingURL=reference-recorder.d.ts.map
|
|
@@ -49,4 +49,3 @@ export interface VerifyAuditBundleDependencies {
|
|
|
49
49
|
}
|
|
50
50
|
/** Offline bundle verification. Trust is supplied only through the policy argument. */
|
|
51
51
|
export declare function verifyAuditBundle(bundle: AuditReplayBundleV1 | unknown, policy: AuditVerificationPolicyV1, dependencies: VerifyAuditBundleDependencies): Promise<AuditVerificationReportV1>;
|
|
52
|
-
//# sourceMappingURL=replay-bundle.d.ts.map
|
|
@@ -3,7 +3,7 @@ import { hashAuditValue } from './crypto.js';
|
|
|
3
3
|
import { AUDIT_DIGEST_DOMAINS } from './integrity.js';
|
|
4
4
|
import { Rfc9162MerkleTree } from './merkle.js';
|
|
5
5
|
import { auditObservationReceiptSchema, auditAnchorReceiptSchema, auditBundleConsistencyProofSchema, auditBundleInclusionProofSchema, auditReplayBundleSchema, auditVerificationPolicySchema, parseAuditBundleManifestCore, signedAuditCheckpointSchema, signedAuditEntrySchema, } from './schemas.js';
|
|
6
|
-
import { AUDIT_REASON_CODES, AuditArtifactVerifier, mergeAuditDimensions, } from './verifier.js';
|
|
6
|
+
import { AUDIT_REASON_CODES, AuditArtifactVerifier, applyRequiredAuditProfile, mergeAuditDimensions, } from './verifier.js';
|
|
7
7
|
const BUNDLE_SCHEMA = 'https://schema.kya-os.org/v1/protocol/audit/bundle-manifest/v1.0.0';
|
|
8
8
|
const BUNDLE_SUITE = 'KYA-AUDIT-BUNDLE-JCS-SHA256-JWS-2026';
|
|
9
9
|
export const AUDIT_BUNDLE_MEDIA_TYPES = Object.freeze({
|
|
@@ -123,10 +123,27 @@ export class AuditReplayBundleExporter {
|
|
|
123
123
|
});
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
/**
|
|
127
|
+
* An export has no ledger position, so an exporter key bounded by
|
|
128
|
+
* `validFromCheckpoint` or `validUntilCheckpoint` can neither be confirmed nor
|
|
129
|
+
* refuted here: such a key leaves the exporter `unresolved`, never authorized.
|
|
130
|
+
*/
|
|
131
|
+
function exporterAuthorization(core, policy) {
|
|
132
|
+
let result = 'unauthorized';
|
|
133
|
+
for (const authorization of policy.authorizedExporters) {
|
|
134
|
+
if (!authorization.allowedPurposes.includes(core.purpose) ||
|
|
135
|
+
!core.selections.every((selection) => authorization.allowedLedgerIds.includes(selection.ledgerId)))
|
|
136
|
+
continue;
|
|
137
|
+
for (const key of authorization.signerKeys) {
|
|
138
|
+
if (!sameSigner(key.signer, core.exporter) || !atTime(key, core.exportedAt))
|
|
139
|
+
continue;
|
|
140
|
+
if (key.validFromCheckpoint === undefined && key.validUntilCheckpoint === undefined) {
|
|
141
|
+
return 'authorized';
|
|
142
|
+
}
|
|
143
|
+
result = 'unresolved';
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return result;
|
|
130
147
|
}
|
|
131
148
|
function componentMetadata(component) {
|
|
132
149
|
return {
|
|
@@ -151,12 +168,26 @@ function includedArrays(bundle, mediaType) {
|
|
|
151
168
|
function ledgerEpochKey(value) {
|
|
152
169
|
return `${value.ledgerId}\0${value.ledgerEpochId}`;
|
|
153
170
|
}
|
|
171
|
+
function sameLedgerEpoch(left, right) {
|
|
172
|
+
return left.ledgerId === right.ledgerId && left.ledgerEpochId === right.ledgerEpochId;
|
|
173
|
+
}
|
|
154
174
|
function compareDecimal(left, right) {
|
|
155
175
|
const a = BigInt(left);
|
|
156
176
|
const b = BigInt(right);
|
|
157
177
|
return a < b ? -1 : a > b ? 1 : 0;
|
|
158
178
|
}
|
|
159
|
-
|
|
179
|
+
function inclusionKey(checkpointDigest, entryDigest, sequence) {
|
|
180
|
+
return `${checkpointDigest}\0${entryDigest}\0${sequence}`;
|
|
181
|
+
}
|
|
182
|
+
function consistencyKey(oldCheckpointDigest, newCheckpointDigest) {
|
|
183
|
+
return `${oldCheckpointDigest}\0${newCheckpointDigest}`;
|
|
184
|
+
}
|
|
185
|
+
/** True when the entries are exactly the leaves 0..treeSize-1, in order. */
|
|
186
|
+
function isCompletePrefix(entries, treeSize) {
|
|
187
|
+
return BigInt(entries.length) === BigInt(treeSize) &&
|
|
188
|
+
entries.every((entry, index) => entry.core.sequence === String(index));
|
|
189
|
+
}
|
|
190
|
+
async function verifyEntryGroups(entries, policy, artifacts, context) {
|
|
160
191
|
const groups = new Map();
|
|
161
192
|
const malformed = [];
|
|
162
193
|
for (const candidate of entries) {
|
|
@@ -171,11 +202,11 @@ async function verifyEntryGroups(entries, policy, artifacts) {
|
|
|
171
202
|
groups.set(key, group);
|
|
172
203
|
}
|
|
173
204
|
const reports = await Promise.all([
|
|
174
|
-
...[...groups.values()].map((group) => artifacts.verifyEntries(group, policy)),
|
|
175
|
-
...(malformed.length === 0 ? [] : [artifacts.verifyEntries(malformed, policy)]),
|
|
205
|
+
...[...groups.values()].map((group) => artifacts.verifyEntries(group, policy, context)),
|
|
206
|
+
...(malformed.length === 0 ? [] : [artifacts.verifyEntries(malformed, policy, context)]),
|
|
176
207
|
]);
|
|
177
208
|
if (reports.length === 0)
|
|
178
|
-
return artifacts.verifyEntries([], policy);
|
|
209
|
+
return artifacts.verifyEntries([], policy, context);
|
|
179
210
|
const first = reports[0];
|
|
180
211
|
return {
|
|
181
212
|
...first,
|
|
@@ -188,7 +219,7 @@ async function verifyEntryGroups(entries, policy, artifacts) {
|
|
|
188
219
|
currentAuthorization: mergeAuditDimensions(...reports.map((report) => report.currentAuthorization)),
|
|
189
220
|
};
|
|
190
221
|
}
|
|
191
|
-
function verifyCheckpointHistory(checkpoints, entries, selections) {
|
|
222
|
+
function verifyCheckpointHistory(checkpoints, entries, selections, verifiedConsistency) {
|
|
192
223
|
const reasons = new Set();
|
|
193
224
|
const groups = new Map();
|
|
194
225
|
for (const checkpoint of checkpoints) {
|
|
@@ -198,18 +229,26 @@ function verifyCheckpointHistory(checkpoints, entries, selections) {
|
|
|
198
229
|
groups.set(key, group);
|
|
199
230
|
}
|
|
200
231
|
for (const group of groups.values()) {
|
|
201
|
-
group.sort((left, right) =>
|
|
202
|
-
|
|
203
|
-
const b = BigInt(right.core.treeSize);
|
|
204
|
-
return a < b ? -1 : a > b ? 1 : 0;
|
|
205
|
-
});
|
|
232
|
+
group.sort((left, right) => compareDecimal(left.core.treeSize, right.core.treeSize));
|
|
233
|
+
const included = new Set(group.map((checkpoint) => checkpoint.checkpointDigest));
|
|
206
234
|
for (let index = 1; index < group.length; index += 1) {
|
|
207
235
|
const previous = group[index - 1];
|
|
208
236
|
const current = group[index];
|
|
209
237
|
if (current.core.treeSize === previous.core.treeSize) {
|
|
210
238
|
reasons.add(AUDIT_REASON_CODES.CHECKPOINT_FORK_DETECTED);
|
|
239
|
+
continue;
|
|
211
240
|
}
|
|
212
|
-
|
|
241
|
+
const claimed = current.core.previousCheckpointDigest;
|
|
242
|
+
if (claimed === previous.checkpointDigest)
|
|
243
|
+
continue;
|
|
244
|
+
// A subset export may omit intermediate checkpoints. An unlinked pair is
|
|
245
|
+
// accepted only when an omitted checkpoint could sit between the two and
|
|
246
|
+
// a verified consistency proof binds them: the proof, not the chain link,
|
|
247
|
+
// is the split-view guarantee. Naming another included checkpoint, or
|
|
248
|
+
// none, is a forked checkpoint chain.
|
|
249
|
+
const omittable = claimed !== null && !included.has(claimed) &&
|
|
250
|
+
BigInt(current.core.treeSize) - BigInt(previous.core.treeSize) > 1n;
|
|
251
|
+
if (!omittable || !verifiedConsistency.has(consistencyKey(previous.checkpointDigest, current.checkpointDigest))) {
|
|
213
252
|
reasons.add(AUDIT_REASON_CODES.CHECKPOINT_CHAIN_MISMATCH);
|
|
214
253
|
}
|
|
215
254
|
}
|
|
@@ -232,18 +271,34 @@ function verifyCheckpointHistory(checkpoints, entries, selections) {
|
|
|
232
271
|
if (details.previousEpochId === undefined ||
|
|
233
272
|
details.previousTerminalCheckpointDigest === undefined)
|
|
234
273
|
continue;
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
274
|
+
const predecessor = {
|
|
275
|
+
ledgerId: entry.core.ledgerId,
|
|
276
|
+
ledgerEpochId: details.previousEpochId,
|
|
277
|
+
};
|
|
278
|
+
if (!selections.some((selection) => sameLedgerEpoch(selection, predecessor)))
|
|
279
|
+
continue;
|
|
280
|
+
const terminal = checkpoints.find((checkpoint) => sameLedgerEpoch(checkpoint.core, predecessor) &&
|
|
281
|
+
checkpoint.checkpointDigest === details.previousTerminalCheckpointDigest);
|
|
282
|
+
if (terminal === undefined) {
|
|
240
283
|
reasons.add(AUDIT_REASON_CODES.CHECKPOINT_CHAIN_MISMATCH);
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
// The successor genesis commits where the predecessor epoch ends, so a
|
|
287
|
+
// predecessor checkpoint signed over a larger tree is a second authority
|
|
288
|
+
// still checkpointing after rollover. Entries past the terminal are not:
|
|
289
|
+
// the terminal checkpoint's own lifecycle event lands there legitimately.
|
|
290
|
+
const terminalSize = BigInt(terminal.core.treeSize);
|
|
291
|
+
if (checkpoints.some((checkpoint) => sameLedgerEpoch(checkpoint.core, predecessor) &&
|
|
292
|
+
BigInt(checkpoint.core.treeSize) > terminalSize)) {
|
|
293
|
+
reasons.add(AUDIT_REASON_CODES.CHECKPOINT_FORK_DETECTED);
|
|
241
294
|
}
|
|
242
295
|
}
|
|
243
296
|
return dim(reasons.size === 0 ? 'valid' : 'invalid', reasons);
|
|
244
297
|
}
|
|
245
298
|
async function verifyMerkleProofComponents(bundle, entries, checkpoints, hasher) {
|
|
246
299
|
const reasons = new Set();
|
|
300
|
+
const inclusions = new Set();
|
|
301
|
+
const consistencies = new Set();
|
|
247
302
|
const tree = new Rfc9162MerkleTree(hasher);
|
|
248
303
|
const inclusionCandidates = includedArrays(bundle, AUDIT_BUNDLE_MEDIA_TYPES.inclusionProofs);
|
|
249
304
|
for (const candidate of inclusionCandidates) {
|
|
@@ -273,6 +328,9 @@ async function verifyMerkleProofComponents(bundle, entries, checkpoints, hasher)
|
|
|
273
328
|
}))) {
|
|
274
329
|
reasons.add(AUDIT_REASON_CODES.MERKLE_PROOF_INVALID);
|
|
275
330
|
}
|
|
331
|
+
else {
|
|
332
|
+
inclusions.add(inclusionKey(item.checkpointDigest, item.entryDigest, item.sequence));
|
|
333
|
+
}
|
|
276
334
|
}
|
|
277
335
|
const consistencyCandidates = includedArrays(bundle, AUDIT_BUNDLE_MEDIA_TYPES.consistencyProofs);
|
|
278
336
|
for (const candidate of consistencyCandidates) {
|
|
@@ -299,6 +357,32 @@ async function verifyMerkleProofComponents(bundle, entries, checkpoints, hasher)
|
|
|
299
357
|
}))) {
|
|
300
358
|
reasons.add(AUDIT_REASON_CODES.MERKLE_PROOF_INVALID);
|
|
301
359
|
}
|
|
360
|
+
else {
|
|
361
|
+
consistencies.add(consistencyKey(item.oldCheckpointDigest, item.newCheckpointDigest));
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return {
|
|
365
|
+
dimension: dim(reasons.size === 0 ? 'valid' : 'invalid', reasons),
|
|
366
|
+
inclusions,
|
|
367
|
+
consistencies,
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Without the complete leaf prefix a checkpoint's root cannot be recomputed,
|
|
372
|
+
* so every entry it covers must instead carry a verified inclusion proof
|
|
373
|
+
* against it, and a covered head entry must be the one the checkpoint signed.
|
|
374
|
+
*/
|
|
375
|
+
function verifyInclusionBinding(checkpoint, covered, verifiedInclusions) {
|
|
376
|
+
const reasons = new Set();
|
|
377
|
+
const headSequence = String(BigInt(checkpoint.core.treeSize) - 1n);
|
|
378
|
+
for (const entry of covered) {
|
|
379
|
+
if (!verifiedInclusions.has(inclusionKey(checkpoint.checkpointDigest, entry.entryDigest, entry.core.sequence))) {
|
|
380
|
+
reasons.add(AUDIT_REASON_CODES.MERKLE_PROOF_MISSING);
|
|
381
|
+
}
|
|
382
|
+
if (entry.core.sequence === headSequence &&
|
|
383
|
+
entry.entryDigest !== checkpoint.core.headEntryDigest) {
|
|
384
|
+
reasons.add(AUDIT_REASON_CODES.CHECKPOINT_RANGE_MISMATCH);
|
|
385
|
+
}
|
|
302
386
|
}
|
|
303
387
|
return dim(reasons.size === 0 ? 'valid' : 'invalid', reasons);
|
|
304
388
|
}
|
|
@@ -425,7 +509,7 @@ export async function verifyAuditBundle(bundle, policy, dependencies) {
|
|
|
425
509
|
};
|
|
426
510
|
}
|
|
427
511
|
if (!auditReplayBundleSchema.safeParse(bundle).success) {
|
|
428
|
-
return malformedBundleReport(policy);
|
|
512
|
+
return applyRequiredAuditProfile(malformedBundleReport(policy), policy);
|
|
429
513
|
}
|
|
430
514
|
const replayBundle = bundle;
|
|
431
515
|
const reasons = new Set();
|
|
@@ -439,9 +523,11 @@ export async function verifyAuditBundle(bundle, policy, dependencies) {
|
|
|
439
523
|
if (core === undefined || !policy.acceptedAlgorithms.includes(core.exporter.alg)) {
|
|
440
524
|
reasons.add(AUDIT_REASON_CODES.UNSUPPORTED_ALGORITHM);
|
|
441
525
|
}
|
|
442
|
-
|
|
526
|
+
const exporter = core === undefined ? 'unauthorized' : exporterAuthorization(core, policy);
|
|
527
|
+
if (exporter === 'unauthorized')
|
|
443
528
|
reasons.add(AUDIT_REASON_CODES.BUNDLE_EXPORTER_UNAUTHORIZED);
|
|
444
|
-
|
|
529
|
+
if (exporter === 'unresolved')
|
|
530
|
+
reasons.add(AUDIT_REASON_CODES.KEY_BOUNDARY_UNRESOLVED);
|
|
445
531
|
if (core !== undefined) {
|
|
446
532
|
const [manifestDigest, policyDigest] = await Promise.all([
|
|
447
533
|
hashAuditValue(dependencies.hasher, AUDIT_DIGEST_DOMAINS.bundleManifest, core),
|
|
@@ -496,12 +582,16 @@ export async function verifyAuditBundle(bundle, policy, dependencies) {
|
|
|
496
582
|
const checkpointCandidates = includedArrays(replayBundle, AUDIT_BUNDLE_MEDIA_TYPES.checkpoints);
|
|
497
583
|
const observationCandidates = includedArrays(replayBundle, AUDIT_BUNDLE_MEDIA_TYPES.observations);
|
|
498
584
|
const anchorCandidates = includedArrays(replayBundle, AUDIT_BUNDLE_MEDIA_TYPES.anchors);
|
|
499
|
-
const artifacts = dependencies.artifacts ?? new AuditArtifactVerifier(dependencies);
|
|
500
|
-
const artifactReport = await verifyEntryGroups(entryCandidates, policy, artifacts);
|
|
501
585
|
const entries = entryCandidates.filter((candidate) => signedAuditEntrySchema.safeParse(candidate).success);
|
|
502
586
|
const checkpoints = checkpointCandidates.filter((candidate) => signedAuditCheckpointSchema.safeParse(candidate).success);
|
|
587
|
+
const observations = observationCandidates.filter((candidate) => auditObservationReceiptSchema.safeParse(candidate).success);
|
|
588
|
+
// The bundle's own checkpoints are what checkpoint-bounded key policies name.
|
|
589
|
+
const context = { checkpoints };
|
|
590
|
+
const artifacts = dependencies.artifacts ?? new AuditArtifactVerifier(dependencies);
|
|
591
|
+
const artifactReport = await verifyEntryGroups(entryCandidates, policy, artifacts, context);
|
|
503
592
|
let checkpointDimension = artifactReport.checkpointIntegrity;
|
|
504
593
|
if (checkpointCandidates.length > 0) {
|
|
594
|
+
const proofs = await verifyMerkleProofComponents(replayBundle, entries, checkpoints, dependencies.hasher);
|
|
505
595
|
const checkpointResults = [];
|
|
506
596
|
for (const candidate of checkpointCandidates) {
|
|
507
597
|
if (!signedAuditCheckpointSchema.safeParse(candidate).success) {
|
|
@@ -509,12 +599,15 @@ export async function verifyAuditBundle(bundle, policy, dependencies) {
|
|
|
509
599
|
continue;
|
|
510
600
|
}
|
|
511
601
|
const checkpoint = candidate;
|
|
512
|
-
const
|
|
513
|
-
entry.core.ledgerEpochId === checkpoint.core.ledgerEpochId &&
|
|
602
|
+
const covered = entries.filter((entry) => sameLedgerEpoch(entry.core, checkpoint.core) &&
|
|
514
603
|
BigInt(entry.core.sequence) < BigInt(checkpoint.core.treeSize));
|
|
515
|
-
|
|
604
|
+
// A subset export (a sequence range, or no entries at all) cannot
|
|
605
|
+
// recompute the root, so its entries are bound by inclusion proofs.
|
|
606
|
+
checkpointResults.push(isCompletePrefix(covered, checkpoint.core.treeSize)
|
|
607
|
+
? await artifacts.verifyCheckpoint(checkpoint, covered, policy, context)
|
|
608
|
+
: mergeAuditDimensions(await artifacts.verifySignedCheckpoint(checkpoint, policy, context), verifyInclusionBinding(checkpoint, covered, proofs.inclusions)));
|
|
516
609
|
}
|
|
517
|
-
checkpointDimension = mergeAuditDimensions(...checkpointResults, verifyCheckpointHistory(checkpoints, entries, core.selections
|
|
610
|
+
checkpointDimension = mergeAuditDimensions(...checkpointResults, verifyCheckpointHistory(checkpoints, entries, core.selections, proofs.consistencies), proofs.dimension);
|
|
518
611
|
}
|
|
519
612
|
else if (core.selections.some((selection) => selection.checkpointTreeSizes.length > 0)) {
|
|
520
613
|
checkpointDimension = dim('invalid', [AUDIT_REASON_CODES.CHECKPOINT_MISSING]);
|
|
@@ -531,21 +624,35 @@ export async function verifyAuditBundle(bundle, policy, dependencies) {
|
|
|
531
624
|
const checkpoint = checkpoints.find((candidate) => candidate.checkpointDigest === receipt.core.checkpointDigest);
|
|
532
625
|
observationResults.push(checkpoint === undefined
|
|
533
626
|
? dim('invalid', [AUDIT_REASON_CODES.OBSERVATION_SCOPE_MISMATCH])
|
|
534
|
-
: await artifacts.verifyObservation(checkpoint, receipt, policy));
|
|
627
|
+
: await artifacts.verifyObservation(checkpoint, receipt, policy, context));
|
|
535
628
|
}
|
|
536
|
-
|
|
537
|
-
anchorDimension = mergeAuditDimensions(...observationResults, verifyObservationHistory(validObservations));
|
|
629
|
+
anchorDimension = mergeAuditDimensions(...observationResults, verifyObservationHistory(observations));
|
|
538
630
|
}
|
|
539
631
|
if (anchorCandidates.length > 0) {
|
|
540
632
|
anchorDimension = mergeAuditDimensions(anchorDimension, await verifySupportingAnchors(anchorCandidates, checkpoints, policy, dependencies.verifySupportingAnchor));
|
|
541
633
|
}
|
|
542
|
-
|
|
543
|
-
|
|
634
|
+
// An exporter key bound that cannot be placed leaves the manifest
|
|
635
|
+
// undecided, never valid; any other manifest reason is a failure.
|
|
636
|
+
const manifestDimension = dim(reasons.size === 0
|
|
637
|
+
? 'valid'
|
|
638
|
+
: [...reasons].every((reason) => reason === AUDIT_REASON_CODES.KEY_BOUNDARY_UNRESOLVED)
|
|
639
|
+
? 'indeterminate'
|
|
640
|
+
: 'invalid', reasons);
|
|
641
|
+
// Entry recorder keys were already evaluated per ledger epoch group.
|
|
642
|
+
const currentKeys = artifacts.verifyCurrentKeys(policy, {
|
|
643
|
+
checkpoints,
|
|
644
|
+
observations,
|
|
645
|
+
exporter: core.exporter,
|
|
646
|
+
});
|
|
647
|
+
return applyRequiredAuditProfile({
|
|
544
648
|
...artifactReport,
|
|
545
649
|
cryptographicIntegrity: mergeAuditDimensions(manifestDimension, artifactReport.cryptographicIntegrity),
|
|
546
650
|
checkpointIntegrity: checkpointDimension,
|
|
547
651
|
anchorIntegrity: anchorDimension,
|
|
548
652
|
scopeEvidenceCompleteness: selectionCompleteness(core?.selections ?? [], entries, replayBundle.components.filter((component) => component.disposition !== 'included')),
|
|
549
|
-
|
|
653
|
+
currentAuthorization: currentKeys === undefined
|
|
654
|
+
? artifactReport.currentAuthorization
|
|
655
|
+
: mergeAuditDimensions(artifactReport.currentAuthorization, currentKeys),
|
|
656
|
+
}, policy, { supportingAnchors: anchorCandidates.length > 0 });
|
|
550
657
|
}
|
|
551
658
|
//# sourceMappingURL=replay-bundle.js.map
|