diff --git a/.travis.yml b/.travis.yml index bda1613e2..b73627549 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,6 +38,7 @@ script: - test "$GOAL" != "unix" || make build_unix TREZOR_NOUI=1 - test "$GOAL" != "unix" || make test - test "$GOAL" != "unix" || make testpy + - test "$GOAL" != "unix" || make style notifications: webhooks: diff --git a/Makefile b/Makefile index 5dcee7bc3..d5406c1e7 100644 --- a/Makefile +++ b/Makefile @@ -50,6 +50,9 @@ testpy: ## run selected unit tests from python-trezor pylint: ## run pylint on application sources pylint --rcfile=pylint.rc -E $(shell find src -name *.py) +style: ## run code style check on application sources + flake8 --ignore=E221,E241,E402,E501,F401 $(shell find src -name *.py) + ## build commands: build: build_boardloader build_bootloader build_firmware build_unix build_cross ## build all diff --git a/src/apps/common/address_type.py b/src/apps/common/address_type.py index e4401a600..3bc7807fd 100644 --- a/src/apps/common/address_type.py +++ b/src/apps/common/address_type.py @@ -26,6 +26,7 @@ def strip(address_type, raw_address): l = length(address_type) return raw_address[l:] + def split(coin, raw_address): l = None for f in ['', '_p2sh', '_p2wpkh', '_p2wsh']: diff --git a/src/apps/common/signverify.py b/src/apps/common/signverify.py index c3c00b058..8cc5c8ce1 100644 --- a/src/apps/common/signverify.py +++ b/src/apps/common/signverify.py @@ -2,6 +2,7 @@ from trezor.crypto.hashlib import sha256 from apps.wallet.sign_tx.signing import HashWriter, write_varint + def message_digest(coin, message): h = HashWriter(sha256) diff --git a/src/apps/ethereum/__init__.py b/src/apps/ethereum/__init__.py index 972d66d68..ca54eb539 100644 --- a/src/apps/ethereum/__init__.py +++ b/src/apps/ethereum/__init__.py @@ -9,5 +9,6 @@ def dispatch_EthereumGetAddress(*args, **kwargs): from .ethereum_get_address import layout_ethereum_get_address return layout_ethereum_get_address(*args, **kwargs) + def boot(): register(EthereumGetAddress, protobuf_workflow, dispatch_EthereumGetAddress) diff --git a/src/apps/ethereum/ethereum_get_address.py b/src/apps/ethereum/ethereum_get_address.py index d164a61e0..a5b2a0ee6 100644 --- a/src/apps/ethereum/ethereum_get_address.py +++ b/src/apps/ethereum/ethereum_get_address.py @@ -13,8 +13,8 @@ async def layout_ethereum_get_address(session_id, msg): node.derive_path(msg.address_n or ()) seckey = node.private_key() - public_key = secp256k1.publickey(seckey, False) # uncompressed - address = sha3_256(public_key[1:]).digest(True)[12:] # Keccak + public_key = secp256k1.publickey(seckey, False) # uncompressed + address = sha3_256(public_key[1:]).digest(True)[12:] # Keccak if msg.show_display: await _show_address(session_id, address) diff --git a/src/apps/fido_u2f/__init__.py b/src/apps/fido_u2f/__init__.py index c3d5107d9..1d367efe8 100644 --- a/src/apps/fido_u2f/__init__.py +++ b/src/apps/fido_u2f/__init__.py @@ -86,8 +86,8 @@ _APDU_DATA = const(7) # uint8_t data[1]; // Data field def frame_init() -> dict: - # uint32_t cid; // Channel identifier - # uint8_t cmd; // Command - b7 set + # uint32_t cid; // Channel identifier + # uint8_t cmd; // Command - b7 set # uint8_t bcnth; // Message byte count - high part # uint8_t bcntl; // Message byte count - low part # uint8_t data[HID_RPT_SIZE - 7]; // Data payload @@ -100,8 +100,8 @@ def frame_init() -> dict: def frame_cont() -> dict: - # uint32_t cid; // Channel identifier - # uint8_t seq; // Sequence number - b7 cleared + # uint32_t cid; // Channel identifier + # uint8_t seq; // Sequence number - b7 cleared # uint8_t data[HID_RPT_SIZE - 5]; // Data payload return { 'cid': 0 | uctypes.UINT32, @@ -114,7 +114,7 @@ def resp_cmd_init() -> dict: # uint8_t nonce[8]; // Client application nonce # uint32_t cid; // Channel identifier # uint8_t versionInterface; // Interface version - # uint8_t versionMajor; // Major version number + # uint8_t versionMajor; // Major version number # uint8_t versionMinor; // Minor version number # uint8_t versionBuild; // Build version number # uint8_t capFlags; // Capabilities flags @@ -415,8 +415,7 @@ class ConfirmContent(ui.Widget): name = knownapps.knownapps[app_id] icon = res.load('apps/fido_u2f/res/u2f_%s.toif' % name.lower().replace(' ', '_')) else: - name = ubinascii.hexlify(app_id[:4]) + '...' + \ - ubinascii.hexlify(app_id[-4:]) + name = '%s...%s' % (ubinascii.hexlify(app_id[:4]), ubinascii.hexlify(app_id[-4:])) icon = res.load('apps/fido_u2f/res/u2f_unknown.toif') self.app_name = name self.app_icon = icon diff --git a/src/apps/fido_u2f/knownapps.py b/src/apps/fido_u2f/knownapps.py index 91c7fb6fb..97de36108 100644 --- a/src/apps/fido_u2f/knownapps.py +++ b/src/apps/fido_u2f/knownapps.py @@ -1,12 +1,12 @@ from trezor.crypto import hashlib knownapps = { - hashlib.sha256(b'https://bitbucket.org').digest() : 'Bitbucket', - hashlib.sha256(b'https://www.dropbox.com/u2f-app-id.json').digest() : 'Dropbox', - hashlib.sha256(b'https://www.fastmail.com').digest() : 'FastMail', - hashlib.sha256(b'https://github.com/u2f/trusted_facets').digest() : 'GitHub', - hashlib.sha256(b'https://gitlab.com').digest() : 'GitLab', - hashlib.sha256(b'https://www.gstatic.com/securitykey/origins.json').digest() : 'Google', - hashlib.sha256(b'https://slushpool.com/static/security/u2f.json').digest() : 'Slush Pool', - hashlib.sha256(b'https://demo.yubico.com').digest() : 'Yubico U2F Demo', + hashlib.sha256(b'https://bitbucket.org').digest(): 'Bitbucket', + hashlib.sha256(b'https://www.dropbox.com/u2f-app-id.json').digest(): 'Dropbox', + hashlib.sha256(b'https://www.fastmail.com').digest(): 'FastMail', + hashlib.sha256(b'https://github.com/u2f/trusted_facets').digest(): 'GitHub', + hashlib.sha256(b'https://gitlab.com').digest(): 'GitLab', + hashlib.sha256(b'https://www.gstatic.com/securitykey/origins.json').digest(): 'Google', + hashlib.sha256(b'https://slushpool.com/static/security/u2f.json').digest(): 'Slush Pool', + hashlib.sha256(b'https://demo.yubico.com').digest(): 'Yubico U2F Demo', } diff --git a/src/apps/wallet/get_entropy.py b/src/apps/wallet/get_entropy.py index f2353edc6..b7e606bb3 100644 --- a/src/apps/wallet/get_entropy.py +++ b/src/apps/wallet/get_entropy.py @@ -7,7 +7,6 @@ async def layout_get_entropy(session_id, msg): from trezor.messages.Entropy import Entropy from trezor.crypto import random - l = min(msg.size, 1024) await _show_entropy(session_id) diff --git a/src/apps/wallet/sign_identity.py b/src/apps/wallet/sign_identity.py index a81e5ba6c..1696d7a44 100644 --- a/src/apps/wallet/sign_identity.py +++ b/src/apps/wallet/sign_identity.py @@ -53,7 +53,6 @@ def sign_challenge(seckey: bytes, from trezor.crypto.curve import ed25519 from ..common.signverify import message_digest - if sigtype == 'gpg': data = challenge_hidden elif sigtype == 'ssh': @@ -63,8 +62,7 @@ def sign_challenge(seckey: bytes, data = challenge_hidden else: # sigtype is coin - challenge = sha256(challenge_hidden).digest() + \ - sha256(challenge_visual).digest() + challenge = sha256(challenge_hidden).digest() + sha256(challenge_visual).digest() data = message_digest(sigtype, challenge) if curve == 'secp256k1': diff --git a/src/lib/protobuf.py b/src/lib/protobuf.py index 03556d265..1fb47e954 100644 --- a/src/lib/protobuf.py +++ b/src/lib/protobuf.py @@ -162,7 +162,7 @@ class MessageType(Type): @classmethod async def load(cls, source=None, target=None): if target is None: - target = build_protobuf_message(cls) + target = build_message(cls) if source is None: source = StreamReader() try: diff --git a/src/lib/typing.py b/src/lib/typing.py index 003d29ee3..1e8321ed0 100644 --- a/src/lib/typing.py +++ b/src/lib/typing.py @@ -48,6 +48,7 @@ class __dummy: def __getitem__(self, *args): return object + __t = __dummy() for __n in __names_get: @@ -64,4 +65,5 @@ def TypeVar(*args): def NewType(*args): return lambda x: x + TYPE_CHECKING = False diff --git a/src/trezor/crypto/base58.py b/src/trezor/crypto/base58.py index 62b784b33..c3624af0b 100644 --- a/src/trezor/crypto/base58.py +++ b/src/trezor/crypto/base58.py @@ -59,25 +59,23 @@ def decode(string: str) -> bytes: return bytes((b for b in reversed(result + [0] * (origlen - newlen)))) -def encode_check(data: bytes, digestfunc=None) -> str: +def _dsha256_32(data: bytes) -> bytes: + from .hashlib import sha256 + return sha256(sha256(data).digest()).digest()[:4] + + +def encode_check(data: bytes, digestfunc=_dsha256_32) -> str: ''' Convert bytes to base58 encoded string, append checksum. ''' - if digestfunc is None: - from .hashlib import sha256 - digestfunc = lambda x: sha256(sha256(x).digest()).digest()[:4] return encode(data + digestfunc(data)) -def decode_check(string: str, digestfunc=None) -> bytes: +def decode_check(string: str, digestfunc=_dsha256_32) -> bytes: ''' Convert base58 encoded string to bytes and verify checksum. ''' result = decode(string) - - if digestfunc is None: - from .hashlib import sha256 - digestfunc = lambda x: sha256(sha256(x).digest()).digest()[:4] digestlen = len(digestfunc(b'')) result, check = result[:-digestlen], result[-digestlen:] diff --git a/src/trezor/messages/Address.py b/src/trezor/messages/Address.py index 5ba296d0a..36c523295 100644 --- a/src/trezor/messages/Address.py +++ b/src/trezor/messages/Address.py @@ -1,10 +1,9 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class Address(p.MessageType): FIELDS = { - 1: ('address', p.UnicodeType, 0), # required + 1: ('address', p.UnicodeType, 0), # required } MESSAGE_WIRE_TYPE = 30 diff --git a/src/trezor/messages/ApplySettings.py b/src/trezor/messages/ApplySettings.py index 9c47fff33..fbc6848ea 100644 --- a/src/trezor/messages/ApplySettings.py +++ b/src/trezor/messages/ApplySettings.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class ApplySettings(p.MessageType): FIELDS = { 1: ('language', p.UnicodeType, 0), diff --git a/src/trezor/messages/ButtonAck.py b/src/trezor/messages/ButtonAck.py index 0d13f1b1b..08b169183 100644 --- a/src/trezor/messages/ButtonAck.py +++ b/src/trezor/messages/ButtonAck.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class ButtonAck(p.MessageType): MESSAGE_WIRE_TYPE = 27 diff --git a/src/trezor/messages/ButtonRequest.py b/src/trezor/messages/ButtonRequest.py index a53d781f8..cc5f3dd8f 100644 --- a/src/trezor/messages/ButtonRequest.py +++ b/src/trezor/messages/ButtonRequest.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class ButtonRequest(p.MessageType): FIELDS = { 1: ('code', p.UVarintType, 0), diff --git a/src/trezor/messages/Cancel.py b/src/trezor/messages/Cancel.py index cb7bf9e16..4f8a68df7 100644 --- a/src/trezor/messages/Cancel.py +++ b/src/trezor/messages/Cancel.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class Cancel(p.MessageType): MESSAGE_WIRE_TYPE = 20 diff --git a/src/trezor/messages/ChangePin.py b/src/trezor/messages/ChangePin.py index 4201251ae..167b9fef8 100644 --- a/src/trezor/messages/ChangePin.py +++ b/src/trezor/messages/ChangePin.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class ChangePin(p.MessageType): FIELDS = { 1: ('remove', p.BoolType, 0), diff --git a/src/trezor/messages/CipherKeyValue.py b/src/trezor/messages/CipherKeyValue.py index 762cf65f5..d3d157d2f 100644 --- a/src/trezor/messages/CipherKeyValue.py +++ b/src/trezor/messages/CipherKeyValue.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class CipherKeyValue(p.MessageType): FIELDS = { 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), diff --git a/src/trezor/messages/CipheredKeyValue.py b/src/trezor/messages/CipheredKeyValue.py index ec4edc43b..aa7c54e62 100644 --- a/src/trezor/messages/CipheredKeyValue.py +++ b/src/trezor/messages/CipheredKeyValue.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class CipheredKeyValue(p.MessageType): FIELDS = { 1: ('value', p.BytesType, 0), diff --git a/src/trezor/messages/ClearSession.py b/src/trezor/messages/ClearSession.py index 338c75ffe..808d5b76e 100644 --- a/src/trezor/messages/ClearSession.py +++ b/src/trezor/messages/ClearSession.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class ClearSession(p.MessageType): MESSAGE_WIRE_TYPE = 24 diff --git a/src/trezor/messages/CoinType.py b/src/trezor/messages/CoinType.py index ce7b95979..b8f3460c5 100644 --- a/src/trezor/messages/CoinType.py +++ b/src/trezor/messages/CoinType.py @@ -1,17 +1,16 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class CoinType(p.MessageType): FIELDS = { 1: ('coin_name', p.UnicodeType, 0), 2: ('coin_shortcut', p.UnicodeType, 0), - 3: ('address_type', p.UVarintType, 0), # default=0 + 3: ('address_type', p.UVarintType, 0), # default=0 4: ('maxfee_kb', p.UVarintType, 0), - 5: ('address_type_p2sh', p.UVarintType, 0), # default=5 + 5: ('address_type_p2sh', p.UVarintType, 0), # default=5 8: ('signed_message_header', p.UnicodeType, 0), - 9: ('xpub_magic', p.UVarintType, 0), # default=76067358 - 10: ('xprv_magic', p.UVarintType, 0), # default=76066276 + 9: ('xpub_magic', p.UVarintType, 0), # default=76067358 + 10: ('xprv_magic', p.UVarintType, 0), # default=76066276 11: ('segwit', p.BoolType, 0), } diff --git a/src/trezor/messages/DebugLinkDecision.py b/src/trezor/messages/DebugLinkDecision.py index 6257cabd3..445f3129e 100644 --- a/src/trezor/messages/DebugLinkDecision.py +++ b/src/trezor/messages/DebugLinkDecision.py @@ -1,10 +1,9 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class DebugLinkDecision(p.MessageType): FIELDS = { - 1: ('yes_no', p.BoolType, 0), # required + 1: ('yes_no', p.BoolType, 0), # required } MESSAGE_WIRE_TYPE = 100 diff --git a/src/trezor/messages/DebugLinkFlashErase.py b/src/trezor/messages/DebugLinkFlashErase.py index 9a7409a8b..884674bca 100644 --- a/src/trezor/messages/DebugLinkFlashErase.py +++ b/src/trezor/messages/DebugLinkFlashErase.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class DebugLinkFlashErase(p.MessageType): FIELDS = { 1: ('sector', p.UVarintType, 0), diff --git a/src/trezor/messages/DebugLinkGetState.py b/src/trezor/messages/DebugLinkGetState.py index 8acabc81a..35cbbf9af 100644 --- a/src/trezor/messages/DebugLinkGetState.py +++ b/src/trezor/messages/DebugLinkGetState.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class DebugLinkGetState(p.MessageType): MESSAGE_WIRE_TYPE = 101 diff --git a/src/trezor/messages/DebugLinkLog.py b/src/trezor/messages/DebugLinkLog.py index 35a3f2523..d36982404 100644 --- a/src/trezor/messages/DebugLinkLog.py +++ b/src/trezor/messages/DebugLinkLog.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class DebugLinkLog(p.MessageType): FIELDS = { 1: ('level', p.UVarintType, 0), diff --git a/src/trezor/messages/DebugLinkMemory.py b/src/trezor/messages/DebugLinkMemory.py index 2757d2fb3..331497ee7 100644 --- a/src/trezor/messages/DebugLinkMemory.py +++ b/src/trezor/messages/DebugLinkMemory.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class DebugLinkMemory(p.MessageType): FIELDS = { 1: ('memory', p.BytesType, 0), diff --git a/src/trezor/messages/DebugLinkMemoryRead.py b/src/trezor/messages/DebugLinkMemoryRead.py index 27805c9c7..819a146db 100644 --- a/src/trezor/messages/DebugLinkMemoryRead.py +++ b/src/trezor/messages/DebugLinkMemoryRead.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class DebugLinkMemoryRead(p.MessageType): FIELDS = { 1: ('address', p.UVarintType, 0), diff --git a/src/trezor/messages/DebugLinkMemoryWrite.py b/src/trezor/messages/DebugLinkMemoryWrite.py index bb525fbff..abd9478c1 100644 --- a/src/trezor/messages/DebugLinkMemoryWrite.py +++ b/src/trezor/messages/DebugLinkMemoryWrite.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class DebugLinkMemoryWrite(p.MessageType): FIELDS = { 1: ('address', p.UVarintType, 0), diff --git a/src/trezor/messages/DebugLinkState.py b/src/trezor/messages/DebugLinkState.py index a2e265d45..4b8e102b1 100644 --- a/src/trezor/messages/DebugLinkState.py +++ b/src/trezor/messages/DebugLinkState.py @@ -1,9 +1,8 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .HDNodeType import HDNodeType + class DebugLinkState(p.MessageType): FIELDS = { 1: ('layout', p.BytesType, 0), diff --git a/src/trezor/messages/DebugLinkStop.py b/src/trezor/messages/DebugLinkStop.py index e113cdf58..5025da0b9 100644 --- a/src/trezor/messages/DebugLinkStop.py +++ b/src/trezor/messages/DebugLinkStop.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class DebugLinkStop(p.MessageType): MESSAGE_WIRE_TYPE = 103 diff --git a/src/trezor/messages/DecryptMessage.py b/src/trezor/messages/DecryptMessage.py index 09e7c53cc..afe50b977 100644 --- a/src/trezor/messages/DecryptMessage.py +++ b/src/trezor/messages/DecryptMessage.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class DecryptMessage(p.MessageType): FIELDS = { 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), diff --git a/src/trezor/messages/DecryptedMessage.py b/src/trezor/messages/DecryptedMessage.py index 4217b3be7..c294c5998 100644 --- a/src/trezor/messages/DecryptedMessage.py +++ b/src/trezor/messages/DecryptedMessage.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class DecryptedMessage(p.MessageType): FIELDS = { 1: ('message', p.BytesType, 0), diff --git a/src/trezor/messages/ECDHSessionKey.py b/src/trezor/messages/ECDHSessionKey.py index a30cafe1b..df84b553f 100644 --- a/src/trezor/messages/ECDHSessionKey.py +++ b/src/trezor/messages/ECDHSessionKey.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class ECDHSessionKey(p.MessageType): FIELDS = { 1: ('session_key', p.BytesType, 0), diff --git a/src/trezor/messages/EncryptMessage.py b/src/trezor/messages/EncryptMessage.py index 0b0a97e9d..6ed3d54b6 100644 --- a/src/trezor/messages/EncryptMessage.py +++ b/src/trezor/messages/EncryptMessage.py @@ -1,14 +1,13 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class EncryptMessage(p.MessageType): FIELDS = { 1: ('pubkey', p.BytesType, 0), 2: ('message', p.BytesType, 0), 3: ('display_only', p.BoolType, 0), 4: ('address_n', p.UVarintType, p.FLAG_REPEATED), - 5: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' + 5: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' } MESSAGE_WIRE_TYPE = 49 diff --git a/src/trezor/messages/EncryptedMessage.py b/src/trezor/messages/EncryptedMessage.py index 79802d13c..d98cc1d0f 100644 --- a/src/trezor/messages/EncryptedMessage.py +++ b/src/trezor/messages/EncryptedMessage.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class EncryptedMessage(p.MessageType): FIELDS = { 1: ('nonce', p.BytesType, 0), diff --git a/src/trezor/messages/Entropy.py b/src/trezor/messages/Entropy.py index 1f56df239..21d97384f 100644 --- a/src/trezor/messages/Entropy.py +++ b/src/trezor/messages/Entropy.py @@ -1,10 +1,9 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class Entropy(p.MessageType): FIELDS = { - 1: ('entropy', p.BytesType, 0), # required + 1: ('entropy', p.BytesType, 0), # required } MESSAGE_WIRE_TYPE = 10 diff --git a/src/trezor/messages/EntropyAck.py b/src/trezor/messages/EntropyAck.py index ccdb01513..594e102cd 100644 --- a/src/trezor/messages/EntropyAck.py +++ b/src/trezor/messages/EntropyAck.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class EntropyAck(p.MessageType): FIELDS = { 1: ('entropy', p.BytesType, 0), diff --git a/src/trezor/messages/EntropyRequest.py b/src/trezor/messages/EntropyRequest.py index 176f60322..fa732dacc 100644 --- a/src/trezor/messages/EntropyRequest.py +++ b/src/trezor/messages/EntropyRequest.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class EntropyRequest(p.MessageType): MESSAGE_WIRE_TYPE = 35 diff --git a/src/trezor/messages/EstimateTxSize.py b/src/trezor/messages/EstimateTxSize.py index 4272bef9d..5f24fe901 100644 --- a/src/trezor/messages/EstimateTxSize.py +++ b/src/trezor/messages/EstimateTxSize.py @@ -1,12 +1,11 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class EstimateTxSize(p.MessageType): FIELDS = { - 1: ('outputs_count', p.UVarintType, 0), # required - 2: ('inputs_count', p.UVarintType, 0), # required - 3: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' + 1: ('outputs_count', p.UVarintType, 0), # required + 2: ('inputs_count', p.UVarintType, 0), # required + 3: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' } MESSAGE_WIRE_TYPE = 43 diff --git a/src/trezor/messages/EthereumAddress.py b/src/trezor/messages/EthereumAddress.py index c41a1c2b6..69da373e3 100644 --- a/src/trezor/messages/EthereumAddress.py +++ b/src/trezor/messages/EthereumAddress.py @@ -1,10 +1,9 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class EthereumAddress(p.MessageType): FIELDS = { - 1: ('address', p.BytesType, 0), # required + 1: ('address', p.BytesType, 0), # required } MESSAGE_WIRE_TYPE = 57 diff --git a/src/trezor/messages/EthereumGetAddress.py b/src/trezor/messages/EthereumGetAddress.py index fb454bed3..b4b594f17 100644 --- a/src/trezor/messages/EthereumGetAddress.py +++ b/src/trezor/messages/EthereumGetAddress.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class EthereumGetAddress(p.MessageType): FIELDS = { 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), diff --git a/src/trezor/messages/EthereumSignTx.py b/src/trezor/messages/EthereumSignTx.py index 2703337d3..ddac9034f 100644 --- a/src/trezor/messages/EthereumSignTx.py +++ b/src/trezor/messages/EthereumSignTx.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class EthereumSignTx(p.MessageType): FIELDS = { 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), diff --git a/src/trezor/messages/EthereumTxAck.py b/src/trezor/messages/EthereumTxAck.py index 67705ef40..a0226364e 100644 --- a/src/trezor/messages/EthereumTxAck.py +++ b/src/trezor/messages/EthereumTxAck.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class EthereumTxAck(p.MessageType): FIELDS = { 1: ('data_chunk', p.BytesType, 0), diff --git a/src/trezor/messages/EthereumTxRequest.py b/src/trezor/messages/EthereumTxRequest.py index 37d7008d7..a837c8df8 100644 --- a/src/trezor/messages/EthereumTxRequest.py +++ b/src/trezor/messages/EthereumTxRequest.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class EthereumTxRequest(p.MessageType): FIELDS = { 1: ('data_length', p.UVarintType, 0), diff --git a/src/trezor/messages/Failure.py b/src/trezor/messages/Failure.py index 19118310d..50d86f590 100644 --- a/src/trezor/messages/Failure.py +++ b/src/trezor/messages/Failure.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class Failure(p.MessageType): FIELDS = { 1: ('code', p.UVarintType, 0), diff --git a/src/trezor/messages/Features.py b/src/trezor/messages/Features.py index e86b47132..a9261598f 100644 --- a/src/trezor/messages/Features.py +++ b/src/trezor/messages/Features.py @@ -1,9 +1,8 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .CoinType import CoinType + class Features(p.MessageType): FIELDS = { 1: ('vendor', p.UnicodeType, 0), diff --git a/src/trezor/messages/FirmwareErase.py b/src/trezor/messages/FirmwareErase.py index a0c036e8d..c1b396999 100644 --- a/src/trezor/messages/FirmwareErase.py +++ b/src/trezor/messages/FirmwareErase.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class FirmwareErase(p.MessageType): MESSAGE_WIRE_TYPE = 6 diff --git a/src/trezor/messages/FirmwareRequest.py b/src/trezor/messages/FirmwareRequest.py index bb1f65d39..a91f9a8db 100644 --- a/src/trezor/messages/FirmwareRequest.py +++ b/src/trezor/messages/FirmwareRequest.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class FirmwareRequest(p.MessageType): FIELDS = { 1: ('offset', p.UVarintType, 0), diff --git a/src/trezor/messages/FirmwareUpload.py b/src/trezor/messages/FirmwareUpload.py index ae37d13a9..489e45d1e 100644 --- a/src/trezor/messages/FirmwareUpload.py +++ b/src/trezor/messages/FirmwareUpload.py @@ -1,11 +1,10 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class FirmwareUpload(p.MessageType): FIELDS = { - 1: ('payload', p.BytesType, 0), # required + 1: ('payload', p.BytesType, 0), # required 2: ('hash', p.BytesType, 0), } MESSAGE_WIRE_TYPE = 7 diff --git a/src/trezor/messages/GetAddress.py b/src/trezor/messages/GetAddress.py index 82fcbd872..175a33153 100644 --- a/src/trezor/messages/GetAddress.py +++ b/src/trezor/messages/GetAddress.py @@ -1,15 +1,14 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .MultisigRedeemScriptType import MultisigRedeemScriptType + class GetAddress(p.MessageType): FIELDS = { 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), - 2: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' + 2: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' 3: ('show_display', p.BoolType, 0), 4: ('multisig', MultisigRedeemScriptType, 0), - 5: ('script_type', p.UVarintType, 0), # default=0 + 5: ('script_type', p.UVarintType, 0), # default=0 } MESSAGE_WIRE_TYPE = 29 diff --git a/src/trezor/messages/GetECDHSessionKey.py b/src/trezor/messages/GetECDHSessionKey.py index e3c8dab4e..d6cf310a2 100644 --- a/src/trezor/messages/GetECDHSessionKey.py +++ b/src/trezor/messages/GetECDHSessionKey.py @@ -1,9 +1,8 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .IdentityType import IdentityType + class GetECDHSessionKey(p.MessageType): FIELDS = { 1: ('identity', IdentityType, 0), diff --git a/src/trezor/messages/GetEntropy.py b/src/trezor/messages/GetEntropy.py index ff6f9ea1c..ded2c81d1 100644 --- a/src/trezor/messages/GetEntropy.py +++ b/src/trezor/messages/GetEntropy.py @@ -1,10 +1,9 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class GetEntropy(p.MessageType): FIELDS = { - 1: ('size', p.UVarintType, 0), # required + 1: ('size', p.UVarintType, 0), # required } MESSAGE_WIRE_TYPE = 9 diff --git a/src/trezor/messages/GetFeatures.py b/src/trezor/messages/GetFeatures.py index 2648583ef..85862a621 100644 --- a/src/trezor/messages/GetFeatures.py +++ b/src/trezor/messages/GetFeatures.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class GetFeatures(p.MessageType): MESSAGE_WIRE_TYPE = 55 diff --git a/src/trezor/messages/GetPublicKey.py b/src/trezor/messages/GetPublicKey.py index 5904134fd..0bb964012 100644 --- a/src/trezor/messages/GetPublicKey.py +++ b/src/trezor/messages/GetPublicKey.py @@ -1,13 +1,12 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class GetPublicKey(p.MessageType): FIELDS = { 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), 2: ('ecdsa_curve_name', p.UnicodeType, 0), 3: ('show_display', p.BoolType, 0), - 4: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' + 4: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' } MESSAGE_WIRE_TYPE = 11 diff --git a/src/trezor/messages/HDNodePathType.py b/src/trezor/messages/HDNodePathType.py index 1068b0c21..f3284a159 100644 --- a/src/trezor/messages/HDNodePathType.py +++ b/src/trezor/messages/HDNodePathType.py @@ -1,11 +1,10 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .HDNodeType import HDNodeType + class HDNodePathType(p.MessageType): FIELDS = { - 1: ('node', HDNodeType, 0), # required + 1: ('node', HDNodeType, 0), # required 2: ('address_n', p.UVarintType, p.FLAG_REPEATED), } diff --git a/src/trezor/messages/HDNodeType.py b/src/trezor/messages/HDNodeType.py index 778909836..a1995795d 100644 --- a/src/trezor/messages/HDNodeType.py +++ b/src/trezor/messages/HDNodeType.py @@ -1,14 +1,13 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class HDNodeType(p.MessageType): FIELDS = { - 1: ('depth', p.UVarintType, 0), # required - 2: ('fingerprint', p.UVarintType, 0), # required - 3: ('child_num', p.UVarintType, 0), # required - 4: ('chain_code', p.BytesType, 0), # required + 1: ('depth', p.UVarintType, 0), # required + 2: ('fingerprint', p.UVarintType, 0), # required + 3: ('child_num', p.UVarintType, 0), # required + 4: ('chain_code', p.BytesType, 0), # required 5: ('private_key', p.BytesType, 0), 6: ('public_key', p.BytesType, 0), } diff --git a/src/trezor/messages/IdentityType.py b/src/trezor/messages/IdentityType.py index 0455a145d..8cf650579 100644 --- a/src/trezor/messages/IdentityType.py +++ b/src/trezor/messages/IdentityType.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class IdentityType(p.MessageType): FIELDS = { 1: ('proto', p.UnicodeType, 0), @@ -10,5 +9,5 @@ class IdentityType(p.MessageType): 3: ('host', p.UnicodeType, 0), 4: ('port', p.UnicodeType, 0), 5: ('path', p.UnicodeType, 0), - 6: ('index', p.UVarintType, 0), # default=0 + 6: ('index', p.UVarintType, 0), # default=0 } diff --git a/src/trezor/messages/Initialize.py b/src/trezor/messages/Initialize.py index 0c4cb1492..53203eb5a 100644 --- a/src/trezor/messages/Initialize.py +++ b/src/trezor/messages/Initialize.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class Initialize(p.MessageType): MESSAGE_WIRE_TYPE = 0 diff --git a/src/trezor/messages/LoadDevice.py b/src/trezor/messages/LoadDevice.py index 2f272b9ba..5ccbdd201 100644 --- a/src/trezor/messages/LoadDevice.py +++ b/src/trezor/messages/LoadDevice.py @@ -1,16 +1,15 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .HDNodeType import HDNodeType + class LoadDevice(p.MessageType): FIELDS = { 1: ('mnemonic', p.UnicodeType, 0), 2: ('node', HDNodeType, 0), 3: ('pin', p.UnicodeType, 0), 4: ('passphrase_protection', p.BoolType, 0), - 5: ('language', p.UnicodeType, 0), # default=u'english' + 5: ('language', p.UnicodeType, 0), # default=u'english' 6: ('label', p.UnicodeType, 0), 7: ('skip_checksum', p.BoolType, 0), 8: ('u2f_counter', p.UVarintType, 0), diff --git a/src/trezor/messages/MessageSignature.py b/src/trezor/messages/MessageSignature.py index 3c6c7f01b..337c62842 100644 --- a/src/trezor/messages/MessageSignature.py +++ b/src/trezor/messages/MessageSignature.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class MessageSignature(p.MessageType): FIELDS = { 1: ('address', p.UnicodeType, 0), diff --git a/src/trezor/messages/MultisigRedeemScriptType.py b/src/trezor/messages/MultisigRedeemScriptType.py index c06f0a6e6..6f4e05b0b 100644 --- a/src/trezor/messages/MultisigRedeemScriptType.py +++ b/src/trezor/messages/MultisigRedeemScriptType.py @@ -1,9 +1,8 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .HDNodePathType import HDNodePathType + class MultisigRedeemScriptType(p.MessageType): FIELDS = { 1: ('pubkeys', HDNodePathType, p.FLAG_REPEATED), diff --git a/src/trezor/messages/PassphraseAck.py b/src/trezor/messages/PassphraseAck.py index db33e825b..c876aebc1 100644 --- a/src/trezor/messages/PassphraseAck.py +++ b/src/trezor/messages/PassphraseAck.py @@ -1,10 +1,9 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class PassphraseAck(p.MessageType): FIELDS = { - 1: ('passphrase', p.UnicodeType, 0), # required + 1: ('passphrase', p.UnicodeType, 0), # required } MESSAGE_WIRE_TYPE = 42 diff --git a/src/trezor/messages/PassphraseRequest.py b/src/trezor/messages/PassphraseRequest.py index 7d3976b77..ebbd1fced 100644 --- a/src/trezor/messages/PassphraseRequest.py +++ b/src/trezor/messages/PassphraseRequest.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class PassphraseRequest(p.MessageType): MESSAGE_WIRE_TYPE = 41 diff --git a/src/trezor/messages/PinMatrixAck.py b/src/trezor/messages/PinMatrixAck.py index db318827e..294ed5a1b 100644 --- a/src/trezor/messages/PinMatrixAck.py +++ b/src/trezor/messages/PinMatrixAck.py @@ -1,10 +1,9 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class PinMatrixAck(p.MessageType): FIELDS = { - 1: ('pin', p.UnicodeType, 0), # required + 1: ('pin', p.UnicodeType, 0), # required } MESSAGE_WIRE_TYPE = 19 diff --git a/src/trezor/messages/PinMatrixRequest.py b/src/trezor/messages/PinMatrixRequest.py index 8a7399110..9f9c68b27 100644 --- a/src/trezor/messages/PinMatrixRequest.py +++ b/src/trezor/messages/PinMatrixRequest.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class PinMatrixRequest(p.MessageType): FIELDS = { 1: ('type', p.UVarintType, 0), diff --git a/src/trezor/messages/Ping.py b/src/trezor/messages/Ping.py index 6ee6be7e4..ab40301d3 100644 --- a/src/trezor/messages/Ping.py +++ b/src/trezor/messages/Ping.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class Ping(p.MessageType): FIELDS = { 1: ('message', p.UnicodeType, 0), diff --git a/src/trezor/messages/PublicKey.py b/src/trezor/messages/PublicKey.py index 98f81d400..ebcc7d42e 100644 --- a/src/trezor/messages/PublicKey.py +++ b/src/trezor/messages/PublicKey.py @@ -1,12 +1,11 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .HDNodeType import HDNodeType + class PublicKey(p.MessageType): FIELDS = { - 1: ('node', HDNodeType, 0), # required + 1: ('node', HDNodeType, 0), # required 2: ('xpub', p.UnicodeType, 0), } MESSAGE_WIRE_TYPE = 12 diff --git a/src/trezor/messages/RecoveryDevice.py b/src/trezor/messages/RecoveryDevice.py index 7706ca762..c48fe295a 100644 --- a/src/trezor/messages/RecoveryDevice.py +++ b/src/trezor/messages/RecoveryDevice.py @@ -1,14 +1,13 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class RecoveryDevice(p.MessageType): FIELDS = { 1: ('word_count', p.UVarintType, 0), 2: ('passphrase_protection', p.BoolType, 0), 3: ('pin_protection', p.BoolType, 0), - 4: ('language', p.UnicodeType, 0), # default=u'english' + 4: ('language', p.UnicodeType, 0), # default=u'english' 5: ('label', p.UnicodeType, 0), 6: ('enforce_wordlist', p.BoolType, 0), 8: ('type', p.UVarintType, 0), diff --git a/src/trezor/messages/ResetDevice.py b/src/trezor/messages/ResetDevice.py index 81bce11ca..e6bf3da9f 100644 --- a/src/trezor/messages/ResetDevice.py +++ b/src/trezor/messages/ResetDevice.py @@ -1,15 +1,14 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class ResetDevice(p.MessageType): FIELDS = { 1: ('display_random', p.BoolType, 0), - 2: ('strength', p.UVarintType, 0), # default=256 + 2: ('strength', p.UVarintType, 0), # default=256 3: ('passphrase_protection', p.BoolType, 0), 4: ('pin_protection', p.BoolType, 0), - 5: ('language', p.UnicodeType, 0), # default=u'english' + 5: ('language', p.UnicodeType, 0), # default=u'english' 6: ('label', p.UnicodeType, 0), 7: ('u2f_counter', p.UVarintType, 0), } diff --git a/src/trezor/messages/SetU2FCounter.py b/src/trezor/messages/SetU2FCounter.py index d72a3ce44..c2f487c66 100644 --- a/src/trezor/messages/SetU2FCounter.py +++ b/src/trezor/messages/SetU2FCounter.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class SetU2FCounter(p.MessageType): FIELDS = { 1: ('u2f_counter', p.UVarintType, 0), diff --git a/src/trezor/messages/SignIdentity.py b/src/trezor/messages/SignIdentity.py index 63620c632..dbd5fafed 100644 --- a/src/trezor/messages/SignIdentity.py +++ b/src/trezor/messages/SignIdentity.py @@ -1,9 +1,8 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .IdentityType import IdentityType + class SignIdentity(p.MessageType): FIELDS = { 1: ('identity', IdentityType, 0), diff --git a/src/trezor/messages/SignMessage.py b/src/trezor/messages/SignMessage.py index a11774b12..f9ba023f3 100644 --- a/src/trezor/messages/SignMessage.py +++ b/src/trezor/messages/SignMessage.py @@ -1,12 +1,11 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class SignMessage(p.MessageType): FIELDS = { 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), - 2: ('message', p.BytesType, 0), # required - 3: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' + 2: ('message', p.BytesType, 0), # required + 3: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' } MESSAGE_WIRE_TYPE = 38 diff --git a/src/trezor/messages/SignTx.py b/src/trezor/messages/SignTx.py index 34cc42ac7..45f2f2aab 100644 --- a/src/trezor/messages/SignTx.py +++ b/src/trezor/messages/SignTx.py @@ -1,14 +1,13 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class SignTx(p.MessageType): FIELDS = { - 1: ('outputs_count', p.UVarintType, 0), # required - 2: ('inputs_count', p.UVarintType, 0), # required - 3: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' - 4: ('version', p.UVarintType, 0), # default=1 - 5: ('lock_time', p.UVarintType, 0), # default=0 + 1: ('outputs_count', p.UVarintType, 0), # required + 2: ('inputs_count', p.UVarintType, 0), # required + 3: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' + 4: ('version', p.UVarintType, 0), # default=1 + 5: ('lock_time', p.UVarintType, 0), # default=0 } MESSAGE_WIRE_TYPE = 15 diff --git a/src/trezor/messages/SignedIdentity.py b/src/trezor/messages/SignedIdentity.py index f9735b57e..2c7e25c64 100644 --- a/src/trezor/messages/SignedIdentity.py +++ b/src/trezor/messages/SignedIdentity.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class SignedIdentity(p.MessageType): FIELDS = { 1: ('address', p.UnicodeType, 0), diff --git a/src/trezor/messages/SimpleSignTx.py b/src/trezor/messages/SimpleSignTx.py index 93704e574..920c9f634 100644 --- a/src/trezor/messages/SimpleSignTx.py +++ b/src/trezor/messages/SimpleSignTx.py @@ -1,18 +1,17 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .TxInputType import TxInputType from .TxOutputType import TxOutputType from .TransactionType import TransactionType + class SimpleSignTx(p.MessageType): FIELDS = { 1: ('inputs', TxInputType, p.FLAG_REPEATED), 2: ('outputs', TxOutputType, p.FLAG_REPEATED), 3: ('transactions', TransactionType, p.FLAG_REPEATED), - 4: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' - 5: ('version', p.UVarintType, 0), # default=1 - 6: ('lock_time', p.UVarintType, 0), # default=0 + 4: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' + 5: ('version', p.UVarintType, 0), # default=1 + 6: ('lock_time', p.UVarintType, 0), # default=0 } MESSAGE_WIRE_TYPE = 16 diff --git a/src/trezor/messages/Storage.py b/src/trezor/messages/Storage.py index dbf1da13d..b9ad4fa0f 100644 --- a/src/trezor/messages/Storage.py +++ b/src/trezor/messages/Storage.py @@ -1,12 +1,11 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .HDNodeType import HDNodeType + class Storage(p.MessageType): FIELDS = { - 1: ('version', p.UVarintType, 0), # required + 1: ('version', p.UVarintType, 0), # required 2: ('node', HDNodeType, 0), 3: ('mnemonic', p.UnicodeType, 0), 4: ('passphrase_protection', p.BoolType, 0), diff --git a/src/trezor/messages/Success.py b/src/trezor/messages/Success.py index dc9f9c7e0..9dd722ca0 100644 --- a/src/trezor/messages/Success.py +++ b/src/trezor/messages/Success.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class Success(p.MessageType): FIELDS = { 1: ('message', p.UnicodeType, 0), diff --git a/src/trezor/messages/TransactionType.py b/src/trezor/messages/TransactionType.py index efbda48df..877eeba04 100644 --- a/src/trezor/messages/TransactionType.py +++ b/src/trezor/messages/TransactionType.py @@ -1,11 +1,10 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .TxInputType import TxInputType from .TxOutputBinType import TxOutputBinType from .TxOutputType import TxOutputType + class TransactionType(p.MessageType): FIELDS = { 1: ('version', p.UVarintType, 0), diff --git a/src/trezor/messages/TxAck.py b/src/trezor/messages/TxAck.py index fe720e132..9e0b7cc11 100644 --- a/src/trezor/messages/TxAck.py +++ b/src/trezor/messages/TxAck.py @@ -1,9 +1,8 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .TransactionType import TransactionType + class TxAck(p.MessageType): FIELDS = { 1: ('tx', TransactionType, 0), diff --git a/src/trezor/messages/TxInputType.py b/src/trezor/messages/TxInputType.py index c44008e27..454152003 100644 --- a/src/trezor/messages/TxInputType.py +++ b/src/trezor/messages/TxInputType.py @@ -1,17 +1,16 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .MultisigRedeemScriptType import MultisigRedeemScriptType + class TxInputType(p.MessageType): FIELDS = { 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), - 2: ('prev_hash', p.BytesType, 0), # required - 3: ('prev_index', p.UVarintType, 0), # required + 2: ('prev_hash', p.BytesType, 0), # required + 3: ('prev_index', p.UVarintType, 0), # required 4: ('script_sig', p.BytesType, 0), - 5: ('sequence', p.UVarintType, 0), # default=4294967295 - 6: ('script_type', p.UVarintType, 0), # default=0 + 5: ('sequence', p.UVarintType, 0), # default=4294967295 + 6: ('script_type', p.UVarintType, 0), # default=0 7: ('multisig', MultisigRedeemScriptType, 0), 8: ('amount', p.UVarintType, 0), } diff --git a/src/trezor/messages/TxOutputBinType.py b/src/trezor/messages/TxOutputBinType.py index ce6da0398..5c3b3f136 100644 --- a/src/trezor/messages/TxOutputBinType.py +++ b/src/trezor/messages/TxOutputBinType.py @@ -1,10 +1,9 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class TxOutputBinType(p.MessageType): FIELDS = { - 1: ('amount', p.UVarintType, 0), # required - 2: ('script_pubkey', p.BytesType, 0), # required + 1: ('amount', p.UVarintType, 0), # required + 2: ('script_pubkey', p.BytesType, 0), # required } diff --git a/src/trezor/messages/TxOutputType.py b/src/trezor/messages/TxOutputType.py index 302150187..57fe0deec 100644 --- a/src/trezor/messages/TxOutputType.py +++ b/src/trezor/messages/TxOutputType.py @@ -1,15 +1,14 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .MultisigRedeemScriptType import MultisigRedeemScriptType + class TxOutputType(p.MessageType): FIELDS = { 1: ('address', p.UnicodeType, 0), 2: ('address_n', p.UVarintType, p.FLAG_REPEATED), - 3: ('amount', p.UVarintType, 0), # required - 4: ('script_type', p.UVarintType, 0), # required + 3: ('amount', p.UVarintType, 0), # required + 4: ('script_type', p.UVarintType, 0), # required 5: ('multisig', MultisigRedeemScriptType, 0), 6: ('op_return_data', p.BytesType, 0), } diff --git a/src/trezor/messages/TxRequest.py b/src/trezor/messages/TxRequest.py index 469e9a176..ac9fd784c 100644 --- a/src/trezor/messages/TxRequest.py +++ b/src/trezor/messages/TxRequest.py @@ -1,10 +1,9 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p from .TxRequestDetailsType import TxRequestDetailsType from .TxRequestSerializedType import TxRequestSerializedType + class TxRequest(p.MessageType): FIELDS = { 1: ('request_type', p.UVarintType, 0), diff --git a/src/trezor/messages/TxRequestDetailsType.py b/src/trezor/messages/TxRequestDetailsType.py index ee8f340f2..7057e466a 100644 --- a/src/trezor/messages/TxRequestDetailsType.py +++ b/src/trezor/messages/TxRequestDetailsType.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class TxRequestDetailsType(p.MessageType): FIELDS = { 1: ('request_index', p.UVarintType, 0), diff --git a/src/trezor/messages/TxRequestSerializedType.py b/src/trezor/messages/TxRequestSerializedType.py index 5cc7445e3..32f7b78c3 100644 --- a/src/trezor/messages/TxRequestSerializedType.py +++ b/src/trezor/messages/TxRequestSerializedType.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class TxRequestSerializedType(p.MessageType): FIELDS = { 1: ('signature_index', p.UVarintType, 0), diff --git a/src/trezor/messages/TxSize.py b/src/trezor/messages/TxSize.py index d092ff9ec..272954b16 100644 --- a/src/trezor/messages/TxSize.py +++ b/src/trezor/messages/TxSize.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class TxSize(p.MessageType): FIELDS = { 1: ('tx_size', p.UVarintType, 0), diff --git a/src/trezor/messages/VerifyMessage.py b/src/trezor/messages/VerifyMessage.py index 08e5bcf62..9cc4cb1dc 100644 --- a/src/trezor/messages/VerifyMessage.py +++ b/src/trezor/messages/VerifyMessage.py @@ -1,13 +1,12 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class VerifyMessage(p.MessageType): FIELDS = { 1: ('address', p.UnicodeType, 0), 2: ('signature', p.BytesType, 0), 3: ('message', p.BytesType, 0), - 4: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' + 4: ('coin_name', p.UnicodeType, 0), # default=u'Bitcoin' } MESSAGE_WIRE_TYPE = 39 diff --git a/src/trezor/messages/WipeDevice.py b/src/trezor/messages/WipeDevice.py index 71b422909..483fd6d25 100644 --- a/src/trezor/messages/WipeDevice.py +++ b/src/trezor/messages/WipeDevice.py @@ -1,7 +1,6 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class WipeDevice(p.MessageType): MESSAGE_WIRE_TYPE = 5 diff --git a/src/trezor/messages/WordAck.py b/src/trezor/messages/WordAck.py index 5f04f3260..8f9b8ac9d 100644 --- a/src/trezor/messages/WordAck.py +++ b/src/trezor/messages/WordAck.py @@ -1,10 +1,9 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class WordAck(p.MessageType): FIELDS = { - 1: ('word', p.UnicodeType, 0), # required + 1: ('word', p.UnicodeType, 0), # required } MESSAGE_WIRE_TYPE = 47 diff --git a/src/trezor/messages/WordRequest.py b/src/trezor/messages/WordRequest.py index 5077ff7b4..715473258 100644 --- a/src/trezor/messages/WordRequest.py +++ b/src/trezor/messages/WordRequest.py @@ -1,8 +1,7 @@ # Automatically generated by pb2py -from micropython import const - import protobuf as p + class WordRequest(p.MessageType): FIELDS = { 1: ('type', p.UVarintType, 0), diff --git a/src/trezor/messages/__init__.py b/src/trezor/messages/__init__.py index 08366ef61..e626cc27c 100644 --- a/src/trezor/messages/__init__.py +++ b/src/trezor/messages/__init__.py @@ -9,5 +9,5 @@ def get_protobuf_type_name(wire_type): def get_protobuf_type(wire_type): name = get_protobuf_type_name(wire_type) - module = __import__('trezor.messages.%s' % name, None, None, (name,) , 0) + module = __import__('trezor.messages.%s' % name, None, None, (name, ), 0) return getattr(module, name) diff --git a/src/trezor/res/__init__.py b/src/trezor/res/__init__.py index 30482720b..30e72c3e4 100644 --- a/src/trezor/res/__init__.py +++ b/src/trezor/res/__init__.py @@ -20,4 +20,5 @@ def gettext(message): ''' return message + _ = gettext diff --git a/src/trezor/ui/__init__.py b/src/trezor/ui/__init__.py index 3d769d75a..6cb9fcb4a 100644 --- a/src/trezor/ui/__init__.py +++ b/src/trezor/ui/__init__.py @@ -18,9 +18,9 @@ def rgbcolor(r: int, g: int, b: int) -> int: LIGHT_RED = rgbcolor(0xFF, 0x00, 0x00) -#RED E4572E +# RED E4572E RED = rgbcolor(0xE4, 0x57, 0x2E) -#ACTIVE DARK RED A64022 +# ACTIVE DARK RED A64022 ACTIVE_RED = rgbcolor(0xA6, 0x40, 0x22) PINK = rgbcolor(0xE9, 0x1E, 0x63) PURPLE = rgbcolor(0x9C, 0x27, 0xB0) @@ -31,9 +31,9 @@ LIGHT_BLUE = rgbcolor(0x03, 0xA9, 0xF4) CYAN = rgbcolor(0x00, 0xBC, 0xD4) TEAL = rgbcolor(0x00, 0x96, 0x88) -#GREEN 4CC148 +# GREEN 4CC148 GREEN = rgbcolor(0x4C, 0xC1, 0x48) -#ACTIVE DARK GREEN 1A8C14 +# ACTIVE DARK GREEN 1A8C14 ACTIVE_GREEN = rgbcolor(0x1A, 0x8C, 0x14) LIGHT_GREEN = rgbcolor(0x87, 0xCE, 0x26) diff --git a/src/trezor/ui/swipe.py b/src/trezor/ui/swipe.py index ae0e01457..64a476905 100644 --- a/src/trezor/ui/swipe.py +++ b/src/trezor/ui/swipe.py @@ -42,9 +42,9 @@ class Swipe(ui.Widget): # check if its vertical scroll up velya = abs(pdy / td) if td > 0 else 1 ratio = int(pdxa / pdya * 100) if pdya > 0 else 100 - if (velya >= _SWIPE_VELOCITY_THRESHOLD - and pdya >= _SWIPE_DISTANCE_THRESHOLD - and ratio <= _SWIPE_RATIO_THRESHOLD): + if (velya >= _SWIPE_VELOCITY_THRESHOLD and + pdya >= _SWIPE_DISTANCE_THRESHOLD and + ratio <= _SWIPE_RATIO_THRESHOLD): light = ui.display.backlight() if light > self.light_target: light -= 5 @@ -68,17 +68,17 @@ class Swipe(ui.Widget): # Horizontal direction velxa = abs(pdx / td) ratio = int(pdya / pdxa * 100) if pdxa > 0 else 100 - if (velxa >= _SWIPE_VELOCITY_THRESHOLD - and pdxa >= _SWIPE_DISTANCE_THRESHOLD - and ratio <= _SWIPE_RATIO_THRESHOLD): + if (velxa >= _SWIPE_VELOCITY_THRESHOLD and + pdxa >= _SWIPE_DISTANCE_THRESHOLD and + ratio <= _SWIPE_RATIO_THRESHOLD): return SWIPE_RIGHT if pdx > 0 else SWIPE_LEFT else: # Vertical direction velya = abs(pdy / td) ratio = int(pdxa / pdya * 100) if pdya > 0 else 100 - if (velya >= _SWIPE_VELOCITY_THRESHOLD - and pdya >= _SWIPE_DISTANCE_THRESHOLD - and ratio <= _SWIPE_RATIO_THRESHOLD): + if (velya >= _SWIPE_VELOCITY_THRESHOLD and + pdya >= _SWIPE_DISTANCE_THRESHOLD and + ratio <= _SWIPE_RATIO_THRESHOLD): if pdy < 0: ui.display.backlight(self.light_origin) return SWIPE_DOWN if pdy > 0 else SWIPE_UP diff --git a/tools/build_protobuf b/tools/build_protobuf index 627b74fa6..c5d8eba7d 100755 --- a/tools/build_protobuf +++ b/tools/build_protobuf @@ -3,6 +3,8 @@ CURDIR=$(pwd) mkdir -p $CURDIR/pb2/ echo > $CURDIR/pb2/__init__.py +mkdir -p ../src/trezor/messages + INDEX=../src/trezor/messages/wire_types.py rm -f $INDEX echo '# Automatically generated by pb2py' >> $INDEX @@ -18,7 +20,7 @@ done for i in types messages storage ; do # Convert google protobuf library to trezor's internal format cd $CURDIR - ../../trezor-common/tools/pb2py -m -p $CURDIR -i $INDEX $i ../src/trezor/messages/ + ./pb2py -m -p $CURDIR -i $INDEX $i ../src/trezor/messages/ done rm -rf $CURDIR/pb2/ diff --git a/tools/pb2py b/tools/pb2py new file mode 100755 index 000000000..3b2032baf --- /dev/null +++ b/tools/pb2py @@ -0,0 +1,189 @@ +#!/usr/bin/env python +# Converts Google's protobuf python definitions of TREZOR wire messages +# to plain-python objects as used in TREZOR Core and python-trezor + +import sys +import os +import argparse + +from google.protobuf.internal.enum_type_wrapper import EnumTypeWrapper + + +def process_type(t, cls, msg_id, indexfile, is_upy): + print(" * type %s" % t) + + imports = ['import protobuf as p'] + + out = ["", "", "class %s(p.MessageType):" % t, ] + + if cls.DESCRIPTOR.fields_by_name: + out.append(" FIELDS = {") + elif msg_id is None: + out.append(" pass") + + for v in sorted(cls.DESCRIPTOR.fields_by_name.values(), key=lambda x: x.number): + number = v.number + fieldname = v.name + type = None + repeated = v.label == 3 + required = v.label == 2 + + # print v.has_default_value, v.default_value + + if v.type in (4, 13, 14): + # TYPE_UINT64 = 4 + # TYPE_UINT32 = 13 + # TYPE_ENUM = 14 + type = 'p.UVarintType' + + elif v.type == 9: + # TYPE_STRING = 9 + type = 'p.UnicodeType' + + elif v.type == 8: + # TYPE_BOOL = 8 + type = 'p.BoolType' + + elif v.type == 12: + # TYPE_BYTES = 12 + type = 'p.BytesType' + + elif v.type == 11: + # TYPE_MESSAGE = 1 + type = v.message_type.name + imports.append("from .%s import %s" % + (v.message_type.name, v.message_type.name)) + + else: + raise Exception("Unknown field type %s for field %s" % + (v.type, fieldname)) + + if required: + comment = ' # required' + elif v.has_default_value: + comment = ' # default=%s' % repr(v.default_value) + else: + comment = '' + + if repeated: + flags = 'p.FLAG_REPEATED' + else: + flags = '0' + + out.append(" %d: ('%s', %s, %s),%s" % + (number, fieldname, type, flags, comment)) + + # print fieldname, number, type, repeated, comment + # print v.__dict__ + # print v.CPPTYPE_STRING + # print v.LABEL_REPEATED + # print v.enum_type + # v.has_default_value, v.default_value + # v.label == 3 # repeated + # print v.number + + if cls.DESCRIPTOR.fields_by_name: + out.append(" }") + + if msg_id is not None: + out.append(" MESSAGE_WIRE_TYPE = %d" % msg_id) + if indexfile is not None: + if is_upy: + indexfile.write("%s = const(%d)\n" % (t, msg_id)) + else: + indexfile.write("%s = %d\n" % (t, msg_id)) + + return imports + out + + +def process_enum(t, cls, is_upy): + out = [] + + if is_upy: + out += ("from micropython import const", "") + + print(" * enum %s" % t) + + for k, v in cls.items(): + # Remove type name from the beginning of the constant + # For example "PinMatrixRequestType_Current" -> "Current" + if k.startswith("%s_" % t): + k = k.replace("%s_" % t, '') + + # If type ends with *Type, but constant use type name without *Type, remove it too :) + # For example "ButtonRequestType & ButtonRequest_Other" => "Other" + if t.endswith("Type") and k.startswith("%s_" % t.replace("Type", '')): + k = k.replace("%s_" % t.replace("Type", ''), '') + + if is_upy: + out.append("%s = const(%s)" % (k, v)) + else: + out.append("%s = %s" % (k, v)) + + return out + + +def find_msg_type(msg_types, t): + for k, v in msg_types: + msg_name = k.replace('MessageType_', '') + if msg_name == t: + return v + + +def process_module(mod, genpath, indexfile, is_upy): + + print("Processing module %s" % mod.__name__) + types = dict([(name, cls) + for name, cls in mod.__dict__.items() if isinstance(cls, type)]) + + msg_types = __import__('pb2', globals(), locals(), [ + 'messages_pb2', ]).messages_pb2.MessageType.items() + + for t, cls in types.items(): + # Find message type for given class + msg_id = find_msg_type(msg_types, t) + + out = process_type(t, cls, msg_id, indexfile, is_upy) + + write_to_file(genpath, t, out) + + enums = dict([(name, cls) for name, cls in mod.__dict__.items() + if isinstance(cls, EnumTypeWrapper)]) + + for t, cls in enums.items(): + out = process_enum(t, cls, is_upy) + write_to_file(genpath, t, out) + + +def write_to_file(genpath, t, out): + # Write generated sourcecode to given file + f = open(os.path.join(genpath, "%s.py" % t), 'w') + out = ["# Automatically generated by pb2py"] + out + + data = "\n".join(out) + "\n" + + f.write(data) + f.close() + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('modulename', type=str, help="Name of module to generate") + parser.add_argument('genpath', type=str, help="Directory for generated source code") + parser.add_argument('-i', '--indexfile', type=str, help="[optional] Generate index file of wire types") + parser.add_argument('-p', '--protopath', type=str, help="[optional] Path to search for pregenerated Google's python sources") + parser.add_argument('-m', '--micropython', action='store_true', help="Use micropython-favoured source code") + args = parser.parse_args() + + if args.indexfile: + indexfile = open(args.indexfile, 'a') + else: + indexfile = None + + if args.protopath: + sys.path.append(args.protopath) + + # Dynamically load module from argv[1] + tmp = __import__('pb2', globals(), locals(), ['%s_pb2' % args.modulename]) + mod = getattr(tmp, "%s_pb2" % args.modulename) + + process_module(mod, args.genpath, indexfile, args.micropython)