diff --git a/protob/messages.proto b/protob/messages.proto index 2d7afca17..104885bac 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -72,6 +72,9 @@ enum MessageType { MessageType_GetECDHSessionKey = 61 [(wire_in) = true]; MessageType_ECDHSessionKey = 62 [(wire_out) = true]; MessageType_SetU2FCounter = 63 [(wire_in) = true]; + MessageType_EthereumSignMessage = 64 [(wire_in) = true]; + MessageType_EthereumVerifyMessage = 65 [(wire_in) = true]; + MessageType_EthereumMessageSignature = 66 [(wire_out) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -659,6 +662,40 @@ message EthereumTxAck { optional bytes data_chunk = 1; // Bytes from transaction payload (<= 1024 bytes) } +//////////////////////////////////////// +// Ethereum: Message signing messages // +//////////////////////////////////////// + +/** + * Request: Ask device to sign message + * @next EthereumMessageSignature + * @next Failure + */ +message EthereumSignMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + required bytes message = 2; // message to be signed +} + +/** + * Request: Ask device to verify message + * @next Success + * @next Failure + */ +message EthereumVerifyMessage { + optional bytes address = 1; // address to verify + optional bytes signature = 2; // signature to verify + optional bytes message = 3; // message to verify +} + +/** + * Response: Signed message + * @prev EthereumSignMessage + */ +message EthereumMessageSignature { + optional bytes address = 1; // address used to sign the message + optional bytes signature = 2; // signature of the message +} + /////////////////////// // Identity messages // ///////////////////////