agent-passport-system 4.3.0 → 4.4.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/README.md +6 -6
- package/dist/src/adapters/crewai.js +2 -2
- package/dist/src/adapters/crewai.js.map +1 -1
- package/dist/src/adapters/gonka.js +5 -5
- package/dist/src/adapters/gonka.js.map +1 -1
- package/dist/src/adapters/ibac.js +2 -2
- package/dist/src/adapters/ibac.js.map +1 -1
- package/dist/src/adapters/langchain.js +2 -2
- package/dist/src/adapters/langchain.js.map +1 -1
- package/dist/src/adapters/mcp.js +2 -2
- package/dist/src/adapters/mcp.js.map +1 -1
- package/dist/src/adapters/oauth-id-jag/import-v1.js +4 -4
- package/dist/src/adapters/oauth-id-jag/import-v1.js.map +1 -1
- package/dist/src/adapters/oauth-id-jag/index.js +4 -4
- package/dist/src/adapters/oauth-id-jag/index.js.map +1 -1
- package/dist/src/cli/index.js +50 -5
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/core/a2a.js +2 -2
- package/dist/src/core/a2a.js.map +1 -1
- package/dist/src/core/action-ref.d.ts +7 -28
- package/dist/src/core/action-ref.d.ts.map +1 -1
- package/dist/src/core/action-ref.js +20 -6
- package/dist/src/core/action-ref.js.map +1 -1
- package/dist/src/core/agora.js +2 -2
- package/dist/src/core/agora.js.map +1 -1
- package/dist/src/core/aps-txt.d.ts.map +1 -1
- package/dist/src/core/aps-txt.js +4 -3
- package/dist/src/core/aps-txt.js.map +1 -1
- package/dist/src/core/attestation.d.ts +8 -0
- package/dist/src/core/attestation.d.ts.map +1 -1
- package/dist/src/core/attestation.js +13 -3
- package/dist/src/core/attestation.js.map +1 -1
- package/dist/src/core/behavioral-fingerprint.js +2 -2
- package/dist/src/core/behavioral-fingerprint.js.map +1 -1
- package/dist/src/core/behavioral-memory-receipt.js +2 -2
- package/dist/src/core/behavioral-memory-receipt.js.map +1 -1
- package/dist/src/core/behavioral-memory.js +3 -3
- package/dist/src/core/behavioral-memory.js.map +1 -1
- package/dist/src/core/bilateral-receipt.d.ts.map +1 -1
- package/dist/src/core/bilateral-receipt.js +34 -8
- package/dist/src/core/bilateral-receipt.js.map +1 -1
- package/dist/src/core/canonical-jcs.d.ts +36 -2
- package/dist/src/core/canonical-jcs.d.ts.map +1 -1
- package/dist/src/core/canonical-jcs.js +96 -7
- package/dist/src/core/canonical-jcs.js.map +1 -1
- package/dist/src/core/canonical.d.ts +26 -0
- package/dist/src/core/canonical.d.ts.map +1 -1
- package/dist/src/core/canonical.js +64 -0
- package/dist/src/core/canonical.js.map +1 -1
- package/dist/src/core/charter.d.ts.map +1 -1
- package/dist/src/core/charter.js +25 -17
- package/dist/src/core/charter.js.map +1 -1
- package/dist/src/core/commerce.js +2 -2
- package/dist/src/core/commerce.js.map +1 -1
- package/dist/src/core/completion.js +2 -2
- package/dist/src/core/completion.js.map +1 -1
- package/dist/src/core/coordination.js +10 -10
- package/dist/src/core/coordination.js.map +1 -1
- package/dist/src/core/credential-request.js +2 -2
- package/dist/src/core/credential-request.js.map +1 -1
- package/dist/src/core/cross-chain.d.ts +8 -0
- package/dist/src/core/cross-chain.d.ts.map +1 -1
- package/dist/src/core/cross-chain.js +23 -9
- package/dist/src/core/cross-chain.js.map +1 -1
- package/dist/src/core/data-lifecycle.js +7 -7
- package/dist/src/core/data-lifecycle.js.map +1 -1
- package/dist/src/core/data-source-attribution.js +3 -3
- package/dist/src/core/data-source-attribution.js.map +1 -1
- package/dist/src/core/data-source.js +5 -5
- package/dist/src/core/data-source.js.map +1 -1
- package/dist/src/core/decision-semantics.d.ts +9 -9
- package/dist/src/core/decision-semantics.d.ts.map +1 -1
- package/dist/src/core/decision-semantics.js +20 -6
- package/dist/src/core/decision-semantics.js.map +1 -1
- package/dist/src/core/delegation.d.ts.map +1 -1
- package/dist/src/core/delegation.js +3 -2
- package/dist/src/core/delegation.js.map +1 -1
- package/dist/src/core/did.js +2 -2
- package/dist/src/core/did.js.map +1 -1
- package/dist/src/core/encrypted-messaging.js +5 -5
- package/dist/src/core/encrypted-messaging.js.map +1 -1
- package/dist/src/core/escalation.js +4 -4
- package/dist/src/core/escalation.js.map +1 -1
- package/dist/src/core/evaluation-context.js +3 -3
- package/dist/src/core/evaluation-context.js.map +1 -1
- package/dist/src/core/evidence-bundle.d.ts +8 -0
- package/dist/src/core/evidence-bundle.d.ts.map +1 -1
- package/dist/src/core/evidence-bundle.js +13 -3
- package/dist/src/core/evidence-bundle.js.map +1 -1
- package/dist/src/core/execution-attestation.js +7 -7
- package/dist/src/core/execution-attestation.js.map +1 -1
- package/dist/src/core/execution-envelope.js +7 -7
- package/dist/src/core/execution-envelope.js.map +1 -1
- package/dist/src/core/federation.js +3 -3
- package/dist/src/core/federation.js.map +1 -1
- package/dist/src/core/fidelity-probe.js +2 -2
- package/dist/src/core/fidelity-probe.js.map +1 -1
- package/dist/src/core/governance-block.d.ts.map +1 -1
- package/dist/src/core/governance-block.js +8 -5
- package/dist/src/core/governance-block.js.map +1 -1
- package/dist/src/core/governance-consumer.d.ts.map +1 -1
- package/dist/src/core/governance-consumer.js +4 -1
- package/dist/src/core/governance-consumer.js.map +1 -1
- package/dist/src/core/governance.js +3 -3
- package/dist/src/core/governance.js.map +1 -1
- package/dist/src/core/identity.js +5 -5
- package/dist/src/core/identity.js.map +1 -1
- package/dist/src/core/intent.js +5 -5
- package/dist/src/core/intent.js.map +1 -1
- package/dist/src/core/key-rotation.d.ts.map +1 -1
- package/dist/src/core/key-rotation.js +12 -2
- package/dist/src/core/key-rotation.js.map +1 -1
- package/dist/src/core/messaging-audit.js +2 -2
- package/dist/src/core/messaging-audit.js.map +1 -1
- package/dist/src/core/obligations.js +6 -6
- package/dist/src/core/obligations.js.map +1 -1
- package/dist/src/core/oracle-witness.js +2 -2
- package/dist/src/core/oracle-witness.js.map +1 -1
- package/dist/src/core/passport.js +3 -3
- package/dist/src/core/passport.js.map +1 -1
- package/dist/src/core/policy.d.ts.map +1 -1
- package/dist/src/core/policy.js +12 -11
- package/dist/src/core/policy.js.map +1 -1
- package/dist/src/core/precedent.js +2 -2
- package/dist/src/core/precedent.js.map +1 -1
- package/dist/src/core/principal.js +3 -3
- package/dist/src/core/principal.js.map +1 -1
- package/dist/src/core/probe-identity.js +2 -2
- package/dist/src/core/probe-identity.js.map +1 -1
- package/dist/src/core/reserve.js +2 -2
- package/dist/src/core/reserve.js.map +1 -1
- package/dist/src/core/reversibility-fold.d.ts +8 -0
- package/dist/src/core/reversibility-fold.d.ts.map +1 -1
- package/dist/src/core/reversibility-fold.js +13 -3
- package/dist/src/core/reversibility-fold.js.map +1 -1
- package/dist/src/core/routing.js +6 -6
- package/dist/src/core/routing.js.map +1 -1
- package/dist/src/core/tool-integrity.d.ts.map +1 -1
- package/dist/src/core/tool-integrity.js +18 -8
- package/dist/src/core/tool-integrity.js.map +1 -1
- package/dist/src/core/transactional.js +4 -4
- package/dist/src/core/transactional.js.map +1 -1
- package/dist/src/core/values.js +3 -3
- package/dist/src/core/values.js.map +1 -1
- package/dist/src/core/vc-wrapper.js +2 -2
- package/dist/src/core/vc-wrapper.js.map +1 -1
- package/dist/src/core/vc.js +2 -2
- package/dist/src/core/vc.js.map +1 -1
- package/dist/src/core/write-policy.d.ts +37 -0
- package/dist/src/core/write-policy.d.ts.map +1 -0
- package/dist/src/core/write-policy.js +100 -0
- package/dist/src/core/write-policy.js.map +1 -0
- package/dist/src/decisionReceipt.d.ts +9 -1
- package/dist/src/decisionReceipt.d.ts.map +1 -1
- package/dist/src/decisionReceipt.js +40 -6
- package/dist/src/decisionReceipt.js.map +1 -1
- package/dist/src/interop/agent-json-bridge.js +2 -2
- package/dist/src/interop/agent-json-bridge.js.map +1 -1
- package/dist/src/profiles/a2a/identity-v1.js +2 -2
- package/dist/src/profiles/a2a/identity-v1.js.map +1 -1
- package/dist/src/storage/receipt-bundle.d.ts.map +1 -1
- package/dist/src/storage/receipt-bundle.js +12 -4
- package/dist/src/storage/receipt-bundle.js.map +1 -1
- package/dist/src/storage/volatile-backend.js +4 -4
- package/dist/src/storage/volatile-backend.js.map +1 -1
- package/dist/src/types/policy.d.ts +1 -1
- package/dist/src/types/policy.d.ts.map +1 -1
- package/dist/src/v2/accountability/construct/action.js +3 -3
- package/dist/src/v2/accountability/construct/action.js.map +1 -1
- package/dist/src/v2/accountability/construct/authority-boundary.js +3 -3
- package/dist/src/v2/accountability/construct/authority-boundary.js.map +1 -1
- package/dist/src/v2/accountability/construct/bundle.d.ts.map +1 -1
- package/dist/src/v2/accountability/construct/bundle.js +5 -3
- package/dist/src/v2/accountability/construct/bundle.js.map +1 -1
- package/dist/src/v2/accountability/construct/contestability.js +4 -4
- package/dist/src/v2/accountability/construct/contestability.js.map +1 -1
- package/dist/src/v2/accountability/construct/custody.js +3 -3
- package/dist/src/v2/accountability/construct/custody.js.map +1 -1
- package/dist/src/v2/accountability/verify/bundle.d.ts.map +1 -1
- package/dist/src/v2/accountability/verify/bundle.js +4 -2
- package/dist/src/v2/accountability/verify/bundle.js.map +1 -1
- package/dist/src/v2/attribution-consent/create.d.ts +12 -1
- package/dist/src/v2/attribution-consent/create.d.ts.map +1 -1
- package/dist/src/v2/attribution-consent/create.js +18 -6
- package/dist/src/v2/attribution-consent/create.js.map +1 -1
- package/dist/src/v2/attribution-consent/sign.js +2 -2
- package/dist/src/v2/attribution-consent/sign.js.map +1 -1
- package/dist/src/v2/attribution-primitive/canonical.d.ts +17 -2
- package/dist/src/v2/attribution-primitive/canonical.d.ts.map +1 -1
- package/dist/src/v2/attribution-primitive/canonical.js +27 -3
- package/dist/src/v2/attribution-primitive/canonical.js.map +1 -1
- package/dist/src/v2/attribution-primitive/construct.d.ts +0 -15
- package/dist/src/v2/attribution-primitive/construct.d.ts.map +1 -1
- package/dist/src/v2/attribution-primitive/construct.js +24 -11
- package/dist/src/v2/attribution-primitive/construct.js.map +1 -1
- package/dist/src/v2/attribution-primitive/merkle.d.ts +7 -3
- package/dist/src/v2/attribution-primitive/merkle.d.ts.map +1 -1
- package/dist/src/v2/attribution-primitive/merkle.js +18 -6
- package/dist/src/v2/attribution-primitive/merkle.js.map +1 -1
- package/dist/src/v2/attribution-primitive/residual.js +2 -2
- package/dist/src/v2/attribution-primitive/residual.js.map +1 -1
- package/dist/src/v2/attribution-settlement/aggregate.d.ts +8 -0
- package/dist/src/v2/attribution-settlement/aggregate.d.ts.map +1 -1
- package/dist/src/v2/attribution-settlement/aggregate.js +16 -6
- package/dist/src/v2/attribution-settlement/aggregate.js.map +1 -1
- package/dist/src/v2/attribution-settlement/merkle.d.ts +8 -0
- package/dist/src/v2/attribution-settlement/merkle.d.ts.map +1 -1
- package/dist/src/v2/attribution-settlement/merkle.js +11 -1
- package/dist/src/v2/attribution-settlement/merkle.js.map +1 -1
- package/dist/src/v2/attribution-settlement/sign.d.ts +9 -3
- package/dist/src/v2/attribution-settlement/sign.d.ts.map +1 -1
- package/dist/src/v2/attribution-settlement/sign.js +18 -4
- package/dist/src/v2/attribution-settlement/sign.js.map +1 -1
- package/dist/src/v2/authority-delegation/canonical.d.ts +14 -0
- package/dist/src/v2/authority-delegation/canonical.d.ts.map +1 -1
- package/dist/src/v2/authority-delegation/canonical.js +28 -2
- package/dist/src/v2/authority-delegation/canonical.js.map +1 -1
- package/dist/src/v2/authority-delegation/issue.js +2 -2
- package/dist/src/v2/authority-delegation/issue.js.map +1 -1
- package/dist/src/v2/behavioral_drift_window/envelope.d.ts +8 -0
- package/dist/src/v2/behavioral_drift_window/envelope.d.ts.map +1 -1
- package/dist/src/v2/behavioral_drift_window/envelope.js +13 -2
- package/dist/src/v2/behavioral_drift_window/envelope.js.map +1 -1
- package/dist/src/v2/bridge.d.ts +8 -0
- package/dist/src/v2/bridge.d.ts.map +1 -1
- package/dist/src/v2/bridge.js +13 -2
- package/dist/src/v2/bridge.js.map +1 -1
- package/dist/src/v2/cognitive-attestation/envelope.d.ts +9 -7
- package/dist/src/v2/cognitive-attestation/envelope.d.ts.map +1 -1
- package/dist/src/v2/cognitive-attestation/envelope.js +18 -4
- package/dist/src/v2/cognitive-attestation/envelope.js.map +1 -1
- package/dist/src/v2/cognitive_attestation/envelope.d.ts +8 -0
- package/dist/src/v2/cognitive_attestation/envelope.d.ts.map +1 -1
- package/dist/src/v2/cognitive_attestation/envelope.js +13 -2
- package/dist/src/v2/cognitive_attestation/envelope.js.map +1 -1
- package/dist/src/v2/context-provenance/cpa.d.ts +8 -0
- package/dist/src/v2/context-provenance/cpa.d.ts.map +1 -1
- package/dist/src/v2/context-provenance/cpa.js +22 -8
- package/dist/src/v2/context-provenance/cpa.js.map +1 -1
- package/dist/src/v2/context-provenance/merkle.d.ts +21 -18
- package/dist/src/v2/context-provenance/merkle.d.ts.map +1 -1
- package/dist/src/v2/context-provenance/merkle.js +38 -5
- package/dist/src/v2/context-provenance/merkle.js.map +1 -1
- package/dist/src/v2/context-provenance/types.d.ts +1 -1
- package/dist/src/v2/cross_issuer_attestation/envelope.d.ts +8 -0
- package/dist/src/v2/cross_issuer_attestation/envelope.d.ts.map +1 -1
- package/dist/src/v2/cross_issuer_attestation/envelope.js +13 -2
- package/dist/src/v2/cross_issuer_attestation/envelope.js.map +1 -1
- package/dist/src/v2/hash-pointer/profile.d.ts.map +1 -1
- package/dist/src/v2/hash-pointer/profile.js +11 -3
- package/dist/src/v2/hash-pointer/profile.js.map +1 -1
- package/dist/src/v2/human-escalation.d.ts +10 -0
- package/dist/src/v2/human-escalation.d.ts.map +1 -1
- package/dist/src/v2/human-escalation.js +15 -1
- package/dist/src/v2/human-escalation.js.map +1 -1
- package/dist/src/v2/human-oversight/index.d.ts +9 -9
- package/dist/src/v2/human-oversight/index.d.ts.map +1 -1
- package/dist/src/v2/human-oversight/index.js +18 -4
- package/dist/src/v2/human-oversight/index.js.map +1 -1
- package/dist/src/v2/instruction-provenance/canonicalize.d.ts +17 -5
- package/dist/src/v2/instruction-provenance/canonicalize.d.ts.map +1 -1
- package/dist/src/v2/instruction-provenance/canonicalize.js +28 -3
- package/dist/src/v2/instruction-provenance/canonicalize.js.map +1 -1
- package/dist/src/v2/instruction-provenance/envelope.js +3 -3
- package/dist/src/v2/instruction-provenance/envelope.js.map +1 -1
- package/dist/src/v2/memory_provenance/envelope.d.ts +8 -0
- package/dist/src/v2/memory_provenance/envelope.d.ts.map +1 -1
- package/dist/src/v2/memory_provenance/envelope.js +13 -2
- package/dist/src/v2/memory_provenance/envelope.js.map +1 -1
- package/dist/src/v2/mutual-auth/certificate.d.ts.map +1 -1
- package/dist/src/v2/mutual-auth/certificate.js +6 -4
- package/dist/src/v2/mutual-auth/certificate.js.map +1 -1
- package/dist/src/v2/mutual-auth/handshake.js +3 -3
- package/dist/src/v2/mutual-auth/handshake.js.map +1 -1
- package/dist/src/v2/mutual-auth/trust-bundle.d.ts.map +1 -1
- package/dist/src/v2/mutual-auth/trust-bundle.js +4 -3
- package/dist/src/v2/mutual-auth/trust-bundle.js.map +1 -1
- package/dist/src/v2/mutual-auth/types.d.ts +3 -3
- package/dist/src/v2/mutual-auth/types.d.ts.map +1 -1
- package/dist/src/v2/payment-rails/acp/index.d.ts.map +1 -1
- package/dist/src/v2/payment-rails/acp/index.js +52 -11
- package/dist/src/v2/payment-rails/acp/index.js.map +1 -1
- package/dist/src/v2/payment-rails/acp/types.d.ts +4 -4
- package/dist/src/v2/payment-rails/acp/types.d.ts.map +1 -1
- package/dist/src/v2/payment-rails/ap2/index.js +2 -2
- package/dist/src/v2/payment-rails/ap2/index.js.map +1 -1
- package/dist/src/v2/payment-rails/canonicalize.d.ts +32 -0
- package/dist/src/v2/payment-rails/canonicalize.d.ts.map +1 -1
- package/dist/src/v2/payment-rails/canonicalize.js +41 -1
- package/dist/src/v2/payment-rails/canonicalize.js.map +1 -1
- package/dist/src/v2/payment-rails/cycles/index.d.ts.map +1 -1
- package/dist/src/v2/payment-rails/cycles/index.js +10 -7
- package/dist/src/v2/payment-rails/cycles/index.js.map +1 -1
- package/dist/src/v2/payment-rails/cycles/types.d.ts +1 -1
- package/dist/src/v2/payment-rails/cycles/types.d.ts.map +1 -1
- package/dist/src/v2/payment-rails/hooks.d.ts.map +1 -1
- package/dist/src/v2/payment-rails/hooks.js +5 -5
- package/dist/src/v2/payment-rails/hooks.js.map +1 -1
- package/dist/src/v2/payment-rails/mpp/index.d.ts.map +1 -1
- package/dist/src/v2/payment-rails/mpp/index.js +11 -7
- package/dist/src/v2/payment-rails/mpp/index.js.map +1 -1
- package/dist/src/v2/payment-rails/mpp/types.d.ts +4 -4
- package/dist/src/v2/payment-rails/mpp/types.d.ts.map +1 -1
- package/dist/src/v2/policy-bundle/bundle.d.ts.map +1 -1
- package/dist/src/v2/policy-bundle/bundle.js +5 -3
- package/dist/src/v2/policy-bundle/bundle.js.map +1 -1
- package/dist/src/v2/provisional-statement/create.d.ts +13 -2
- package/dist/src/v2/provisional-statement/create.d.ts.map +1 -1
- package/dist/src/v2/provisional-statement/create.js +18 -6
- package/dist/src/v2/provisional-statement/create.js.map +1 -1
- package/dist/src/v2/read_fidelity_receipt/receipt.d.ts +8 -0
- package/dist/src/v2/read_fidelity_receipt/receipt.d.ts.map +1 -1
- package/dist/src/v2/read_fidelity_receipt/receipt.js +13 -2
- package/dist/src/v2/read_fidelity_receipt/receipt.js.map +1 -1
- package/dist/src/v2/revocation-enforcement/observation.js +2 -2
- package/dist/src/v2/revocation-enforcement/observation.js.map +1 -1
- package/dist/src/v2/trust-policy/policy.d.ts.map +1 -1
- package/dist/src/v2/trust-policy/policy.js +51 -3
- package/dist/src/v2/trust-policy/policy.js.map +1 -1
- package/dist/src/v2/wallet-binding/bind.d.ts.map +1 -1
- package/dist/src/v2/wallet-binding/bind.js +29 -9
- package/dist/src/v2/wallet-binding/bind.js.map +1 -1
- package/package.json +7 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contestability.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/construct/contestability.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,uCAAuC;AACvC,qEAAqE;AACrE,uEAAuE;AACvE,8DAA8D;AAC9D,oEAAoE;AACpE,EAAE;AACF,8DAA8D;AAC9D,mEAAmE;AACnE,kEAAkE;AAClE,sEAAsE;AACtE,mEAAmE;AACnE,cAAc;AACd,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"contestability.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/construct/contestability.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,uCAAuC;AACvC,qEAAqE;AACrE,uEAAuE;AACvE,8DAA8D;AAC9D,oEAAoE;AACpE,EAAE;AACF,8DAA8D;AAC9D,mEAAmE;AACnE,kEAAkE;AAClE,sEAAsE;AACtE,mEAAmE;AACnE,cAAc;AACd,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAmB,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACzF,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAmBpE,MAAM,UAAU,2BAA2B,CACzC,KAAuC,EACvC,oBAA4B;IAE5B,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,CAAC;QACnE,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc,KAAK,EAAE,CAAC,EACzF,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,CAAA;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAE7D,MAAM,KAAK,GAA0B;QACnC,UAAU,EAAE,uBAAuB;QACnC,UAAU,EAAE,EAAE;QACd,SAAS;QACT,UAAU;QACV,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,SAAS,EAAE,EAAE;KACd,CAAA;IACD,mEAAmE;IACnE,mEAAmE;IACnE,+BAA+B;IAC/B,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACtC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;IAC3C,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;SACpC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;SAC9C,MAAM,CAAC,KAAK,CAAC,CAAA;IAEhB,MAAM,MAAM,GAA0B,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAA;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAA;IAE7E,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAA;AACjC,CAAC;AAOD,MAAM,UAAU,wBAAwB,CACtC,OAA8B,EAC9B,QAAiC,EACjC,oBAA4B;IAE5B,8DAA8D;IAC9D,iEAAiE;IACjE,MAAM,aAAa,GAAqC;QACtD,GAAG,QAAQ;QACX,kBAAkB,EAAE,EAAE;KACvB,CAAA;IACD,MAAM,YAAY,GAA0B;QAC1C,GAAG,OAAO;QACV,mBAAmB,EAAE,aAAa;KACnC,CAAA;IACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC,CAAA;IAE5F,OAAO;QACL,GAAG,OAAO;QACV,mBAAmB,EAAE,EAAE,GAAG,QAAQ,EAAE,kBAAkB,EAAE;KACzD,CAAA;AACH,CAAC"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// receipt_id, so any post-signing receipt_id tampering breaks the sig.
|
|
10
10
|
// ══════════════════════════════════════════════════════════════════
|
|
11
11
|
import { createHash } from 'node:crypto';
|
|
12
|
-
import {
|
|
12
|
+
import { canonicalizeJCSForWrite } from '../../../core/canonical-jcs.js';
|
|
13
13
|
import { sign, publicKeyFromPrivate } from '../../../crypto/keys.js';
|
|
14
14
|
export function createCustodyReceipt(input, custodianPrivateKey) {
|
|
15
15
|
const signer_did = publicKeyFromPrivate(custodianPrivateKey);
|
|
@@ -33,10 +33,10 @@ export function createCustodyReceipt(input, custodianPrivateKey) {
|
|
|
33
33
|
signature: '',
|
|
34
34
|
};
|
|
35
35
|
const receipt_id = createHash('sha256')
|
|
36
|
-
.update(
|
|
36
|
+
.update(canonicalizeJCSForWrite(draft), 'utf8')
|
|
37
37
|
.digest('hex');
|
|
38
38
|
const signed = { ...draft, receipt_id };
|
|
39
|
-
const signature = sign(
|
|
39
|
+
const signature = sign(canonicalizeJCSForWrite(signed), custodianPrivateKey);
|
|
40
40
|
return { ...signed, signature };
|
|
41
41
|
}
|
|
42
42
|
//# sourceMappingURL=custody.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custody.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/construct/custody.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,gCAAgC;AAChC,qEAAqE;AACrE,oEAAoE;AACpE,wEAAwE;AACxE,kEAAkE;AAClE,uEAAuE;AACvE,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"custody.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/construct/custody.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,gCAAgC;AAChC,qEAAqE;AACrE,oEAAoE;AACpE,wEAAwE;AACxE,kEAAkE;AAClE,uEAAuE;AACvE,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAmB,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACzF,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAWpE,MAAM,UAAU,oBAAoB,CAClC,KAAgC,EAChC,mBAA2B;IAE3B,MAAM,UAAU,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAE7D,MAAM,KAAK,GAAmB;QAC5B,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,EAAE;QACd,SAAS;QACT,UAAU;QACV,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,EAAE;KACd,CAAA;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;SACpC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;SAC9C,MAAM,CAAC,KAAK,CAAC,CAAA;IAEhB,MAAM,MAAM,GAAmB,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAA;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAE5E,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAA;AACjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../../../src/v2/accountability/verify/bundle.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,CAAA;AAEvB,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,qBAAqB,CAAA;CAC/B;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,qBAAqB,
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../../../src/v2/accountability/verify/bundle.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,CAAA;AAEvB,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,qBAAqB,CAAA;CAC/B;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,qBAAqB,CA6BxE"}
|
|
@@ -25,11 +25,13 @@ export function verifyAPSBundle(bundle) {
|
|
|
25
25
|
if (!Number.isInteger(bundle.receipt_count) || bundle.receipt_count < 0) {
|
|
26
26
|
return { valid: false, reason: 'INVALID_RECEIPT_COUNT' };
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
// explicit null: keeps the shipped preimage bytes (#101); omission would change signatures
|
|
29
|
+
const idCheck = sha256Hex(canonicalizeJCS({ ...bundle, receipt_id: '', signature: null }));
|
|
29
30
|
if (idCheck !== bundle.receipt_id) {
|
|
30
31
|
return { valid: false, reason: 'RECEIPT_ID_MISMATCH' };
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
+
// explicit null: keeps the shipped preimage bytes (#101); omission would change signatures
|
|
34
|
+
const sigPayload = canonicalizeJCS({ ...bundle, signature: null });
|
|
33
35
|
if (!edVerifyHex(sigPayload, bundle.signature, bundle.signer_did)) {
|
|
34
36
|
return { valid: false, reason: 'SIGNATURE_INVALID' };
|
|
35
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/verify/bundle.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,2BAA2B;AAC3B,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAe/D,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,0EAA0E;IAC1E,yCAAyC;IACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC/E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;IACxD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAA;IAC1D,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../../src/v2/accountability/verify/bundle.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,2BAA2B;AAC3B,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAe/D,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,0EAA0E;IAC1E,yCAAyC;IACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC/E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;IACxD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAA;IAC1D,CAAC;IAED,2FAA2F;IAC3F,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1F,IAAI,OAAO,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;IACxD,CAAC;IAED,2FAA2F;IAC3F,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAClE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAA;IACtD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC"}
|
|
@@ -2,7 +2,17 @@ import type { HybridTimestamp } from '../../types/time.js';
|
|
|
2
2
|
import type { AgentDID, AttributionReceipt, ContextID, PrincipalDID } from './types.js';
|
|
3
3
|
/** The canonical unsigned core of a receipt. Both citer and cited principal
|
|
4
4
|
* sign exactly this payload, and the receipt id is sha256(core). */
|
|
5
|
-
|
|
5
|
+
type ReceiptCoreInput = AttributionReceipt | Omit<AttributionReceipt, 'id' | 'citer_signature' | 'cited_principal_signature'>;
|
|
6
|
+
export declare function receiptCore(receipt: ReceiptCoreInput): string;
|
|
7
|
+
/** Write-boundary twin of receiptCore().
|
|
8
|
+
*
|
|
9
|
+
* Shares one implementation body with receiptCore() so the two can never drift apart
|
|
10
|
+
* on the field list. Emits the same bytes for every value it accepts; the only
|
|
11
|
+
* difference is that an integer-valued number outside the interoperable IEEE 754
|
|
12
|
+
* range is refused instead of serialized. Use at signing and new-write boundaries
|
|
13
|
+
* ONLY: receiptCore() stays unrestricted so an artifact signed before this rule keeps
|
|
14
|
+
* verifying. */
|
|
15
|
+
export declare function receiptCoreForWrite(receipt: ReceiptCoreInput): string;
|
|
6
16
|
export interface CreateAttributionReceiptParams {
|
|
7
17
|
citer: AgentDID;
|
|
8
18
|
citer_public_key: string;
|
|
@@ -18,4 +28,5 @@ export interface CreateAttributionReceiptParams {
|
|
|
18
28
|
* consent signature is still absent — verifyAttributionConsent() will
|
|
19
29
|
* reject this receipt until signAttributionConsent() runs. */
|
|
20
30
|
export declare function createAttributionReceipt(params: CreateAttributionReceiptParams): AttributionReceipt;
|
|
31
|
+
export {};
|
|
21
32
|
//# sourceMappingURL=create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/create.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,SAAS,EACT,YAAY,EACb,MAAM,YAAY,CAAA;AAEnB;qEACqE;AACrE,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/create.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,SAAS,EACT,YAAY,EACb,MAAM,YAAY,CAAA;AAEnB;qEACqE;AACrE,KAAK,gBAAgB,GAAG,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAClE,IAAI,GAAG,iBAAiB,GAAG,2BAA2B,CAAC,CAAA;AAgBzD,wBAAgB,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAE7D;AAED;;;;;;;iBAOiB;AACjB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAErE;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,QAAQ,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,eAAe,EAAE,YAAY,CAAA;IAC7B,0BAA0B,EAAE,MAAM,CAAA;IAClC,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,SAAS,CAAA;IAC1B,UAAU,EAAE,eAAe,CAAA;IAC3B,UAAU,EAAE,eAAe,CAAA;CAC5B;AAED;;+DAE+D;AAC/D,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,8BAA8B,GACrC,kBAAkB,CA6BpB"}
|
|
@@ -3,11 +3,9 @@
|
|
|
3
3
|
// Attribution Consent — construct + sign (citer-side)
|
|
4
4
|
import { createHash } from 'node:crypto';
|
|
5
5
|
import { sign } from '../../crypto/keys.js';
|
|
6
|
-
import { canonicalize } from '../../core/canonical.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export function receiptCore(receipt) {
|
|
10
|
-
return canonicalize({
|
|
6
|
+
import { canonicalize, canonicalizeForWrite } from '../../core/canonical.js';
|
|
7
|
+
function receiptCoreImpl(receipt, canon) {
|
|
8
|
+
return canon({
|
|
11
9
|
version: receipt.version,
|
|
12
10
|
citer: receipt.citer,
|
|
13
11
|
citer_public_key: receipt.citer_public_key,
|
|
@@ -19,6 +17,20 @@ export function receiptCore(receipt) {
|
|
|
19
17
|
expires_at: receipt.expires_at,
|
|
20
18
|
});
|
|
21
19
|
}
|
|
20
|
+
export function receiptCore(receipt) {
|
|
21
|
+
return receiptCoreImpl(receipt, canonicalize);
|
|
22
|
+
}
|
|
23
|
+
/** Write-boundary twin of receiptCore().
|
|
24
|
+
*
|
|
25
|
+
* Shares one implementation body with receiptCore() so the two can never drift apart
|
|
26
|
+
* on the field list. Emits the same bytes for every value it accepts; the only
|
|
27
|
+
* difference is that an integer-valued number outside the interoperable IEEE 754
|
|
28
|
+
* range is refused instead of serialized. Use at signing and new-write boundaries
|
|
29
|
+
* ONLY: receiptCore() stays unrestricted so an artifact signed before this rule keeps
|
|
30
|
+
* verifying. */
|
|
31
|
+
export function receiptCoreForWrite(receipt) {
|
|
32
|
+
return receiptCoreImpl(receipt, canonicalizeForWrite);
|
|
33
|
+
}
|
|
22
34
|
/** Build an AttributionReceipt signed by the citer. The cited principal's
|
|
23
35
|
* consent signature is still absent — verifyAttributionConsent() will
|
|
24
36
|
* reject this receipt until signAttributionConsent() runs. */
|
|
@@ -40,7 +52,7 @@ export function createAttributionReceipt(params) {
|
|
|
40
52
|
created_at: params.created_at,
|
|
41
53
|
expires_at: params.expires_at,
|
|
42
54
|
};
|
|
43
|
-
const core =
|
|
55
|
+
const core = receiptCoreForWrite(unsigned);
|
|
44
56
|
const id = createHash('sha256').update(core).digest('hex');
|
|
45
57
|
const citer_signature = sign(core, params.citer_private_key);
|
|
46
58
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/create.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,sDAAsD;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/create.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,sDAAsD;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAc5E,SAAS,eAAe,CAAC,OAAyB,EAAE,KAA6B;IAC/E,OAAO,KAAK,CAAC;QACX,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,0BAA0B,EAAE,OAAO,CAAC,0BAA0B;QAC9D,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAyB;IACnD,OAAO,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;;;iBAOiB;AACjB,MAAM,UAAU,mBAAmB,CAAC,OAAyB;IAC3D,OAAO,eAAe,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAA;AACvD,CAAC;AAcD;;+DAE+D;AAC/D,MAAM,UAAU,wBAAwB,CACtC,MAAsC;IAEtC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;IAC1F,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,KAAc;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;QAC7D,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAA;IAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAE5D,OAAO;QACL,EAAE;QACF,GAAG,QAAQ;QACX,eAAe;KAChB,CAAA;AACH,CAAC"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
// Attribution Consent — cited-principal consent signing
|
|
4
4
|
import { sign, verify } from '../../crypto/keys.js';
|
|
5
|
-
import {
|
|
5
|
+
import { receiptCoreForWrite } from './create.js';
|
|
6
6
|
/** Add the cited principal's consent signature. The private key must match
|
|
7
7
|
* cited_principal_public_key on the receipt or this throws. Does not
|
|
8
8
|
* mutate the input receipt. */
|
|
9
9
|
export function signAttributionConsent(receipt, cited_principal_private_key) {
|
|
10
|
-
const core =
|
|
10
|
+
const core = receiptCoreForWrite(receipt);
|
|
11
11
|
const cited_principal_signature = sign(core, cited_principal_private_key);
|
|
12
12
|
if (!verify(core, cited_principal_signature, receipt.cited_principal_public_key)) {
|
|
13
13
|
throw new Error('signAttributionConsent: consent signature does not verify against cited_principal_public_key — wrong private key?');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/sign.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,wDAAwD;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../../src/v2/attribution-consent/sign.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,wDAAwD;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD;;gCAEgC;AAChC,MAAM,UAAU,sBAAsB,CACpC,OAA2B,EAC3B,2BAAmC;IAEnC,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACzC,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IAEzE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAA;IACH,CAAC;IAED,OAAO,EAAE,GAAG,OAAO,EAAE,yBAAyB,EAAE,CAAA;AAClD,CAAC"}
|
|
@@ -32,14 +32,29 @@ export declare function orderGovernanceAxis(items: GovernanceAxisEntry[]): Gover
|
|
|
32
32
|
export declare function normalizeAxes(axes: AttributionAxes): AttributionAxes;
|
|
33
33
|
/** SHA-256(canonical(axis_content)) as raw 32 bytes. §2.1. */
|
|
34
34
|
export declare function hashAxisLeaf(axis: unknown): Buffer;
|
|
35
|
+
/** Write-boundary twin of hashAxisLeaf().
|
|
36
|
+
*
|
|
37
|
+
* Emits the same bytes as hashAxisLeaf() for every value it accepts. The only difference
|
|
38
|
+
* is that an integer-valued number outside the interoperable IEEE 754 range is
|
|
39
|
+
* refused instead of serialized. Use at signing and new-write boundaries ONLY:
|
|
40
|
+
* hashAxisLeaf() stays unrestricted so an artifact signed before this rule keeps
|
|
41
|
+
* verifying. */
|
|
42
|
+
export declare function hashAxisLeafForWrite(axis: unknown): Buffer;
|
|
35
43
|
/** Internal Merkle node: SHA-256(left_bytes || right_bytes). §2.1. */
|
|
36
44
|
export declare function hashNode(left: Buffer, right: Buffer): Buffer;
|
|
37
45
|
/** Hex sha256 of canonicalize(envelope). Used for signing and for deriving
|
|
38
46
|
* action_ref from the action tuple. */
|
|
39
47
|
export declare function canonicalHashHex(obj: unknown): string;
|
|
40
|
-
/** The canonical envelope §2.3 that Ed25519 signs. Returned as a string so
|
|
41
|
-
* Python and TypeScript sign/verify exactly the same bytes. */
|
|
42
48
|
export declare function envelopeBytes(env: AttributionEnvelope): string;
|
|
49
|
+
/** Write-boundary twin of envelopeBytes().
|
|
50
|
+
*
|
|
51
|
+
* Shares one implementation body with envelopeBytes() so the two can never drift apart
|
|
52
|
+
* on the field list. Emits the same bytes for every value it accepts; the only
|
|
53
|
+
* difference is that an integer-valued number outside the interoperable IEEE 754
|
|
54
|
+
* range is refused instead of serialized. Use at signing and new-write boundaries
|
|
55
|
+
* ONLY: envelopeBytes() stays unrestricted so an artifact signed before this rule keeps
|
|
56
|
+
* verifying. */
|
|
57
|
+
export declare function envelopeBytesForWrite(env: AttributionEnvelope): string;
|
|
43
58
|
/** Type-safe enumeration of axis tags, for iteration. */
|
|
44
59
|
export declare const ATTRIBUTION_AXIS_TAGS: ReadonlyArray<AttributionAxisTag>;
|
|
45
60
|
//# sourceMappingURL=canonical.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/canonical.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,YAAY,CAAA;AAKnB;;2CAE2C;AAC3C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAgB7D;AAED;2EAC2E;AAC3E,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED;;0BAE0B;AAC1B,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAIjE;AAYD;;;;;;;;;;4CAU4C;AAC5C,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAQlE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAY9E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAU3E;AAED;2DAC2D;AAC3D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAUvF;AAED;0EAC0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAOpE;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAElD;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;wCACwC;AACxC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAErD;AAED;
|
|
1
|
+
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/canonical.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,YAAY,CAAA;AAKnB;;2CAE2C;AAC3C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAgB7D;AAED;2EAC2E;AAC3E,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED;;0BAE0B;AAC1B,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAIjE;AAYD;;;;;;;;;;4CAU4C;AAC5C,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAQlE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAY9E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAU3E;AAED;2DAC2D;AAC3D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAUvF;AAED;0EAC0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAOpE;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAElD;AACD;;;;;;iBAMiB;AACjB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAE1D;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;wCACwC;AACxC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAErD;AAcD,wBAAgB,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAE9D;AAED;;;;;;;iBAOiB;AACjB,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAEtE;AAED,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,kBAAkB,CAAwB,CAAA"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// §3.4) holds for schema-valid inputs.
|
|
9
9
|
// ══════════════════════════════════════════════════════════════════
|
|
10
10
|
import { createHash } from 'node:crypto';
|
|
11
|
-
import { canonicalize } from '../../core/canonical.js';
|
|
11
|
+
import { canonicalize, canonicalizeForWrite } from '../../core/canonical.js';
|
|
12
12
|
const WEIGHT_PATTERN = /^\d+\.\d{6}$/;
|
|
13
13
|
const ISO_8601_MS_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
|
|
14
14
|
/** Format a numeric weight or decimal-string input as the canonical
|
|
@@ -118,6 +118,16 @@ export function normalizeAxes(axes) {
|
|
|
118
118
|
export function hashAxisLeaf(axis) {
|
|
119
119
|
return createHash('sha256').update(canonicalize(axis)).digest();
|
|
120
120
|
}
|
|
121
|
+
/** Write-boundary twin of hashAxisLeaf().
|
|
122
|
+
*
|
|
123
|
+
* Emits the same bytes as hashAxisLeaf() for every value it accepts. The only difference
|
|
124
|
+
* is that an integer-valued number outside the interoperable IEEE 754 range is
|
|
125
|
+
* refused instead of serialized. Use at signing and new-write boundaries ONLY:
|
|
126
|
+
* hashAxisLeaf() stays unrestricted so an artifact signed before this rule keeps
|
|
127
|
+
* verifying. */
|
|
128
|
+
export function hashAxisLeafForWrite(axis) {
|
|
129
|
+
return createHash('sha256').update(canonicalizeForWrite(axis)).digest();
|
|
130
|
+
}
|
|
121
131
|
/** Internal Merkle node: SHA-256(left_bytes || right_bytes). §2.1. */
|
|
122
132
|
export function hashNode(left, right) {
|
|
123
133
|
return createHash('sha256').update(Buffer.concat([left, right])).digest();
|
|
@@ -129,15 +139,29 @@ export function canonicalHashHex(obj) {
|
|
|
129
139
|
}
|
|
130
140
|
/** The canonical envelope §2.3 that Ed25519 signs. Returned as a string so
|
|
131
141
|
* Python and TypeScript sign/verify exactly the same bytes. */
|
|
132
|
-
|
|
142
|
+
function envelopeBytesImpl(env, canon) {
|
|
133
143
|
assertCanonicalTimestamp(env.timestamp);
|
|
134
|
-
return
|
|
144
|
+
return canon({
|
|
135
145
|
action_ref: env.action_ref,
|
|
136
146
|
merkle_root: env.merkle_root,
|
|
137
147
|
issuer: env.issuer,
|
|
138
148
|
timestamp: env.timestamp,
|
|
139
149
|
});
|
|
140
150
|
}
|
|
151
|
+
export function envelopeBytes(env) {
|
|
152
|
+
return envelopeBytesImpl(env, canonicalize);
|
|
153
|
+
}
|
|
154
|
+
/** Write-boundary twin of envelopeBytes().
|
|
155
|
+
*
|
|
156
|
+
* Shares one implementation body with envelopeBytes() so the two can never drift apart
|
|
157
|
+
* on the field list. Emits the same bytes for every value it accepts; the only
|
|
158
|
+
* difference is that an integer-valued number outside the interoperable IEEE 754
|
|
159
|
+
* range is refused instead of serialized. Use at signing and new-write boundaries
|
|
160
|
+
* ONLY: envelopeBytes() stays unrestricted so an artifact signed before this rule keeps
|
|
161
|
+
* verifying. */
|
|
162
|
+
export function envelopeBytesForWrite(env) {
|
|
163
|
+
return envelopeBytesImpl(env, canonicalizeForWrite);
|
|
164
|
+
}
|
|
141
165
|
/** Type-safe enumeration of axis tags, for iteration. */
|
|
142
166
|
export const ATTRIBUTION_AXIS_TAGS = ['D', 'P', 'G', 'C'];
|
|
143
167
|
//# sourceMappingURL=canonical.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/canonical.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,qEAAqE;AACrE,qEAAqE;AACrE,yEAAyE;AACzE,uEAAuE;AACvE,uCAAuC;AACvC,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/canonical.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
import type { AttributionAction, AttributionAxes, AttributionPrimitive } from './types.js';
|
|
2
|
-
/** Derive action_ref from the action tuple. §1.2 / §3.4.
|
|
3
|
-
*
|
|
4
|
-
* The spec pseudocode in §2.7 uses string concatenation (`agentId || type
|
|
5
|
-
* || canonical(params) || nonce`), but Theorem 1's reduction relies on
|
|
6
|
-
* canonical(T) being injective (A1). Plain string concatenation is not
|
|
7
|
-
* self-delimiting, so two distinct tuples could produce the same byte
|
|
8
|
-
* string. We adopt canonical(T) on the full tuple, which is injective by
|
|
9
|
-
* construction and matches the security argument.
|
|
10
|
-
*
|
|
11
|
-
* Canonicalization uses strict RFC 8785 JCS (canonicalHashJCS), not the
|
|
12
|
-
* legacy null-stripping APS variant. ATTRIBUTION-PRIMITIVE-v1.1 §1.6
|
|
13
|
-
* pins all hashing to RFC 8785, and Theorem 1's Assumption A1
|
|
14
|
-
* (canonicalization injectivity) requires that semantically distinct
|
|
15
|
-
* action tuples produce distinct canonical bytes — which null-stripping
|
|
16
|
-
* would violate ({k:null, v:1} and {v:1} would collide). */
|
|
17
2
|
export declare function computeAttributionActionRef(action: AttributionAction): string;
|
|
18
3
|
export interface ConstructAttributionParams {
|
|
19
4
|
/** The action being attested. Used to derive action_ref. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"construct.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/construct.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACrB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"construct.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/construct.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACrB,MAAM,YAAY,CAAA;AAmCnB,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAE7E;AAaD,MAAM,WAAW,0BAA0B;IACzC,4DAA4D;IAC5D,MAAM,EAAE,iBAAiB,CAAA;IACzB;2BACuB;IACvB,IAAI,EAAE,eAAe,CAAA;IACrB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAA;IACd;0DACsD;IACtD,gBAAgB,EAAE,MAAM,CAAA;IACxB;uEACmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,4DAA4D;AAC5D,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,0BAA0B,GACjC,oBAAoB,CA0BtB;AAED;;;mEAGmE;AACnE,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,oBAAoB,EAC/B,gBAAgB,EAAE,MAAM,EACxB,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAChF,oBAAoB,CAiBtB"}
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
// policy per §7.1.
|
|
12
12
|
// ══════════════════════════════════════════════════════════════════
|
|
13
13
|
import { sign } from '../../crypto/keys.js';
|
|
14
|
-
import { canonicalHashJCS } from '../../core/canonical-jcs.js';
|
|
15
|
-
import { assertCanonicalTimestamp, canonicalTimestamp,
|
|
16
|
-
import {
|
|
14
|
+
import { canonicalHashJCS, canonicalHashJCSForWrite } from '../../core/canonical-jcs.js';
|
|
15
|
+
import { assertCanonicalTimestamp, canonicalTimestamp, envelopeBytesForWrite, } from './canonical.js';
|
|
16
|
+
import { buildMerkleFrameForWrite } from './merkle.js';
|
|
17
17
|
/** Derive action_ref from the action tuple. §1.2 / §3.4.
|
|
18
18
|
*
|
|
19
19
|
* The spec pseudocode in §2.7 uses string concatenation (`agentId || type
|
|
@@ -29,7 +29,7 @@ import { buildMerkleFrame } from './merkle.js';
|
|
|
29
29
|
* (canonicalization injectivity) requires that semantically distinct
|
|
30
30
|
* action tuples produce distinct canonical bytes — which null-stripping
|
|
31
31
|
* would violate ({k:null, v:1} and {v:1} would collide). */
|
|
32
|
-
|
|
32
|
+
function computeAttributionActionRefImpl(action, hash) {
|
|
33
33
|
if (!action.agentId)
|
|
34
34
|
throw new Error('attribution-primitive: action.agentId required');
|
|
35
35
|
if (!action.actionType)
|
|
@@ -39,25 +39,38 @@ export function computeAttributionActionRef(action) {
|
|
|
39
39
|
if (typeof action.params !== 'object' || action.params === null) {
|
|
40
40
|
throw new Error('attribution-primitive: action.params must be an object');
|
|
41
41
|
}
|
|
42
|
-
return
|
|
42
|
+
return hash({
|
|
43
43
|
agentId: action.agentId,
|
|
44
44
|
actionType: action.actionType,
|
|
45
45
|
params: action.params,
|
|
46
46
|
nonce: action.nonce,
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
|
+
export function computeAttributionActionRef(action) {
|
|
50
|
+
return computeAttributionActionRefImpl(action, canonicalHashJCS);
|
|
51
|
+
}
|
|
52
|
+
/** Write-boundary twin of computeAttributionActionRef().
|
|
53
|
+
*
|
|
54
|
+
* Module-internal on purpose: it is deliberately absent from the package barrel, so
|
|
55
|
+
* this adds no public API. The exported computeAttributionActionRef() stays
|
|
56
|
+
* unrestricted, because an external verifier re-deriving the action_ref of a primitive
|
|
57
|
+
* signed before this rule must still get the same value. Mirrors the Python SDK's
|
|
58
|
+
* _compute_attribution_action_ref_for_write. */
|
|
59
|
+
function computeAttributionActionRefForWrite(action) {
|
|
60
|
+
return computeAttributionActionRefImpl(action, canonicalHashJCSForWrite);
|
|
61
|
+
}
|
|
49
62
|
/** Build and sign a complete AttributionPrimitive. §2.7. */
|
|
50
63
|
export function constructAttributionPrimitive(params) {
|
|
51
64
|
if (!params.issuer)
|
|
52
65
|
throw new Error('attribution-primitive: issuer required');
|
|
53
66
|
if (!params.issuerPrivateKey)
|
|
54
67
|
throw new Error('attribution-primitive: issuerPrivateKey required');
|
|
55
|
-
const action_ref =
|
|
56
|
-
const frame =
|
|
68
|
+
const action_ref = computeAttributionActionRefForWrite(params.action);
|
|
69
|
+
const frame = buildMerkleFrameForWrite(params.axes);
|
|
57
70
|
const merkle_root = frame.root.toString('hex');
|
|
58
71
|
const timestamp = params.timestamp ?? canonicalTimestamp();
|
|
59
72
|
assertCanonicalTimestamp(timestamp);
|
|
60
|
-
const envelope =
|
|
73
|
+
const envelope = envelopeBytesForWrite({
|
|
61
74
|
action_ref,
|
|
62
75
|
merkle_root,
|
|
63
76
|
issuer: params.issuer,
|
|
@@ -80,13 +93,13 @@ export function constructAttributionPrimitive(params) {
|
|
|
80
93
|
export function resignAttributionPrimitive(primitive, issuerPrivateKey, opts) {
|
|
81
94
|
const axes = opts?.axes ?? primitive.axes;
|
|
82
95
|
const action_ref = opts?.action
|
|
83
|
-
?
|
|
96
|
+
? computeAttributionActionRefForWrite(opts.action)
|
|
84
97
|
: primitive.action_ref;
|
|
85
|
-
const frame =
|
|
98
|
+
const frame = buildMerkleFrameForWrite(axes);
|
|
86
99
|
const merkle_root = frame.root.toString('hex');
|
|
87
100
|
const timestamp = opts?.timestamp ?? canonicalTimestamp();
|
|
88
101
|
assertCanonicalTimestamp(timestamp);
|
|
89
|
-
const envelope =
|
|
102
|
+
const envelope = envelopeBytesForWrite({
|
|
90
103
|
action_ref,
|
|
91
104
|
merkle_root,
|
|
92
105
|
issuer: primitive.issuer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"construct.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/construct.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,uCAAuC;AACvC,qEAAqE;AACrE,0EAA0E;AAC1E,wEAAwE;AACxE,uEAAuE;AACvE,0EAA0E;AAC1E,qEAAqE;AACrE,mBAAmB;AACnB,qEAAqE;AAErE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"construct.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/construct.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,10 +14,14 @@ export interface MerkleFrame {
|
|
|
14
14
|
};
|
|
15
15
|
root: Buffer;
|
|
16
16
|
}
|
|
17
|
-
/** Build the full tree for a set of axes. Callers pass the raw (possibly
|
|
18
|
-
* unsorted) axes; we normalize before hashing so the caller can't produce
|
|
19
|
-
* two different canonical representations of the same logical content. */
|
|
20
17
|
export declare function buildMerkleFrame(rawAxes: AttributionAxes): MerkleFrame;
|
|
18
|
+
/** Write-boundary twin of buildMerkleFrame().
|
|
19
|
+
*
|
|
20
|
+
* Reaches a canonicalizer only indirectly, through hashAxisLeaf, so a call-site
|
|
21
|
+
* census over canonicalizer usage cannot see it. Use when CONSTRUCTING a primitive;
|
|
22
|
+
* projection and verification keep calling buildMerkleFrame() so a primitive built
|
|
23
|
+
* before this rule still reconstructs. */
|
|
24
|
+
export declare function buildMerkleFrameForWrite(rawAxes: AttributionAxes): MerkleFrame;
|
|
21
25
|
/** The sibling path for a projection, in the order §2.2 specifies:
|
|
22
26
|
* [sibling_leaf_within_pair_hex, sibling_internal_node_hex]. */
|
|
23
27
|
export declare function projectionPath(frame: MerkleFrame, axis: AttributionAxisTag): [string, string];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/merkle.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAErE,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,IAAI,EAAE,eAAe,CAAA;IACrB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtD,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,IAAI,EAAE,MAAM,CAAA;CACb;AAED
|
|
1
|
+
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/merkle.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAErE,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,IAAI,EAAE,eAAe,CAAA;IACrB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtD,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,IAAI,EAAE,MAAM,CAAA;CACb;AAyBD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAEtE;AAED;;;;;2CAK2C;AAC3C,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAE9E;AAED;iEACiE;AACjE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,kBAAkB,GACvB,CAAC,MAAM,EAAE,MAAM,CAAC,CAelB;AAED;;iEAEiE;AACjE,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACtB,IAAI,EAAE,kBAAkB,GACvB,MAAM,CA2BR"}
|
|
@@ -7,16 +7,16 @@
|
|
|
7
7
|
// left, authority-infrastructure pair (G, C) on the right, balanced above.
|
|
8
8
|
// All projections share a path length of two.
|
|
9
9
|
// ══════════════════════════════════════════════════════════════════
|
|
10
|
-
import { hashAxisLeaf, hashNode, normalizeAxes } from './canonical.js';
|
|
10
|
+
import { hashAxisLeaf, hashAxisLeafForWrite, hashNode, normalizeAxes } from './canonical.js';
|
|
11
11
|
/** Build the full tree for a set of axes. Callers pass the raw (possibly
|
|
12
12
|
* unsorted) axes; we normalize before hashing so the caller can't produce
|
|
13
13
|
* two different canonical representations of the same logical content. */
|
|
14
|
-
|
|
14
|
+
function buildMerkleFrameImpl(rawAxes, leaf) {
|
|
15
15
|
const axes = normalizeAxes(rawAxes);
|
|
16
|
-
const leafD =
|
|
17
|
-
const leafP =
|
|
18
|
-
const leafG =
|
|
19
|
-
const leafC =
|
|
16
|
+
const leafD = leaf(axes.D);
|
|
17
|
+
const leafP = leaf(axes.P);
|
|
18
|
+
const leafG = leaf(axes.G);
|
|
19
|
+
const leafC = leaf(axes.C);
|
|
20
20
|
const nContent = hashNode(leafD, leafP);
|
|
21
21
|
const nAuthInfra = hashNode(leafG, leafC);
|
|
22
22
|
const root = hashNode(nContent, nAuthInfra);
|
|
@@ -27,6 +27,18 @@ export function buildMerkleFrame(rawAxes) {
|
|
|
27
27
|
root,
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
+
export function buildMerkleFrame(rawAxes) {
|
|
31
|
+
return buildMerkleFrameImpl(rawAxes, hashAxisLeaf);
|
|
32
|
+
}
|
|
33
|
+
/** Write-boundary twin of buildMerkleFrame().
|
|
34
|
+
*
|
|
35
|
+
* Reaches a canonicalizer only indirectly, through hashAxisLeaf, so a call-site
|
|
36
|
+
* census over canonicalizer usage cannot see it. Use when CONSTRUCTING a primitive;
|
|
37
|
+
* projection and verification keep calling buildMerkleFrame() so a primitive built
|
|
38
|
+
* before this rule still reconstructs. */
|
|
39
|
+
export function buildMerkleFrameForWrite(rawAxes) {
|
|
40
|
+
return buildMerkleFrameImpl(rawAxes, hashAxisLeafForWrite);
|
|
41
|
+
}
|
|
30
42
|
/** The sibling path for a projection, in the order §2.2 specifies:
|
|
31
43
|
* [sibling_leaf_within_pair_hex, sibling_internal_node_hex]. */
|
|
32
44
|
export function projectionPath(frame, axis) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/merkle.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,yDAAyD;AACzD,qEAAqE;AACrE,wEAAwE;AACxE,2EAA2E;AAC3E,8CAA8C;AAC9C,qEAAqE;AAErE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/merkle.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// gateway-side — not in this module.
|
|
16
16
|
// ══════════════════════════════════════════════════════════════════
|
|
17
17
|
import { createHash } from 'node:crypto';
|
|
18
|
-
import {
|
|
18
|
+
import { canonicalizeForWrite } from '../../core/canonical.js';
|
|
19
19
|
import { toWeightString } from './canonical.js';
|
|
20
20
|
export const DEFAULT_MIN_WEIGHT = 0.001;
|
|
21
21
|
function isResidual(x) {
|
|
@@ -40,7 +40,7 @@ function weightNumber(w) {
|
|
|
40
40
|
* For the reference implementation we commit to the canonicalized list. */
|
|
41
41
|
function pooledContributorsHash(entries) {
|
|
42
42
|
const sorted = [...entries].sort((a, b) => (a.did < b.did ? -1 : a.did > b.did ? 1 : 0));
|
|
43
|
-
return createHash('sha256').update(
|
|
43
|
+
return createHash('sha256').update(canonicalizeForWrite(sorted)).digest('hex');
|
|
44
44
|
}
|
|
45
45
|
/** Apply the §4.1 threshold to a list of data-axis contributors. Returns
|
|
46
46
|
* the retained entries plus a residual bucket (or null). Input entries
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"residual.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/residual.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AACtC,qEAAqE;AACrE,6DAA6D;AAC7D,qEAAqE;AACrE,0EAA0E;AAC1E,2EAA2E;AAC3E,sEAAsE;AACtE,uEAAuE;AACvE,0EAA0E;AAC1E,8CAA8C;AAC9C,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,qCAAqC;AACrC,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"residual.js","sourceRoot":"","sources":["../../../../src/v2/attribution-primitive/residual.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,14 @@ export declare function contributorLeafHashHex(c: SettlementContributor): string
|
|
|
7
7
|
/** Residual-bucket leaf hash for the per-axis tree. Canonicalizes the
|
|
8
8
|
* full bucket object. */
|
|
9
9
|
export declare function residualLeafHashHex(r: SettlementResidualBucket): string;
|
|
10
|
+
/** Write-boundary twin of residualLeafHashHex().
|
|
11
|
+
*
|
|
12
|
+
* Emits the same bytes as residualLeafHashHex() for every value it accepts. The only difference
|
|
13
|
+
* is that an integer-valued number outside the interoperable IEEE 754 range is
|
|
14
|
+
* refused instead of serialized. Use at signing and new-write boundaries ONLY:
|
|
15
|
+
* residualLeafHashHex() stays unrestricted so an artifact signed before this rule keeps
|
|
16
|
+
* verifying. */
|
|
17
|
+
export declare function residualLeafHashHexForWrite(r: SettlementResidualBucket): string;
|
|
10
18
|
/** 6-digit decimal form for settlement weights. Unlike Build A's
|
|
11
19
|
* `toWeightString`, settlement weights can exceed 1.0 (they accumulate
|
|
12
20
|
* over many actions); the 6-digit precision is preserved. Rejects
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-settlement/aggregate.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAEV,oBAAoB,EASrB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,YAAY,CAAA;AA8BnB;;4DAE4D;AAC5D,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAEvE;AAED;0BAC0B;AAC1B,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAEvE;AA6GD;;;qCAGqC;AACrC,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQxD;AA4ED,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;8DAE0D;IAC1D,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;qEAGqE;AACrE,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,oBAAoB,EAAE,EAChC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CA6ErC"}
|
|
1
|
+
{"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/v2/attribution-settlement/aggregate.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAEV,oBAAoB,EASrB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,YAAY,CAAA;AA8BnB;;4DAE4D;AAC5D,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAEvE;AAED;0BAC0B;AAC1B,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAEvE;AACD;;;;;;iBAMiB;AACjB,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAE/E;AA6GD;;;qCAGqC;AACrC,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQxD;AA4ED,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;8DAE0D;IAC1D,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;qEAGqE;AACrE,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,oBAAoB,EAAE,EAChC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CA6ErC"}
|