diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..d22c9db --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "trezor-common"] + path = trezor-common + url = https://github.com/trezor/trezor-common.git diff --git a/build_pb.sh b/build_pb.sh new file mode 100755 index 0000000..53461d5 --- /dev/null +++ b/build_pb.sh @@ -0,0 +1,3 @@ +#!/bin/bash +cd ./trezor-common/protob +protoc --python_out=../../trezorlib/ -I/usr/include -I. -I. trezor.proto diff --git a/protob/build.sh b/protob/build.sh deleted file mode 100755 index e9d9bdf..0000000 --- a/protob/build.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -cd `dirname $0` - -protoc --python_out=../trezorlib/ -I/usr/include -I. trezor.proto diff --git a/protob/trezor.proto b/protob/trezor.proto deleted file mode 100644 index 72481cd..0000000 --- a/protob/trezor.proto +++ /dev/null @@ -1,401 +0,0 @@ -/* - Messages for TREZOR communication - - Author: Marek Palatinus - - Version: 0.5 -*/ - -import "google/protobuf/descriptor.proto"; - -extend google.protobuf.FieldOptions { - optional bool binary = 50001; // message field has binary payload -} - -extend google.protobuf.EnumValueOptions { - optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR - optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC - optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR - optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC -} - -/* - Mapping between Trezor wire identifier (int) and protobuf message -*/ -enum MessageType { - MessageType_Initialize = 0 [(wire_in) = true]; - MessageType_Ping = 1 [(wire_in) = true]; - MessageType_Success = 2 [(wire_out) = true]; - MessageType_Failure = 3 [(wire_out) = true]; - MessageType_ChangePin = 4 [(wire_in) = true]; - MessageType_WipeDevice = 5 [(wire_in) = true]; - MessageType_FirmwareErase = 6 [(wire_in) = true]; - MessageType_FirmwareUpload = 7 [(wire_in) = true]; - MessageType_GetEntropy = 9 [(wire_in) = true]; - MessageType_Entropy = 10 [(wire_out) = true]; - MessageType_GetMasterPublicKey = 11 [(wire_in) = true]; - MessageType_MasterPublicKey = 12 [(wire_out) = true]; - MessageType_LoadDevice = 13 [(wire_in) = true]; - MessageType_ResetDevice = 14 [(wire_in) = true]; - MessageType_SignTx = 15 [(wire_in) = true]; - MessageType_SimpleSignTx = 16 [(wire_in) = true]; - MessageType_Features = 17 [(wire_out) = true]; - MessageType_PinMatrixRequest = 18 [(wire_out) = true]; - MessageType_PinMatrixAck = 19 [(wire_in) = true]; - MessageType_PinMatrixCancel = 20 [(wire_in) = true]; - MessageType_TxRequest = 21 [(wire_out) = true]; - MessageType_TxInput = 23 [(wire_in) = true]; - MessageType_TxOutput = 24 [(wire_in) = true]; - MessageType_ApplySettings = 25 [(wire_in) = true]; - MessageType_ButtonRequest = 26 [(wire_out) = true]; - MessageType_ButtonAck = 27 [(wire_in) = true]; - MessageType_ButtonCancel = 28 [(wire_in) = true]; - MessageType_GetAddress = 29 [(wire_in) = true]; - MessageType_Address = 30 [(wire_out) = true]; - MessageType_SettingsType = 31; - MessageType_XprvType = 32; - MessageType_CoinType = 33; - MessageType_XpubType = 34; - MessageType_EntropyRequest = 35 [(wire_out) = true]; - MessageType_EntropyAck = 36 [(wire_in) = true]; - MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; - MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; - MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; - MessageType_DebugLinkStop = 103 [(wire_debug_in) = true]; -} - -// **************************************************************************** -// -// Definition of custom field types -// - -enum FailureType { - Failure_UnexpectedMessage = 1; - Failure_ButtonExpected = 2; - Failure_SyntaxError = 3; - Failure_ActionCancelled = 4; - Failure_PinExpected = 5; - Failure_PinCancelled = 6; - Failure_PinInvalid = 7; - Failure_FirmwareError = 99; -} - -// Specifies which script will be used for given transaction output. -enum ScriptType { - PAYTOADDRESS = 0; - PAYTOSCRIPTHASH = 1; -} - -// Specifies which kind of information is required by transaction signing process -enum RequestType { - TXINPUT = 0; - TXOUTPUT = 1; -} - -// Structure for BIP32-encoded node -// Used for imports into the device -message XprvType { - required uint32 version = 1; - required uint32 depth = 2; - required uint32 fingerprint = 3; - required uint32 child_num = 4; - required bytes chain_code = 5 [(binary) = true]; - required bytes private_key = 6 [(binary) = true]; -} - -// Structure returned by GetMasterPublicKey -message XpubType { - required uint32 version = 1; - required uint32 depth = 2; - required uint32 fingerprint = 3; - required uint32 child_num = 4; - required bytes chain_code = 5 [(binary) = true]; - required bytes public_key = 6 [(binary) = true]; -} - -message CoinType { - optional bytes coin_name = 1; - optional bytes coin_shortcut = 2; - optional uint32 address_type = 3; - optional uint64 maxfee_kb = 4; -} - -message SettingsType { - optional bytes language = 1; // Trezor uses 'english' as default - optional CoinType coin = 2; - optional bytes label = 3; // Human readable wallet name -} - -// **************************************************************************** -// -// Basic message -// - -// Reset device to default state and ask for device details -// -// Response: Features -message Initialize { -} - -// Response object for Initialize. -message Features { - optional bytes vendor = 1; // Name of the manufacturer, e.g. "bitcointrezor.com" - optional uint32 major_version = 2; // Major version of the device, e.g. 1 - optional uint32 minor_version = 3; // Minor version of the device, e.g. 0 - optional uint32 bugfix_version = 4; - optional bool bootloader_mode = 5; - optional SettingsType settings = 6; // User-level settings of the device - optional bytes device_id = 7 [(binary) = true]; // Device's unique identifier - optional bytes mpk_hash = 8 [(binary) = true]; // Hash of master public key (sha256(XpubType.public_key).digest()) - optional bool pin_protection = 9; // True if Trezor is covered by PIN -} - -// Overwrites only filled fields of the structure -message ApplySettings { - optional bytes language = 1; - optional bytes coin_shortcut = 2; - optional bytes label = 3; -} - -// Starts workflow for setting/changing the PIN -// Response: ButtonRequest, PinMatrixRequest -message ChangePin { - optional bool remove = 1; // Set True if want to remove PIN protection -} - -// Test if device is live, device will send back the message on success -// -// Response: None or Success -message Ping { - optional bytes message = 1; // Message will be sent back in Success message -} - -// Response object defining success of the previous request -message Success { - optional bytes message = 1; // May contain human readable description of the action or request-specific payload -} - -// Response object defining failure of the previous request -message Failure { - optional FailureType code = 1; // May contain computer-readable definition of the error state - optional bytes message = 2; // May contain human-readable message of the error state -} - -// Message can be sent by the *device* as a resopnse to any request. -// Device is waiting for HW button press. No action is required from computer -// Computer should respond with ButtonAck message or ButtonCancel to cancel -// the original request. -message ButtonRequest { -} - -// Computer agrees to wait for HW button press. -message ButtonAck { -} - -// Computer want to cancel current action (don't wait to HW button press) -message ButtonCancel { -} - -// Message can be sent by the *device* as a response to any request. -// Message asks computer to send back PinMatrixAck with the password encoded in pin matrix scheme. -// -// Response: PinMatrixAck, PinMatrixCancel -message PinMatrixRequest { - optional bytes message = 1; // Human readable message -} - -// Message is sent by the computer as a response to PinMatrixRequest previously sent by the device. -message PinMatrixAck { - required bytes pin = 1; // User must write down the password for accessing the device. -} - -// Message is sent as a response to PinMatrixRequest by the computer, asking the device to cancel -// pending action and reset to the default state. -message PinMatrixCancel { -} - -// Request a sample of random data generated by hardware RNG. May be used -// for tests of internal RNG. -// -// Response: PinMatrixRequest, Entropy, Failure -message GetEntropy { - required uint32 size = 1; // Size of randomly generated buffer -} - -// Response to GetEntropy request contains random data generated by internal HRNG. -message Entropy { - required bytes entropy = 1 [(binary) = true]; // Stream of generated bytes -} - -// Ask device for it's current master public key. This may be used for generating -// public keys on the computer independently to the device. API doesn't provide -// any other way how to get bitcoin addresses from the device. -// -// Response: MasterPublicKey, Failure -message GetMasterPublicKey { -} - -// Contains master public key derived from device's seed. -message MasterPublicKey { - required XpubType mpk = 1; // BIP32 node public key + chaincode -} - -message GetAddress { - repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master public key -} - -message Address { - required bytes address = 1; // Bitcoin address in base58 encoding corresponding to GetAddress(n) call -} - -// Request device to wipe all sensitive data and settings. -// Device will be turned to uninitialized state. -// -// Response: ButtonRequest -message WipeDevice { -} - -// Load seed and related internal settings from computer to the device. Existing seed is overwritten. -// -// Response: Success, ButtonRequest, PinMatrixRequest, Failure -message LoadDevice { - optional bytes seed = 1; // Seed encoded as a mnemonic (12 english words) - optional XprvType xprv = 2; - optional bytes pin = 3; // Set PIN protection for important actions -} - -// Request device to do full-reset, to generate new seed -// and ask user for new settings (PIN). -// Workflow is splitted into ResetDevice/EntropyRequest to be sure -// that entropy provided by device isn't calculated on base of computer provided -// entropy. -// -// -// Response: EntropyRequest, PinMatrixRequest, Failure -message ResetDevice { - optional bool display_random = 1; // If set, displays entropy generated by the device used - // for generating the seed *before* asking - // for additional entropy from computer -} - -// Asks for additional Entropy from host computer -message EntropyRequest { -} - -// Provide additional entropy for seed generation function. -message EntropyAck { - optional bytes entropy = 1 [(binary) = true]; // Recommended to provide 256 bytes of random data. -} - -// **************************************************************************** -// -// Messages related to transaction signing -// - -// Request the device to sign the transaction -// -// Response: TxRequest, PinMatrixRequest, Failure -message SignTx { - required uint32 outputs_count = 3; // Count of outputs of the transaction - required uint32 inputs_count = 5; // Count of inputs of the transaction -} - -// Request a simplified workflow of signing. -// This method doesn't support streaming, -// so there may be hardware limits -// in number of inputs and outputs. -// -// This simplified workflow should not be used -// in production, it is designed mainly for debug purposes. -// -// When everything is fine, Success.message contains -// serialized transaction. -// -// Response: Success, PinMatrixRequest, Failure -message SimpleSignTx { - repeated TxInput inputs = 1; - repeated TxOutput outputs = 2; -} - -// Sent by the device as a response for SignTx. Device asks for information for signing transaction. -// If request_index is set, device asks for TxInput/TxOutput message (depends on request_type) -// with details of index's input. -// If signed_index is set, 'signature' contains signed input of signed_index's input. -message TxRequest { - optional int32 request_index = 1; // If >=0, device expects TxInput/TxOutput message from the computer - optional RequestType request_type = 2; // Ask for TxInput or TxOutput? - optional int32 signed_index = 3; // If >=0, 'signature' contains signed input of this input - optional bytes signature = 4 [(binary) = true]; // If signed_index>=0, represent signature of the signed_index input - optional bytes serialized_tx = 5 [(binary) = true]; // Part of serialized and signed transaction -} - -// Transaction onput for SignTx workflow. It is response to TxRequest message sent by device. -// -// Response: TxRequest, Failure -message TxInput { - required uint32 index = 1; // Position of input in proposed transaction - repeated uint32 address_n = 2; // Parameter for address generation algorithm to derive the address from the master public key - required uint64 amount = 3; // Amount to spend in satoshis. The rest will be used for transaction fees - required bytes prev_hash = 4 [(binary) = true]; // Hash of previous transaction output to spend by this input - required uint32 prev_index = 5; // Index of previous output to spend - optional bytes script_sig = 6 [(binary) = true]; // Script signature -} - -// Transaction output for SignTx workflow. It is response to TxRequest message sent by the device. -message TxOutput { - required uint32 index = 1; // Position of output in proposed transaction - required bytes address = 2; // Target bitcoin address in base58 encoding - repeated uint32 address_n = 3; // Has higher priority than "address". If the output is to myself, specify parameter for address generation algorithm. - required uint64 amount = 4; // Amount to send in satoshis - required ScriptType script_type = 5; // Select output script type - repeated bytes script_args = 6 [(binary) = true]; // Provide additional parameters for the script (its script-depended) -} - -// **************************************************************************** -// -// Bootloader messages -// - -message FirmwareErase { -} - -message FirmwareUpload { - required bytes payload = 1 [(binary) = true]; // Firmware to flash into device -} - -// **************************************************************************** -// -// Debug* messages are used only on DebugLink interface (separated from USB HID) -// - -// Virtually "press" the button on the device. -// Message is available only on debugging connection and device must support "debug_link" feature. -// -// Response: Success -message DebugLinkDecision { - required bool yes_no = 1; // True for "confirm", False for "cancel" -} - -// When sent over debug link connection, computer asks for some internal information of the device. -// -// Response: DebugLinkState -message DebugLinkGetState { - optional bool layout = 1; // Request raw buffer of display - optional bool pin = 2; // Request current pin - optional bool matrix = 3; // Request current pin matrix - optional bool seed = 4; // Request current seed -// optional bool state = 5; -} - -// Response object reflecting device's current state. It can be received only over debug link connection. -message DebugLinkState { - optional bytes layout = 1 [(binary) = true]; // Raw buffer of display - optional bytes pin = 2; // Current PIN, blank if PIN is not set/enabled - optional bytes matrix = 3; // Current PIN matrix - optional bytes seed = 4; // Current seed (in mnemonic format) -// optional bytes state = 5 [(binary) = true]; -} - -// Ask device to shutdown/restart -message DebugLinkStop { -} diff --git a/trezor-common b/trezor-common new file mode 160000 index 0000000..fccebb7 --- /dev/null +++ b/trezor-common @@ -0,0 +1 @@ +Subproject commit fccebb724cc8446cb2040f5468a2e451463e38ab diff --git a/trezor-udev.rules b/trezor-udev.rules deleted file mode 100644 index 555565a..0000000 --- a/trezor-udev.rules +++ /dev/null @@ -1,8 +0,0 @@ -# TREZOR: The Hardware Bitcoin Wallet -# http://bitcointrezor.com/ - -# TREZOR -SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" - -# TREZOR Raspberry Pi Shield -SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" diff --git a/trezorlib/__init__.py b/trezorlib/__init__.py index a0c8359..c171386 100644 --- a/trezorlib/__init__.py +++ b/trezorlib/__init__.py @@ -1,6 +1,6 @@ try: import trezor_pb2 as proto except ImportError: - print "trezor_pb2.py not found. Please run /protobuf/build.sh to generate it!" + print "Source trezor_pb2.py not found. Make sure python-protobuf is installed and run build_pb.sh to generate it." import sys sys.exit() diff --git a/trezorlib/trezor_pb2.py b/trezorlib/trezor_pb2.py index 3bb15fc..50d2691 100644 --- a/trezorlib/trezor_pb2.py +++ b/trezorlib/trezor_pb2.py @@ -15,7 +15,7 @@ import google.protobuf.descriptor_pb2 DESCRIPTOR = _descriptor.FileDescriptor( name='trezor.proto', package='', - serialized_pb='\n\x0ctrezor.proto\x1a google/protobuf/descriptor.proto\"\x87\x01\n\x08XprvType\x12\x0f\n\x07version\x18\x01 \x02(\r\x12\r\n\x05\x64\x65pth\x18\x02 \x02(\r\x12\x13\n\x0b\x66ingerprint\x18\x03 \x02(\r\x12\x11\n\tchild_num\x18\x04 \x02(\r\x12\x18\n\nchain_code\x18\x05 \x02(\x0c\x42\x04\x88\xb5\x18\x01\x12\x19\n\x0bprivate_key\x18\x06 \x02(\x0c\x42\x04\x88\xb5\x18\x01\"\x86\x01\n\x08XpubType\x12\x0f\n\x07version\x18\x01 \x02(\r\x12\r\n\x05\x64\x65pth\x18\x02 \x02(\r\x12\x13\n\x0b\x66ingerprint\x18\x03 \x02(\r\x12\x11\n\tchild_num\x18\x04 \x02(\r\x12\x18\n\nchain_code\x18\x05 \x02(\x0c\x42\x04\x88\xb5\x18\x01\x12\x18\n\npublic_key\x18\x06 \x02(\x0c\x42\x04\x88\xb5\x18\x01\"]\n\x08\x43oinType\x12\x11\n\tcoin_name\x18\x01 \x01(\x0c\x12\x15\n\rcoin_shortcut\x18\x02 \x01(\x0c\x12\x14\n\x0c\x61\x64\x64ress_type\x18\x03 \x01(\r\x12\x11\n\tmaxfee_kb\x18\x04 \x01(\x04\"H\n\x0cSettingsType\x12\x10\n\x08language\x18\x01 \x01(\x0c\x12\x17\n\x04\x63oin\x18\x02 \x01(\x0b\x32\t.CoinType\x12\r\n\x05label\x18\x03 \x01(\x0c\"\x0c\n\nInitialize\"\xe3\x01\n\x08\x46\x65\x61tures\x12\x0e\n\x06vendor\x18\x01 \x01(\x0c\x12\x15\n\rmajor_version\x18\x02 \x01(\r\x12\x15\n\rminor_version\x18\x03 \x01(\r\x12\x16\n\x0e\x62ugfix_version\x18\x04 \x01(\r\x12\x17\n\x0f\x62ootloader_mode\x18\x05 \x01(\x08\x12\x1f\n\x08settings\x18\x06 \x01(\x0b\x32\r.SettingsType\x12\x17\n\tdevice_id\x18\x07 \x01(\x0c\x42\x04\x88\xb5\x18\x01\x12\x16\n\x08mpk_hash\x18\x08 \x01(\x0c\x42\x04\x88\xb5\x18\x01\x12\x16\n\x0epin_protection\x18\t \x01(\x08\"G\n\rApplySettings\x12\x10\n\x08language\x18\x01 \x01(\x0c\x12\x15\n\rcoin_shortcut\x18\x02 \x01(\x0c\x12\r\n\x05label\x18\x03 \x01(\x0c\"\x1b\n\tChangePin\x12\x0e\n\x06remove\x18\x01 \x01(\x08\"\x17\n\x04Ping\x12\x0f\n\x07message\x18\x01 \x01(\x0c\"\x1a\n\x07Success\x12\x0f\n\x07message\x18\x01 \x01(\x0c\"6\n\x07\x46\x61ilure\x12\x1a\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x0c.FailureType\x12\x0f\n\x07message\x18\x02 \x01(\x0c\"\x0f\n\rButtonRequest\"\x0b\n\tButtonAck\"\x0e\n\x0c\x42uttonCancel\"#\n\x10PinMatrixRequest\x12\x0f\n\x07message\x18\x01 \x01(\x0c\"\x1b\n\x0cPinMatrixAck\x12\x0b\n\x03pin\x18\x01 \x02(\x0c\"\x11\n\x0fPinMatrixCancel\"\x1a\n\nGetEntropy\x12\x0c\n\x04size\x18\x01 \x02(\r\" \n\x07\x45ntropy\x12\x15\n\x07\x65ntropy\x18\x01 \x02(\x0c\x42\x04\x88\xb5\x18\x01\"\x14\n\x12GetMasterPublicKey\")\n\x0fMasterPublicKey\x12\x16\n\x03mpk\x18\x01 \x02(\x0b\x32\t.XpubType\"\x1f\n\nGetAddress\x12\x11\n\taddress_n\x18\x01 \x03(\r\"\x1a\n\x07\x41\x64\x64ress\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x02(\x0c\"\x0c\n\nWipeDevice\"@\n\nLoadDevice\x12\x0c\n\x04seed\x18\x01 \x01(\x0c\x12\x17\n\x04xprv\x18\x02 \x01(\x0b\x32\t.XprvType\x12\x0b\n\x03pin\x18\x03 \x01(\x0c\"%\n\x0bResetDevice\x12\x16\n\x0e\x64isplay_random\x18\x01 \x01(\x08\"\x10\n\x0e\x45ntropyRequest\"#\n\nEntropyAck\x12\x15\n\x07\x65ntropy\x18\x01 \x01(\x0c\x42\x04\x88\xb5\x18\x01\"5\n\x06SignTx\x12\x15\n\routputs_count\x18\x03 \x02(\r\x12\x14\n\x0cinputs_count\x18\x05 \x02(\r\"D\n\x0cSimpleSignTx\x12\x18\n\x06inputs\x18\x01 \x03(\x0b\x32\x08.TxInput\x12\x1a\n\x07outputs\x18\x02 \x03(\x0b\x32\t.TxOutput\"\x92\x01\n\tTxRequest\x12\x15\n\rrequest_index\x18\x01 \x01(\x05\x12\"\n\x0crequest_type\x18\x02 \x01(\x0e\x32\x0c.RequestType\x12\x14\n\x0csigned_index\x18\x03 \x01(\x05\x12\x17\n\tsignature\x18\x04 \x01(\x0c\x42\x04\x88\xb5\x18\x01\x12\x1b\n\rserialized_tx\x18\x05 \x01(\x0c\x42\x04\x88\xb5\x18\x01\"\x82\x01\n\x07TxInput\x12\r\n\x05index\x18\x01 \x02(\r\x12\x11\n\taddress_n\x18\x02 \x03(\r\x12\x0e\n\x06\x61mount\x18\x03 \x02(\x04\x12\x17\n\tprev_hash\x18\x04 \x02(\x0c\x42\x04\x88\xb5\x18\x01\x12\x12\n\nprev_index\x18\x05 \x02(\r\x12\x18\n\nscript_sig\x18\x06 \x01(\x0c\x42\x04\x88\xb5\x18\x01\"\x8a\x01\n\x08TxOutput\x12\r\n\x05index\x18\x01 \x02(\r\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x02(\x0c\x12\x11\n\taddress_n\x18\x03 \x03(\r\x12\x0e\n\x06\x61mount\x18\x04 \x02(\x04\x12 \n\x0bscript_type\x18\x05 \x02(\x0e\x32\x0b.ScriptType\x12\x19\n\x0bscript_args\x18\x06 \x03(\x0c\x42\x04\x88\xb5\x18\x01\"\x0f\n\rFirmwareErase\"\'\n\x0e\x46irmwareUpload\x12\x15\n\x07payload\x18\x01 \x02(\x0c\x42\x04\x88\xb5\x18\x01\"#\n\x11\x44\x65\x62ugLinkDecision\x12\x0e\n\x06yes_no\x18\x01 \x02(\x08\"N\n\x11\x44\x65\x62ugLinkGetState\x12\x0e\n\x06layout\x18\x01 \x01(\x08\x12\x0b\n\x03pin\x18\x02 \x01(\x08\x12\x0e\n\x06matrix\x18\x03 \x01(\x08\x12\x0c\n\x04seed\x18\x04 \x01(\x08\"Q\n\x0e\x44\x65\x62ugLinkState\x12\x14\n\x06layout\x18\x01 \x01(\x0c\x42\x04\x88\xb5\x18\x01\x12\x0b\n\x03pin\x18\x02 \x01(\x0c\x12\x0e\n\x06matrix\x18\x03 \x01(\x0c\x12\x0c\n\x04seed\x18\x04 \x01(\x0c\"\x0f\n\rDebugLinkStop*\xc4\n\n\x0bMessageType\x12 \n\x16MessageType_Initialize\x10\x00\x1a\x04\x90\xb5\x18\x01\x12\x1a\n\x10MessageType_Ping\x10\x01\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Success\x10\x02\x1a\x04\x98\xb5\x18\x01\x12\x1d\n\x13MessageType_Failure\x10\x03\x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_ChangePin\x10\x04\x1a\x04\x90\xb5\x18\x01\x12 \n\x16MessageType_WipeDevice\x10\x05\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_FirmwareErase\x10\x06\x1a\x04\x90\xb5\x18\x01\x12$\n\x1aMessageType_FirmwareUpload\x10\x07\x1a\x04\x90\xb5\x18\x01\x12 \n\x16MessageType_GetEntropy\x10\t\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Entropy\x10\n\x1a\x04\x98\xb5\x18\x01\x12(\n\x1eMessageType_GetMasterPublicKey\x10\x0b\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessageType_MasterPublicKey\x10\x0c\x1a\x04\x98\xb5\x18\x01\x12 \n\x16MessageType_LoadDevice\x10\r\x1a\x04\x90\xb5\x18\x01\x12!\n\x17MessageType_ResetDevice\x10\x0e\x1a\x04\x90\xb5\x18\x01\x12\x1c\n\x12MessageType_SignTx\x10\x0f\x1a\x04\x90\xb5\x18\x01\x12\"\n\x18MessageType_SimpleSignTx\x10\x10\x1a\x04\x90\xb5\x18\x01\x12\x1e\n\x14MessageType_Features\x10\x11\x1a\x04\x98\xb5\x18\x01\x12&\n\x1cMessageType_PinMatrixRequest\x10\x12\x1a\x04\x98\xb5\x18\x01\x12\"\n\x18MessageType_PinMatrixAck\x10\x13\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessageType_PinMatrixCancel\x10\x14\x1a\x04\x90\xb5\x18\x01\x12\x1f\n\x15MessageType_TxRequest\x10\x15\x1a\x04\x98\xb5\x18\x01\x12\x1d\n\x13MessageType_TxInput\x10\x17\x1a\x04\x90\xb5\x18\x01\x12\x1e\n\x14MessageType_TxOutput\x10\x18\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_ApplySettings\x10\x19\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_ButtonRequest\x10\x1a\x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_ButtonAck\x10\x1b\x1a\x04\x90\xb5\x18\x01\x12\"\n\x18MessageType_ButtonCancel\x10\x1c\x1a\x04\x90\xb5\x18\x01\x12 \n\x16MessageType_GetAddress\x10\x1d\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Address\x10\x1e\x1a\x04\x98\xb5\x18\x01\x12\x1c\n\x18MessageType_SettingsType\x10\x1f\x12\x18\n\x14MessageType_XprvType\x10 \x12\x18\n\x14MessageType_CoinType\x10!\x12\x18\n\x14MessageType_XpubType\x10\"\x12$\n\x1aMessageType_EntropyRequest\x10#\x1a\x04\x98\xb5\x18\x01\x12 \n\x16MessageType_EntropyAck\x10$\x1a\x04\x90\xb5\x18\x01\x12\'\n\x1dMessageType_DebugLinkDecision\x10\x64\x1a\x04\xa0\xb5\x18\x01\x12\'\n\x1dMessageType_DebugLinkGetState\x10\x65\x1a\x04\xa0\xb5\x18\x01\x12$\n\x1aMessageType_DebugLinkState\x10\x66\x1a\x04\xa8\xb5\x18\x01\x12#\n\x19MessageType_DebugLinkStop\x10g\x1a\x04\xa0\xb5\x18\x01*\xe4\x01\n\x0b\x46\x61ilureType\x12\x1d\n\x19\x46\x61ilure_UnexpectedMessage\x10\x01\x12\x1a\n\x16\x46\x61ilure_ButtonExpected\x10\x02\x12\x17\n\x13\x46\x61ilure_SyntaxError\x10\x03\x12\x1b\n\x17\x46\x61ilure_ActionCancelled\x10\x04\x12\x17\n\x13\x46\x61ilure_PinExpected\x10\x05\x12\x18\n\x14\x46\x61ilure_PinCancelled\x10\x06\x12\x16\n\x12\x46\x61ilure_PinInvalid\x10\x07\x12\x19\n\x15\x46\x61ilure_FirmwareError\x10\x63*3\n\nScriptType\x12\x10\n\x0cPAYTOADDRESS\x10\x00\x12\x13\n\x0fPAYTOSCRIPTHASH\x10\x01*(\n\x0bRequestType\x12\x0b\n\x07TXINPUT\x10\x00\x12\x0c\n\x08TXOUTPUT\x10\x01:/\n\x06\x62inary\x12\x1d.google.protobuf.FieldOptions\x18\xd1\x86\x03 \x01(\x08:4\n\x07wire_in\x12!.google.protobuf.EnumValueOptions\x18\xd2\x86\x03 \x01(\x08:5\n\x08wire_out\x12!.google.protobuf.EnumValueOptions\x18\xd3\x86\x03 \x01(\x08::\n\rwire_debug_in\x12!.google.protobuf.EnumValueOptions\x18\xd4\x86\x03 \x01(\x08:;\n\x0ewire_debug_out\x12!.google.protobuf.EnumValueOptions\x18\xd5\x86\x03 \x01(\x08') + serialized_pb='\n\x0ctrezor.proto\x1a google/protobuf/descriptor.proto\"\xa3\x01\n\nHDNodeType\x12\x0f\n\x07version\x18\x01 \x02(\r\x12\r\n\x05\x64\x65pth\x18\x02 \x02(\r\x12\x13\n\x0b\x66ingerprint\x18\x03 \x02(\r\x12\x11\n\tchild_num\x18\x04 \x02(\r\x12\x18\n\nchain_code\x18\x05 \x02(\x0c\x42\x04\x88\xb5\x18\x01\x12\x19\n\x0bprivate_key\x18\x06 \x01(\x0c\x42\x04\x88\xb5\x18\x01\x12\x18\n\npublic_key\x18\x07 \x01(\x0c\x42\x04\x88\xb5\x18\x01\"]\n\x08\x43oinType\x12\x11\n\tcoin_name\x18\x01 \x01(\x0c\x12\x15\n\rcoin_shortcut\x18\x02 \x01(\x0c\x12\x14\n\x0c\x61\x64\x64ress_type\x18\x03 \x01(\r\x12\x11\n\tmaxfee_kb\x18\x04 \x01(\x04\"H\n\x0cSettingsType\x12\x10\n\x08language\x18\x01 \x01(\x0c\x12\x17\n\x04\x63oin\x18\x02 \x01(\x0b\x32\t.CoinType\x12\r\n\x05label\x18\x03 \x01(\x0c\"\x0c\n\nInitialize\"\xe3\x01\n\x08\x46\x65\x61tures\x12\x0e\n\x06vendor\x18\x01 \x01(\x0c\x12\x15\n\rmajor_version\x18\x02 \x01(\r\x12\x15\n\rminor_version\x18\x03 \x01(\r\x12\x16\n\x0e\x62ugfix_version\x18\x04 \x01(\r\x12\x17\n\x0f\x62ootloader_mode\x18\x05 \x01(\x08\x12\x1f\n\x08settings\x18\x06 \x01(\x0b\x32\r.SettingsType\x12\x17\n\tdevice_id\x18\x07 \x01(\x0c\x42\x04\x88\xb5\x18\x01\x12\x16\n\x08mpk_hash\x18\x08 \x01(\x0c\x42\x04\x88\xb5\x18\x01\x12\x16\n\x0epin_protection\x18\t \x01(\x08\"G\n\rApplySettings\x12\x10\n\x08language\x18\x01 \x01(\x0c\x12\x15\n\rcoin_shortcut\x18\x02 \x01(\x0c\x12\r\n\x05label\x18\x03 \x01(\x0c\"\x1b\n\tChangePin\x12\x0e\n\x06remove\x18\x01 \x01(\x08\"\x17\n\x04Ping\x12\x0f\n\x07message\x18\x01 \x01(\x0c\"\x1a\n\x07Success\x12\x0f\n\x07message\x18\x01 \x01(\x0c\"6\n\x07\x46\x61ilure\x12\x1a\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x0c.FailureType\x12\x0f\n\x07message\x18\x02 \x01(\x0c\"\x0f\n\rButtonRequest\"\x0b\n\tButtonAck\"\x0e\n\x0c\x42uttonCancel\"#\n\x10PinMatrixRequest\x12\x0f\n\x07message\x18\x01 \x01(\x0c\"\x1b\n\x0cPinMatrixAck\x12\x0b\n\x03pin\x18\x01 \x02(\x0c\"\x11\n\x0fPinMatrixCancel\"\x1a\n\nGetEntropy\x12\x0c\n\x04size\x18\x01 \x02(\r\" \n\x07\x45ntropy\x12\x15\n\x07\x65ntropy\x18\x01 \x02(\x0c\x42\x04\x88\xb5\x18\x01\"!\n\x0cGetPublicKey\x12\x11\n\taddress_n\x18\x01 \x03(\r\"%\n\tPublicKey\x12\x18\n\x03mpk\x18\x01 \x02(\x0b\x32\x0b.HDNodeType\"\x1f\n\nGetAddress\x12\x11\n\taddress_n\x18\x01 \x03(\r\"\x1a\n\x07\x41\x64\x64ress\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x02(\x0c\"\x0c\n\nWipeDevice\"B\n\nLoadDevice\x12\x0c\n\x04seed\x18\x01 \x01(\x0c\x12\x19\n\x04node\x18\x02 \x01(\x0b\x32\x0b.HDNodeType\x12\x0b\n\x03pin\x18\x03 \x01(\x0c\"%\n\x0bResetDevice\x12\x16\n\x0e\x64isplay_random\x18\x01 \x01(\x08\"\x10\n\x0e\x45ntropyRequest\"#\n\nEntropyAck\x12\x15\n\x07\x65ntropy\x18\x01 \x01(\x0c\x42\x04\x88\xb5\x18\x01\"5\n\x06SignTx\x12\x15\n\routputs_count\x18\x03 \x02(\r\x12\x14\n\x0cinputs_count\x18\x05 \x02(\r\"D\n\x0cSimpleSignTx\x12\x18\n\x06inputs\x18\x01 \x03(\x0b\x32\x08.TxInput\x12\x1a\n\x07outputs\x18\x02 \x03(\x0b\x32\t.TxOutput\"\x92\x01\n\tTxRequest\x12\x15\n\rrequest_index\x18\x01 \x01(\x05\x12\"\n\x0crequest_type\x18\x02 \x01(\x0e\x32\x0c.RequestType\x12\x14\n\x0csigned_index\x18\x03 \x01(\x05\x12\x17\n\tsignature\x18\x04 \x01(\x0c\x42\x04\x88\xb5\x18\x01\x12\x1b\n\rserialized_tx\x18\x05 \x01(\x0c\x42\x04\x88\xb5\x18\x01\"\x81\x01\n\x07TxInput\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x17\n\tprev_hash\x18\x02 \x02(\x0c\x42\x04\x88\xb5\x18\x01\x12\x12\n\nprev_index\x18\x03 \x02(\r\x12\x18\n\nscript_sig\x18\x04 \x01(\x0c\x42\x04\x88\xb5\x18\x01\x12\x1c\n\x08sequence\x18\x05 \x01(\r:\n4294967295\"{\n\x08TxOutput\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x02(\x0c\x12\x11\n\taddress_n\x18\x02 \x03(\r\x12\x0e\n\x06\x61mount\x18\x03 \x02(\x04\x12 \n\x0bscript_type\x18\x04 \x02(\x0e\x32\x0b.ScriptType\x12\x19\n\x0bscript_args\x18\x05 \x03(\x0c\x42\x04\x88\xb5\x18\x01\"\xc0\x01\n\x0fTransactionType\x12\x12\n\x07version\x18\x01 \x01(\r:\x01\x31\x12\x18\n\x06inputs\x18\x02 \x03(\x0b\x32\x08.TxInput\x12-\n\x07outputs\x18\x03 \x03(\x0b\x32\x1c.TransactionType.TxOutputBin\x12\x14\n\tlock_time\x18\x04 \x01(\r:\x01\x30\x1a:\n\x0bTxOutputBin\x12\x0e\n\x06\x61mount\x18\x01 \x02(\x04\x12\x1b\n\rscript_pubkey\x18\x02 \x02(\x0c\x42\x04\x88\xb5\x18\x01\"\x0f\n\rFirmwareErase\"\'\n\x0e\x46irmwareUpload\x12\x15\n\x07payload\x18\x01 \x02(\x0c\x42\x04\x88\xb5\x18\x01\"#\n\x11\x44\x65\x62ugLinkDecision\x12\x0e\n\x06yes_no\x18\x01 \x02(\x08\"N\n\x11\x44\x65\x62ugLinkGetState\x12\x0e\n\x06layout\x18\x01 \x01(\x08\x12\x0b\n\x03pin\x18\x02 \x01(\x08\x12\x0e\n\x06matrix\x18\x03 \x01(\x08\x12\x0c\n\x04seed\x18\x04 \x01(\x08\"Q\n\x0e\x44\x65\x62ugLinkState\x12\x14\n\x06layout\x18\x01 \x01(\x0c\x42\x04\x88\xb5\x18\x01\x12\x0b\n\x03pin\x18\x02 \x01(\x0c\x12\x0e\n\x06matrix\x18\x03 \x01(\x0c\x12\x0c\n\x04seed\x18\x04 \x01(\x0c\"\x0f\n\rDebugLinkStop*\xc1\n\n\x0bMessageType\x12 \n\x16MessageType_Initialize\x10\x00\x1a\x04\x90\xb5\x18\x01\x12\x1a\n\x10MessageType_Ping\x10\x01\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Success\x10\x02\x1a\x04\x98\xb5\x18\x01\x12\x1d\n\x13MessageType_Failure\x10\x03\x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_ChangePin\x10\x04\x1a\x04\x90\xb5\x18\x01\x12 \n\x16MessageType_WipeDevice\x10\x05\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_FirmwareErase\x10\x06\x1a\x04\x90\xb5\x18\x01\x12$\n\x1aMessageType_FirmwareUpload\x10\x07\x1a\x04\x90\xb5\x18\x01\x12 \n\x16MessageType_GetEntropy\x10\t\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Entropy\x10\n\x1a\x04\x98\xb5\x18\x01\x12\"\n\x18MessageType_GetPublicKey\x10\x0b\x1a\x04\x90\xb5\x18\x01\x12\x1f\n\x15MessageType_PublicKey\x10\x0c\x1a\x04\x98\xb5\x18\x01\x12 \n\x16MessageType_LoadDevice\x10\r\x1a\x04\x90\xb5\x18\x01\x12!\n\x17MessageType_ResetDevice\x10\x0e\x1a\x04\x90\xb5\x18\x01\x12\x1c\n\x12MessageType_SignTx\x10\x0f\x1a\x04\x90\xb5\x18\x01\x12\"\n\x18MessageType_SimpleSignTx\x10\x10\x1a\x04\x90\xb5\x18\x01\x12\x1e\n\x14MessageType_Features\x10\x11\x1a\x04\x98\xb5\x18\x01\x12&\n\x1cMessageType_PinMatrixRequest\x10\x12\x1a\x04\x98\xb5\x18\x01\x12\"\n\x18MessageType_PinMatrixAck\x10\x13\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessageType_PinMatrixCancel\x10\x14\x1a\x04\x90\xb5\x18\x01\x12\x1f\n\x15MessageType_TxRequest\x10\x15\x1a\x04\x98\xb5\x18\x01\x12\x1d\n\x13MessageType_TxInput\x10\x17\x1a\x04\x90\xb5\x18\x01\x12\x1e\n\x14MessageType_TxOutput\x10\x18\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_ApplySettings\x10\x19\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_ButtonRequest\x10\x1a\x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_ButtonAck\x10\x1b\x1a\x04\x90\xb5\x18\x01\x12\"\n\x18MessageType_ButtonCancel\x10\x1c\x1a\x04\x90\xb5\x18\x01\x12 \n\x16MessageType_GetAddress\x10\x1d\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Address\x10\x1e\x1a\x04\x98\xb5\x18\x01\x12\x1c\n\x18MessageType_SettingsType\x10\x1f\x12\x1a\n\x16MessageType_HDNodeType\x10 \x12\x18\n\x14MessageType_CoinType\x10!\x12$\n\x1aMessageType_EntropyRequest\x10#\x1a\x04\x98\xb5\x18\x01\x12 \n\x16MessageType_EntropyAck\x10$\x1a\x04\x90\xb5\x18\x01\x12\x1f\n\x1bMessageType_TransactionType\x10%\x12\'\n\x1dMessageType_DebugLinkDecision\x10\x64\x1a\x04\xa0\xb5\x18\x01\x12\'\n\x1dMessageType_DebugLinkGetState\x10\x65\x1a\x04\xa0\xb5\x18\x01\x12$\n\x1aMessageType_DebugLinkState\x10\x66\x1a\x04\xa8\xb5\x18\x01\x12#\n\x19MessageType_DebugLinkStop\x10g\x1a\x04\xa0\xb5\x18\x01*\xe4\x01\n\x0b\x46\x61ilureType\x12\x1d\n\x19\x46\x61ilure_UnexpectedMessage\x10\x01\x12\x1a\n\x16\x46\x61ilure_ButtonExpected\x10\x02\x12\x17\n\x13\x46\x61ilure_SyntaxError\x10\x03\x12\x1b\n\x17\x46\x61ilure_ActionCancelled\x10\x04\x12\x17\n\x13\x46\x61ilure_PinExpected\x10\x05\x12\x18\n\x14\x46\x61ilure_PinCancelled\x10\x06\x12\x16\n\x12\x46\x61ilure_PinInvalid\x10\x07\x12\x19\n\x15\x46\x61ilure_FirmwareError\x10\x63*3\n\nScriptType\x12\x10\n\x0cPAYTOADDRESS\x10\x00\x12\x13\n\x0fPAYTOSCRIPTHASH\x10\x01*(\n\x0bRequestType\x12\x0b\n\x07TXINPUT\x10\x00\x12\x0c\n\x08TXOUTPUT\x10\x01:/\n\x06\x62inary\x12\x1d.google.protobuf.FieldOptions\x18\xd1\x86\x03 \x01(\x08:4\n\x07wire_in\x12!.google.protobuf.EnumValueOptions\x18\xd2\x86\x03 \x01(\x08:5\n\x08wire_out\x12!.google.protobuf.EnumValueOptions\x18\xd3\x86\x03 \x01(\x08::\n\rwire_debug_in\x12!.google.protobuf.EnumValueOptions\x18\xd4\x86\x03 \x01(\x08:;\n\x0ewire_debug_out\x12!.google.protobuf.EnumValueOptions\x18\xd5\x86\x03 \x01(\x08') _MESSAGETYPE = _descriptor.EnumDescriptor( name='MessageType', @@ -64,11 +64,11 @@ _MESSAGETYPE = _descriptor.EnumDescriptor( options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\230\265\030\001'), type=None), _descriptor.EnumValueDescriptor( - name='MessageType_GetMasterPublicKey', index=10, number=11, + name='MessageType_GetPublicKey', index=10, number=11, options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\220\265\030\001'), type=None), _descriptor.EnumValueDescriptor( - name='MessageType_MasterPublicKey', index=11, number=12, + name='MessageType_PublicKey', index=11, number=12, options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\230\265\030\001'), type=None), _descriptor.EnumValueDescriptor( @@ -144,7 +144,7 @@ _MESSAGETYPE = _descriptor.EnumDescriptor( options=None, type=None), _descriptor.EnumValueDescriptor( - name='MessageType_XprvType', index=30, number=32, + name='MessageType_HDNodeType', index=30, number=32, options=None, type=None), _descriptor.EnumValueDescriptor( @@ -152,17 +152,17 @@ _MESSAGETYPE = _descriptor.EnumDescriptor( options=None, type=None), _descriptor.EnumValueDescriptor( - name='MessageType_XpubType', index=32, number=34, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EntropyRequest', index=33, number=35, + name='MessageType_EntropyRequest', index=32, number=35, options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\230\265\030\001'), type=None), _descriptor.EnumValueDescriptor( - name='MessageType_EntropyAck', index=34, number=36, + name='MessageType_EntropyAck', index=33, number=36, options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\220\265\030\001'), type=None), + _descriptor.EnumValueDescriptor( + name='MessageType_TransactionType', index=34, number=37, + options=None, + type=None), _descriptor.EnumValueDescriptor( name='MessageType_DebugLinkDecision', index=35, number=100, options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\240\265\030\001'), @@ -182,8 +182,8 @@ _MESSAGETYPE = _descriptor.EnumDescriptor( ], containing_type=None, options=None, - serialized_start=2266, - serialized_end=3614, + serialized_start=2346, + serialized_end=3691, ) MessageType = enum_type_wrapper.EnumTypeWrapper(_MESSAGETYPE) @@ -228,8 +228,8 @@ _FAILURETYPE = _descriptor.EnumDescriptor( ], containing_type=None, options=None, - serialized_start=3617, - serialized_end=3845, + serialized_start=3694, + serialized_end=3922, ) FailureType = enum_type_wrapper.EnumTypeWrapper(_FAILURETYPE) @@ -250,8 +250,8 @@ _SCRIPTTYPE = _descriptor.EnumDescriptor( ], containing_type=None, options=None, - serialized_start=3847, - serialized_end=3898, + serialized_start=3924, + serialized_end=3975, ) ScriptType = enum_type_wrapper.EnumTypeWrapper(_SCRIPTTYPE) @@ -272,8 +272,8 @@ _REQUESTTYPE = _descriptor.EnumDescriptor( ], containing_type=None, options=None, - serialized_start=3900, - serialized_end=3940, + serialized_start=3977, + serialized_end=4017, ) RequestType = enum_type_wrapper.EnumTypeWrapper(_REQUESTTYPE) @@ -287,8 +287,8 @@ MessageType_FirmwareErase = 6 MessageType_FirmwareUpload = 7 MessageType_GetEntropy = 9 MessageType_Entropy = 10 -MessageType_GetMasterPublicKey = 11 -MessageType_MasterPublicKey = 12 +MessageType_GetPublicKey = 11 +MessageType_PublicKey = 12 MessageType_LoadDevice = 13 MessageType_ResetDevice = 14 MessageType_SignTx = 15 @@ -307,11 +307,11 @@ MessageType_ButtonCancel = 28 MessageType_GetAddress = 29 MessageType_Address = 30 MessageType_SettingsType = 31 -MessageType_XprvType = 32 +MessageType_HDNodeType = 32 MessageType_CoinType = 33 -MessageType_XpubType = 34 MessageType_EntropyRequest = 35 MessageType_EntropyAck = 36 +MessageType_TransactionType = 37 MessageType_DebugLinkDecision = 100 MessageType_DebugLinkGetState = 101 MessageType_DebugLinkState = 102 @@ -371,114 +371,58 @@ wire_debug_out = _descriptor.FieldDescriptor( options=None) -_XPRVTYPE = _descriptor.Descriptor( - name='XprvType', - full_name='XprvType', +_HDNODETYPE = _descriptor.Descriptor( + name='HDNodeType', + full_name='HDNodeType', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( - name='version', full_name='XprvType.version', index=0, + name='version', full_name='HDNodeType.version', index=0, number=1, type=13, cpp_type=3, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='depth', full_name='XprvType.depth', index=1, + name='depth', full_name='HDNodeType.depth', index=1, number=2, type=13, cpp_type=3, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='fingerprint', full_name='XprvType.fingerprint', index=2, + name='fingerprint', full_name='HDNodeType.fingerprint', index=2, number=3, type=13, cpp_type=3, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='child_num', full_name='XprvType.child_num', index=3, + name='child_num', full_name='HDNodeType.child_num', index=3, number=4, type=13, cpp_type=3, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='chain_code', full_name='XprvType.chain_code', index=4, + name='chain_code', full_name='HDNodeType.chain_code', index=4, number=5, type=12, cpp_type=9, label=2, has_default_value=False, default_value="", message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001')), _descriptor.FieldDescriptor( - name='private_key', full_name='XprvType.private_key', index=5, - number=6, type=12, cpp_type=9, label=2, - has_default_value=False, default_value="", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001')), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - extension_ranges=[], - serialized_start=51, - serialized_end=186, -) - - -_XPUBTYPE = _descriptor.Descriptor( - name='XpubType', - full_name='XpubType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='version', full_name='XpubType.version', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='depth', full_name='XpubType.depth', index=1, - number=2, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='fingerprint', full_name='XpubType.fingerprint', index=2, - number=3, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='child_num', full_name='XpubType.child_num', index=3, - number=4, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='chain_code', full_name='XpubType.chain_code', index=4, - number=5, type=12, cpp_type=9, label=2, + name='private_key', full_name='HDNodeType.private_key', index=5, + number=6, type=12, cpp_type=9, label=1, has_default_value=False, default_value="", message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001')), _descriptor.FieldDescriptor( - name='public_key', full_name='XpubType.public_key', index=5, - number=6, type=12, cpp_type=9, label=2, + name='public_key', full_name='HDNodeType.public_key', index=6, + number=7, type=12, cpp_type=9, label=1, has_default_value=False, default_value="", message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, @@ -492,8 +436,8 @@ _XPUBTYPE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=189, - serialized_end=323, + serialized_start=51, + serialized_end=214, ) @@ -541,8 +485,8 @@ _COINTYPE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=325, - serialized_end=418, + serialized_start=216, + serialized_end=309, ) @@ -583,8 +527,8 @@ _SETTINGSTYPE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=420, - serialized_end=492, + serialized_start=311, + serialized_end=383, ) @@ -604,8 +548,8 @@ _INITIALIZE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=494, - serialized_end=506, + serialized_start=385, + serialized_end=397, ) @@ -688,8 +632,8 @@ _FEATURES = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=509, - serialized_end=736, + serialized_start=400, + serialized_end=627, ) @@ -730,8 +674,8 @@ _APPLYSETTINGS = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=738, - serialized_end=809, + serialized_start=629, + serialized_end=700, ) @@ -758,8 +702,8 @@ _CHANGEPIN = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=811, - serialized_end=838, + serialized_start=702, + serialized_end=729, ) @@ -786,8 +730,8 @@ _PING = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=840, - serialized_end=863, + serialized_start=731, + serialized_end=754, ) @@ -814,8 +758,8 @@ _SUCCESS = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=865, - serialized_end=891, + serialized_start=756, + serialized_end=782, ) @@ -849,8 +793,8 @@ _FAILURE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=893, - serialized_end=947, + serialized_start=784, + serialized_end=838, ) @@ -870,8 +814,8 @@ _BUTTONREQUEST = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=949, - serialized_end=964, + serialized_start=840, + serialized_end=855, ) @@ -891,8 +835,8 @@ _BUTTONACK = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=966, - serialized_end=977, + serialized_start=857, + serialized_end=868, ) @@ -912,8 +856,8 @@ _BUTTONCANCEL = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=979, - serialized_end=993, + serialized_start=870, + serialized_end=884, ) @@ -940,8 +884,8 @@ _PINMATRIXREQUEST = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=995, - serialized_end=1030, + serialized_start=886, + serialized_end=921, ) @@ -968,8 +912,8 @@ _PINMATRIXACK = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1032, - serialized_end=1059, + serialized_start=923, + serialized_end=950, ) @@ -989,8 +933,8 @@ _PINMATRIXCANCEL = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1061, - serialized_end=1078, + serialized_start=952, + serialized_end=969, ) @@ -1017,8 +961,8 @@ _GETENTROPY = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1080, - serialized_end=1106, + serialized_start=971, + serialized_end=997, ) @@ -1045,18 +989,25 @@ _ENTROPY = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1108, - serialized_end=1140, + serialized_start=999, + serialized_end=1031, ) -_GETMASTERPUBLICKEY = _descriptor.Descriptor( - name='GetMasterPublicKey', - full_name='GetMasterPublicKey', +_GETPUBLICKEY = _descriptor.Descriptor( + name='GetPublicKey', + full_name='GetPublicKey', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ + _descriptor.FieldDescriptor( + name='address_n', full_name='GetPublicKey.address_n', index=0, + number=1, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), ], extensions=[ ], @@ -1066,20 +1017,20 @@ _GETMASTERPUBLICKEY = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1142, - serialized_end=1162, + serialized_start=1033, + serialized_end=1066, ) -_MASTERPUBLICKEY = _descriptor.Descriptor( - name='MasterPublicKey', - full_name='MasterPublicKey', +_PUBLICKEY = _descriptor.Descriptor( + name='PublicKey', + full_name='PublicKey', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( - name='mpk', full_name='MasterPublicKey.mpk', index=0, + name='mpk', full_name='PublicKey.mpk', index=0, number=1, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, @@ -1094,8 +1045,8 @@ _MASTERPUBLICKEY = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1164, - serialized_end=1205, + serialized_start=1068, + serialized_end=1105, ) @@ -1122,8 +1073,8 @@ _GETADDRESS = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1207, - serialized_end=1238, + serialized_start=1107, + serialized_end=1138, ) @@ -1150,8 +1101,8 @@ _ADDRESS = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1240, - serialized_end=1266, + serialized_start=1140, + serialized_end=1166, ) @@ -1171,8 +1122,8 @@ _WIPEDEVICE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1268, - serialized_end=1280, + serialized_start=1168, + serialized_end=1180, ) @@ -1191,7 +1142,7 @@ _LOADDEVICE = _descriptor.Descriptor( is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='xprv', full_name='LoadDevice.xprv', index=1, + name='node', full_name='LoadDevice.node', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, @@ -1213,8 +1164,8 @@ _LOADDEVICE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1282, - serialized_end=1346, + serialized_start=1182, + serialized_end=1248, ) @@ -1241,8 +1192,8 @@ _RESETDEVICE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1348, - serialized_end=1385, + serialized_start=1250, + serialized_end=1287, ) @@ -1262,8 +1213,8 @@ _ENTROPYREQUEST = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1387, - serialized_end=1403, + serialized_start=1289, + serialized_end=1305, ) @@ -1290,8 +1241,8 @@ _ENTROPYACK = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1405, - serialized_end=1440, + serialized_start=1307, + serialized_end=1342, ) @@ -1325,8 +1276,8 @@ _SIGNTX = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1442, - serialized_end=1495, + serialized_start=1344, + serialized_end=1397, ) @@ -1360,8 +1311,8 @@ _SIMPLESIGNTX = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1497, - serialized_end=1565, + serialized_start=1399, + serialized_end=1467, ) @@ -1416,8 +1367,8 @@ _TXREQUEST = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1568, - serialized_end=1714, + serialized_start=1470, + serialized_end=1616, ) @@ -1429,47 +1380,40 @@ _TXINPUT = _descriptor.Descriptor( containing_type=None, fields=[ _descriptor.FieldDescriptor( - name='index', full_name='TxInput.index', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, + name='address_n', full_name='TxInput.address_n', index=0, + number=1, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='address_n', full_name='TxInput.address_n', index=1, - number=2, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], + name='prev_hash', full_name='TxInput.prev_hash', index=1, + number=2, type=12, cpp_type=9, label=2, + has_default_value=False, default_value="", message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001')), _descriptor.FieldDescriptor( - name='amount', full_name='TxInput.amount', index=2, - number=3, type=4, cpp_type=4, label=2, + name='prev_index', full_name='TxInput.prev_index', index=2, + number=3, type=13, cpp_type=3, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='prev_hash', full_name='TxInput.prev_hash', index=3, - number=4, type=12, cpp_type=9, label=2, + name='script_sig', full_name='TxInput.script_sig', index=3, + number=4, type=12, cpp_type=9, label=1, has_default_value=False, default_value="", message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001')), _descriptor.FieldDescriptor( - name='prev_index', full_name='TxInput.prev_index', index=4, - number=5, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, + name='sequence', full_name='TxInput.sequence', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=True, default_value=4294967295, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), - _descriptor.FieldDescriptor( - name='script_sig', full_name='TxInput.script_sig', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value="", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001')), ], extensions=[ ], @@ -1479,8 +1423,8 @@ _TXINPUT = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1717, - serialized_end=1847, + serialized_start=1619, + serialized_end=1748, ) @@ -1492,44 +1436,72 @@ _TXOUTPUT = _descriptor.Descriptor( containing_type=None, fields=[ _descriptor.FieldDescriptor( - name='index', full_name='TxOutput.index', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, + name='address', full_name='TxOutput.address', index=0, + number=1, type=12, cpp_type=9, label=2, + has_default_value=False, default_value="", message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='address', full_name='TxOutput.address', index=1, - number=2, type=12, cpp_type=9, label=2, - has_default_value=False, default_value="", + name='address_n', full_name='TxOutput.address_n', index=1, + number=2, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='address_n', full_name='TxOutput.address_n', index=2, - number=3, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], + name='amount', full_name='TxOutput.amount', index=2, + number=3, type=4, cpp_type=4, label=2, + has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='amount', full_name='TxOutput.amount', index=3, - number=4, type=4, cpp_type=4, label=2, + name='script_type', full_name='TxOutput.script_type', index=3, + number=4, type=14, cpp_type=8, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='script_type', full_name='TxOutput.script_type', index=4, - number=5, type=14, cpp_type=8, label=2, + name='script_args', full_name='TxOutput.script_args', index=4, + number=5, type=12, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001')), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + serialized_start=1750, + serialized_end=1873, +) + + +_TRANSACTIONTYPE_TXOUTPUTBIN = _descriptor.Descriptor( + name='TxOutputBin', + full_name='TransactionType.TxOutputBin', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='amount', full_name='TransactionType.TxOutputBin.amount', index=0, + number=1, type=4, cpp_type=4, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( - name='script_args', full_name='TxOutput.script_args', index=5, - number=6, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], + name='script_pubkey', full_name='TransactionType.TxOutputBin.script_pubkey', index=1, + number=2, type=12, cpp_type=9, label=2, + has_default_value=False, default_value="", message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001')), @@ -1542,8 +1514,56 @@ _TXOUTPUT = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1850, - serialized_end=1988, + serialized_start=2010, + serialized_end=2068, +) + +_TRANSACTIONTYPE = _descriptor.Descriptor( + name='TransactionType', + full_name='TransactionType', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='version', full_name='TransactionType.version', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=True, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inputs', full_name='TransactionType.inputs', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='outputs', full_name='TransactionType.outputs', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='lock_time', full_name='TransactionType.lock_time', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_TRANSACTIONTYPE_TXOUTPUTBIN, ], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + serialized_start=1876, + serialized_end=2068, ) @@ -1563,8 +1583,8 @@ _FIRMWAREERASE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=1990, - serialized_end=2005, + serialized_start=2070, + serialized_end=2085, ) @@ -1591,8 +1611,8 @@ _FIRMWAREUPLOAD = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=2007, - serialized_end=2046, + serialized_start=2087, + serialized_end=2126, ) @@ -1619,8 +1639,8 @@ _DEBUGLINKDECISION = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=2048, - serialized_end=2083, + serialized_start=2128, + serialized_end=2163, ) @@ -1668,8 +1688,8 @@ _DEBUGLINKGETSTATE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=2085, - serialized_end=2163, + serialized_start=2165, + serialized_end=2243, ) @@ -1717,8 +1737,8 @@ _DEBUGLINKSTATE = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=2165, - serialized_end=2246, + serialized_start=2245, + serialized_end=2326, ) @@ -1738,21 +1758,23 @@ _DEBUGLINKSTOP = _descriptor.Descriptor( options=None, is_extendable=False, extension_ranges=[], - serialized_start=2248, - serialized_end=2263, + serialized_start=2328, + serialized_end=2343, ) _SETTINGSTYPE.fields_by_name['coin'].message_type = _COINTYPE _FEATURES.fields_by_name['settings'].message_type = _SETTINGSTYPE _FAILURE.fields_by_name['code'].enum_type = _FAILURETYPE -_MASTERPUBLICKEY.fields_by_name['mpk'].message_type = _XPUBTYPE -_LOADDEVICE.fields_by_name['xprv'].message_type = _XPRVTYPE +_PUBLICKEY.fields_by_name['mpk'].message_type = _HDNODETYPE +_LOADDEVICE.fields_by_name['node'].message_type = _HDNODETYPE _SIMPLESIGNTX.fields_by_name['inputs'].message_type = _TXINPUT _SIMPLESIGNTX.fields_by_name['outputs'].message_type = _TXOUTPUT _TXREQUEST.fields_by_name['request_type'].enum_type = _REQUESTTYPE _TXOUTPUT.fields_by_name['script_type'].enum_type = _SCRIPTTYPE -DESCRIPTOR.message_types_by_name['XprvType'] = _XPRVTYPE -DESCRIPTOR.message_types_by_name['XpubType'] = _XPUBTYPE +_TRANSACTIONTYPE_TXOUTPUTBIN.containing_type = _TRANSACTIONTYPE; +_TRANSACTIONTYPE.fields_by_name['inputs'].message_type = _TXINPUT +_TRANSACTIONTYPE.fields_by_name['outputs'].message_type = _TRANSACTIONTYPE_TXOUTPUTBIN +DESCRIPTOR.message_types_by_name['HDNodeType'] = _HDNODETYPE DESCRIPTOR.message_types_by_name['CoinType'] = _COINTYPE DESCRIPTOR.message_types_by_name['SettingsType'] = _SETTINGSTYPE DESCRIPTOR.message_types_by_name['Initialize'] = _INITIALIZE @@ -1770,8 +1792,8 @@ DESCRIPTOR.message_types_by_name['PinMatrixAck'] = _PINMATRIXACK DESCRIPTOR.message_types_by_name['PinMatrixCancel'] = _PINMATRIXCANCEL DESCRIPTOR.message_types_by_name['GetEntropy'] = _GETENTROPY DESCRIPTOR.message_types_by_name['Entropy'] = _ENTROPY -DESCRIPTOR.message_types_by_name['GetMasterPublicKey'] = _GETMASTERPUBLICKEY -DESCRIPTOR.message_types_by_name['MasterPublicKey'] = _MASTERPUBLICKEY +DESCRIPTOR.message_types_by_name['GetPublicKey'] = _GETPUBLICKEY +DESCRIPTOR.message_types_by_name['PublicKey'] = _PUBLICKEY DESCRIPTOR.message_types_by_name['GetAddress'] = _GETADDRESS DESCRIPTOR.message_types_by_name['Address'] = _ADDRESS DESCRIPTOR.message_types_by_name['WipeDevice'] = _WIPEDEVICE @@ -1784,6 +1806,7 @@ DESCRIPTOR.message_types_by_name['SimpleSignTx'] = _SIMPLESIGNTX DESCRIPTOR.message_types_by_name['TxRequest'] = _TXREQUEST DESCRIPTOR.message_types_by_name['TxInput'] = _TXINPUT DESCRIPTOR.message_types_by_name['TxOutput'] = _TXOUTPUT +DESCRIPTOR.message_types_by_name['TransactionType'] = _TRANSACTIONTYPE DESCRIPTOR.message_types_by_name['FirmwareErase'] = _FIRMWAREERASE DESCRIPTOR.message_types_by_name['FirmwareUpload'] = _FIRMWAREUPLOAD DESCRIPTOR.message_types_by_name['DebugLinkDecision'] = _DEBUGLINKDECISION @@ -1791,17 +1814,11 @@ DESCRIPTOR.message_types_by_name['DebugLinkGetState'] = _DEBUGLINKGETSTATE DESCRIPTOR.message_types_by_name['DebugLinkState'] = _DEBUGLINKSTATE DESCRIPTOR.message_types_by_name['DebugLinkStop'] = _DEBUGLINKSTOP -class XprvType(_message.Message): - __metaclass__ = _reflection.GeneratedProtocolMessageType - DESCRIPTOR = _XPRVTYPE - - # @@protoc_insertion_point(class_scope:XprvType) - -class XpubType(_message.Message): +class HDNodeType(_message.Message): __metaclass__ = _reflection.GeneratedProtocolMessageType - DESCRIPTOR = _XPUBTYPE + DESCRIPTOR = _HDNODETYPE - # @@protoc_insertion_point(class_scope:XpubType) + # @@protoc_insertion_point(class_scope:HDNodeType) class CoinType(_message.Message): __metaclass__ = _reflection.GeneratedProtocolMessageType @@ -1905,17 +1922,17 @@ class Entropy(_message.Message): # @@protoc_insertion_point(class_scope:Entropy) -class GetMasterPublicKey(_message.Message): +class GetPublicKey(_message.Message): __metaclass__ = _reflection.GeneratedProtocolMessageType - DESCRIPTOR = _GETMASTERPUBLICKEY + DESCRIPTOR = _GETPUBLICKEY - # @@protoc_insertion_point(class_scope:GetMasterPublicKey) + # @@protoc_insertion_point(class_scope:GetPublicKey) -class MasterPublicKey(_message.Message): +class PublicKey(_message.Message): __metaclass__ = _reflection.GeneratedProtocolMessageType - DESCRIPTOR = _MASTERPUBLICKEY + DESCRIPTOR = _PUBLICKEY - # @@protoc_insertion_point(class_scope:MasterPublicKey) + # @@protoc_insertion_point(class_scope:PublicKey) class GetAddress(_message.Message): __metaclass__ = _reflection.GeneratedProtocolMessageType @@ -1989,6 +2006,18 @@ class TxOutput(_message.Message): # @@protoc_insertion_point(class_scope:TxOutput) +class TransactionType(_message.Message): + __metaclass__ = _reflection.GeneratedProtocolMessageType + + class TxOutputBin(_message.Message): + __metaclass__ = _reflection.GeneratedProtocolMessageType + DESCRIPTOR = _TRANSACTIONTYPE_TXOUTPUTBIN + + # @@protoc_insertion_point(class_scope:TransactionType.TxOutputBin) + DESCRIPTOR = _TRANSACTIONTYPE + + # @@protoc_insertion_point(class_scope:TransactionType) + class FirmwareErase(_message.Message): __metaclass__ = _reflection.GeneratedProtocolMessageType DESCRIPTOR = _FIRMWAREERASE @@ -2051,10 +2080,10 @@ _MESSAGETYPE.values_by_name["MessageType_GetEntropy"].has_options = True _MESSAGETYPE.values_by_name["MessageType_GetEntropy"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\220\265\030\001') _MESSAGETYPE.values_by_name["MessageType_Entropy"].has_options = True _MESSAGETYPE.values_by_name["MessageType_Entropy"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\230\265\030\001') -_MESSAGETYPE.values_by_name["MessageType_GetMasterPublicKey"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_GetMasterPublicKey"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\220\265\030\001') -_MESSAGETYPE.values_by_name["MessageType_MasterPublicKey"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_MasterPublicKey"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\230\265\030\001') +_MESSAGETYPE.values_by_name["MessageType_GetPublicKey"].has_options = True +_MESSAGETYPE.values_by_name["MessageType_GetPublicKey"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\220\265\030\001') +_MESSAGETYPE.values_by_name["MessageType_PublicKey"].has_options = True +_MESSAGETYPE.values_by_name["MessageType_PublicKey"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\230\265\030\001') _MESSAGETYPE.values_by_name["MessageType_LoadDevice"].has_options = True _MESSAGETYPE.values_by_name["MessageType_LoadDevice"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\220\265\030\001') _MESSAGETYPE.values_by_name["MessageType_ResetDevice"].has_options = True @@ -2101,14 +2130,12 @@ _MESSAGETYPE.values_by_name["MessageType_DebugLinkState"].has_options = True _MESSAGETYPE.values_by_name["MessageType_DebugLinkState"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\250\265\030\001') _MESSAGETYPE.values_by_name["MessageType_DebugLinkStop"].has_options = True _MESSAGETYPE.values_by_name["MessageType_DebugLinkStop"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), '\240\265\030\001') -_XPRVTYPE.fields_by_name['chain_code'].has_options = True -_XPRVTYPE.fields_by_name['chain_code']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') -_XPRVTYPE.fields_by_name['private_key'].has_options = True -_XPRVTYPE.fields_by_name['private_key']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') -_XPUBTYPE.fields_by_name['chain_code'].has_options = True -_XPUBTYPE.fields_by_name['chain_code']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') -_XPUBTYPE.fields_by_name['public_key'].has_options = True -_XPUBTYPE.fields_by_name['public_key']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') +_HDNODETYPE.fields_by_name['chain_code'].has_options = True +_HDNODETYPE.fields_by_name['chain_code']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') +_HDNODETYPE.fields_by_name['private_key'].has_options = True +_HDNODETYPE.fields_by_name['private_key']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') +_HDNODETYPE.fields_by_name['public_key'].has_options = True +_HDNODETYPE.fields_by_name['public_key']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') _FEATURES.fields_by_name['device_id'].has_options = True _FEATURES.fields_by_name['device_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') _FEATURES.fields_by_name['mpk_hash'].has_options = True @@ -2127,6 +2154,8 @@ _TXINPUT.fields_by_name['script_sig'].has_options = True _TXINPUT.fields_by_name['script_sig']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') _TXOUTPUT.fields_by_name['script_args'].has_options = True _TXOUTPUT.fields_by_name['script_args']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') +_TRANSACTIONTYPE_TXOUTPUTBIN.fields_by_name['script_pubkey'].has_options = True +_TRANSACTIONTYPE_TXOUTPUTBIN.fields_by_name['script_pubkey']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') _FIRMWAREUPLOAD.fields_by_name['payload'].has_options = True _FIRMWAREUPLOAD.fields_by_name['payload']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), '\210\265\030\001') _DEBUGLINKSTATE.fields_by_name['layout'].has_options = True