mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-22 15:38:11 +00:00
refactor(core): prepare new templates for enums and messages
This commit is contained in:
parent
266955ba65
commit
d42bc8a4c0
66
core/src/trezor/_proto_messages.mako
Normal file
66
core/src/trezor/_proto_messages.mako
Normal file
@ -0,0 +1,66 @@
|
||||
# Automatically generated by pb2py
|
||||
# fmt: off
|
||||
# isort:skip_file
|
||||
|
||||
from trezor import protobuf
|
||||
|
||||
if False:
|
||||
from typing import TYPE_CHECKING, Any, TypeGuard
|
||||
else:
|
||||
TYPE_CHECKING = False
|
||||
|
||||
|
||||
def __getattr__(name: str) -> Any:
|
||||
try:
|
||||
return protobuf.type_for_name(name)
|
||||
except ValueError:
|
||||
raise AttributeError(name)
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
% for enum in sorted(enums, key=lambda e: e.name):
|
||||
from trezor.enums import ${enum.name} # noqa: F401
|
||||
% endfor
|
||||
% for message in messages:
|
||||
|
||||
<%
|
||||
required_fields = [f for f in message.fields if f.required]
|
||||
repeated_fields = [f for f in message.fields if f.repeated]
|
||||
optional_fields = [f for f in message.fields if f.optional]
|
||||
|
||||
def member_type(field):
|
||||
if field.required:
|
||||
return field.python_type
|
||||
if field.optional and field.default_value is not None:
|
||||
return field.python_type
|
||||
if field.repeated:
|
||||
return f"list[{field.python_type}]"
|
||||
return f"{field.python_type} | None"
|
||||
|
||||
%>\
|
||||
class ${message.name}(protobuf.MessageType):
|
||||
% if message.fields:
|
||||
% for field in message.fields:
|
||||
${field.name}: ${member_type(field)}
|
||||
% endfor
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
% for field in required_fields:
|
||||
${field.name}: ${field.python_type},
|
||||
% endfor
|
||||
% for field in repeated_fields:
|
||||
${field.name}: list[${field.python_type}] | None = None,
|
||||
% endfor
|
||||
% for field in optional_fields:
|
||||
${field.name}: ${field.python_type} | None = None,
|
||||
% endfor
|
||||
) -> None:
|
||||
pass
|
||||
% endif # if fields
|
||||
|
||||
@classmethod
|
||||
def is_type_of(cls, msg: protobuf.MessageType) -> TypeGuard["${message.name}"]:
|
||||
return isinstance(msg, cls)
|
||||
% endfor
|
415
core/src/trezor/enums/__init__.py
Normal file
415
core/src/trezor/enums/__init__.py
Normal file
@ -0,0 +1,415 @@
|
||||
if False:
|
||||
from typing import TYPE_CHECKING
|
||||
else:
|
||||
TYPE_CHECKING = False
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from enum import IntEnum
|
||||
|
||||
class MessageType(IntEnum):
|
||||
Initialize = 0
|
||||
Ping = 1
|
||||
Success = 2
|
||||
Failure = 3
|
||||
ChangePin = 4
|
||||
WipeDevice = 5
|
||||
GetEntropy = 9
|
||||
Entropy = 10
|
||||
LoadDevice = 13
|
||||
ResetDevice = 14
|
||||
Features = 17
|
||||
PinMatrixRequest = 18
|
||||
PinMatrixAck = 19
|
||||
Cancel = 20
|
||||
LockDevice = 24
|
||||
ApplySettings = 25
|
||||
ButtonRequest = 26
|
||||
ButtonAck = 27
|
||||
ApplyFlags = 28
|
||||
BackupDevice = 34
|
||||
EntropyRequest = 35
|
||||
EntropyAck = 36
|
||||
PassphraseRequest = 41
|
||||
PassphraseAck = 42
|
||||
RecoveryDevice = 45
|
||||
WordRequest = 46
|
||||
WordAck = 47
|
||||
GetFeatures = 55
|
||||
SdProtect = 79
|
||||
ChangeWipeCode = 82
|
||||
EndSession = 83
|
||||
DoPreauthorized = 84
|
||||
PreauthorizedRequest = 85
|
||||
CancelAuthorization = 86
|
||||
RebootToBootloader = 87
|
||||
SetU2FCounter = 63
|
||||
GetNextU2FCounter = 80
|
||||
NextU2FCounter = 81
|
||||
Deprecated_PassphraseStateRequest = 77
|
||||
Deprecated_PassphraseStateAck = 78
|
||||
FirmwareErase = 6
|
||||
FirmwareUpload = 7
|
||||
FirmwareRequest = 8
|
||||
SelfTest = 32
|
||||
GetPublicKey = 11
|
||||
PublicKey = 12
|
||||
SignTx = 15
|
||||
TxRequest = 21
|
||||
TxAck = 22
|
||||
GetAddress = 29
|
||||
Address = 30
|
||||
SignMessage = 38
|
||||
VerifyMessage = 39
|
||||
MessageSignature = 40
|
||||
GetOwnershipId = 43
|
||||
OwnershipId = 44
|
||||
GetOwnershipProof = 49
|
||||
OwnershipProof = 50
|
||||
AuthorizeCoinJoin = 51
|
||||
CipherKeyValue = 23
|
||||
CipheredKeyValue = 48
|
||||
SignIdentity = 53
|
||||
SignedIdentity = 54
|
||||
GetECDHSessionKey = 61
|
||||
ECDHSessionKey = 62
|
||||
CosiCommit = 71
|
||||
CosiCommitment = 72
|
||||
CosiSign = 73
|
||||
CosiSignature = 74
|
||||
DebugLinkDecision = 100
|
||||
DebugLinkGetState = 101
|
||||
DebugLinkState = 102
|
||||
DebugLinkStop = 103
|
||||
DebugLinkLog = 104
|
||||
DebugLinkMemoryRead = 110
|
||||
DebugLinkMemory = 111
|
||||
DebugLinkMemoryWrite = 112
|
||||
DebugLinkFlashErase = 113
|
||||
DebugLinkLayout = 9001
|
||||
DebugLinkReseedRandom = 9002
|
||||
DebugLinkRecordScreen = 9003
|
||||
DebugLinkEraseSdCard = 9005
|
||||
DebugLinkWatchLayout = 9006
|
||||
EthereumGetPublicKey = 450
|
||||
EthereumPublicKey = 451
|
||||
EthereumGetAddress = 56
|
||||
EthereumAddress = 57
|
||||
EthereumSignTx = 58
|
||||
EthereumTxRequest = 59
|
||||
EthereumTxAck = 60
|
||||
EthereumSignMessage = 64
|
||||
EthereumVerifyMessage = 65
|
||||
EthereumMessageSignature = 66
|
||||
NEMGetAddress = 67
|
||||
NEMAddress = 68
|
||||
NEMSignTx = 69
|
||||
NEMSignedTx = 70
|
||||
NEMDecryptMessage = 75
|
||||
NEMDecryptedMessage = 76
|
||||
LiskGetAddress = 114
|
||||
LiskAddress = 115
|
||||
LiskSignTx = 116
|
||||
LiskSignedTx = 117
|
||||
LiskSignMessage = 118
|
||||
LiskMessageSignature = 119
|
||||
LiskVerifyMessage = 120
|
||||
LiskGetPublicKey = 121
|
||||
LiskPublicKey = 122
|
||||
TezosGetAddress = 150
|
||||
TezosAddress = 151
|
||||
TezosSignTx = 152
|
||||
TezosSignedTx = 153
|
||||
TezosGetPublicKey = 154
|
||||
TezosPublicKey = 155
|
||||
StellarSignTx = 202
|
||||
StellarTxOpRequest = 203
|
||||
StellarGetAddress = 207
|
||||
StellarAddress = 208
|
||||
StellarCreateAccountOp = 210
|
||||
StellarPaymentOp = 211
|
||||
StellarPathPaymentOp = 212
|
||||
StellarManageOfferOp = 213
|
||||
StellarCreatePassiveOfferOp = 214
|
||||
StellarSetOptionsOp = 215
|
||||
StellarChangeTrustOp = 216
|
||||
StellarAllowTrustOp = 217
|
||||
StellarAccountMergeOp = 218
|
||||
StellarManageDataOp = 220
|
||||
StellarBumpSequenceOp = 221
|
||||
StellarSignedTx = 230
|
||||
CardanoSignTx = 303
|
||||
CardanoGetPublicKey = 305
|
||||
CardanoPublicKey = 306
|
||||
CardanoGetAddress = 307
|
||||
CardanoAddress = 308
|
||||
CardanoSignedTx = 310
|
||||
CardanoSignedTxChunk = 311
|
||||
CardanoSignedTxChunkAck = 312
|
||||
RippleGetAddress = 400
|
||||
RippleAddress = 401
|
||||
RippleSignTx = 402
|
||||
RippleSignedTx = 403
|
||||
MoneroTransactionInitRequest = 501
|
||||
MoneroTransactionInitAck = 502
|
||||
MoneroTransactionSetInputRequest = 503
|
||||
MoneroTransactionSetInputAck = 504
|
||||
MoneroTransactionInputsPermutationRequest = 505
|
||||
MoneroTransactionInputsPermutationAck = 506
|
||||
MoneroTransactionInputViniRequest = 507
|
||||
MoneroTransactionInputViniAck = 508
|
||||
MoneroTransactionAllInputsSetRequest = 509
|
||||
MoneroTransactionAllInputsSetAck = 510
|
||||
MoneroTransactionSetOutputRequest = 511
|
||||
MoneroTransactionSetOutputAck = 512
|
||||
MoneroTransactionAllOutSetRequest = 513
|
||||
MoneroTransactionAllOutSetAck = 514
|
||||
MoneroTransactionSignInputRequest = 515
|
||||
MoneroTransactionSignInputAck = 516
|
||||
MoneroTransactionFinalRequest = 517
|
||||
MoneroTransactionFinalAck = 518
|
||||
MoneroKeyImageExportInitRequest = 530
|
||||
MoneroKeyImageExportInitAck = 531
|
||||
MoneroKeyImageSyncStepRequest = 532
|
||||
MoneroKeyImageSyncStepAck = 533
|
||||
MoneroKeyImageSyncFinalRequest = 534
|
||||
MoneroKeyImageSyncFinalAck = 535
|
||||
MoneroGetAddress = 540
|
||||
MoneroAddress = 541
|
||||
MoneroGetWatchKey = 542
|
||||
MoneroWatchKey = 543
|
||||
DebugMoneroDiagRequest = 546
|
||||
DebugMoneroDiagAck = 547
|
||||
MoneroGetTxKeyRequest = 550
|
||||
MoneroGetTxKeyAck = 551
|
||||
MoneroLiveRefreshStartRequest = 552
|
||||
MoneroLiveRefreshStartAck = 553
|
||||
MoneroLiveRefreshStepRequest = 554
|
||||
MoneroLiveRefreshStepAck = 555
|
||||
MoneroLiveRefreshFinalRequest = 556
|
||||
MoneroLiveRefreshFinalAck = 557
|
||||
EosGetPublicKey = 600
|
||||
EosPublicKey = 601
|
||||
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
|
||||
WebAuthnListResidentCredentials = 800
|
||||
WebAuthnCredentials = 801
|
||||
WebAuthnAddResidentCredential = 802
|
||||
WebAuthnRemoveResidentCredential = 803
|
||||
|
||||
class BinanceOrderType(IntEnum):
|
||||
OT_UNKNOWN = 0
|
||||
MARKET = 1
|
||||
LIMIT = 2
|
||||
OT_RESERVED = 3
|
||||
|
||||
class BinanceOrderSide(IntEnum):
|
||||
SIDE_UNKNOWN = 0
|
||||
BUY = 1
|
||||
SELL = 2
|
||||
|
||||
class BinanceTimeInForce(IntEnum):
|
||||
TIF_UNKNOWN = 0
|
||||
GTE = 1
|
||||
TIF_RESERVED = 2
|
||||
IOC = 3
|
||||
|
||||
class FailureType(IntEnum):
|
||||
UnexpectedMessage = 1
|
||||
ButtonExpected = 2
|
||||
DataError = 3
|
||||
ActionCancelled = 4
|
||||
PinExpected = 5
|
||||
PinCancelled = 6
|
||||
PinInvalid = 7
|
||||
InvalidSignature = 8
|
||||
ProcessError = 9
|
||||
NotEnoughFunds = 10
|
||||
NotInitialized = 11
|
||||
PinMismatch = 12
|
||||
WipeCodeMismatch = 13
|
||||
InvalidSession = 14
|
||||
FirmwareError = 99
|
||||
|
||||
class ButtonRequestType(IntEnum):
|
||||
Other = 1
|
||||
FeeOverThreshold = 2
|
||||
ConfirmOutput = 3
|
||||
ResetDevice = 4
|
||||
ConfirmWord = 5
|
||||
WipeDevice = 6
|
||||
ProtectCall = 7
|
||||
SignTx = 8
|
||||
FirmwareCheck = 9
|
||||
Address = 10
|
||||
PublicKey = 11
|
||||
MnemonicWordCount = 12
|
||||
MnemonicInput = 13
|
||||
_Deprecated_ButtonRequest_PassphraseType = 14
|
||||
UnknownDerivationPath = 15
|
||||
RecoveryHomepage = 16
|
||||
Success = 17
|
||||
Warning = 18
|
||||
PassphraseEntry = 19
|
||||
PinEntry = 20
|
||||
|
||||
class PinMatrixRequestType(IntEnum):
|
||||
Current = 1
|
||||
NewFirst = 2
|
||||
NewSecond = 3
|
||||
WipeCodeFirst = 4
|
||||
WipeCodeSecond = 5
|
||||
|
||||
class InputScriptType(IntEnum):
|
||||
SPENDADDRESS = 0
|
||||
SPENDMULTISIG = 1
|
||||
EXTERNAL = 2
|
||||
SPENDWITNESS = 3
|
||||
SPENDP2SHWITNESS = 4
|
||||
|
||||
class OutputScriptType(IntEnum):
|
||||
PAYTOADDRESS = 0
|
||||
PAYTOSCRIPTHASH = 1
|
||||
PAYTOMULTISIG = 2
|
||||
PAYTOOPRETURN = 3
|
||||
PAYTOWITNESS = 4
|
||||
PAYTOP2SHWITNESS = 5
|
||||
|
||||
class DecredStakingSpendType(IntEnum):
|
||||
SSGen = 0
|
||||
SSRTX = 1
|
||||
|
||||
class AmountUnit(IntEnum):
|
||||
BITCOIN = 0
|
||||
MILLIBITCOIN = 1
|
||||
MICROBITCOIN = 2
|
||||
SATOSHI = 3
|
||||
|
||||
class RequestType(IntEnum):
|
||||
TXINPUT = 0
|
||||
TXOUTPUT = 1
|
||||
TXMETA = 2
|
||||
TXFINISHED = 3
|
||||
TXEXTRADATA = 4
|
||||
TXORIGINPUT = 5
|
||||
TXORIGOUTPUT = 6
|
||||
|
||||
class CardanoAddressType(IntEnum):
|
||||
BASE = 0
|
||||
BASE_SCRIPT_KEY = 1
|
||||
BASE_KEY_SCRIPT = 2
|
||||
BASE_SCRIPT_SCRIPT = 3
|
||||
POINTER = 4
|
||||
POINTER_SCRIPT = 5
|
||||
ENTERPRISE = 6
|
||||
ENTERPRISE_SCRIPT = 7
|
||||
BYRON = 8
|
||||
REWARD = 14
|
||||
REWARD_SCRIPT = 15
|
||||
|
||||
class CardanoCertificateType(IntEnum):
|
||||
STAKE_REGISTRATION = 0
|
||||
STAKE_DEREGISTRATION = 1
|
||||
STAKE_DELEGATION = 2
|
||||
STAKE_POOL_REGISTRATION = 3
|
||||
|
||||
class CardanoPoolRelayType(IntEnum):
|
||||
SINGLE_HOST_IP = 0
|
||||
SINGLE_HOST_NAME = 1
|
||||
MULTIPLE_HOST_NAME = 2
|
||||
|
||||
class BackupType(IntEnum):
|
||||
Bip39 = 0
|
||||
Slip39_Basic = 1
|
||||
Slip39_Advanced = 2
|
||||
|
||||
class SafetyCheckLevel(IntEnum):
|
||||
Strict = 0
|
||||
PromptAlways = 1
|
||||
PromptTemporarily = 2
|
||||
|
||||
class Capability(IntEnum):
|
||||
Bitcoin = 1
|
||||
Bitcoin_like = 2
|
||||
Binance = 3
|
||||
Cardano = 4
|
||||
Crypto = 5
|
||||
EOS = 6
|
||||
Ethereum = 7
|
||||
Lisk = 8
|
||||
Monero = 9
|
||||
NEM = 10
|
||||
Ripple = 11
|
||||
Stellar = 12
|
||||
Tezos = 13
|
||||
U2F = 14
|
||||
Shamir = 15
|
||||
ShamirGroups = 16
|
||||
PassphraseEntry = 17
|
||||
|
||||
class SdProtectOperationType(IntEnum):
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
REFRESH = 2
|
||||
|
||||
class RecoveryDeviceType(IntEnum):
|
||||
ScrambledWords = 0
|
||||
Matrix = 1
|
||||
|
||||
class WordRequestType(IntEnum):
|
||||
Plain = 0
|
||||
Matrix9 = 1
|
||||
Matrix6 = 2
|
||||
|
||||
class DebugSwipeDirection(IntEnum):
|
||||
UP = 0
|
||||
DOWN = 1
|
||||
LEFT = 2
|
||||
RIGHT = 3
|
||||
|
||||
class LiskTransactionType(IntEnum):
|
||||
Transfer = 0
|
||||
RegisterSecondPassphrase = 1
|
||||
RegisterDelegate = 2
|
||||
CastVotes = 3
|
||||
RegisterMultisignatureAccount = 4
|
||||
CreateDapp = 5
|
||||
TransferIntoDapp = 6
|
||||
TransferOutOfDapp = 7
|
||||
|
||||
class NEMMosaicLevy(IntEnum):
|
||||
MosaicLevy_Absolute = 1
|
||||
MosaicLevy_Percentile = 2
|
||||
|
||||
class NEMSupplyChangeType(IntEnum):
|
||||
SupplyChange_Increase = 1
|
||||
SupplyChange_Decrease = 2
|
||||
|
||||
class NEMModificationType(IntEnum):
|
||||
CosignatoryModification_Add = 1
|
||||
CosignatoryModification_Delete = 2
|
||||
|
||||
class NEMImportanceTransferMode(IntEnum):
|
||||
ImportanceTransfer_Activate = 1
|
||||
ImportanceTransfer_Deactivate = 2
|
||||
|
||||
class TezosContractType(IntEnum):
|
||||
Implicit = 0
|
||||
Originated = 1
|
||||
|
||||
class TezosBallotType(IntEnum):
|
||||
Yay = 0
|
||||
Nay = 1
|
||||
Pass = 2
|
17
core/src/trezor/enums/_proto_enum_class.mako
Normal file
17
core/src/trezor/enums/_proto_enum_class.mako
Normal file
@ -0,0 +1,17 @@
|
||||
# Automatically generated by pb2py
|
||||
# fmt: off
|
||||
# isort:skip_file
|
||||
|
||||
% if values_altcoin:
|
||||
from trezor import utils
|
||||
|
||||
% endif
|
||||
% for value in values_always:
|
||||
${value.name} = ${value.number}
|
||||
% endfor
|
||||
% if values_altcoin:
|
||||
if not utils.BITCOIN_ONLY:
|
||||
% for value in values_altcoin:
|
||||
${value.name} = ${value.number}
|
||||
% endfor
|
||||
% endif
|
15
core/src/trezor/enums/_proto_init.mako
Normal file
15
core/src/trezor/enums/_proto_init.mako
Normal file
@ -0,0 +1,15 @@
|
||||
if False:
|
||||
from typing import TYPE_CHECKING
|
||||
else:
|
||||
TYPE_CHECKING = False
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from enum import IntEnum
|
||||
% for enum in enums:
|
||||
|
||||
class ${enum.name}(IntEnum):
|
||||
% for value in enum.value:
|
||||
${value.name} = ${value.number}
|
||||
% endfor
|
||||
% endfor
|
@ -1,19 +0,0 @@
|
||||
if False:
|
||||
import protobuf
|
||||
from typing import Type
|
||||
|
||||
|
||||
def get_type(wire_type: int) -> Type[protobuf.MessageType]:
|
||||
"""Get message class for handling given wire_type."""
|
||||
from trezor.messages import MessageType
|
||||
|
||||
for msg_name in dir(MessageType):
|
||||
# walk the list of symbols in MessageType
|
||||
if getattr(MessageType, msg_name) == wire_type:
|
||||
# import submodule/class of the same name
|
||||
module = __import__(
|
||||
"trezor.messages.%s" % msg_name, None, None, (msg_name,), 0
|
||||
)
|
||||
return getattr(module, msg_name) # type: ignore
|
||||
|
||||
raise KeyError
|
Loading…
Reference in New Issue
Block a user