You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(extension): TSP transport for trust tasks (TSP > DIDComm > REST) (#79)
Route trust tasks over TSP (Trust Spanning Protocol) when a VTA advertises
a `TSPTransport` service, ahead of DIDComm and REST. TSP is sender-
authenticated by its envelope (like DIDComm authcrypt), so it carries the
same canonical Trust-Task envelope with no bearer.
Transport: TSP rides the SAME warm mediator socket as DIDComm — the
mediator multiplexes both (binary 0xF8 -> TSP, text -> DIDComm), so there
is no second socket and no one-socket-per-DID conflict with the wallet's
DIDComm inbox. `MediatorSessionTspTransport` sends the packed envelope as
a binary frame and awaits the sealed reply (FIFO; a VtaSession drives one
request at a time). Reply frames arrive back on the same session via the
new `onTspFrame` demux (requires @openvtc/vti-didcomm-js ^0.6.0).
- pnm-core: MediatorConnection gains `sendBinary` + `awaitTspFrame`;
`MediatorSessionTspTransport`; `resolveVtaServices` detects the
type-based `TSPTransport` service; `resolveVtaTspEndpoint` +
`tspHolderIdentityFromSecret` (X25519 derived from the Ed25519 root,
matching the holder did:peer keyAgreement key).
- offscreen `getVtaSession`: builds the TSP channel from the pooled warm
session, first in the priority chain.
- Error phasing: a send failure (pre-send, nothing reached the VTA) is
`e.client.unsupported` -> safe fallback to DIDComm; a reply timeout
(post-send, a mutation may have applied) is `e.client.network` -> hard
fail, no retry.
- `preferTsp` setting (default ON; options-page toggle) to pin a VTA to
DIDComm/REST if a mediator's TSP delivery misbehaves.
- Popup transports label shows TSP (backfilled onto existing connections
by the transport refresh — no re-onboard).
Live-validated against a TSP-enabled VTA + mediator: vault list, proxy-
login (sealed session blob), add (mutation + sealed secret), and delete
all round-trip over TSP, with the DIDComm inbox coexisting on the one
socket. Adds `MediatorSessionTspTransport` unit tests.
Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
0 commit comments