3082 lines
		
	
	
		
			115 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			3082 lines
		
	
	
		
			115 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Code generated by protoc-gen-go. DO NOT EDIT.
 | |
| // source: messages.proto
 | |
| 
 | |
| package trezor
 | |
| 
 | |
| import proto "github.com/golang/protobuf/proto"
 | |
| import fmt "fmt"
 | |
| import math "math"
 | |
| 
 | |
| // Reference imports to suppress errors if they are not otherwise used.
 | |
| var _ = proto.Marshal
 | |
| var _ = fmt.Errorf
 | |
| var _ = math.Inf
 | |
| 
 | |
| // *
 | |
| // Mapping between Trezor wire identifier (uint) and a protobuf message
 | |
| type MessageType int32
 | |
| 
 | |
| const (
 | |
| 	MessageType_MessageType_Initialize               MessageType = 0
 | |
| 	MessageType_MessageType_Ping                     MessageType = 1
 | |
| 	MessageType_MessageType_Success                  MessageType = 2
 | |
| 	MessageType_MessageType_Failure                  MessageType = 3
 | |
| 	MessageType_MessageType_ChangePin                MessageType = 4
 | |
| 	MessageType_MessageType_WipeDevice               MessageType = 5
 | |
| 	MessageType_MessageType_FirmwareErase            MessageType = 6
 | |
| 	MessageType_MessageType_FirmwareUpload           MessageType = 7
 | |
| 	MessageType_MessageType_FirmwareRequest          MessageType = 8
 | |
| 	MessageType_MessageType_GetEntropy               MessageType = 9
 | |
| 	MessageType_MessageType_Entropy                  MessageType = 10
 | |
| 	MessageType_MessageType_GetPublicKey             MessageType = 11
 | |
| 	MessageType_MessageType_PublicKey                MessageType = 12
 | |
| 	MessageType_MessageType_LoadDevice               MessageType = 13
 | |
| 	MessageType_MessageType_ResetDevice              MessageType = 14
 | |
| 	MessageType_MessageType_SignTx                   MessageType = 15
 | |
| 	MessageType_MessageType_SimpleSignTx             MessageType = 16
 | |
| 	MessageType_MessageType_Features                 MessageType = 17
 | |
| 	MessageType_MessageType_PinMatrixRequest         MessageType = 18
 | |
| 	MessageType_MessageType_PinMatrixAck             MessageType = 19
 | |
| 	MessageType_MessageType_Cancel                   MessageType = 20
 | |
| 	MessageType_MessageType_TxRequest                MessageType = 21
 | |
| 	MessageType_MessageType_TxAck                    MessageType = 22
 | |
| 	MessageType_MessageType_CipherKeyValue           MessageType = 23
 | |
| 	MessageType_MessageType_ClearSession             MessageType = 24
 | |
| 	MessageType_MessageType_ApplySettings            MessageType = 25
 | |
| 	MessageType_MessageType_ButtonRequest            MessageType = 26
 | |
| 	MessageType_MessageType_ButtonAck                MessageType = 27
 | |
| 	MessageType_MessageType_ApplyFlags               MessageType = 28
 | |
| 	MessageType_MessageType_GetAddress               MessageType = 29
 | |
| 	MessageType_MessageType_Address                  MessageType = 30
 | |
| 	MessageType_MessageType_SelfTest                 MessageType = 32
 | |
| 	MessageType_MessageType_BackupDevice             MessageType = 34
 | |
| 	MessageType_MessageType_EntropyRequest           MessageType = 35
 | |
| 	MessageType_MessageType_EntropyAck               MessageType = 36
 | |
| 	MessageType_MessageType_SignMessage              MessageType = 38
 | |
| 	MessageType_MessageType_VerifyMessage            MessageType = 39
 | |
| 	MessageType_MessageType_MessageSignature         MessageType = 40
 | |
| 	MessageType_MessageType_PassphraseRequest        MessageType = 41
 | |
| 	MessageType_MessageType_PassphraseAck            MessageType = 42
 | |
| 	MessageType_MessageType_EstimateTxSize           MessageType = 43
 | |
| 	MessageType_MessageType_TxSize                   MessageType = 44
 | |
| 	MessageType_MessageType_RecoveryDevice           MessageType = 45
 | |
| 	MessageType_MessageType_WordRequest              MessageType = 46
 | |
| 	MessageType_MessageType_WordAck                  MessageType = 47
 | |
| 	MessageType_MessageType_CipheredKeyValue         MessageType = 48
 | |
| 	MessageType_MessageType_EncryptMessage           MessageType = 49
 | |
| 	MessageType_MessageType_EncryptedMessage         MessageType = 50
 | |
| 	MessageType_MessageType_DecryptMessage           MessageType = 51
 | |
| 	MessageType_MessageType_DecryptedMessage         MessageType = 52
 | |
| 	MessageType_MessageType_SignIdentity             MessageType = 53
 | |
| 	MessageType_MessageType_SignedIdentity           MessageType = 54
 | |
| 	MessageType_MessageType_GetFeatures              MessageType = 55
 | |
| 	MessageType_MessageType_EthereumGetAddress       MessageType = 56
 | |
| 	MessageType_MessageType_EthereumAddress          MessageType = 57
 | |
| 	MessageType_MessageType_EthereumSignTx           MessageType = 58
 | |
| 	MessageType_MessageType_EthereumTxRequest        MessageType = 59
 | |
| 	MessageType_MessageType_EthereumTxAck            MessageType = 60
 | |
| 	MessageType_MessageType_GetECDHSessionKey        MessageType = 61
 | |
| 	MessageType_MessageType_ECDHSessionKey           MessageType = 62
 | |
| 	MessageType_MessageType_SetU2FCounter            MessageType = 63
 | |
| 	MessageType_MessageType_EthereumSignMessage      MessageType = 64
 | |
| 	MessageType_MessageType_EthereumVerifyMessage    MessageType = 65
 | |
| 	MessageType_MessageType_EthereumMessageSignature MessageType = 66
 | |
| 	MessageType_MessageType_DebugLinkDecision        MessageType = 100
 | |
| 	MessageType_MessageType_DebugLinkGetState        MessageType = 101
 | |
| 	MessageType_MessageType_DebugLinkState           MessageType = 102
 | |
| 	MessageType_MessageType_DebugLinkStop            MessageType = 103
 | |
| 	MessageType_MessageType_DebugLinkLog             MessageType = 104
 | |
| 	MessageType_MessageType_DebugLinkMemoryRead      MessageType = 110
 | |
| 	MessageType_MessageType_DebugLinkMemory          MessageType = 111
 | |
| 	MessageType_MessageType_DebugLinkMemoryWrite     MessageType = 112
 | |
| 	MessageType_MessageType_DebugLinkFlashErase      MessageType = 113
 | |
| )
 | |
| 
 | |
| var MessageType_name = map[int32]string{
 | |
| 	0:   "MessageType_Initialize",
 | |
| 	1:   "MessageType_Ping",
 | |
| 	2:   "MessageType_Success",
 | |
| 	3:   "MessageType_Failure",
 | |
| 	4:   "MessageType_ChangePin",
 | |
| 	5:   "MessageType_WipeDevice",
 | |
| 	6:   "MessageType_FirmwareErase",
 | |
| 	7:   "MessageType_FirmwareUpload",
 | |
| 	8:   "MessageType_FirmwareRequest",
 | |
| 	9:   "MessageType_GetEntropy",
 | |
| 	10:  "MessageType_Entropy",
 | |
| 	11:  "MessageType_GetPublicKey",
 | |
| 	12:  "MessageType_PublicKey",
 | |
| 	13:  "MessageType_LoadDevice",
 | |
| 	14:  "MessageType_ResetDevice",
 | |
| 	15:  "MessageType_SignTx",
 | |
| 	16:  "MessageType_SimpleSignTx",
 | |
| 	17:  "MessageType_Features",
 | |
| 	18:  "MessageType_PinMatrixRequest",
 | |
| 	19:  "MessageType_PinMatrixAck",
 | |
| 	20:  "MessageType_Cancel",
 | |
| 	21:  "MessageType_TxRequest",
 | |
| 	22:  "MessageType_TxAck",
 | |
| 	23:  "MessageType_CipherKeyValue",
 | |
| 	24:  "MessageType_ClearSession",
 | |
| 	25:  "MessageType_ApplySettings",
 | |
| 	26:  "MessageType_ButtonRequest",
 | |
| 	27:  "MessageType_ButtonAck",
 | |
| 	28:  "MessageType_ApplyFlags",
 | |
| 	29:  "MessageType_GetAddress",
 | |
| 	30:  "MessageType_Address",
 | |
| 	32:  "MessageType_SelfTest",
 | |
| 	34:  "MessageType_BackupDevice",
 | |
| 	35:  "MessageType_EntropyRequest",
 | |
| 	36:  "MessageType_EntropyAck",
 | |
| 	38:  "MessageType_SignMessage",
 | |
| 	39:  "MessageType_VerifyMessage",
 | |
| 	40:  "MessageType_MessageSignature",
 | |
| 	41:  "MessageType_PassphraseRequest",
 | |
| 	42:  "MessageType_PassphraseAck",
 | |
| 	43:  "MessageType_EstimateTxSize",
 | |
| 	44:  "MessageType_TxSize",
 | |
| 	45:  "MessageType_RecoveryDevice",
 | |
| 	46:  "MessageType_WordRequest",
 | |
| 	47:  "MessageType_WordAck",
 | |
| 	48:  "MessageType_CipheredKeyValue",
 | |
| 	49:  "MessageType_EncryptMessage",
 | |
| 	50:  "MessageType_EncryptedMessage",
 | |
| 	51:  "MessageType_DecryptMessage",
 | |
| 	52:  "MessageType_DecryptedMessage",
 | |
| 	53:  "MessageType_SignIdentity",
 | |
| 	54:  "MessageType_SignedIdentity",
 | |
| 	55:  "MessageType_GetFeatures",
 | |
| 	56:  "MessageType_EthereumGetAddress",
 | |
| 	57:  "MessageType_EthereumAddress",
 | |
| 	58:  "MessageType_EthereumSignTx",
 | |
| 	59:  "MessageType_EthereumTxRequest",
 | |
| 	60:  "MessageType_EthereumTxAck",
 | |
| 	61:  "MessageType_GetECDHSessionKey",
 | |
| 	62:  "MessageType_ECDHSessionKey",
 | |
| 	63:  "MessageType_SetU2FCounter",
 | |
| 	64:  "MessageType_EthereumSignMessage",
 | |
| 	65:  "MessageType_EthereumVerifyMessage",
 | |
| 	66:  "MessageType_EthereumMessageSignature",
 | |
| 	100: "MessageType_DebugLinkDecision",
 | |
| 	101: "MessageType_DebugLinkGetState",
 | |
| 	102: "MessageType_DebugLinkState",
 | |
| 	103: "MessageType_DebugLinkStop",
 | |
| 	104: "MessageType_DebugLinkLog",
 | |
| 	110: "MessageType_DebugLinkMemoryRead",
 | |
| 	111: "MessageType_DebugLinkMemory",
 | |
| 	112: "MessageType_DebugLinkMemoryWrite",
 | |
| 	113: "MessageType_DebugLinkFlashErase",
 | |
| }
 | |
| var MessageType_value = map[string]int32{
 | |
| 	"MessageType_Initialize":               0,
 | |
| 	"MessageType_Ping":                     1,
 | |
| 	"MessageType_Success":                  2,
 | |
| 	"MessageType_Failure":                  3,
 | |
| 	"MessageType_ChangePin":                4,
 | |
| 	"MessageType_WipeDevice":               5,
 | |
| 	"MessageType_FirmwareErase":            6,
 | |
| 	"MessageType_FirmwareUpload":           7,
 | |
| 	"MessageType_FirmwareRequest":          8,
 | |
| 	"MessageType_GetEntropy":               9,
 | |
| 	"MessageType_Entropy":                  10,
 | |
| 	"MessageType_GetPublicKey":             11,
 | |
| 	"MessageType_PublicKey":                12,
 | |
| 	"MessageType_LoadDevice":               13,
 | |
| 	"MessageType_ResetDevice":              14,
 | |
| 	"MessageType_SignTx":                   15,
 | |
| 	"MessageType_SimpleSignTx":             16,
 | |
| 	"MessageType_Features":                 17,
 | |
| 	"MessageType_PinMatrixRequest":         18,
 | |
| 	"MessageType_PinMatrixAck":             19,
 | |
| 	"MessageType_Cancel":                   20,
 | |
| 	"MessageType_TxRequest":                21,
 | |
| 	"MessageType_TxAck":                    22,
 | |
| 	"MessageType_CipherKeyValue":           23,
 | |
| 	"MessageType_ClearSession":             24,
 | |
| 	"MessageType_ApplySettings":            25,
 | |
| 	"MessageType_ButtonRequest":            26,
 | |
| 	"MessageType_ButtonAck":                27,
 | |
| 	"MessageType_ApplyFlags":               28,
 | |
| 	"MessageType_GetAddress":               29,
 | |
| 	"MessageType_Address":                  30,
 | |
| 	"MessageType_SelfTest":                 32,
 | |
| 	"MessageType_BackupDevice":             34,
 | |
| 	"MessageType_EntropyRequest":           35,
 | |
| 	"MessageType_EntropyAck":               36,
 | |
| 	"MessageType_SignMessage":              38,
 | |
| 	"MessageType_VerifyMessage":            39,
 | |
| 	"MessageType_MessageSignature":         40,
 | |
| 	"MessageType_PassphraseRequest":        41,
 | |
| 	"MessageType_PassphraseAck":            42,
 | |
| 	"MessageType_EstimateTxSize":           43,
 | |
| 	"MessageType_TxSize":                   44,
 | |
| 	"MessageType_RecoveryDevice":           45,
 | |
| 	"MessageType_WordRequest":              46,
 | |
| 	"MessageType_WordAck":                  47,
 | |
| 	"MessageType_CipheredKeyValue":         48,
 | |
| 	"MessageType_EncryptMessage":           49,
 | |
| 	"MessageType_EncryptedMessage":         50,
 | |
| 	"MessageType_DecryptMessage":           51,
 | |
| 	"MessageType_DecryptedMessage":         52,
 | |
| 	"MessageType_SignIdentity":             53,
 | |
| 	"MessageType_SignedIdentity":           54,
 | |
| 	"MessageType_GetFeatures":              55,
 | |
| 	"MessageType_EthereumGetAddress":       56,
 | |
| 	"MessageType_EthereumAddress":          57,
 | |
| 	"MessageType_EthereumSignTx":           58,
 | |
| 	"MessageType_EthereumTxRequest":        59,
 | |
| 	"MessageType_EthereumTxAck":            60,
 | |
| 	"MessageType_GetECDHSessionKey":        61,
 | |
| 	"MessageType_ECDHSessionKey":           62,
 | |
| 	"MessageType_SetU2FCounter":            63,
 | |
| 	"MessageType_EthereumSignMessage":      64,
 | |
| 	"MessageType_EthereumVerifyMessage":    65,
 | |
| 	"MessageType_EthereumMessageSignature": 66,
 | |
| 	"MessageType_DebugLinkDecision":        100,
 | |
| 	"MessageType_DebugLinkGetState":        101,
 | |
| 	"MessageType_DebugLinkState":           102,
 | |
| 	"MessageType_DebugLinkStop":            103,
 | |
| 	"MessageType_DebugLinkLog":             104,
 | |
| 	"MessageType_DebugLinkMemoryRead":      110,
 | |
| 	"MessageType_DebugLinkMemory":          111,
 | |
| 	"MessageType_DebugLinkMemoryWrite":     112,
 | |
| 	"MessageType_DebugLinkFlashErase":      113,
 | |
| }
 | |
| 
 | |
| func (x MessageType) Enum() *MessageType {
 | |
| 	p := new(MessageType)
 | |
| 	*p = x
 | |
| 	return p
 | |
| }
 | |
| func (x MessageType) String() string {
 | |
| 	return proto.EnumName(MessageType_name, int32(x))
 | |
| }
 | |
| func (x *MessageType) UnmarshalJSON(data []byte) error {
 | |
| 	value, err := proto.UnmarshalJSONEnum(MessageType_value, data, "MessageType")
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	*x = MessageType(value)
 | |
| 	return nil
 | |
| }
 | |
| func (MessageType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
 | |
| 
 | |
| // *
 | |
| // Request: Reset device to default state and ask for device details
 | |
| // @next Features
 | |
| type Initialize struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *Initialize) Reset()                    { *m = Initialize{} }
 | |
| func (m *Initialize) String() string            { return proto.CompactTextString(m) }
 | |
| func (*Initialize) ProtoMessage()               {}
 | |
| func (*Initialize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
 | |
| 
 | |
| // *
 | |
| // Request: Ask for device details (no device reset)
 | |
| // @next Features
 | |
| type GetFeatures struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *GetFeatures) Reset()                    { *m = GetFeatures{} }
 | |
| func (m *GetFeatures) String() string            { return proto.CompactTextString(m) }
 | |
| func (*GetFeatures) ProtoMessage()               {}
 | |
| func (*GetFeatures) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
 | |
| 
 | |
| // *
 | |
| // Response: Reports various information about the device
 | |
| // @prev Initialize
 | |
| // @prev GetFeatures
 | |
| type Features struct {
 | |
| 	Vendor               *string     `protobuf:"bytes,1,opt,name=vendor" json:"vendor,omitempty"`
 | |
| 	MajorVersion         *uint32     `protobuf:"varint,2,opt,name=major_version,json=majorVersion" json:"major_version,omitempty"`
 | |
| 	MinorVersion         *uint32     `protobuf:"varint,3,opt,name=minor_version,json=minorVersion" json:"minor_version,omitempty"`
 | |
| 	PatchVersion         *uint32     `protobuf:"varint,4,opt,name=patch_version,json=patchVersion" json:"patch_version,omitempty"`
 | |
| 	BootloaderMode       *bool       `protobuf:"varint,5,opt,name=bootloader_mode,json=bootloaderMode" json:"bootloader_mode,omitempty"`
 | |
| 	DeviceId             *string     `protobuf:"bytes,6,opt,name=device_id,json=deviceId" json:"device_id,omitempty"`
 | |
| 	PinProtection        *bool       `protobuf:"varint,7,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"`
 | |
| 	PassphraseProtection *bool       `protobuf:"varint,8,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
 | |
| 	Language             *string     `protobuf:"bytes,9,opt,name=language" json:"language,omitempty"`
 | |
| 	Label                *string     `protobuf:"bytes,10,opt,name=label" json:"label,omitempty"`
 | |
| 	Coins                []*CoinType `protobuf:"bytes,11,rep,name=coins" json:"coins,omitempty"`
 | |
| 	Initialized          *bool       `protobuf:"varint,12,opt,name=initialized" json:"initialized,omitempty"`
 | |
| 	Revision             []byte      `protobuf:"bytes,13,opt,name=revision" json:"revision,omitempty"`
 | |
| 	BootloaderHash       []byte      `protobuf:"bytes,14,opt,name=bootloader_hash,json=bootloaderHash" json:"bootloader_hash,omitempty"`
 | |
| 	Imported             *bool       `protobuf:"varint,15,opt,name=imported" json:"imported,omitempty"`
 | |
| 	PinCached            *bool       `protobuf:"varint,16,opt,name=pin_cached,json=pinCached" json:"pin_cached,omitempty"`
 | |
| 	PassphraseCached     *bool       `protobuf:"varint,17,opt,name=passphrase_cached,json=passphraseCached" json:"passphrase_cached,omitempty"`
 | |
| 	FirmwarePresent      *bool       `protobuf:"varint,18,opt,name=firmware_present,json=firmwarePresent" json:"firmware_present,omitempty"`
 | |
| 	NeedsBackup          *bool       `protobuf:"varint,19,opt,name=needs_backup,json=needsBackup" json:"needs_backup,omitempty"`
 | |
| 	Flags                *uint32     `protobuf:"varint,20,opt,name=flags" json:"flags,omitempty"`
 | |
| 	XXX_unrecognized     []byte      `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *Features) Reset()                    { *m = Features{} }
 | |
