Skip to content

feat(vc): Pillar C — idprova-vc, eddsa-jcs-2022 VC issue/verify interop - #77

Merged
pratyushsood24 merged 3 commits into
mainfrom
feat/pillar-c-vc-interop
Jun 26, 2026
Merged

feat(vc): Pillar C — idprova-vc, eddsa-jcs-2022 VC issue/verify interop#77
pratyushsood24 merged 3 commits into
mainfrom
feat/pillar-c-vc-interop

Conversation

@pratyushsood24

Copy link
Copy Markdown
Contributor

Pillar C — `idprova-vc` (W3C VC Data Model 2.0 interop layer)

Second of the three KYA commercial-spine pillars (Pillar A merged in #76). Open library, Apache-2.0 — the verify path stays free per the open-core line (operation/governance/scale is where paid begins, never the protocol/verify).

What this adds

  • eddsa-jcs-2022 Data Integrity issue/verify round-trip over Ed25519.
    • Canonical hash = `SHA-256(JCS(proofConfig)) ‖ SHA-256(JCS(doc))` computed over the serde-serialized typed VC (proof/proofValue stripped) so issuer and verifier hash identical bytes by construction.
    • `proofValue` = base58btc multibase.
  • Deterministic DAT→VC bridge (`dat_bridge`) preserving agent scope.
  • AP2 / A2A typed mandate builders (`ap2`) and presentation scaffolding.
  • Model types for VC Data Model 2.0.

Tests (6, all green locally)

`round_trip_valid`, `tampered_invalid`, `revoked`, `expired`, `dat_to_vc_preserves_scope`, `ap2_intent_shape`.

CI hygiene

Notes / follow-ups (non-blocking)

  • Proof keys currently snake_case (`proof_value`); camelCase + external JSON-LD/framing for full cross-verifier interop is a later hardening pass.
  • RDF/ECDSA suites stay behind features.
  • `presentation::evaluate` is a stub (JSONPath/JSON-LD framing TODO).

pratyushsood24 and others added 3 commits June 27, 2026 01:11
…ign + skeleton

Adds idprova-vc: deterministic VC issue/verify (default eddsa-jcs-2022 over RFC 8785 JCS; rdfc/ecdsa-P256 behind features for AP2), DIF Presentation Exchange, verify-time StatusList revocation, a documented DAT<->VC mapping, and AP2 Intent/Cart/Payment mandate builders. Bridges into Google AP2/A2A without abandoning the DAT runtime. Design-only skeleton + DESIGN-pillar-c.md + SPEC.md.

Co-Authored-By: TechBlaze <info@techblaze.com.au>
Promote Pillar C from skeleton to a working default cryptosuite:

- add suite::jcs_hash: SHA-256(JCS(proofConfig)) || SHA-256(JCS(doc)) per
  W3C vc-di-eddsa, serializing the typed VC so issuer and verifier hash
  byte-identical input (fixes a payload mismatch that made issue->verify
  never validate)
- issue: build the VC, sign jcs_hash, encode proofValue as base58btc
  multibase
- verify: recompute jcs_hash, multibase-decode, Ed25519 verify; drop the
  divergent hand-rebuilt payload
- add sha2 + multibase deps

Tested: 6 passing tests — issue->verify Valid, tampered InvalidSignature,
revoked Revoked, expired Expired, dat_to_vc preserves scope, AP2 Intent
mandate shape. RDF/ECDSA suites remain behind features (todo). External
JSON-LD/camelCase proof interop is a follow-up hardening pass.

Co-Authored-By: TechBlaze <info@techblaze.com.au>
Removes unused CryptoSuite imports (ap2, dat_bridge), prefixes unused
evaluate() stub param, and regenerates Cargo.lock for the idprova-vc
crate deps (sha2, multibase) after rebase onto main.

Co-Authored-By: TechBlaze <info@techblaze.com.au>
@pratyushsood24
pratyushsood24 merged commit a860f45 into main Jun 26, 2026
6 of 7 checks passed
@pratyushsood24
pratyushsood24 deleted the feat/pillar-c-vc-interop branch June 26, 2026 23:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant