feat(vta-service): mint the step-up approve-request as 0.2; inbound stays bilingual - #873
Merged
Conversation
…tays bilingual The deferred follow-up to #870: mint_pending_step_up now emits auth/step-up/approve-request/0.2 — the /0.2 type URI and the camelCase acceptableEvidence spelling (didSigned), which is the only payload difference between the minors. Signing is unchanged (eddsa-jcs-2022, assertionMethod, {vta_did}#key-0, proof last over the complete document including payload.ext, so the Cierge authorizationContext carriage stays covered by the proof). The DIDComm push type follows the document. Receivers moved first: vta-mobile-core (#871) and the browser plugin (OpenVTC/vta-browser-plugin#103) accept both request minors, and the webvh control plane (affinidi/affinidi-webvh-service#147) accepts both approve-response minors. Inbound stays bilingual for the transition window: - the approve-response dispatcher keeps accepting 0.1 and 0.2; - the DIDComm router's canonical step-up-approve registration now also accepts the /0.2 request URI beside /0.1 and the legacy vta/step-up/*/1.0, echoing the caller's own minor in the response. The stored PendingStepUp.acceptable_evidence keeps the internal kebab canonical form (state, not wire), so in-flight 0.13.17 pending step-ups remain consumable across the deploy. New integration test: the gate's minted 0.2 document verifies end-to-end (di_proof; issuer == proof VM DID) and a 0.1-flavored signed approve-response completes the 0.2-minted step-up, acking in the approver's 0.1 family. vta-service 0.13.17 -> 0.13.18. Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The deferred follow-up to #870: the minted step-up approve-request moves from
auth/step-up/approve-request/0.1to/0.2. Receivers migrated first — vta-mobile-core (#871) and the browser plugin (OpenVTC/vta-browser-plugin#103) accept both request minors, and the webvh control plane accepts both approve-response minors (part of the signed-request-legs push, affinidi/affinidi-webvh-service#147) — so this is the producer-side cutover.0.1 → 0.2 shape delta (from the dtgwg specs)
The approve-request payload is otherwise identical between minors — same required members (
subject,sessionId,challenge,reason), same optional hints (targetAcr,ttl,webauthn,ext), same ttl semantics. What changes:/0.1→/0.2payload.acceptableEvidenceenum spelling:did-signed→didSigned(webauthnunchanged) — the only payload-value differencesubject_unknown→subjectUnknown, …) — informational; the request leg emits noneext$ref moves to the 0.2 framework schema (no wire effect)(The approve-response side's 0.2 additionally renames
evidence.kinddid-signed→didSignedand adds the delegated-approverapproverUnauthorizedsemantics — both already handled by #870's dual-accept handler.)What this PR does
mint_pending_step_upemits the/0.2type URI +didSignedwire spelling. Signing is exactly as feat(vta-service): sign the step-up approve-request (spec: proof REQUIRED) #870 built it:eddsa-jcs-2022,assertionMethod,{vta_did}#key-0, proof last over the complete document includingpayload.ext— the CiergeauthorizationContextcarriage is unchanged and stays inside the signed surface (existing test kept and passing)./0.2./0.2request URI beside/0.1and the legacyvta/step-up/*/1.0, echoing the caller's own minor in the response type (the control plane accepts both response minors).PendingStepUp.acceptable_evidencekeeps the internal kebab canonical form — it is state, not wire — so in-flight 0.13.17 pending step-ups stay consumable across the deploy.Tests
v0_2_minted_request_completes_with_a_0_1_flavored_response): the real gate mints the 0.2 request, its VTA proof verifies end-to-end viadi_proof(issuer == proof VM DID), and a 0.1-flavored signed approve-response (kebabdid-signedevidence) completes the 0.2-minted step-up, acking in the approver's 0.1 family.cargo test -p vta-service --no-fail-fast: all green.tests/e2e(embedded mediator): 162 passed, 11 ignored (need the webvh-host fixture). fmt + clippy clean.Release
vta-service 0.13.17 → 0.13.18, root CHANGELOG entry under Unreleased.
Refs #870, #871, affinidi/affinidi-webvh-service#147, OpenVTC/vta-browser-plugin#103.