syntax = "proto2"; package hw.trezor.messages.common; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageCommon"; /** * Response: Success of the previous request * @end */ message Success { optional string message = 1; // human readable description of action or request-specific payload } /** * Response: Failure of the previous request * @end */ message Failure { optional FailureType code = 1; // computer-readable definition of the error state optional string message = 2; // human-readable message of the error state enum FailureType { Failure_UnexpectedMessage = 1; Failure_ButtonExpected = 2; Failure_DataError = 3; Failure_ActionCancelled = 4; Failure_PinExpected = 5; Failure_PinCancelled = 6; Failure_PinInvalid = 7; Failure_InvalidSignature = 8; Failure_ProcessError = 9; Failure_NotEnoughFunds = 10; Failure_NotInitialized = 11; Failure_PinMismatch = 12; Failure_WipeCodeMismatch = 13; Failure_FirmwareError = 99; } } /** * Response: Device is waiting for HW button press. * @auxstart * @next ButtonAck */ message ButtonRequest { optional ButtonRequestType code = 1; /** * Type of button request */ enum ButtonRequestType { ButtonRequest_Other = 1; ButtonRequest_FeeOverThreshold = 2; ButtonRequest_ConfirmOutput = 3; ButtonRequest_ResetDevice = 4; ButtonRequest_ConfirmWord = 5; ButtonRequest_WipeDevice = 6; ButtonRequest_ProtectCall = 7; ButtonRequest_SignTx = 8; ButtonRequest_FirmwareCheck = 9; ButtonRequest_Address = 10; ButtonRequest_PublicKey = 11; ButtonRequest_MnemonicWordCount = 12; ButtonRequest_MnemonicInput = 13; ButtonRequest_PassphraseType = 14; ButtonRequest_UnknownDerivationPath = 15; ButtonRequest_RecoveryHomepage = 16; ButtonRequest_Success = 17; ButtonRequest_Warning = 18; } } /** * Request: Computer agrees to wait for HW button press * @auxend */ message ButtonAck { } /** * Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme * @auxstart * @next PinMatrixAck */ message PinMatrixRequest { optional PinMatrixRequestType type = 1; /** * Type of PIN request */ enum PinMatrixRequestType { PinMatrixRequestType_Current = 1; PinMatrixRequestType_NewFirst = 2; PinMatrixRequestType_NewSecond = 3; PinMatrixRequestType_WipeCodeFirst = 4; PinMatrixRequestType_WipeCodeSecond = 5; } } /** * Request: Computer responds with encoded PIN * @auxend */ message PinMatrixAck { required string pin = 1; // matrix encoded PIN entered by user } /** * Response: Device awaits encryption passphrase * @auxstart * @next PassphraseAck */ message PassphraseRequest { optional bool on_device = 1; // passphrase is being entered on the device } /** * Request: Send passphrase back * @next PassphraseStateRequest */ message PassphraseAck { optional string passphrase = 1; optional bytes state = 2; // expected device state } /** * Response: Device awaits passphrase state * @next PassphraseStateAck */ message PassphraseStateRequest { optional bytes state = 1; // actual device state } /** * Request: Send passphrase state back * @auxend */ message PassphraseStateAck { } /** * Structure representing BIP32 (hierarchical deterministic) node * Used for imports of private key into the device and exporting public key out of device * @embed */ message HDNodeType { required uint32 depth = 1; required uint32 fingerprint = 2; required uint32 child_num = 3; required bytes chain_code = 4; optional bytes private_key = 5; optional bytes public_key = 6; }