Table of Contents

Class SessionTranscriptBuilder

Namespace
Tessio.Verifier.Core.Mdoc
Assembly
Tessio.Verifier.Core.Mdoc.dll

Builds the ISO 18013-5 SessionTranscript for each transport this library supports. The device signature covers these bytes, binding the presentation to this verifier's request. An OpenID4VP redirect flow binds client_id, nonce, the response encryption key thumbprint and the response_uri; OpenID4VP over the Digital Credentials API binds the origin, nonce and thumbprint; ISO/IEC 18013-7 Annex C over the same API binds the origin and the EncryptionInfo bytes.

public static class SessionTranscriptBuilder
Inheritance
SessionTranscriptBuilder
Inherited Members

Methods

Build(string, string, byte[]?, string)

Builds the SessionTranscript for an OpenID4VP redirect-flow presentation.

public static byte[] Build(string clientId, string nonce, byte[]? encryptionKeyThumbprint, string responseUri)

Parameters

clientId string
nonce string
encryptionKeyThumbprint byte[]
responseUri string

Returns

byte[]

BuildDeviceAuthenticationBytes(byte[], string, byte[])

Builds DeviceAuthenticationBytes, the detached payload the device signature covers. Wallet simulators sign these; the verifier reconstructs them.

public static byte[] BuildDeviceAuthenticationBytes(byte[] sessionTranscript, string docType, byte[] encodedDeviceNameSpacesBytes)

Parameters

sessionTranscript byte[]
docType string
encodedDeviceNameSpacesBytes byte[]

Returns

byte[]

BuildForDcApi(string, string, byte[]?)

Builds the SessionTranscript for a presentation made over the W3C Digital Credentials API.

public static byte[] BuildForDcApi(string origin, string nonce, byte[]? encryptionKeyThumbprint)

Parameters

origin string

The request's Origin, WITHOUT the origin: prefix. The prefix belongs on the Client Identifier and not in here, and the two are easy to confuse because the audience of the presentation is the same value with the prefix on it.

nonce string

The nonce request parameter.

encryptionKeyThumbprint byte[]

The RFC 7638 thumbprint of the key the response is encrypted to, under response mode dc_api.jwt. Null under dc_api, which is cleartext.

Returns

byte[]

Remarks

MdocVerifier does not call this. A caller verifying a Digital Credentials API presentation takes the bytes from here and passes them via SessionTranscript, which the verifier checks the device signature over.

BuildForIso18013AnnexC(byte[], string)

Builds the SessionTranscript for a presentation over the W3C Digital Credentials API under ISO/IEC 18013-7 Annex C: the mdoc-native mechanism, distinct from OpenID4VP's DC API handover on BuildForDcApi(string, string, byte[]?). The handover digest commits to the exact EncryptionInfo bytes sent with the request and to the origin the browser reports.

public static byte[] BuildForIso18013AnnexC(byte[] encryptionInfo, string origin)

Parameters

encryptionInfo byte[]

The encoded EncryptionInfo, byte for byte as sent.

origin string

The request's Origin, without the origin: prefix.

Returns

byte[]

Remarks

The second element is null. Some implementations instead place the request's EncryptionParameters there, tag-24 wrapped, and derive the response's HPKE keys over that; a wallet reached over the Digital Credentials API was observed on 2026-08-27 using the form built here, for both the response encryption and the device signature.