syntax = "proto2"; package hw.trezor.messages.bootloader; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageBootloader"; import "messages.proto"; /** * Request: Ask device to erase its firmware (so it can be replaced via FirmwareUpload) * @start * @next FirmwareRequest */ message FirmwareErase { optional uint32 length = 1; // length of new firmware } /** * Response: Ask for firmware chunk * @next FirmwareUpload */ message FirmwareRequest { optional uint32 offset = 1; // offset of requested firmware chunk optional uint32 length = 2; // length of requested firmware chunk } /** * Request: Send firmware in binary form to the device * @next FirmwareRequest * @next Success * @next Failure */ message FirmwareUpload { required bytes payload = 1; // firmware to be loaded into device optional bytes hash = 2; // hash of the payload } /** * Request: Perform a device self-test * @next Success * @next Failure */ message SelfTest { optional bytes payload = 1; // payload to be used in self-test }