aboutsummaryrefslogtreecommitdiff
path: root/accounts
diff options
context:
space:
mode:
Diffstat (limited to 'accounts')
-rw-r--r--accounts/usbwallet/hub.go279
-rw-r--r--accounts/usbwallet/ledger.go465
-rw-r--r--accounts/usbwallet/trezor.go365
-rw-r--r--accounts/usbwallet/trezor/messages-common.pb.go811
-rw-r--r--accounts/usbwallet/trezor/messages-common.proto147
-rw-r--r--accounts/usbwallet/trezor/messages-ethereum.pb.go698
-rw-r--r--accounts/usbwallet/trezor/messages-ethereum.proto131
-rw-r--r--accounts/usbwallet/trezor/messages-management.pb.go1621
-rw-r--r--accounts/usbwallet/trezor/messages-management.proto289
-rw-r--r--accounts/usbwallet/trezor/messages.pb.go889
-rw-r--r--accounts/usbwallet/trezor/messages.proto264
-rw-r--r--accounts/usbwallet/trezor/trezor.go70
-rw-r--r--accounts/usbwallet/wallet.go595
13 files changed, 0 insertions, 6624 deletions
diff --git a/accounts/usbwallet/hub.go b/accounts/usbwallet/hub.go
deleted file mode 100644
index b851ffc..0000000
--- a/accounts/usbwallet/hub.go
+++ /dev/null
@@ -1,279 +0,0 @@
-// Copyright 2017 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
-package usbwallet
-
-import (
- "errors"
- "runtime"
- "sync"
- "sync/atomic"
- "time"
-
- "github.com/ava-labs/coreth/accounts"
- "github.com/ava-labs/go-ethereum/event"
- "github.com/ava-labs/go-ethereum/log"
- "github.com/karalabe/usb"
-)
-
-// LedgerScheme is the protocol scheme prefixing account and wallet URLs.
-const LedgerScheme = "ledger"
-
-// TrezorScheme is the protocol scheme prefixing account and wallet URLs.
-const TrezorScheme = "trezor"
-
-// refreshCycle is the maximum time between wallet refreshes (if USB hotplug
-// notifications don't work).
-const refreshCycle = time.Second
-
-// refreshThrottling is the minimum time between wallet refreshes to avoid USB
-// trashing.
-const refreshThrottling = 500 * time.Millisecond
-
-// Hub is a accounts.Backend that can find and handle generic USB hardware wallets.
-type Hub struct {
- scheme string // Protocol scheme prefixing account and wallet URLs.
- vendorID uint16 // USB vendor identifier used for device discovery
- productIDs []uint16 // USB product identifiers used for device discovery
- usageID uint16 // USB usage page identifier used for macOS device discovery
- endpointID int // USB endpoint identifier used for non-macOS device discovery
- makeDriver func(log.Logger) driver // Factory method to construct a vendor specific driver
-
- refreshed time.Time // Time instance when the list of wallets was last refreshed
- wallets []accounts.Wallet // List of USB wallet devices currently tracking
- updateFeed event.Feed // Event feed to notify wallet additions/removals
- updateScope event.SubscriptionScope // Subscription scope tracking current live listeners
- updating bool // Whether the event notification loop is running
-
- quit chan chan error
-
- stateLock sync.RWMutex // Protects the internals of the hub from racey access
-
- // TODO(karalabe): remove if hotplug lands on Windows
- commsPend int // Number of operations blocking enumeration
- commsLock sync.Mutex // Lock protecting the pending counter and enumeration
- enumFails uint32 // Number of times enumeration has failed
-}
-
-// NewLedgerHub creates a new hardware wallet manager for Ledger devices.
-func NewLedgerHub() (*Hub, error) {
- return newHub(LedgerScheme, 0x2c97, []uint16{
- // Original product IDs
- 0x0000, /* Ledger Blue */
- 0x0001, /* Ledger Nano S */
- 0x0004, /* Ledger Nano X */
-
- // Upcoming product IDs: https://www.ledger.com/2019/05/17/windows-10-update-sunsetting-u2f-tunnel-transport-for-ledger-devices/
- 0x0015, /* HID + U2F + WebUSB Ledger Blue */
- 0x1015, /* HID + U2F + WebUSB Ledger Nano S */
- 0x4015, /* HID + U2F + WebUSB Ledger Nano X */
- 0x0011, /* HID + WebUSB Ledger Blue */
- 0x1011, /* HID + WebUSB Ledger Nano S */
- 0x4011, /* HID + WebUSB Ledger Nano X */
- }, 0xffa0, 0, newLedgerDriver)
-}
-
-// NewTrezorHubWithHID creates a new hardware wallet manager for Trezor devices.
-func NewTrezorHubWithHID() (*Hub, error) {
- return newHub(TrezorScheme, 0x534c, []uint16{0x0001 /* Trezor HID */}, 0xff00, 0, newTrezorDriver)
-}
-
-// NewTrezorHubWithWebUSB creates a new hardware wallet manager for Trezor devices with
-// firmware version > 1.8.0
-func NewTrezorHubWithWebUSB() (*Hub, error) {
- return newHub(TrezorScheme, 0x1209, []uint16{0x53c1 /* Trezor WebUSB */}, 0xffff /* No usage id on webusb, don't match unset (0) */, 0, newTrezorDriver)
-}
-
-// newHub creates a new hardware wallet manager for generic USB devices.
-func newHub(scheme string, vendorID uint16, productIDs []uint16, usageID uint16, endpointID int, makeDriver func(log.Logger) driver) (*Hub, error) {
- if !usb.Supported() {
- return nil, errors.New("unsupported platform")
- }
- hub := &Hub{
- scheme: scheme,
- vendorID: vendorID,
- productIDs: productIDs,
- usageID: usageID,
- endpointID: endpointID,
- makeDriver: makeDriver,
- quit: make(chan chan error),
- }
- hub.refreshWallets()
- return hub, nil
-}
-
-// Wallets implements accounts.Backend, returning all the currently tracked USB
-// devices that appear to be hardware wallets.
-func (hub *Hub) Wallets() []accounts.Wallet {
- // Make sure the list of wallets is up to date
- hub.refreshWallets()
-
- hub.stateLock.RLock()
- defer hub.stateLock.RUnlock()
-
- cpy := make([]accounts.Wallet, len(hub.wallets))
- copy(cpy, hub.wallets)
- return cpy
-}
-
-// refreshWallets scans the USB devices attached to the machine and updates the
-// list of wallets based on the found devices.
-func (hub *Hub) refreshWallets() {
- // Don't scan the USB like crazy it the user fetches wallets in a loop
- hub.stateLock.RLock()
- elapsed := time.Since(hub.refreshed)
- hub.stateLock.RUnlock()
-
- if elapsed < refreshThrottling {
- return
- }
- // If USB enumeration is continually failing, don't keep trying indefinitely
- if atomic.LoadUint32(&hub.enumFails) > 2 {
- return
- }
- // Retrieve the current list of USB wallet devices
- var devices []usb.DeviceInfo
-
- if runtime.GOOS == "linux" {
- // hidapi on Linux opens the device during enumeration to retrieve some infos,
- // breaking the Ledger protocol if that is waiting for user confirmation. This
- // is a bug acknowledged at Ledger, but it won't be fixed on old devices so we
- // need to prevent concurrent comms ourselves. The more elegant solution would
- // be to ditch enumeration in favor of hotplug events, but that don't work yet
- // on Windows so if we need to hack it anyway, this is more elegant for now.
- hub.commsLock.Lock()
- if hub.commsPend > 0 { // A confirmation is pending, don't refresh
- hub.commsLock.Unlock()
- return
- }
- }
- infos, err := usb.Enumerate(hub.vendorID, 0)
- if err != nil {
- failcount := atomic.AddUint32(&hub.enumFails, 1)
- if runtime.GOOS == "linux" {
- // See rationale before the enumeration why this is needed and only on Linux.
- hub.commsLock.Unlock()
- }
- log.Error("Failed to enumerate USB devices", "hub", hub.scheme,
- "vendor", hub.vendorID, "failcount", failcount, "err", err)
- return
- }
- atomic.StoreUint32(&hub.enumFails, 0)
-
- for _, info := range infos {
- for _, id := range hub.productIDs {
- // Windows and Macos use UsageID matching, Linux uses Interface matching
- if info.ProductID == id && (info.UsagePage == hub.usageID || info.Interface == hub.endpointID) {
- devices = append(devices, info)
- break
- }
- }
- }
- if runtime.GOOS == "linux" {
- // See rationale before the enumeration why this is needed and only on Linux.
- hub.commsLock.Unlock()
- }
- // Transform the current list of wallets into the new one
- hub.stateLock.Lock()
-
- var (
- wallets = make([]accounts.Wallet, 0, len(devices))
- events []accounts.WalletEvent
- )
-
- for _, device := range devices {
- url := accounts.URL{Scheme: hub.scheme, Path: device.Path}
-
- // Drop wallets in front of the next device or those that failed for some reason
- for len(hub.wallets) > 0 {
- // Abort if we're past the current device and found an operational one
- _, failure := hub.wallets[0].Status()
- if hub.wallets[0].URL().Cmp(url) >= 0 || failure == nil {
- break
- }
- // Drop the stale and failed devices
- events = append(events, accounts.WalletEvent{Wallet: hub.wallets[0], Kind: accounts.WalletDropped})
- hub.wallets = hub.wallets[1:]
- }
- // If there are no more wallets or the device is before the next, wrap new wallet
- if len(hub.wallets) == 0 || hub.wallets[0].URL().Cmp(url) > 0 {
- logger := log.New("url", url)
- wallet := &wallet{hub: hub, driver: hub.makeDriver(logger), url: &url, info: device, log: logger}
-
- events = append(events, accounts.WalletEvent{Wallet: wallet, Kind: accounts.WalletArrived})
- wallets = append(wallets, wallet)
- continue
- }
- // If the device is the same as the first wallet, keep it
- if hub.wallets[0].URL().Cmp(url) == 0 {
- wallets = append(wallets, hub.wallets[0])
- hub.wallets = hub.wallets[1:]
- continue
- }
- }
- // Drop any leftover wallets and set the new batch
- for _, wallet := range hub.wallets {
- events = append(events, accounts.WalletEvent{Wallet: wallet, Kind: accounts.WalletDropped})
- }
- hub.refreshed = time.Now()
- hub.wallets = wallets
- hub.stateLock.Unlock()
-
- // Fire all wallet events and return
- for _, event := range events {
- hub.updateFeed.Send(event)
- }
-}
-
-// Subscribe implements accounts.Backend, creating an async subscription to
-// receive notifications on the addition or removal of USB wallets.
-func (hub *Hub) Subscribe(sink chan<- accounts.WalletEvent) event.Subscription {
- // We need the mutex to reliably start/stop the update loop
- hub.stateLock.Lock()
- defer hub.stateLock.Unlock()
-
- // Subscribe the caller and track the subscriber count
- sub := hub.updateScope.Track(hub.updateFeed.Subscribe(sink))
-
- // Subscribers require an active notification loop, start it
- if !hub.updating {
- hub.updating = true
- go hub.updater()
- }
- return sub
-}
-
-// updater is responsible for maintaining an up-to-date list of wallets managed
-// by the USB hub, and for firing wallet addition/removal events.
-func (hub *Hub) updater() {
- for {
- // TODO: Wait for a USB hotplug event (not supported yet) or a refresh timeout
- // <-hub.changes
- time.Sleep(refreshCycle)
-
- // Run the wallet refresher
- hub.refreshWallets()
-
- // If all our subscribers left, stop the updater
- hub.stateLock.Lock()
- if hub.updateScope.Count() == 0 {
- hub.updating = false
- hub.stateLock.Unlock()
- return
- }
- hub.stateLock.Unlock()
- }
-}
diff --git a/accounts/usbwallet/ledger.go b/accounts/usbwallet/ledger.go
deleted file mode 100644
index 528e8da..0000000
--- a/accounts/usbwallet/ledger.go
+++ /dev/null
@@ -1,465 +0,0 @@
-// Copyright 2017 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
-// This file contains the implementation for interacting with the Ledger hardware
-// wallets. The wire protocol spec can be found in the Ledger Blue GitHub repo:
-// https://raw.githubusercontent.com/LedgerHQ/blue-app-eth/master/doc/ethapp.asc
-
-package usbwallet
-
-import (
- "encoding/binary"
- "encoding/hex"
- "errors"
- "fmt"
- "io"
- "math/big"
-
- "github.com/ava-labs/coreth/accounts"
- "github.com/ava-labs/coreth/core/types"
- "github.com/ava-labs/go-ethereum/common"
- "github.com/ava-labs/go-ethereum/common/hexutil"
- "github.com/ava-labs/go-ethereum/crypto"
- "github.com/ava-labs/go-ethereum/log"
- "github.com/ava-labs/go-ethereum/rlp"
-)
-
-// ledgerOpcode is an enumeration encoding the supported Ledger opcodes.
-type ledgerOpcode byte
-
-// ledgerParam1 is an enumeration encoding the supported Ledger parameters for
-// specific opcodes. The same parameter values may be reused between opcodes.
-type ledgerParam1 byte
-
-// ledgerParam2 is an enumeration encoding the supported Ledger parameters for
-// specific opcodes. The same parameter values may be reused between opcodes.
-type ledgerParam2 byte
-
-const (
- ledgerOpRetrieveAddress ledgerOpcode = 0x02 // Returns the public key and Ethereum address for a given BIP 32 path
- ledgerOpSignTransaction ledgerOpcode = 0x04 // Signs an Ethereum transaction after having the user validate the parameters
- ledgerOpGetConfiguration ledgerOpcode = 0x06 // Returns specific wallet application configuration
-
- ledgerP1DirectlyFetchAddress ledgerParam1 = 0x00 // Return address directly from the wallet
- ledgerP1InitTransactionData ledgerParam1 = 0x00 // First transaction data block for signing
- ledgerP1ContTransactionData ledgerParam1 = 0x80 // Subsequent transaction data block for signing
- ledgerP2DiscardAddressChainCode ledgerParam2 = 0x00 // Do not return the chain code along with the address
-)
-
-// errLedgerReplyInvalidHeader is the error message returned by a Ledger data exchange
-// if the device replies with a mismatching header. This usually means the device
-// is in browser mode.
-var errLedgerReplyInvalidHeader = errors.New("ledger: invalid reply header")
-
-// errLedgerInvalidVersionReply is the error message returned by a Ledger version retrieval
-// when a response does arrive, but it does not contain the expected data.
-var errLedgerInvalidVersionReply = errors.New("ledger: invalid version reply")
-
-// ledgerDriver implements the communication with a Ledger hardware wallet.
-type ledgerDriver struct {
- device io.ReadWriter // USB device connection to communicate through
- version [3]byte // Current version of the Ledger firmware (zero if app is offline)
- browser bool // Flag whether the Ledger is in browser mode (reply channel mismatch)
- failure error // Any failure that would make the device unusable
- log log.Logger // Contextual logger to tag the ledger with its id
-}
-
-// newLedgerDriver creates a new instance of a Ledger USB protocol driver.
-func newLedgerDriver(logger log.Logger) driver {
- return &ledgerDriver{
- log: logger,
- }
-}
-
-// Status implements usbwallet.driver, returning various states the Ledger can
-// currently be in.
-func (w *ledgerDriver) Status() (string, error) {
- if w.failure != nil {
- return fmt.Sprintf("Failed: %v", w.failure), w.failure
- }
- if w.browser {
- return "Ethereum app in browser mode", w.failure
- }
- if w.offline() {
- return "Ethereum app offline", w.failure
- }
- return fmt.Sprintf("Ethereum app v%d.%d.%d online", w.version[0], w.version[1], w.version[2]), w.failure
-}
-
-// offline returns whether the wallet and the Ethereum app is offline or not.
-//
-// The method assumes that the state lock is held!
-func (w *ledgerDriver) offline() bool {
- return w.version == [3]byte{0, 0, 0}
-}
-
-// Open implements usbwallet.driver, attempting to initialize the connection to the
-// Ledger hardware wallet. The Ledger does not require a user passphrase, so that
-// parameter is silently discarded.
-func (w *ledgerDriver) Open(device io.ReadWriter, passphrase string) error {
- w.device, w.failure = device, nil
-
- _, err := w.ledgerDerive(accounts.DefaultBaseDerivationPath)
- if err != nil {
- // Ethereum app is not running or in browser mode, nothing more to do, return
- if err == errLedgerReplyInvalidHeader {
- w.browser = true
- }
- return nil
- }
- // Try to resolve the Ethereum app's version, will fail prior to v1.0.2
- if w.version, err = w.ledgerVersion(); err != nil {
- w.version = [3]byte{1, 0, 0} // Assume worst case, can't verify if v1.0.0 or v1.0.1
- }
- return nil
-}
-
-// Close implements usbwallet.driver, cleaning up and metadata maintained within
-// the Ledger driver.
-func (w *ledgerDriver) Close() error {
- w.browser, w.version = false, [3]byte{}
- return nil
-}
-
-// Heartbeat implements usbwallet.driver, performing a sanity check against the
-// Ledger to see if it's still online.
-func (w *ledgerDriver) Heartbeat() error {
- if _, err := w.ledgerVersion(); err != nil && err != errLedgerInvalidVersionReply {
- w.failure = err
- return err
- }
- return nil
-}
-
-// Derive implements usbwallet.driver, sending a derivation request to the Ledger
-// and returning the Ethereum address located on that derivation path.
-func (w *ledgerDriver) Derive(path accounts.DerivationPath) (common.Address, error) {
- return w.ledgerDerive(path)
-}
-
-// SignTx implements usbwallet.driver, sending the transaction to the Ledger and
-// waiting for the user to confirm or deny the transaction.
-//
-// Note, if the version of the Ethereum application running on the Ledger wallet is
-// too old to sign EIP-155 transactions, but such is requested nonetheless, an error
-// will be returned opposed to silently signing in Homestead mode.
-func (w *ledgerDriver) SignTx(path accounts.DerivationPath, tx *types.Transaction, chainID *big.Int) (common.Address, *types.Transaction, error) {
- // If the Ethereum app doesn't run, abort
- if w.offline() {
- return common.Address{}, nil, accounts.ErrWalletClosed
- }
- // Ensure the wallet is capable of signing the given transaction
- if chainID != nil && w.version[0] <= 1 && w.version[1] <= 0 && w.version[2] <= 2 {
- return common.Address{}, nil, fmt.Errorf("Ledger v%d.%d.%d doesn't support signing this transaction, please update to v1.0.3 at least", w.version[0], w.version[1], w.version[2])
- }
- // All infos gathered and metadata checks out, request signing
- return w.ledgerSign(path, tx, chainID)
-}
-
-// ledgerVersion retrieves the current version of the Ethereum wallet app running
-// on the Ledger wallet.
-//
-// The version retrieval protocol is defined as follows:
-//
-// CLA | INS | P1 | P2 | Lc | Le
-// ----+-----+----+----+----+---
-// E0 | 06 | 00 | 00 | 00 | 04
-//
-// With no input data, and the output data being:
-//
-// Description | Length
-// ---------------------------------------------------+--------
-// Flags 01: arbitrary data signature enabled by user | 1 byte
-// Application major version | 1 byte
-// Application minor version | 1 byte
-// Application patch version | 1 byte
-func (w *ledgerDriver) ledgerVersion() ([3]byte, error) {
- // Send the request and wait for the response
- reply, err := w.ledgerExchange(ledgerOpGetConfiguration, 0, 0, nil)
- if err != nil {
- return [3]byte{}, err
- }
- if len(reply) != 4 {
- return [3]byte{}, errLedgerInvalidVersionReply
- }
- // Cache the version for future reference
- var version [3]byte
- copy(version[:], reply[1:])
- return version, nil
-}
-
-// ledgerDerive retrieves the currently active Ethereum address from a Ledger
-// wallet at the specified derivation path.
-//
-// The address derivation protocol is defined as follows:
-//
-// CLA | INS | P1 | P2 | Lc | Le
-// ----+-----+----+----+-----+---
-// E0 | 02 | 00 return address
-// 01 display address and confirm before returning
-// | 00: do not return the chain code
-// | 01: return the chain code
-// | var | 00
-//
-// Where the input data is:
-//
-// Description | Length
-// -------------------------------------------------+--------
-// Number of BIP 32 derivations to perform (max 10) | 1 byte
-// First derivation index (big endian) | 4 bytes
-// ... | 4 bytes
-// Last derivation index (big endian) | 4 bytes
-//
-// And the output data is:
-//
-// Description | Length
-// ------------------------+-------------------
-// Public Key length | 1 byte
-// Uncompressed Public Key | arbitrary
-// Ethereum address length | 1 byte
-// Ethereum address | 40 bytes hex ascii
-// Chain code if requested | 32 bytes
-func (w *ledgerDriver) ledgerDerive(derivationPath []uint32) (common.Address, error) {
- // Flatten the derivation path into the Ledger request
- path := make([]byte, 1+4*len(derivationPath))
- path[0] = byte(len(derivationPath))
- for i, component := range derivationPath {
- binary.BigEndian.PutUint32(path[1+4*i:], component)
- }
- // Send the request and wait for the response
- reply, err := w.ledgerExchange(ledgerOpRetrieveAddress, ledgerP1DirectlyFetchAddress, ledgerP2DiscardAddressChainCode, path)
- if err != nil {
- return common.Address{}, err
- }
- // Discard the public key, we don't need that for now
- if len(reply) < 1 || len(reply) < 1+int(reply[0]) {
- return common.Address{}, errors.New("reply lacks public key entry")
- }
- reply = reply[1+int(reply[0]):]
-
- // Extract the Ethereum hex address string
- if len(reply) < 1 || len(reply) < 1+int(reply[0]) {
- return common.Address{}, errors.New("reply lacks address entry")
- }
- hexstr := reply[1 : 1+int(reply[0])]
-
- // Decode the hex sting into an Ethereum address and return
- var address common.Address
- if _, err = hex.Decode(address[:], hexstr); err != nil {
- return common.Address{}, err
- }
- return address, nil
-}
-
-// ledgerSign sends the transaction to the Ledger wallet, and waits for the user
-// to confirm or deny the transaction.
-//
-// The transaction signing protocol is defined as follows:
-//
-// CLA | INS | P1 | P2 | Lc | Le
-// ----+-----+----+----+-----+---
-// E0 | 04 | 00: first transaction data block
-// 80: subsequent transaction data block
-// | 00 | variable | variable
-//
-// Where the input for the first transaction block (first 255 bytes) is:
-//
-// Description | Length
-// -------------------------------------------------+----------
-// Number of BIP 32 derivations to perform (max 10) | 1 byte
-// First derivation index (big endian) | 4 bytes
-// ... | 4 bytes
-// Last derivation index (big endian) | 4 bytes
-// RLP transaction chunk | arbitrary
-//
-// And the input for subsequent transaction blocks (first 255 bytes) are:
-//
-// Description | Length
-// ----------------------+----------
-// RLP transaction chunk | arbitrary
-//
-// And the output data is:
-//
-// Description | Length
-// ------------+---------
-// signature V | 1 byte
-// signature R | 32 bytes
-// signature S | 32 bytes
-func (w *ledgerDriver) ledgerSign(derivationPath []uint32, tx *types.Transaction, chainID *big.Int) (common.Address, *types.Transaction, error) {
- // Flatten the derivation path into the Ledger request
- path := make([]byte, 1+4*len(derivationPath))
- path[0] = byte(len(derivationPath))
- for i, component := range derivationPath {
- binary.BigEndian.PutUint32(path[1+4*i:], component)
- }
- // Create the transaction RLP based on whether legacy or EIP155 signing was requested
- var (
- txrlp []byte
- err error
- )
- if chainID == nil {
- if txrlp, err = rlp.EncodeToBytes([]interface{}{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data()}); err != nil {
- return common.Address{}, nil, err
- }
- } else {
- if txrlp, err = rlp.EncodeToBytes([]interface{}{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), chainID, big.NewInt(0), big.NewInt(0)}); err != nil {
- return common.Address{}, nil, err
- }
- }
- payload := append(path, txrlp...)
-
- // Send the request and wait for the response
- var (
- op = ledgerP1InitTransactionData
- reply []byte
- )
- for len(payload) > 0 {
- // Calculate the size of the next data chunk
- chunk := 255
- if chunk > len(payload) {
- chunk = len(payload)
- }
- // Send the chunk over, ensuring it's processed correctly
- reply, err = w.ledgerExchange(ledgerOpSignTransaction, op, 0, payload[:chunk])
- if err != nil {
- return common.Address{}, nil, err
- }
- // Shift the payload and ensure subsequent chunks are marked as such
- payload = payload[chunk:]
- op = ledgerP1ContTransactionData
- }
- // Extract the Ethereum signature and do a sanity validation
- if len(reply) != crypto.SignatureLength {
- return common.Address{}, nil, errors.New("reply lacks signature")
- }
- signature := append(reply[1:], reply[0])
-
- // Create the correct signer and signature transform based on the chain ID
- var signer types.Signer
- if chainID == nil {
- signer = new(types.HomesteadSigner)
- } else {
- signer = types.NewEIP155Signer(chainID)
- signature[64] -= byte(chainID.Uint64()*2 + 35)
- }
- signed, err := tx.WithSignature(signer, signature)
- if err != nil {
- return common.Address{}, nil, err
- }
- sender, err := types.Sender(signer, signed)
- if err != nil {
- return common.Address{}, nil, err
- }
- return sender, signed, nil
-}
-
-// ledgerExchange performs a data exchange with the Ledger wallet, sending it a
-// message and retrieving the response.
-//
-// The common transport header is defined as follows:
-//
-// Description | Length
-// --------------------------------------+----------
-// Communication channel ID (big endian) | 2 bytes
-// Command tag | 1 byte
-// Packet sequence index (big endian) | 2 bytes
-// Payload | arbitrary
-//
-// The Communication channel ID allows commands multiplexing over the same
-// physical link. It is not used for the time being, and should be set to 0101
-// to avoid compatibility issues with implementations ignoring a leading 00 byte.
-//
-// The Command tag describes the message content. Use TAG_APDU (0x05) for standard
-// APDU payloads, or TAG_PING (0x02) for a simple link test.
-//
-// The Packet sequence index describes the current sequence for fragmented payloads.
-// The first fragment index is 0x00.
-//
-// APDU Command payloads are encoded as follows:
-//
-// Description | Length
-// -----------------------------------
-// APDU length (big endian) | 2 bytes
-// APDU CLA | 1 byte
-// APDU INS | 1 byte
-// APDU P1 | 1 byte
-// APDU P2 | 1 byte
-// APDU length | 1 byte
-// Optional APDU data | arbitrary
-func (w *ledgerDriver) ledgerExchange(opcode ledgerOpcode, p1 ledgerParam1, p2 ledgerParam2, data []byte) ([]byte, error) {
- // Construct the message payload, possibly split into multiple chunks
- apdu := make([]byte, 2, 7+len(data))
-
- binary.BigEndian.PutUint16(apdu, uint16(5+len(data)))
- apdu = append(apdu, []byte{0xe0, byte(opcode), byte(p1), byte(p2), byte(len(data))}...)
- apdu = append(apdu, data...)
-
- // Stream all the chunks to the device
- header := []byte{0x01, 0x01, 0x05, 0x00, 0x00} // Channel ID and command tag appended
- chunk := make([]byte, 64)
- space := len(chunk) - len(header)
-
- for i := 0; len(apdu) > 0; i++ {
- // Construct the new message to stream
- chunk = append(chunk[:0], header...)
- binary.BigEndian.PutUint16(chunk[3:], uint16(i))
-
- if len(apdu) > space {
- chunk = append(chunk, apdu[:space]...)
- apdu = apdu[space:]
- } else {
- chunk = append(chunk, apdu...)
- apdu = nil
- }
- // Send over to the device
- w.log.Trace("Data chunk sent to the Ledger", "chunk", hexutil.Bytes(chunk))
- if _, err := w.device.Write(chunk); err != nil {
- return nil, err
- }
- }
- // Stream the reply back from the wallet in 64 byte chunks
- var reply []byte
- chunk = chunk[:64] // Yeah, we surely have enough space
- for {
- // Read the next chunk from the Ledger wallet
- if _, err := io.ReadFull(w.device, chunk); err != nil {
- return nil, err
- }
- w.log.Trace("Data chunk received from the Ledger", "chunk", hexutil.Bytes(chunk))
-
- // Make sure the transport header matches
- if chunk[0] != 0x01 || chunk[1] != 0x01 || chunk[2] != 0x05 {
- return nil, errLedgerReplyInvalidHeader
- }
- // If it's the first chunk, retrieve the total message length
- var payload []byte
-
- if chunk[3] == 0x00 && chunk[4] == 0x00 {
- reply = make([]byte, 0, int(binary.BigEndian.Uint16(chunk[5:7])))
- payload = chunk[7:]
- } else {
- payload = chunk[5:]
- }
- // Append to the reply and stop when filled up
- if left := cap(reply) - len(reply); left > len(payload) {
- reply = append(reply, payload...)
- } else {
- reply = append(reply, payload[:left]...)
- break
- }
- }
- return reply[:len(reply)-2], nil
-}
diff --git a/accounts/usbwallet/trezor.go b/accounts/usbwallet/trezor.go
deleted file mode 100644
index 833c7a9..0000000
--- a/accounts/usbwallet/trezor.go
+++ /dev/null
@@ -1,365 +0,0 @@
-// Copyright 2017 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
-// This file contains the implementation for interacting with the Trezor hardware
-// wallets. The wire protocol spec can be found on the SatoshiLabs website:
-// https://doc.satoshilabs.com/trezor-tech/api-protobuf.html
-
-package usbwallet
-
-import (
- "encoding/binary"
- "errors"
- "fmt"
- "io"
- "math/big"
-
- "github.com/ava-labs/coreth/accounts"
- "github.com/ava-labs/coreth/accounts/usbwallet/trezor"
- "github.com/ava-labs/coreth/core/types"
- "github.com/ava-labs/go-ethereum/common"
- "github.com/ava-labs/go-ethereum/common/hexutil"
- "github.com/ava-labs/go-ethereum/log"
- "github.com/golang/protobuf/proto"
-)
-
-// ErrTrezorPINNeeded is returned if opening the trezor requires a PIN code. In
-// this case, the calling application should display a pinpad and send back the
-// encoded passphrase.
-var ErrTrezorPINNeeded = errors.New("trezor: pin needed")
-
-// ErrTrezorPassphraseNeeded is returned if opening the trezor requires a passphrase
-var ErrTrezorPassphraseNeeded = errors.New("trezor: passphrase needed")
-
-// errTrezorReplyInvalidHeader is the error message returned by a Trezor data exchange
-// if the device replies with a mismatching header. This usually means the device
-// is in browser mode.
-var errTrezorReplyInvalidHeader = errors.New("trezor: invalid reply header")
-
-// trezorDriver implements the communication with a Trezor hardware wallet.
-type trezorDriver struct {
- device io.ReadWriter // USB device connection to communicate through
- version [3]uint32 // Current version of the Trezor firmware
- label string // Current textual label of the Trezor device
- pinwait bool // Flags whether the device is waiting for PIN entry
- passphrasewait bool // Flags whether the device is waiting for passphrase entry
- failure error // Any failure that would make the device unusable
- log log.Logger // Contextual logger to tag the trezor with its id
-}
-
-// newTrezorDriver creates a new instance of a Trezor USB protocol driver.
-func newTrezorDriver(logger log.Logger) driver {
- return &trezorDriver{
- log: logger,
- }
-}
-
-// Status implements accounts.Wallet, always whether the Trezor is opened, closed
-// or whether the Ethereum app was not started on it.
-func (w *trezorDriver) Status() (string, error) {
- if w.failure != nil {
- return fmt.Sprintf("Failed: %v", w.failure), w.failure
- }
- if w.device == nil {
- return "Closed", w.failure
- }
- if w.pinwait {
- return fmt.Sprintf("Trezor v%d.%d.%d '%s' waiting for PIN", w.version[0], w.version[1], w.version[2], w.label), w.failure
- }
- return fmt.Sprintf("Trezor v%d.%d.%d '%s' online", w.version[0], w.version[1], w.version[2], w.label), w.failure
-}
-
-// Open implements usbwallet.driver, attempting to initialize the connection to
-// the Trezor hardware wallet. Initializing the Trezor is a two or three phase operation:
-// * The first phase is to initialize the connection and read the wallet's
-// features. This phase is invoked if the provided passphrase is empty. The
-// device will display the pinpad as a result and will return an appropriate
-// error to notify the user that a second open phase is needed.
-// * The second phase is to unlock access to the Trezor, which is done by the
-// user actually providing a passphrase mapping a keyboard keypad to the pin
-// number of the user (shuffled according to the pinpad displayed).
-// * If needed the device will ask for passphrase which will require calling
-// open again with the actual passphrase (3rd phase)
-func (w *trezorDriver) Open(device io.ReadWriter, passphrase string) error {
- w.device, w.failure = device, nil
-
- // If phase 1 is requested, init the connection and wait for user callback
- if passphrase == "" && !w.passphrasewait {
- // If we're already waiting for a PIN entry, insta-return
- if w.pinwait {
- return ErrTrezorPINNeeded
- }
- // Initialize a connection to the device
- features := new(trezor.Features)
- if _, err := w.trezorExchange(&trezor.Initialize{}, features); err != nil {
- return err
- }
- w.version = [3]uint32{features.GetMajorVersion(), features.GetMinorVersion(), features.GetPatchVersion()}
- w.label = features.GetLabel()
-
- // Do a manual ping, forcing the device to ask for its PIN and Passphrase
- askPin := true
- askPassphrase := true
- res, err := w.trezorExchange(&trezor.Ping{PinProtection: &askPin, PassphraseProtection: &askPassphrase}, new(trezor.PinMatrixRequest), new(trezor.PassphraseRequest), new(trezor.Success))
- if err != nil {
- return err
- }
- // Only return the PIN request if the device wasn't unlocked until now
- switch res {
- case 0:
- w.pinwait = true
- return ErrTrezorPINNeeded
- case 1:
- w.pinwait = false
- w.passphrasewait = true
- return ErrTrezorPassphraseNeeded
- case 2:
- return nil // responded with trezor.Success
- }
- }
- // Phase 2 requested with actual PIN entry
- if w.pinwait {
- w.pinwait = false
- res, err := w.trezorExchange(&trezor.PinMatrixAck{Pin: &passphrase}, new(trezor.Success), new(trezor.PassphraseRequest))
- if err != nil {
- w.failure = err
- return err
- }
- if res == 1 {
- w.passphrasewait = true
- return ErrTrezorPassphraseNeeded
- }
- } else if w.passphrasewait {
- w.passphrasewait = false
- if _, err := w.trezorExchange(&trezor.PassphraseAck{Passphrase: &passphrase}, new(trezor.Success)); err != nil {
- w.failure = err
- return err
- }
- }
-
- return nil
-}
-
-// Close implements usbwallet.driver, cleaning up and metadata maintained within
-// the Trezor driver.
-func (w *trezorDriver) Close() error {
- w.version, w.label, w.pinwait = [3]uint32{}, "", false
- return nil
-}
-
-// Heartbeat implements usbwallet.driver, performing a sanity check against the
-// Trezor to see if it's still online.
-func (w *trezorDriver) Heartbeat() error {
- if _, err := w.trezorExchange(&trezor.Ping{}, new(trezor.Success)); err != nil {
- w.failure = err
- return err
- }
- return nil
-}
-
-// Derive implements usbwallet.driver, sending a derivation request to the Trezor
-// and returning the Ethereum address located on that derivation path.
-func (w *trezorDriver) Derive(path accounts.DerivationPath) (common.Address, error) {
- return w.trezorDerive(path)
-}
-
-// SignTx implements usbwallet.driver, sending the transaction to the Trezor and
-// waiting for the user to confirm or deny the transaction.
-func (w *trezorDriver) SignTx(path accounts.DerivationPath, tx *types.Transaction, chainID *big.Int) (common.Address, *types.Transaction, error) {
- if w.device == nil {
- return common.Address{}, nil, accounts.ErrWalletClosed
- }
- return w.trezorSign(path, tx, chainID)
-}
-
-// trezorDerive sends a derivation request to the Trezor device and returns the
-// Ethereum address located on that path.
-func (w *trezorDriver) trezorDerive(derivationPath []uint32) (common.Address, error) {
- address := new(trezor.EthereumAddress)
- if _, err := w.trezorExchange(&trezor.EthereumGetAddress{AddressN: derivationPath}, address); err != nil {
- return common.Address{}, err
- }
- if addr := address.GetAddressBin(); len(addr) > 0 { // Older firmwares use binary fomats
- return common.BytesToAddress(addr), nil
- }
- if addr := address.GetAddressHex(); len(addr) > 0 { // Newer firmwares use hexadecimal fomats
- return common.HexToAddress(addr), nil
- }
- return common.Address{}, errors.New("missing derived address")
-}
-
-// trezorSign sends the transaction to the Trezor wallet, and waits for the user
-// to confirm or deny the transaction.
-func (w *trezorDriver) trezorSign(derivationPath []uint32, tx *types.Transaction, chainID *big.Int) (common.Address, *types.Transaction, error) {
- // Create the transaction initiation message
- data := tx.Data()
- length := uint32(len(data))
-
- request := &trezor.EthereumSignTx{
- AddressN: derivationPath,
- Nonce: new(big.Int).SetUint64(tx.Nonce()).Bytes(),
- GasPrice: tx.GasPrice().Bytes(),
- GasLimit: new(big.Int).SetUint64(tx.Gas()).Bytes(),
- Value: tx.Value().Bytes(),
- DataLength: &length,
- }
- if to := tx.To(); to != nil {
- // Non contract deploy, set recipient explicitly
- hex := to.Hex()
- request.ToHex = &hex // Newer firmwares (old will ignore)
- request.ToBin = (*to)[:] // Older firmwares (new will ignore)
- }
- if length > 1024 { // Send the data chunked if that was requested
- request.DataInitialChunk, data = data[:1024], data[1024:]
- } else {
- request.DataInitialChunk, data = data, nil
- }
- if chainID != nil { // EIP-155 transaction, set chain ID explicitly (only 32 bit is supported!?)
- id := uint32(chainID.Int64())
- request.ChainId = &id
- }
- // Send the initiation message and stream content until a signature is returned
- response := new(trezor.EthereumTxRequest)
- if _, err := w.trezorExchange(request, response); err != nil {
- return common.Address{}, nil, err
- }
- for response.DataLength != nil && int(*response.DataLength) <= len(data) {
- chunk := data[:*response.DataLength]
- data = data[*response.DataLength:]
-
- if _, err := w.trezorExchange(&trezor.EthereumTxAck{DataChunk: chunk}, response); err != nil {
- return common.Address{}, nil, err
- }
- }
- // Extract the Ethereum signature and do a sanity validation
- if len(response.GetSignatureR()) == 0 || len(response.GetSignatureS()) == 0 || response.GetSignatureV() == 0 {
- return common.Address{}, nil, errors.New("reply lacks signature")
- }
- signature := append(append(response.GetSignatureR(), response.GetSignatureS()...), byte(response.GetSignatureV()))
-
- // Create the correct signer and signature transform based on the chain ID
- var signer types.Signer
- if chainID == nil {
- signer = new(types.HomesteadSigner)
- } else {
- signer = types.NewEIP155Signer(chainID)
- signature[64] -= byte(chainID.Uint64()*2 + 35)
- }
- // Inject the final signature into the transaction and sanity check the sender
- signed, err := tx.WithSignature(signer, signature)
- if err != nil {
- return common.Address{}, nil, err
- }
- sender, err := types.Sender(signer, signed)
- if err != nil {
- return common.Address{}, nil, err
- }
- return sender, signed, nil
-}
-
-// trezorExchange performs a data exchange with the Trezor wallet, sending it a
-// message and retrieving the response. If multiple responses are possible, the
-// method will also return the index of the destination object used.
-func (w *trezorDriver) trezorExchange(req proto.Message, results ...proto.Message) (int, error) {
- // Construct the original message payload to chunk up
- data, err := proto.Marshal(req)
- if err != nil {
- return 0, err
- }
- payload := make([]byte, 8+len(data))
- copy(payload, []byte{0x23, 0x23})
- binary.BigEndian.PutUint16(payload[2:], trezor.Type(req))
- binary.BigEndian.PutUint32(payload[4:], uint32(len(data)))
- copy(payload[8:], data)
-
- // Stream all the chunks to the device
- chunk := make([]byte, 64)
- chunk[0] = 0x3f // Report ID magic number
-
- for len(payload) > 0 {
- // Construct the new message to stream, padding with zeroes if needed
- if len(payload) > 63 {
- copy(chunk[1:], payload[:63])
- payload = payload[63:]
- } else {
- copy(chunk[1:], payload)
- copy(chunk[1+len(payload):], make([]byte, 63-len(payload)))
- payload = nil
- }
- // Send over to the device
- w.log.Trace("Data chunk sent to the Trezor", "chunk", hexutil.Bytes(chunk))
- if _, err := w.device.Write(chunk); err != nil {
- return 0, err
- }
- }
- // Stream the reply back from the wallet in 64 byte chunks
- var (
- kind uint16
- reply []byte
- )
- for {
- // Read the next chunk from the Trezor wallet
- if _, err := io.ReadFull(w.device, chunk); err != nil {
- return 0, err
- }
- w.log.Trace("Data chunk received from the Trezor", "chunk", hexutil.Bytes(chunk))
-
- // Make sure the transport header matches
- if chunk[0] != 0x3f || (len(reply) == 0 && (chunk[1] != 0x23 || chunk[2] != 0x23)) {
- return 0, errTrezorReplyInvalidHeader
- }
- // If it's the first chunk, retrieve the reply message type and total message length
- var payload []byte
-
- if len(reply) == 0 {
- kind = binary.BigEndian.Uint16(chunk[3:5])
- reply = make([]byte, 0, int(binary.BigEndian.Uint32(chunk[5:9])))
- payload = chunk[9:]
- } else {
- payload = chunk[1:]
- }
- // Append to the reply and stop when filled up
- if left := cap(reply) - len(reply); left > len(payload) {
- reply = append(reply, payload...)
- } else {
- reply = append(reply, payload[:left]...)
- break
- }
- }
- // Try to parse the reply into the requested reply message
- if kind == uint16(trezor.MessageType_MessageType_Failure) {
- // Trezor returned a failure, extract and return the message
- failure := new(trezor.Failure)
- if err := proto.Unmarshal(reply, failure); err != nil {
- return 0, err
- }
- return 0, errors.New("trezor: " + failure.GetMessage())
- }
- if kind == uint16(trezor.MessageType_MessageType_ButtonRequest) {
- // Trezor is waiting for user confirmation, ack and wait for the next message
- return w.trezorExchange(&trezor.ButtonAck{}, results...)
- }
- for i, res := range results {
- if trezor.Type(res) == kind {
- return i, proto.Unmarshal(reply, res)
- }
- }
- expected := make([]string, len(results))
- for i, res := range results {
- expected[i] = trezor.Name(trezor.Type(res))
- }
- return 0, fmt.Errorf("trezor: expected reply types %s, got %s", expected, trezor.Name(kind))
-}
diff --git a/accounts/usbwallet/trezor/messages-common.pb.go b/accounts/usbwallet/trezor/messages-common.pb.go
deleted file mode 100644
index 304bec0..0000000
--- a/accounts/usbwallet/trezor/messages-common.pb.go
+++ /dev/null
@@ -1,811 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: messages-common.proto
-
-package trezor
-
-import (
- fmt "fmt"
- math "math"
-
- proto "github.com/golang/protobuf/proto"
-)
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
-
-type Failure_FailureType int32
-
-const (
- Failure_Failure_UnexpectedMessage Failure_FailureType = 1
- Failure_Failure_ButtonExpected Failure_FailureType = 2
- Failure_Failure_DataError Failure_FailureType = 3
- Failure_Failure_ActionCancelled Failure_FailureType = 4
- Failure_Failure_PinExpected Failure_FailureType = 5
- Failure_Failure_PinCancelled Failure_FailureType = 6
- Failure_Failure_PinInvalid Failure_FailureType = 7
- Failure_Failure_InvalidSignature Failure_FailureType = 8
- Failure_Failure_ProcessError Failure_FailureType = 9
- Failure_Failure_NotEnoughFunds Failure_FailureType = 10
- Failure_Failure_NotInitialized Failure_FailureType = 11
- Failure_Failure_PinMismatch Failure_FailureType = 12
- Failure_Failure_FirmwareError Failure_FailureType = 99
-)
-
-var Failure_FailureType_name = map[int32]string{
- 1: "Failure_UnexpectedMessage",
- 2: "Failure_ButtonExpected",
- 3: "Failure_DataError",
- 4: "Failure_ActionCancelled",
- 5: "Failure_PinExpected",
- 6: "Failure_PinCancelled",
- 7: "Failure_PinInvalid",
- 8: "Failure_InvalidSignature",
- 9: "Failure_ProcessError",
- 10: "Failure_NotEnoughFunds",
- 11: "Failure_NotInitialized",
- 12: "Failure_PinMismatch",
- 99: "Failure_FirmwareError",
-}
-
-var Failure_FailureType_value = map[string]int32{
- "Failure_UnexpectedMessage": 1,
- "Failure_ButtonExpected": 2,
- "Failure_DataError": 3,
- "Failure_ActionCancelled": 4,
- "Failure_PinExpected": 5,
- "Failure_PinCancelled": 6,
- "Failure_PinInvalid": 7,
- "Failure_InvalidSignature": 8,
- "Failure_ProcessError": 9,
- "Failure_NotEnoughFunds": 10,
- "Failure_NotInitialized": 11,
- "Failure_PinMismatch": 12,
- "Failure_FirmwareError": 99,
-}
-
-func (x Failure_FailureType) Enum() *Failure_FailureType {
- p := new(Failure_FailureType)
- *p = x
- return p
-}
-
-func (x Failure_FailureType) String() string {
- return proto.EnumName(Failure_FailureType_name, int32(x))
-}
-
-func (x *Failure_FailureType) UnmarshalJSON(data []byte) error {
- value, err := proto.UnmarshalJSONEnum(Failure_FailureType_value, data, "Failure_FailureType")
- if err != nil {
- return err
- }
- *x = Failure_FailureType(value)
- return nil
-}
-
-func (Failure_FailureType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_aaf30d059fdbc38d, []int{1, 0}
-}
-
-//*
-// Type of button request
-type ButtonRequest_ButtonRequestType int32
-
-const (
- ButtonRequest_ButtonRequest_Other ButtonRequest_ButtonRequestType = 1
- ButtonRequest_ButtonRequest_FeeOverThreshold ButtonRequest_ButtonRequestType = 2
- ButtonRequest_ButtonRequest_ConfirmOutput ButtonRequest_ButtonRequestType = 3
- ButtonRequest_ButtonRequest_ResetDevice ButtonRequest_ButtonRequestType = 4
- ButtonRequest_ButtonRequest_ConfirmWord ButtonRequest_ButtonRequestType = 5
- ButtonRequest_ButtonRequest_WipeDevice ButtonRequest_ButtonRequestType = 6
- ButtonRequest_ButtonRequest_ProtectCall ButtonRequest_ButtonRequestType = 7
- ButtonRequest_ButtonRequest_SignTx ButtonRequest_ButtonRequestType = 8
- ButtonRequest_ButtonRequest_FirmwareCheck ButtonRequest_ButtonRequestType = 9
- ButtonRequest_ButtonRequest_Address ButtonRequest_ButtonRequestType = 10
- ButtonRequest_ButtonRequest_PublicKey ButtonRequest_ButtonRequestType = 11
- ButtonRequest_ButtonRequest_MnemonicWordCount ButtonRequest_ButtonRequestType = 12
- ButtonRequest_ButtonRequest_MnemonicInput ButtonRequest_ButtonRequestType = 13
- ButtonRequest_ButtonRequest_PassphraseType ButtonRequest_ButtonRequestType = 14
- ButtonRequest_ButtonRequest_UnknownDerivationPath ButtonRequest_ButtonRequestType = 15
-)
-
-var ButtonRequest_ButtonRequestType_name = map[int32]string{
- 1: "ButtonRequest_Other",
- 2: "ButtonRequest_FeeOverThreshold",
- 3: "ButtonRequest_ConfirmOutput",
- 4: "ButtonRequest_ResetDevice",
- 5: "ButtonRequest_ConfirmWord",
- 6: "ButtonRequest_WipeDevice",
- 7: "ButtonRequest_ProtectCall",
- 8: "ButtonRequest_SignTx",
- 9: "ButtonRequest_FirmwareCheck",
- 10: "ButtonRequest_Address",
- 11: "ButtonRequest_PublicKey",
- 12: "ButtonRequest_MnemonicWordCount",
- 13: "ButtonRequest_MnemonicInput",
- 14: "ButtonRequest_PassphraseType",
- 15: "ButtonRequest_UnknownDerivationPath",
-}
-
-var ButtonRequest_ButtonRequestType_value = map[string]int32{
- "ButtonRequest_Other": 1,
- "ButtonRequest_FeeOverThreshold": 2,
- "ButtonRequest_ConfirmOutput": 3,
- "ButtonRequest_ResetDevice": 4,
- "ButtonRequest_ConfirmWord": 5,
- "ButtonRequest_WipeDevice": 6,
- "ButtonRequest_ProtectCall": 7,
- "ButtonRequest_SignTx": 8,
- "ButtonRequest_FirmwareCheck": 9,
- "ButtonRequest_Address": 10,
- "ButtonRequest_PublicKey": 11,
- "ButtonRequest_MnemonicWordCount": 12,
- "ButtonRequest_MnemonicInput": 13,
- "ButtonRequest_PassphraseType": 14,
- "ButtonRequest_UnknownDerivationPath": 15,
-}
-
-func (x ButtonRequest_ButtonRequestType) Enum() *ButtonRequest_ButtonRequestType {
- p := new(ButtonRequest_ButtonRequestType)
- *p = x
- return p
-}
-
-func (x ButtonRequest_ButtonRequestType) String() string {
- return proto.EnumName(ButtonRequest_ButtonRequestType_name, int32(x))
-}
-
-func (x *ButtonRequest_ButtonRequestType) UnmarshalJSON(data []byte) error {
- value, err := proto.UnmarshalJSONEnum(ButtonRequest_ButtonRequestType_value, data, "ButtonRequest_ButtonRequestType")
- if err != nil {
- return err
- }
- *x = ButtonRequest_ButtonRequestType(value)
- return nil
-}
-
-func (ButtonRequest_ButtonRequestType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_aaf30d059fdbc38d, []int{2, 0}
-}
-
-//*
-// Type of PIN request
-type PinMatrixRequest_PinMatrixRequestType int32
-
-const (
- PinMatrixRequest_PinMatrixRequestType_Current PinMatrixRequest_PinMatrixRequestType = 1
- PinMatrixRequest_PinMatrixRequestType_NewFirst PinMatrixRequest_PinMatrixRequestType = 2
- PinMatrixRequest_PinMatrixRequestType_NewSecond PinMatrixRequest_PinMatrixRequestType = 3
-)
-
-var PinMatrixRequest_PinMatrixRequestType_name = map[int32]string{
- 1: "PinMatrixRequestType_Current",
- 2: "PinMatrixRequestType_NewFirst",
- 3: "PinMatrixRequestType_NewSecond",
-}
-
-var PinMatrixRequest_PinMatrixRequestType_value = map[string]int32{
- "PinMatrixRequestType_Current": 1,
- "PinMatrixRequestType_NewFirst": 2,
- "PinMatrixRequestType_NewSecond": 3,
-}
-
-func (x PinMatrixRequest_PinMatrixRequestType) Enum() *PinMatrixRequest_PinMatrixRequestType {
- p := new(PinMatrixRequest_PinMatrixRequestType)
- *p = x
- return p
-}
-
-func (x PinMatrixRequest_PinMatrixRequestType) String() string {
- return proto.EnumName(PinMatrixRequest_PinMatrixRequestType_name, int32(x))
-}
-
-func (x *PinMatrixRequest_PinMatrixRequestType) UnmarshalJSON(data []byte) error {
- value, err := proto.UnmarshalJSONEnum(PinMatrixRequest_PinMatrixRequestType_value, data, "PinMatrixRequest_PinMatrixRequestType")
- if err != nil {
- return err
- }
- *x = PinMatrixRequest_PinMatrixRequestType(value)
- return nil
-}
-
-func (PinMatrixRequest_PinMatrixRequestType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_aaf30d059fdbc38d, []int{4, 0}
-}
-
-//*
-// Response: Success of the previous request
-// @end
-type Success struct {
- Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_aaf30d059fdbc38d, []int{0}
-}
-
-func (m *Success) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Success.Unmarshal(m, b)
-}
-func (m *Success) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Success.Marshal(b, m, deterministic)
-}
-func (m *Success) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Success.Merge(m, src)
-}
-func (m *Success) XXX_Size() int {
- return xxx_messageInfo_Success.Size(m)
-}
-func (m *Success) XXX_DiscardUnknown() {
- xxx_messageInfo_Success.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Success proto.InternalMessageInfo
-
-func (m *Success) GetMessage() string {
- if m != nil && m.Message != nil {
- return *m.Message
- }
- return ""
-}
-
-//*
-// Response: Failure of the previous request
-// @end
-type Failure struct {
- Code *Failure_FailureType `protobuf:"varint,1,opt,name=code,enum=hw.trezor.messages.common.Failure_FailureType" json:"code,omitempty"`
- Message *string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_aaf30d059fdbc38d, []int{1}
-}
-
-func (m *Failure) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Failure.Unmarshal(m, b)
-}
-func (m *Failure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Failure.Marshal(b, m, deterministic)
-}
-func (m *Failure) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Failure.Merge(m, src)
-}
-func (m *Failure) XXX_Size() int {
- return xxx_messageInfo_Failure.Size(m)
-}
-func (m *Failure) XXX_DiscardUnknown() {
- xxx_messageInfo_Failure.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Failure proto.InternalMessageInfo
-
-func (m *Failure) GetCode() Failure_FailureType {
- if m != nil && m.Code != nil {
- return *m.Code
- }
- return Failure_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.
-// @auxstart
-// @next ButtonAck
-type ButtonRequest struct {
- Code *ButtonRequest_ButtonRequestType `protobuf:"varint,1,opt,name=code,enum=hw.trezor.messages.common.ButtonRequest_ButtonRequestType" json:"code,omitempty"`
- Data *string `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_aaf30d059fdbc38d, []int{2}
-}
-
-func (m *ButtonRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ButtonRequest.Unmarshal(m, b)
-}
-func (m *ButtonRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ButtonRequest.Marshal(b, m, deterministic)
-}
-func (m *ButtonRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ButtonRequest.Merge(m, src)
-}
-func (m *ButtonRequest) XXX_Size() int {
- return xxx_messageInfo_ButtonRequest.Size(m)
-}
-func (m *ButtonRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_ButtonRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ButtonRequest proto.InternalMessageInfo
-
-func (m *ButtonRequest) GetCode() ButtonRequest_ButtonRequestType {
- if m != nil && m.Code != nil {
- return *m.Code
- }
- return ButtonRequest_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
-// @auxend
-type ButtonAck struct {
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_aaf30d059fdbc38d, []int{3}
-}
-
-func (m *ButtonAck) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ButtonAck.Unmarshal(m, b)
-}
-func (m *ButtonAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ButtonAck.Marshal(b, m, deterministic)
-}
-func (m *ButtonAck) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ButtonAck.Merge(m, src)
-}
-func (m *ButtonAck) XXX_Size() int {
- return xxx_messageInfo_ButtonAck.Size(m)
-}
-func (m *ButtonAck) XXX_DiscardUnknown() {
- xxx_messageInfo_ButtonAck.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ButtonAck proto.InternalMessageInfo
-
-//*
-// Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme
-// @auxstart
-// @next PinMatrixAck
-type PinMatrixRequest struct {
- Type *PinMatrixRequest_PinMatrixRequestType `protobuf:"varint,1,opt,name=type,enum=hw.trezor.messages.common.PinMatrixRequest_PinMatrixRequestType" json:"type,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_aaf30d059fdbc38d, []int{4}
-}
-
-func (m *PinMatrixRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PinMatrixRequest.Unmarshal(m, b)
-}
-func (m *PinMatrixRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PinMatrixRequest.Marshal(b, m, deterministic)
-}
-func (m *PinMatrixRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PinMatrixRequest.Merge(m, src)
-}
-func (m *PinMatrixRequest) XXX_Size() int {
- return xxx_messageInfo_PinMatrixRequest.Size(m)
-}
-func (m *PinMatrixRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_PinMatrixRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PinMatrixRequest proto.InternalMessageInfo
-
-func (m *PinMatrixRequest) GetType() PinMatrixRequest_PinMatrixRequestType {
- if m != nil && m.Type != nil {
- return *m.Type
- }
- return PinMatrixRequest_PinMatrixRequestType_Current
-}
-
-//*
-// Request: Computer responds with encoded PIN
-// @auxend
-type PinMatrixAck struct {
- Pin *string `protobuf:"bytes,1,req,name=pin" json:"pin,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_aaf30d059fdbc38d, []int{5}
-}
-
-func (m *PinMatrixAck) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PinMatrixAck.Unmarshal(m, b)
-}
-func (m *PinMatrixAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PinMatrixAck.Marshal(b, m, deterministic)
-}
-func (m *PinMatrixAck) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PinMatrixAck.Merge(m, src)
-}
-func (m *PinMatrixAck) XXX_Size() int {
- return xxx_messageInfo_PinMatrixAck.Size(m)
-}
-func (m *PinMatrixAck) XXX_DiscardUnknown() {
- xxx_messageInfo_PinMatrixAck.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PinMatrixAck proto.InternalMessageInfo
-
-func (m *PinMatrixAck) GetPin() string {
- if m != nil && m.Pin != nil {
- return *m.Pin
- }
- return ""
-}
-
-//*
-// Response: Device awaits encryption passphrase
-// @auxstart
-// @next PassphraseAck
-type PassphraseRequest struct {
- OnDevice *bool `protobuf:"varint,1,opt,name=on_device,json=onDevice" json:"on_device,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_aaf30d059fdbc38d, []int{6}
-}
-
-func (m *PassphraseRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PassphraseRequest.Unmarshal(m, b)
-}
-func (m *PassphraseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PassphraseRequest.Marshal(b, m, deterministic)
-}
-func (m *PassphraseRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PassphraseRequest.Merge(m, src)
-}
-func (m *PassphraseRequest) XXX_Size() int {
- return xxx_messageInfo_PassphraseRequest.Size(m)
-}
-func (m *PassphraseRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_PassphraseRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PassphraseRequest proto.InternalMessageInfo
-
-func (m *PassphraseRequest) GetOnDevice() bool {
- if m != nil && m.OnDevice != nil {
- return *m.OnDevice
- }
- return false
-}
-
-//*
-// Request: Send passphrase back
-// @next PassphraseStateRequest
-type PassphraseAck struct {
- Passphrase *string `protobuf:"bytes,1,opt,name=passphrase" json:"passphrase,omitempty"`
- State []byte `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_aaf30d059fdbc38d, []int{7}
-}
-
-func (m *PassphraseAck) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PassphraseAck.Unmarshal(m, b)
-}
-func (m *PassphraseAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PassphraseAck.Marshal(b, m, deterministic)
-}
-func (m *PassphraseAck) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PassphraseAck.Merge(m, src)
-}
-func (m *PassphraseAck) XXX_Size() int {
- return xxx_messageInfo_PassphraseAck.Size(m)
-}
-func (m *PassphraseAck) XXX_DiscardUnknown() {
- xxx_messageInfo_PassphraseAck.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PassphraseAck proto.InternalMessageInfo
-
-func (m *PassphraseAck) GetPassphrase() string {
- if m != nil && m.Passphrase != nil {
- return *m.Passphrase
- }
- return ""
-}
-
-func (m *PassphraseAck) GetState() []byte {
- if m != nil {
- return m.State
- }
- return nil
-}
-
-//*
-// Response: Device awaits passphrase state
-// @next PassphraseStateAck
-type PassphraseStateRequest struct {
- State []byte `protobuf:"bytes,1,opt,name=state" json:"state,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *PassphraseStateRequest) Reset() { *m = PassphraseStateRequest{} }
-func (m *PassphraseStateRequest) String() string { return proto.CompactTextString(m) }
-func (*PassphraseStateRequest) ProtoMessage() {}
-func (*PassphraseStateRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_aaf30d059fdbc38d, []int{8}
-}
-
-func (m *PassphraseStateRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PassphraseStateRequest.Unmarshal(m, b)
-}
-func (m *PassphraseStateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PassphraseStateRequest.Marshal(b, m, deterministic)
-}
-func (m *PassphraseStateRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PassphraseStateRequest.Merge(m, src)
-}
-func (m *PassphraseStateRequest) XXX_Size() int {
- return xxx_messageInfo_PassphraseStateRequest.Size(m)
-}
-func (m *PassphraseStateRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_PassphraseStateRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PassphraseStateRequest proto.InternalMessageInfo
-
-func (m *PassphraseStateRequest) GetState() []byte {
- if m != nil {
- return m.State
- }
- return nil
-}
-
-//*
-// Request: Send passphrase state back
-// @auxend
-type PassphraseStateAck struct {
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *PassphraseStateAck) Reset() { *m = PassphraseStateAck{} }
-func (m *PassphraseStateAck) String() string { return proto.CompactTextString(m) }
-func (*PassphraseStateAck) ProtoMessage() {}
-func (*PassphraseStateAck) Descriptor() ([]byte, []int) {
- return fileDescriptor_aaf30d059fdbc38d, []int{9}
-}
-
-func (m *PassphraseStateAck) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PassphraseStateAck.Unmarshal(m, b)
-}
-func (m *PassphraseStateAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PassphraseStateAck.Marshal(b, m, deterministic)
-}
-func (m *PassphraseStateAck) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PassphraseStateAck.Merge(m, src)
-}
-func (m *PassphraseStateAck) XXX_Size() int {
- return xxx_messageInfo_PassphraseStateAck.Size(m)
-}
-func (m *PassphraseStateAck) XXX_DiscardUnknown() {
- xxx_messageInfo_PassphraseStateAck.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PassphraseStateAck proto.InternalMessageInfo
-
-//*
-// Structure representing BIP32 (hierarchical deterministic) node
-// Used for imports of private key into the device and exporting public key out of device
-// @embed
-type HDNodeType struct {
- Depth *uint32 `protobuf:"varint,1,req,name=depth" json:"depth,omitempty"`
- Fingerprint *uint32 `protobuf:"varint,2,req,name=fingerprint" json:"fingerprint,omitempty"`
- ChildNum *uint32 `protobuf:"varint,3,req,name=child_num,json=childNum" json:"child_num,omitempty"`
- ChainCode []byte `protobuf:"bytes,4,req,name=chain_code,json=chainCode" json:"chain_code,omitempty"`
- PrivateKey []byte `protobuf:"bytes,5,opt,name=private_key,json=privateKey" json:"private_key,omitempty"`
- PublicKey []byte `protobuf:"bytes,6,opt,name=public_key,json=publicKey" json:"public_key,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *HDNodeType) Reset() { *m = HDNodeType{} }
-func (m *HDNodeType) String() string { return proto.CompactTextString(m) }
-func (*HDNodeType) ProtoMessage() {}
-func (*HDNodeType) Descriptor() ([]byte, []int) {
- return fileDescriptor_aaf30d059fdbc38d, []int{10}
-}
-
-func (m *HDNodeType) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_HDNodeType.Unmarshal(m, b)
-}
-func (m *HDNodeType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_HDNodeType.Marshal(b, m, deterministic)
-}
-func (m *HDNodeType) XXX_Merge(src proto.Message) {
- xxx_messageInfo_HDNodeType.Merge(m, src)
-}
-func (m *HDNodeType) XXX_Size() int {
- return xxx_messageInfo_HDNodeType.Size(m)
-}
-func (m *HDNodeType) XXX_DiscardUnknown() {
- xxx_messageInfo_HDNodeType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HDNodeType proto.InternalMessageInfo
-
-func (m *HDNodeType) GetDepth() uint32 {
- if m != nil && m.Depth != nil {
- return *m.Depth
- }
- return 0
-}
-
-func (m *HDNodeType) GetFingerprint() uint32 {
- if m != nil && m.Fingerprint != nil {
- return *m.Fingerprint
- }
- return 0
-}
-
-func (m *HDNodeType) GetChildNum() uint32 {
- if m != nil && m.ChildNum != nil {
- return *m.ChildNum
- }
- return 0
-}
-
-func (m *HDNodeType) GetChainCode() []byte {
- if m != nil {
- return m.ChainCode
- }
- return nil
-}
-
-func (m *HDNodeType) GetPrivateKey() []byte {
- if m != nil {
- return m.PrivateKey
- }
- return nil
-}
-
-func (m *HDNodeType) GetPublicKey() []byte {
- if m != nil {
- return m.PublicKey
- }
- return nil
-}
-
-func init() {
- proto.RegisterEnum("hw.trezor.messages.common.Failure_FailureType", Failure_FailureType_name, Failure_FailureType_value)
- proto.RegisterEnum("hw.trezor.messages.common.ButtonRequest_ButtonRequestType", ButtonRequest_ButtonRequestType_name, ButtonRequest_ButtonRequestType_value)
- proto.RegisterEnum("hw.trezor.messages.common.PinMatrixRequest_PinMatrixRequestType", PinMatrixRequest_PinMatrixRequestType_name, PinMatrixRequest_PinMatrixRequestType_value)
- proto.RegisterType((*Success)(nil), "hw.trezor.messages.common.Success")
- proto.RegisterType((*Failure)(nil), "hw.trezor.messages.common.Failure")
- proto.RegisterType((*ButtonRequest)(nil), "hw.trezor.messages.common.ButtonRequest")
- proto.RegisterType((*ButtonAck)(nil), "hw.trezor.messages.common.ButtonAck")
- proto.RegisterType((*PinMatrixRequest)(nil), "hw.trezor.messages.common.PinMatrixRequest")
- proto.RegisterType((*PinMatrixAck)(nil), "hw.trezor.messages.common.PinMatrixAck")
- proto.RegisterType((*PassphraseRequest)(nil), "hw.trezor.messages.common.PassphraseRequest")
- proto.RegisterType((*PassphraseAck)(nil), "hw.trezor.messages.common.PassphraseAck")
- proto.RegisterType((*PassphraseStateRequest)(nil), "hw.trezor.messages.common.PassphraseStateRequest")
- proto.RegisterType((*PassphraseStateAck)(nil), "hw.trezor.messages.common.PassphraseStateAck")
- proto.RegisterType((*HDNodeType)(nil), "hw.trezor.messages.common.HDNodeType")
-}
-
-func init() { proto.RegisterFile("messages-common.proto", fileDescriptor_aaf30d059fdbc38d) }
-
-var fileDescriptor_aaf30d059fdbc38d = []byte{
- // 846 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xcd, 0x52, 0x23, 0x37,
- 0x10, 0x2e, 0xff, 0x80, 0xed, 0xb6, 0xd9, 0x08, 0xc5, 0x80, 0x09, 0xb0, 0x38, 0xc3, 0x21, 0x5c,
- 0xe2, 0x4a, 0xe5, 0x98, 0x53, 0x58, 0x83, 0x2b, 0xd4, 0x16, 0x86, 0x1a, 0xd8, 0xda, 0xa3, 0x4b,
- 0xd1, 0xf4, 0x32, 0x2a, 0xcf, 0x48, 0x13, 0x8d, 0x06, 0xf0, 0x5e, 0xf2, 0x6a, 0x79, 0x89, 0xbc,
- 0x42, 0xaa, 0x52, 0xb9, 0xe4, 0x11, 0xb6, 0x34, 0x3f, 0x78, 0xc6, 0x66, 0x39, 0xcd, 0xe8, 0xfb,
- 0xbe, 0xee, 0x96, 0xba, 0x3f, 0x09, 0x76, 0x42, 0x8c, 0x63, 0x76, 0x8f, 0xf1, 0x8f, 0x5c, 0x85,
- 0xa1, 0x92, 0xa3, 0x48, 0x2b, 0xa3, 0xe8, 0xbe, 0xff, 0x38, 0x32, 0x1a, 0x3f, 0x2b, 0x3d, 0x2a,
- 0x04, 0xa3, 0x4c, 0xe0, 0x9c, 0x40, 0xeb, 0x36, 0xe1, 0x1c, 0xe3, 0x98, 0x0e, 0xa0, 0x95, 0xb3,
- 0x83, 0xda, 0xb0, 0x76, 0xda, 0x71, 0x8b, 0xa5, 0xf3, 0x77, 0x03, 0x5a, 0x13, 0x26, 0x82, 0x44,
- 0x23, 0x7d, 0x07, 0x4d, 0xae, 0xbc, 0x4c, 0xf2, 0xe6, 0xe7, 0xd1, 0xe8, 0xab, 0xa9, 0x47, 0x79,
- 0x44, 0xf1, 0xbd, 0x5b, 0x44, 0xe8, 0xa6, 0xb1, 0xe5, 0x4a, 0xf5, 0x6a, 0xa5, 0xff, 0xea, 0xd0,
- 0x2d, 0xe9, 0xe9, 0x11, 0xec, 0xe7, 0xcb, 0xd9, 0x07, 0x89, 0x4f, 0x11, 0x72, 0x83, 0xde, 0x55,
- 0x26, 0x26, 0x35, 0xfa, 0x1d, 0xec, 0x16, 0xf4, 0xbb, 0xc4, 0x18, 0x25, 0x2f, 0x72, 0x09, 0xa9,
- 0xd3, 0x1d, 0xd8, 0x2e, 0xb8, 0x73, 0x66, 0xd8, 0x85, 0xd6, 0x4a, 0x93, 0x06, 0x3d, 0x80, 0xbd,
- 0x02, 0x3e, 0xe3, 0x46, 0x28, 0x39, 0x66, 0x92, 0x63, 0x10, 0xa0, 0x47, 0x9a, 0x74, 0x0f, 0xbe,
- 0x2d, 0xc8, 0x1b, 0xb1, 0x4c, 0xb6, 0x41, 0x07, 0xd0, 0x2f, 0x11, 0xcb, 0x90, 0x4d, 0xba, 0x0b,
- 0xb4, 0xc4, 0x5c, 0xca, 0x07, 0x16, 0x08, 0x8f, 0xb4, 0xe8, 0x21, 0x0c, 0x0a, 0x3c, 0x07, 0x6f,
- 0xc5, 0xbd, 0x64, 0x26, 0xd1, 0x48, 0xda, 0x95, 0x7c, 0x5a, 0xd9, 0xf6, 0x67, 0xfb, 0xeb, 0x94,
- 0x8f, 0x34, 0x55, 0xe6, 0x42, 0xaa, 0xe4, 0xde, 0x9f, 0x24, 0xd2, 0x8b, 0x09, 0xac, 0x70, 0x97,
- 0x52, 0x18, 0xc1, 0x02, 0xf1, 0x19, 0x3d, 0xd2, 0x5d, 0xd9, 0xfa, 0x95, 0x88, 0x43, 0x66, 0xb8,
- 0x4f, 0x7a, 0x74, 0x1f, 0x76, 0x0a, 0x62, 0x22, 0x74, 0xf8, 0xc8, 0x34, 0x66, 0xb5, 0xb8, 0xf3,
- 0x4f, 0x13, 0xb6, 0xb2, 0xbe, 0xb9, 0xf8, 0x47, 0x82, 0xb1, 0xa1, 0xd3, 0xca, 0x74, 0x7f, 0x79,
- 0x65, 0xba, 0x95, 0xb8, 0xea, 0xaa, 0x34, 0x69, 0x0a, 0x4d, 0x8f, 0x19, 0x96, 0x8f, 0x39, 0xfd,
- 0x77, 0xfe, 0x6f, 0xc0, 0xf6, 0x9a, 0xde, 0xee, 0xbf, 0x02, 0xce, 0xae, 0x8d, 0x8f, 0x9a, 0xd4,
- 0xa8, 0x03, 0x6f, 0xab, 0xc4, 0x04, 0xf1, 0xfa, 0x01, 0xf5, 0x9d, 0xaf, 0x31, 0xf6, 0x55, 0x60,
- 0x67, 0x7d, 0x0c, 0x07, 0x55, 0xcd, 0x58, 0xc9, 0x4f, 0x42, 0x87, 0xd7, 0x89, 0x89, 0x12, 0x43,
- 0x1a, 0xd6, 0x47, 0x55, 0x81, 0x8b, 0x31, 0x9a, 0x73, 0x7c, 0x10, 0x1c, 0x49, 0x73, 0x9d, 0xce,
- 0xe3, 0x3f, 0x2a, 0x6d, 0xa7, 0x7f, 0x08, 0x83, 0x2a, 0xfd, 0x51, 0x44, 0x98, 0x07, 0x6f, 0xae,
- 0x07, 0xdf, 0x68, 0x65, 0x90, 0x9b, 0x31, 0x0b, 0x02, 0xd2, 0xb2, 0xa3, 0xae, 0xd2, 0xd6, 0x07,
- 0x77, 0x4f, 0xa4, 0xbd, 0xbe, 0xeb, 0x62, 0x3e, 0x63, 0x1f, 0xf9, 0x9c, 0x74, 0xec, 0xe8, 0xaa,
- 0x82, 0x33, 0xcf, 0xd3, 0x18, 0x5b, 0x2b, 0x1c, 0xc0, 0xde, 0x4a, 0xd1, 0xe4, 0xf7, 0x40, 0xf0,
- 0xf7, 0xb8, 0x20, 0x5d, 0x7a, 0x02, 0xc7, 0x55, 0xf2, 0x4a, 0x62, 0xa8, 0xa4, 0xe0, 0xf6, 0x3c,
- 0x63, 0x95, 0x48, 0x43, 0x7a, 0xeb, 0xd5, 0x0b, 0xd1, 0xa5, 0xb4, 0x3d, 0xdb, 0xa2, 0x43, 0x38,
- 0x5c, 0x29, 0xc1, 0xe2, 0x38, 0xf2, 0x35, 0x8b, 0xd3, 0xbb, 0x49, 0xde, 0xd0, 0x1f, 0xe0, 0xa4,
- 0xaa, 0xf8, 0x20, 0xe7, 0x52, 0x3d, 0xca, 0x73, 0xd4, 0xe2, 0x81, 0xd9, 0xcb, 0x75, 0xc3, 0x8c,
- 0x4f, 0xbe, 0x71, 0xba, 0xd0, 0xc9, 0x84, 0x67, 0x7c, 0xee, 0xfc, 0x5b, 0x03, 0x62, 0x2d, 0xca,
- 0x8c, 0x16, 0x4f, 0x85, 0xf1, 0xee, 0xa0, 0x69, 0x16, 0x51, 0x61, 0xbc, 0x5f, 0x5f, 0x31, 0xde,
- 0x6a, 0xe8, 0x1a, 0x90, 0xd9, 0xcf, 0x66, 0x73, 0xfe, 0x84, 0xfe, 0x4b, 0xac, 0x3d, 0xda, 0x4b,
- 0xf8, 0x6c, 0x9c, 0x68, 0x8d, 0xd2, 0x90, 0x1a, 0xfd, 0x1e, 0x8e, 0x5e, 0x54, 0x4c, 0xf1, 0x71,
- 0x22, 0x74, 0x6c, 0x48, 0xdd, 0x1a, 0xf3, 0x6b, 0x92, 0x5b, 0xe4, 0x4a, 0x7a, 0xa4, 0xe1, 0x0c,
- 0xa1, 0xf7, 0xac, 0x39, 0xe3, 0x73, 0x4a, 0xa0, 0x11, 0x09, 0x39, 0xa8, 0x0d, 0xeb, 0xa7, 0x1d,
- 0xd7, 0xfe, 0x3a, 0x3f, 0xc1, 0xf6, 0xb2, 0xaf, 0x45, 0x37, 0x0e, 0xa0, 0xa3, 0xe4, 0xcc, 0x4b,
- 0x1d, 0x96, 0xb6, 0xa4, 0xed, 0xb6, 0x95, 0xcc, 0x1c, 0xe7, 0x5c, 0xc0, 0xd6, 0x32, 0xc2, 0x26,
- 0x7d, 0x0b, 0x10, 0x3d, 0x03, 0xf9, 0xdb, 0x5d, 0x42, 0x68, 0x1f, 0x36, 0x62, 0xc3, 0x4c, 0xf6,
- 0xd8, 0xf6, 0xdc, 0x6c, 0xe1, 0x8c, 0x60, 0x77, 0x99, 0xe6, 0xd6, 0x42, 0x45, 0xf5, 0x67, 0x7d,
- 0xad, 0xac, 0xef, 0x03, 0x5d, 0xd1, 0xdb, 0x61, 0xfe, 0x55, 0x03, 0xf8, 0xed, 0x7c, 0xaa, 0xbc,
- 0xec, 0xbd, 0xee, 0xc3, 0x86, 0x87, 0x91, 0xf1, 0xd3, 0x13, 0x6e, 0xb9, 0xd9, 0x82, 0x0e, 0xa1,
- 0xfb, 0x49, 0xc8, 0x7b, 0xd4, 0x91, 0x16, 0xd2, 0x0c, 0xea, 0x29, 0x57, 0x86, 0xec, 0x81, 0xb9,
- 0x2f, 0x02, 0x6f, 0x26, 0x93, 0x70, 0xd0, 0x48, 0xf9, 0x76, 0x0a, 0x4c, 0x93, 0x90, 0x1e, 0x01,
- 0x70, 0x9f, 0x09, 0x39, 0x4b, 0x9f, 0xa6, 0xe6, 0xb0, 0x7e, 0xda, 0x73, 0x3b, 0x29, 0x32, 0xb6,
- 0x6f, 0xcc, 0x31, 0x74, 0xa3, 0xd4, 0x6f, 0x38, 0x9b, 0xe3, 0x62, 0xb0, 0x91, 0x6e, 0x1a, 0x72,
- 0xe8, 0x3d, 0x2e, 0x6c, 0x7c, 0x94, 0xde, 0x8e, 0x94, 0xdf, 0x4c, 0xf9, 0x4e, 0x54, 0xdc, 0x97,
- 0x2f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x7d, 0x20, 0xa6, 0x35, 0x07, 0x00, 0x00,
-}
diff --git a/accounts/usbwallet/trezor/messages-common.proto b/accounts/usbwallet/trezor/messages-common.proto
deleted file mode 100644
index 75a983b..0000000
--- a/accounts/usbwallet/trezor/messages-common.proto
+++ /dev/null
@@ -1,147 +0,0 @@
-// This file originates from the SatoshiLabs Trezor `common` repository at:
-// https://github.com/trezor/trezor-common/blob/master/protob/messages-common.proto
-// dated 28.05.2019, commit 893fd219d4a01bcffa0cd9cfa631856371ec5aa9.
-
-syntax = "proto2";
-package hw.trezor.messages.common;
-
-/**
- * Response: Success of the previous request
- * @end
- */
-message Success {
- optional string message = 1; // human readable description of action or request-specific payload
-}
-
-/**
- * Response: Failure of the previous request
- * @end
- */
-message Failure {
- optional FailureType code = 1; // computer-readable definition of the error state
- optional string message = 2; // human-readable message of the error state
- enum FailureType {
- Failure_UnexpectedMessage = 1;
- Failure_ButtonExpected = 2;
- Failure_DataError = 3;
- Failure_ActionCancelled = 4;
- Failure_PinExpected = 5;
- Failure_PinCancelled = 6;
- Failure_PinInvalid = 7;
- Failure_InvalidSignature = 8;
- Failure_ProcessError = 9;
- Failure_NotEnoughFunds = 10;
- Failure_NotInitialized = 11;
- Failure_PinMismatch = 12;
- Failure_FirmwareError = 99;
- }
-}
-
-/**
- * Response: Device is waiting for HW button press.
- * @auxstart
- * @next ButtonAck
- */
-message ButtonRequest {
- optional ButtonRequestType code = 1;
- optional string data = 2;
- /**
- * Type of button request
- */
- enum ButtonRequestType {
- ButtonRequest_Other = 1;
- ButtonRequest_FeeOverThreshold = 2;
- ButtonRequest_ConfirmOutput = 3;
- ButtonRequest_ResetDevice = 4;
- ButtonRequest_ConfirmWord = 5;
- ButtonRequest_WipeDevice = 6;
- ButtonRequest_ProtectCall = 7;
- ButtonRequest_SignTx = 8;
- ButtonRequest_FirmwareCheck = 9;
- ButtonRequest_Address = 10;
- ButtonRequest_PublicKey = 11;
- ButtonRequest_MnemonicWordCount = 12;
- ButtonRequest_MnemonicInput = 13;
- ButtonRequest_PassphraseType = 14;
- ButtonRequest_UnknownDerivationPath = 15;
- }
-}
-
-/**
- * Request: Computer agrees to wait for HW button press
- * @auxend
- */
-message ButtonAck {
-}
-
-/**
- * Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme
- * @auxstart
- * @next PinMatrixAck
- */
-message PinMatrixRequest {
- optional PinMatrixRequestType type = 1;
- /**
- * Type of PIN request
- */
- enum PinMatrixRequestType {
- PinMatrixRequestType_Current = 1;
- PinMatrixRequestType_NewFirst = 2;
- PinMatrixRequestType_NewSecond = 3;
- }
-}
-
-/**
- * Request: Computer responds with encoded PIN
- * @auxend
- */
-message PinMatrixAck {
- required string pin = 1; // matrix encoded PIN entered by user
-}
-
-/**
- * Response: Device awaits encryption passphrase
- * @auxstart
- * @next PassphraseAck
- */
-message PassphraseRequest {
- optional bool on_device = 1; // passphrase is being entered on the device
-}
-
-/**
- * Request: Send passphrase back
- * @next PassphraseStateRequest
- */
-message PassphraseAck {
- optional string passphrase = 1;
- optional bytes state = 2; // expected device state
-}
-
-/**
- * Response: Device awaits passphrase state
- * @next PassphraseStateAck
- */
-message PassphraseStateRequest {
- optional bytes state = 1; // actual device state
-}
-
-/**
- * Request: Send passphrase state back
- * @auxend
- */
-message PassphraseStateAck {
-}
-
-/**
- * Structure representing BIP32 (hierarchical deterministic) node
- * Used for imports of private key into the device and exporting public key out of device
- * @embed
- */
-message HDNodeType {
- required uint32 depth = 1;
- required uint32 fingerprint = 2;
- required uint32 child_num = 3;
- required bytes chain_code = 4;
- optional bytes private_key = 5;
- optional bytes public_key = 6;
-}
diff --git a/accounts/usbwallet/trezor/messages-ethereum.pb.go b/accounts/usbwallet/trezor/messages-ethereum.pb.go
deleted file mode 100644
index 5d664f5..0000000
--- a/accounts/usbwallet/trezor/messages-ethereum.pb.go
+++ /dev/null
@@ -1,698 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: messages-ethereum.proto
-
-package trezor
-
-import (
- fmt "fmt"
- math "math"
-
- proto "github.com/golang/protobuf/proto"
-)
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
-
-//*
-// Request: Ask device for public key corresponding to address_n path
-// @start
-// @next EthereumPublicKey
-// @next Failure
-type EthereumGetPublicKey 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_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *EthereumGetPublicKey) Reset() { *m = EthereumGetPublicKey{} }
-func (m *EthereumGetPublicKey) String() string { return proto.CompactTextString(m) }
-func (*EthereumGetPublicKey) ProtoMessage() {}
-func (*EthereumGetPublicKey) Descriptor() ([]byte, []int) {
- return fileDescriptor_cb33f46ba915f15c, []int{0}
-}
-
-func (m *EthereumGetPublicKey) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EthereumGetPublicKey.Unmarshal(m, b)
-}
-func (m *EthereumGetPublicKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EthereumGetPublicKey.Marshal(b, m, deterministic)
-}
-func (m *EthereumGetPublicKey) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EthereumGetPublicKey.Merge(m, src)
-}
-func (m *EthereumGetPublicKey) XXX_Size() int {
- return xxx_messageInfo_EthereumGetPublicKey.Size(m)
-}
-func (m *EthereumGetPublicKey) XXX_DiscardUnknown() {
- xxx_messageInfo_EthereumGetPublicKey.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EthereumGetPublicKey proto.InternalMessageInfo
-
-func (m *EthereumGetPublicKey) GetAddressN() []uint32 {
- if m != nil {
- return m.AddressN
- }
- return nil
-}
-
-func (m *EthereumGetPublicKey) GetShowDisplay() bool {
- if m != nil && m.ShowDisplay != nil {
- return *m.ShowDisplay
- }
- return false
-}
-
-//*
-// Response: Contains public key derived from device private seed
-// @end
-type EthereumPublicKey struct {
- Node *HDNodeType `protobuf:"bytes,1,opt,name=node" json:"node,omitempty"`
- Xpub *string `protobuf:"bytes,2,opt,name=xpub" json:"xpub,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *EthereumPublicKey) Reset() { *m = EthereumPublicKey{} }
-func (m *EthereumPublicKey) String() string { return proto.CompactTextString(m) }
-func (*EthereumPublicKey) ProtoMessage() {}
-func (*EthereumPublicKey) Descriptor() ([]byte, []int) {
- return fileDescriptor_cb33f46ba915f15c, []int{1}
-}
-
-func (m *EthereumPublicKey) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EthereumPublicKey.Unmarshal(m, b)
-}
-func (m *EthereumPublicKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EthereumPublicKey.Marshal(b, m, deterministic)
-}
-func (m *EthereumPublicKey) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EthereumPublicKey.Merge(m, src)
-}
-func (m *EthereumPublicKey) XXX_Size() int {
- return xxx_messageInfo_EthereumPublicKey.Size(m)
-}
-func (m *EthereumPublicKey) XXX_DiscardUnknown() {
- xxx_messageInfo_EthereumPublicKey.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EthereumPublicKey proto.InternalMessageInfo
-
-func (m *EthereumPublicKey) GetNode() *HDNodeType {
- if m != nil {
- return m.Node
- }
- return nil
-}
-
-func (m *EthereumPublicKey) GetXpub() string {
- if m != nil && m.Xpub != nil {
- return *m.Xpub
- }
- return ""
-}
-
-//*
-// Request: Ask device for Ethereum address corresponding to address_n path
-// @start
-// @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_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_cb33f46ba915f15c, []int{2}
-}
-
-func (m *EthereumGetAddress) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EthereumGetAddress.Unmarshal(m, b)
-}
-func (m *EthereumGetAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EthereumGetAddress.Marshal(b, m, deterministic)
-}
-func (m *EthereumGetAddress) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EthereumGetAddress.Merge(m, src)
-}
-func (m *EthereumGetAddress) XXX_Size() int {
- return xxx_messageInfo_EthereumGetAddress.Size(m)
-}
-func (m *EthereumGetAddress) XXX_DiscardUnknown() {
- xxx_messageInfo_EthereumGetAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EthereumGetAddress proto.InternalMessageInfo
-
-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 an Ethereum address derived from device private seed
-// @end
-type EthereumAddress struct {
- AddressBin []byte `protobuf:"bytes,1,opt,name=addressBin" json:"addressBin,omitempty"`
- AddressHex *string `protobuf:"bytes,2,opt,name=addressHex" json:"addressHex,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_cb33f46ba915f15c, []int{3}
-}
-
-func (m *EthereumAddress) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EthereumAddress.Unmarshal(m, b)
-}
-func (m *EthereumAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EthereumAddress.Marshal(b, m, deterministic)
-}
-func (m *EthereumAddress) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EthereumAddress.Merge(m, src)
-}
-func (m *EthereumAddress) XXX_Size() int {
- return xxx_messageInfo_EthereumAddress.Size(m)
-}
-func (m *EthereumAddress) XXX_DiscardUnknown() {
- xxx_messageInfo_EthereumAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EthereumAddress proto.InternalMessageInfo
-
-func (m *EthereumAddress) GetAddressBin() []byte {
- if m != nil {
- return m.AddressBin
- }
- return nil
-}
-
-func (m *EthereumAddress) GetAddressHex() string {
- if m != nil && m.AddressHex != nil {
- return *m.AddressHex
- }
- return ""
-}
-
-//*
-// 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.
-// @start
-// @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"`
- ToBin []byte `protobuf:"bytes,5,opt,name=toBin" json:"toBin,omitempty"`
- ToHex *string `protobuf:"bytes,11,opt,name=toHex" json:"toHex,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"`
- TxType *uint32 `protobuf:"varint,10,opt,name=tx_type,json=txType" json:"tx_type,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_cb33f46ba915f15c, []int{4}
-}
-
-func (m *EthereumSignTx) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EthereumSignTx.Unmarshal(m, b)
-}
-func (m *EthereumSignTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EthereumSignTx.Marshal(b, m, deterministic)
-}
-func (m *EthereumSignTx) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EthereumSignTx.Merge(m, src)
-}
-func (m *EthereumSignTx) XXX_Size() int {
- return xxx_messageInfo_EthereumSignTx.Size(m)
-}
-func (m *EthereumSignTx) XXX_DiscardUnknown() {
- xxx_messageInfo_EthereumSignTx.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EthereumSignTx proto.InternalMessageInfo
-
-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) GetToBin() []byte {
- if m != nil {
- return m.ToBin
- }
- return nil
-}
-
-func (m *EthereumSignTx) GetToHex() string {
- if m != nil && m.ToHex != nil {
- return *m.ToHex
- }
- return ""
-}
-
-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
-}
-
-func (m *EthereumSignTx) GetTxType() uint32 {
- if m != nil && m.TxType != nil {
- return *m.TxType
- }
- 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.
-// @end
-// @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_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_cb33f46ba915f15c, []int{5}
-}
-
-func (m *EthereumTxRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EthereumTxRequest.Unmarshal(m, b)
-}
-func (m *EthereumTxRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EthereumTxRequest.Marshal(b, m, deterministic)
-}
-func (m *EthereumTxRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EthereumTxRequest.Merge(m, src)
-}
-func (m *EthereumTxRequest) XXX_Size() int {
- return xxx_messageInfo_EthereumTxRequest.Size(m)
-}
-func (m *EthereumTxRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_EthereumTxRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EthereumTxRequest proto.InternalMessageInfo
-
-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.
-// @next EthereumTxRequest
-type EthereumTxAck struct {
- DataChunk []byte `protobuf:"bytes,1,opt,name=data_chunk,json=dataChunk" json:"data_chunk,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_cb33f46ba915f15c, []int{6}
-}
-
-func (m *EthereumTxAck) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EthereumTxAck.Unmarshal(m, b)
-}
-func (m *EthereumTxAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EthereumTxAck.Marshal(b, m, deterministic)
-}
-func (m *EthereumTxAck) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EthereumTxAck.Merge(m, src)
-}
-func (m *EthereumTxAck) XXX_Size() int {
- return xxx_messageInfo_EthereumTxAck.Size(m)
-}
-func (m *EthereumTxAck) XXX_DiscardUnknown() {
- xxx_messageInfo_EthereumTxAck.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EthereumTxAck proto.InternalMessageInfo
-
-func (m *EthereumTxAck) GetDataChunk() []byte {
- if m != nil {
- return m.DataChunk
- }
- return nil
-}
-
-//*
-// Request: Ask device to sign message
-// @start
-// @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,opt,name=message" json:"message,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_cb33f46ba915f15c, []int{7}
-}
-
-func (m *EthereumSignMessage) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EthereumSignMessage.Unmarshal(m, b)
-}
-func (m *EthereumSignMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EthereumSignMessage.Marshal(b, m, deterministic)
-}
-func (m *EthereumSignMessage) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EthereumSignMessage.Merge(m, src)
-}
-func (m *EthereumSignMessage) XXX_Size() int {
- return xxx_messageInfo_EthereumSignMessage.Size(m)
-}
-func (m *EthereumSignMessage) XXX_DiscardUnknown() {
- xxx_messageInfo_EthereumSignMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EthereumSignMessage proto.InternalMessageInfo
-
-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
-}
-
-//*
-// Response: Signed message
-// @end
-type EthereumMessageSignature struct {
- AddressBin []byte `protobuf:"bytes,1,opt,name=addressBin" json:"addressBin,omitempty"`
- Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
- AddressHex *string `protobuf:"bytes,3,opt,name=addressHex" json:"addressHex,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_cb33f46ba915f15c, []int{8}
-}
-
-func (m *EthereumMessageSignature) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EthereumMessageSignature.Unmarshal(m, b)
-}
-func (m *EthereumMessageSignature) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EthereumMessageSignature.Marshal(b, m, deterministic)
-}
-func (m *EthereumMessageSignature) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EthereumMessageSignature.Merge(m, src)
-}
-func (m *EthereumMessageSignature) XXX_Size() int {
- return xxx_messageInfo_EthereumMessageSignature.Size(m)
-}
-func (m *EthereumMessageSignature) XXX_DiscardUnknown() {
- xxx_messageInfo_EthereumMessageSignature.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EthereumMessageSignature proto.InternalMessageInfo
-
-func (m *EthereumMessageSignature) GetAddressBin() []byte {
- if m != nil {
- return m.AddressBin
- }
- return nil
-}
-
-func (m *EthereumMessageSignature) GetSignature() []byte {
- if m != nil {
- return m.Signature
- }
- return nil
-}
-
-func (m *EthereumMessageSignature) GetAddressHex() string {
- if m != nil && m.AddressHex != nil {
- return *m.AddressHex
- }
- return ""
-}
-
-//*
-// Request: Ask device to verify message
-// @start
-// @next Success
-// @next Failure
-type EthereumVerifyMessage struct {
- AddressBin []byte `protobuf:"bytes,1,opt,name=addressBin" json:"addressBin,omitempty"`
- Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
- Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"`
- AddressHex *string `protobuf:"bytes,4,opt,name=addressHex" json:"addressHex,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_cb33f46ba915f15c, []int{9}
-}
-
-func (m *EthereumVerifyMessage) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EthereumVerifyMessage.Unmarshal(m, b)
-}
-func (m *EthereumVerifyMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EthereumVerifyMessage.Marshal(b, m, deterministic)
-}
-func (m *EthereumVerifyMessage) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EthereumVerifyMessage.Merge(m, src)
-}
-func (m *EthereumVerifyMessage) XXX_Size() int {
- return xxx_messageInfo_EthereumVerifyMessage.Size(m)
-}
-func (m *EthereumVerifyMessage) XXX_DiscardUnknown() {
- xxx_messageInfo_EthereumVerifyMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EthereumVerifyMessage proto.InternalMessageInfo
-
-func (m *EthereumVerifyMessage) GetAddressBin() []byte {
- if m != nil {
- return m.AddressBin
- }
- 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
-}
-
-func (m *EthereumVerifyMessage) GetAddressHex() string {
- if m != nil && m.AddressHex != nil {
- return *m.AddressHex
- }
- return ""
-}
-
-func init() {
- proto.RegisterType((*EthereumGetPublicKey)(nil), "hw.trezor.messages.ethereum.EthereumGetPublicKey")
- proto.RegisterType((*EthereumPublicKey)(nil), "hw.trezor.messages.ethereum.EthereumPublicKey")
- proto.RegisterType((*EthereumGetAddress)(nil), "hw.trezor.messages.ethereum.EthereumGetAddress")
- proto.RegisterType((*EthereumAddress)(nil), "hw.trezor.messages.ethereum.EthereumAddress")
- proto.RegisterType((*EthereumSignTx)(nil), "hw.trezor.messages.ethereum.EthereumSignTx")
- proto.RegisterType((*EthereumTxRequest)(nil), "hw.trezor.messages.ethereum.EthereumTxRequest")
- proto.RegisterType((*EthereumTxAck)(nil), "hw.trezor.messages.ethereum.EthereumTxAck")
- proto.RegisterType((*EthereumSignMessage)(nil), "hw.trezor.messages.ethereum.EthereumSignMessage")
- proto.RegisterType((*EthereumMessageSignature)(nil), "hw.trezor.messages.ethereum.EthereumMessageSignature")
- proto.RegisterType((*EthereumVerifyMessage)(nil), "hw.trezor.messages.ethereum.EthereumVerifyMessage")
-}
-
-func init() { proto.RegisterFile("messages-ethereum.proto", fileDescriptor_cb33f46ba915f15c) }
-
-var fileDescriptor_cb33f46ba915f15c = []byte{
- // 593 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x4d, 0x6f, 0xd3, 0x40,
- 0x10, 0x95, 0x9b, 0xb4, 0x49, 0x26, 0x0d, 0x1f, 0xa6, 0x55, 0x17, 0x0a, 0x34, 0x18, 0x21, 0xe5,
- 0x00, 0x3e, 0x70, 0x43, 0xe2, 0xd2, 0x52, 0x44, 0x2b, 0x4a, 0x55, 0xdc, 0xa8, 0x57, 0x6b, 0x63,
- 0x6f, 0xe3, 0x55, 0x9d, 0xdd, 0xe0, 0x5d, 0xb7, 0x0e, 0x7f, 0x82, 0x23, 0xff, 0x87, 0x5f, 0x86,
- 0xf6, 0x2b, 0x71, 0x52, 0x54, 0x0e, 0xbd, 0x65, 0xde, 0xbc, 0x7d, 0xf3, 0x66, 0xf4, 0x62, 0xd8,
- 0x99, 0x10, 0x21, 0xf0, 0x98, 0x88, 0x77, 0x44, 0x66, 0xa4, 0x20, 0xe5, 0x24, 0x9c, 0x16, 0x5c,
- 0x72, 0x7f, 0x37, 0xbb, 0x09, 0x65, 0x41, 0x7e, 0xf2, 0x22, 0x74, 0x94, 0xd0, 0x51, 0x9e, 0x6d,
- 0xcf, 0x5f, 0x25, 0x7c, 0x32, 0xe1, 0xcc, 0xbc, 0x09, 0x2e, 0x60, 0xeb, 0xb3, 0xa5, 0x7c, 0x21,
- 0xf2, 0xac, 0x1c, 0xe5, 0x34, 0xf9, 0x4a, 0x66, 0xfe, 0x2e, 0x74, 0x70, 0x9a, 0x16, 0x44, 0x88,
- 0x98, 0x21, 0xaf, 0xdf, 0x18, 0xf4, 0xa2, 0xb6, 0x05, 0x4e, 0xfd, 0x57, 0xb0, 0x29, 0x32, 0x7e,
- 0x13, 0xa7, 0x54, 0x4c, 0x73, 0x3c, 0x43, 0x6b, 0x7d, 0x6f, 0xd0, 0x8e, 0xba, 0x0a, 0x3b, 0x34,
- 0x50, 0x30, 0x82, 0xc7, 0x4e, 0x77, 0x21, 0xfa, 0x01, 0x9a, 0x8c, 0xa7, 0x04, 0x79, 0x7d, 0x6f,
- 0xd0, 0x7d, 0xff, 0x26, 0xfc, 0x87, 0x5f, 0x6b, 0xee, 0xe8, 0xf0, 0x94, 0xa7, 0x64, 0x38, 0x9b,
- 0x92, 0x48, 0x3f, 0xf1, 0x7d, 0x68, 0x56, 0xd3, 0x72, 0xa4, 0x47, 0x75, 0x22, 0xfd, 0x3b, 0x18,
- 0x82, 0x5f, 0xf3, 0xbe, 0x6f, 0xdc, 0xdd, 0xdb, 0xf9, 0x77, 0x78, 0xe8, 0x54, 0x9d, 0xe4, 0x4b,
- 0x00, 0xab, 0x70, 0x40, 0x99, 0x76, 0xbf, 0x19, 0xd5, 0x90, 0x5a, 0xff, 0x88, 0x54, 0xd6, 0x62,
- 0x0d, 0x09, 0xfe, 0xac, 0xc1, 0x03, 0xa7, 0x79, 0x4e, 0xc7, 0x6c, 0x58, 0xdd, 0xed, 0x72, 0x0b,
- 0xd6, 0x19, 0x67, 0x09, 0xd1, 0x52, 0x9b, 0x91, 0x29, 0xd4, 0x93, 0x31, 0x16, 0xf1, 0xb4, 0xa0,
- 0x09, 0x41, 0x0d, 0xdd, 0x69, 0x8f, 0xb1, 0x38, 0x53, 0xb5, 0x6b, 0xe6, 0x74, 0x42, 0x25, 0x6a,
- 0xce, 0x9b, 0x27, 0xaa, 0x56, 0x7a, 0x92, 0x2b, 0xeb, 0xeb, 0x46, 0x4f, 0x17, 0x06, 0x55, 0x86,
- 0xbb, 0xda, 0xb0, 0x29, 0x14, 0x7a, 0x8d, 0xf3, 0x92, 0xa0, 0x0d, 0xc3, 0xd5, 0x85, 0xff, 0x16,
- 0xfc, 0x14, 0x4b, 0x1c, 0x53, 0x46, 0x25, 0xc5, 0x79, 0x9c, 0x64, 0x25, 0xbb, 0x42, 0x2d, 0x4d,
- 0x79, 0xa4, 0x3a, 0xc7, 0xa6, 0xf1, 0x49, 0xe1, 0xfe, 0x1e, 0x74, 0x35, 0x3b, 0x27, 0x6c, 0x2c,
- 0x33, 0xd4, 0xee, 0x7b, 0x83, 0x5e, 0x04, 0x0a, 0x3a, 0xd1, 0x88, 0xff, 0x14, 0xda, 0x49, 0x86,
- 0x29, 0x8b, 0x69, 0x8a, 0x3a, 0xba, 0xdb, 0xd2, 0xf5, 0x71, 0xea, 0xef, 0x40, 0x4b, 0x56, 0xb1,
- 0x9c, 0x4d, 0x09, 0x02, 0xdd, 0xd9, 0x90, 0x95, 0xca, 0x41, 0xf0, 0xdb, 0x5b, 0x44, 0x6a, 0x58,
- 0x45, 0xe4, 0x47, 0x49, 0x84, 0x5c, 0x1d, 0xe5, 0xdd, 0x1a, 0xb5, 0x07, 0x5d, 0x41, 0xc7, 0x0c,
- 0xcb, 0xb2, 0x20, 0xf1, 0xb5, 0xbe, 0x68, 0x2f, 0x82, 0x39, 0x74, 0xb1, 0x4c, 0x28, 0xec, 0x61,
- 0x17, 0x84, 0x68, 0x99, 0x20, 0xec, 0x71, 0x17, 0x84, 0xf3, 0x20, 0x84, 0xde, 0xc2, 0xd8, 0x7e,
- 0x72, 0xe5, 0xbf, 0x00, 0xed, 0xc0, 0x5e, 0xc9, 0xe4, 0xa5, 0xa3, 0x10, 0x7d, 0x9e, 0xe0, 0x04,
- 0x9e, 0xd4, 0xd3, 0xf0, 0xcd, 0x64, 0xff, 0xee, 0x48, 0x20, 0x68, 0xd9, 0xff, 0x88, 0x0d, 0x85,
- 0x2b, 0x83, 0x0a, 0x90, 0x53, 0xb3, 0x4a, 0xe7, 0xce, 0xda, 0x7f, 0x83, 0xfb, 0x1c, 0x3a, 0xf3,
- 0x3d, 0xac, 0xee, 0x02, 0x58, 0x89, 0x75, 0xe3, 0x56, 0xac, 0x7f, 0x79, 0xb0, 0xed, 0x46, 0x5f,
- 0x90, 0x82, 0x5e, 0xce, 0xdc, 0x2a, 0xf7, 0x9b, 0x5b, 0xdb, 0xb5, 0xb1, 0xb4, 0xeb, 0x8a, 0xa3,
- 0xe6, 0xaa, 0xa3, 0x83, 0x8f, 0xf0, 0x3a, 0xe1, 0x93, 0x50, 0x60, 0xc9, 0x45, 0x46, 0x73, 0x3c,
- 0x12, 0xee, 0x03, 0x93, 0xd3, 0x91, 0xf9, 0xe2, 0x8d, 0xca, 0xcb, 0x83, 0xed, 0xa1, 0x06, 0xad,
- 0x5b, 0xb7, 0xc2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8a, 0xce, 0x81, 0xc8, 0x59, 0x05, 0x00,
- 0x00,
-}
diff --git a/accounts/usbwallet/trezor/messages-ethereum.proto b/accounts/usbwallet/trezor/messages-ethereum.proto
deleted file mode 100644
index 096bed2..0000000
--- a/accounts/usbwallet/trezor/messages-ethereum.proto
+++ /dev/null
@@ -1,131 +0,0 @@
-// This file originates from the SatoshiLabs Trezor `common` repository at:
-// https://github.com/trezor/trezor-common/blob/master/protob/messages-ethereum.proto
-// dated 28.05.2019, commit 893fd219d4a01bcffa0cd9cfa631856371ec5aa9.
-
-syntax = "proto2";
-package hw.trezor.messages.ethereum;
-
-// Sugar for easier handling in Java
-option java_package = "com.satoshilabs.trezor.lib.protobuf";
-option java_outer_classname = "TrezorMessageEthereum";
-
-import "messages-common.proto";
-
-
-/**
- * Request: Ask device for public key corresponding to address_n path
- * @start
- * @next EthereumPublicKey
- * @next Failure
- */
-message EthereumGetPublicKey {
- repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
- optional bool show_display = 2; // optionally show on display before sending the result
-}
-
-/**
- * Response: Contains public key derived from device private seed
- * @end
- */
-message EthereumPublicKey {
- optional hw.trezor.messages.common.HDNodeType node = 1; // BIP32 public node
- optional string xpub = 2; // serialized form of public node
-}
-
-/**
- * Request: Ask device for Ethereum address corresponding to address_n path
- * @start
- * @next EthereumAddress
- * @next Failure
- */
-message EthereumGetAddress {
- repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
- optional bool show_display = 2; // optionally show on display before sending the result
-}
-
-/**
- * Response: Contains an Ethereum address derived from device private seed
- * @end
- */
-message EthereumAddress {
- optional bytes addressBin = 1; // Ethereum address as 20 bytes (legacy firmwares)
- optional string addressHex = 2; // Ethereum address as hex string (newer firmwares)
-}
-
-/**
- * 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.
- * @start
- * @next EthereumTxRequest
- * @next Failure
- */
-message EthereumSignTx {
- repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
- optional bytes nonce = 2; // <=256 bit unsigned big endian
- optional bytes gas_price = 3; // <=256 bit unsigned big endian (in wei)
- optional bytes gas_limit = 4; // <=256 bit unsigned big endian
- optional bytes toBin = 5; // recipient address (20 bytes, legacy firmware)
- optional string toHex = 11; // recipient address (hex string, newer firmware)
- optional bytes value = 6; // <=256 bit unsigned big endian (in wei)
- optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes)
- optional uint32 data_length = 8; // Length of transaction payload
- optional uint32 chain_id = 9; // Chain Id for EIP 155
- optional uint32 tx_type = 10; // (only for Wanchain)
-}
-
-/**
- * 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.
- * @end
- * @next EthereumTxAck
- */
-message EthereumTxRequest {
- optional uint32 data_length = 1; // Number of bytes being requested (<= 1024)
- optional uint32 signature_v = 2; // Computed signature (recovery parameter, limited to 27 or 28)
- optional bytes signature_r = 3; // Computed signature R component (256 bit)
- optional bytes signature_s = 4; // Computed signature S component (256 bit)
-}
-
-/**
- * Request: Transaction payload data.
- * @next EthereumTxRequest
- */
-message EthereumTxAck {
- optional bytes data_chunk = 1; // Bytes from transaction payload (<= 1024 bytes)
-}
-
-/**
- * Request: Ask device to sign message
- * @start
- * @next EthereumMessageSignature
- * @next Failure
- */
-message EthereumSignMessage {
- repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
- optional bytes message = 2; // message to be signed
-}
-
-/**
- * Response: Signed message
- * @end
- */
-message EthereumMessageSignature {
- optional bytes addressBin = 1; // address used to sign the message (20 bytes, legacy firmware)
- optional bytes signature = 2; // signature of the message
- optional string addressHex = 3; // address used to sign the message (hex string, newer firmware)
-}
-
-/**
- * Request: Ask device to verify message
- * @start
- * @next Success
- * @next Failure
- */
-message EthereumVerifyMessage {
- optional bytes addressBin = 1; // address to verify (20 bytes, legacy firmware)
- optional bytes signature = 2; // signature to verify
- optional bytes message = 3; // message to verify
- optional string addressHex = 4; // address to verify (hex string, newer firmware)
-}
diff --git a/accounts/usbwallet/trezor/messages-management.pb.go b/accounts/usbwallet/trezor/messages-management.pb.go
deleted file mode 100644
index f5c872f..0000000
--- a/accounts/usbwallet/trezor/messages-management.pb.go
+++ /dev/null
@@ -1,1621 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: messages-management.proto
-
-package trezor
-
-import (
- fmt "fmt"
- math "math"
-
- proto "github.com/golang/protobuf/proto"
-)
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
-
-//*
-// Structure representing passphrase source
-type ApplySettings_PassphraseSourceType int32
-
-const (
- ApplySettings_ASK ApplySettings_PassphraseSourceType = 0
- ApplySettings_DEVICE ApplySettings_PassphraseSourceType = 1
- ApplySettings_HOST ApplySettings_PassphraseSourceType = 2
-)
-
-var ApplySettings_PassphraseSourceType_name = map[int32]string{
- 0: "ASK",
- 1: "DEVICE",
- 2: "HOST",
-}
-
-var ApplySettings_PassphraseSourceType_value = map[string]int32{
- "ASK": 0,
- "DEVICE": 1,
- "HOST": 2,
-}
-
-func (x ApplySettings_PassphraseSourceType) Enum() *ApplySettings_PassphraseSourceType {
- p := new(ApplySettings_PassphraseSourceType)
- *p = x
- return p
-}
-
-func (x ApplySettings_PassphraseSourceType) String() string {
- return proto.EnumName(ApplySettings_PassphraseSourceType_name, int32(x))
-}
-
-func (x *ApplySettings_PassphraseSourceType) UnmarshalJSON(data []byte) error {
- value, err := proto.UnmarshalJSONEnum(ApplySettings_PassphraseSourceType_value, data, "ApplySettings_PassphraseSourceType")
- if err != nil {
- return err
- }
- *x = ApplySettings_PassphraseSourceType(value)
- return nil
-}
-
-func (ApplySettings_PassphraseSourceType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_0c720c20d27aa029, []int{4, 0}
-}
-
-//*
-// Type of recovery procedure. These should be used as bitmask, e.g.,
-// `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix`
-// listing every method supported by the host computer.
-//
-// Note that ScrambledWords must be supported by every implementation
-// for backward compatibility; there is no way to not support it.
-type RecoveryDevice_RecoveryDeviceType int32
-
-const (
- // use powers of two when extending this field
- RecoveryDevice_RecoveryDeviceType_ScrambledWords RecoveryDevice_RecoveryDeviceType = 0
- RecoveryDevice_RecoveryDeviceType_Matrix RecoveryDevice_RecoveryDeviceType = 1
-)
-
-var RecoveryDevice_RecoveryDeviceType_name = map[int32]string{
- 0: "RecoveryDeviceType_ScrambledWords",
- 1: "RecoveryDeviceType_Matrix",
-}
-
-var RecoveryDevice_RecoveryDeviceType_value = map[string]int32{
- "RecoveryDeviceType_ScrambledWords": 0,
- "RecoveryDeviceType_Matrix": 1,
-}
-
-func (x RecoveryDevice_RecoveryDeviceType) Enum() *RecoveryDevice_RecoveryDeviceType {
- p := new(RecoveryDevice_RecoveryDeviceType)
- *p = x
- return p
-}
-
-func (x RecoveryDevice_RecoveryDeviceType) String() string {
- return proto.EnumName(RecoveryDevice_RecoveryDeviceType_name, int32(x))
-}
-
-func (x *RecoveryDevice_RecoveryDeviceType) UnmarshalJSON(data []byte) error {
- value, err := proto.UnmarshalJSONEnum(RecoveryDevice_RecoveryDeviceType_value, data, "RecoveryDevice_RecoveryDeviceType")
- if err != nil {
- return err
- }
- *x = RecoveryDevice_RecoveryDeviceType(value)
- return nil
-}
-
-func (RecoveryDevice_RecoveryDeviceType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_0c720c20d27aa029, []int{17, 0}
-}
-
-//*
-// Type of Recovery Word request
-type WordRequest_WordRequestType int32
-
-const (
- WordRequest_WordRequestType_Plain WordRequest_WordRequestType = 0
- WordRequest_WordRequestType_Matrix9 WordRequest_WordRequestType = 1
- WordRequest_WordRequestType_Matrix6 WordRequest_WordRequestType = 2
-)
-
-var WordRequest_WordRequestType_name = map[int32]string{
- 0: "WordRequestType_Plain",
- 1: "WordRequestType_Matrix9",
- 2: "WordRequestType_Matrix6",
-}
-
-var WordRequest_WordRequestType_value = map[string]int32{
- "WordRequestType_Plain": 0,
- "WordRequestType_Matrix9": 1,
- "WordRequestType_Matrix6": 2,
-}
-
-func (x WordRequest_WordRequestType) Enum() *WordRequest_WordRequestType {
- p := new(WordRequest_WordRequestType)
- *p = x
- return p
-}
-
-func (x WordRequest_WordRequestType) String() string {
- return proto.EnumName(WordRequest_WordRequestType_name, int32(x))
-}
-
-func (x *WordRequest_WordRequestType) UnmarshalJSON(data []byte) error {
- value, err := proto.UnmarshalJSONEnum(WordRequest_WordRequestType_value, data, "WordRequest_WordRequestType")
- if err != nil {
- return err
- }
- *x = WordRequest_WordRequestType(value)
- return nil
-}
-
-func (WordRequest_WordRequestType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_0c720c20d27aa029, []int{18, 0}
-}
-
-//*
-// Request: Reset device to default state and ask for device details
-// @start
-// @next Features
-type Initialize struct {
- State []byte `protobuf:"bytes,1,opt,name=state" json:"state,omitempty"`
- SkipPassphrase *bool `protobuf:"varint,2,opt,name=skip_passphrase,json=skipPassphrase" json:"skip_passphrase,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{0}
-}
-
-func (m *Initialize) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Initialize.Unmarshal(m, b)
-}
-func (m *Initialize) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Initialize.Marshal(b, m, deterministic)
-}
-func (m *Initialize) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Initialize.Merge(m, src)
-}
-func (m *Initialize) XXX_Size() int {
- return xxx_messageInfo_Initialize.Size(m)
-}
-func (m *Initialize) XXX_DiscardUnknown() {
- xxx_messageInfo_Initialize.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Initialize proto.InternalMessageInfo
-
-func (m *Initialize) GetState() []byte {
- if m != nil {
- return m.State
- }
- return nil
-}
-
-func (m *Initialize) GetSkipPassphrase() bool {
- if m != nil && m.SkipPassphrase != nil {
- return *m.SkipPassphrase
- }
- return false
-}
-
-//*
-// Request: Ask for device details (no device reset)
-// @start
-// @next Features
-type GetFeatures struct {
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{1}
-}
-
-func (m *GetFeatures) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetFeatures.Unmarshal(m, b)
-}
-func (m *GetFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetFeatures.Marshal(b, m, deterministic)
-}
-func (m *GetFeatures) XXX_Merge(src proto.Message) {
- xxx_messageInfo_GetFeatures.Merge(m, src)
-}
-func (m *GetFeatures) XXX_Size() int {
- return xxx_messageInfo_GetFeatures.Size(m)
-}
-func (m *GetFeatures) XXX_DiscardUnknown() {
- xxx_messageInfo_GetFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetFeatures proto.InternalMessageInfo
-
-//*
-// Response: Reports various information about the device
-// @end
-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"`
- 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"`
- Model *string `protobuf:"bytes,21,opt,name=model" json:"model,omitempty"`
- FwMajor *uint32 `protobuf:"varint,22,opt,name=fw_major,json=fwMajor" json:"fw_major,omitempty"`
- FwMinor *uint32 `protobuf:"varint,23,opt,name=fw_minor,json=fwMinor" json:"fw_minor,omitempty"`
- FwPatch *uint32 `protobuf:"varint,24,opt,name=fw_patch,json=fwPatch" json:"fw_patch,omitempty"`
- FwVendor *string `protobuf:"bytes,25,opt,name=fw_vendor,json=fwVendor" json:"fw_vendor,omitempty"`
- FwVendorKeys []byte `protobuf:"bytes,26,opt,name=fw_vendor_keys,json=fwVendorKeys" json:"fw_vendor_keys,omitempty"`
- UnfinishedBackup *bool `protobuf:"varint,27,opt,name=unfinished_backup,json=unfinishedBackup" json:"unfinished_backup,omitempty"`
- NoBackup *bool `protobuf:"varint,28,opt,name=no_backup,json=noBackup" json:"no_backup,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{2}
-}
-
-func (m *Features) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Features.Unmarshal(m, b)
-}
-func (m *Features) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Features.Marshal(b, m, deterministic)
-}
-func (m *Features) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Features.Merge(m, src)
-}
-func (m *Features) XXX_Size() int {
- return xxx_messageInfo_Features.Size(m)
-}
-func (m *Features) XXX_DiscardUnknown() {
- xxx_messageInfo_Features.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Features proto.InternalMessageInfo
-
-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) 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
-}
-
-func (m *Features) GetModel() string {
- if m != nil && m.Model != nil {
- return *m.Model
- }
- return ""
-}
-
-func (m *Features) GetFwMajor() uint32 {
- if m != nil && m.FwMajor != nil {
- return *m.FwMajor
- }
- return 0
-}
-
-func (m *Features) GetFwMinor() uint32 {
- if m != nil && m.FwMinor != nil {
- return *m.FwMinor
- }
- return 0
-}
-
-func (m *Features) GetFwPatch() uint32 {
- if m != nil && m.FwPatch != nil {
- return *m.FwPatch
- }
- return 0
-}
-
-func (m *Features) GetFwVendor() string {
- if m != nil && m.FwVendor != nil {
- return *m.FwVendor
- }
- return ""
-}
-
-func (m *Features) GetFwVendorKeys() []byte {
- if m != nil {
- return m.FwVendorKeys
- }
- return nil
-}
-
-func (m *Features) GetUnfinishedBackup() bool {
- if m != nil && m.UnfinishedBackup != nil {
- return *m.UnfinishedBackup
- }
- return false
-}
-
-func (m *Features) GetNoBackup() bool {
- if m != nil && m.NoBackup != nil {
- return *m.NoBackup
- }
- return false
-}
-
-//*
-// Request: clear session (removes cached PIN, passphrase, etc).
-// @start
-// @next Success
-type ClearSession struct {
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{3}
-}
-
-func (m *ClearSession) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ClearSession.Unmarshal(m, b)
-}
-func (m *ClearSession) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ClearSession.Marshal(b, m, deterministic)
-}
-func (m *ClearSession) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ClearSession.Merge(m, src)
-}
-func (m *ClearSession) XXX_Size() int {
- return xxx_messageInfo_ClearSession.Size(m)
-}
-func (m *ClearSession) XXX_DiscardUnknown() {
- xxx_messageInfo_ClearSession.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClearSession proto.InternalMessageInfo
-
-//*
-// Request: change language and/or label of the device
-// @start
-// @next Success
-// @next Failure
-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"`
- PassphraseSource *ApplySettings_PassphraseSourceType `protobuf:"varint,5,opt,name=passphrase_source,json=passphraseSource,enum=hw.trezor.messages.management.ApplySettings_PassphraseSourceType" json:"passphrase_source,omitempty"`
- AutoLockDelayMs *uint32 `protobuf:"varint,6,opt,name=auto_lock_delay_ms,json=autoLockDelayMs" json:"auto_lock_delay_ms,omitempty"`
- DisplayRotation *uint32 `protobuf:"varint,7,opt,name=display_rotation,json=displayRotation" json:"display_rotation,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{4}
-}
-
-func (m *ApplySettings) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ApplySettings.Unmarshal(m, b)
-}
-func (m *ApplySettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ApplySettings.Marshal(b, m, deterministic)
-}
-func (m *ApplySettings) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ApplySettings.Merge(m, src)
-}
-func (m *ApplySettings) XXX_Size() int {
- return xxx_messageInfo_ApplySettings.Size(m)
-}
-func (m *ApplySettings) XXX_DiscardUnknown() {
- xxx_messageInfo_ApplySettings.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ApplySettings proto.InternalMessageInfo
-
-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
-}
-
-func (m *ApplySettings) GetPassphraseSource() ApplySettings_PassphraseSourceType {
- if m != nil && m.PassphraseSource != nil {
- return *m.PassphraseSource
- }
- return ApplySettings_ASK
-}
-
-func (m *ApplySettings) GetAutoLockDelayMs() uint32 {
- if m != nil && m.AutoLockDelayMs != nil {
- return *m.AutoLockDelayMs
- }
- return 0
-}
-
-func (m *ApplySettings) GetDisplayRotation() uint32 {
- if m != nil && m.DisplayRotation != nil {
- return *m.DisplayRotation
- }
- return 0
-}
-
-//*
-// Request: set flags of the device
-// @start
-// @next Success
-// @next Failure
-type ApplyFlags struct {
- Flags *uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{5}
-}
-
-func (m *ApplyFlags) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ApplyFlags.Unmarshal(m, b)
-}
-func (m *ApplyFlags) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ApplyFlags.Marshal(b, m, deterministic)
-}
-func (m *ApplyFlags) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ApplyFlags.Merge(m, src)
-}
-func (m *ApplyFlags) XXX_Size() int {
- return xxx_messageInfo_ApplyFlags.Size(m)
-}
-func (m *ApplyFlags) XXX_DiscardUnknown() {
- xxx_messageInfo_ApplyFlags.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ApplyFlags proto.InternalMessageInfo
-
-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
-// @start
-// @next Success
-// @next Failure
-type ChangePin struct {
- Remove *bool `protobuf:"varint,1,opt,name=remove" json:"remove,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{6}
-}
-
-func (m *ChangePin) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ChangePin.Unmarshal(m, b)
-}
-func (m *ChangePin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ChangePin.Marshal(b, m, deterministic)
-}
-func (m *ChangePin) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ChangePin.Merge(m, src)
-}
-func (m *ChangePin) XXX_Size() int {
- return xxx_messageInfo_ChangePin.Size(m)
-}
-func (m *ChangePin) XXX_DiscardUnknown() {
- xxx_messageInfo_ChangePin.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChangePin proto.InternalMessageInfo
-
-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
-// @start
-// @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_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{7}
-}
-
-func (m *Ping) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Ping.Unmarshal(m, b)
-}
-func (m *Ping) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Ping.Marshal(b, m, deterministic)
-}
-func (m *Ping) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Ping.Merge(m, src)
-}
-func (m *Ping) XXX_Size() int {
- return xxx_messageInfo_Ping.Size(m)
-}
-func (m *Ping) XXX_DiscardUnknown() {
- xxx_messageInfo_Ping.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Ping proto.InternalMessageInfo
-
-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
-}
-
-//*
-// Request: Abort last operation that required user interaction
-// @start
-// @next Failure
-type Cancel struct {
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{8}
-}
-
-func (m *Cancel) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Cancel.Unmarshal(m, b)
-}
-func (m *Cancel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Cancel.Marshal(b, m, deterministic)
-}
-func (m *Cancel) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Cancel.Merge(m, src)
-}
-func (m *Cancel) XXX_Size() int {
- return xxx_messageInfo_Cancel.Size(m)
-}
-func (m *Cancel) XXX_DiscardUnknown() {
- xxx_messageInfo_Cancel.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Cancel proto.InternalMessageInfo
-
-//*
-// Request: Request a sample of random data generated by hardware RNG. May be used for testing.
-// @start
-// @next Entropy
-// @next Failure
-type GetEntropy struct {
- Size *uint32 `protobuf:"varint,1,req,name=size" json:"size,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{9}
-}
-
-func (m *GetEntropy) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetEntropy.Unmarshal(m, b)
-}
-func (m *GetEntropy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetEntropy.Marshal(b, m, deterministic)
-}
-func (m *GetEntropy) XXX_Merge(src proto.Message) {
- xxx_messageInfo_GetEntropy.Merge(m, src)
-}
-func (m *GetEntropy) XXX_Size() int {
- return xxx_messageInfo_GetEntropy.Size(m)
-}
-func (m *GetEntropy) XXX_DiscardUnknown() {
- xxx_messageInfo_GetEntropy.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetEntropy proto.InternalMessageInfo
-
-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
-// @end
-type Entropy struct {
- Entropy []byte `protobuf:"bytes,1,req,name=entropy" json:"entropy,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{10}
-}
-
-func (m *Entropy) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Entropy.Unmarshal(m, b)
-}
-func (m *Entropy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Entropy.Marshal(b, m, deterministic)
-}
-func (m *Entropy) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Entropy.Merge(m, src)
-}
-func (m *Entropy) XXX_Size() int {
- return xxx_messageInfo_Entropy.Size(m)
-}
-func (m *Entropy) XXX_DiscardUnknown() {
- xxx_messageInfo_Entropy.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Entropy proto.InternalMessageInfo
-
-func (m *Entropy) GetEntropy() []byte {
- if m != nil {
- return m.Entropy
- }
- return nil
-}
-
-//*
-// Request: Request device to wipe all sensitive data and settings
-// @start
-// @next Success
-// @next Failure
-type WipeDevice struct {
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{11}
-}
-
-func (m *WipeDevice) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_WipeDevice.Unmarshal(m, b)
-}
-func (m *WipeDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_WipeDevice.Marshal(b, m, deterministic)
-}
-func (m *WipeDevice) XXX_Merge(src proto.Message) {
- xxx_messageInfo_WipeDevice.Merge(m, src)
-}
-func (m *WipeDevice) XXX_Size() int {
- return xxx_messageInfo_WipeDevice.Size(m)
-}
-func (m *WipeDevice) XXX_DiscardUnknown() {
- xxx_messageInfo_WipeDevice.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_WipeDevice proto.InternalMessageInfo
-
-//*
-// Request: Load seed and related internal settings from the computer
-// @start
-// @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_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{12}
-}
-
-func (m *LoadDevice) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_LoadDevice.Unmarshal(m, b)
-}
-func (m *LoadDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_LoadDevice.Marshal(b, m, deterministic)
-}
-func (m *LoadDevice) XXX_Merge(src proto.Message) {
- xxx_messageInfo_LoadDevice.Merge(m, src)
-}
-func (m *LoadDevice) XXX_Size() int {
- return xxx_messageInfo_LoadDevice.Size(m)
-}
-func (m *LoadDevice) XXX_DiscardUnknown() {
- xxx_messageInfo_LoadDevice.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LoadDevice proto.InternalMessageInfo
-
-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
-// @start
-// @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"`
- NoBackup *bool `protobuf:"varint,9,opt,name=no_backup,json=noBackup" json:"no_backup,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{13}
-}
-
-func (m *ResetDevice) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ResetDevice.Unmarshal(m, b)
-}
-func (m *ResetDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ResetDevice.Marshal(b, m, deterministic)
-}
-func (m *ResetDevice) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ResetDevice.Merge(m, src)
-}
-func (m *ResetDevice) XXX_Size() int {
- return xxx_messageInfo_ResetDevice.Size(m)
-}
-func (m *ResetDevice) XXX_DiscardUnknown() {
- xxx_messageInfo_ResetDevice.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ResetDevice proto.InternalMessageInfo
-
-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
-}
-
-func (m *ResetDevice) GetNoBackup() bool {
- if m != nil && m.NoBackup != nil {
- return *m.NoBackup
- }
- return false
-}
-
-//*
-// Request: Perform backup of the device seed if not backed up using ResetDevice
-// @start
-// @next Success
-type BackupDevice struct {
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{14}
-}
-
-func (m *BackupDevice) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BackupDevice.Unmarshal(m, b)
-}
-func (m *BackupDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BackupDevice.Marshal(b, m, deterministic)
-}
-func (m *BackupDevice) XXX_Merge(src proto.Message) {
- xxx_messageInfo_BackupDevice.Merge(m, src)
-}
-func (m *BackupDevice) XXX_Size() int {
- return xxx_messageInfo_BackupDevice.Size(m)
-}
-func (m *BackupDevice) XXX_DiscardUnknown() {
- xxx_messageInfo_BackupDevice.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_BackupDevice proto.InternalMessageInfo
-
-//*
-// Response: Ask for additional entropy from host computer
-// @next EntropyAck
-type EntropyRequest struct {
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{15}
-}
-
-func (m *EntropyRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EntropyRequest.Unmarshal(m, b)
-}
-func (m *EntropyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EntropyRequest.Marshal(b, m, deterministic)
-}
-func (m *EntropyRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EntropyRequest.Merge(m, src)
-}
-func (m *EntropyRequest) XXX_Size() int {
- return xxx_messageInfo_EntropyRequest.Size(m)
-}
-func (m *EntropyRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_EntropyRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EntropyRequest proto.InternalMessageInfo
-
-//*
-// Request: Provide additional entropy for seed generation function
-// @next Success
-type EntropyAck struct {
- Entropy []byte `protobuf:"bytes,1,opt,name=entropy" json:"entropy,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{16}
-}
-
-func (m *EntropyAck) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EntropyAck.Unmarshal(m, b)
-}
-func (m *EntropyAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EntropyAck.Marshal(b, m, deterministic)
-}
-func (m *EntropyAck) XXX_Merge(src proto.Message) {
- xxx_messageInfo_EntropyAck.Merge(m, src)
-}
-func (m *EntropyAck) XXX_Size() int {
- return xxx_messageInfo_EntropyAck.Size(m)
-}
-func (m *EntropyAck) XXX_DiscardUnknown() {
- xxx_messageInfo_EntropyAck.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EntropyAck proto.InternalMessageInfo
-
-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.
-// @start
-// @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 *RecoveryDevice_RecoveryDeviceType `protobuf:"varint,8,opt,name=type,enum=hw.trezor.messages.management.RecoveryDevice_RecoveryDeviceType" 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_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{17}
-}
-
-func (m *RecoveryDevice) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RecoveryDevice.Unmarshal(m, b)
-}
-func (m *RecoveryDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RecoveryDevice.Marshal(b, m, deterministic)
-}
-func (m *RecoveryDevice) XXX_Merge(src proto.Message) {
- xxx_messageInfo_RecoveryDevice.Merge(m, src)
-}
-func (m *RecoveryDevice) XXX_Size() int {
- return xxx_messageInfo_RecoveryDevice.Size(m)
-}
-func (m *RecoveryDevice) XXX_DiscardUnknown() {
- xxx_messageInfo_RecoveryDevice.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RecoveryDevice proto.InternalMessageInfo
-
-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() RecoveryDevice_RecoveryDeviceType {
- if m != nil && m.Type != nil {
- return *m.Type
- }
- return RecoveryDevice_RecoveryDeviceType_ScrambledWords
-}
-
-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.
-// @next WordAck
-type WordRequest struct {
- Type *WordRequest_WordRequestType `protobuf:"varint,1,opt,name=type,enum=hw.trezor.messages.management.WordRequest_WordRequestType" json:"type,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{18}
-}
-
-func (m *WordRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_WordRequest.Unmarshal(m, b)
-}
-func (m *WordRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_WordRequest.Marshal(b, m, deterministic)
-}
-func (m *WordRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_WordRequest.Merge(m, src)
-}
-func (m *WordRequest) XXX_Size() int {
- return xxx_messageInfo_WordRequest.Size(m)
-}
-func (m *WordRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_WordRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_WordRequest proto.InternalMessageInfo
-
-func (m *WordRequest) GetType() WordRequest_WordRequestType {
- if m != nil && m.Type != nil {
- return *m.Type
- }
- return WordRequest_WordRequestType_Plain
-}
-
-//*
-// Request: Computer replies with word from the mnemonic
-// @next WordRequest
-// @next Success
-// @next Failure
-type WordAck struct {
- Word *string `protobuf:"bytes,1,req,name=word" json:"word,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{19}
-}
-
-func (m *WordAck) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_WordAck.Unmarshal(m, b)
-}
-func (m *WordAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_WordAck.Marshal(b, m, deterministic)
-}
-func (m *WordAck) XXX_Merge(src proto.Message) {
- xxx_messageInfo_WordAck.Merge(m, src)
-}
-func (m *WordAck) XXX_Size() int {
- return xxx_messageInfo_WordAck.Size(m)
-}
-func (m *WordAck) XXX_DiscardUnknown() {
- xxx_messageInfo_WordAck.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_WordAck proto.InternalMessageInfo
-
-func (m *WordAck) GetWord() string {
- if m != nil && m.Word != nil {
- return *m.Word
- }
- return ""
-}
-
-//*
-// Request: Set U2F counter
-// @start
-// @next Success
-type SetU2FCounter struct {
- U2FCounter *uint32 `protobuf:"varint,1,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `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 fileDescriptor_0c720c20d27aa029, []int{20}
-}
-
-func (m *SetU2FCounter) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetU2FCounter.Unmarshal(m, b)
-}
-func (m *SetU2FCounter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetU2FCounter.Marshal(b, m, deterministic)
-}
-func (m *SetU2FCounter) XXX_Merge(src proto.Message) {
- xxx_messageInfo_SetU2FCounter.Merge(m, src)
-}
-func (m *SetU2FCounter) XXX_Size() int {
- return xxx_messageInfo_SetU2FCounter.Size(m)
-}
-func (m *SetU2FCounter) XXX_DiscardUnknown() {
- xxx_messageInfo_SetU2FCounter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SetU2FCounter proto.InternalMessageInfo
-
-func (m *SetU2FCounter) GetU2FCounter() uint32 {
- if m != nil && m.U2FCounter != nil {
- return *m.U2FCounter
- }
- return 0
-}
-
-func init() {
- proto.RegisterEnum("hw.trezor.messages.management.ApplySettings_PassphraseSourceType", ApplySettings_PassphraseSourceType_name, ApplySettings_PassphraseSourceType_value)
- proto.RegisterEnum("hw.trezor.messages.management.RecoveryDevice_RecoveryDeviceType", RecoveryDevice_RecoveryDeviceType_name, RecoveryDevice_RecoveryDeviceType_value)
- proto.RegisterEnum("hw.trezor.messages.management.WordRequest_WordRequestType", WordRequest_WordRequestType_name, WordRequest_WordRequestType_value)
- proto.RegisterType((*Initialize)(nil), "hw.trezor.messages.management.Initialize")
- proto.RegisterType((*GetFeatures)(nil), "hw.trezor.messages.management.GetFeatures")
- proto.RegisterType((*Features)(nil), "hw.trezor.messages.management.Features")
- proto.RegisterType((*ClearSession)(nil), "hw.trezor.messages.management.ClearSession")
- proto.RegisterType((*ApplySettings)(nil), "hw.trezor.messages.management.ApplySettings")
- proto.RegisterType((*ApplyFlags)(nil), "hw.trezor.messages.management.ApplyFlags")
- proto.RegisterType((*ChangePin)(nil), "hw.trezor.messages.management.ChangePin")
- proto.RegisterType((*Ping)(nil), "hw.trezor.messages.management.Ping")
- proto.RegisterType((*Cancel)(nil), "hw.trezor.messages.management.Cancel")
- proto.RegisterType((*GetEntropy)(nil), "hw.trezor.messages.management.GetEntropy")
- proto.RegisterType((*Entropy)(nil), "hw.trezor.messages.management.Entropy")
- proto.RegisterType((*WipeDevice)(nil), "hw.trezor.messages.management.WipeDevice")
- proto.RegisterType((*LoadDevice)(nil), "hw.trezor.messages.management.LoadDevice")
- proto.RegisterType((*ResetDevice)(nil), "hw.trezor.messages.management.ResetDevice")
- proto.RegisterType((*BackupDevice)(nil), "hw.trezor.messages.management.BackupDevice")
- proto.RegisterType((*EntropyRequest)(nil), "hw.trezor.messages.management.EntropyRequest")
- proto.RegisterType((*EntropyAck)(nil), "hw.trezor.messages.management.EntropyAck")
- proto.RegisterType((*RecoveryDevice)(nil), "hw.trezor.messages.management.RecoveryDevice")
- proto.RegisterType((*WordRequest)(nil), "hw.trezor.messages.management.WordRequest")
- proto.RegisterType((*WordAck)(nil), "hw.trezor.messages.management.WordAck")
- proto.RegisterType((*SetU2FCounter)(nil), "hw.trezor.messages.management.SetU2FCounter")
-}
-
-func init() { proto.RegisterFile("messages-management.proto", fileDescriptor_0c720c20d27aa029) }
-
-var fileDescriptor_0c720c20d27aa029 = []byte{
- // 1393 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0xdd, 0x6e, 0xdb, 0xc8,
- 0x15, 0x8e, 0x7e, 0x62, 0x49, 0xc7, 0xfa, 0xcb, 0xd4, 0x8e, 0xe9, 0xb8, 0x6e, 0x1c, 0xba, 0x6e,
- 0x12, 0x04, 0x15, 0x0a, 0x17, 0x09, 0x90, 0x5c, 0x14, 0x75, 0xec, 0xfc, 0x21, 0x71, 0x6a, 0xd0,
- 0x6e, 0x02, 0xf4, 0x86, 0x18, 0x91, 0x47, 0xd2, 0xd4, 0xe4, 0x0c, 0xcb, 0x19, 0xda, 0x55, 0x5e,
- 0x60, 0x6f, 0xf6, 0x45, 0x16, 0xfb, 0x1c, 0x7b, 0xb5, 0xcf, 0xb0, 0xef, 0xb2, 0x98, 0x19, 0x52,
- 0xa2, 0x65, 0x3b, 0x46, 0x76, 0xef, 0xe6, 0x7c, 0xe7, 0xe3, 0x68, 0xce, 0x77, 0xbe, 0x39, 0x63,
- 0xc3, 0x7a, 0x8c, 0x52, 0xd2, 0x31, 0xca, 0xbf, 0xc6, 0x94, 0xd3, 0x31, 0xc6, 0xc8, 0xd5, 0x20,
- 0x49, 0x85, 0x12, 0x64, 0x73, 0x72, 0x3e, 0x50, 0x29, 0x7e, 0x11, 0xe9, 0xa0, 0x20, 0x0d, 0xe6,
- 0xa4, 0x7b, 0xab, 0xb3, 0x2f, 0x03, 0x11, 0xc7, 0x82, 0xdb, 0xaf, 0xdc, 0xf7, 0x00, 0xef, 0x38,
- 0x53, 0x8c, 0x46, 0xec, 0x0b, 0x92, 0x15, 0xb8, 0x2d, 0x15, 0x55, 0xe8, 0x54, 0xb6, 0x2a, 0x8f,
- 0xda, 0x9e, 0x0d, 0xc8, 0x43, 0xe8, 0xc9, 0x53, 0x96, 0xf8, 0x09, 0x95, 0x32, 0x99, 0xa4, 0x54,
- 0xa2, 0x53, 0xdd, 0xaa, 0x3c, 0x6a, 0x7a, 0x5d, 0x0d, 0x1f, 0xcd, 0x50, 0xb7, 0x03, 0xcb, 0x6f,
- 0x50, 0xbd, 0x46, 0xaa, 0xb2, 0x14, 0xa5, 0xfb, 0x7d, 0x03, 0x9a, 0x45, 0x40, 0xee, 0xc2, 0xd2,
- 0x19, 0xf2, 0x50, 0xa4, 0x66, 0xef, 0x96, 0x97, 0x47, 0x64, 0x1b, 0x3a, 0x31, 0xfd, 0xaf, 0x48,
- 0xfd, 0x33, 0x4c, 0x25, 0x13, 0xdc, 0x6c, 0xdd, 0xf1, 0xda, 0x06, 0xfc, 0x64, 0x31, 0x43, 0x62,
- 0xbc, 0x44, 0xaa, 0xe5, 0x24, 0x0d, 0x96, 0x48, 0x09, 0x55, 0xc1, 0x64, 0x46, 0xaa, 0x5b, 0x92,
- 0x01, 0x0b, 0xd2, 0x43, 0xe8, 0x0d, 0x85, 0x50, 0x91, 0xa0, 0x21, 0xa6, 0x7e, 0x2c, 0x42, 0x74,
- 0x6e, 0xdb, 0x5a, 0xe6, 0xf0, 0xa1, 0x08, 0x91, 0x6c, 0x40, 0x2b, 0xc4, 0x33, 0x16, 0xa0, 0xcf,
- 0x42, 0x67, 0xc9, 0x1c, 0xb9, 0x69, 0x81, 0x77, 0x21, 0xd9, 0x81, 0x6e, 0xc2, 0xb8, 0xaf, 0x25,
- 0xc4, 0x40, 0xe9, 0xdf, 0x6a, 0x98, 0x4d, 0x3a, 0x09, 0xe3, 0x47, 0x33, 0x90, 0xfc, 0x1d, 0x56,
- 0xe7, 0x9a, 0x95, 0xd9, 0x4d, 0xc3, 0x5e, 0x99, 0x27, 0x4b, 0x1f, 0xdd, 0x83, 0x66, 0x44, 0xf9,
- 0x38, 0xa3, 0x63, 0x74, 0x5a, 0xf6, 0x77, 0x8b, 0x58, 0xf7, 0x27, 0xa2, 0x43, 0x8c, 0x1c, 0x30,
- 0x09, 0x1b, 0x90, 0x2d, 0x58, 0x66, 0xb3, 0x1e, 0x86, 0x4e, 0xdb, 0x6c, 0x5e, 0x86, 0xf4, 0x9e,
- 0x29, 0x9e, 0x31, 0xa3, 0x4a, 0xc7, 0xb4, 0x76, 0x16, 0x2f, 0x28, 0x32, 0xa1, 0x72, 0xe2, 0x74,
- 0x0d, 0xa5, 0xa4, 0xc8, 0x5b, 0x2a, 0x27, 0x7a, 0x13, 0x16, 0x27, 0x22, 0x55, 0x18, 0x3a, 0x3d,
- 0xf3, 0x1b, 0xb3, 0x98, 0x6c, 0x02, 0x68, 0x41, 0x02, 0x1a, 0x4c, 0x30, 0x74, 0xfa, 0x26, 0xdb,
- 0x4a, 0x18, 0xdf, 0x37, 0x00, 0x79, 0x02, 0x77, 0x4a, 0x42, 0xe4, 0xac, 0x3b, 0x86, 0xd5, 0x9f,
- 0x27, 0x72, 0xf2, 0x63, 0xe8, 0x8f, 0x58, 0x1a, 0x9f, 0xd3, 0x54, 0x6b, 0x86, 0x12, 0xb9, 0x72,
- 0x88, 0xe1, 0xf6, 0x0a, 0xfc, 0xc8, 0xc2, 0xe4, 0x01, 0xb4, 0x39, 0x62, 0x28, 0xfd, 0x21, 0x0d,
- 0x4e, 0xb3, 0xc4, 0xf9, 0x83, 0x2d, 0xdd, 0x60, 0x2f, 0x0d, 0xa4, 0x25, 0x1b, 0x45, 0x74, 0x2c,
- 0x9d, 0x15, 0xe3, 0x06, 0x1b, 0x68, 0x54, 0xf7, 0x3e, 0x72, 0x56, 0xad, 0x90, 0x26, 0x20, 0xeb,
- 0xd0, 0x1c, 0x9d, 0xfb, 0xc6, 0x79, 0xce, 0x5d, 0x43, 0x6f, 0x8c, 0xce, 0x0f, 0x75, 0x58, 0xa4,
- 0xb4, 0xdf, 0x9c, 0xb5, 0x59, 0x4a, 0x87, 0x79, 0xca, 0xb8, 0xcc, 0x71, 0x8a, 0xd4, 0x91, 0x0e,
- 0xb5, 0x89, 0x46, 0xe7, 0x7e, 0xee, 0xfb, 0x75, 0xdb, 0xcc, 0xd1, 0xf9, 0x27, 0xeb, 0xfc, 0x3f,
- 0x43, 0x77, 0x96, 0xf4, 0x4f, 0x71, 0x2a, 0x9d, 0x7b, 0x46, 0xf7, 0x76, 0xc1, 0x78, 0x8f, 0x53,
- 0xa9, 0xa5, 0xcb, 0xf8, 0x88, 0x71, 0x26, 0x27, 0x18, 0x16, 0x75, 0x6e, 0x58, 0xe9, 0xe6, 0x89,
- 0xbc, 0xd8, 0x0d, 0x68, 0x71, 0x51, 0x90, 0xfe, 0x68, 0x7b, 0xc4, 0x85, 0x4d, 0xba, 0x5d, 0x68,
- 0xef, 0x47, 0x48, 0xd3, 0x63, 0x94, 0xba, 0xf1, 0xee, 0x77, 0x35, 0xe8, 0xec, 0x25, 0x49, 0x34,
- 0x3d, 0x46, 0xa5, 0x18, 0x1f, 0xcb, 0x0b, 0xd6, 0xab, 0x5c, 0x67, 0xbd, 0x6a, 0xd9, 0x7a, 0x3b,
- 0xd0, 0xcd, 0xb4, 0xb5, 0xe7, 0x93, 0xa1, 0x66, 0x2f, 0x42, 0x26, 0x71, 0x3e, 0x18, 0xc8, 0x9f,
- 0x00, 0x26, 0x22, 0x46, 0x19, 0xa4, 0x88, 0xf6, 0x5e, 0xb6, 0xbd, 0x12, 0x42, 0xf8, 0x05, 0x7f,
- 0x48, 0x91, 0xa5, 0x81, 0xbd, 0x97, 0xdd, 0xdd, 0xbd, 0xc1, 0x57, 0xe7, 0xda, 0xe0, 0x42, 0x05,
- 0x83, 0xf9, 0x6f, 0x1e, 0x9b, 0x4d, 0x4e, 0xa6, 0x09, 0x96, 0x2d, 0x66, 0x51, 0xf2, 0x04, 0x08,
- 0xcd, 0x94, 0xf0, 0x23, 0x11, 0x9c, 0xfa, 0x21, 0x46, 0x74, 0xea, 0xc7, 0xd2, 0xdc, 0xf2, 0x8e,
- 0xd7, 0xd3, 0x99, 0x0f, 0x22, 0x38, 0x3d, 0xd0, 0xf8, 0xa1, 0xd4, 0x7e, 0x0c, 0x99, 0x4c, 0x34,
- 0x29, 0x15, 0x8a, 0xce, 0xae, 0x7b, 0xc7, 0xeb, 0xe5, 0xb8, 0x97, 0xc3, 0xee, 0x53, 0x58, 0xb9,
- 0xea, 0x04, 0xa4, 0x01, 0xb5, 0xbd, 0xe3, 0xf7, 0xfd, 0x5b, 0x04, 0x60, 0xe9, 0xe0, 0xd5, 0xa7,
- 0x77, 0xfb, 0xaf, 0xfa, 0x15, 0xd2, 0x84, 0xfa, 0xdb, 0x7f, 0x1d, 0x9f, 0xf4, 0xab, 0xae, 0x0b,
- 0x60, 0xca, 0x78, 0x5d, 0x78, 0xd3, 0x3a, 0xb6, 0x52, 0x72, 0xac, 0xbb, 0x0d, 0xad, 0xfd, 0x09,
- 0xe5, 0x63, 0x3c, 0x62, 0x5c, 0x0f, 0xd3, 0x14, 0x63, 0x71, 0x66, 0xdb, 0xd4, 0xf4, 0xf2, 0xc8,
- 0xfd, 0xa1, 0x02, 0xf5, 0x23, 0xc6, 0xc7, 0xc4, 0x81, 0x46, 0x2e, 0x56, 0xde, 0xc8, 0x22, 0xd4,
- 0x7e, 0x1a, 0x66, 0x4a, 0x89, 0x0b, 0xd3, 0xcb, 0x8e, 0xf3, 0xbe, 0x4d, 0x94, 0x66, 0xd1, 0xe5,
- 0x39, 0x57, 0xfb, 0xa6, 0x39, 0x57, 0xbf, 0x7e, 0xce, 0xb9, 0x4d, 0x58, 0xda, 0xa7, 0x3c, 0xc0,
- 0xc8, 0xdd, 0x02, 0x78, 0x83, 0xea, 0x15, 0x57, 0xa9, 0x48, 0xa6, 0x84, 0x40, 0x5d, 0xb2, 0x2f,
- 0xfa, 0xdc, 0xd5, 0x47, 0x1d, 0xcf, 0xac, 0xdd, 0x6d, 0x68, 0x14, 0x69, 0x07, 0x1a, 0x68, 0x97,
- 0x86, 0xd1, 0xf6, 0x8a, 0xd0, 0x6d, 0x03, 0x7c, 0x66, 0x09, 0x1e, 0x98, 0x21, 0xed, 0xfe, 0x58,
- 0x05, 0xf8, 0x20, 0x68, 0x68, 0x43, 0x6d, 0xed, 0x98, 0x63, 0x2c, 0x38, 0x0b, 0x0a, 0x6b, 0x17,
- 0x31, 0x79, 0x0e, 0x75, 0xae, 0x1f, 0x02, 0xad, 0xc2, 0xf2, 0xee, 0xce, 0x55, 0x86, 0xcb, 0xdf,
- 0xcc, 0xb7, 0x07, 0x1f, 0x45, 0x68, 0x4d, 0x65, 0x3e, 0x21, 0x7d, 0xa8, 0x25, 0xcc, 0xaa, 0xd2,
- 0xf2, 0xf4, 0xf2, 0x37, 0x69, 0x41, 0xb6, 0x4b, 0x17, 0x4f, 0xdb, 0xbe, 0xf5, 0xa2, 0x81, 0x7c,
- 0x1c, 0x31, 0x39, 0xb9, 0xea, 0x06, 0x2e, 0x95, 0x6f, 0xe0, 0x36, 0x74, 0xcc, 0xe3, 0x1c, 0x4c,
- 0x30, 0x38, 0x95, 0x59, 0x9c, 0xbf, 0x44, 0x6d, 0x0d, 0xee, 0xe7, 0x18, 0xb9, 0x0f, 0xcb, 0xd9,
- 0xee, 0xc8, 0x0f, 0x44, 0xc6, 0x15, 0xa6, 0xe6, 0xf9, 0xe9, 0x78, 0x90, 0xed, 0x8e, 0xf6, 0x2d,
- 0xe2, 0xfe, 0x5c, 0x85, 0x65, 0x0f, 0x25, 0xaa, 0x5c, 0xae, 0x1d, 0xe8, 0xce, 0x3c, 0x4f, 0x79,
- 0x28, 0xe2, 0xdc, 0x68, 0x9d, 0xc2, 0xf1, 0x06, 0x24, 0xf7, 0xa1, 0x29, 0x55, 0x8a, 0x7c, 0xac,
- 0x26, 0xf6, 0xdd, 0x7e, 0x51, 0xdb, 0x7d, 0xfa, 0xcc, 0x9b, 0x81, 0xd7, 0xab, 0x51, 0xfb, 0x8a,
- 0x1a, 0x97, 0x5d, 0x57, 0xbf, 0xca, 0x75, 0xbf, 0x43, 0xb4, 0x05, 0x3d, 0x1a, 0x8b, 0x7a, 0x68,
- 0x82, 0x51, 0x35, 0x1f, 0xa5, 0xf6, 0xbd, 0x06, 0x0d, 0x5d, 0x35, 0x69, 0x5b, 0x97, 0x27, 0xad,
- 0x5d, 0xe5, 0x5e, 0xec, 0x43, 0x37, 0xb7, 0xaf, 0x87, 0xff, 0xcb, 0x50, 0x2a, 0xf7, 0x2f, 0x00,
- 0x39, 0xb2, 0x17, 0x9c, 0x5e, 0xf4, 0x74, 0xa5, 0xec, 0xe9, 0x5f, 0x6a, 0xd0, 0xf5, 0x30, 0x10,
- 0x67, 0x98, 0x4e, 0xf3, 0xd6, 0x6c, 0x02, 0x9c, 0x8b, 0x34, 0xb4, 0x87, 0xcf, 0x67, 0x44, 0x4b,
- 0x23, 0xe6, 0xec, 0xd7, 0x2b, 0x5e, 0xfd, 0x26, 0xc5, 0x6b, 0x37, 0x29, 0x5e, 0xbf, 0x51, 0xf1,
- 0xdb, 0x65, 0xc5, 0x1f, 0x43, 0x1f, 0xf9, 0x48, 0xa4, 0x01, 0xfa, 0xfa, 0xac, 0x11, 0x93, 0xca,
- 0xb4, 0xa4, 0xe9, 0xf5, 0x72, 0xfc, 0x73, 0x0e, 0x93, 0x13, 0xa8, 0xab, 0x69, 0x82, 0x46, 0xf4,
- 0xee, 0xee, 0x3f, 0x6f, 0x98, 0xff, 0x17, 0xd5, 0x59, 0x08, 0xed, 0x4d, 0xd5, 0xbb, 0x2d, 0xb6,
- 0xbc, 0x75, 0xa9, 0xe5, 0x6b, 0xd0, 0x08, 0xd3, 0xa9, 0x9f, 0x66, 0xdc, 0xfc, 0x75, 0xd5, 0xf4,
- 0x96, 0xc2, 0x74, 0xea, 0x65, 0xdc, 0xfd, 0x0f, 0x90, 0xcb, 0xbb, 0x92, 0x1d, 0x78, 0x70, 0x19,
- 0xf5, 0x8f, 0x83, 0x94, 0xc6, 0xc3, 0x08, 0x43, 0x5d, 0x8d, 0xec, 0xdf, 0x22, 0x9b, 0xb0, 0x7e,
- 0x05, 0xed, 0x90, 0xaa, 0x94, 0xfd, 0xbf, 0x5f, 0x71, 0x7f, 0xaa, 0xc0, 0xb2, 0xa6, 0xe6, 0xbe,
- 0x20, 0x1f, 0xf3, 0xda, 0x2b, 0xa6, 0xf6, 0x17, 0x37, 0xd4, 0x5e, 0xfa, 0xb2, 0xbc, 0x9e, 0x57,
- 0xed, 0x8e, 0xa0, 0xb7, 0x90, 0x20, 0xeb, 0xb0, 0xba, 0x00, 0xf9, 0x47, 0x11, 0x65, 0xbc, 0x7f,
- 0x8b, 0x6c, 0xc0, 0xda, 0x62, 0xca, 0x9e, 0xf4, 0x79, 0xbf, 0x72, 0x7d, 0xf2, 0x59, 0xbf, 0xea,
- 0x6e, 0x42, 0x43, 0x27, 0xb5, 0x99, 0x09, 0xd4, 0x75, 0x87, 0xcd, 0x74, 0x6e, 0x79, 0x66, 0xed,
- 0xfe, 0x0d, 0x3a, 0xc7, 0xa8, 0xfe, 0xbd, 0xfb, 0xba, 0x74, 0xbf, 0xca, 0xdd, 0xa8, 0x2c, 0x76,
- 0xe3, 0xe5, 0x3f, 0x60, 0x3b, 0x10, 0xf1, 0x40, 0x52, 0x25, 0xe4, 0x84, 0x45, 0x74, 0x28, 0x0b,
- 0x21, 0x22, 0x36, 0xb4, 0xff, 0xbb, 0x0c, 0xb3, 0xd1, 0xcb, 0xb5, 0x13, 0x03, 0x1e, 0x5a, 0x71,
- 0x0e, 0x67, 0xd2, 0xfc, 0x1a, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x6e, 0xfc, 0x59, 0x29, 0x0d, 0x00,
- 0x00,
-}
diff --git a/accounts/usbwallet/trezor/messages-management.proto b/accounts/usbwallet/trezor/messages-management.proto
deleted file mode 100644
index 0ab825a..0000000
--- a/accounts/usbwallet/trezor/messages-management.proto
+++ /dev/null
@@ -1,289 +0,0 @@
-// This file originates from the SatoshiLabs Trezor `common` repository at:
-// https://github.com/trezor/trezor-common/blob/master/protob/messages-management.proto
-// dated 28.05.2019, commit 893fd219d4a01bcffa0cd9cfa631856371ec5aa9.
-
-syntax = "proto2";
-package hw.trezor.messages.management;
-
-// Sugar for easier handling in Java
-option java_package = "com.satoshilabs.trezor.lib.protobuf";
-option java_outer_classname = "TrezorMessageManagement";
-
-import "messages-common.proto";
-
-/**
- * Request: Reset device to default state and ask for device details
- * @start
- * @next Features
- */
-message Initialize {
- optional bytes state = 1; // assumed device state, clear session if set and different
- optional bool skip_passphrase = 2; // this session should always assume empty passphrase
-}
-
-/**
- * Request: Ask for device details (no device reset)
- * @start
- * @next Features
- */
-message GetFeatures {
-}
-
-/**
- * Response: Reports various information about the device
- * @end
- */
-message Features {
- optional string vendor = 1; // name of the manufacturer, e.g. "trezor.io"
- optional uint32 major_version = 2; // major version of the firmware/bootloader, e.g. 1
- optional uint32 minor_version = 3; // minor version of the firmware/bootloader, e.g. 0
- optional uint32 patch_version = 4; // patch version of the firmware/bootloader, e.g. 0
- optional bool bootloader_mode = 5; // is device in bootloader mode?
- optional string device_id = 6; // device's unique identifier
- optional bool pin_protection = 7; // is device protected by PIN?
- optional bool passphrase_protection = 8; // is node/mnemonic encrypted using passphrase?
- optional string language = 9; // device language
- optional string label = 10; // device description label
- optional bool initialized = 12; // does device contain seed?
- optional bytes revision = 13; // SCM revision of firmware
- optional bytes bootloader_hash = 14; // hash of the bootloader
- optional bool imported = 15; // was storage imported from an external source?
- optional bool pin_cached = 16; // is PIN already cached in session?
- optional bool passphrase_cached = 17; // is passphrase already cached in session?
- optional bool firmware_present = 18; // is valid firmware loaded?
- optional bool needs_backup = 19; // does storage need backup? (equals to Storage.needs_backup)
- optional uint32 flags = 20; // device flags (equals to Storage.flags)
- optional string model = 21; // device hardware model
- optional uint32 fw_major = 22; // reported firmware version if in bootloader mode
- optional uint32 fw_minor = 23; // reported firmware version if in bootloader mode
- optional uint32 fw_patch = 24; // reported firmware version if in bootloader mode
- optional string fw_vendor = 25; // reported firmware vendor if in bootloader mode
- optional bytes fw_vendor_keys = 26; // reported firmware vendor keys (their hash)
- optional bool unfinished_backup = 27; // report unfinished backup (equals to Storage.unfinished_backup)
- optional bool no_backup = 28; // report no backup (equals to Storage.no_backup)
-}
-
-/**
- * Request: clear session (removes cached PIN, passphrase, etc).
- * @start
- * @next Success
- */
-message ClearSession {
-}
-
-/**
- * Request: change language and/or label of the device
- * @start
- * @next Success
- * @next Failure
- */
-message ApplySettings {
- optional string language = 1;
- optional string label = 2;
- optional bool use_passphrase = 3;
- optional bytes homescreen = 4;
- optional PassphraseSourceType passphrase_source = 5;
- optional uint32 auto_lock_delay_ms = 6;
- optional uint32 display_rotation = 7; // in degrees from North
- /**
- * Structure representing passphrase source
- */
- enum PassphraseSourceType {
- ASK = 0;
- DEVICE = 1;
- HOST = 2;
- }
-}
-
-/**
- * Request: set flags of the device
- * @start
- * @next Success
- * @next Failure
- */
-message ApplyFlags {
- optional uint32 flags = 1; // bitmask, can only set bits, not unset
-}
-
-/**
- * Request: Starts workflow for setting/changing/removing the PIN
- * @start
- * @next Success
- * @next Failure
- */
-message ChangePin {
- optional bool remove = 1; // is PIN removal requested?
-}
-
-/**
- * Request: Test if the device is alive, device sends back the message in Success response
- * @start
- * @next Success
- */
-message Ping {
- optional string message = 1; // message to send back in Success message
- optional bool button_protection = 2; // ask for button press
- optional bool pin_protection = 3; // ask for PIN if set in device
- optional bool passphrase_protection = 4; // ask for passphrase if set in device
-}
-
-/**
- * Request: Abort last operation that required user interaction
- * @start
- * @next Failure
- */
-message Cancel {
-}
-
-/**
- * Request: Request a sample of random data generated by hardware RNG. May be used for testing.
- * @start
- * @next Entropy
- * @next Failure
- */
-message GetEntropy {
- required uint32 size = 1; // size of requested entropy
-}
-
-/**
- * Response: Reply with random data generated by internal RNG
- * @end
- */
-message Entropy {
- required bytes entropy = 1; // chunk of random generated bytes
-}
-
-/**
- * Request: Request device to wipe all sensitive data and settings
- * @start
- * @next Success
- * @next Failure
- */
-message WipeDevice {
-}
-
-/**
- * Request: Load seed and related internal settings from the computer
- * @start
- * @next Success
- * @next Failure
- */
-message LoadDevice {
- optional string mnemonic = 1; // seed encoded as BIP-39 mnemonic (12, 18 or 24 words)
- optional hw.trezor.messages.common.HDNodeType node = 2; // BIP-32 node
- optional string pin = 3; // set PIN protection
- optional bool passphrase_protection = 4; // enable master node encryption using passphrase
- optional string language = 5 [default='english']; // device language
- optional string label = 6; // device label
- optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum
- optional uint32 u2f_counter = 8; // U2F counter
-}
-
-/**
- * Request: Ask device to do initialization involving user interaction
- * @start
- * @next EntropyRequest
- * @next Failure
- */
-message ResetDevice {
- optional bool display_random = 1; // display entropy generated by the device before asking for additional entropy
- optional uint32 strength = 2 [default=256]; // strength of seed in bits
- optional bool passphrase_protection = 3; // enable master node encryption using passphrase
- optional bool pin_protection = 4; // enable PIN protection
- optional string language = 5 [default='english']; // device language
- optional string label = 6; // device label
- optional uint32 u2f_counter = 7; // U2F counter
- optional bool skip_backup = 8; // postpone seed backup to BackupDevice workflow
- optional bool no_backup = 9; // indicate that no backup is going to be made
-}
-
-/**
- * Request: Perform backup of the device seed if not backed up using ResetDevice
- * @start
- * @next Success
- */
-message BackupDevice {
-}
-
-/**
- * Response: Ask for additional entropy from host computer
- * @next EntropyAck
- */
-message EntropyRequest {
-}
-
-/**
- * Request: Provide additional entropy for seed generation function
- * @next Success
- */
-message EntropyAck {
- optional bytes entropy = 1; // 256 bits (32 bytes) of random data
-}
-
-/**
- * Request: Start recovery workflow asking user for specific words of mnemonic
- * Used to recovery device safely even on untrusted computer.
- * @start
- * @next WordRequest
- */
-message RecoveryDevice {
- optional uint32 word_count = 1; // number of words in BIP-39 mnemonic
- optional bool passphrase_protection = 2; // enable master node encryption using passphrase
- optional bool pin_protection = 3; // enable PIN protection
- optional string language = 4 [default='english']; // device language
- optional string label = 5; // device label
- optional bool enforce_wordlist = 6; // enforce BIP-39 wordlist during the process
- // 7 reserved for unused recovery method
- optional RecoveryDeviceType type = 8; // supported recovery type
- optional uint32 u2f_counter = 9; // U2F counter
- optional bool dry_run = 10; // perform dry-run recovery workflow (for safe mnemonic validation)
- /**
- * Type of recovery procedure. These should be used as bitmask, e.g.,
- * `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix`
- * listing every method supported by the host computer.
- *
- * Note that ScrambledWords must be supported by every implementation
- * for backward compatibility; there is no way to not support it.
- */
- enum RecoveryDeviceType {
- // use powers of two when extending this field
- RecoveryDeviceType_ScrambledWords = 0; // words in scrambled order
- RecoveryDeviceType_Matrix = 1; // matrix recovery type
- }
-}
-
-/**
- * Response: Device is waiting for user to enter word of the mnemonic
- * Its position is shown only on device's internal display.
- * @next WordAck
- */
-message WordRequest {
- optional WordRequestType type = 1;
- /**
- * Type of Recovery Word request
- */
- enum WordRequestType {
- WordRequestType_Plain = 0;
- WordRequestType_Matrix9 = 1;
- WordRequestType_Matrix6 = 2;
- }
-}
-
-/**
- * Request: Computer replies with word from the mnemonic
- * @next WordRequest
- * @next Success
- * @next Failure
- */
-message WordAck {
- required string word = 1; // one word of mnemonic on asked position
-}
-
-/**
- * Request: Set U2F counter
- * @start
- * @next Success
- */
-message SetU2FCounter {
- optional uint32 u2f_counter = 1; // counter
-}
diff --git a/accounts/usbwallet/trezor/messages.pb.go b/accounts/usbwallet/trezor/messages.pb.go
deleted file mode 100644
index 6278bd8..0000000
--- a/accounts/usbwallet/trezor/messages.pb.go
+++ /dev/null
@@ -1,889 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: messages.proto
-
-package trezor
-
-import (
- fmt "fmt"
- math "math"
-
- proto "github.com/golang/protobuf/proto"
- descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
-)
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
-
-//*
-// Mapping between TREZOR wire identifier (uint) and a protobuf message
-type MessageType int32
-
-const (
- // Management
- 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_GetEntropy MessageType = 9
- MessageType_MessageType_Entropy MessageType = 10
- MessageType_MessageType_LoadDevice MessageType = 13
- MessageType_MessageType_ResetDevice MessageType = 14
- MessageType_MessageType_Features MessageType = 17
- MessageType_MessageType_PinMatrixRequest MessageType = 18
- MessageType_MessageType_PinMatrixAck MessageType = 19
- MessageType_MessageType_Cancel MessageType = 20
- 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_BackupDevice MessageType = 34
- MessageType_MessageType_EntropyRequest MessageType = 35
- MessageType_MessageType_EntropyAck MessageType = 36
- MessageType_MessageType_PassphraseRequest MessageType = 41
- MessageType_MessageType_PassphraseAck MessageType = 42
- MessageType_MessageType_PassphraseStateRequest MessageType = 77
- MessageType_MessageType_PassphraseStateAck MessageType = 78
- MessageType_MessageType_RecoveryDevice MessageType = 45
- MessageType_MessageType_WordRequest MessageType = 46
- MessageType_MessageType_WordAck MessageType = 47
- MessageType_MessageType_GetFeatures MessageType = 55
- MessageType_MessageType_SetU2FCounter MessageType = 63
- // Bootloader
- MessageType_MessageType_FirmwareErase MessageType = 6
- MessageType_MessageType_FirmwareUpload MessageType = 7
- MessageType_MessageType_FirmwareRequest MessageType = 8
- MessageType_MessageType_SelfTest MessageType = 32
- // Bitcoin
- MessageType_MessageType_GetPublicKey MessageType = 11
- MessageType_MessageType_PublicKey MessageType = 12
- MessageType_MessageType_SignTx MessageType = 15
- MessageType_MessageType_TxRequest MessageType = 21
- MessageType_MessageType_TxAck MessageType = 22
- MessageType_MessageType_GetAddress MessageType = 29
- MessageType_MessageType_Address MessageType = 30
- MessageType_MessageType_SignMessage MessageType = 38
- MessageType_MessageType_VerifyMessage MessageType = 39
- MessageType_MessageType_MessageSignature MessageType = 40
- // Crypto
- MessageType_MessageType_CipherKeyValue MessageType = 23
- MessageType_MessageType_CipheredKeyValue MessageType = 48
- MessageType_MessageType_SignIdentity MessageType = 53
- MessageType_MessageType_SignedIdentity MessageType = 54
- MessageType_MessageType_GetECDHSessionKey MessageType = 61
- MessageType_MessageType_ECDHSessionKey MessageType = 62
- MessageType_MessageType_CosiCommit MessageType = 71
- MessageType_MessageType_CosiCommitment MessageType = 72
- MessageType_MessageType_CosiSign MessageType = 73
- MessageType_MessageType_CosiSignature MessageType = 74
- // Debug
- 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
- // Ethereum
- MessageType_MessageType_EthereumGetPublicKey MessageType = 450
- MessageType_MessageType_EthereumPublicKey MessageType = 451
- 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_EthereumSignMessage MessageType = 64
- MessageType_MessageType_EthereumVerifyMessage MessageType = 65
- MessageType_MessageType_EthereumMessageSignature MessageType = 66
- // NEM
- MessageType_MessageType_NEMGetAddress MessageType = 67
- MessageType_MessageType_NEMAddress MessageType = 68
- MessageType_MessageType_NEMSignTx MessageType = 69
- MessageType_MessageType_NEMSignedTx MessageType = 70
- MessageType_MessageType_NEMDecryptMessage MessageType = 75
- MessageType_MessageType_NEMDecryptedMessage MessageType = 76
- // Lisk
- MessageType_MessageType_LiskGetAddress MessageType = 114
- MessageType_MessageType_LiskAddress MessageType = 115
- MessageType_MessageType_LiskSignTx MessageType = 116
- MessageType_MessageType_LiskSignedTx MessageType = 117
- MessageType_MessageType_LiskSignMessage MessageType = 118
- MessageType_MessageType_LiskMessageSignature MessageType = 119
- MessageType_MessageType_LiskVerifyMessage MessageType = 120
- MessageType_MessageType_LiskGetPublicKey MessageType = 121
- MessageType_MessageType_LiskPublicKey MessageType = 122
- // Tezos
- MessageType_MessageType_TezosGetAddress MessageType = 150
- MessageType_MessageType_TezosAddress MessageType = 151
- MessageType_MessageType_TezosSignTx MessageType = 152
- MessageType_MessageType_TezosSignedTx MessageType = 153
- MessageType_MessageType_TezosGetPublicKey MessageType = 154
- MessageType_MessageType_TezosPublicKey MessageType = 155
- // Stellar
- MessageType_MessageType_StellarSignTx MessageType = 202
- MessageType_MessageType_StellarTxOpRequest MessageType = 203
- MessageType_MessageType_StellarGetAddress MessageType = 207
- MessageType_MessageType_StellarAddress MessageType = 208
- MessageType_MessageType_StellarCreateAccountOp MessageType = 210
- MessageType_MessageType_StellarPaymentOp MessageType = 211
- MessageType_MessageType_StellarPathPaymentOp MessageType = 212
- MessageType_MessageType_StellarManageOfferOp MessageType = 213
- MessageType_MessageType_StellarCreatePassiveOfferOp MessageType = 214
- MessageType_MessageType_StellarSetOptionsOp MessageType = 215
- MessageType_MessageType_StellarChangeTrustOp MessageType = 216
- MessageType_MessageType_StellarAllowTrustOp MessageType = 217
- MessageType_MessageType_StellarAccountMergeOp MessageType = 218
- // omitted: StellarInflationOp is not a supported operation, would be 219
- MessageType_MessageType_StellarManageDataOp MessageType = 220
- MessageType_MessageType_StellarBumpSequenceOp MessageType = 221
- MessageType_MessageType_StellarSignedTx MessageType = 230
- // TRON
- MessageType_MessageType_TronGetAddress MessageType = 250
- MessageType_MessageType_TronAddress MessageType = 251
- MessageType_MessageType_TronSignTx MessageType = 252
- MessageType_MessageType_TronSignedTx MessageType = 253
- // Cardano
- // dropped Sign/VerifyMessage ids 300-302
- MessageType_MessageType_CardanoSignTx MessageType = 303
- MessageType_MessageType_CardanoTxRequest MessageType = 304
- MessageType_MessageType_CardanoGetPublicKey MessageType = 305
- MessageType_MessageType_CardanoPublicKey MessageType = 306
- MessageType_MessageType_CardanoGetAddress MessageType = 307
- MessageType_MessageType_CardanoAddress MessageType = 308
- MessageType_MessageType_CardanoTxAck MessageType = 309
- MessageType_MessageType_CardanoSignedTx MessageType = 310
- // Ontology
- MessageType_MessageType_OntologyGetAddress MessageType = 350
- MessageType_MessageType_OntologyAddress MessageType = 351
- MessageType_MessageType_OntologyGetPublicKey MessageType = 352
- MessageType_MessageType_OntologyPublicKey MessageType = 353
- MessageType_MessageType_OntologySignTransfer MessageType = 354
- MessageType_MessageType_OntologySignedTransfer MessageType = 355
- MessageType_MessageType_OntologySignWithdrawOng MessageType = 356
- MessageType_MessageType_OntologySignedWithdrawOng MessageType = 357
- MessageType_MessageType_OntologySignOntIdRegister MessageType = 358
- MessageType_MessageType_OntologySignedOntIdRegister MessageType = 359
- MessageType_MessageType_OntologySignOntIdAddAttributes MessageType = 360
- MessageType_MessageType_OntologySignedOntIdAddAttributes MessageType = 361
- // Ripple
- MessageType_MessageType_RippleGetAddress MessageType = 400
- MessageType_MessageType_RippleAddress MessageType = 401
- MessageType_MessageType_RippleSignTx MessageType = 402
- MessageType_MessageType_RippleSignedTx MessageType = 403
- // Monero
- MessageType_MessageType_MoneroTransactionInitRequest MessageType = 501
- MessageType_MessageType_MoneroTransactionInitAck MessageType = 502
- MessageType_MessageType_MoneroTransactionSetInputRequest MessageType = 503
- MessageType_MessageType_MoneroTransactionSetInputAck MessageType = 504
- MessageType_MessageType_MoneroTransactionInputsPermutationRequest MessageType = 505
- MessageType_MessageType_MoneroTransactionInputsPermutationAck MessageType = 506
- MessageType_MessageType_MoneroTransactionInputViniRequest MessageType = 507
- MessageType_MessageType_MoneroTransactionInputViniAck MessageType = 508
- MessageType_MessageType_MoneroTransactionAllInputsSetRequest MessageType = 509
- MessageType_MessageType_MoneroTransactionAllInputsSetAck MessageType = 510
- MessageType_MessageType_MoneroTransactionSetOutputRequest MessageType = 511
- MessageType_MessageType_MoneroTransactionSetOutputAck MessageType = 512
- MessageType_MessageType_MoneroTransactionAllOutSetRequest MessageType = 513
- MessageType_MessageType_MoneroTransactionAllOutSetAck MessageType = 514
- MessageType_MessageType_MoneroTransactionSignInputRequest MessageType = 515
- MessageType_MessageType_MoneroTransactionSignInputAck MessageType = 516
- MessageType_MessageType_MoneroTransactionFinalRequest MessageType = 517
- MessageType_MessageType_MoneroTransactionFinalAck MessageType = 518
- MessageType_MessageType_MoneroKeyImageExportInitRequest MessageType = 530
- MessageType_MessageType_MoneroKeyImageExportInitAck MessageType = 531
- MessageType_MessageType_MoneroKeyImageSyncStepRequest MessageType = 532
- MessageType_MessageType_MoneroKeyImageSyncStepAck MessageType = 533
- MessageType_MessageType_MoneroKeyImageSyncFinalRequest MessageType = 534
- MessageType_MessageType_MoneroKeyImageSyncFinalAck MessageType = 535
- MessageType_MessageType_MoneroGetAddress MessageType = 540
- MessageType_MessageType_MoneroAddress MessageType = 541
- MessageType_MessageType_MoneroGetWatchKey MessageType = 542
- MessageType_MessageType_MoneroWatchKey MessageType = 543
- MessageType_MessageType_DebugMoneroDiagRequest MessageType = 546
- MessageType_MessageType_DebugMoneroDiagAck MessageType = 547
- MessageType_MessageType_MoneroGetTxKeyRequest MessageType = 550
- MessageType_MessageType_MoneroGetTxKeyAck MessageType = 551
- MessageType_MessageType_MoneroLiveRefreshStartRequest MessageType = 552
- MessageType_MessageType_MoneroLiveRefreshStartAck MessageType = 553
- MessageType_MessageType_MoneroLiveRefreshStepRequest MessageType = 554
- MessageType_MessageType_MoneroLiveRefreshStepAck MessageType = 555
- MessageType_MessageType_MoneroLiveRefreshFinalRequest MessageType = 556
- MessageType_MessageType_MoneroLiveRefreshFinalAck MessageType = 557
- // EOS
- MessageType_MessageType_EosGetPublicKey MessageType = 600
- MessageType_MessageType_EosPublicKey MessageType = 601
- MessageType_MessageType_EosSignTx MessageType = 602
- MessageType_MessageType_EosTxActionRequest MessageType = 603
- MessageType_MessageType_EosTxActionAck MessageType = 604
- MessageType_MessageType_EosSignedTx MessageType = 605
- // Binance
- MessageType_MessageType_BinanceGetAddress MessageType = 700
- MessageType_MessageType_BinanceAddress MessageType = 701
- MessageType_MessageType_BinanceGetPublicKey MessageType = 702
- MessageType_MessageType_BinancePublicKey MessageType = 703
- MessageType_MessageType_BinanceSignTx MessageType = 704
- MessageType_MessageType_BinanceTxRequest MessageType = 705
- MessageType_MessageType_BinanceTransferMsg MessageType = 706
- MessageType_MessageType_BinanceOrderMsg MessageType = 707
- MessageType_MessageType_BinanceCancelMsg MessageType = 708
- MessageType_MessageType_BinanceSignedTx MessageType = 709
-)
-
-var MessageType_name = map[int32]string{
- 0: "MessageType_Initialize",
- 1: "MessageType_Ping",
- 2: "MessageType_Success",
- 3: "MessageType_Failure",
- 4: "MessageType_ChangePin",
- 5: "MessageType_WipeDevice",
- 9: "MessageType_GetEntropy",
- 10: "MessageType_Entropy",
- 13: "MessageType_LoadDevice",
- 14: "MessageType_ResetDevice",
- 17: "MessageType_Features",
- 18: "MessageType_PinMatrixRequest",
- 19: "MessageType_PinMatrixAck",
- 20: "MessageType_Cancel",
- 24: "MessageType_ClearSession",
- 25: "MessageType_ApplySettings",
- 26: "MessageType_ButtonRequest",
- 27: "MessageType_ButtonAck",
- 28: "MessageType_ApplyFlags",
- 34: "MessageType_BackupDevice",
- 35: "MessageType_EntropyRequest",
- 36: "MessageType_EntropyAck",
- 41: "MessageType_PassphraseRequest",
- 42: "MessageType_PassphraseAck",
- 77: "MessageType_PassphraseStateRequest",
- 78: "MessageType_PassphraseStateAck",
- 45: "MessageType_RecoveryDevice",
- 46: "MessageType_WordRequest",
- 47: "MessageType_WordAck",
- 55: "MessageType_GetFeatures",
- 63: "MessageType_SetU2FCounter",
- 6: "MessageType_FirmwareErase",
- 7: "MessageType_FirmwareUpload",
- 8: "MessageType_FirmwareRequest",
- 32: "MessageType_SelfTest",
- 11: "MessageType_GetPublicKey",
- 12: "MessageType_PublicKey",
- 15: "MessageType_SignTx",
- 21: "MessageType_TxRequest",
- 22: "MessageType_TxAck",
- 29: "MessageType_GetAddress",
- 30: "MessageType_Address",
- 38: "MessageType_SignMessage",
- 39: "MessageType_VerifyMessage",
- 40: "MessageType_MessageSignature",
- 23: "MessageType_CipherKeyValue",
- 48: "MessageType_CipheredKeyValue",
- 53: "MessageType_SignIdentity",
- 54: "MessageType_SignedIdentity",
- 61: "MessageType_GetECDHSessionKey",
- 62: "MessageType_ECDHSessionKey",
- 71: "MessageType_CosiCommit",
- 72: "MessageType_CosiCommitment",
- 73: "MessageType_CosiSign",
- 74: "MessageType_CosiSignature",
- 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",
- 450: "MessageType_EthereumGetPublicKey",
- 451: "MessageType_EthereumPublicKey",
- 56: "MessageType_EthereumGetAddress",
- 57: "MessageType_EthereumAddress",
- 58: "MessageType_EthereumSignTx",
- 59: "MessageType_EthereumTxRequest",
- 60: "MessageType_EthereumTxAck",
- 64: "MessageType_EthereumSignMessage",
- 65: "MessageType_EthereumVerifyMessage",
- 66: "MessageType_EthereumMessageSignature",
- 67: "MessageType_NEMGetAddress",
- 68: "MessageType_NEMAddress",
- 69: "MessageType_NEMSignTx",
- 70: "MessageType_NEMSignedTx",
- 75: "MessageType_NEMDecryptMessage",
- 76: "MessageType_NEMDecryptedMessage",
- 114: "MessageType_LiskGetAddress",
- 115: "MessageType_LiskAddress",
- 116: "MessageType_LiskSignTx",
- 117: "MessageType_LiskSignedTx",
- 118: "MessageType_LiskSignMessage",
- 119: "MessageType_LiskMessageSignature",
- 120: "MessageType_LiskVerifyMessage",
- 121: "MessageType_LiskGetPublicKey",
- 122: "MessageType_LiskPublicKey",
- 150: "MessageType_TezosGetAddress",
- 151: "MessageType_TezosAddress",
- 152: "MessageType_TezosSignTx",
- 153: "MessageType_TezosSignedTx",
- 154: "MessageType_TezosGetPublicKey",
- 155: "MessageType_TezosPublicKey",
- 202: "MessageType_StellarSignTx",
- 203: "MessageType_StellarTxOpRequest",
- 207: "MessageType_StellarGetAddress",
- 208: "MessageType_StellarAddress",
- 210: "MessageType_StellarCreateAccountOp",
- 211: "MessageType_StellarPaymentOp",
- 212: "MessageType_StellarPathPaymentOp",
- 213: "MessageType_StellarManageOfferOp",
- 214: "MessageType_StellarCreatePassiveOfferOp",
- 215: "MessageType_StellarSetOptionsOp",
- 216: "MessageType_StellarChangeTrustOp",
- 217: "MessageType_StellarAllowTrustOp",
- 218: "MessageType_StellarAccountMergeOp",
- 220: "MessageType_StellarManageDataOp",
- 221: "MessageType_StellarBumpSequenceOp",
- 230: "MessageType_StellarSignedTx",
- 250: "MessageType_TronGetAddress",
- 251: "MessageType_TronAddress",
- 252: "MessageType_TronSignTx",
- 253: "MessageType_TronSignedTx",
- 303: "MessageType_CardanoSignTx",
- 304: "MessageType_CardanoTxRequest",
- 305: "MessageType_CardanoGetPublicKey",
- 306: "MessageType_CardanoPublicKey",
- 307: "MessageType_CardanoGetAddress",
- 308: "MessageType_CardanoAddress",
- 309: "MessageType_CardanoTxAck",
- 310: "MessageType_CardanoSignedTx",
- 350: "MessageType_OntologyGetAddress",
- 351: "MessageType_OntologyAddress",
- 352: "MessageType_OntologyGetPublicKey",
- 353: "MessageType_OntologyPublicKey",
- 354: "MessageType_OntologySignTransfer",
- 355: "MessageType_OntologySignedTransfer",
- 356: "MessageType_OntologySignWithdrawOng",
- 357: "MessageType_OntologySignedWithdrawOng",
- 358: "MessageType_OntologySignOntIdRegister",
- 359: "MessageType_OntologySignedOntIdRegister",
- 360: "MessageType_OntologySignOntIdAddAttributes",
- 361: "MessageType_OntologySignedOntIdAddAttributes",
- 400: "MessageType_RippleGetAddress",
- 401: "MessageType_RippleAddress",
- 402: "MessageType_RippleSignTx",
- 403: "MessageType_RippleSignedTx",
- 501: "MessageType_MoneroTransactionInitRequest",
- 502: "MessageType_MoneroTransactionInitAck",
- 503: "MessageType_MoneroTransactionSetInputRequest",
- 504: "MessageType_MoneroTransactionSetInputAck",
- 505: "MessageType_MoneroTransactionInputsPermutationRequest",
- 506: "MessageType_MoneroTransactionInputsPermutationAck",
- 507: "MessageType_MoneroTransactionInputViniRequest",
- 508: "MessageType_MoneroTransactionInputViniAck",
- 509: "MessageType_MoneroTransactionAllInputsSetRequest",
- 510: "MessageType_MoneroTransactionAllInputsSetAck",
- 511: "MessageType_MoneroTransactionSetOutputRequest",
- 512: "MessageType_MoneroTransactionSetOutputAck",
- 513: "MessageType_MoneroTransactionAllOutSetRequest",
- 514: "MessageType_MoneroTransactionAllOutSetAck",
- 515: "MessageType_MoneroTransactionSignInputRequest",
- 516: "MessageType_MoneroTransactionSignInputAck",
- 517: "MessageType_MoneroTransactionFinalRequest",
- 518: "MessageType_MoneroTransactionFinalAck",
- 530: "MessageType_MoneroKeyImageExportInitRequest",
- 531: "MessageType_MoneroKeyImageExportInitAck",
- 532: "MessageType_MoneroKeyImageSyncStepRequest",
- 533: "MessageType_MoneroKeyImageSyncStepAck",
- 534: "MessageType_MoneroKeyImageSyncFinalRequest",
- 535: "MessageType_MoneroKeyImageSyncFinalAck",
- 540: "MessageType_MoneroGetAddress",
- 541: "MessageType_MoneroAddress",
- 542: "MessageType_MoneroGetWatchKey",
- 543: "MessageType_MoneroWatchKey",
- 546: "MessageType_DebugMoneroDiagRequest",
- 547: "MessageType_DebugMoneroDiagAck",
- 550: "MessageType_MoneroGetTxKeyRequest",
- 551: "MessageType_MoneroGetTxKeyAck",
- 552: "MessageType_MoneroLiveRefreshStartRequest",
- 553: "MessageType_MoneroLiveRefreshStartAck",
- 554: "MessageType_MoneroLiveRefreshStepRequest",
- 555: "MessageType_MoneroLiveRefreshStepAck",
- 556: "MessageType_MoneroLiveRefreshFinalRequest",
- 557: "MessageType_MoneroLiveRefreshFinalAck",
- 600: "MessageType_EosGetPublicKey",
- 601: "MessageType_EosPublicKey",
- 602: "MessageType_EosSignTx",
- 603: "MessageType_EosTxActionRequest",
- 604: "MessageType_EosTxActionAck",
- 605: "MessageType_EosSignedTx",
- 700: "MessageType_BinanceGetAddress",
- 701: "MessageType_BinanceAddress",
- 702: "MessageType_BinanceGetPublicKey",
- 703: "MessageType_BinancePublicKey",
- 704: "MessageType_BinanceSignTx",
- 705: "MessageType_BinanceTxRequest",
- 706: "MessageType_BinanceTransferMsg",
- 707: "MessageType_BinanceOrderMsg",
- 708: "MessageType_BinanceCancelMsg",
- 709: "MessageType_BinanceSignedTx",
-}
-
-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_GetEntropy": 9,
- "MessageType_Entropy": 10,
- "MessageType_LoadDevice": 13,
- "MessageType_ResetDevice": 14,
- "MessageType_Features": 17,
- "MessageType_PinMatrixRequest": 18,
- "MessageType_PinMatrixAck": 19,
- "MessageType_Cancel": 20,
- "MessageType_ClearSession": 24,
- "MessageType_ApplySettings": 25,
- "MessageType_ButtonRequest": 26,
- "MessageType_ButtonAck": 27,
- "MessageType_ApplyFlags": 28,
- "MessageType_BackupDevice": 34,
- "MessageType_EntropyRequest": 35,
- "MessageType_EntropyAck": 36,
- "MessageType_PassphraseRequest": 41,
- "MessageType_PassphraseAck": 42,
- "MessageType_PassphraseStateRequest": 77,
- "MessageType_PassphraseStateAck": 78,
- "MessageType_RecoveryDevice": 45,
- "MessageType_WordRequest": 46,
- "MessageType_WordAck": 47,
- "MessageType_GetFeatures": 55,
- "MessageType_SetU2FCounter": 63,
- "MessageType_FirmwareErase": 6,
- "MessageType_FirmwareUpload": 7,
- "MessageType_FirmwareRequest": 8,
- "MessageType_SelfTest": 32,
- "MessageType_GetPublicKey": 11,
- "MessageType_PublicKey": 12,
- "MessageType_SignTx": 15,
- "MessageType_TxRequest": 21,
- "MessageType_TxAck": 22,
- "MessageType_GetAddress": 29,
- "MessageType_Address": 30,
- "MessageType_SignMessage": 38,
- "MessageType_VerifyMessage": 39,
- "MessageType_MessageSignature": 40,
- "MessageType_CipherKeyValue": 23,
- "MessageType_CipheredKeyValue": 48,
- "MessageType_SignIdentity": 53,
- "MessageType_SignedIdentity": 54,
- "MessageType_GetECDHSessionKey": 61,
- "MessageType_ECDHSessionKey": 62,
- "MessageType_CosiCommit": 71,
- "MessageType_CosiCommitment": 72,
- "MessageType_CosiSign": 73,
- "MessageType_CosiSignature": 74,
- "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,
- "MessageType_EthereumGetPublicKey": 450,
- "MessageType_EthereumPublicKey": 451,
- "MessageType_EthereumGetAddress": 56,
- "MessageType_EthereumAddress": 57,
- "MessageType_EthereumSignTx": 58,
- "MessageType_EthereumTxRequest": 59,
- "MessageType_EthereumTxAck": 60,
- "MessageType_EthereumSignMessage": 64,
- "MessageType_EthereumVerifyMessage": 65,
- "MessageType_EthereumMessageSignature": 66,
- "MessageType_NEMGetAddress": 67,
- "MessageType_NEMAddress": 68,
- "MessageType_NEMSignTx": 69,
- "MessageType_NEMSignedTx": 70,
- "MessageType_NEMDecryptMessage": 75,
- "MessageType_NEMDecryptedMessage": 76,
- "MessageType_LiskGetAddress": 114,
- "MessageType_LiskAddress": 115,
- "MessageType_LiskSignTx": 116,
- "MessageType_LiskSignedTx": 117,
- "MessageType_LiskSignMessage": 118,
- "MessageType_LiskMessageSignature": 119,
- "MessageType_LiskVerifyMessage": 120,
- "MessageType_LiskGetPublicKey": 121,
- "MessageType_LiskPublicKey": 122,
- "MessageType_TezosGetAddress": 150,
- "MessageType_TezosAddress": 151,
- "MessageType_TezosSignTx": 152,
- "MessageType_TezosSignedTx": 153,
- "MessageType_TezosGetPublicKey": 154,
- "MessageType_TezosPublicKey": 155,
- "MessageType_StellarSignTx": 202,
- "MessageType_StellarTxOpRequest": 203,
- "MessageType_StellarGetAddress": 207,
- "MessageType_StellarAddress": 208,
- "MessageType_StellarCreateAccountOp": 210,
- "MessageType_StellarPaymentOp": 211,
- "MessageType_StellarPathPaymentOp": 212,
- "MessageType_StellarManageOfferOp": 213,
- "MessageType_StellarCreatePassiveOfferOp": 214,
- "MessageType_StellarSetOptionsOp": 215,
- "MessageType_StellarChangeTrustOp": 216,
- "MessageType_StellarAllowTrustOp": 217,
- "MessageType_StellarAccountMergeOp": 218,
- "MessageType_StellarManageDataOp": 220,
- "MessageType_StellarBumpSequenceOp": 221,
- "MessageType_StellarSignedTx": 230,
- "MessageType_TronGetAddress": 250,
- "MessageType_TronAddress": 251,
- "MessageType_TronSignTx": 252,
- "MessageType_TronSignedTx": 253,
- "MessageType_CardanoSignTx": 303,
- "MessageType_CardanoTxRequest": 304,
- "MessageType_CardanoGetPublicKey": 305,
- "MessageType_CardanoPublicKey": 306,
- "MessageType_CardanoGetAddress": 307,
- "MessageType_CardanoAddress": 308,
- "MessageType_CardanoTxAck": 309,
- "MessageType_CardanoSignedTx": 310,
- "MessageType_OntologyGetAddress": 350,
- "MessageType_OntologyAddress": 351,
- "MessageType_OntologyGetPublicKey": 352,
- "MessageType_OntologyPublicKey": 353,
- "MessageType_OntologySignTransfer": 354,
- "MessageType_OntologySignedTransfer": 355,
- "MessageType_OntologySignWithdrawOng": 356,
- "MessageType_OntologySignedWithdrawOng": 357,
- "MessageType_OntologySignOntIdRegister": 358,
- "MessageType_OntologySignedOntIdRegister": 359,
- "MessageType_OntologySignOntIdAddAttributes": 360,
- "MessageType_OntologySignedOntIdAddAttributes": 361,
- "MessageType_RippleGetAddress": 400,
- "MessageType_RippleAddress": 401,
- "MessageType_RippleSignTx": 402,
- "MessageType_RippleSignedTx": 403,
- "MessageType_MoneroTransactionInitRequest": 501,
- "MessageType_MoneroTransactionInitAck": 502,
- "MessageType_MoneroTransactionSetInputRequest": 503,
- "MessageType_MoneroTransactionSetInputAck": 504,
- "MessageType_MoneroTransactionInputsPermutationRequest": 505,
- "MessageType_MoneroTransactionInputsPermutationAck": 506,
- "MessageType_MoneroTransactionInputViniRequest": 507,
- "MessageType_MoneroTransactionInputViniAck": 508,
- "MessageType_MoneroTransactionAllInputsSetRequest": 509,
- "MessageType_MoneroTransactionAllInputsSetAck": 510,
- "MessageType_MoneroTransactionSetOutputRequest": 511,
- "MessageType_MoneroTransactionSetOutputAck": 512,
- "MessageType_MoneroTransactionAllOutSetRequest": 513,
- "MessageType_MoneroTransactionAllOutSetAck": 514,
- "MessageType_MoneroTransactionSignInputRequest": 515,
- "MessageType_MoneroTransactionSignInputAck": 516,
- "MessageType_MoneroTransactionFinalRequest": 517,
- "MessageType_MoneroTransactionFinalAck": 518,
- "MessageType_MoneroKeyImageExportInitRequest": 530,
- "MessageType_MoneroKeyImageExportInitAck": 531,
- "MessageType_MoneroKeyImageSyncStepRequest": 532,
- "MessageType_MoneroKeyImageSyncStepAck": 533,
- "MessageType_MoneroKeyImageSyncFinalRequest": 534,
- "MessageType_MoneroKeyImageSyncFinalAck": 535,
- "MessageType_MoneroGetAddress": 540,
- "MessageType_MoneroAddress": 541,
- "MessageType_MoneroGetWatchKey": 542,
- "MessageType_MoneroWatchKey": 543,
- "MessageType_DebugMoneroDiagRequest": 546,
- "MessageType_DebugMoneroDiagAck": 547,
- "MessageType_MoneroGetTxKeyRequest": 550,
- "MessageType_MoneroGetTxKeyAck": 551,
- "MessageType_MoneroLiveRefreshStartRequest": 552,
- "MessageType_MoneroLiveRefreshStartAck": 553,
- "MessageType_MoneroLiveRefreshStepRequest": 554,
- "MessageType_MoneroLiveRefreshStepAck": 555,
- "MessageType_MoneroLiveRefreshFinalRequest": 556,
- "MessageType_MoneroLiveRefreshFinalAck": 557,
- "MessageType_EosGetPublicKey": 600,
- "MessageType_EosPublicKey": 601,
- "MessageType_EosSignTx": 602,
- "MessageType_EosTxActionRequest": 603,
- "MessageType_EosTxActionAck": 604,
- "MessageType_EosSignedTx": 605,
- "MessageType_BinanceGetAddress": 700,
- "MessageType_BinanceAddress": 701,
- "MessageType_BinanceGetPublicKey": 702,
- "MessageType_BinancePublicKey": 703,
- "MessageType_BinanceSignTx": 704,
- "MessageType_BinanceTxRequest": 705,
- "MessageType_BinanceTransferMsg": 706,
- "MessageType_BinanceOrderMsg": 707,
- "MessageType_BinanceCancelMsg": 708,
- "MessageType_BinanceSignedTx": 709,
-}
-
-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 fileDescriptor_4dc296cbfe5ffcd5, []int{0}
-}
-
-var E_WireIn = &proto.ExtensionDesc{
- ExtendedType: (*descriptor.EnumValueOptions)(nil),
- ExtensionType: (*bool)(nil),
- Field: 50002,
- Name: "hw.trezor.messages.wire_in",
- Tag: "varint,50002,opt,name=wire_in",
- Filename: "messages.proto",
-}
-
-var E_WireOut = &proto.ExtensionDesc{
- ExtendedType: (*descriptor.EnumValueOptions)(nil),
- ExtensionType: (*bool)(nil),
- Field: 50003,
- Name: "hw.trezor.messages.wire_out",
- Tag: "varint,50003,opt,name=wire_out",
- Filename: "messages.proto",
-}
-
-var E_WireDebugIn = &proto.ExtensionDesc{
- ExtendedType: (*descriptor.EnumValueOptions)(nil),
- ExtensionType: (*bool)(nil),
- Field: 50004,
- Name: "hw.trezor.messages.wire_debug_in",
- Tag: "varint,50004,opt,name=wire_debug_in",
- Filename: "messages.proto",
-}
-
-var E_WireDebugOut = &proto.ExtensionDesc{
- ExtendedType: (*descriptor.EnumValueOptions)(nil),
- ExtensionType: (*bool)(nil),
- Field: 50005,
- Name: "hw.trezor.messages.wire_debug_out",
- Tag: "varint,50005,opt,name=wire_debug_out",
- Filename: "messages.proto",
-}
-
-var E_WireTiny = &proto.ExtensionDesc{
- ExtendedType: (*descriptor.EnumValueOptions)(nil),
- ExtensionType: (*bool)(nil),
- Field: 50006,
- Name: "hw.trezor.messages.wire_tiny",
- Tag: "varint,50006,opt,name=wire_tiny",
- Filename: "messages.proto",
-}
-
-var E_WireBootloader = &proto.ExtensionDesc{
- ExtendedType: (*descriptor.EnumValueOptions)(nil),
- ExtensionType: (*bool)(nil),
- Field: 50007,
- Name: "hw.trezor.messages.wire_bootloader",
- Tag: "varint,50007,opt,name=wire_bootloader",
- Filename: "messages.proto",
-}
-
-var E_WireNoFsm = &proto.ExtensionDesc{
- ExtendedType: (*descriptor.EnumValueOptions)(nil),
- ExtensionType: (*bool)(nil),
- Field: 50008,
- Name: "hw.trezor.messages.wire_no_fsm",
- Tag: "varint,50008,opt,name=wire_no_fsm",
- Filename: "messages.proto",
-}
-
-func init() {
- proto.RegisterEnum("hw.trezor.messages.MessageType", MessageType_name, MessageType_value)
- proto.RegisterExtension(E_WireIn)
- proto.RegisterExtension(E_WireOut)
- proto.RegisterExtension(E_WireDebugIn)
- proto.RegisterExtension(E_WireDebugOut)
- proto.RegisterExtension(E_WireTiny)
- proto.RegisterExtension(E_WireBootloader)
- proto.RegisterExtension(E_WireNoFsm)
-}
-
-func init() { proto.RegisterFile("messages.proto", fileDescriptor_4dc296cbfe5ffcd5) }
-
-var fileDescriptor_4dc296cbfe5ffcd5 = []byte{
- // 2430 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x9a, 0xd9, 0x73, 0x1c, 0xc5,
- 0x1d, 0xc7, 0xb3, 0xab, 0x11, 0x88, 0xf6, 0x41, 0x23, 0xb0, 0x2d, 0xaf, 0x2f, 0xf9, 0xc0, 0x96,
- 0x2f, 0xd9, 0x10, 0x0c, 0x44, 0x38, 0x60, 0x69, 0xb5, 0x12, 0x8a, 0xb5, 0x5a, 0x97, 0x76, 0xb1,
- 0x1f, 0x5d, 0xa3, 0x9d, 0xd6, 0x6e, 0x97, 0x67, 0x67, 0x86, 0x9e, 0x1e, 0x49, 0xeb, 0xa7, 0x9c,
- 0x3c, 0x13, 0x48, 0xc0, 0xb9, 0xa9, 0xa4, 0x2a, 0x21, 0x57, 0x85, 0x1c, 0x4e, 0x25, 0x55, 0x39,
- 0x08, 0x24, 0x2f, 0xc9, 0x43, 0x52, 0x9c, 0x86, 0x40, 0xee, 0x90, 0xe4, 0x0f, 0xc8, 0xc5, 0x91,
- 0xa4, 0x7a, 0xa6, 0xbb, 0xe7, 0xd8, 0xdf, 0xae, 0x36, 0x6f, 0x58, 0xf3, 0xf9, 0x7d, 0x7f, 0x47,
- 0xff, 0xfa, 0x37, 0xdd, 0xb3, 0xa0, 0xcd, 0x2d, 0xe2, 0xfb, 0x66, 0x83, 0xf8, 0xe3, 0x1e, 0x73,
- 0xb9, 0x3b, 0x3c, 0xdc, 0x5c, 0x1d, 0xe7, 0x8c, 0x5c, 0x76, 0xd9, 0xb8, 0x7a, 0x52, 0x18, 0x6d,
- 0xb8, 0x6e, 0xc3, 0x26, 0x27, 0x42, 0x62, 0x29, 0x58, 0x3e, 0x61, 0x11, 0xbf, 0xce, 0xa8, 0xc7,
- 0x5d, 0x16, 0x59, 0x1d, 0xf9, 0xfe, 0x7d, 0x68, 0x43, 0x39, 0xc2, 0x6b, 0x6d, 0x8f, 0x0c, 0x1f,
- 0x40, 0x5b, 0x13, 0xff, 0xbc, 0x38, 0xe7, 0x50, 0x4e, 0x4d, 0x9b, 0x5e, 0x26, 0xf8, 0x5d, 0x85,
- 0xa1, 0x87, 0xaf, 0x8e, 0xe4, 0x9e, 0xba, 0x3a, 0x92, 0x1b, 0x2e, 0x20, 0x9c, 0xa4, 0xce, 0x51,
- 0xa7, 0x81, 0x73, 0x05, 0x43, 0x3c, 0x1f, 0xde, 0x85, 0x6e, 0x4e, 0x3e, 0xab, 0x06, 0xf5, 0x3a,
- 0xf1, 0x7d, 0x9c, 0x2f, 0x18, 0x57, 0x80, 0xc7, 0x33, 0x26, 0xb5, 0x03, 0x46, 0xf0, 0x80, 0x7c,
- 0xbc, 0x07, 0x6d, 0x49, 0x3e, 0x2e, 0x36, 0x4d, 0xa7, 0x41, 0xce, 0x51, 0x07, 0x1b, 0x52, 0x7e,
- 0x34, 0x1d, 0xe0, 0x05, 0xea, 0x91, 0x69, 0xb2, 0x42, 0xeb, 0x04, 0x0f, 0xc2, 0xc4, 0x2c, 0xe1,
- 0x25, 0x87, 0x33, 0xd7, 0x6b, 0xe3, 0x1b, 0xe0, 0x10, 0xd5, 0x63, 0x24, 0x63, 0xc8, 0x08, 0xcc,
- 0xbb, 0xa6, 0x25, 0x5d, 0x6c, 0x92, 0x02, 0x7b, 0xd1, 0xb6, 0x24, 0xb1, 0x48, 0x7c, 0xc2, 0x25,
- 0xb2, 0x59, 0x22, 0xbb, 0xd1, 0x2d, 0xa9, 0x3c, 0x89, 0xc9, 0x03, 0x46, 0x7c, 0x7c, 0x93, 0x74,
- 0x72, 0x10, 0xed, 0xcc, 0x94, 0xb0, 0x6c, 0x72, 0x46, 0xd7, 0x16, 0xc9, 0x83, 0x01, 0xf1, 0x39,
- 0x1e, 0x96, 0xdc, 0x11, 0x34, 0x02, 0x72, 0x93, 0xf5, 0x4b, 0xf8, 0xe6, 0xc2, 0x46, 0xb5, 0x24,
- 0x4f, 0x47, 0x81, 0x0f, 0xa7, 0x8a, 0x67, 0x3a, 0x75, 0x62, 0xe3, 0x5b, 0x12, 0x0b, 0xb7, 0x2f,
- 0xad, 0x56, 0xb4, 0x89, 0xc9, 0xaa, 0xc4, 0xf7, 0xa9, 0xeb, 0xe0, 0x11, 0x19, 0xf9, 0x7e, 0xb4,
- 0x3d, 0xc9, 0x4c, 0x7a, 0x9e, 0xdd, 0xae, 0x12, 0xce, 0xa9, 0xd3, 0xf0, 0xf1, 0x76, 0x18, 0x9a,
- 0x0a, 0x38, 0x77, 0x1d, 0x15, 0x7b, 0x41, 0xc6, 0x7e, 0x28, 0xbd, 0x98, 0x11, 0x24, 0x02, 0xdf,
- 0xd1, 0x11, 0xf8, 0xd6, 0x0e, 0x97, 0x33, 0xb6, 0xd9, 0xf0, 0xf1, 0x4e, 0xe9, 0x2f, 0x13, 0xf8,
- 0x94, 0x59, 0xbf, 0x14, 0x78, 0xb2, 0xe4, 0xfb, 0x24, 0x73, 0x00, 0x15, 0x80, 0x65, 0x55, 0x41,
- 0xed, 0x87, 0x57, 0x57, 0x52, 0x22, 0xaa, 0x03, 0x52, 0xe7, 0x10, 0xda, 0x95, 0x2a, 0xb9, 0xe9,
- 0xfb, 0x5e, 0x93, 0x99, 0x3e, 0x51, 0x52, 0x87, 0xa5, 0xd4, 0xd1, 0x74, 0x11, 0x62, 0x50, 0xa8,
- 0x1d, 0xc9, 0xe4, 0x78, 0x0c, 0xed, 0x83, 0xe1, 0x2a, 0x37, 0xb9, 0x96, 0x2e, 0x4b, 0xe9, 0x93,
- 0x68, 0x77, 0x0f, 0x5a, 0xe8, 0x2f, 0x64, 0xf4, 0x33, 0xd9, 0x2f, 0x92, 0xba, 0xbb, 0x42, 0x58,
- 0x5b, 0xd6, 0xe8, 0x38, 0xdc, 0xb9, 0x17, 0x5c, 0x66, 0x29, 0xd7, 0xe3, 0xf0, 0x0e, 0x15, 0x88,
- 0xf0, 0x77, 0x02, 0x56, 0x98, 0x25, 0x5c, 0xf7, 0xf6, 0x5d, 0x70, 0x73, 0x54, 0x09, 0x7f, 0xe0,
- 0xf6, 0x99, 0xa2, 0x1b, 0x38, 0x9c, 0x30, 0x7c, 0x9f, 0xae, 0x72, 0x0a, 0x9a, 0xa1, 0xac, 0xb5,
- 0x6a, 0x32, 0x52, 0x12, 0x49, 0xe2, 0xeb, 0xa2, 0x9e, 0xfd, 0x9e, 0x00, 0xc7, 0xd2, 0x89, 0x29,
- 0xf0, 0x01, 0xcf, 0x76, 0x4d, 0x0b, 0x5f, 0x9f, 0x20, 0x0f, 0xa3, 0x1d, 0x10, 0xa9, 0x12, 0x1c,
- 0x2a, 0x0c, 0x5d, 0x51, 0xe8, 0xbe, 0xf4, 0xf6, 0xac, 0x12, 0x7b, 0xb9, 0x26, 0x98, 0xd1, 0x84,
- 0x5c, 0xa6, 0xe7, 0x66, 0x09, 0x3f, 0x17, 0x2c, 0xd9, 0xb4, 0x7e, 0x96, 0xb4, 0xf1, 0x06, 0x99,
- 0x45, 0x66, 0x5e, 0xc5, 0xc0, 0x46, 0x59, 0xcd, 0x9d, 0xe9, 0x3d, 0x59, 0xa5, 0x0d, 0xa7, 0xb6,
- 0x86, 0x6f, 0x84, 0xcd, 0x6b, 0x7a, 0xfb, 0x6f, 0x91, 0xe6, 0x3b, 0xd0, 0x4d, 0x69, 0x40, 0x2c,
- 0xc5, 0xd6, 0xae, 0x93, 0x6e, 0xd2, 0xb2, 0x98, 0x98, 0xb6, 0xbb, 0xe0, 0x49, 0xa7, 0x1e, 0xef,
- 0x96, 0xea, 0x99, 0xb5, 0x14, 0xc1, 0xc9, 0x7f, 0xe3, 0x83, 0xf0, 0x5a, 0x9e, 0x27, 0x8c, 0x2e,
- 0xb7, 0x15, 0x74, 0x48, 0x42, 0x99, 0x61, 0x26, 0xff, 0x5b, 0xc8, 0x85, 0x9d, 0x81, 0xc7, 0xa4,
- 0xbf, 0x4c, 0x8f, 0x16, 0xa9, 0xd7, 0x24, 0xec, 0x2c, 0x69, 0x9f, 0x37, 0xed, 0x80, 0xe0, 0x6d,
- 0xb0, 0x5a, 0x44, 0x11, 0x4b, 0x73, 0x27, 0xa5, 0x5a, 0x66, 0x7d, 0x84, 0xbb, 0x39, 0x8b, 0x38,
- 0x9c, 0xf2, 0x36, 0x3e, 0x05, 0xcf, 0x04, 0xc1, 0x10, 0x4b, 0x53, 0x77, 0xea, 0x41, 0xb5, 0x2b,
- 0xfb, 0xca, 0x28, 0x4e, 0xdf, 0x2f, 0x07, 0xa3, 0x58, 0xcd, 0xf7, 0x76, 0x19, 0x31, 0x69, 0xea,
- 0x5e, 0x78, 0xc4, 0x14, 0x5d, 0x9f, 0x16, 0xdd, 0x56, 0x8b, 0x72, 0x3c, 0x0b, 0xeb, 0xc4, 0x44,
- 0x8b, 0x38, 0x1c, 0xdf, 0x2f, 0x75, 0x32, 0xef, 0x10, 0x41, 0x89, 0x04, 0xf0, 0x1c, 0xbc, 0x36,
- 0xea, 0x79, 0x54, 0xf3, 0xf7, 0x49, 0x91, 0x13, 0xe9, 0xdc, 0xa6, 0xc9, 0x52, 0xd0, 0x98, 0xa7,
- 0xce, 0xa5, 0x69, 0x52, 0xa7, 0xe1, 0xdc, 0xb7, 0x0a, 0x1b, 0x9f, 0x48, 0x0e, 0x92, 0xa3, 0x5d,
- 0x0c, 0x66, 0x09, 0x0f, 0x87, 0x0f, 0x26, 0x85, 0x21, 0x65, 0x90, 0x4d, 0x44, 0xc3, 0x11, 0xb9,
- 0x5c, 0x30, 0x9e, 0x04, 0x02, 0x4d, 0x50, 0xae, 0x87, 0x1b, 0x05, 0xe3, 0x09, 0x60, 0x39, 0x35,
- 0x34, 0xef, 0x36, 0x70, 0x53, 0x0a, 0x1d, 0x46, 0x7b, 0x40, 0xa6, 0x4c, 0x5a, 0x2e, 0x6b, 0x2f,
- 0x12, 0xd3, 0xc2, 0x8e, 0x94, 0xbb, 0x35, 0x3d, 0x0c, 0x32, 0x28, 0x76, 0xa5, 0xe2, 0x11, 0x34,
- 0xda, 0x03, 0xbb, 0xc0, 0x28, 0x27, 0xd8, 0x93, 0x92, 0xdd, 0xbc, 0xcf, 0xd8, 0xa6, 0xdf, 0x8c,
- 0x06, 0xd7, 0x83, 0x12, 0x3d, 0x9a, 0x96, 0x2d, 0x71, 0xd1, 0xc2, 0x41, 0x2b, 0x35, 0x43, 0x9e,
- 0x19, 0x90, 0xeb, 0x38, 0x96, 0xae, 0xb8, 0x82, 0x63, 0xf2, 0x59, 0x75, 0x3c, 0x1a, 0x4b, 0xbf,
- 0x16, 0x12, 0xb2, 0x6a, 0x6b, 0xdf, 0x2d, 0x35, 0x33, 0xe9, 0x2b, 0x52, 0x61, 0xef, 0x81, 0x77,
- 0xa4, 0xc2, 0xe4, 0x98, 0x9a, 0x80, 0xdf, 0x88, 0x8a, 0x8a, 0xc7, 0xd5, 0x3d, 0x52, 0x2e, 0xb3,
- 0xd0, 0x31, 0x28, 0xc6, 0xd6, 0x69, 0xa9, 0x96, 0x29, 0x63, 0xd2, 0xa7, 0x1a, 0x2c, 0x67, 0x24,
- 0x7a, 0x14, 0xed, 0x85, 0xd0, 0xf4, 0x14, 0x9a, 0x94, 0xf0, 0x38, 0x3a, 0x00, 0xc1, 0x1d, 0xd3,
- 0x68, 0x0a, 0x0e, 0x76, 0xa1, 0x54, 0x4e, 0xd4, 0xb1, 0x08, 0xcf, 0xd8, 0x85, 0x52, 0x59, 0x11,
- 0xd3, 0xf0, 0x91, 0x75, 0xa1, 0x54, 0x96, 0xd5, 0x2b, 0xc1, 0x6f, 0x4c, 0x09, 0x10, 0xab, 0xb6,
- 0x86, 0x67, 0xe0, 0x01, 0xb4, 0x50, 0x2a, 0x4f, 0x93, 0x3a, 0x6b, 0x7b, 0x5c, 0xe5, 0x78, 0x16,
- 0xae, 0x5d, 0x0c, 0x12, 0x4b, 0xa1, 0xf3, 0xf0, 0xd2, 0xce, 0x53, 0xff, 0x52, 0x22, 0x3f, 0x06,
- 0x07, 0x27, 0x28, 0x85, 0xf8, 0x5d, 0xce, 0xc3, 0xd4, 0xbf, 0x24, 0x33, 0xe4, 0xf0, 0xe9, 0x4c,
- 0x11, 0x61, 0x8a, 0x81, 0x54, 0xc9, 0x34, 0xa4, 0x62, 0x54, 0xd4, 0x2b, 0x52, 0x2a, 0xb3, 0x1f,
- 0x05, 0xd6, 0xb1, 0x80, 0xab, 0x70, 0xd5, 0x04, 0x9b, 0xee, 0x8c, 0x35, 0xf8, 0x8d, 0x22, 0x4b,
- 0x11, 0xef, 0xaf, 0x36, 0x3c, 0x50, 0x05, 0x17, 0x43, 0x97, 0xf5, 0xc9, 0x3d, 0x95, 0x48, 0x8d,
- 0x5c, 0x76, 0xfd, 0x44, 0x61, 0x1f, 0xcb, 0x69, 0xb1, 0x91, 0x0e, 0x4e, 0x41, 0x8f, 0xe7, 0xf4,
- 0x3b, 0x6c, 0x5b, 0x07, 0x24, 0x8b, 0x7b, 0x25, 0xa7, 0x5f, 0x16, 0xdb, 0x41, 0x26, 0x2c, 0xef,
- 0x27, 0x72, 0x7a, 0x34, 0xec, 0x82, 0xc2, 0x8a, 0xe3, 0xff, 0x64, 0x4e, 0x8f, 0x86, 0x42, 0x07,
- 0x19, 0x63, 0x9f, 0xca, 0xe9, 0xfe, 0x49, 0x9f, 0xe2, 0x38, 0xb1, 0x6d, 0x93, 0xc9, 0xe0, 0x7e,
- 0x9e, 0xd3, 0x0d, 0xb9, 0x1b, 0xa0, 0x6a, 0x6b, 0x15, 0x4f, 0xcd, 0x86, 0x5f, 0x74, 0x89, 0x50,
- 0xa2, 0x89, 0xd2, 0xfd, 0xb2, 0x4b, 0x84, 0x92, 0x54, 0xd8, 0xaf, 0x94, 0xe0, 0xf1, 0xf4, 0x91,
- 0x5a, 0x62, 0x45, 0x46, 0xc2, 0x23, 0x72, 0x5d, 0x1c, 0x38, 0x2b, 0x1e, 0x7e, 0x2e, 0xa7, 0xa7,
- 0xd8, 0x4e, 0x00, 0x3f, 0x67, 0xb6, 0xc5, 0x4b, 0xb7, 0xe2, 0xe1, 0xe7, 0x73, 0x7a, 0xea, 0x8c,
- 0x82, 0x20, 0x6f, 0xc6, 0xf0, 0x0b, 0xbd, 0xe1, 0xb2, 0xe9, 0x98, 0x0d, 0x52, 0x59, 0x5e, 0x26,
- 0xac, 0xe2, 0xe1, 0x17, 0x15, 0x7c, 0x3b, 0x3a, 0xd4, 0x35, 0x62, 0x71, 0xc6, 0xa7, 0x2b, 0xda,
- 0xe6, 0xa5, 0x9c, 0xde, 0x11, 0x7b, 0xa0, 0x75, 0x20, 0xbc, 0xe2, 0x71, 0xea, 0x3a, 0x7e, 0xc5,
- 0xc3, 0x2f, 0xf7, 0x0e, 0x26, 0xba, 0x45, 0xd7, 0x58, 0xe0, 0x8b, 0xc8, 0xaf, 0xf5, 0x16, 0x9e,
- 0xb4, 0x6d, 0x77, 0x55, 0xb1, 0xaf, 0x28, 0xf6, 0x58, 0x7a, 0x10, 0x2b, 0x36, 0x2a, 0x72, 0x99,
- 0xb0, 0x06, 0xa9, 0x78, 0xf8, 0xd5, 0xde, 0xca, 0x51, 0x4d, 0xa6, 0x4d, 0x6e, 0x56, 0x3c, 0xfc,
- 0x5a, 0x6f, 0xe5, 0xa9, 0xa0, 0xe5, 0x55, 0x45, 0x03, 0x39, 0x75, 0xa1, 0xfc, 0x7a, 0x4e, 0xef,
- 0xe4, 0x1d, 0x5d, 0x9a, 0x32, 0xdc, 0x0d, 0x6f, 0xe4, 0xf4, 0xb4, 0x49, 0xf7, 0x38, 0x73, 0x9d,
- 0x44, 0xa3, 0xbd, 0x99, 0xd3, 0x83, 0x6b, 0x5b, 0x16, 0x53, 0xcc, 0x5b, 0x39, 0x7d, 0x48, 0xde,
- 0x9a, 0x65, 0xe4, 0x26, 0x78, 0xbb, 0xdb, 0x56, 0x97, 0x48, 0x18, 0xd2, 0x3b, 0x5d, 0xf6, 0x53,
- 0xd1, 0x64, 0x96, 0xe9, 0xb8, 0x52, 0xea, 0x1b, 0x79, 0xb8, 0x49, 0x25, 0x15, 0xbf, 0x69, 0x9f,
- 0xca, 0xeb, 0x0f, 0x03, 0x7b, 0x00, 0x30, 0xb5, 0xe3, 0xbf, 0xd9, 0x5b, 0x34, 0x06, 0xbf, 0x95,
- 0x87, 0xb7, 0x68, 0x2c, 0xaa, 0xaa, 0xf2, 0xed, 0x3c, 0xbc, 0x45, 0x25, 0xa9, 0xb0, 0xef, 0xe4,
- 0xf5, 0x3b, 0x76, 0x04, 0x4c, 0x47, 0x9c, 0x07, 0xae, 0xe6, 0xe1, 0x45, 0x4d, 0x54, 0x26, 0xac,
- 0xe0, 0x77, 0x95, 0x58, 0x66, 0xd6, 0x54, 0x1c, 0xee, 0xda, 0x6e, 0xa3, 0x9d, 0x08, 0xef, 0x37,
- 0x5d, 0x24, 0x15, 0xaa, 0xb8, 0xdf, 0xe6, 0xf5, 0x15, 0x7e, 0xb4, 0x8b, 0x64, 0x5c, 0x9d, 0xdf,
- 0xe5, 0xe1, 0x73, 0x9a, 0x82, 0x63, 0xf2, 0xf7, 0xeb, 0xc8, 0x86, 0x8b, 0xcd, 0x4c, 0xc7, 0x5f,
- 0x26, 0x0c, 0xff, 0x41, 0xc9, 0x66, 0xc6, 0x58, 0x12, 0x26, 0x96, 0xc6, 0xff, 0xa8, 0xb4, 0xc7,
- 0xd1, 0xfe, 0x6e, 0xf8, 0x05, 0xca, 0x9b, 0x16, 0x33, 0x57, 0x2b, 0x4e, 0x03, 0xff, 0x49, 0xc9,
- 0x9f, 0x44, 0xb7, 0x76, 0x97, 0x4f, 0x5a, 0xfc, 0x39, 0xaf, 0x3f, 0x3e, 0x74, 0xb5, 0xa8, 0x38,
- 0x7c, 0xce, 0x5a, 0x24, 0x0d, 0xea, 0x8b, 0xbb, 0xfc, 0x1b, 0x79, 0x78, 0xae, 0xa5, 0x7d, 0xa4,
- 0x6d, 0xfe, 0xa2, 0xbc, 0x9c, 0x42, 0x47, 0x7a, 0x7a, 0x99, 0xb4, 0xac, 0x49, 0xce, 0x19, 0x5d,
- 0x0a, 0x38, 0xf1, 0xf1, 0x5f, 0x95, 0xab, 0xbb, 0xd0, 0xb1, 0x75, 0x5c, 0xa5, 0x0d, 0xff, 0x96,
- 0xd7, 0xa7, 0x85, 0xd4, 0x26, 0x58, 0xa4, 0x9e, 0x67, 0x93, 0x44, 0xef, 0x3c, 0x3c, 0x00, 0xbf,
- 0x6f, 0x23, 0x50, 0x51, 0x1f, 0x1d, 0x80, 0x3b, 0x3b, 0xa2, 0xe4, 0x6e, 0x7e, 0x64, 0x00, 0xde,
- 0x25, 0x31, 0x14, 0x36, 0xf6, 0xa3, 0x0a, 0x7b, 0x37, 0x1a, 0x4b, 0xdd, 0x9f, 0x5d, 0x87, 0x30,
- 0x37, 0x5c, 0x79, 0xb3, 0x2e, 0x66, 0xfc, 0x9c, 0x43, 0xb9, 0x1a, 0x00, 0x7f, 0x1f, 0xd0, 0x17,
- 0xbb, 0x03, 0xeb, 0x1a, 0x89, 0x6d, 0xf6, 0x0f, 0x65, 0x90, 0xa9, 0x5c, 0x87, 0x41, 0x95, 0xf0,
- 0x39, 0xc7, 0x0b, 0xb4, 0xa7, 0x7f, 0x2a, 0xc3, 0xf5, 0xc2, 0x53, 0x86, 0xc2, 0xdb, 0xbf, 0x94,
- 0xd1, 0x19, 0x74, 0x6a, 0x9d, 0xf0, 0xbc, 0x80, 0xfb, 0xe7, 0x08, 0x6b, 0x05, 0xdc, 0x14, 0x7f,
- 0x50, 0x6e, 0xff, 0xad, 0x14, 0x4e, 0xa3, 0xdb, 0xfe, 0x3f, 0x05, 0xe1, 0xff, 0x4d, 0x65, 0x7d,
- 0x37, 0x3a, 0xbe, 0xbe, 0xf5, 0x79, 0xea, 0x50, 0xe5, 0xf7, 0x2d, 0x65, 0x79, 0x07, 0x3a, 0xdc,
- 0x9f, 0xa5, 0xf0, 0xf7, 0xb6, 0xb2, 0xba, 0x07, 0x9d, 0xec, 0x69, 0x35, 0x69, 0xdb, 0x51, 0xc0,
- 0x55, 0xa2, 0x2b, 0xfc, 0x4e, 0xbf, 0x4b, 0x93, 0x34, 0x16, 0x5e, 0xff, 0xd3, 0x6f, 0x96, 0xe2,
- 0x98, 0x10, 0xf0, 0xc4, 0xa2, 0xfe, 0xb7, 0xdf, 0x2c, 0xb5, 0xa5, 0xf0, 0xf7, 0x7e, 0xa3, 0x4f,
- 0x7f, 0x93, 0xb6, 0x5d, 0x09, 0x78, 0x22, 0xc5, 0x0f, 0x18, 0x7d, 0xfa, 0xd3, 0x96, 0xc2, 0xdf,
- 0x07, 0xfb, 0xf5, 0x17, 0x7e, 0xf4, 0x49, 0x36, 0xed, 0x87, 0xfa, 0xf5, 0xa7, 0x2d, 0x85, 0xbf,
- 0x0f, 0xf7, 0x6b, 0x35, 0x43, 0x1d, 0xd3, 0x56, 0xbe, 0x3e, 0x62, 0xc0, 0x03, 0x13, 0xb6, 0x12,
- 0x7e, 0x1e, 0x52, 0x16, 0x77, 0xa2, 0xa3, 0x9d, 0x16, 0x67, 0x49, 0x7b, 0xae, 0x65, 0x36, 0x48,
- 0x69, 0xcd, 0x73, 0x19, 0x4f, 0x6e, 0xfa, 0x47, 0x94, 0x5d, 0x66, 0xd0, 0x76, 0xb3, 0x13, 0xbe,
- 0x1e, 0xed, 0x99, 0x93, 0xb2, 0xa9, 0xb6, 0x9d, 0x7a, 0x95, 0x13, 0x7d, 0x5a, 0xff, 0x58, 0xcf,
- 0x9c, 0xb2, 0x56, 0xc2, 0xcf, 0xc7, 0x0d, 0x78, 0xa0, 0x77, 0x5a, 0xa4, 0x8a, 0xf7, 0x98, 0x32,
- 0xbb, 0x0d, 0x1d, 0xec, 0xc3, 0x4c, 0x78, 0x7a, 0xdc, 0x80, 0x47, 0x79, 0x64, 0x92, 0x18, 0xe5,
- 0x9f, 0x36, 0xe0, 0x51, 0x1e, 0x81, 0x8a, 0xfa, 0x8c, 0x01, 0x9f, 0x7a, 0xb4, 0xdc, 0x05, 0x93,
- 0xd7, 0x9b, 0xe2, 0xbd, 0xfe, 0x59, 0x03, 0x9e, 0xe7, 0x11, 0xa9, 0xb1, 0xcf, 0x19, 0xf0, 0xc5,
- 0x24, 0xfc, 0x50, 0x14, 0xb1, 0xd3, 0xd4, 0x6c, 0xa8, 0x0a, 0x7c, 0xde, 0x80, 0xef, 0x50, 0x19,
- 0x5c, 0x64, 0xfe, 0x05, 0xa5, 0x9c, 0x39, 0x2d, 0xeb, 0x50, 0x6b, 0x6b, 0x67, 0x89, 0xfe, 0xa9,
- 0xe3, 0x8b, 0x06, 0x7c, 0x60, 0x49, 0xd3, 0x42, 0xf7, 0x4b, 0x3d, 0x7b, 0x64, 0x9e, 0xae, 0x90,
- 0x45, 0xb2, 0xcc, 0x88, 0xdf, 0xac, 0x72, 0x93, 0xe9, 0x6e, 0x7c, 0xd2, 0x80, 0x8f, 0x16, 0xb0,
- 0x95, 0xf0, 0xf3, 0x65, 0xa3, 0xd7, 0xab, 0x24, 0x65, 0x11, 0xb7, 0xe2, 0x57, 0x94, 0x1b, 0xf0,
- 0x4d, 0x97, 0x31, 0x12, 0x5e, 0xbe, 0xda, 0x6f, 0x36, 0xa9, 0x46, 0xfc, 0x5a, 0xbf, 0xd9, 0xe8,
- 0x3e, 0xfc, 0xba, 0x01, 0x7f, 0x0a, 0x28, 0x65, 0x6e, 0xdc, 0xd7, 0x0c, 0xf8, 0x7e, 0x50, 0x4a,
- 0xde, 0xb7, 0x5f, 0x31, 0xf4, 0x67, 0x96, 0x2d, 0x19, 0x48, 0x9e, 0x26, 0x5e, 0xed, 0xd2, 0x27,
- 0x25, 0xd7, 0x17, 0x07, 0xe9, 0xe4, 0xbb, 0xf3, 0xd7, 0x06, 0x7c, 0xff, 0x49, 0xa0, 0x22, 0x81,
- 0xd7, 0x0c, 0xf8, 0xfe, 0x53, 0x4a, 0x7c, 0x58, 0x78, 0xbd, 0xcb, 0xee, 0x98, 0xa2, 0x8e, 0xe9,
- 0xd4, 0x93, 0x07, 0xa7, 0x1f, 0x0c, 0xc2, 0xbb, 0x43, 0x92, 0x0a, 0xfb, 0xe1, 0x20, 0x7c, 0x73,
- 0x89, 0x05, 0xe3, 0xa2, 0xfc, 0x68, 0x10, 0xbe, 0xb9, 0x48, 0x36, 0x06, 0x7f, 0x3c, 0x08, 0xdf,
- 0xae, 0x24, 0x28, 0x2b, 0xf8, 0x74, 0x6f, 0xb9, 0xf8, 0x76, 0xf5, 0x93, 0x41, 0xf8, 0xaa, 0xa1,
- 0x40, 0x79, 0x18, 0x2f, 0xfb, 0x0d, 0xfc, 0xcc, 0x20, 0x7c, 0xd5, 0x90, 0x68, 0x85, 0x59, 0x11,
- 0xf7, 0x6c, 0x6f, 0xdf, 0xd1, 0x8f, 0xb4, 0x02, 0xfc, 0x69, 0x6f, 0x41, 0xbd, 0x30, 0x3f, 0x93,
- 0x31, 0x4e, 0x9c, 0x46, 0xd7, 0xaf, 0x52, 0x46, 0x2e, 0x52, 0x67, 0x78, 0xef, 0x78, 0xf4, 0x4b,
- 0xff, 0xb8, 0xfa, 0xa5, 0x7f, 0xbc, 0xe4, 0x04, 0xad, 0xf0, 0xe7, 0x12, 0xf9, 0x95, 0x60, 0xe4,
- 0xb9, 0x87, 0x06, 0x46, 0x73, 0x63, 0x43, 0x8b, 0xd7, 0x09, 0x9b, 0x39, 0x67, 0xe2, 0x5e, 0x34,
- 0x14, 0x5a, 0xbb, 0x01, 0xef, 0xc7, 0xfc, 0x79, 0x69, 0x1e, 0xba, 0xac, 0x04, 0x7c, 0x62, 0x16,
- 0x6d, 0x0a, 0xed, 0x2d, 0x31, 0xad, 0xfa, 0x8c, 0xe1, 0x05, 0x29, 0xb2, 0x41, 0x58, 0x86, 0x63,
- 0x6e, 0xce, 0x99, 0x98, 0x43, 0x9b, 0x13, 0x42, 0x7d, 0x86, 0xf3, 0xa2, 0x54, 0xda, 0xa8, 0x95,
- 0x44, 0x4c, 0x67, 0xd0, 0x0d, 0xa1, 0x14, 0xa7, 0x4e, 0xbb, 0x1f, 0x95, 0x97, 0xa4, 0x4a, 0x58,
- 0x89, 0x1a, 0x75, 0xda, 0x13, 0xf3, 0xe8, 0xc6, 0x50, 0x61, 0xc9, 0x75, 0xb9, 0xed, 0x9a, 0x16,
- 0x61, 0xfd, 0xe8, 0xbc, 0x2c, 0x75, 0xc2, 0x44, 0xa6, 0xb4, 0xe9, 0x44, 0x11, 0x85, 0x99, 0x5e,
- 0x74, 0xdc, 0x8b, 0xcb, 0x7e, 0xab, 0x1f, 0xa5, 0x6b, 0x52, 0x29, 0xcc, 0x63, 0xc1, 0x9d, 0xf1,
- 0x5b, 0x53, 0x77, 0xa0, 0xfd, 0x75, 0xb7, 0x35, 0xee, 0x9b, 0xdc, 0xf5, 0x9b, 0xd4, 0x36, 0x97,
- 0x7c, 0xf5, 0xff, 0x79, 0xd8, 0x74, 0x49, 0x4b, 0x4d, 0x6d, 0xaa, 0x85, 0x7f, 0x94, 0x9d, 0xf3,
- 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x69, 0x67, 0x5d, 0x1f, 0x22, 0x00, 0x00,
-}
diff --git a/accounts/usbwallet/trezor/messages.proto b/accounts/usbwallet/trezor/messages.proto
deleted file mode 100644
index 3e0482e..0000000
--- a/accounts/usbwallet/trezor/messages.proto
+++ /dev/null
@@ -1,264 +0,0 @@
-// This file originates from the SatoshiLabs Trezor `common` repository at:
-// https://github.com/trezor/trezor-common/blob/master/protob/messages.proto
-// dated 28.05.2019, commit 893fd219d4a01bcffa0cd9cfa631856371ec5aa9.
-
-syntax = "proto2";
-package hw.trezor.messages;
-
-/**
- * Messages for TREZOR communication
- */
-
-// Sugar for easier handling in Java
-option java_package = "com.satoshilabs.trezor.lib.protobuf";
-option java_outer_classname = "TrezorMessage";
-
-import "google/protobuf/descriptor.proto";
-
-/**
- * Options for specifying message direction and type of wire (normal/debug)
- */
-extend google.protobuf.EnumValueOptions {
- optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR
- optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC
- optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR
- optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC
- optional bool wire_tiny = 50006; // message is handled by TREZOR when the USB stack is in tiny mode
- optional bool wire_bootloader = 50007; // message is only handled by TREZOR Bootloader
- optional bool wire_no_fsm = 50008; // message is not handled by TREZOR unless the USB stack is in tiny mode
-}
-
-/**
- * Mapping between TREZOR wire identifier (uint) and a protobuf message
- */
-enum MessageType {
-
- // Management
- MessageType_Initialize = 0 [(wire_in) = true, (wire_tiny) = true];
- MessageType_Ping = 1 [(wire_in) = true];
- MessageType_Success = 2 [(wire_out) = true];
- MessageType_Failure = 3 [(wire_out) = true];
- MessageType_ChangePin = 4 [(wire_in) = true];
- MessageType_WipeDevice = 5 [(wire_in) = true];
- MessageType_GetEntropy = 9 [(wire_in) = true];
- MessageType_Entropy = 10 [(wire_out) = true];
- MessageType_LoadDevice = 13 [(wire_in) = true];
- MessageType_ResetDevice = 14 [(wire_in) = true];
- MessageType_Features = 17 [(wire_out) = true];
- MessageType_PinMatrixRequest = 18 [(wire_out) = true];
- MessageType_PinMatrixAck = 19 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true];
- MessageType_Cancel = 20 [(wire_in) = true, (wire_tiny) = true];
- MessageType_ClearSession = 24 [(wire_in) = true];
- MessageType_ApplySettings = 25 [(wire_in) = true];
- MessageType_ButtonRequest = 26 [(wire_out) = true];
- MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true];
- MessageType_ApplyFlags = 28 [(wire_in) = true];
- MessageType_BackupDevice = 34 [(wire_in) = true];
- MessageType_EntropyRequest = 35 [(wire_out) = true];
- MessageType_EntropyAck = 36 [(wire_in) = true];
- MessageType_PassphraseRequest = 41 [(wire_out) = true];
- MessageType_PassphraseAck = 42 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true];
- MessageType_PassphraseStateRequest = 77 [(wire_out) = true];
- MessageType_PassphraseStateAck = 78 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true];
- MessageType_RecoveryDevice = 45 [(wire_in) = true];
- MessageType_WordRequest = 46 [(wire_out) = true];
- MessageType_WordAck = 47 [(wire_in) = true];
- MessageType_GetFeatures = 55 [(wire_in) = true];
- MessageType_SetU2FCounter = 63 [(wire_in) = true];
-
- // Bootloader
- MessageType_FirmwareErase = 6 [(wire_in) = true, (wire_bootloader) = true];
- MessageType_FirmwareUpload = 7 [(wire_in) = true, (wire_bootloader) = true];
- MessageType_FirmwareRequest = 8 [(wire_out) = true, (wire_bootloader) = true];
- MessageType_SelfTest = 32 [(wire_in) = true, (wire_bootloader) = true];
-
- // Bitcoin
- MessageType_GetPublicKey = 11 [(wire_in) = true];
- MessageType_PublicKey = 12 [(wire_out) = true];
- MessageType_SignTx = 15 [(wire_in) = true];
- MessageType_TxRequest = 21 [(wire_out) = true];
- MessageType_TxAck = 22 [(wire_in) = true];
- MessageType_GetAddress = 29 [(wire_in) = true];
- MessageType_Address = 30 [(wire_out) = true];
- MessageType_SignMessage = 38 [(wire_in) = true];
- MessageType_VerifyMessage = 39 [(wire_in) = true];
- MessageType_MessageSignature = 40 [(wire_out) = true];
-
- // Crypto
- MessageType_CipherKeyValue = 23 [(wire_in) = true];
- MessageType_CipheredKeyValue = 48 [(wire_out) = true];
- MessageType_SignIdentity = 53 [(wire_in) = true];
- MessageType_SignedIdentity = 54 [(wire_out) = true];
- MessageType_GetECDHSessionKey = 61 [(wire_in) = true];
- MessageType_ECDHSessionKey = 62 [(wire_out) = true];
- MessageType_CosiCommit = 71 [(wire_in) = true];
- MessageType_CosiCommitment = 72 [(wire_out) = true];
- MessageType_CosiSign = 73 [(wire_in) = true];
- MessageType_CosiSignature = 74 [(wire_out) = true];
-
- // Debug
- MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true, (wire_no_fsm) = true];
- MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true, (wire_tiny) = true];
- MessageType_DebugLinkState = 102 [(wire_debug_out) = true];
- MessageType_DebugLinkStop = 103 [(wire_debug_in) = true];
- MessageType_DebugLinkLog = 104 [(wire_debug_out) = true];
- MessageType_DebugLinkMemoryRead = 110 [(wire_debug_in) = true];
- MessageType_DebugLinkMemory = 111 [(wire_debug_out) = true];
- MessageType_DebugLinkMemoryWrite = 112 [(wire_debug_in) = true];
- MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true];
-
- // Ethereum
- MessageType_EthereumGetPublicKey = 450 [(wire_in) = true];
- MessageType_EthereumPublicKey = 451 [(wire_out) = true];
- MessageType_EthereumGetAddress = 56 [(wire_in) = true];
- MessageType_EthereumAddress = 57 [(wire_out) = true];
- MessageType_EthereumSignTx = 58 [(wire_in) = true];
- MessageType_EthereumTxRequest = 59 [(wire_out) = true];
- MessageType_EthereumTxAck = 60 [(wire_in) = true];
- MessageType_EthereumSignMessage = 64 [(wire_in) = true];
- MessageType_EthereumVerifyMessage = 65 [(wire_in) = true];
- MessageType_EthereumMessageSignature = 66 [(wire_out) = true];
-
- // NEM
- MessageType_NEMGetAddress = 67 [(wire_in) = true];
- MessageType_NEMAddress = 68 [(wire_out) = true];
- MessageType_NEMSignTx = 69 [(wire_in) = true];
- MessageType_NEMSignedTx = 70 [(wire_out) = true];
- MessageType_NEMDecryptMessage = 75 [(wire_in) = true];
- MessageType_NEMDecryptedMessage = 76 [(wire_out) = true];
-
- // Lisk
- MessageType_LiskGetAddress = 114 [(wire_in) = true];
- MessageType_LiskAddress = 115 [(wire_out) = true];
- MessageType_LiskSignTx = 116 [(wire_in) = true];
- MessageType_LiskSignedTx = 117 [(wire_out) = true];
- MessageType_LiskSignMessage = 118 [(wire_in) = true];
- MessageType_LiskMessageSignature = 119 [(wire_out) = true];
- MessageType_LiskVerifyMessage = 120 [(wire_in) = true];
- MessageType_LiskGetPublicKey = 121 [(wire_in) = true];
- MessageType_LiskPublicKey = 122 [(wire_out) = true];
-
- // Tezos
- MessageType_TezosGetAddress = 150 [(wire_in) = true];
- MessageType_TezosAddress = 151 [(wire_out) = true];
- MessageType_TezosSignTx = 152 [(wire_in) = true];
- MessageType_TezosSignedTx = 153 [(wire_out) = true];
- MessageType_TezosGetPublicKey = 154 [(wire_in) = true];
- MessageType_TezosPublicKey = 155 [(wire_out) = true];
-
- // Stellar
- MessageType_StellarSignTx = 202 [(wire_in) = true];
- MessageType_StellarTxOpRequest = 203 [(wire_out) = true];
- MessageType_StellarGetAddress = 207 [(wire_in) = true];
- MessageType_StellarAddress = 208 [(wire_out) = true];
- MessageType_StellarCreateAccountOp = 210 [(wire_in) = true];
- MessageType_StellarPaymentOp = 211 [(wire_in) = true];
- MessageType_StellarPathPaymentOp = 212 [(wire_in) = true];
- MessageType_StellarManageOfferOp = 213 [(wire_in) = true];
- MessageType_StellarCreatePassiveOfferOp = 214 [(wire_in) = true];
- MessageType_StellarSetOptionsOp = 215 [(wire_in) = true];
- MessageType_StellarChangeTrustOp = 216 [(wire_in) = true];
- MessageType_StellarAllowTrustOp = 217 [(wire_in) = true];
- MessageType_StellarAccountMergeOp = 218 [(wire_in) = true];
- // omitted: StellarInflationOp is not a supported operation, would be 219
- MessageType_StellarManageDataOp = 220 [(wire_in) = true];
- MessageType_StellarBumpSequenceOp = 221 [(wire_in) = true];
- MessageType_StellarSignedTx = 230 [(wire_out) = true];
-
- // TRON
- MessageType_TronGetAddress = 250 [(wire_in) = true];
- MessageType_TronAddress = 251 [(wire_out) = true];
- MessageType_TronSignTx = 252 [(wire_in) = true];
- MessageType_TronSignedTx = 253 [(wire_out) = true];
-
- // Cardano
- // dropped Sign/VerifyMessage ids 300-302
- MessageType_CardanoSignTx = 303 [(wire_in) = true];
- MessageType_CardanoTxRequest = 304 [(wire_out) = true];
- MessageType_CardanoGetPublicKey = 305 [(wire_in) = true];
- MessageType_CardanoPublicKey = 306 [(wire_out) = true];
- MessageType_CardanoGetAddress = 307 [(wire_in) = true];
- MessageType_CardanoAddress = 308 [(wire_out) = true];
- MessageType_CardanoTxAck = 309 [(wire_in) = true];
- MessageType_CardanoSignedTx = 310 [(wire_out) = true];
-
- // Ontology
- MessageType_OntologyGetAddress = 350 [(wire_in) = true];
- MessageType_OntologyAddress = 351 [(wire_out) = true];
- MessageType_OntologyGetPublicKey = 352 [(wire_in) = true];
- MessageType_OntologyPublicKey = 353 [(wire_out) = true];
- MessageType_OntologySignTransfer = 354 [(wire_in) = true];
- MessageType_OntologySignedTransfer = 355 [(wire_out) = true];
- MessageType_OntologySignWithdrawOng = 356 [(wire_in) = true];
- MessageType_OntologySignedWithdrawOng = 357 [(wire_out) = true];
- MessageType_OntologySignOntIdRegister = 358 [(wire_in) = true];
- MessageType_OntologySignedOntIdRegister = 359 [(wire_out) = true];
- MessageType_OntologySignOntIdAddAttributes = 360 [(wire_in) = true];
- MessageType_OntologySignedOntIdAddAttributes = 361 [(wire_out) = true];
-
- // Ripple
- MessageType_RippleGetAddress = 400 [(wire_in) = true];
- MessageType_RippleAddress = 401 [(wire_out) = true];
- MessageType_RippleSignTx = 402 [(wire_in) = true];
- MessageType_RippleSignedTx = 403 [(wire_in) = true];
-
- // Monero
- MessageType_MoneroTransactionInitRequest = 501 [(wire_out) = true];
- MessageType_MoneroTransactionInitAck = 502 [(wire_out) = true];
- MessageType_MoneroTransactionSetInputRequest = 503 [(wire_out) = true];
- MessageType_MoneroTransactionSetInputAck = 504 [(wire_out) = true];
- MessageType_MoneroTransactionInputsPermutationRequest = 505 [(wire_out) = true];
- MessageType_MoneroTransactionInputsPermutationAck = 506 [(wire_out) = true];
- MessageType_MoneroTransactionInputViniRequest = 507 [(wire_out) = true];
- MessageType_MoneroTransactionInputViniAck = 508 [(wire_out) = true];
- MessageType_MoneroTransactionAllInputsSetRequest = 509 [(wire_out) = true];
- MessageType_MoneroTransactionAllInputsSetAck = 510 [(wire_out) = true];
- MessageType_MoneroTransactionSetOutputRequest = 511 [(wire_out) = true];
- MessageType_MoneroTransactionSetOutputAck = 512 [(wire_out) = true];
- MessageType_MoneroTransactionAllOutSetRequest = 513 [(wire_out) = true];
- MessageType_MoneroTransactionAllOutSetAck = 514 [(wire_out) = true];
- MessageType_MoneroTransactionSignInputRequest = 515 [(wire_out) = true];
- MessageType_MoneroTransactionSignInputAck = 516 [(wire_out) = true];
- MessageType_MoneroTransactionFinalRequest = 517 [(wire_out) = true];
- MessageType_MoneroTransactionFinalAck = 518 [(wire_out) = true];
- MessageType_MoneroKeyImageExportInitRequest = 530 [(wire_out) = true];
- MessageType_MoneroKeyImageExportInitAck = 531 [(wire_out) = true];
- MessageType_MoneroKeyImageSyncStepRequest = 532 [(wire_out) = true];
- MessageType_MoneroKeyImageSyncStepAck = 533 [(wire_out) = true];
- MessageType_MoneroKeyImageSyncFinalRequest = 534 [(wire_out) = true];
- MessageType_MoneroKeyImageSyncFinalAck = 535 [(wire_out) = true];
- MessageType_MoneroGetAddress = 540 [(wire_in) = true];
- MessageType_MoneroAddress = 541 [(wire_out) = true];
- MessageType_MoneroGetWatchKey = 542 [(wire_in) = true];
- MessageType_MoneroWatchKey = 543 [(wire_out) = true];
- MessageType_DebugMoneroDiagRequest = 546 [(wire_in) = true];
- MessageType_DebugMoneroDiagAck = 547 [(wire_out) = true];
- MessageType_MoneroGetTxKeyRequest = 550 [(wire_in) = true];
- MessageType_MoneroGetTxKeyAck = 551 [(wire_out) = true];
- MessageType_MoneroLiveRefreshStartRequest = 552 [(wire_in) = true];
- MessageType_MoneroLiveRefreshStartAck = 553 [(wire_out) = true];
- MessageType_MoneroLiveRefreshStepRequest = 554 [(wire_in) = true];
- MessageType_MoneroLiveRefreshStepAck = 555 [(wire_out) = true];
- MessageType_MoneroLiveRefreshFinalRequest = 556 [(wire_in) = true];
- MessageType_MoneroLiveRefreshFinalAck = 557 [(wire_out) = true];
-
- // EOS
- MessageType_EosGetPublicKey = 600 [(wire_in) = true];
- MessageType_EosPublicKey = 601 [(wire_out) = true];
- MessageType_EosSignTx = 602 [(wire_in) = true];
- MessageType_EosTxActionRequest = 603 [(wire_out) = true];
- MessageType_EosTxActionAck = 604 [(wire_in) = true];
- MessageType_EosSignedTx = 605 [(wire_out) = true];
-
- // Binance
- MessageType_BinanceGetAddress = 700 [(wire_in) = true];
- MessageType_BinanceAddress = 701 [(wire_out) = true];
- MessageType_BinanceGetPublicKey = 702 [(wire_in) = true];
- MessageType_BinancePublicKey = 703 [(wire_out) = true];
- MessageType_BinanceSignTx = 704 [(wire_in) = true];
- MessageType_BinanceTxRequest = 705 [(wire_out) = true];
- MessageType_BinanceTransferMsg = 706 [(wire_in) = true];
- MessageType_BinanceOrderMsg = 707 [(wire_in) = true];
- MessageType_BinanceCancelMsg = 708 [(wire_in) = true];
- MessageType_BinanceSignedTx = 709 [(wire_out) = true];
-}
diff --git a/accounts/usbwallet/trezor/trezor.go b/accounts/usbwallet/trezor/trezor.go
deleted file mode 100644
index 7e756e6..0000000
--- a/accounts/usbwallet/trezor/trezor.go
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2017 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
-// This file contains the implementation for interacting with the Trezor hardware
-// wallets. The wire protocol spec can be found on the SatoshiLabs website:
-// https://wiki.trezor.io/Developers_guide-Message_Workflows
-
-// !!! STAHP !!!
-//
-// Before you touch the protocol files, you need to be aware of a breaking change
-// that occurred between firmware versions 1.7.3->1.8.0 (Model One) and 2.0.10->
-// 2.1.0 (Model T). The Ethereum address representation was changed from the 20
-// byte binary blob to a 42 byte hex string. The upstream protocol buffer files
-// only support the new format, so blindly pulling in a new spec will break old
-// devices!
-//
-// The Trezor devs had the foresight to add the string version as a new message
-// code instead of replacing the binary one. This means that the proto file can
-// actually define both the old and the new versions as optional. Please ensure
-// that you add back the old addresses everywhere (to avoid name clash. use the
-// addressBin and addressHex names).
-//
-// If in doubt, reach out to @karalabe.
-
-// To regenerate the protocol files in this package:
-// - Download the latest protoc https://github.com/protocolbuffers/protobuf/releases
-// - Build with the usual `./configure && make` and ensure it's on your $PATH
-// - Delete all the .proto and .pb.go files, pull in fresh ones from Trezor
-// - Grab the latest Go plugin `go get -u github.com/golang/protobuf/protoc-gen-go`
-// - Vendor in the latest Go plugin `govendor fetch github.com/golang/protobuf/...`
-
-//go:generate protoc -I/usr/local/include:. --go_out=import_path=trezor:. messages.proto messages-common.proto messages-management.proto messages-ethereum.proto
-
-// Package trezor contains the wire protocol.
-package trezor
-
-import (
- "reflect"
-
- "github.com/golang/protobuf/proto"
-)
-
-// Type returns the protocol buffer type number of a specific message. If the
-// message is nil, this method panics!
-func Type(msg proto.Message) uint16 {
- return uint16(MessageType_value["MessageType_"+reflect.TypeOf(msg).Elem().Name()])
-}
-
-// Name returns the friendly message type name of a specific protocol buffer
-// type number.
-func Name(kind uint16) string {
- name := MessageType_name[int32(kind)]
- if len(name) < 12 {
- return name
- }
- return name[12:]
-}
diff --git a/accounts/usbwallet/wallet.go b/accounts/usbwallet/wallet.go
deleted file mode 100644
index 3622c92..0000000
--- a/accounts/usbwallet/wallet.go
+++ /dev/null
@@ -1,595 +0,0 @@
-// Copyright 2017 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
-// Package usbwallet implements support for USB hardware wallets.
-package usbwallet
-
-import (
- "context"
- "fmt"
- "io"
- "math/big"
- "sync"
- "time"
-
- "github.com/ava-labs/coreth/accounts"
- "github.com/ava-labs/coreth/core/types"
- ethereum "github.com/ava-labs/go-ethereum"
- "github.com/ava-labs/go-ethereum/common"
- "github.com/ava-labs/go-ethereum/crypto"
- "github.com/ava-labs/go-ethereum/log"
- "github.com/karalabe/usb"
-)
-
-// Maximum time between wallet health checks to detect USB unplugs.
-const heartbeatCycle = time.Second
-
-// Minimum time to wait between self derivation attempts, even it the user is
-// requesting accounts like crazy.
-const selfDeriveThrottling = time.Second
-
-// driver defines the vendor specific functionality hardware wallets instances
-// must implement to allow using them with the wallet lifecycle management.
-type driver interface {
- // Status returns a textual status to aid the user in the current state of the
- // wallet. It also returns an error indicating any failure the wallet might have
- // encountered.
- Status() (string, error)
-
- // Open initializes access to a wallet instance. The passphrase parameter may
- // or may not be used by the implementation of a particular wallet instance.
- Open(device io.ReadWriter, passphrase string) error
-
- // Close releases any resources held by an open wallet instance.
- Close() error
-
- // Heartbeat performs a sanity check against the hardware wallet to see if it
- // is still online and healthy.
- Heartbeat() error
-
- // Derive sends a derivation request to the USB device and returns the Ethereum
- // address located on that path.
- Derive(path accounts.DerivationPath) (common.Address, error)
-
- // SignTx sends the transaction to the USB device and waits for the user to confirm
- // or deny the transaction.
- SignTx(path accounts.DerivationPath, tx *types.Transaction, chainID *big.Int) (common.Address, *types.Transaction, error)
-}
-
-// wallet represents the common functionality shared by all USB hardware
-// wallets to prevent reimplementing the same complex maintenance mechanisms
-// for different vendors.
-type wallet struct {
- hub *Hub // USB hub scanning
- driver driver // Hardware implementation of the low level device operations
- url *accounts.URL // Textual URL uniquely identifying this wallet
-
- info usb.DeviceInfo // Known USB device infos about the wallet
- device usb.Device // USB device advertising itself as a hardware wallet
-
- accounts []accounts.Account // List of derive accounts pinned on the hardware wallet
- paths map[common.Address]accounts.DerivationPath // Known derivation paths for signing operations
-
- deriveNextPaths []accounts.DerivationPath // Next derivation paths for account auto-discovery (multiple bases supported)
- deriveNextAddrs []common.Address // Next derived account addresses for auto-discovery (multiple bases supported)
- deriveChain ethereum.ChainStateReader // Blockchain state reader to discover used account with
- deriveReq chan chan struct{} // Channel to request a self-derivation on
- deriveQuit chan chan error // Channel to terminate the self-deriver with
-
- healthQuit chan chan error
-
- // Locking a hardware wallet is a bit special. Since hardware devices are lower
- // performing, any communication with them might take a non negligible amount of
- // time. Worse still, waiting for user confirmation can take arbitrarily long,
- // but exclusive communication must be upheld during. Locking the entire wallet
- // in the mean time however would stall any parts of the system that don't want
- // to communicate, just read some state (e.g. list the accounts).
- //
- // As such, a hardware wallet needs two locks to function correctly. A state
- // lock can be used to protect the wallet's software-side internal state, which
- // must not be held exclusively during hardware communication. A communication
- // lock can be used to achieve exclusive access to the device itself, this one
- // however should allow "skipping" waiting for operations that might want to
- // use the device, but can live without too (e.g. account self-derivation).
- //
- // Since we have two locks, it's important to know how to properly use them:
- // - Communication requires the `device` to not change, so obtaining the
- // commsLock should be done after having a stateLock.
- // - Communication must not disable read access to the wallet state, so it
- // must only ever hold a *read* lock to stateLock.
- commsLock chan struct{} // Mutex (buf=1) for the USB comms without keeping the state locked
- stateLock sync.RWMutex // Protects read and write access to the wallet struct fields
-
- log log.Logger // Contextual logger to tag the base with its id
-}
-
-// URL implements accounts.Wallet, returning the URL of the USB hardware device.
-func (w *wallet) URL() accounts.URL {
- return *w.url // Immutable, no need for a lock
-}
-
-// Status implements accounts.Wallet, returning a custom status message from the
-// underlying vendor-specific hardware wallet implementation.
-func (w *wallet) Status() (string, error) {
- w.stateLock.RLock() // No device communication, state lock is enough
- defer w.stateLock.RUnlock()
-
- status, failure := w.driver.Status()
- if w.device == nil {
- return "Closed", failure
- }
- return status, failure
-}
-
-// Open implements accounts.Wallet, attempting to open a USB connection to the
-// hardware wallet.
-func (w *wallet) Open(passphrase string) error {
- w.stateLock.Lock() // State lock is enough since there's no connection yet at this point
- defer w.stateLock.Unlock()
-
- // If the device was already opened once, refuse to try again
- if w.paths != nil {
- return accounts.ErrWalletAlreadyOpen
- }
- // Make sure the actual device connection is done only once
- if w.device == nil {
- device, err := w.info.Open()
- if err != nil {
- return err
- }
- w.device = device
- w.commsLock = make(chan struct{}, 1)
- w.commsLock <- struct{}{} // Enable lock
- }
- // Delegate device initialization to the underlying driver
- if err := w.driver.Open(w.device, passphrase); err != nil {
- return err
- }
- // Connection successful, start life-cycle management
- w.paths = make(map[common.Address]accounts.DerivationPath)
-
- w.deriveReq = make(chan chan struct{})
- w.deriveQuit = make(chan chan error)
- w.healthQuit = make(chan chan error)
-
- go w.heartbeat()
- go w.selfDerive()
-
- // Notify anyone listening for wallet events that a new device is accessible
- go w.hub.updateFeed.Send(accounts.WalletEvent{Wallet: w, Kind: accounts.WalletOpened})
-
- return nil
-}
-
-// heartbeat is a health check loop for the USB wallets to periodically verify
-// whether they are still present or if they malfunctioned.
-func (w *wallet) heartbeat() {
- w.log.Debug("USB wallet health-check started")
- defer w.log.Debug("USB wallet health-check stopped")
-
- // Execute heartbeat checks until termination or error
- var (
- errc chan error
- err error
- )
- for errc == nil && err == nil {
- // Wait until termination is requested or the heartbeat cycle arrives
- select {
- case errc = <-w.healthQuit:
- // Termination requested
- continue
- case <-time.After(heartbeatCycle):
- // Heartbeat time
- }
- // Execute a tiny data exchange to see responsiveness
- w.stateLock.RLock()
- if w.device == nil {
- // Terminated while waiting for the lock
- w.stateLock.RUnlock()
- continue
- }
- <-w.commsLock // Don't lock state while resolving version
- err = w.driver.Heartbeat()
- w.commsLock <- struct{}{}
- w.stateLock.RUnlock()
-
- if err != nil {
- w.stateLock.Lock() // Lock state to tear the wallet down
- w.close()
- w.stateLock.Unlock()
- }
- // Ignore non hardware related errors
- err = nil
- }
- // In case of error, wait for termination
- if err != nil {
- w.log.Debug("USB wallet health-check failed", "err", err)
- errc = <-w.healthQuit
- }
- errc <- err
-}
-
-// Close implements accounts.Wallet, closing the USB connection to the device.
-func (w *wallet) Close() error {
- // Ensure the wallet was opened
- w.stateLock.RLock()
- hQuit, dQuit := w.healthQuit, w.deriveQuit
- w.stateLock.RUnlock()
-
- // Terminate the health checks
- var herr error
- if hQuit != nil {
- errc := make(chan error)
- hQuit <- errc
- herr = <-errc // Save for later, we *must* close the USB
- }
- // Terminate the self-derivations
- var derr error
- if dQuit != nil {
- errc := make(chan error)
- dQuit <- errc
- derr = <-errc // Save for later, we *must* close the USB
- }
- // Terminate the device connection
- w.stateLock.Lock()
- defer w.stateLock.Unlock()
-
- w.healthQuit = nil
- w.deriveQuit = nil
- w.deriveReq = nil
-
- if err := w.close(); err != nil {
- return err
- }
- if herr != nil {
- return herr
- }
- return derr
-}
-
-// close is the internal wallet closer that terminates the USB connection and
-// resets all the fields to their defaults.
-//
-// Note, close assumes the state lock is held!
-func (w *wallet) close() error {
- // Allow duplicate closes, especially for health-check failures
- if w.device == nil {
- return nil
- }
- // Close the device, clear everything, then return
- w.device.Close()
- w.device = nil
-
- w.accounts, w.paths = nil, nil
- return w.driver.Close()
-}
-
-// Accounts implements accounts.Wallet, returning the list of accounts pinned to
-// the USB hardware wallet. If self-derivation was enabled, the account list is
-// periodically expanded based on current chain state.
-func (w *wallet) Accounts() []accounts.Account {
- // Attempt self-derivation if it's running
- reqc := make(chan struct{}, 1)
- select {
- case w.deriveReq <- reqc:
- // Self-derivation request accepted, wait for it
- <-reqc
- default:
- // Self-derivation offline, throttled or busy, skip
- }
- // Return whatever account list we ended up with
- w.stateLock.RLock()
- defer w.stateLock.RUnlock()
-
- cpy := make([]accounts.Account, len(w.accounts))
- copy(cpy, w.accounts)
- return cpy
-}
-
-// selfDerive is an account derivation loop that upon request attempts to find
-// new non-zero accounts.
-func (w *wallet) selfDerive() {
- w.log.Debug("USB wallet self-derivation started")
- defer w.log.Debug("USB wallet self-derivation stopped")
-
- // Execute self-derivations until termination or error
- var (
- reqc chan struct{}
- errc chan error
- err error
- )
- for errc == nil && err == nil {
- // Wait until either derivation or termination is requested
- select {
- case errc = <-w.deriveQuit:
- // Termination requested
- continue
- case reqc = <-w.deriveReq:
- // Account discovery requested
- }
- // Derivation needs a chain and device access, skip if either unavailable
- w.stateLock.RLock()
- if w.device == nil || w.deriveChain == nil {
- w.stateLock.RUnlock()
- reqc <- struct{}{}
- continue
- }
- select {
- case <-w.commsLock:
- default:
- w.stateLock.RUnlock()
- reqc <- struct{}{}
- continue
- }
- // Device lock obtained, derive the next batch of accounts
- var (
- accs []accounts.Account
- paths []accounts.DerivationPath
-
- nextPaths = append([]accounts.DerivationPath{}, w.deriveNextPaths...)
- nextAddrs = append([]common.Address{}, w.deriveNextAddrs...)
-
- context = context.Background()
- )
- for i := 0; i < len(nextAddrs); i++ {
- for empty := false; !empty; {
- // Retrieve the next derived Ethereum account
- if nextAddrs[i] == (common.Address{}) {
- if nextAddrs[i], err = w.driver.Derive(nextPaths[i]); err != nil {
- w.log.Warn("USB wallet account derivation failed", "err", err)
- break
- }
- }
- // Check the account's status against the current chain state
- var (
- balance *big.Int
- nonce uint64
- )
- balance, err = w.deriveChain.BalanceAt(context, nextAddrs[i], nil)
- if err != nil {
- w.log.Warn("USB wallet balance retrieval failed", "err", err)
- break
- }
- nonce, err = w.deriveChain.NonceAt(context, nextAddrs[i], nil)
- if err != nil {
- w.log.Warn("USB wallet nonce retrieval failed", "err", err)
- break
- }
- // If the next account is empty, stop self-derivation, but add for the last base path
- if balance.Sign() == 0 && nonce == 0 {
- empty = true
- if i < len(nextAddrs)-1 {
- break
- }
- }
- // We've just self-derived a new account, start tracking it locally
- path := make(accounts.DerivationPath, len(nextPaths[i]))
- copy(path[:], nextPaths[i][:])
- paths = append(paths, path)
-
- account := accounts.Account{
- Address: nextAddrs[i],
- URL: accounts.URL{Scheme: w.url.Scheme, Path: fmt.Sprintf("%s/%s", w.url.Path, path)},
- }
- accs = append(accs, account)
-
- // Display a log message to the user for new (or previously empty accounts)
- if _, known := w.paths[nextAddrs[i]]; !known || (!empty && nextAddrs[i] == w.deriveNextAddrs[i]) {
- w.log.Info("USB wallet discovered new account", "address", nextAddrs[i], "path", path, "balance", balance, "nonce", nonce)
- }
- // Fetch the next potential account
- if !empty {
- nextAddrs[i] = common.Address{}
- nextPaths[i][len(nextPaths[i])-1]++
- }
- }
- }
- // Self derivation complete, release device lock
- w.commsLock <- struct{}{}
- w.stateLock.RUnlock()
-
- // Insert any accounts successfully derived
- w.stateLock.Lock()
- for i := 0; i < len(accs); i++ {
- if _, ok := w.paths[accs[i].Address]; !ok {
- w.accounts = append(w.accounts, accs[i])
- w.paths[accs[i].Address] = paths[i]
- }
- }
- // Shift the self-derivation forward
- // TODO(karalabe): don't overwrite changes from wallet.SelfDerive
- w.deriveNextAddrs = nextAddrs
- w.deriveNextPaths = nextPaths
- w.stateLock.Unlock()
-
- // Notify the user of termination and loop after a bit of time (to avoid trashing)
- reqc <- struct{}{}
- if err == nil {
- select {
- case errc = <-w.deriveQuit:
- // Termination requested, abort
- case <-time.After(selfDeriveThrottling):
- // Waited enough, willing to self-derive again
- }
- }
- }
- // In case of error, wait for termination
- if err != nil {
- w.log.Debug("USB wallet self-derivation failed", "err", err)
- errc = <-w.deriveQuit
- }
- errc <- err
-}
-
-// Contains implements accounts.Wallet, returning whether a particular account is
-// or is not pinned into this wallet instance. Although we could attempt to resolve
-// unpinned accounts, that would be an non-negligible hardware operation.
-func (w *wallet) Contains(account accounts.Account) bool {
- w.stateLock.RLock()
- defer w.stateLock.RUnlock()
-
- _, exists := w.paths[account.Address]
- return exists
-}
-
-// Derive implements accounts.Wallet, deriving a new account at the specific
-// derivation path. If pin is set to true, the account will be added to the list
-// of tracked accounts.
-func (w *wallet) Derive(path accounts.DerivationPath, pin bool) (accounts.Account, error) {
- // Try to derive the actual account and update its URL if successful
- w.stateLock.RLock() // Avoid device disappearing during derivation
-
- if w.device == nil {
- w.stateLock.RUnlock()
- return accounts.Account{}, accounts.ErrWalletClosed
- }
- <-w.commsLock // Avoid concurrent hardware access
- address, err := w.driver.Derive(path)
- w.commsLock <- struct{}{}
-
- w.stateLock.RUnlock()
-
- // If an error occurred or no pinning was requested, return
- if err != nil {
- return accounts.Account{}, err
- }
- account := accounts.Account{
- Address: address,
- URL: accounts.URL{Scheme: w.url.Scheme, Path: fmt.Sprintf("%s/%s", w.url.Path, path)},
- }
- if !pin {
- return account, nil
- }
- // Pinning needs to modify the state
- w.stateLock.Lock()
- defer w.stateLock.Unlock()
-
- if _, ok := w.paths[address]; !ok {
- w.accounts = append(w.accounts, account)
- w.paths[address] = make(accounts.DerivationPath, len(path))
- copy(w.paths[address], path)
- }
- return account, nil
-}
-
-// SelfDerive sets a base account derivation path from which the wallet attempts
-// to discover non zero accounts and automatically add them to list of tracked
-// accounts.
-//
-// Note, self derivaton will increment the last component of the specified path
-// opposed to decending into a child path to allow discovering accounts starting
-// from non zero components.
-//
-// Some hardware wallets switched derivation paths through their evolution, so
-// this method supports providing multiple bases to discover old user accounts
-// too. Only the last base will be used to derive the next empty account.
-//
-// You can disable automatic account discovery by calling SelfDerive with a nil
-// chain state reader.
-func (w *wallet) SelfDerive(bases []accounts.DerivationPath, chain ethereum.ChainStateReader) {
- w.stateLock.Lock()
- defer w.stateLock.Unlock()
-
- w.deriveNextPaths = make([]accounts.DerivationPath, len(bases))
- for i, base := range bases {
- w.deriveNextPaths[i] = make(accounts.DerivationPath, len(base))
- copy(w.deriveNextPaths[i][:], base[:])
- }
- w.deriveNextAddrs = make([]common.Address, len(bases))
- w.deriveChain = chain
-}
-
-// signHash implements accounts.Wallet, however signing arbitrary data is not
-// supported for hardware wallets, so this method will always return an error.
-func (w *wallet) signHash(account accounts.Account, hash []byte) ([]byte, error) {
- return nil, accounts.ErrNotSupported
-}
-
-// SignData signs keccak256(data). The mimetype parameter describes the type of data being signed
-func (w *wallet) SignData(account accounts.Account, mimeType string, data []byte) ([]byte, error) {
- return w.signHash(account, crypto.Keccak256(data))
-}
-
-// SignDataWithPassphrase implements accounts.Wallet, attempting to sign the given
-// data with the given account using passphrase as extra authentication.
-// Since USB wallets don't rely on passphrases, these are silently ignored.
-func (w *wallet) SignDataWithPassphrase(account accounts.Account, passphrase, mimeType string, data []byte) ([]byte, error) {
- return w.SignData(account, mimeType, data)
-}
-
-func (w *wallet) SignText(account accounts.Account, text []byte) ([]byte, error) {
- return w.signHash(account, accounts.TextHash(text))
-}
-
-// SignTx implements accounts.Wallet. It sends the transaction over to the Ledger
-// wallet to request a confirmation from the user. It returns either the signed
-// transaction or a failure if the user denied the transaction.
-//
-// Note, if the version of the Ethereum application running on the Ledger wallet is
-// too old to sign EIP-155 transactions, but such is requested nonetheless, an error
-// will be returned opposed to silently signing in Homestead mode.
-func (w *wallet) SignTx(account accounts.Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) {
- w.stateLock.RLock() // Comms have own mutex, this is for the state fields
- defer w.stateLock.RUnlock()
-
- // If the wallet is closed, abort
- if w.device == nil {
- return nil, accounts.ErrWalletClosed
- }
- // Make sure the requested account is contained within
- path, ok := w.paths[account.Address]
- if !ok {
- return nil, accounts.ErrUnknownAccount
- }
- // All infos gathered and metadata checks out, request signing
- <-w.commsLock
- defer func() { w.commsLock <- struct{}{} }()
-
- // Ensure the device isn't screwed with while user confirmation is pending
- // TODO(karalabe): remove if hotplug lands on Windows
- w.hub.commsLock.Lock()
- w.hub.commsPend++
- w.hub.commsLock.Unlock()
-
- defer func() {
- w.hub.commsLock.Lock()
- w.hub.commsPend--
- w.hub.commsLock.Unlock()
- }()
- // Sign the transaction and verify the sender to avoid hardware fault surprises
- sender, signed, err := w.driver.SignTx(path, tx, chainID)
- if err != nil {
- return nil, err
- }
- if sender != account.Address {
- return nil, fmt.Errorf("signer mismatch: expected %s, got %s", account.Address.Hex(), sender.Hex())
- }
- return signed, nil
-}
-
-// SignHashWithPassphrase implements accounts.Wallet, however signing arbitrary
-// data is not supported for Ledger wallets, so this method will always return
-// an error.
-func (w *wallet) SignTextWithPassphrase(account accounts.Account, passphrase string, text []byte) ([]byte, error) {
- return w.SignText(account, accounts.TextHash(text))
-}
-
-// SignTxWithPassphrase implements accounts.Wallet, attempting to sign the given
-// transaction with the given account using passphrase as extra authentication.
-// Since USB wallets don't rely on passphrases, these are silently ignored.
-func (w *wallet) SignTxWithPassphrase(account accounts.Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) {
- return w.SignTx(account, tx, chainID)
-}