diff --git a/src/apps/common/coininfo.py b/src/apps/common/coininfo.py index 875c68c34..fdfa8577f 100644 --- a/src/apps/common/coininfo.py +++ b/src/apps/common/coininfo.py @@ -924,6 +924,46 @@ COINS = [ decred=False, curve_name='secp256k1', ), + CoinInfo( + coin_name="Qtum", + coin_shortcut="QTUM", + address_type=58, + address_type_p2sh=50, + maxfee_kb=40000000, + signed_message_header="Qtum Signed Message:\n", + xpub_magic=0x0488b21e, + xpub_magic_segwit_p2sh=0x049d7cb2, + xpub_magic_segwit_native=0x04b24746, + bech32_prefix="qc", + cashaddr_prefix=None, + slip44=2301, + segwit=True, + fork_id=None, + force_bip143=False, + bip115=False, + decred=False, + curve_name='secp256k1', + ), + CoinInfo( + coin_name="Qtum Testnet", + coin_shortcut="tQTUM", + address_type=120, + address_type_p2sh=110, + maxfee_kb=40000000, + signed_message_header="Qtum Signed Message:\n", + xpub_magic=0x043587cf, + xpub_magic_segwit_p2sh=0x044a5262, + xpub_magic_segwit_native=0x045f1cf6, + bech32_prefix="tq", + cashaddr_prefix=None, + slip44=1, + segwit=True, + fork_id=None, + force_bip143=False, + bip115=False, + decred=False, + curve_name='secp256k1', + ), CoinInfo( coin_name="Ravencoin", coin_shortcut="RVN", diff --git a/src/apps/ethereum/networks.py b/src/apps/ethereum/networks.py index 039863643..9f9692b83 100644 --- a/src/apps/ethereum/networks.py +++ b/src/apps/ethereum/networks.py @@ -142,6 +142,13 @@ NETWORKS = [ name="Mix", rskip60=False, ), + NetworkInfo( + chain_id=237, + slip44=237, + shortcut="DXN", + name="DEXON", + rskip60=False, + ), NetworkInfo( chain_id=820, slip44=820, diff --git a/src/trezor/messages/BinanceAddress.py b/src/trezor/messages/BinanceAddress.py new file mode 100644 index 000000000..8f0ed5bec --- /dev/null +++ b/src/trezor/messages/BinanceAddress.py @@ -0,0 +1,19 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + + +class BinanceAddress(p.MessageType): + MESSAGE_WIRE_TYPE = 701 + + def __init__( + self, + address: str = None, + ) -> None: + self.address = address + + @classmethod + def get_fields(cls): + return { + 1: ('address', p.UnicodeType, 0), + } diff --git a/src/trezor/messages/BinanceCancelMsg.py b/src/trezor/messages/BinanceCancelMsg.py new file mode 100644 index 000000000..a78252c7f --- /dev/null +++ b/src/trezor/messages/BinanceCancelMsg.py @@ -0,0 +1,25 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + + +class BinanceCancelMsg(p.MessageType): + MESSAGE_WIRE_TYPE = 708 + + def __init__( + self, + refid: str = None, + sender: str = None, + symbol: str = None, + ) -> None: + self.refid = refid + self.sender = sender + self.symbol = symbol + + @classmethod + def get_fields(cls): + return { + 1: ('refid', p.UnicodeType, 0), + 2: ('sender', p.UnicodeType, 0), + 3: ('symbol', p.UnicodeType, 0), + } diff --git a/src/trezor/messages/BinanceGetAddress.py b/src/trezor/messages/BinanceGetAddress.py new file mode 100644 index 000000000..c5e82c576 --- /dev/null +++ b/src/trezor/messages/BinanceGetAddress.py @@ -0,0 +1,28 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + +if __debug__: + try: + from typing import List + except ImportError: + List = None # type: ignore + + +class BinanceGetAddress(p.MessageType): + MESSAGE_WIRE_TYPE = 700 + + def __init__( + self, + address_n: List[int] = None, + show_display: bool = None, + ) -> None: + self.address_n = address_n if address_n is not None else [] + self.show_display = show_display + + @classmethod + def get_fields(cls): + return { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('show_display', p.BoolType, 0), + } diff --git a/src/trezor/messages/BinanceGetPublicKey.py b/src/trezor/messages/BinanceGetPublicKey.py new file mode 100644 index 000000000..15acdee8c --- /dev/null +++ b/src/trezor/messages/BinanceGetPublicKey.py @@ -0,0 +1,28 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + +if __debug__: + try: + from typing import List + except ImportError: + List = None # type: ignore + + +class BinanceGetPublicKey(p.MessageType): + MESSAGE_WIRE_TYPE = 702 + + def __init__( + self, + address_n: List[int] = None, + show_display: bool = None, + ) -> None: + self.address_n = address_n if address_n is not None else [] + self.show_display = show_display + + @classmethod + def get_fields(cls): + return { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('show_display', p.BoolType, 0), + } diff --git a/src/trezor/messages/BinanceOrderMsg.py b/src/trezor/messages/BinanceOrderMsg.py new file mode 100644 index 000000000..b2382b1ef --- /dev/null +++ b/src/trezor/messages/BinanceOrderMsg.py @@ -0,0 +1,40 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + + +class BinanceOrderMsg(p.MessageType): + MESSAGE_WIRE_TYPE = 707 + + def __init__( + self, + id: str = None, + ordertype: int = None, + price: int = None, + quantity: int = None, + sender: str = None, + side: int = None, + symbol: str = None, + timeinforce: int = None, + ) -> None: + self.id = id + self.ordertype = ordertype + self.price = price + self.quantity = quantity + self.sender = sender + self.side = side + self.symbol = symbol + self.timeinforce = timeinforce + + @classmethod + def get_fields(cls): + return { + 1: ('id', p.UnicodeType, 0), + 2: ('ordertype', p.UVarintType, 0), + 3: ('price', p.SVarintType, 0), + 4: ('quantity', p.SVarintType, 0), + 5: ('sender', p.UnicodeType, 0), + 6: ('side', p.UVarintType, 0), + 7: ('symbol', p.UnicodeType, 0), + 8: ('timeinforce', p.UVarintType, 0), + } diff --git a/src/trezor/messages/BinancePublicKey.py b/src/trezor/messages/BinancePublicKey.py new file mode 100644 index 000000000..fff036305 --- /dev/null +++ b/src/trezor/messages/BinancePublicKey.py @@ -0,0 +1,19 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + + +class BinancePublicKey(p.MessageType): + MESSAGE_WIRE_TYPE = 703 + + def __init__( + self, + public_key: bytes = None, + ) -> None: + self.public_key = public_key + + @classmethod + def get_fields(cls): + return { + 1: ('public_key', p.BytesType, 0), + } diff --git a/src/trezor/messages/BinanceSignTx.py b/src/trezor/messages/BinanceSignTx.py new file mode 100644 index 000000000..689088c04 --- /dev/null +++ b/src/trezor/messages/BinanceSignTx.py @@ -0,0 +1,43 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + +if __debug__: + try: + from typing import List + except ImportError: + List = None # type: ignore + + +class BinanceSignTx(p.MessageType): + MESSAGE_WIRE_TYPE = 704 + + def __init__( + self, + address_n: List[int] = None, + msg_count: int = None, + account_number: int = None, + chain_id: str = None, + memo: str = None, + sequence: int = None, + source: int = None, + ) -> None: + self.address_n = address_n if address_n is not None else [] + self.msg_count = msg_count + self.account_number = account_number + self.chain_id = chain_id + self.memo = memo + self.sequence = sequence + self.source = source + + @classmethod + def get_fields(cls): + return { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('msg_count', p.UVarintType, 0), + 3: ('account_number', p.SVarintType, 0), + 4: ('chain_id', p.UnicodeType, 0), + 5: ('memo', p.UnicodeType, 0), + 6: ('sequence', p.SVarintType, 0), + 7: ('source', p.SVarintType, 0), + } diff --git a/src/trezor/messages/BinanceSignedTx.py b/src/trezor/messages/BinanceSignedTx.py new file mode 100644 index 000000000..d9905050d --- /dev/null +++ b/src/trezor/messages/BinanceSignedTx.py @@ -0,0 +1,25 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + + +class BinanceSignedTx(p.MessageType): + MESSAGE_WIRE_TYPE = 709 + + def __init__( + self, + signature: bytes = None, + public_key: bytes = None, + json: str = None, + ) -> None: + self.signature = signature + self.public_key = public_key + self.json = json + + @classmethod + def get_fields(cls): + return { + 1: ('signature', p.BytesType, 0), + 2: ('public_key', p.BytesType, 0), + 3: ('json', p.UnicodeType, 0), + } diff --git a/src/trezor/messages/BinanceTransferMsg.py b/src/trezor/messages/BinanceTransferMsg.py new file mode 100644 index 000000000..7c32e26a6 --- /dev/null +++ b/src/trezor/messages/BinanceTransferMsg.py @@ -0,0 +1,30 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + +from .InputOutput import InputOutput + +if __debug__: + try: + from typing import List + except ImportError: + List = None # type: ignore + + +class BinanceTransferMsg(p.MessageType): + MESSAGE_WIRE_TYPE = 706 + + def __init__( + self, + inputs: List[InputOutput] = None, + outputs: List[InputOutput] = None, + ) -> None: + self.inputs = inputs if inputs is not None else [] + self.outputs = outputs if outputs is not None else [] + + @classmethod + def get_fields(cls): + return { + 1: ('inputs', InputOutput, p.FLAG_REPEATED), + 2: ('outputs', InputOutput, p.FLAG_REPEATED), + } diff --git a/src/trezor/messages/BinanceTxRequest.py b/src/trezor/messages/BinanceTxRequest.py new file mode 100644 index 000000000..dac5a433a --- /dev/null +++ b/src/trezor/messages/BinanceTxRequest.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + + +class BinanceTxRequest(p.MessageType): + MESSAGE_WIRE_TYPE = 705 diff --git a/src/trezor/messages/Coin.py b/src/trezor/messages/Coin.py new file mode 100644 index 000000000..e07ab8aef --- /dev/null +++ b/src/trezor/messages/Coin.py @@ -0,0 +1,21 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + + +class Coin(p.MessageType): + + def __init__( + self, + amount: int = None, + denom: str = None, + ) -> None: + self.amount = amount + self.denom = denom + + @classmethod + def get_fields(cls): + return { + 1: ('amount', p.SVarintType, 0), + 2: ('denom', p.UnicodeType, 0), + } diff --git a/src/trezor/messages/DebugLinkState.py b/src/trezor/messages/DebugLinkState.py index 3616e2e3c..c9f2b3e7c 100644 --- a/src/trezor/messages/DebugLinkState.py +++ b/src/trezor/messages/DebugLinkState.py @@ -13,7 +13,7 @@ class DebugLinkState(p.MessageType): layout: bytes = None, pin: str = None, matrix: str = None, - mnemonic: str = None, + mnemonic_secret: bytes = None, node: HDNodeType = None, passphrase_protection: bool = None, reset_word: str = None, @@ -21,11 +21,12 @@ class DebugLinkState(p.MessageType): recovery_fake_word: str = None, recovery_word_pos: int = None, reset_word_pos: int = None, + mnemonic_type: int = None, ) -> None: self.layout = layout self.pin = pin self.matrix = matrix - self.mnemonic = mnemonic + self.mnemonic_secret = mnemonic_secret self.node = node self.passphrase_protection = passphrase_protection self.reset_word = reset_word @@ -33,6 +34,7 @@ class DebugLinkState(p.MessageType): self.recovery_fake_word = recovery_fake_word self.recovery_word_pos = recovery_word_pos self.reset_word_pos = reset_word_pos + self.mnemonic_type = mnemonic_type @classmethod def get_fields(cls): @@ -40,7 +42,7 @@ class DebugLinkState(p.MessageType): 1: ('layout', p.BytesType, 0), 2: ('pin', p.UnicodeType, 0), 3: ('matrix', p.UnicodeType, 0), - 4: ('mnemonic', p.UnicodeType, 0), + 4: ('mnemonic_secret', p.BytesType, 0), 5: ('node', HDNodeType, 0), 6: ('passphrase_protection', p.BoolType, 0), 7: ('reset_word', p.UnicodeType, 0), @@ -48,4 +50,5 @@ class DebugLinkState(p.MessageType): 9: ('recovery_fake_word', p.UnicodeType, 0), 10: ('recovery_word_pos', p.UVarintType, 0), 11: ('reset_word_pos', p.UVarintType, 0), + 12: ('mnemonic_type', p.UVarintType, 0), } diff --git a/src/trezor/messages/InputOutput.py b/src/trezor/messages/InputOutput.py new file mode 100644 index 000000000..33556eefc --- /dev/null +++ b/src/trezor/messages/InputOutput.py @@ -0,0 +1,29 @@ +# Automatically generated by pb2py +# fmt: off +import protobuf as p + +from .Coin import Coin + +if __debug__: + try: + from typing import List + except ImportError: + List = None # type: ignore + + +class InputOutput(p.MessageType): + + def __init__( + self, + address: str = None, + coins: List[Coin] = None, + ) -> None: + self.address = address + self.coins = coins if coins is not None else [] + + @classmethod + def get_fields(cls): + return { + 1: ('address', p.UnicodeType, 0), + 2: ('coins', Coin, p.FLAG_REPEATED), + } diff --git a/src/trezor/messages/MessageType.py b/src/trezor/messages/MessageType.py index 87b0cde0d..e7a21ff7d 100644 --- a/src/trezor/messages/MessageType.py +++ b/src/trezor/messages/MessageType.py @@ -183,3 +183,13 @@ EosSignTx = 602 EosTxActionRequest = 603 EosTxActionAck = 604 EosSignedTx = 605 +BinanceGetAddress = 700 +BinanceAddress = 701 +BinanceGetPublicKey = 702 +BinancePublicKey = 703 +BinanceSignTx = 704 +BinanceTxRequest = 705 +BinanceTransferMsg = 706 +BinanceOrderMsg = 707 +BinanceCancelMsg = 708 +BinanceSignedTx = 709 diff --git a/src/trezor/messages/OrderSide.py b/src/trezor/messages/OrderSide.py new file mode 100644 index 000000000..454fff0fe --- /dev/null +++ b/src/trezor/messages/OrderSide.py @@ -0,0 +1,5 @@ +# Automatically generated by pb2py +# fmt: off +SIDE_UNKNOWN = 0 +BUY = 1 +SELL = 2 diff --git a/src/trezor/messages/OrderType.py b/src/trezor/messages/OrderType.py new file mode 100644 index 000000000..3349a5fdb --- /dev/null +++ b/src/trezor/messages/OrderType.py @@ -0,0 +1,6 @@ +# Automatically generated by pb2py +# fmt: off +OT_UNKNOWN = 0 +MARKET = 1 +LIMIT = 2 +OT_RESERVED = 3 diff --git a/src/trezor/messages/PublicKey.py b/src/trezor/messages/PublicKey.py index d39778d58..589342231 100644 --- a/src/trezor/messages/PublicKey.py +++ b/src/trezor/messages/PublicKey.py @@ -19,6 +19,6 @@ class PublicKey(p.MessageType): @classmethod def get_fields(cls): return { - 1: ('node', HDNodeType, 0), # required + 1: ('node', HDNodeType, 0), 2: ('xpub', p.UnicodeType, 0), } diff --git a/src/trezor/messages/TimeInForce.py b/src/trezor/messages/TimeInForce.py new file mode 100644 index 000000000..fa6e5f420 --- /dev/null +++ b/src/trezor/messages/TimeInForce.py @@ -0,0 +1,6 @@ +# Automatically generated by pb2py +# fmt: off +TIF_UNKNOWN = 0 +GTE = 1 +TIF_RESERVED = 2 +IOC = 3 diff --git a/vendor/trezor-common b/vendor/trezor-common index cb238cb1f..c5e54d753 160000 --- a/vendor/trezor-common +++ b/vendor/trezor-common @@ -1 +1 @@ -Subproject commit cb238cb1f134accc4200217d9511115a8f61c6cb +Subproject commit c5e54d7535c8772b9a75ff90c506a28526f94267