| func (m *Features) String() string            { return proto.CompactTextString(m) }
 | |
| func (*Features) ProtoMessage()               {}
 | |
| func (*Features) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
 | |
| 
 | |
| func (m *Features) GetVendor() string {
 | |
| 	if m != nil && m.Vendor != nil {
 | |
| 		return *m.Vendor
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *Features) GetMajorVersion() uint32 {
 | |
| 	if m != nil && m.MajorVersion != nil {
 | |
| 		return *m.MajorVersion
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *Features) GetMinorVersion() uint32 {
 | |
| 	if m != nil && m.MinorVersion != nil {
 | |
| 		return *m.MinorVersion
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *Features) GetPatchVersion() uint32 {
 | |
| 	if m != nil && m.PatchVersion != nil {
 | |
| 		return *m.PatchVersion
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *Features) GetBootloaderMode() bool {
 | |
| 	if m != nil && m.BootloaderMode != nil {
 | |
| 		return *m.BootloaderMode
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Features) GetDeviceId() string {
 | |
| 	if m != nil && m.DeviceId != nil {
 | |
| 		return *m.DeviceId
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *Features) GetPinProtection() bool {
 | |
| 	if m != nil && m.PinProtection != nil {
 | |
| 		return *m.PinProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Features) GetPassphraseProtection() bool {
 | |
| 	if m != nil && m.PassphraseProtection != nil {
 | |
| 		return *m.PassphraseProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Features) GetLanguage() string {
 | |
| 	if m != nil && m.Language != nil {
 | |
| 		return *m.Language
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *Features) GetLabel() string {
 | |
| 	if m != nil && m.Label != nil {
 | |
| 		return *m.Label
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *Features) GetCoins() []*CoinType {
 | |
| 	if m != nil {
 | |
| 		return m.Coins
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *Features) GetInitialized() bool {
 | |
| 	if m != nil && m.Initialized != nil {
 | |
| 		return *m.Initialized
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Features) GetRevision() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Revision
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *Features) GetBootloaderHash() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.BootloaderHash
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *Features) GetImported() bool {
 | |
| 	if m != nil && m.Imported != nil {
 | |
| 		return *m.Imported
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Features) GetPinCached() bool {
 | |
| 	if m != nil && m.PinCached != nil {
 | |
| 		return *m.PinCached
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Features) GetPassphraseCached() bool {
 | |
| 	if m != nil && m.PassphraseCached != nil {
 | |
| 		return *m.PassphraseCached
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Features) GetFirmwarePresent() bool {
 | |
| 	if m != nil && m.FirmwarePresent != nil {
 | |
| 		return *m.FirmwarePresent
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Features) GetNeedsBackup() bool {
 | |
| 	if m != nil && m.NeedsBackup != nil {
 | |
| 		return *m.NeedsBackup
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Features) GetFlags() uint32 {
 | |
| 	if m != nil && m.Flags != nil {
 | |
| 		return *m.Flags
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: clear session (removes cached PIN, passphrase, etc).
 | |
| // @next Success
 | |
| type ClearSession struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *ClearSession) Reset()                    { *m = ClearSession{} }
 | |
| func (m *ClearSession) String() string            { return proto.CompactTextString(m) }
 | |
| func (*ClearSession) ProtoMessage()               {}
 | |
| func (*ClearSession) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
 | |
| 
 | |
| // *
 | |
| // Request: change language and/or label of the device
 | |
| // @next Success
 | |
| // @next Failure
 | |
| // @next ButtonRequest
 | |
| // @next PinMatrixRequest
 | |
| type ApplySettings struct {
 | |
| 	Language         *string `protobuf:"bytes,1,opt,name=language" json:"language,omitempty"`
 | |
| 	Label            *string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"`
 | |
| 	UsePassphrase    *bool   `protobuf:"varint,3,opt,name=use_passphrase,json=usePassphrase" json:"use_passphrase,omitempty"`
 | |
| 	Homescreen       []byte  `protobuf:"bytes,4,opt,name=homescreen" json:"homescreen,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *ApplySettings) Reset()                    { *m = ApplySettings{} }
 | |
| func (m *ApplySettings) String() string            { return proto.CompactTextString(m) }
 | |
| func (*ApplySettings) ProtoMessage()               {}
 | |
| func (*ApplySettings) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
 | |
| 
 | |
| func (m *ApplySettings) GetLanguage() string {
 | |
| 	if m != nil && m.Language != nil {
 | |
| 		return *m.Language
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *ApplySettings) GetLabel() string {
 | |
| 	if m != nil && m.Label != nil {
 | |
| 		return *m.Label
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *ApplySettings) GetUsePassphrase() bool {
 | |
| 	if m != nil && m.UsePassphrase != nil {
 | |
| 		return *m.UsePassphrase
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *ApplySettings) GetHomescreen() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Homescreen
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: set flags of the device
 | |
| // @next Success
 | |
| // @next Failure
 | |
| type ApplyFlags struct {
 | |
| 	Flags            *uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *ApplyFlags) Reset()                    { *m = ApplyFlags{} }
 | |
| func (m *ApplyFlags) String() string            { return proto.CompactTextString(m) }
 | |
| func (*ApplyFlags) ProtoMessage()               {}
 | |
| func (*ApplyFlags) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
 | |
| 
 | |
| func (m *ApplyFlags) GetFlags() uint32 {
 | |
| 	if m != nil && m.Flags != nil {
 | |
| 		return *m.Flags
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Starts workflow for setting/changing/removing the PIN
 | |
| // @next ButtonRequest
 | |
| // @next PinMatrixRequest
 | |
| type ChangePin struct {
 | |
| 	Remove           *bool  `protobuf:"varint,1,opt,name=remove" json:"remove,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *ChangePin) Reset()                    { *m = ChangePin{} }
 | |
| func (m *ChangePin) String() string            { return proto.CompactTextString(m) }
 | |
| func (*ChangePin) ProtoMessage()               {}
 | |
| func (*ChangePin) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
 | |
| 
 | |
| func (m *ChangePin) GetRemove() bool {
 | |
| 	if m != nil && m.Remove != nil {
 | |
| 		return *m.Remove
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Test if the device is alive, device sends back the message in Success response
 | |
| // @next Success
 | |
| type Ping struct {
 | |
| 	Message              *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
 | |
| 	ButtonProtection     *bool   `protobuf:"varint,2,opt,name=button_protection,json=buttonProtection" json:"button_protection,omitempty"`
 | |
| 	PinProtection        *bool   `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"`
 | |
| 	PassphraseProtection *bool   `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
 | |
| 	XXX_unrecognized     []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *Ping) Reset()                    { *m = Ping{} }
 | |
| func (m *Ping) String() string            { return proto.CompactTextString(m) }
 | |
| func (*Ping) ProtoMessage()               {}
 | |
| func (*Ping) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
 | |
| 
 | |
| func (m *Ping) GetMessage() string {
 | |
| 	if m != nil && m.Message != nil {
 | |
| 		return *m.Message
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *Ping) GetButtonProtection() bool {
 | |
| 	if m != nil && m.ButtonProtection != nil {
 | |
| 		return *m.ButtonProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Ping) GetPinProtection() bool {
 | |
| 	if m != nil && m.PinProtection != nil {
 | |
| 		return *m.PinProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *Ping) GetPassphraseProtection() bool {
 | |
| 	if m != nil && m.PassphraseProtection != nil {
 | |
| 		return *m.PassphraseProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Success of the previous request
 | |
| type Success struct {
 | |
| 	Message          *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *Success) Reset()                    { *m = Success{} }
 | |
| func (m *Success) String() string            { return proto.CompactTextString(m) }
 | |
| func (*Success) ProtoMessage()               {}
 | |
| func (*Success) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
 | |
| 
 | |
| func (m *Success) GetMessage() string {
 | |
| 	if m != nil && m.Message != nil {
 | |
| 		return *m.Message
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Failure of the previous request
 | |
| type Failure struct {
 | |
| 	Code             *FailureType `protobuf:"varint,1,opt,name=code,enum=FailureType" json:"code,omitempty"`
 | |
| 	Message          *string      `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
 | |
| 	XXX_unrecognized []byte       `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *Failure) Reset()                    { *m = Failure{} }
 | |
| func (m *Failure) String() string            { return proto.CompactTextString(m) }
 | |
| func (*Failure) ProtoMessage()               {}
 | |
| func (*Failure) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
 | |
| 
 | |
| func (m *Failure) GetCode() FailureType {
 | |
| 	if m != nil && m.Code != nil {
 | |
| 		return *m.Code
 | |
| 	}
 | |
| 	return FailureType_Failure_UnexpectedMessage
 | |
| }
 | |
| 
 | |
| func (m *Failure) GetMessage() string {
 | |
| 	if m != nil && m.Message != nil {
 | |
| 		return *m.Message
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Device is waiting for HW button press.
 | |
| // @next ButtonAck
 | |
| // @next Cancel
 | |
| type ButtonRequest struct {
 | |
| 	Code             *ButtonRequestType `protobuf:"varint,1,opt,name=code,enum=ButtonRequestType" json:"code,omitempty"`
 | |
| 	Data             *string            `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"`
 | |
| 	XXX_unrecognized []byte             `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *ButtonRequest) Reset()                    { *m = ButtonRequest{} }
 | |
| func (m *ButtonRequest) String() string            { return proto.CompactTextString(m) }
 | |
| func (*ButtonRequest) ProtoMessage()               {}
 | |
| func (*ButtonRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} }
 | |
| 
 | |
| func (m *ButtonRequest) GetCode() ButtonRequestType {
 | |
| 	if m != nil && m.Code != nil {
 | |
| 		return *m.Code
 | |
| 	}
 | |
| 	return ButtonRequestType_ButtonRequest_Other
 | |
| }
 | |
| 
 | |
| func (m *ButtonRequest) GetData() string {
 | |
| 	if m != nil && m.Data != nil {
 | |
| 		return *m.Data
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Computer agrees to wait for HW button press
 | |
| // @prev ButtonRequest
 | |
| type ButtonAck struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *ButtonAck) Reset()                    { *m = ButtonAck{} }
 | |
| func (m *ButtonAck) String() string            { return proto.CompactTextString(m) }
 | |
| func (*ButtonAck) ProtoMessage()               {}
 | |
| func (*ButtonAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} }
 | |
| 
 | |
| // *
 | |
| // Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme
 | |
| // @next PinMatrixAck
 | |
| // @next Cancel
 | |
| type PinMatrixRequest struct {
 | |
| 	Type             *PinMatrixRequestType `protobuf:"varint,1,opt,name=type,enum=PinMatrixRequestType" json:"type,omitempty"`
 | |
| 	XXX_unrecognized []byte                `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *PinMatrixRequest) Reset()                    { *m = PinMatrixRequest{} }
 | |
| func (m *PinMatrixRequest) String() string            { return proto.CompactTextString(m) }
 | |
| func (*PinMatrixRequest) ProtoMessage()               {}
 | |
| func (*PinMatrixRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} }
 | |
| 
 | |
| func (m *PinMatrixRequest) GetType() PinMatrixRequestType {
 | |
| 	if m != nil && m.Type != nil {
 | |
| 		return *m.Type
 | |
| 	}
 | |
| 	return PinMatrixRequestType_PinMatrixRequestType_Current
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Computer responds with encoded PIN
 | |
| // @prev PinMatrixRequest
 | |
| type PinMatrixAck struct {
 | |
| 	Pin              *string `protobuf:"bytes,1,req,name=pin" json:"pin,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *PinMatrixAck) Reset()                    { *m = PinMatrixAck{} }
 | |
| func (m *PinMatrixAck) String() string            { return proto.CompactTextString(m) }
 | |
| func (*PinMatrixAck) ProtoMessage()               {}
 | |
| func (*PinMatrixAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} }
 | |
| 
 | |
| func (m *PinMatrixAck) GetPin() string {
 | |
| 	if m != nil && m.Pin != nil {
 | |
| 		return *m.Pin
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Abort last operation that required user interaction
 | |
| // @prev ButtonRequest
 | |
| // @prev PinMatrixRequest
 | |
| // @prev PassphraseRequest
 | |
| type Cancel struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *Cancel) Reset()                    { *m = Cancel{} }
 | |
| func (m *Cancel) String() string            { return proto.CompactTextString(m) }
 | |
| func (*Cancel) ProtoMessage()               {}
 | |
| func (*Cancel) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} }
 | |
| 
 | |
| // *
 | |
| // Response: Device awaits encryption passphrase
 | |
| // @next PassphraseAck
 | |
| // @next Cancel
 | |
| type PassphraseRequest struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *PassphraseRequest) Reset()                    { *m = PassphraseRequest{} }
 | |
| func (m *PassphraseRequest) String() string            { return proto.CompactTextString(m) }
 | |
| func (*PassphraseRequest) ProtoMessage()               {}
 | |
| func (*PassphraseRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} }
 | |
| 
 | |
| // *
 | |
| // Request: Send passphrase back
 | |
| // @prev PassphraseRequest
 | |
| type PassphraseAck struct {
 | |
| 	Passphrase       *string `protobuf:"bytes,1,req,name=passphrase" json:"passphrase,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *PassphraseAck) Reset()                    { *m = PassphraseAck{} }
 | |
| func (m *PassphraseAck) String() string            { return proto.CompactTextString(m) }
 | |
| func (*PassphraseAck) ProtoMessage()               {}
 | |
| func (*PassphraseAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} }
 | |
| 
 | |
| func (m *PassphraseAck) GetPassphrase() string {
 | |
| 	if m != nil && m.Passphrase != nil {
 | |
| 		return *m.Passphrase
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Request a sample of random data generated by hardware RNG. May be used for testing.
 | |
| // @next ButtonRequest
 | |
| // @next Entropy
 | |
| // @next Failure
 | |
| type GetEntropy struct {
 | |
| 	Size             *uint32 `protobuf:"varint,1,req,name=size" json:"size,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *GetEntropy) Reset()                    { *m = GetEntropy{} }
 | |
| func (m *GetEntropy) String() string            { return proto.CompactTextString(m) }
 | |
| func (*GetEntropy) ProtoMessage()               {}
 | |
| func (*GetEntropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} }
 | |
| 
 | |
| func (m *GetEntropy) GetSize() uint32 {
 | |
| 	if m != nil && m.Size != nil {
 | |
| 		return *m.Size
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Reply with random data generated by internal RNG
 | |
| // @prev GetEntropy
 | |
| type Entropy struct {
 | |
| 	Entropy          []byte `protobuf:"bytes,1,req,name=entropy" json:"entropy,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *Entropy) Reset()                    { *m = Entropy{} }
 | |
| func (m *Entropy) String() string            { return proto.CompactTextString(m) }
 | |
| func (*Entropy) ProtoMessage()               {}
 | |
| func (*Entropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} }
 | |
| 
 | |
| func (m *Entropy) GetEntropy() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Entropy
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device for public key corresponding to address_n path
 | |
| // @next PassphraseRequest
 | |
| // @next PublicKey
 | |
| // @next Failure
 | |
| type GetPublicKey struct {
 | |
| 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
 | |
| 	EcdsaCurveName   *string  `protobuf:"bytes,2,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"`
 | |
| 	ShowDisplay      *bool    `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"`
 | |
| 	CoinName         *string  `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
 | |
| 	XXX_unrecognized []byte   `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *GetPublicKey) Reset()                    { *m = GetPublicKey{} }
 | |
| func (m *GetPublicKey) String() string            { return proto.CompactTextString(m) }
 | |
| func (*GetPublicKey) ProtoMessage()               {}
 | |
| func (*GetPublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} }
 | |
| 
 | |
| const Default_GetPublicKey_CoinName string = "Bitcoin"
 | |
| 
 | |
| func (m *GetPublicKey) GetAddressN() []uint32 {
 | |
| 	if m != nil {
 | |
| 		return m.AddressN
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *GetPublicKey) GetEcdsaCurveName() string {
 | |
| 	if m != nil && m.EcdsaCurveName != nil {
 | |
| 		return *m.EcdsaCurveName
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *GetPublicKey) GetShowDisplay() bool {
 | |
| 	if m != nil && m.ShowDisplay != nil {
 | |
| 		return *m.ShowDisplay
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *GetPublicKey) GetCoinName() string {
 | |
| 	if m != nil && m.CoinName != nil {
 | |
| 		return *m.CoinName
 | |
| 	}
 | |
| 	return Default_GetPublicKey_CoinName
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Contains public key derived from device private seed
 | |
| // @prev GetPublicKey
 | |
| type PublicKey struct {
 | |
| 	Node             *HDNodeType `protobuf:"bytes,1,req,name=node" json:"node,omitempty"`
 | |
| 	Xpub             *string     `protobuf:"bytes,2,opt,name=xpub" json:"xpub,omitempty"`
 | |
| 	XXX_unrecognized []byte      `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *PublicKey) Reset()                    { *m = PublicKey{} }
 | |
| func (m *PublicKey) String() string            { return proto.CompactTextString(m) }
 | |
| func (*PublicKey) ProtoMessage()               {}
 | |
| func (*PublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} }
 | |
| 
 | |
| func (m *PublicKey) GetNode() *HDNodeType {
 | |
| 	if m != nil {
 | |
| 		return m.Node
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *PublicKey) GetXpub() string {
 | |
| 	if m != nil && m.Xpub != nil {
 | |
| 		return *m.Xpub
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device for address corresponding to address_n path
 | |
| // @next PassphraseRequest
 | |
| // @next Address
 | |
| // @next Failure
 | |
| type GetAddress struct {
 | |
| 	AddressN         []uint32                  `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
 | |
| 	CoinName         *string                   `protobuf:"bytes,2,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
 | |
| 	ShowDisplay      *bool                     `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"`
 | |
| 	Multisig         *MultisigRedeemScriptType `protobuf:"bytes,4,opt,name=multisig" json:"multisig,omitempty"`
 | |
| 	ScriptType       *InputScriptType          `protobuf:"varint,5,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"`
 | |
| 	XXX_unrecognized []byte                    `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *GetAddress) Reset()                    { *m = GetAddress{} }
 | |
| func (m *GetAddress) String() string            { return proto.CompactTextString(m) }
 | |
| func (*GetAddress) ProtoMessage()               {}
 | |
| func (*GetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{21} }
 | |
| 
 | |
| const Default_GetAddress_CoinName string = "Bitcoin"
 | |
| const Default_GetAddress_ScriptType InputScriptType = InputScriptType_SPENDADDRESS
 | |
| 
 | |
| func (m *GetAddress) GetAddressN() []uint32 {
 | |
| 	if m != nil {
 | |
| 		return m.AddressN
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *GetAddress) GetCoinName() string {
 | |
| 	if m != nil && m.CoinName != nil {
 | |
| 		return *m.CoinName
 | |
| 	}
 | |
| 	return Default_GetAddress_CoinName
 | |
| }
 | |
| 
 | |
| func (m *GetAddress) GetShowDisplay() bool {
 | |
| 	if m != nil && m.ShowDisplay != nil {
 | |
| 		return *m.ShowDisplay
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *GetAddress) GetMultisig() *MultisigRedeemScriptType {
 | |
| 	if m != nil {
 | |
| 		return m.Multisig
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *GetAddress) GetScriptType() InputScriptType {
 | |
| 	if m != nil && m.ScriptType != nil {
 | |
| 		return *m.ScriptType
 | |
| 	}
 | |
| 	return Default_GetAddress_ScriptType
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device for Ethereum address corresponding to address_n path
 | |
| // @next PassphraseRequest
 | |
| // @next EthereumAddress
 | |
| // @next Failure
 | |
| type EthereumGetAddress struct {
 | |
| 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
 | |
| 	ShowDisplay      *bool    `protobuf:"varint,2,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"`
 | |
| 	XXX_unrecognized []byte   `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EthereumGetAddress) Reset()                    { *m = EthereumGetAddress{} }
 | |
| func (m *EthereumGetAddress) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EthereumGetAddress) ProtoMessage()               {}
 | |
| func (*EthereumGetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{22} }
 | |
| 
 | |
| func (m *EthereumGetAddress) GetAddressN() []uint32 {
 | |
| 	if m != nil {
 | |
| 		return m.AddressN
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumGetAddress) GetShowDisplay() bool {
 | |
| 	if m != nil && m.ShowDisplay != nil {
 | |
| 		return *m.ShowDisplay
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Contains address derived from device private seed
 | |
| // @prev GetAddress
 | |
| type Address struct {
 | |
| 	Address          *string `protobuf:"bytes,1,req,name=address" json:"address,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *Address) Reset()                    { *m = Address{} }
 | |
| func (m *Address) String() string            { return proto.CompactTextString(m) }
 | |
| func (*Address) ProtoMessage()               {}
 | |
| func (*Address) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{23} }
 | |
| 
 | |
| func (m *Address) GetAddress() string {
 | |
| 	if m != nil && m.Address != nil {
 | |
| 		return *m.Address
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Contains an Ethereum address derived from device private seed
 | |
| // @prev EthereumGetAddress
 | |
| type EthereumAddress struct {
 | |
| 	Address          []byte `protobuf:"bytes,1,req,name=address" json:"address,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EthereumAddress) Reset()                    { *m = EthereumAddress{} }
 | |
| func (m *EthereumAddress) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EthereumAddress) ProtoMessage()               {}
 | |
| func (*EthereumAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{24} }
 | |
| 
 | |
| func (m *EthereumAddress) GetAddress() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Address
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Request device to wipe all sensitive data and settings
 | |
| // @next ButtonRequest
 | |
| type WipeDevice struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *WipeDevice) Reset()                    { *m = WipeDevice{} }
 | |
| func (m *WipeDevice) String() string            { return proto.CompactTextString(m) }
 | |
| func (*WipeDevice) ProtoMessage()               {}
 | |
| func (*WipeDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{25} }
 | |
| 
 | |
| // *
 | |
| // Request: Load seed and related internal settings from the computer
 | |
| // @next ButtonRequest
 | |
| // @next Success
 | |
| // @next Failure
 | |
| type LoadDevice struct {
 | |
| 	Mnemonic             *string     `protobuf:"bytes,1,opt,name=mnemonic" json:"mnemonic,omitempty"`
 | |
| 	Node                 *HDNodeType `protobuf:"bytes,2,opt,name=node" json:"node,omitempty"`
 | |
| 	Pin                  *string     `protobuf:"bytes,3,opt,name=pin" json:"pin,omitempty"`
 | |
| 	PassphraseProtection *bool       `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
 | |
| 	Language             *string     `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"`
 | |
| 	Label                *string     `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"`
 | |
| 	SkipChecksum         *bool       `protobuf:"varint,7,opt,name=skip_checksum,json=skipChecksum" json:"skip_checksum,omitempty"`
 | |
| 	U2FCounter           *uint32     `protobuf:"varint,8,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"`
 | |
| 	XXX_unrecognized     []byte      `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *LoadDevice) Reset()                    { *m = LoadDevice{} }
 | |
| func (m *LoadDevice) String() string            { return proto.CompactTextString(m) }
 | |
| func (*LoadDevice) ProtoMessage()               {}
 | |
| func (*LoadDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{26} }
 | |
| 
 | |
| const Default_LoadDevice_Language string = "english"
 | |
| 
 | |
| func (m *LoadDevice) GetMnemonic() string {
 | |
| 	if m != nil && m.Mnemonic != nil {
 | |
| 		return *m.Mnemonic
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *LoadDevice) GetNode() *HDNodeType {
 | |
| 	if m != nil {
 | |
| 		return m.Node
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *LoadDevice) GetPin() string {
 | |
| 	if m != nil && m.Pin != nil {
 | |
| 		return *m.Pin
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *LoadDevice) GetPassphraseProtection() bool {
 | |
| 	if m != nil && m.PassphraseProtection != nil {
 | |
| 		return *m.PassphraseProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *LoadDevice) GetLanguage() string {
 | |
| 	if m != nil && m.Language != nil {
 | |
| 		return *m.Language
 | |
| 	}
 | |
| 	return Default_LoadDevice_Language
 | |
| }
 | |
| 
 | |
| func (m *LoadDevice) GetLabel() string {
 | |
| 	if m != nil && m.Label != nil {
 | |
| 		return *m.Label
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *LoadDevice) GetSkipChecksum() bool {
 | |
| 	if m != nil && m.SkipChecksum != nil {
 | |
| 		return *m.SkipChecksum
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *LoadDevice) GetU2FCounter() uint32 {
 | |
| 	if m != nil && m.U2FCounter != nil {
 | |
| 		return *m.U2FCounter
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to do initialization involving user interaction
 | |
| // @next EntropyRequest
 | |
| // @next Failure
 | |
| type ResetDevice struct {
 | |
| 	DisplayRandom        *bool   `protobuf:"varint,1,opt,name=display_random,json=displayRandom" json:"display_random,omitempty"`
 | |
| 	Strength             *uint32 `protobuf:"varint,2,opt,name=strength,def=256" json:"strength,omitempty"`
 | |
| 	PassphraseProtection *bool   `protobuf:"varint,3,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
 | |
| 	PinProtection        *bool   `protobuf:"varint,4,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"`
 | |
| 	Language             *string `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"`
 | |
| 	Label                *string `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"`
 | |
| 	U2FCounter           *uint32 `protobuf:"varint,7,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"`
 | |
| 	SkipBackup           *bool   `protobuf:"varint,8,opt,name=skip_backup,json=skipBackup" json:"skip_backup,omitempty"`
 | |
| 	XXX_unrecognized     []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *ResetDevice) Reset()                    { *m = ResetDevice{} }
 | |
| func (m *ResetDevice) String() string            { return proto.CompactTextString(m) }
 | |
| func (*ResetDevice) ProtoMessage()               {}
 | |
| func (*ResetDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{27} }
 | |
| 
 | |
| const Default_ResetDevice_Strength uint32 = 256
 | |
| const Default_ResetDevice_Language string = "english"
 | |
| 
 | |
| func (m *ResetDevice) GetDisplayRandom() bool {
 | |
| 	if m != nil && m.DisplayRandom != nil {
 | |
| 		return *m.DisplayRandom
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *ResetDevice) GetStrength() uint32 {
 | |
| 	if m != nil && m.Strength != nil {
 | |
| 		return *m.Strength
 | |
| 	}
 | |
| 	return Default_ResetDevice_Strength
 | |
| }
 | |
| 
 | |
| func (m *ResetDevice) GetPassphraseProtection() bool {
 | |
| 	if m != nil && m.PassphraseProtection != nil {
 | |
| 		return *m.PassphraseProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *ResetDevice) GetPinProtection() bool {
 | |
| 	if m != nil && m.PinProtection != nil {
 | |
| 		return *m.PinProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *ResetDevice) GetLanguage() string {
 | |
| 	if m != nil && m.Language != nil {
 | |
| 		return *m.Language
 | |
| 	}
 | |
| 	return Default_ResetDevice_Language
 | |
| }
 | |
| 
 | |
| func (m *ResetDevice) GetLabel() string {
 | |
| 	if m != nil && m.Label != nil {
 | |
| 		return *m.Label
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *ResetDevice) GetU2FCounter() uint32 {
 | |
| 	if m != nil && m.U2FCounter != nil {
 | |
| 		return *m.U2FCounter
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *ResetDevice) GetSkipBackup() bool {
 | |
| 	if m != nil && m.SkipBackup != nil {
 | |
| 		return *m.SkipBackup
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Perform backup of the device seed if not backed up using ResetDevice
 | |
| // @next ButtonRequest
 | |
| type BackupDevice struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *BackupDevice) Reset()                    { *m = BackupDevice{} }
 | |
| func (m *BackupDevice) String() string            { return proto.CompactTextString(m) }
 | |
| func (*BackupDevice) ProtoMessage()               {}
 | |
| func (*BackupDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{28} }
 | |
| 
 | |
| // *
 | |
| // Response: Ask for additional entropy from host computer
 | |
| // @prev ResetDevice
 | |
| // @next EntropyAck
 | |
| type EntropyRequest struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EntropyRequest) Reset()                    { *m = EntropyRequest{} }
 | |
| func (m *EntropyRequest) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EntropyRequest) ProtoMessage()               {}
 | |
| func (*EntropyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{29} }
 | |
| 
 | |
| // *
 | |
| // Request: Provide additional entropy for seed generation function
 | |
| // @prev EntropyRequest
 | |
| // @next ButtonRequest
 | |
| type EntropyAck struct {
 | |
| 	Entropy          []byte `protobuf:"bytes,1,opt,name=entropy" json:"entropy,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EntropyAck) Reset()                    { *m = EntropyAck{} }
 | |
| func (m *EntropyAck) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EntropyAck) ProtoMessage()               {}
 | |
| func (*EntropyAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{30} }
 | |
| 
 | |
| func (m *EntropyAck) GetEntropy() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Entropy
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Start recovery workflow asking user for specific words of mnemonic
 | |
| // Used to recovery device safely even on untrusted computer.
 | |
| // @next WordRequest
 | |
| type RecoveryDevice struct {
 | |
| 	WordCount            *uint32 `protobuf:"varint,1,opt,name=word_count,json=wordCount" json:"word_count,omitempty"`
 | |
| 	PassphraseProtection *bool   `protobuf:"varint,2,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
 | |
| 	PinProtection        *bool   `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"`
 | |
| 	Language             *string `protobuf:"bytes,4,opt,name=language,def=english" json:"language,omitempty"`
 | |
| 	Label                *string `protobuf:"bytes,5,opt,name=label" json:"label,omitempty"`
 | |
| 	EnforceWordlist      *bool   `protobuf:"varint,6,opt,name=enforce_wordlist,json=enforceWordlist" json:"enforce_wordlist,omitempty"`
 | |
| 	// 7 reserved for unused recovery method
 | |
| 	Type             *uint32 `protobuf:"varint,8,opt,name=type" json:"type,omitempty"`
 | |
| 	U2FCounter       *uint32 `protobuf:"varint,9,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"`
 | |
| 	DryRun           *bool   `protobuf:"varint,10,opt,name=dry_run,json=dryRun" json:"dry_run,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *RecoveryDevice) Reset()                    { *m = RecoveryDevice{} }
 | |
| func (m *RecoveryDevice) String() string            { return proto.CompactTextString(m) }
 | |
| func (*RecoveryDevice) ProtoMessage()               {}
 | |
| func (*RecoveryDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{31} }
 | |
| 
 | |
| const Default_RecoveryDevice_Language string = "english"
 | |
| 
 | |
| func (m *RecoveryDevice) GetWordCount() uint32 {
 | |
| 	if m != nil && m.WordCount != nil {
 | |
| 		return *m.WordCount
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *RecoveryDevice) GetPassphraseProtection() bool {
 | |
| 	if m != nil && m.PassphraseProtection != nil {
 | |
| 		return *m.PassphraseProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *RecoveryDevice) GetPinProtection() bool {
 | |
| 	if m != nil && m.PinProtection != nil {
 | |
| 		return *m.PinProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *RecoveryDevice) GetLanguage() string {
 | |
| 	if m != nil && m.Language != nil {
 | |
| 		return *m.Language
 | |
| 	}
 | |
| 	return Default_RecoveryDevice_Language
 | |
| }
 | |
| 
 | |
| func (m *RecoveryDevice) GetLabel() string {
 | |
| 	if m != nil && m.Label != nil {
 | |
| 		return *m.Label
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *RecoveryDevice) GetEnforceWordlist() bool {
 | |
| 	if m != nil && m.EnforceWordlist != nil {
 | |
| 		return *m.EnforceWordlist
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *RecoveryDevice) GetType() uint32 {
 | |
| 	if m != nil && m.Type != nil {
 | |
| 		return *m.Type
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *RecoveryDevice) GetU2FCounter() uint32 {
 | |
| 	if m != nil && m.U2FCounter != nil {
 | |
| 		return *m.U2FCounter
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *RecoveryDevice) GetDryRun() bool {
 | |
| 	if m != nil && m.DryRun != nil {
 | |
| 		return *m.DryRun
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Device is waiting for user to enter word of the mnemonic
 | |
| // Its position is shown only on device's internal display.
 | |
| // @prev RecoveryDevice
 | |
| // @prev WordAck
 | |
| type WordRequest struct {
 | |
| 	Type             *WordRequestType `protobuf:"varint,1,opt,name=type,enum=WordRequestType" json:"type,omitempty"`
 | |
| 	XXX_unrecognized []byte           `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *WordRequest) Reset()                    { *m = WordRequest{} }
 | |
| func (m *WordRequest) String() string            { return proto.CompactTextString(m) }
 | |
| func (*WordRequest) ProtoMessage()               {}
 | |
| func (*WordRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{32} }
 | |
| 
 | |
| func (m *WordRequest) GetType() WordRequestType {
 | |
| 	if m != nil && m.Type != nil {
 | |
| 		return *m.Type
 | |
| 	}
 | |
| 	return WordRequestType_WordRequestType_Plain
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Computer replies with word from the mnemonic
 | |
| // @prev WordRequest
 | |
| // @next WordRequest
 | |
| // @next Success
 | |
| // @next Failure
 | |
| type WordAck struct {
 | |
| 	Word             *string `protobuf:"bytes,1,req,name=word" json:"word,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *WordAck) Reset()                    { *m = WordAck{} }
 | |
| func (m *WordAck) String() string            { return proto.CompactTextString(m) }
 | |
| func (*WordAck) ProtoMessage()               {}
 | |
| func (*WordAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{33} }
 | |
| 
 | |
| func (m *WordAck) GetWord() string {
 | |
| 	if m != nil && m.Word != nil {
 | |
| 		return *m.Word
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to sign message
 | |
| // @next MessageSignature
 | |
| // @next Failure
 | |
| type SignMessage struct {
 | |
| 	AddressN         []uint32         `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
 | |
| 	Message          []byte           `protobuf:"bytes,2,req,name=message" json:"message,omitempty"`
 | |
| 	CoinName         *string          `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
 | |
| 	ScriptType       *InputScriptType `protobuf:"varint,4,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"`
 | |
| 	XXX_unrecognized []byte           `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *SignMessage) Reset()                    { *m = SignMessage{} }
 | |
| func (m *SignMessage) String() string            { return proto.CompactTextString(m) }
 | |
| func (*SignMessage) ProtoMessage()               {}
 | |
| func (*SignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{34} }
 | |
| 
 | |
| const Default_SignMessage_CoinName string = "Bitcoin"
 | |
| const Default_SignMessage_ScriptType InputScriptType = InputScriptType_SPENDADDRESS
 | |
| 
 | |
| func (m *SignMessage) GetAddressN() []uint32 {
 | |
| 	if m != nil {
 | |
| 		return m.AddressN
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *SignMessage) GetMessage() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Message
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *SignMessage) GetCoinName() string {
 | |
| 	if m != nil && m.CoinName != nil {
 | |
| 		return *m.CoinName
 | |
| 	}
 | |
| 	return Default_SignMessage_CoinName
 | |
| }
 | |
| 
 | |
| func (m *SignMessage) GetScriptType() InputScriptType {
 | |
| 	if m != nil && m.ScriptType != nil {
 | |
| 		return *m.ScriptType
 | |
| 	}
 | |
| 	return Default_SignMessage_ScriptType
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to verify message
 | |
| // @next Success
 | |
| // @next Failure
 | |
| type VerifyMessage struct {
 | |
| 	Address          *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
 | |
| 	Signature        []byte  `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
 | |
| 	Message          []byte  `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"`
 | |
| 	CoinName         *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *VerifyMessage) Reset()                    { *m = VerifyMessage{} }
 | |
| func (m *VerifyMessage) String() string            { return proto.CompactTextString(m) }
 | |
| func (*VerifyMessage) ProtoMessage()               {}
 | |
| func (*VerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{35} }
 | |
| 
 | |
| const Default_VerifyMessage_CoinName string = "Bitcoin"
 | |
| 
 | |
| func (m *VerifyMessage) GetAddress() string {
 | |
| 	if m != nil && m.Address != nil {
 | |
| 		return *m.Address
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *VerifyMessage) GetSignature() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Signature
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *VerifyMessage) GetMessage() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Message
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *VerifyMessage) GetCoinName() string {
 | |
| 	if m != nil && m.CoinName != nil {
 | |
| 		return *m.CoinName
 | |
| 	}
 | |
| 	return Default_VerifyMessage_CoinName
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Signed message
 | |
| // @prev SignMessage
 | |
| type MessageSignature struct {
 | |
| 	Address          *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
 | |
| 	Signature        []byte  `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *MessageSignature) Reset()                    { *m = MessageSignature{} }
 | |
| func (m *MessageSignature) String() string            { return proto.CompactTextString(m) }
 | |
| func (*MessageSignature) ProtoMessage()               {}
 | |
| func (*MessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{36} }
 | |
| 
 | |
| func (m *MessageSignature) GetAddress() string {
 | |
| 	if m != nil && m.Address != nil {
 | |
| 		return *m.Address
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *MessageSignature) GetSignature() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Signature
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to encrypt message
 | |
| // @next EncryptedMessage
 | |
| // @next Failure
 | |
| type EncryptMessage struct {
 | |
| 	Pubkey           []byte   `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"`
 | |
| 	Message          []byte   `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
 | |
| 	DisplayOnly      *bool    `protobuf:"varint,3,opt,name=display_only,json=displayOnly" json:"display_only,omitempty"`
 | |
| 	AddressN         []uint32 `protobuf:"varint,4,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
 | |
| 	CoinName         *string  `protobuf:"bytes,5,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
 | |
| 	XXX_unrecognized []byte   `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EncryptMessage) Reset()                    { *m = EncryptMessage{} }
 | |
| func (m *EncryptMessage) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EncryptMessage) ProtoMessage()               {}
 | |
| func (*EncryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{37} }
 | |
| 
 | |
| const Default_EncryptMessage_CoinName string = "Bitcoin"
 | |
| 
 | |
| func (m *EncryptMessage) GetPubkey() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Pubkey
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EncryptMessage) GetMessage() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Message
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EncryptMessage) GetDisplayOnly() bool {
 | |
| 	if m != nil && m.DisplayOnly != nil {
 | |
| 		return *m.DisplayOnly
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *EncryptMessage) GetAddressN() []uint32 {
 | |
| 	if m != nil {
 | |
| 		return m.AddressN
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EncryptMessage) GetCoinName() string {
 | |
| 	if m != nil && m.CoinName != nil {
 | |
| 		return *m.CoinName
 | |
| 	}
 | |
| 	return Default_EncryptMessage_CoinName
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Encrypted message
 | |
| // @prev EncryptMessage
 | |
| type EncryptedMessage struct {
 | |
| 	Nonce            []byte `protobuf:"bytes,1,opt,name=nonce" json:"nonce,omitempty"`
 | |
| 	Message          []byte `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
 | |
| 	Hmac             []byte `protobuf:"bytes,3,opt,name=hmac" json:"hmac,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EncryptedMessage) Reset()                    { *m = EncryptedMessage{} }
 | |
| func (m *EncryptedMessage) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EncryptedMessage) ProtoMessage()               {}
 | |
| func (*EncryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{38} }
 | |
| 
 | |
| func (m *EncryptedMessage) GetNonce() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Nonce
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EncryptedMessage) GetMessage() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Message
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EncryptedMessage) GetHmac() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Hmac
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to decrypt message
 | |
| // @next Success
 | |
| // @next Failure
 | |
| type DecryptMessage struct {
 | |
| 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
 | |
| 	Nonce            []byte   `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"`
 | |
| 	Message          []byte   `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"`
 | |
| 	Hmac             []byte   `protobuf:"bytes,4,opt,name=hmac" json:"hmac,omitempty"`
 | |
| 	XXX_unrecognized []byte   `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DecryptMessage) Reset()                    { *m = DecryptMessage{} }
 | |
| func (m *DecryptMessage) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DecryptMessage) ProtoMessage()               {}
 | |
| func (*DecryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{39} }
 | |
| 
 | |
| func (m *DecryptMessage) GetAddressN() []uint32 {
 | |
| 	if m != nil {
 | |
| 		return m.AddressN
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *DecryptMessage) GetNonce() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Nonce
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *DecryptMessage) GetMessage() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Message
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *DecryptMessage) GetHmac() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Hmac
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Decrypted message
 | |
| // @prev DecryptedMessage
 | |
| type DecryptedMessage struct {
 | |
| 	Message          []byte  `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
 | |
| 	Address          *string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DecryptedMessage) Reset()                    { *m = DecryptedMessage{} }
 | |
| func (m *DecryptedMessage) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DecryptedMessage) ProtoMessage()               {}
 | |
| func (*DecryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{40} }
 | |
| 
 | |
| func (m *DecryptedMessage) GetMessage() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Message
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *DecryptedMessage) GetAddress() string {
 | |
| 	if m != nil && m.Address != nil {
 | |
| 		return *m.Address
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to encrypt or decrypt value of given key
 | |
| // @next CipheredKeyValue
 | |
| // @next Failure
 | |
| type CipherKeyValue struct {
 | |
| 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
 | |
| 	Key              *string  `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
 | |
| 	Value            []byte   `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"`
 | |
| 	Encrypt          *bool    `protobuf:"varint,4,opt,name=encrypt" json:"encrypt,omitempty"`
 | |
| 	AskOnEncrypt     *bool    `protobuf:"varint,5,opt,name=ask_on_encrypt,json=askOnEncrypt" json:"ask_on_encrypt,omitempty"`
 | |
| 	AskOnDecrypt     *bool    `protobuf:"varint,6,opt,name=ask_on_decrypt,json=askOnDecrypt" json:"ask_on_decrypt,omitempty"`
 | |
| 	Iv               []byte   `protobuf:"bytes,7,opt,name=iv" json:"iv,omitempty"`
 | |
| 	XXX_unrecognized []byte   `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *CipherKeyValue) Reset()                    { *m = CipherKeyValue{} }
 | |
| func (m *CipherKeyValue) String() string            { return proto.CompactTextString(m) }
 | |
| func (*CipherKeyValue) ProtoMessage()               {}
 | |
| func (*CipherKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{41} }
 | |
| 
 | |
| func (m *CipherKeyValue) GetAddressN() []uint32 {
 | |
| 	if m != nil {
 | |
| 		return m.AddressN
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *CipherKeyValue) GetKey() string {
 | |
| 	if m != nil && m.Key != nil {
 | |
| 		return *m.Key
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *CipherKeyValue) GetValue() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Value
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *CipherKeyValue) GetEncrypt() bool {
 | |
| 	if m != nil && m.Encrypt != nil {
 | |
| 		return *m.Encrypt
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *CipherKeyValue) GetAskOnEncrypt() bool {
 | |
| 	if m != nil && m.AskOnEncrypt != nil {
 | |
| 		return *m.AskOnEncrypt
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *CipherKeyValue) GetAskOnDecrypt() bool {
 | |
| 	if m != nil && m.AskOnDecrypt != nil {
 | |
| 		return *m.AskOnDecrypt
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *CipherKeyValue) GetIv() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Iv
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Return ciphered/deciphered value
 | |
| // @prev CipherKeyValue
 | |
| type CipheredKeyValue struct {
 | |
| 	Value            []byte `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *CipheredKeyValue) Reset()                    { *m = CipheredKeyValue{} }
 | |
| func (m *CipheredKeyValue) String() string            { return proto.CompactTextString(m) }
 | |
| func (*CipheredKeyValue) ProtoMessage()               {}
 | |
| func (*CipheredKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{42} }
 | |
| 
 | |
| func (m *CipheredKeyValue) GetValue() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Value
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Estimated size of the transaction
 | |
| // This behaves exactly like SignTx, which means that it can ask using TxRequest
 | |
| // This call is non-blocking (except possible PassphraseRequest to unlock the seed)
 | |
| // @next TxSize
 | |
| // @next Failure
 | |
| type EstimateTxSize struct {
 | |
| 	OutputsCount     *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"`
 | |
| 	InputsCount      *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"`
 | |
| 	CoinName         *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EstimateTxSize) Reset()                    { *m = EstimateTxSize{} }
 | |
| func (m *EstimateTxSize) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EstimateTxSize) ProtoMessage()               {}
 | |
| func (*EstimateTxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{43} }
 | |
| 
 | |
| const Default_EstimateTxSize_CoinName string = "Bitcoin"
 | |
| 
 | |
| func (m *EstimateTxSize) GetOutputsCount() uint32 {
 | |
| 	if m != nil && m.OutputsCount != nil {
 | |
| 		return *m.OutputsCount
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *EstimateTxSize) GetInputsCount() uint32 {
 | |
| 	if m != nil && m.InputsCount != nil {
 | |
| 		return *m.InputsCount
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *EstimateTxSize) GetCoinName() string {
 | |
| 	if m != nil && m.CoinName != nil {
 | |
| 		return *m.CoinName
 | |
| 	}
 | |
| 	return Default_EstimateTxSize_CoinName
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Estimated size of the transaction
 | |
| // @prev EstimateTxSize
 | |
| type TxSize struct {
 | |
| 	TxSize           *uint32 `protobuf:"varint,1,opt,name=tx_size,json=txSize" json:"tx_size,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *TxSize) Reset()                    { *m = TxSize{} }
 | |
| func (m *TxSize) String() string            { return proto.CompactTextString(m) }
 | |
| func (*TxSize) ProtoMessage()               {}
 | |
| func (*TxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{44} }
 | |
| 
 | |
| func (m *TxSize) GetTxSize() uint32 {
 | |
| 	if m != nil && m.TxSize != nil {
 | |
| 		return *m.TxSize
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to sign transaction
 | |
| // @next PassphraseRequest
 | |
| // @next PinMatrixRequest
 | |
| // @next TxRequest
 | |
| // @next Failure
 | |
| type SignTx struct {
 | |
| 	OutputsCount     *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"`
 | |
| 	InputsCount      *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"`
 | |
| 	CoinName         *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
 | |
| 	Version          *uint32 `protobuf:"varint,4,opt,name=version,def=1" json:"version,omitempty"`
 | |
| 	LockTime         *uint32 `protobuf:"varint,5,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *SignTx) Reset()                    { *m = SignTx{} }
 | |
| func (m *SignTx) String() string            { return proto.CompactTextString(m) }
 | |
| func (*SignTx) ProtoMessage()               {}
 | |
| func (*SignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{45} }
 | |
| 
 | |
| const Default_SignTx_CoinName string = "Bitcoin"
 | |
| const Default_SignTx_Version uint32 = 1
 | |
| const Default_SignTx_LockTime uint32 = 0
 | |
| 
 | |
| func (m *SignTx) GetOutputsCount() uint32 {
 | |
| 	if m != nil && m.OutputsCount != nil {
 | |
| 		return *m.OutputsCount
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *SignTx) GetInputsCount() uint32 {
 | |
| 	if m != nil && m.InputsCount != nil {
 | |
| 		return *m.InputsCount
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *SignTx) GetCoinName() string {
 | |
| 	if m != nil && m.CoinName != nil {
 | |
| 		return *m.CoinName
 | |
| 	}
 | |
| 	return Default_SignTx_CoinName
 | |
| }
 | |
| 
 | |
| func (m *SignTx) GetVersion() uint32 {
 | |
| 	if m != nil && m.Version != nil {
 | |
| 		return *m.Version
 | |
| 	}
 | |
| 	return Default_SignTx_Version
 | |
| }
 | |
| 
 | |
| func (m *SignTx) GetLockTime() uint32 {
 | |
| 	if m != nil && m.LockTime != nil {
 | |
| 		return *m.LockTime
 | |
| 	}
 | |
| 	return Default_SignTx_LockTime
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Simplified transaction signing
 | |
| // This method doesn't support streaming, so there are hardware limits in number of inputs and outputs.
 | |
| // In case of success, the result is returned using TxRequest message.
 | |
| // @next PassphraseRequest
 | |
| // @next PinMatrixRequest
 | |
| // @next TxRequest
 | |
| // @next Failure
 | |
| type SimpleSignTx struct {
 | |
| 	Inputs           []*TxInputType     `protobuf:"bytes,1,rep,name=inputs" json:"inputs,omitempty"`
 | |
| 	Outputs          []*TxOutputType    `protobuf:"bytes,2,rep,name=outputs" json:"outputs,omitempty"`
 | |
| 	Transactions     []*TransactionType `protobuf:"bytes,3,rep,name=transactions" json:"transactions,omitempty"`
 | |
| 	CoinName         *string            `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"`
 | |
| 	Version          *uint32            `protobuf:"varint,5,opt,name=version,def=1" json:"version,omitempty"`
 | |
| 	LockTime         *uint32            `protobuf:"varint,6,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"`
 | |
| 	XXX_unrecognized []byte             `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *SimpleSignTx) Reset()                    { *m = SimpleSignTx{} }
 | |
| func (m *SimpleSignTx) String() string            { return proto.CompactTextString(m) }
 | |
| func (*SimpleSignTx) ProtoMessage()               {}
 | |
| func (*SimpleSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{46} }
 | |
| 
 | |
| const Default_SimpleSignTx_CoinName string = "Bitcoin"
 | |
| const Default_SimpleSignTx_Version uint32 = 1
 | |
| const Default_SimpleSignTx_LockTime uint32 = 0
 | |
| 
 | |
| func (m *SimpleSignTx) GetInputs() []*TxInputType {
 | |
| 	if m != nil {
 | |
| 		return m.Inputs
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *SimpleSignTx) GetOutputs() []*TxOutputType {
 | |
| 	if m != nil {
 | |
| 		return m.Outputs
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *SimpleSignTx) GetTransactions() []*TransactionType {
 | |
| 	if m != nil {
 | |
| 		return m.Transactions
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *SimpleSignTx) GetCoinName() string {
 | |
| 	if m != nil && m.CoinName != nil {
 | |
| 		return *m.CoinName
 | |
| 	}
 | |
| 	return Default_SimpleSignTx_CoinName
 | |
| }
 | |
| 
 | |
| func (m *SimpleSignTx) GetVersion() uint32 {
 | |
| 	if m != nil && m.Version != nil {
 | |
| 		return *m.Version
 | |
| 	}
 | |
| 	return Default_SimpleSignTx_Version
 | |
| }
 | |
| 
 | |
| func (m *SimpleSignTx) GetLockTime() uint32 {
 | |
| 	if m != nil && m.LockTime != nil {
 | |
| 		return *m.LockTime
 | |
| 	}
 | |
| 	return Default_SimpleSignTx_LockTime
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Device asks for information for signing transaction or returns the last result
 | |
| // If request_index is set, device awaits TxAck message (with fields filled in according to request_type)
 | |
| // If signature_index is set, 'signature' contains signed input of signature_index's input
 | |
| // @prev SignTx
 | |
| // @prev SimpleSignTx
 | |
| // @prev TxAck
 | |
| type TxRequest struct {
 | |
| 	RequestType      *RequestType             `protobuf:"varint,1,opt,name=request_type,json=requestType,enum=RequestType" json:"request_type,omitempty"`
 | |
| 	Details          *TxRequestDetailsType    `protobuf:"bytes,2,opt,name=details" json:"details,omitempty"`
 | |
| 	Serialized       *TxRequestSerializedType `protobuf:"bytes,3,opt,name=serialized" json:"serialized,omitempty"`
 | |
| 	XXX_unrecognized []byte                   `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *TxRequest) Reset()                    { *m = TxRequest{} }
 | |
| func (m *TxRequest) String() string            { return proto.CompactTextString(m) }
 | |
| func (*TxRequest) ProtoMessage()               {}
 | |
| func (*TxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{47} }
 | |
| 
 | |
| func (m *TxRequest) GetRequestType() RequestType {
 | |
| 	if m != nil && m.RequestType != nil {
 | |
| 		return *m.RequestType
 | |
| 	}
 | |
| 	return RequestType_TXINPUT
 | |
| }
 | |
| 
 | |
| func (m *TxRequest) GetDetails() *TxRequestDetailsType {
 | |
| 	if m != nil {
 | |
| 		return m.Details
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *TxRequest) GetSerialized() *TxRequestSerializedType {
 | |
| 	if m != nil {
 | |
| 		return m.Serialized
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Reported transaction data
 | |
| // @prev TxRequest
 | |
| // @next TxRequest
 | |
| type TxAck struct {
 | |
| 	Tx               *TransactionType `protobuf:"bytes,1,opt,name=tx" json:"tx,omitempty"`
 | |
| 	XXX_unrecognized []byte           `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *TxAck) Reset()                    { *m = TxAck{} }
 | |
| func (m *TxAck) String() string            { return proto.CompactTextString(m) }
 | |
| func (*TxAck) ProtoMessage()               {}
 | |
| func (*TxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{48} }
 | |
| 
 | |
| func (m *TxAck) GetTx() *TransactionType {
 | |
| 	if m != nil {
 | |
| 		return m.Tx
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to sign transaction
 | |
| // All fields are optional from the protocol's point of view. Each field defaults to value `0` if missing.
 | |
| // Note: the first at most 1024 bytes of data MUST be transmitted as part of this message.
 | |
| // @next PassphraseRequest
 | |
| // @next PinMatrixRequest
 | |
| // @next EthereumTxRequest
 | |
| // @next Failure
 | |
| type EthereumSignTx struct {
 | |
| 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
 | |
| 	Nonce            []byte   `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"`
 | |
| 	GasPrice         []byte   `protobuf:"bytes,3,opt,name=gas_price,json=gasPrice" json:"gas_price,omitempty"`
 | |
| 	GasLimit         []byte   `protobuf:"bytes,4,opt,name=gas_limit,json=gasLimit" json:"gas_limit,omitempty"`
 | |
| 	To               []byte   `protobuf:"bytes,5,opt,name=to" json:"to,omitempty"`
 | |
| 	Value            []byte   `protobuf:"bytes,6,opt,name=value" json:"value,omitempty"`
 | |
| 	DataInitialChunk []byte   `protobuf:"bytes,7,opt,name=data_initial_chunk,json=dataInitialChunk" json:"data_initial_chunk,omitempty"`
 | |
| 	DataLength       *uint32  `protobuf:"varint,8,opt,name=data_length,json=dataLength" json:"data_length,omitempty"`
 | |
| 	ChainId          *uint32  `protobuf:"varint,9,opt,name=chain_id,json=chainId" json:"chain_id,omitempty"`
 | |
| 	XXX_unrecognized []byte   `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignTx) Reset()                    { *m = EthereumSignTx{} }
 | |
| func (m *EthereumSignTx) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EthereumSignTx) ProtoMessage()               {}
 | |
| func (*EthereumSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{49} }
 | |
| 
 | |
| func (m *EthereumSignTx) GetAddressN() []uint32 {
 | |
| 	if m != nil {
 | |
| 		return m.AddressN
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignTx) GetNonce() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Nonce
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignTx) GetGasPrice() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.GasPrice
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignTx) GetGasLimit() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.GasLimit
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignTx) GetTo() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.To
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignTx) GetValue() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Value
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignTx) GetDataInitialChunk() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.DataInitialChunk
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignTx) GetDataLength() uint32 {
 | |
| 	if m != nil && m.DataLength != nil {
 | |
| 		return *m.DataLength
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignTx) GetChainId() uint32 {
 | |
| 	if m != nil && m.ChainId != nil {
 | |
| 		return *m.ChainId
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Device asks for more data from transaction payload, or returns the signature.
 | |
| // If data_length is set, device awaits that many more bytes of payload.
 | |
| // Otherwise, the signature_* fields contain the computed transaction signature. All three fields will be present.
 | |
| // @prev EthereumSignTx
 | |
| // @next EthereumTxAck
 | |
| type EthereumTxRequest struct {
 | |
| 	DataLength       *uint32 `protobuf:"varint,1,opt,name=data_length,json=dataLength" json:"data_length,omitempty"`
 | |
| 	SignatureV       *uint32 `protobuf:"varint,2,opt,name=signature_v,json=signatureV" json:"signature_v,omitempty"`
 | |
| 	SignatureR       []byte  `protobuf:"bytes,3,opt,name=signature_r,json=signatureR" json:"signature_r,omitempty"`
 | |
| 	SignatureS       []byte  `protobuf:"bytes,4,opt,name=signature_s,json=signatureS" json:"signature_s,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EthereumTxRequest) Reset()                    { *m = EthereumTxRequest{} }
 | |
| func (m *EthereumTxRequest) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EthereumTxRequest) ProtoMessage()               {}
 | |
| func (*EthereumTxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{50} }
 | |
| 
 | |
| func (m *EthereumTxRequest) GetDataLength() uint32 {
 | |
| 	if m != nil && m.DataLength != nil {
 | |
| 		return *m.DataLength
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *EthereumTxRequest) GetSignatureV() uint32 {
 | |
| 	if m != nil && m.SignatureV != nil {
 | |
| 		return *m.SignatureV
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *EthereumTxRequest) GetSignatureR() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.SignatureR
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumTxRequest) GetSignatureS() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.SignatureS
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Transaction payload data.
 | |
| // @prev EthereumTxRequest
 | |
| // @next EthereumTxRequest
 | |
| type EthereumTxAck struct {
 | |
| 	DataChunk        []byte `protobuf:"bytes,1,opt,name=data_chunk,json=dataChunk" json:"data_chunk,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EthereumTxAck) Reset()                    { *m = EthereumTxAck{} }
 | |
| func (m *EthereumTxAck) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EthereumTxAck) ProtoMessage()               {}
 | |
| func (*EthereumTxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{51} }
 | |
| 
 | |
| func (m *EthereumTxAck) GetDataChunk() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.DataChunk
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to sign message
 | |
| // @next EthereumMessageSignature
 | |
| // @next Failure
 | |
| type EthereumSignMessage struct {
 | |
| 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"`
 | |
| 	Message          []byte   `protobuf:"bytes,2,req,name=message" json:"message,omitempty"`
 | |
| 	XXX_unrecognized []byte   `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignMessage) Reset()                    { *m = EthereumSignMessage{} }
 | |
| func (m *EthereumSignMessage) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EthereumSignMessage) ProtoMessage()               {}
 | |
| func (*EthereumSignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{52} }
 | |
| 
 | |
| func (m *EthereumSignMessage) GetAddressN() []uint32 {
 | |
| 	if m != nil {
 | |
| 		return m.AddressN
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumSignMessage) GetMessage() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Message
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to verify message
 | |
| // @next Success
 | |
| // @next Failure
 | |
| type EthereumVerifyMessage struct {
 | |
| 	Address          []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
 | |
| 	Signature        []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
 | |
| 	Message          []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EthereumVerifyMessage) Reset()                    { *m = EthereumVerifyMessage{} }
 | |
| func (m *EthereumVerifyMessage) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EthereumVerifyMessage) ProtoMessage()               {}
 | |
| func (*EthereumVerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{53} }
 | |
| 
 | |
| func (m *EthereumVerifyMessage) GetAddress() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Address
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumVerifyMessage) GetSignature() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Signature
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumVerifyMessage) GetMessage() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Message
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Signed message
 | |
| // @prev EthereumSignMessage
 | |
| type EthereumMessageSignature struct {
 | |
| 	Address          []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
 | |
| 	Signature        []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *EthereumMessageSignature) Reset()                    { *m = EthereumMessageSignature{} }
 | |
| func (m *EthereumMessageSignature) String() string            { return proto.CompactTextString(m) }
 | |
| func (*EthereumMessageSignature) ProtoMessage()               {}
 | |
| func (*EthereumMessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{54} }
 | |
| 
 | |
| func (m *EthereumMessageSignature) GetAddress() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Address
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *EthereumMessageSignature) GetSignature() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Signature
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to sign identity
 | |
| // @next SignedIdentity
 | |
| // @next Failure
 | |
| type SignIdentity struct {
 | |
| 	Identity         *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"`
 | |
| 	ChallengeHidden  []byte        `protobuf:"bytes,2,opt,name=challenge_hidden,json=challengeHidden" json:"challenge_hidden,omitempty"`
 | |
| 	ChallengeVisual  *string       `protobuf:"bytes,3,opt,name=challenge_visual,json=challengeVisual" json:"challenge_visual,omitempty"`
 | |
| 	EcdsaCurveName   *string       `protobuf:"bytes,4,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"`
 | |
| 	XXX_unrecognized []byte        `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *SignIdentity) Reset()                    { *m = SignIdentity{} }
 | |
| func (m *SignIdentity) String() string            { return proto.CompactTextString(m) }
 | |
| func (*SignIdentity) ProtoMessage()               {}
 | |
| func (*SignIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{55} }
 | |
| 
 | |
| func (m *SignIdentity) GetIdentity() *IdentityType {
 | |
| 	if m != nil {
 | |
| 		return m.Identity
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *SignIdentity) GetChallengeHidden() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.ChallengeHidden
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *SignIdentity) GetChallengeVisual() string {
 | |
| 	if m != nil && m.ChallengeVisual != nil {
 | |
| 		return *m.ChallengeVisual
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *SignIdentity) GetEcdsaCurveName() string {
 | |
| 	if m != nil && m.EcdsaCurveName != nil {
 | |
| 		return *m.EcdsaCurveName
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Device provides signed identity
 | |
| // @prev SignIdentity
 | |
| type SignedIdentity struct {
 | |
| 	Address          *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
 | |
| 	PublicKey        []byte  `protobuf:"bytes,2,opt,name=public_key,json=publicKey" json:"public_key,omitempty"`
 | |
| 	Signature        []byte  `protobuf:"bytes,3,opt,name=signature" json:"signature,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *SignedIdentity) Reset()                    { *m = SignedIdentity{} }
 | |
| func (m *SignedIdentity) String() string            { return proto.CompactTextString(m) }
 | |
| func (*SignedIdentity) ProtoMessage()               {}
 | |
| func (*SignedIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{56} }
 | |
| 
 | |
| func (m *SignedIdentity) GetAddress() string {
 | |
| 	if m != nil && m.Address != nil {
 | |
| 		return *m.Address
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *SignedIdentity) GetPublicKey() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.PublicKey
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *SignedIdentity) GetSignature() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Signature
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to generate ECDH session key
 | |
| // @next ECDHSessionKey
 | |
| // @next Failure
 | |
| type GetECDHSessionKey struct {
 | |
| 	Identity         *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"`
 | |
| 	PeerPublicKey    []byte        `protobuf:"bytes,2,opt,name=peer_public_key,json=peerPublicKey" json:"peer_public_key,omitempty"`
 | |
| 	EcdsaCurveName   *string       `protobuf:"bytes,3,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"`
 | |
| 	XXX_unrecognized []byte        `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *GetECDHSessionKey) Reset()                    { *m = GetECDHSessionKey{} }
 | |
| func (m *GetECDHSessionKey) String() string            { return proto.CompactTextString(m) }
 | |
| func (*GetECDHSessionKey) ProtoMessage()               {}
 | |
| func (*GetECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{57} }
 | |
| 
 | |
| func (m *GetECDHSessionKey) GetIdentity() *IdentityType {
 | |
| 	if m != nil {
 | |
| 		return m.Identity
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *GetECDHSessionKey) GetPeerPublicKey() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.PeerPublicKey
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *GetECDHSessionKey) GetEcdsaCurveName() string {
 | |
| 	if m != nil && m.EcdsaCurveName != nil {
 | |
| 		return *m.EcdsaCurveName
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Device provides ECDH session key
 | |
| // @prev GetECDHSessionKey
 | |
| type ECDHSessionKey struct {
 | |
| 	SessionKey       []byte `protobuf:"bytes,1,opt,name=session_key,json=sessionKey" json:"session_key,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *ECDHSessionKey) Reset()                    { *m = ECDHSessionKey{} }
 | |
| func (m *ECDHSessionKey) String() string            { return proto.CompactTextString(m) }
 | |
| func (*ECDHSessionKey) ProtoMessage()               {}
 | |
| func (*ECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{58} }
 | |
| 
 | |
| func (m *ECDHSessionKey) GetSessionKey() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.SessionKey
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Set U2F counter
 | |
| // @next Success
 | |
| type SetU2FCounter struct {
 | |
| 	U2FCounter       *uint32 `protobuf:"varint,1,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *SetU2FCounter) Reset()                    { *m = SetU2FCounter{} }
 | |
| func (m *SetU2FCounter) String() string            { return proto.CompactTextString(m) }
 | |
| func (*SetU2FCounter) ProtoMessage()               {}
 | |
| func (*SetU2FCounter) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{59} }
 | |
| 
 | |
| func (m *SetU2FCounter) GetU2FCounter() uint32 {
 | |
| 	if m != nil && m.U2FCounter != nil {
 | |
| 		return *m.U2FCounter
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to erase its firmware (so it can be replaced via FirmwareUpload)
 | |
| // @next Success
 | |
| // @next FirmwareRequest
 | |
| // @next Failure
 | |
| type FirmwareErase struct {
 | |
| 	Length           *uint32 `protobuf:"varint,1,opt,name=length" json:"length,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *FirmwareErase) Reset()                    { *m = FirmwareErase{} }
 | |
| func (m *FirmwareErase) String() string            { return proto.CompactTextString(m) }
 | |
| func (*FirmwareErase) ProtoMessage()               {}
 | |
| func (*FirmwareErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{60} }
 | |
| 
 | |
| func (m *FirmwareErase) GetLength() uint32 {
 | |
| 	if m != nil && m.Length != nil {
 | |
| 		return *m.Length
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Ask for firmware chunk
 | |
| // @next FirmwareUpload
 | |
| type FirmwareRequest struct {
 | |
| 	Offset           *uint32 `protobuf:"varint,1,opt,name=offset" json:"offset,omitempty"`
 | |
| 	Length           *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *FirmwareRequest) Reset()                    { *m = FirmwareRequest{} }
 | |
| func (m *FirmwareRequest) String() string            { return proto.CompactTextString(m) }
 | |
| func (*FirmwareRequest) ProtoMessage()               {}
 | |
| func (*FirmwareRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{61} }
 | |
| 
 | |
| func (m *FirmwareRequest) GetOffset() uint32 {
 | |
| 	if m != nil && m.Offset != nil {
 | |
| 		return *m.Offset
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *FirmwareRequest) GetLength() uint32 {
 | |
| 	if m != nil && m.Length != nil {
 | |
| 		return *m.Length
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Send firmware in binary form to the device
 | |
| // @next Success
 | |
| // @next Failure
 | |
| type FirmwareUpload struct {
 | |
| 	Payload          []byte `protobuf:"bytes,1,req,name=payload" json:"payload,omitempty"`
 | |
| 	Hash             []byte `protobuf:"bytes,2,opt,name=hash" json:"hash,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *FirmwareUpload) Reset()                    { *m = FirmwareUpload{} }
 | |
| func (m *FirmwareUpload) String() string            { return proto.CompactTextString(m) }
 | |
| func (*FirmwareUpload) ProtoMessage()               {}
 | |
| func (*FirmwareUpload) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{62} }
 | |
| 
 | |
| func (m *FirmwareUpload) GetPayload() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Payload
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *FirmwareUpload) GetHash() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Hash
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Perform a device self-test
 | |
| // @next Success
 | |
| // @next Failure
 | |
| type SelfTest struct {
 | |
| 	Payload          []byte `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *SelfTest) Reset()                    { *m = SelfTest{} }
 | |
| func (m *SelfTest) String() string            { return proto.CompactTextString(m) }
 | |
| func (*SelfTest) ProtoMessage()               {}
 | |
| func (*SelfTest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{63} }
 | |
| 
 | |
| func (m *SelfTest) GetPayload() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Payload
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: "Press" the button on the device
 | |
| // @next Success
 | |
| type DebugLinkDecision struct {
 | |
| 	YesNo            *bool  `protobuf:"varint,1,req,name=yes_no,json=yesNo" json:"yes_no,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkDecision) Reset()                    { *m = DebugLinkDecision{} }
 | |
| func (m *DebugLinkDecision) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DebugLinkDecision) ProtoMessage()               {}
 | |
| func (*DebugLinkDecision) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{64} }
 | |
| 
 | |
| func (m *DebugLinkDecision) GetYesNo() bool {
 | |
| 	if m != nil && m.YesNo != nil {
 | |
| 		return *m.YesNo
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Computer asks for device state
 | |
| // @next DebugLinkState
 | |
| type DebugLinkGetState struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkGetState) Reset()                    { *m = DebugLinkGetState{} }
 | |
| func (m *DebugLinkGetState) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DebugLinkGetState) ProtoMessage()               {}
 | |
| func (*DebugLinkGetState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{65} }
 | |
| 
 | |
| // *
 | |
| // Response: Device current state
 | |
| // @prev DebugLinkGetState
 | |
| type DebugLinkState struct {
 | |
| 	Layout               []byte      `protobuf:"bytes,1,opt,name=layout" json:"layout,omitempty"`
 | |
| 	Pin                  *string     `protobuf:"bytes,2,opt,name=pin" json:"pin,omitempty"`
 | |
| 	Matrix               *string     `protobuf:"bytes,3,opt,name=matrix" json:"matrix,omitempty"`
 | |
| 	Mnemonic             *string     `protobuf:"bytes,4,opt,name=mnemonic" json:"mnemonic,omitempty"`
 | |
| 	Node                 *HDNodeType `protobuf:"bytes,5,opt,name=node" json:"node,omitempty"`
 | |
| 	PassphraseProtection *bool       `protobuf:"varint,6,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"`
 | |
| 	ResetWord            *string     `protobuf:"bytes,7,opt,name=reset_word,json=resetWord" json:"reset_word,omitempty"`
 | |
| 	ResetEntropy         []byte      `protobuf:"bytes,8,opt,name=reset_entropy,json=resetEntropy" json:"reset_entropy,omitempty"`
 | |
| 	RecoveryFakeWord     *string     `protobuf:"bytes,9,opt,name=recovery_fake_word,json=recoveryFakeWord" json:"recovery_fake_word,omitempty"`
 | |
| 	RecoveryWordPos      *uint32     `protobuf:"varint,10,opt,name=recovery_word_pos,json=recoveryWordPos" json:"recovery_word_pos,omitempty"`
 | |
| 	XXX_unrecognized     []byte      `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkState) Reset()                    { *m = DebugLinkState{} }
 | |
| func (m *DebugLinkState) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DebugLinkState) ProtoMessage()               {}
 | |
| func (*DebugLinkState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{66} }
 | |
| 
 | |
| func (m *DebugLinkState) GetLayout() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Layout
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkState) GetPin() string {
 | |
| 	if m != nil && m.Pin != nil {
 | |
| 		return *m.Pin
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkState) GetMatrix() string {
 | |
| 	if m != nil && m.Matrix != nil {
 | |
| 		return *m.Matrix
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkState) GetMnemonic() string {
 | |
| 	if m != nil && m.Mnemonic != nil {
 | |
| 		return *m.Mnemonic
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkState) GetNode() *HDNodeType {
 | |
| 	if m != nil {
 | |
| 		return m.Node
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkState) GetPassphraseProtection() bool {
 | |
| 	if m != nil && m.PassphraseProtection != nil {
 | |
| 		return *m.PassphraseProtection
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkState) GetResetWord() string {
 | |
| 	if m != nil && m.ResetWord != nil {
 | |
| 		return *m.ResetWord
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkState) GetResetEntropy() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.ResetEntropy
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkState) GetRecoveryFakeWord() string {
 | |
| 	if m != nil && m.RecoveryFakeWord != nil {
 | |
| 		return *m.RecoveryFakeWord
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkState) GetRecoveryWordPos() uint32 {
 | |
| 	if m != nil && m.RecoveryWordPos != nil {
 | |
| 		return *m.RecoveryWordPos
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Ask device to restart
 | |
| type DebugLinkStop struct {
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkStop) Reset()                    { *m = DebugLinkStop{} }
 | |
| func (m *DebugLinkStop) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DebugLinkStop) ProtoMessage()               {}
 | |
| func (*DebugLinkStop) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{67} }
 | |
| 
 | |
| // *
 | |
| // Response: Device wants host to log event
 | |
| type DebugLinkLog struct {
 | |
| 	Level            *uint32 `protobuf:"varint,1,opt,name=level" json:"level,omitempty"`
 | |
| 	Bucket           *string `protobuf:"bytes,2,opt,name=bucket" json:"bucket,omitempty"`
 | |
| 	Text             *string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkLog) Reset()                    { *m = DebugLinkLog{} }
 | |
| func (m *DebugLinkLog) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DebugLinkLog) ProtoMessage()               {}
 | |
| func (*DebugLinkLog) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{68} }
 | |
| 
 | |
| func (m *DebugLinkLog) GetLevel() uint32 {
 | |
| 	if m != nil && m.Level != nil {
 | |
| 		return *m.Level
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkLog) GetBucket() string {
 | |
| 	if m != nil && m.Bucket != nil {
 | |
| 		return *m.Bucket
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkLog) GetText() string {
 | |
| 	if m != nil && m.Text != nil {
 | |
| 		return *m.Text
 | |
| 	}
 | |
| 	return ""
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Read memory from device
 | |
| // @next DebugLinkMemory
 | |
| type DebugLinkMemoryRead struct {
 | |
| 	Address          *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"`
 | |
| 	Length           *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkMemoryRead) Reset()                    { *m = DebugLinkMemoryRead{} }
 | |
| func (m *DebugLinkMemoryRead) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DebugLinkMemoryRead) ProtoMessage()               {}
 | |
| func (*DebugLinkMemoryRead) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{69} }
 | |
| 
 | |
| func (m *DebugLinkMemoryRead) GetAddress() uint32 {
 | |
| 	if m != nil && m.Address != nil {
 | |
| 		return *m.Address
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkMemoryRead) GetLength() uint32 {
 | |
| 	if m != nil && m.Length != nil {
 | |
| 		return *m.Length
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Response: Device sends memory back
 | |
| // @prev DebugLinkMemoryRead
 | |
| type DebugLinkMemory struct {
 | |
| 	Memory           []byte `protobuf:"bytes,1,opt,name=memory" json:"memory,omitempty"`
 | |
| 	XXX_unrecognized []byte `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkMemory) Reset()                    { *m = DebugLinkMemory{} }
 | |
| func (m *DebugLinkMemory) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DebugLinkMemory) ProtoMessage()               {}
 | |
| func (*DebugLinkMemory) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{70} }
 | |
| 
 | |
| func (m *DebugLinkMemory) GetMemory() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Memory
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Write memory to device.
 | |
| // WARNING: Writing to the wrong location can irreparably break the device.
 | |
| type DebugLinkMemoryWrite struct {
 | |
| 	Address          *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"`
 | |
| 	Memory           []byte  `protobuf:"bytes,2,opt,name=memory" json:"memory,omitempty"`
 | |
| 	Flash            *bool   `protobuf:"varint,3,opt,name=flash" json:"flash,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkMemoryWrite) Reset()                    { *m = DebugLinkMemoryWrite{} }
 | |
| func (m *DebugLinkMemoryWrite) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DebugLinkMemoryWrite) ProtoMessage()               {}
 | |
| func (*DebugLinkMemoryWrite) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{71} }
 | |
| 
 | |
| func (m *DebugLinkMemoryWrite) GetAddress() uint32 {
 | |
| 	if m != nil && m.Address != nil {
 | |
| 		return *m.Address
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkMemoryWrite) GetMemory() []byte {
 | |
| 	if m != nil {
 | |
| 		return m.Memory
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkMemoryWrite) GetFlash() bool {
 | |
| 	if m != nil && m.Flash != nil {
 | |
| 		return *m.Flash
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| // *
 | |
| // Request: Erase block of flash on device
 | |
| // WARNING: Writing to the wrong location can irreparably break the device.
 | |
| type DebugLinkFlashErase struct {
 | |
| 	Sector           *uint32 `protobuf:"varint,1,opt,name=sector" json:"sector,omitempty"`
 | |
| 	XXX_unrecognized []byte  `json:"-"`
 | |
| }
 | |
| 
 | |
| func (m *DebugLinkFlashErase) Reset()                    { *m = DebugLinkFlashErase{} }
 | |
| func (m *DebugLinkFlashErase) String() string            { return proto.CompactTextString(m) }
 | |
| func (*DebugLinkFlashErase) ProtoMessage()               {}
 | |
| func (*DebugLinkFlashErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{72} }
 | |
| 
 | |
| func (m *DebugLinkFlashErase) GetSector() uint32 {
 | |
| 	if m != nil && m.Sector != nil {
 | |
| 		return *m.Sector
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| func init() {
 | |
| 	proto.RegisterType((*Initialize)(nil), "Initialize")
 | |
| 	proto.RegisterType((*GetFeatures)(nil), "GetFeatures")
 | |
| 	proto.RegisterType((*Features)(nil), "Features")
 | |
| 	proto.RegisterType((*ClearSession)(nil), "ClearSession")
 | |
| 	proto.RegisterType((*ApplySettings)(nil), "ApplySettings")
 | |
| 	proto.RegisterType((*ApplyFlags)(nil), "ApplyFlags")
 | |
| 	proto.RegisterType((*ChangePin)(nil), "ChangePin")
 | |
| 	proto.RegisterType((*Ping)(nil), "Ping")
 | |
| 	proto.RegisterType((*Success)(nil), "Success")
 | |
| 	proto.RegisterType((*Failure)(nil), "Failure")
 | |
| 	proto.RegisterType((*ButtonRequest)(nil), "ButtonRequest")
 | |
| 	proto.RegisterType((*ButtonAck)(nil), "ButtonAck")
 | |
| 	proto.RegisterType((*PinMatrixRequest)(nil), "PinMatrixRequest")
 | |
| 	proto.RegisterType((*PinMatrixAck)(nil), "PinMatrixAck")
 | |
| 	proto.RegisterType((*Cancel)(nil), "Cancel")
 | |
| 	proto.RegisterType((*PassphraseRequest)(nil), "PassphraseRequest")
 | |
| 	proto.RegisterType((*PassphraseAck)(nil), "PassphraseAck")
 | |
| 	proto.RegisterType((*GetEntropy)(nil), "GetEntropy")
 | |
| 	proto.RegisterType((*Entropy)(nil), "Entropy")
 | |
| 	proto.RegisterType((*GetPublicKey)(nil), "GetPublicKey")
 | |
| 	proto.RegisterType((*PublicKey)(nil), "PublicKey")
 | |
| 	proto.RegisterType((*GetAddress)(nil), "GetAddress")
 | |
| 	proto.RegisterType((*EthereumGetAddress)(nil), "EthereumGetAddress")
 | |
| 	proto.RegisterType((*Address)(nil), "Address")
 | |
| 	proto.RegisterType((*EthereumAddress)(nil), "EthereumAddress")
 | |
| 	proto.RegisterType((*WipeDevice)(nil), "WipeDevice")
 | |
| 	proto.RegisterType((*LoadDevice)(nil), "LoadDevice")
 | |
| 	proto.RegisterType((*ResetDevice)(nil), "ResetDevice")
 | |
| 	proto.RegisterType((*BackupDevice)(nil), "BackupDevice")
 | |
| 	proto.RegisterType((*EntropyRequest)(nil), "EntropyRequest")
 | |
| 	proto.RegisterType((*EntropyAck)(nil), "EntropyAck")
 | |
| 	proto.RegisterType((*RecoveryDevice)(nil), "RecoveryDevice")
 | |
| 	proto.RegisterType((*WordRequest)(nil), "WordRequest")
 | |
| 	proto.RegisterType((*WordAck)(nil), "WordAck")
 | |
| 	proto.RegisterType((*SignMessage)(nil), "SignMessage")
 | |
| 	proto.RegisterType((*VerifyMessage)(nil), "VerifyMessage")
 | |
| 	proto.RegisterType((*MessageSignature)(nil), "MessageSignature")
 | |
| 	proto.RegisterType((*EncryptMessage)(nil), "EncryptMessage")
 | |
| 	proto.RegisterType((*EncryptedMessage)(nil), "EncryptedMessage")
 | |
| 	proto.RegisterType((*DecryptMessage)(nil), "DecryptMessage")
 | |
| 	proto.RegisterType((*DecryptedMessage)(nil), "DecryptedMessage")
 | |
| 	proto.RegisterType((*CipherKeyValue)(nil), "CipherKeyValue")
 | |
| 	proto.RegisterType((*CipheredKeyValue)(nil), "CipheredKeyValue")
 | |
| 	proto.RegisterType((*EstimateTxSize)(nil), "EstimateTxSize")
 | |
| 	proto.RegisterType((*TxSize)(nil), "TxSize")
 | |
| 	proto.RegisterType((*SignTx)(nil), "SignTx")
 | |
| 	proto.RegisterType((*SimpleSignTx)(nil), "SimpleSignTx")
 | |
| 	proto.RegisterType((*TxRequest)(nil), "TxRequest")
 | |
| 	proto.RegisterType((*TxAck)(nil), "TxAck")
 | |
| 	proto.RegisterType((*EthereumSignTx)(nil), "EthereumSignTx")
 | |
| 	proto.RegisterType((*EthereumTxRequest)(nil), "EthereumTxRequest")
 | |
| 	proto.RegisterType((*EthereumTxAck)(nil), "EthereumTxAck")
 | |
| 	proto.RegisterType((*EthereumSignMessage)(nil), "EthereumSignMessage")
 | |
| 	proto.RegisterType((*EthereumVerifyMessage)(nil), "EthereumVerifyMessage")
 | |
| 	proto.RegisterType((*EthereumMessageSignature)(nil), "EthereumMessageSignature")
 | |
| 	proto.RegisterType((*SignIdentity)(nil), "SignIdentity")
 | |
| 	proto.RegisterType((*SignedIdentity)(nil), "SignedIdentity")
 | |
| 	proto.RegisterType((*GetECDHSessionKey)(nil), "GetECDHSessionKey")
 | |
| 	proto.RegisterType((*ECDHSessionKey)(nil), "ECDHSessionKey")
 | |
| 	proto.RegisterType((*SetU2FCounter)(nil), "SetU2FCounter")
 | |
| 	proto.RegisterType((*FirmwareErase)(nil), "FirmwareErase")
 | |
| 	proto.RegisterType((*FirmwareRequest)(nil), "FirmwareRequest")
 | |
| 	proto.RegisterType((*FirmwareUpload)(nil), "FirmwareUpload")
 | |
| 	proto.RegisterType((*SelfTest)(nil), "SelfTest")
 | |
| 	proto.RegisterType((*DebugLinkDecision)(nil), "DebugLinkDecision")
 | |
| 	proto.RegisterType((*DebugLinkGetState)(nil), "DebugLinkGetState")
 | |
| 	proto.RegisterType((*DebugLinkState)(nil), "DebugLinkState")
 | |
| 	proto.RegisterType((*DebugLinkStop)(nil), "DebugLinkStop")
 | |
| 	proto.RegisterType((*DebugLinkLog)(nil), "DebugLinkLog")
 | |
| 	proto.RegisterType((*DebugLinkMemoryRead)(nil), "DebugLinkMemoryRead")
 | |
| 	proto.RegisterType((*DebugLinkMemory)(nil), "DebugLinkMemory")
 | |
| 	proto.RegisterType((*DebugLinkMemoryWrite)(nil), "DebugLinkMemoryWrite")
 | |
| 	proto.RegisterType((*DebugLinkFlashErase)(nil), "DebugLinkFlashErase")
 | |
| 	proto.RegisterEnum("MessageType", MessageType_name, MessageType_value)
 | |
| }
 | |
| 
 | |
| func init() { proto.RegisterFile("messages.proto", fileDescriptor1) }
 | |
| 
 | |
| var fileDescriptor1 = []byte{
 | |
| 	// 3424 bytes of a gzipped FileDescriptorProto
 | |
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0xcb, 0x6f, 0xdc, 0x46,
 | |
| 	0x9a, 0x5f, 0x76, 0xb7, 0xfa, 0xf1, 0x35, 0xbb, 0x55, 0xa2, 0x2d, 0xbb, 0x2d, 0x5b, 0xb6, 0x4c,
 | |
| 	0xc9, 0xb6, 0x64, 0x27, 0xed, 0x44, 0x79, 0x6c, 0xd6, 0xbb, 0x79, 0xc8, 0x7a, 0xd8, 0xde, 0xd8,
 | |
| 	0x8e, 0xc0, 0x56, 0x9c, 0xdb, 0x12, 0x14, 0x59, 0xea, 0xae, 0x55, 0x37, 0xc9, 0xf0, 0xa1, 0xa8,
 | |
| 	0x7d, 0xd8, 0xeb, 0xee, 0x65, 0x81, 0xec, 0x69, 0x73, 0x1a, 0xe4, 0x36, 0x19, 0x04, 0x18, 0x0c,
 | |
| 	0x30, 0x18, 0x60, 0x72, 0x9a, 0x3f, 0x60, 0xfe, 0x8b, 0x39, 0xce, 0x1f, 0x30, 0xe7, 0x41, 0x3d,
 | |
| 	0x48, 0x16, 0x29, 0xb6, 0x6c, 0x27, 0xc0, 0x5c, 0x04, 0xd6, 0x57, 0xbf, 0xfe, 0xea, 0x7b, 0xd5,
 | |
| 	0x57, 0x5f, 0x7d, 0x25, 0xe8, 0x4e, 0x70, 0x18, 0x5a, 0x43, 0x1c, 0xf6, 0xfd, 0xc0, 0x8b, 0xbc,
 | |
| 	0xa5, 0x76, 0x34, 0xf5, 0x93, 0x81, 0xae, 0x02, 0x3c, 0x71, 0x49, 0x44, 0xac, 0x31, 0x79, 0x89,
 | |
| 	0xf5, 0x0e, 0xb4, 0x1f, 0xe1, 0x68, 0x0f, 0x5b, 0x51, 0x1c, 0xe0, 0x50, 0xff, 0x69, 0x0e, 0x9a,
 | |
| 	0xc9, 0x40, 0xbb, 0x04, 0xf5, 0x13, 0xec, 0x3a, 0x5e, 0xd0, 0x53, 0x56, 0x94, 0xf5, 0x96, 0x21,
 | |
| 	0x46, 0xda, 0x2a, 0x74, 0x26, 0xd6, 0x7f, 0x7a, 0x81, 0x79, 0x82, 0x83, 0x90, 0x78, 0x6e, 0xaf,
 | |
| 	0xb2, 0xa2, 0xac, 0x77, 0x0c, 0x95, 0x11, 0x5f, 0x70, 0x1a, 0x03, 0x11, 0x57, 0x02, 0x55, 0x05,
 | |
| 	0x88, 0x12, 0x25, 0x90, 0x6f, 0x45, 0xf6, 0x28, 0x05, 0xd5, 0x38, 0x88, 0x11, 0x13, 0xd0, 0x1d,
 | |
| 	0x98, 0x3f, 0xf4, 0xbc, 0x68, 0xec, 0x59, 0x0e, 0x0e, 0xcc, 0x89, 0xe7, 0xe0, 0xde, 0xdc, 0x8a,
 | |
| 	0xb2, 0xde, 0x34, 0xba, 0x19, 0xf9, 0x99, 0xe7, 0x60, 0xed, 0x2a, 0xb4, 0x1c, 0x7c, 0x42, 0x6c,
 | |
| 	0x6c, 0x12, 0xa7, 0x57, 0x67, 0x22, 0x37, 0x39, 0xe1, 0x89, 0xa3, 0xdd, 0x82, 0xae, 0x4f, 0x5c,
 | |
| 	0x93, 0xda, 0x00, 0xdb, 0x11, 0x5d, 0xab, 0xc1, 0x98, 0x74, 0x7c, 0xe2, 0xee, 0xa7, 0x44, 0xed,
 | |
| 	0x3d, 0x58, 0xf4, 0xad, 0x30, 0xf4, 0x47, 0x81, 0x15, 0x62, 0x19, 0xdd, 0x64, 0xe8, 0x8b, 0xd9,
 | |
| 	0xa4, 0xf4, 0xa3, 0x25, 0x68, 0x8e, 0x2d, 0x77, 0x18, 0x5b, 0x43, 0xdc, 0x6b, 0xf1, 0x75, 0x93,
 | |
| 	0xb1, 0x76, 0x11, 0xe6, 0xc6, 0xd6, 0x21, 0x1e, 0xf7, 0x80, 0x4d, 0xf0, 0x81, 0x76, 0x03, 0xe6,
 | |
| 	0x6c, 0x8f, 0xb8, 0x61, 0xaf, 0xbd, 0x52, 0x5d, 0x6f, 0x6f, 0xb6, 0xfa, 0xdb, 0x1e, 0x71, 0x0f,
 | |
| 	0xa6, 0x3e, 0x36, 0x38, 0x5d, 0x5b, 0x81, 0x36, 0x49, 0xbd, 0xe4, 0xf4, 0x54, 0xb6, 0xba, 0x4c,
 | |
| 	0xa2, 0x8b, 0x06, 0xf8, 0x84, 0x30, 0xb3, 0x75, 0x56, 0x94, 0x75, 0xd5, 0x48, 0xc7, 0x05, 0x93,
 | |
| 	0x8d, 0xac, 0x70, 0xd4, 0xeb, 0x32, 0x88, 0x64, 0xb2, 0xc7, 0x56, 0x38, 0xa2, 0x4c, 0xc8, 0xc4,
 | |
| 	0xf7, 0x82, 0x08, 0x3b, 0xbd, 0x79, 0xb6, 0x46, 0x3a, 0xd6, 0x96, 0x01, 0xa8, 0xc5, 0x6c, 0xcb,
 | |
| 	0x1e, 0x61, 0xa7, 0x87, 0xd8, 0x6c, 0xcb, 0x27, 0xee, 0x36, 0x23, 0x68, 0xf7, 0x60, 0x41, 0xb2,
 | |
| 	0x94, 0x40, 0x2d, 0x30, 0x14, 0xca, 0x26, 0x04, 0x78, 0x03, 0xd0, 0x11, 0x09, 0x26, 0xdf, 0x58,
 | |
| 	0x01, 0x35, 0x2a, 0x0e, 0xb1, 0x1b, 0xf5, 0x34, 0x86, 0x9d, 0x4f, 0xe8, 0xfb, 0x9c, 0xac, 0xdd,
 | |
| 	0x04, 0xd5, 0xc5, 0xd8, 0x09, 0xcd, 0x43, 0xcb, 0x3e, 0x8e, 0xfd, 0xde, 0x05, 0xae, 0x3a, 0xa3,
 | |
| 	0x3d, 0x64, 0x24, 0x6a, 0xd3, 0xa3, 0xb1, 0x35, 0x0c, 0x7b, 0x17, 0x59, 0xb8, 0xf0, 0x81, 0xde,
 | |
| 	0x05, 0x75, 0x7b, 0x8c, 0xad, 0x60, 0x80, 0x43, 0x6a, 0x04, 0xfd, 0x7f, 0x14, 0xe8, 0x6c, 0xf9,
 | |
| 	0xfe, 0x78, 0x3a, 0xc0, 0x51, 0x44, 0xdc, 0x61, 0x98, 0xf3, 0x93, 0x32, 0xcb, 0x4f, 0x15, 0xd9,
 | |
| 	0x4f, 0xb7, 0xa0, 0x1b, 0xd3, 0x38, 0x48, 0xf5, 0x61, 0x61, 0xdc, 0x34, 0x3a, 0x71, 0x88, 0xf7,
 | |
| 	0x53, 0xa2, 0x76, 0x1d, 0x60, 0xe4, 0x4d, 0x70, 0x68, 0x07, 0x18, 0xf3, 0x20, 0x56, 0x0d, 0x89,
 | |
| 	0xa2, 0xeb, 0x00, 0x4c, 0x92, 0x3d, 0x2a, 0x68, 0x26, 0xbe, 0x22, 0x8b, 0xbf, 0x0a, 0xad, 0xed,
 | |
| 	0x91, 0xe5, 0x0e, 0xf1, 0x3e, 0x71, 0xe9, 0xd6, 0x0b, 0xf0, 0xc4, 0x3b, 0xe1, 0x72, 0x36, 0x0d,
 | |
| 	0x31, 0xd2, 0x7f, 0xa3, 0x40, 0x6d, 0x9f, 0xb8, 0x43, 0xad, 0x07, 0x0d, 0xb1, 0xc9, 0x85, 0x26,
 | |
| 	0xc9, 0x90, 0xfa, 0xe5, 0x30, 0x8e, 0x22, 0x2f, 0x17, 0xeb, 0x15, 0xee, 0x17, 0x3e, 0x21, 0x45,
 | |
| 	0xee, 0xd9, 0x5d, 0x51, 0x7d, 0xa3, 0x5d, 0x51, 0x9b, 0xbd, 0x2b, 0xf4, 0x55, 0x68, 0x0c, 0x62,
 | |
| 	0xdb, 0xc6, 0x61, 0x38, 0x5b, 0x5a, 0x7d, 0x17, 0x1a, 0x7b, 0x16, 0x19, 0xc7, 0x01, 0xd6, 0x56,
 | |
| 	0xa0, 0x66, 0xd3, 0xcd, 0x4d, 0x11, 0xdd, 0x4d, 0xb5, 0x2f, 0xe8, 0x6c, 0x57, 0xb0, 0x19, 0x99,
 | |
| 	0x4d, 0x25, 0xcf, 0xe6, 0x73, 0xe8, 0x3c, 0x64, 0xba, 0x19, 0xf8, 0xeb, 0x18, 0x87, 0x91, 0x76,
 | |
| 	0x3b, 0xc7, 0x4c, 0xeb, 0xe7, 0x66, 0x25, 0x96, 0x1a, 0xd4, 0x1c, 0x2b, 0xb2, 0x04, 0x3f, 0xf6,
 | |
| 	0xad, 0xb7, 0xa1, 0xc5, 0xe1, 0x5b, 0xf6, 0xb1, 0xfe, 0x31, 0xa0, 0x7d, 0xe2, 0x3e, 0xb3, 0xa2,
 | |
| 	0x80, 0x9c, 0x26, 0xcc, 0x37, 0xa0, 0x46, 0x33, 0xaa, 0x60, 0xbe, 0xd8, 0x2f, 0x02, 0x38, 0x7f,
 | |
| 	0x0a, 0xd1, 0x57, 0x40, 0x4d, 0x67, 0xb7, 0xec, 0x63, 0x0d, 0x41, 0xd5, 0x27, 0x6e, 0x4f, 0x59,
 | |
| 	0xa9, 0xac, 0xb7, 0x0c, 0xfa, 0xa9, 0x37, 0xa1, 0xbe, 0x6d, 0xb9, 0x36, 0x1e, 0xeb, 0x17, 0x60,
 | |
| 	0x21, 0x8b, 0x29, 0xc1, 0x4a, 0xbf, 0x0f, 0x9d, 0x8c, 0x48, 0x39, 0x5c, 0x07, 0x90, 0xc2, 0x91,
 | |
| 	0x33, 0x92, 0x28, 0xfa, 0x0a, 0xc0, 0x23, 0x1c, 0xed, 0xba, 0x51, 0xe0, 0xf9, 0x53, 0xaa, 0x5f,
 | |
| 	0x48, 0x5e, 0x72, 0x5c, 0xc7, 0x60, 0xdf, 0xd4, 0x31, 0xc9, 0x74, 0x0f, 0x1a, 0x98, 0x7f, 0x32,
 | |
| 	0x84, 0x6a, 0x24, 0x43, 0xfd, 0x57, 0x0a, 0xa8, 0x8f, 0x70, 0xb4, 0x1f, 0x1f, 0x8e, 0x89, 0xfd,
 | |
| 	0x39, 0x9e, 0xd2, 0xec, 0x6a, 0x39, 0x4e, 0x80, 0xc3, 0xd0, 0xa4, 0xf2, 0x57, 0xd7, 0x3b, 0x46,
 | |
| 	0x53, 0x10, 0x9e, 0x6b, 0xeb, 0x80, 0xb0, 0xed, 0x84, 0x96, 0x69, 0xc7, 0xc1, 0x09, 0x36, 0x5d,
 | |
| 	0x6b, 0x92, 0xb8, 0xa8, 0xcb, 0xe8, 0xdb, 0x94, 0xfc, 0xdc, 0x9a, 0x60, 0xba, 0xbd, 0xc3, 0x91,
 | |
| 	0xf7, 0x8d, 0xe9, 0x90, 0xd0, 0x1f, 0x5b, 0x53, 0x11, 0x6f, 0x6d, 0x4a, 0xdb, 0xe1, 0x24, 0x6d,
 | |
| 	0x0d, 0x5a, 0x34, 0x09, 0x72, 0x2e, 0x34, 0xc2, 0x5a, 0x0f, 0x1a, 0x0f, 0x49, 0x44, 0x69, 0x46,
 | |
| 	0x93, 0xfe, 0xa5, 0x8c, 0xf4, 0xcf, 0xa0, 0x95, 0x09, 0x77, 0x03, 0x6a, 0x2e, 0x77, 0x77, 0x65,
 | |
| 	0xbd, 0xbd, 0xd9, 0xee, 0x3f, 0xde, 0x79, 0xee, 0x39, 0x22, 0x74, 0x5c, 0xe1, 0xe7, 0x53, 0x3f,
 | |
| 	0x3e, 0x4c, 0xfc, 0x4c, 0xbf, 0xf5, 0xbf, 0x2a, 0xcc, 0x54, 0x5b, 0x5c, 0x89, 0xf3, 0x15, 0xcc,
 | |
| 	0xc9, 0x54, 0x99, 0x21, 0xd3, 0xeb, 0x28, 0xf7, 0x01, 0x34, 0x27, 0xf1, 0x38, 0x22, 0x21, 0x19,
 | |
| 	0x32, 0xdd, 0xda, 0x9b, 0x57, 0xfa, 0xcf, 0x04, 0xc1, 0xc0, 0x0e, 0xc6, 0x93, 0x81, 0x1d, 0x10,
 | |
| 	0x9f, 0xc7, 0x50, 0x0a, 0xd5, 0x3e, 0x85, 0x76, 0xc8, 0xe8, 0x26, 0x8b, 0xbc, 0x39, 0x16, 0x79,
 | |
| 	0xa8, 0xff, 0xc4, 0xf5, 0xe3, 0x28, 0xfb, 0xc1, 0x03, 0x75, 0xb0, 0xbf, 0xfb, 0x7c, 0x67, 0x6b,
 | |
| 	0x67, 0xc7, 0xd8, 0x1d, 0x0c, 0x0c, 0x08, 0xd3, 0x19, 0xfd, 0x00, 0xb4, 0xdd, 0x68, 0x84, 0x03,
 | |
| 	0x1c, 0x4f, 0x5e, 0x57, 0xe7, 0xa2, 0x36, 0x95, 0x33, 0xda, 0xd0, 0x50, 0x4a, 0x58, 0xf5, 0xa0,
 | |
| 	0x21, 0x7e, 0x29, 0x82, 0x32, 0x19, 0xea, 0xf7, 0x60, 0x3e, 0x59, 0x7a, 0x06, 0x58, 0xcd, 0xc0,
 | |
| 	0x2a, 0xc0, 0x57, 0xc4, 0xc7, 0x3b, 0xec, 0xdc, 0xd6, 0xff, 0xaf, 0x02, 0xf0, 0xd4, 0xb3, 0x1c,
 | |
| 	0x3e, 0xa4, 0x09, 0x7c, 0xe2, 0xe2, 0x89, 0xe7, 0x12, 0x3b, 0x49, 0xe0, 0xc9, 0x38, 0x0d, 0x81,
 | |
| 	0x0a, 0x33, 0x6a, 0x49, 0x08, 0x88, 0xad, 0x57, 0x65, 0xbf, 0xa3, 0x9f, 0x3f, 0x2b, 0xad, 0x69,
 | |
| 	0xab, 0xd2, 0x21, 0x32, 0xc7, 0x03, 0x01, 0xbb, 0xc3, 0x31, 0x09, 0x47, 0x65, 0xa7, 0x49, 0x5d,
 | |
| 	0x3e, 0x4d, 0x56, 0xa1, 0x13, 0x1e, 0x13, 0xdf, 0xb4, 0x47, 0xd8, 0x3e, 0x0e, 0xe3, 0x89, 0x28,
 | |
| 	0x41, 0x54, 0x4a, 0xdc, 0x16, 0x34, 0xed, 0x06, 0xb4, 0xe3, 0xcd, 0x23, 0xd3, 0xf6, 0x62, 0x37,
 | |
| 	0xc2, 0x01, 0xab, 0x3b, 0x3a, 0x06, 0xc4, 0x9b, 0x47, 0xdb, 0x9c, 0xa2, 0xff, 0xb6, 0x02, 0x6d,
 | |
| 	0x03, 0x87, 0x38, 0x12, 0x46, 0xb9, 0x05, 0x5d, 0xe1, 0x21, 0x33, 0xb0, 0x5c, 0xc7, 0x9b, 0x88,
 | |
| 	0x33, 0xa3, 0x23, 0xa8, 0x06, 0x23, 0x6a, 0x37, 0xa0, 0x19, 0x46, 0x01, 0x76, 0x87, 0xd1, 0x88,
 | |
| 	0x17, 0x6c, 0x0f, 0xaa, 0x9b, 0x1f, 0x7c, 0x68, 0xa4, 0xc4, 0xd9, 0xd6, 0xa8, 0x9e, 0x63, 0x8d,
 | |
| 	0xb3, 0x07, 0x48, 0xad, 0xec, 0x00, 0xf9, 0x05, 0x46, 0x2b, 0xd8, 0xa3, 0x51, 0xb4, 0x07, 0x05,
 | |
| 	0x30, 0xab, 0x8a, 0x7a, 0x81, 0x17, 0x6a, 0x40, 0x49, 0xbc, 0x5c, 0xa0, 0x85, 0x01, 0xff, 0x12,
 | |
| 	0x41, 0x85, 0xa0, 0x2b, 0xf2, 0x5f, 0x92, 0x64, 0x6f, 0x03, 0x08, 0x0a, 0xcd, 0xb0, 0xb9, 0xa4,
 | |
| 	0xa8, 0xc8, 0x49, 0xf1, 0x4f, 0x15, 0xe8, 0x1a, 0xd8, 0xf6, 0x4e, 0x70, 0x30, 0x15, 0xd6, 0x5f,
 | |
| 	0x06, 0xf8, 0xc6, 0x0b, 0x1c, 0x2e, 0x9f, 0x38, 0xd1, 0x5b, 0x94, 0xc2, 0xc4, 0x9b, 0x6d, 0xd4,
 | |
| 	0xca, 0x1b, 0x19, 0xb5, 0xfa, 0x2a, 0xa3, 0xd6, 0x5e, 0x69, 0xd4, 0x39, 0xd9, 0xa8, 0x1b, 0x80,
 | |
| 	0xb0, 0x7b, 0xe4, 0x05, 0x36, 0x36, 0xa9, 0xac, 0x63, 0x12, 0x46, 0xcc, 0xea, 0x4d, 0x63, 0x5e,
 | |
| 	0xd0, 0xbf, 0x12, 0x64, 0x9a, 0x39, 0x59, 0xca, 0xe1, 0x81, 0xc8, 0xbe, 0x8b, 0x3e, 0x69, 0x9d,
 | |
| 	0xf1, 0xc9, 0x65, 0x68, 0x38, 0xc1, 0xd4, 0x0c, 0x62, 0x97, 0xd5, 0xbd, 0x4d, 0xa3, 0xee, 0x04,
 | |
| 	0x53, 0x23, 0x76, 0xf5, 0xf7, 0xa0, 0x4d, 0x39, 0x27, 0x27, 0xe9, 0x5a, 0xee, 0x24, 0x45, 0x7d,
 | |
| 	0x69, 0x4e, 0x3a, 0x44, 0x97, 0xa1, 0x41, 0x27, 0xa8, 0x6f, 0x34, 0xa8, 0x51, 0x81, 0x45, 0x8a,
 | |
| 	0x61, 0xdf, 0xfa, 0x8f, 0x0a, 0xb4, 0x07, 0x64, 0xe8, 0x3e, 0x13, 0x15, 0xd0, 0xb9, 0x49, 0x2d,
 | |
| 	0x57, 0x43, 0xb0, 0xcc, 0x93, 0x14, 0x4e, 0xb9, 0x14, 0x5f, 0x9d, 0x95, 0xe2, 0x0b, 0x89, 0xb8,
 | |
| 	0xf6, 0xc6, 0x89, 0xf8, 0xbf, 0x15, 0xe8, 0xbc, 0xc0, 0x01, 0x39, 0x9a, 0x26, 0xf2, 0xe6, 0x92,
 | |
| 	0xa1, 0x22, 0x65, 0x4e, 0xed, 0x1a, 0xb4, 0x42, 0x32, 0x74, 0xd9, 0x7d, 0x8c, 0x45, 0x8c, 0x6a,
 | |
| 	0x64, 0x04, 0x59, 0x95, 0x2a, 0x8f, 0xd3, 0x52, 0x55, 0x66, 0x9e, 0xa0, 0xff, 0x0e, 0x48, 0x88,
 | |
| 	0x30, 0x90, 0x79, 0xfe, 0x1c, 0x59, 0xf4, 0x1f, 0x14, 0xba, 0xa9, 0xec, 0x60, 0xea, 0x47, 0x89,
 | |
| 	0x5a, 0x97, 0xa0, 0xee, 0xc7, 0x87, 0xc7, 0x38, 0xd9, 0x45, 0x62, 0x54, 0xac, 0xe2, 0x24, 0xb1,
 | |
| 	0x6f, 0x82, 0x9a, 0x64, 0x32, 0xcf, 0x1d, 0xa7, 0xc7, 0xa7, 0xa0, 0x7d, 0xe1, 0x8e, 0x0b, 0x55,
 | |
| 	0x48, 0xed, 0xbc, 0x43, 0x7a, 0x6e, 0x96, 0xda, 0x2f, 0x00, 0x09, 0x49, 0xb1, 0x93, 0xc8, 0x7a,
 | |
| 	0x11, 0xe6, 0x5c, 0xcf, 0xb5, 0xb1, 0x10, 0x95, 0x0f, 0xce, 0x91, 0x54, 0x83, 0xda, 0x68, 0x62,
 | |
| 	0xd9, 0xc2, 0xee, 0xec, 0x5b, 0xff, 0x1a, 0xba, 0x3b, 0x38, 0x67, 0x81, 0x73, 0x03, 0x31, 0x5d,
 | |
| 	0xb2, 0x32, 0x63, 0xc9, 0x6a, 0xf9, 0x92, 0x35, 0x69, 0xc9, 0x3d, 0x40, 0x62, 0xc9, 0x4c, 0x95,
 | |
| 	0x42, 0xad, 0x2d, 0x71, 0x90, 0x7c, 0x5b, 0xc9, 0xf9, 0x56, 0xff, 0xb3, 0x02, 0xdd, 0x6d, 0xe2,
 | |
| 	0x8f, 0x70, 0xf0, 0x39, 0x9e, 0xbe, 0xb0, 0xc6, 0xf1, 0x2b, 0x64, 0x47, 0x50, 0xa5, 0x7e, 0xe5,
 | |
| 	0x5c, 0xe8, 0x27, 0xd5, 0xe6, 0x84, 0xfe, 0x4e, 0x48, 0xcd, 0x07, 0x3c, 0x93, 0x32, 0xf9, 0xc4,
 | |
| 	0xb1, 0x90, 0x0c, 0xb5, 0x35, 0xe8, 0x5a, 0xe1, 0xb1, 0xe9, 0xb9, 0x66, 0x02, 0xe0, 0x77, 0x7a,
 | |
| 	0xd5, 0x0a, 0x8f, 0xbf, 0x70, 0x77, 0xcf, 0xa0, 0x1c, 0xae, 0xa6, 0x48, 0x52, 0x1c, 0x25, 0x54,
 | |
| 	0xd7, 0xba, 0x50, 0x21, 0x27, 0xec, 0x60, 0x50, 0x8d, 0x0a, 0x39, 0xd1, 0xd7, 0x01, 0x71, 0x65,
 | |
| 	0xb0, 0x93, 0xaa, 0x93, 0xca, 0xa7, 0x48, 0xf2, 0xe9, 0xff, 0x05, 0xdd, 0xdd, 0x30, 0x22, 0x13,
 | |
| 	0x2b, 0xc2, 0x07, 0xa7, 0x03, 0xf2, 0x12, 0xd3, 0x23, 0xda, 0x8b, 0x23, 0x3f, 0x8e, 0xc2, 0x34,
 | |
| 	0xa3, 0xd3, 0xc2, 0x59, 0x15, 0x44, 0x9e, 0xd4, 0x6f, 0x82, 0x4a, 0x5c, 0x09, 0x53, 0x61, 0x98,
 | |
| 	0x36, 0xa7, 0x71, 0xc8, 0x6b, 0x25, 0x13, 0xfd, 0x26, 0xd4, 0xc5, 0xba, 0x97, 0xa1, 0x11, 0x9d,
 | |
| 	0x9a, 0xa2, 0x54, 0xa7, 0xd9, 0xb4, 0x1e, 0xb1, 0x09, 0xfd, 0xf7, 0x0a, 0xd4, 0xe9, 0xf6, 0x3c,
 | |
| 	0x38, 0xfd, 0xc7, 0xca, 0xa6, 0x5d, 0x85, 0x46, 0xae, 0x2b, 0xf3, 0x40, 0x79, 0xd7, 0x48, 0x28,
 | |
| 	0xda, 0x75, 0x68, 0x8d, 0x3d, 0xfb, 0xd8, 0x8c, 0x88, 0xd8, 0x69, 0x9d, 0x07, 0xca, 0x3b, 0x46,
 | |
| 	0x93, 0xd2, 0x0e, 0xc8, 0x04, 0xeb, 0x7f, 0x53, 0x40, 0x1d, 0x90, 0x89, 0x3f, 0xc6, 0x42, 0xf6,
 | |
| 	0x35, 0xa8, 0x73, 0x11, 0x58, 0x2c, 0xb5, 0x37, 0xd5, 0xfe, 0xc1, 0x29, 0xcb, 0x99, 0x2c, 0xcd,
 | |
| 	0x8b, 0x39, 0xed, 0x0e, 0x34, 0x84, 0x32, 0xbd, 0x0a, 0x83, 0x75, 0xfa, 0x07, 0xa7, 0x5f, 0x30,
 | |
| 	0x0a, 0xc3, 0x25, 0xb3, 0xda, 0xfb, 0xa0, 0x46, 0x81, 0xe5, 0x86, 0x16, 0x3b, 0x09, 0xc3, 0x5e,
 | |
| 	0x95, 0xa1, 0x51, 0xff, 0x20, 0x23, 0xb2, 0x1f, 0xe4, 0x50, 0xaf, 0x97, 0x16, 0x65, 0xc5, 0xe7,
 | |
| 	0xce, 0x57, 0xbc, 0x7e, 0x56, 0xf1, 0x5f, 0x2b, 0xd0, 0x3a, 0x48, 0x2f, 0x8a, 0xf7, 0x41, 0x0d,
 | |
| 	0xf8, 0xa7, 0x29, 0x1d, 0x73, 0x6a, 0x5f, 0x3e, 0xe2, 0xda, 0x41, 0x36, 0xd0, 0xee, 0x43, 0xc3,
 | |
| 	0xc1, 0x91, 0x45, 0xc6, 0xa1, 0xa8, 0x63, 0x17, 0xfb, 0x29, 0xb7, 0x1d, 0x3e, 0xc1, 0x0d, 0x21,
 | |
| 	0x50, 0xda, 0x47, 0x00, 0x21, 0x0e, 0x92, 0x36, 0x51, 0x95, 0xfd, 0xa6, 0x97, 0xfd, 0x66, 0x90,
 | |
| 	0xce, 0xb1, 0x9f, 0x49, 0x58, 0x7d, 0x03, 0xe6, 0x0e, 0xd8, 0x95, 0x74, 0x05, 0x2a, 0xd1, 0x29,
 | |
| 	0x13, 0xad, 0xcc, 0x82, 0x95, 0xe8, 0x54, 0xff, 0xdf, 0x0a, 0x74, 0x93, 0x0a, 0x5e, 0xf8, 0xf3,
 | |
| 	0x67, 0xa4, 0xb6, 0xab, 0xd0, 0x1a, 0x5a, 0xa1, 0xe9, 0x07, 0xc4, 0x4e, 0xd2, 0x44, 0x73, 0x68,
 | |
| 	0x85, 0xfb, 0x74, 0x9c, 0x4c, 0x8e, 0xc9, 0x84, 0x44, 0x22, 0xc5, 0xd1, 0xc9, 0xa7, 0x74, 0x4c,
 | |
| 	0x37, 0x78, 0xe4, 0x31, 0x67, 0xa8, 0x46, 0x25, 0xf2, 0xb2, 0xcd, 0x5c, 0x97, 0x93, 0xcd, 0x5b,
 | |
| 	0xa0, 0xd1, 0xeb, 0xbb, 0x29, 0x9a, 0x64, 0xa6, 0x3d, 0x8a, 0xdd, 0x63, 0x91, 0x16, 0x10, 0x9d,
 | |
| 	0x11, 0x6d, 0xcf, 0x6d, 0x4a, 0xa7, 0x25, 0x0c, 0x43, 0x8f, 0x79, 0x45, 0x2c, 0xca, 0x6c, 0x4a,
 | |
| 	0x7a, 0xca, 0xcb, 0xe1, 0x2b, 0xd0, 0xb4, 0x47, 0x16, 0x71, 0x4d, 0xe2, 0x88, 0x02, 0xa7, 0xc1,
 | |
| 	0xc6, 0x4f, 0x1c, 0xfd, 0xff, 0x15, 0x58, 0x48, 0xec, 0x91, 0x39, 0xbb, 0xc0, 0x51, 0x39, 0xc3,
 | |
| 	0x91, 0x16, 0xaa, 0xc9, 0x81, 0x69, 0x9e, 0x88, 0xae, 0x29, 0xa4, 0xa4, 0x17, 0x79, 0x40, 0x20,
 | |
| 	0x6c, 0x94, 0x01, 0x8c, 0x3c, 0x20, 0x4c, 0x1a, 0x4d, 0x29, 0x69, 0xa0, 0xf7, 0xa1, 0x93, 0x09,
 | |
| 	0x46, 0x9d, 0xbb, 0x0c, 0x4c, 0x02, 0x61, 0x0c, 0x9e, 0xfc, 0x5a, 0x94, 0xc2, 0xac, 0xa0, 0x3f,
 | |
| 	0x85, 0x0b, 0xb2, 0x63, 0x7f, 0x59, 0x05, 0xa5, 0x13, 0x58, 0x4c, 0xb8, 0x9d, 0x5b, 0xe1, 0xa8,
 | |
| 	0xbf, 0xb8, 0xc2, 0xd1, 0x0d, 0xe8, 0x25, 0x4b, 0xbd, 0xaa, 0x86, 0x79, 0xdd, 0xd5, 0xf4, 0x9f,
 | |
| 	0x58, 0xd2, 0x1a, 0xba, 0x4f, 0x1c, 0xec, 0x46, 0x24, 0x9a, 0x6a, 0x1b, 0xd0, 0x24, 0xe2, 0x5b,
 | |
| 	0xec, 0x8f, 0x4e, 0x3f, 0x99, 0xe4, 0xf7, 0x73, 0x92, 0x41, 0x91, 0x3d, 0xb2, 0xc6, 0xd4, 0xf7,
 | |
| 	0xd8, 0x1c, 0x11, 0xc7, 0xc1, 0xae, 0x58, 0x60, 0x3e, 0xa5, 0x3f, 0x66, 0xe4, 0x3c, 0xf4, 0x84,
 | |
| 	0x84, 0xb1, 0x35, 0x16, 0x97, 0xd2, 0x0c, 0xfa, 0x82, 0x91, 0x4b, 0xdb, 0x2a, 0xb5, 0xb2, 0xb6,
 | |
| 	0x8a, 0x3e, 0x84, 0x2e, 0x15, 0x1d, 0x3b, 0xa9, 0xf0, 0xb3, 0x2b, 0xb9, 0x65, 0x00, 0x9f, 0x75,
 | |
| 	0x4e, 0xcc, 0xe4, 0x10, 0x57, 0x8d, 0x96, 0x9f, 0xf6, 0x52, 0x72, 0x46, 0xaa, 0x16, 0x8d, 0xf4,
 | |
| 	0xad, 0x02, 0x0b, 0x8f, 0x70, 0xb4, 0xbb, 0xbd, 0xf3, 0x58, 0x34, 0x5a, 0xe9, 0x6f, 0xde, 0xc0,
 | |
| 	0x52, 0xb7, 0x61, 0xde, 0xc7, 0x38, 0x30, 0xcf, 0x88, 0xd0, 0xa1, 0xe4, 0xac, 0xa5, 0x53, 0xa6,
 | |
| 	0x7b, 0xb5, 0x54, 0xf7, 0x77, 0xa1, 0x5b, 0x10, 0x87, 0xee, 0x13, 0x3e, 0x32, 0xb3, 0xfa, 0x13,
 | |
| 	0xc2, 0x14, 0xa0, 0xbf, 0x03, 0x9d, 0x01, 0x8e, 0xbe, 0xdc, 0xdc, 0x93, 0x2e, 0x91, 0xf2, 0x8d,
 | |
| 	0x46, 0x39, 0x73, 0xeb, 0xbe, 0x03, 0x9d, 0x3d, 0xd1, 0xa9, 0xde, 0x65, 0x3d, 0xdf, 0x4b, 0x50,
 | |
| 	0xcf, 0xed, 0x74, 0x31, 0xd2, 0xb7, 0x60, 0x3e, 0x01, 0x26, 0x99, 0xe1, 0x12, 0xd4, 0xbd, 0xa3,
 | |
| 	0xa3, 0x10, 0x27, 0xf7, 0x43, 0x31, 0x92, 0x58, 0x54, 0x72, 0x2c, 0x3e, 0x81, 0x6e, 0xc2, 0xe2,
 | |
| 	0x4b, 0x7f, 0xec, 0x59, 0x0e, 0x75, 0xa6, 0x6f, 0x4d, 0xe9, 0x67, 0xd2, 0x2f, 0x11, 0x43, 0x56,
 | |
| 	0x16, 0x5a, 0xe1, 0x48, 0xd8, 0x90, 0x7d, 0xeb, 0x6b, 0xd0, 0x1c, 0xe0, 0xf1, 0xd1, 0x01, 0x5d,
 | |
| 	0x3b, 0xf7, 0x4b, 0x45, 0xfa, 0xa5, 0x7e, 0x17, 0x16, 0x76, 0xf0, 0x61, 0x3c, 0x7c, 0x4a, 0xdc,
 | |
| 	0xe3, 0x1d, 0x6c, 0xf3, 0x97, 0x83, 0x45, 0xa8, 0x4f, 0x71, 0x68, 0xba, 0x1e, 0x5b, 0xa7, 0x69,
 | |
| 	0xcc, 0x4d, 0x71, 0xf8, 0xdc, 0xd3, 0x2f, 0x48, 0xd8, 0x47, 0x38, 0x1a, 0x44, 0x56, 0x84, 0xf5,
 | |
| 	0xbf, 0x54, 0x68, 0xc5, 0x2b, 0xa8, 0x8c, 0xc4, 0x34, 0xb2, 0xa6, 0x5e, 0x1c, 0x25, 0x35, 0x3f,
 | |
| 	0x1f, 0x25, 0xbd, 0x97, 0x4a, 0xd6, 0x7b, 0xb9, 0x04, 0xf5, 0x09, 0xeb, 0x8a, 0x0a, 0xa7, 0x8a,
 | |
| 	0x51, 0xae, 0xc5, 0x53, 0x9b, 0xd1, 0xe2, 0x99, 0x9b, 0xd5, 0xe2, 0x99, 0x79, 0xdb, 0xae, 0x9f,
 | |
| 	0x73, 0xdb, 0x5e, 0x06, 0x08, 0x70, 0x88, 0x23, 0x76, 0x13, 0x66, 0xe7, 0x45, 0xcb, 0x68, 0x31,
 | |
| 	0x0a, 0xbd, 0x74, 0xd2, 0xaa, 0x8b, 0x4f, 0x27, 0x3d, 0x81, 0x26, 0xd3, 0x4c, 0x65, 0xc4, 0xa4,
 | |
| 	0x8f, 0xfa, 0x16, 0x68, 0x81, 0xe8, 0x0b, 0x98, 0x47, 0xd6, 0x31, 0xbf, 0x55, 0x8b, 0xb7, 0x20,
 | |
| 	0x94, 0xcc, 0xec, 0x59, 0xc7, 0xec, 0x5a, 0xad, 0xdd, 0x85, 0x85, 0x14, 0xcd, 0x9a, 0x07, 0xbe,
 | |
| 	0x17, 0xb2, 0x7b, 0x72, 0xc7, 0x98, 0x4f, 0x26, 0x28, 0x70, 0xdf, 0x0b, 0xf5, 0x79, 0xe8, 0x48,
 | |
| 	0x36, 0xf6, 0x7c, 0x7d, 0x1f, 0xd4, 0x94, 0xf0, 0xd4, 0x1b, 0xb2, 0x0b, 0x3e, 0x3e, 0xc1, 0xe3,
 | |
| 	0xe4, 0x35, 0x81, 0x0d, 0xa8, 0x79, 0x0f, 0x63, 0xfb, 0x18, 0x47, 0xc2, 0xe6, 0x62, 0xc4, 0x6e,
 | |
| 	0xf3, 0xf8, 0x34, 0x12, 0x46, 0x67, 0xdf, 0xfa, 0x23, 0xb8, 0x90, 0x72, 0x7c, 0x86, 0x27, 0x5e,
 | |
| 	0x30, 0x35, 0x30, 0x8f, 0x39, 0x39, 0x81, 0x74, 0xb2, 0x04, 0x32, 0x2b, 0x6e, 0x37, 0x60, 0xbe,
 | |
| 	0xc0, 0x88, 0xb9, 0x99, 0x7d, 0x25, 0x01, 0xc1, 0x47, 0xfa, 0x7f, 0xc0, 0xc5, 0x02, 0xf4, 0xab,
 | |
| 	0x80, 0x44, 0xf8, 0xfc, 0x45, 0x05, 0xa7, 0x8a, 0xcc, 0x49, 0xbc, 0xa6, 0x84, 0x23, 0x71, 0x5b,
 | |
| 	0xe4, 0x03, 0xfd, 0x6d, 0x49, 0xa7, 0x3d, 0x4a, 0x49, 0x37, 0x6d, 0x88, 0xed, 0xc8, 0x4b, 0x76,
 | |
| 	0xb8, 0x18, 0xdd, 0xfd, 0x71, 0x11, 0xda, 0xe2, 0x1c, 0x61, 0x75, 0xd8, 0x0a, 0x5c, 0x92, 0x86,
 | |
| 	0x66, 0xf6, 0x60, 0x8a, 0xfe, 0x69, 0xa9, 0xf6, 0xed, 0x1f, 0x7a, 0x8a, 0xb6, 0x94, 0x5e, 0x9e,
 | |
| 	0x19, 0x62, 0x9f, 0xb8, 0x43, 0xa4, 0x88, 0xb9, 0x65, 0xb8, 0x20, 0xcf, 0x89, 0x57, 0x10, 0x54,
 | |
| 	0x59, 0xaa, 0x7d, 0x57, 0x32, 0x2d, 0xde, 0x39, 0x50, 0x55, 0x4c, 0xdf, 0x80, 0x45, 0x79, 0x3a,
 | |
| 	0x7d, 0x14, 0x42, 0x35, 0xc1, 0xbe, 0x20, 0x5c, 0xd6, 0x2e, 0x45, 0x73, 0x02, 0x71, 0x07, 0xae,
 | |
| 	0xe4, 0x56, 0x90, 0x13, 0x17, 0xaa, 0x2f, 0x35, 0x29, 0xe8, 0x8f, 0x14, 0xb8, 0x0e, 0x4b, 0x65,
 | |
| 	0x40, 0x9e, 0x75, 0x50, 0x43, 0x42, 0x6e, 0xc0, 0xd5, 0x32, 0xa4, 0x48, 0x71, 0xa8, 0xb9, 0xd4,
 | |
| 	0xfc, 0x2e, 0x81, 0x16, 0xe4, 0xcb, 0x5e, 0x23, 0x50, 0xab, 0xdc, 0x40, 0xc9, 0x34, 0x08, 0x0b,
 | |
| 	0xe8, 0xd0, 0x2b, 0x30, 0x48, 0x8f, 0x05, 0xd4, 0x16, 0x2c, 0x0a, 0x56, 0xca, 0x00, 0xaa, 0x60,
 | |
| 	0x52, 0x90, 0x22, 0xeb, 0x22, 0xa3, 0x8e, 0x60, 0x71, 0x13, 0x2e, 0xcb, 0x08, 0xa9, 0xa7, 0x8a,
 | |
| 	0xba, 0x02, 0x72, 0x0d, 0xb4, 0x9c, 0x27, 0x59, 0xf1, 0x8b, 0xe6, 0xc5, 0xec, 0x5a, 0x5e, 0x4e,
 | |
| 	0xf9, 0xc2, 0x83, 0xd0, 0x52, 0x9d, 0x62, 0x9a, 0x8a, 0x76, 0x1d, 0x2e, 0xe6, 0x2c, 0x27, 0x9e,
 | |
| 	0xd7, 0xd1, 0x82, 0x10, 0xf4, 0x36, 0x5c, 0x2b, 0x44, 0x52, 0xee, 0x31, 0x09, 0x69, 0x29, 0xae,
 | |
| 	0x57, 0x8a, 0xdb, 0xb2, 0x8f, 0xd1, 0x05, 0xee, 0xa9, 0xdf, 0x95, 0xc8, 0xcc, 0x1f, 0x97, 0xd0,
 | |
| 	0xc5, 0x72, 0xbb, 0xa5, 0xe5, 0x2b, 0x5a, 0x14, 0xcb, 0x5c, 0x85, 0x85, 0x3c, 0x80, 0xf2, 0xbf,
 | |
| 	0x94, 0x6a, 0x9c, 0x8b, 0x97, 0x7c, 0xcf, 0x00, 0x5d, 0x16, 0xa8, 0x82, 0xff, 0xe4, 0x57, 0x59,
 | |
| 	0xd4, 0x13, 0x98, 0xd5, 0x7c, 0x88, 0xe6, 0x1e, 0x6a, 0xd1, 0x95, 0x72, 0x50, 0xee, 0x11, 0x0f,
 | |
| 	0x2d, 0x09, 0x81, 0x57, 0xf3, 0x1a, 0xa5, 0x4f, 0x77, 0xe8, 0xaa, 0x64, 0x94, 0x42, 0x34, 0x64,
 | |
| 	0xaf, 0xb1, 0xe8, 0x5a, 0xf9, 0xae, 0xca, 0x1e, 0x49, 0xd0, 0x72, 0x79, 0xd4, 0x26, 0xd3, 0xd7,
 | |
| 	0xd3, 0xa8, 0xcd, 0xf9, 0x39, 0x39, 0x81, 0xd1, 0x8a, 0xb4, 0x8b, 0x0a, 0x96, 0x91, 0xdb, 0xd2,
 | |
| 	0x48, 0x2f, 0xb7, 0x71, 0xbe, 0x55, 0x8d, 0x56, 0xcb, 0xc3, 0x3b, 0x6b, 0x5f, 0xa3, 0xb5, 0xf2,
 | |
| 	0xf0, 0x96, 0xea, 0x7b, 0x74, 0xbb, 0xdc, 0xbe, 0xb9, 0xa2, 0x1d, 0xdd, 0x11, 0xa0, 0x42, 0x7c,
 | |
| 	0x16, 0xcb, 0x6d, 0xb4, 0x2e, 0x24, 0xba, 0x03, 0xcb, 0xb9, 0xf8, 0x2c, 0x3e, 0x65, 0xa2, 0x8d,
 | |
| 	0x14, 0x78, 0xa5, 0x1c, 0x48, 0xa5, 0xbf, 0x2b, 0x39, 0xed, 0x76, 0xc1, 0x12, 0xb9, 0x56, 0x0d,
 | |
| 	0xba, 0x27, 0xed, 0x30, 0x2d, 0x1f, 0xb2, 0x6c, 0xfe, 0xad, 0xa5, 0xfa, 0x77, 0x7c, 0xbe, 0x60,
 | |
| 	0xd1, 0x7c, 0x07, 0x1f, 0xbd, 0x5d, 0x6e, 0x2f, 0xa9, 0x15, 0x8d, 0xfa, 0xe5, 0x99, 0x5b, 0x34,
 | |
| 	0xa5, 0xd1, 0xfd, 0x72, 0x4b, 0x15, 0x9b, 0x50, 0xe8, 0x9d, 0x74, 0x27, 0x17, 0x3c, 0x2c, 0x77,
 | |
| 	0x0d, 0xd1, 0xbb, 0xa9, 0x5e, 0xeb, 0x79, 0x7e, 0xc5, 0xae, 0x25, 0xda, 0x4c, 0x35, 0x2c, 0x70,
 | |
| 	0xcc, 0xf7, 0x21, 0xd1, 0x7b, 0xb3, 0x38, 0x16, 0x9b, 0x87, 0xe8, 0xfd, 0x94, 0xa3, 0x5e, 0xcc,
 | |
| 	0x6d, 0xd9, 0xbd, 0x08, 0x7d, 0x50, 0x1e, 0xa9, 0xf9, 0x0b, 0x08, 0xfa, 0x50, 0x68, 0x5b, 0xb0,
 | |
| 	0xab, 0xf4, 0xef, 0x46, 0xe8, 0x9f, 0x05, 0xa3, 0x75, 0xb8, 0x9e, 0x53, 0xf4, 0xcc, 0x43, 0x25,
 | |
| 	0xfa, 0x48, 0x20, 0x6f, 0xe5, 0x8f, 0xa1, 0xc2, 0xbb, 0x22, 0xfa, 0x17, 0xb1, 0x66, 0x71, 0x0f,
 | |
| 	0xe5, 0x9a, 0x17, 0xe8, 0x41, 0x7a, 0x4c, 0x2e, 0x97, 0xa1, 0xb2, 0x9c, 0xf8, 0xaf, 0x69, 0x8a,
 | |
| 	0xb9, 0x52, 0x0e, 0xa4, 0xde, 0xff, 0xb7, 0x72, 0x6e, 0x67, 0x2e, 0x49, 0xe8, 0xe3, 0x19, 0x1b,
 | |
| 	0x3c, 0x8f, 0xfa, 0xa4, 0x7c, 0xcd, 0xdc, 0x75, 0x05, 0x7d, 0x2a, 0x58, 0x6d, 0xc0, 0x8d, 0x59,
 | |
| 	0x7a, 0x26, 0x2e, 0xfd, 0x4c, 0x40, 0xef, 0xc1, 0xcd, 0x32, 0x68, 0x7e, 0xcf, 0x6f, 0x09, 0x70,
 | |
| 	0x1f, 0xd6, 0xca, 0xc0, 0x67, 0xf6, 0xfe, 0x43, 0x21, 0xec, 0xbd, 0xbc, 0xee, 0x67, 0xee, 0x15,
 | |
| 	0xc8, 0x59, 0x6a, 0x7e, 0x9f, 0x6c, 0xeb, 0x3b, 0x33, 0xc0, 0xc9, 0xc5, 0x02, 0xe1, 0xa5, 0xda,
 | |
| 	0xf7, 0x25, 0x86, 0xca, 0xdf, 0x35, 0xd0, 0xd1, 0x52, 0xed, 0x87, 0x12, 0x43, 0xe5, 0xaa, 0x65,
 | |
| 	0x34, 0x14, 0xac, 0x0a, 0xe1, 0x2c, 0x57, 0xd0, 0x68, 0x24, 0x18, 0x15, 0x8c, 0x59, 0x52, 0x13,
 | |
| 	0x23, 0x57, 0xb0, 0x2b, 0x84, 0x61, 0x01, 0x8a, 0x3c, 0xc1, 0xf1, 0x2e, 0xac, 0x9c, 0x03, 0x63,
 | |
| 	0x15, 0x2f, 0xf2, 0x05, 0xcb, 0x59, 0xab, 0x67, 0xd5, 0x2b, 0xfa, 0x9a, 0x43, 0x1f, 0xbe, 0x0f,
 | |
| 	0xab, 0xb6, 0x37, 0xe9, 0x87, 0x56, 0xe4, 0x85, 0x23, 0x32, 0xb6, 0x0e, 0xc3, 0x7e, 0x14, 0xe0,
 | |
| 	0x97, 0x5e, 0xd0, 0x1f, 0x93, 0x43, 0xfe, 0x6f, 0x7e, 0x87, 0xf1, 0xd1, 0xc3, 0xce, 0x01, 0x23,
 | |
| 	0x0a, 0xae, 0x7f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xe4, 0xc0, 0x85, 0x16, 0x28, 0x00, 0x00,
 | |
| }
 |