Skip to content

feat(join): store/load the invitation via the VTA credential vault (#2)#130

Merged
stormer78 merged 1 commit into
mainfrom
vic-vault
Jun 17, 2026
Merged

feat(join): store/load the invitation via the VTA credential vault (#2)#130
stormer78 merged 1 commit into
mainfrom
vic-vault

Conversation

@stormer78

Copy link
Copy Markdown
Contributor

Summary

Wires OpenVTC to the VTA credential vault so the holder's invitation credential (VIC) has a durable home in the VTA rather than living only in memory / a file.

At join time (run_join_sequence):

  • if a VIC is loaded (via --invitation <file> or paste), persist it — admin_vta.cred_vault_receive(vic);
  • if none is loaded, load one the VTA already holds — cred_vault_query({purpose: "invite"})cred_vault_get(id) → present it.

Both are best-effort: the join proceeds on the in-memory VIC regardless, so a VTA without the credential-vault surface (or without the vault capability on the session) degrades cleanly.

Uses the always-on admin VTA session already threaded into the join flow and the cred_vault_* methods shipped in vta-sdk 0.17 (verifiable-trust-infrastructure #524).

Remaining (this completes #2; #1b build-side still open)

The subject-linkage build side (#1b) — signing TAG‖vic_id‖presenter with the subject persona's key to join under a fresh DID — is still open. It's a privacy-niche path (the join-as-subject default, #1a, already auto-presents the invited persona) and needs cross-persona key access + a "present a fresh identity" choice. The VTC verify side + the OpenVTC sign-bytes/SubjectLinkage groundwork are already merged.

Tests

openvtc builds clean against tdk 0.8 / vta-sdk 0.17; fmt clean.

🤖 Generated with Claude Code

At join time the VTA credential vault is the durable home for the holder's VIC:
- if an invitation is loaded (file / paste), persist it via cred_vault_receive;
- if none is loaded, try loading one the VTA already holds for the holder
  (cred_vault_query{purpose: invite} → cred_vault_get) and present it.

Both are best-effort — the join proceeds on the in-memory VIC regardless, so a
VTA without the credential-vault surface (or vault capability) degrades cleanly.
Uses the always-on admin VTA session already threaded into run_join_sequence
and the cred_vault_* methods shipped in vta-sdk 0.17.

Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
@stormer78 stormer78 requested a review from a team as a code owner June 17, 2026 12:54
@stormer78 stormer78 merged commit 7791745 into main Jun 17, 2026
7 of 13 checks passed
@stormer78 stormer78 deleted the vic-vault branch June 17, 2026 12:55
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