Summary
The wallet's confirm/* messages do not match the published confirm/request/0.1 / confirm/response/0.1 schemas. Conform them (requires coordinated changes on the RP side).
Current (non-conformant) behaviour
packages/core/src/inbound/confirm.ts:
- Request parsed as a flat DIDComm
body { challenge, action, rpName? } (requires action).
- Response emitted as a flat DIDComm
body { approved, challenge }.
Published spec (dtgwg-trust-tasks-tf/specs/confirm/{request,response}/0.1)
- A framework Trust-Task document (
type + payload), not a flat DIDComm body.
confirm/request payload: { subject, challenge, reason, ... }.
confirm/response payload: { subject, challenge, decision: "approved"|"denied" } plus a Data Integrity proof — the proof is what the relying party verifies.
So today the wallet uses action/approved where the spec uses reason/decision, omits subject, packs fields flat instead of under payload, and attaches no proof (it relies on the authcrypt envelope for authentication).
Why this is cross-repo
confirm/* is peer-to-peer RP↔wallet. Conforming the wallet alone would break the live flow unless the RP counterpart (OpenVTC/rp-sdk-js and/or the demo RP) is updated to the spec shape at the same time. There is no confirm/0.2.
What to do
- Decide whether to adopt the spec shape (
subject/decision/payload/DI-proof) or formally diverge.
- If adopting: update the wallet's
parseConfirmRequest / buildConfirmResponse and the RP verifier together; add the DI proof.
Acceptance
- Wallet ↔ RP confirm round-trip uses the published
confirm/{request,response}/0.1 document shape, or the divergence is documented as intentional.
Summary
The wallet's
confirm/*messages do not match the publishedconfirm/request/0.1/confirm/response/0.1schemas. Conform them (requires coordinated changes on the RP side).Current (non-conformant) behaviour
packages/core/src/inbound/confirm.ts:body{ challenge, action, rpName? }(requiresaction).body{ approved, challenge }.Published spec (
dtgwg-trust-tasks-tf/specs/confirm/{request,response}/0.1)type+payload), not a flat DIDComm body.confirm/requestpayload:{ subject, challenge, reason, ... }.confirm/responsepayload:{ subject, challenge, decision: "approved"|"denied" }plus a Data Integrityproof— the proof is what the relying party verifies.So today the wallet uses
action/approvedwhere the spec usesreason/decision, omitssubject, packs fields flat instead of underpayload, and attaches no proof (it relies on the authcrypt envelope for authentication).Why this is cross-repo
confirm/*is peer-to-peer RP↔wallet. Conforming the wallet alone would break the live flow unless the RP counterpart (OpenVTC/rp-sdk-jsand/or the demo RP) is updated to the spec shape at the same time. There is noconfirm/0.2.What to do
subject/decision/payload/DI-proof) or formally diverge.parseConfirmRequest/buildConfirmResponseand the RP verifier together; add the DI proof.Acceptance
confirm/{request,response}/0.1document shape, or the divergence is documented as intentional.