Get desktop application:
View/edit binary Protocol Buffers messages
* Only for internal use. @embed
Host's static public key used in the handshake
Credential metadata
* Response: Host responds to Trezor's Code Entry commitment with a challenge. @next ThpCodeEntryCpaceTrezor
Host's random 32-byte challenge
* Response: If Code Entry is an allowed pairing option, Trezor responds with a commitment. @next ThpCodeEntryChallenge
SHA-256 of Trezor's random 32-byte secret
* Request: User selected Code Entry option in Host. Host starts CPACE protocol with Trezor. @next ThpCodeEntrySecret
Host's ephemeral CPace public key
SHA-256 of shared secret
* Response: Trezor continues with the CPACE protocol. @next ThpCodeEntryCpaceHostTag
Trezor's ephemeral CPace public key
* Response: Trezor finishes the CPACE protocol. @next ThpCredentialRequest @next ThpEndRequest
Trezor's secret
* Request: Ask device for a new session with given passphrase. @start @next Success
User wants to enter passphrase on the device
If True, Cardano keys will be derived. Ignored with BTC-only
* Only for internal use. @embed
Used in: ,
Human-readable host name (browser name for web apps)
Whether host is allowed to autoconnect without user confirmation
Human-readable application name
* Request: Host requests issuance of a new pairing credential. @start @next ThpCredentialResponse
Host's static public key identifying the credential.
Whether host wants to autoconnect without user confirmation
Host's previous credential
* Response: Trezor issues a new pairing credential. @next ThpCredentialRequest @next ThpEndRequest
Trezor's static public key used in the handshake.
The pairing credential issued by the Trezor to the host.
* @embed
Internal model name, e.g. "T2B1".
Encodes the device properties such as color.
The major version of the communication protocol
used by the firmware.
The minor version of the communication protocol
used by the firmware.
Pairing methods supported by the Trezor.
* Request: Host requests transition to the encrypted traffic phase. @start @next ThpEndResponse
(message has no fields)
* Response: Trezor approves transition to the encrypted traffic phase @end
(message has no fields)
* @embed
Host's pairing credential
* Mapping between Trezor wire identifier (uint) and a Thp protobuf message
* Request: User selected Unidirectional NFC pairing option. Host sends an Unidirectional NFC Tag. @next ThpNfcTagTrezor
Host's tag
* Response: Trezor sends the Unidirectioal NFC secret. @next ThpCredentialRequest @next ThpEndRequest
Trezor's tag
* Recent THP paired hosts. Only for internal use. @embed
* Only for internal use. @embed
Used in:
6-byte MAC address
Human-readable host name (≤32 bytes)
Human-readable application name (≤32 bytes)
* Only for internal use. @embed
Credential metadata
Message authentication code generated by the Trezor
* Numeric identifiers of pairing methods. @embed
Used in: ,
Trust without MITM protection.
User rewrites code displayed on Trezor into the host application.
User scans QR-code displayed on Trezor into the host application.
Trezor and host application exchange authentication secrets via NFC.
* Response: Pairing is ready for user input / OOB communication. @next ThpCodeEntryCpace @next ThpQrCodeTag @next ThpNfcTagHost
(message has no fields)
* Request: Start pairing process. @start @next ThpPairingRequestApproved
Human-readable host name (browser name for web apps)
Human-readable application name
* Response: Host is allowed to start pairing process. @start @next ThpSelectMethod
(message has no fields)
* Response: Trezor sends the QR secret. @next ThpCredentialRequest @next ThpEndRequest
Trezor's secret
* Request: User selected QR Code pairing option. Host sends a QR Tag. @next ThpQrCodeSecret
SHA-256 of shared secret
* Request: Start pairing using the method selected. @start @next ThpPairingPreparationsFinished @next ThpCodeEntryCommitment