diff --git a/src/apps/wallet/__init__.py b/src/apps/wallet/__init__.py index 502b44d53..26e7cd07c 100644 --- a/src/apps/wallet/__init__.py +++ b/src/apps/wallet/__init__.py @@ -21,7 +21,7 @@ def dispatch_GetAddress(*args, **kwargs): @unimport def dispatch_SignTx(*args, **kwargs): - from .sign_tx.workflow import sign_tx + from .sign_tx import sign_tx return sign_tx(*args, **kwargs) diff --git a/src/apps/wallet/sign_tx/__init__.py b/src/apps/wallet/sign_tx/__init__.py index e69de29bb..4951c6d2a 100644 --- a/src/apps/wallet/sign_tx/__init__.py +++ b/src/apps/wallet/sign_tx/__init__.py @@ -0,0 +1,35 @@ +from trezor.utils import unimport +from trezor import wire + + +@unimport +async def sign_tx(session_id, msg): + from trezor.messages.RequestType import TXFINISHED + from trezor.messages.wire_types import TxAck + + from apps.common import seed + from . import signing + from . import layout + + root = await seed.get_root_node(session_id) + + signer = signing.sign_tx(msg, root) + res = None + while True: + try: + req = signer.send(res) + except signing.SigningError as e: + raise wire.FailureError(*e.args) + if req.__qualname__ == 'TxRequest': + if req.request_type == TXFINISHED: + break + res = await wire.call(session_id, req, TxAck) + elif req.__qualname__ == 'UiConfirmOutput': + res = await layout.confirm_output(session_id, req.output, req.coin) + elif req.__qualname__ == 'UiConfirmTotal': + res = await layout.confirm_total(session_id, req.spending, req.fee, req.coin) + elif req.__qualname__ == 'UiConfirmFeeOverThreshold': + res = await layout.confirm_feeoverthreshold(session_id, req.fee, req.coin) + else: + raise TypeError('Invalid signing instruction') + return req diff --git a/src/apps/wallet/sign_tx/workflow.py b/src/apps/wallet/sign_tx/workflow.py deleted file mode 100644 index 4951c6d2a..000000000 --- a/src/apps/wallet/sign_tx/workflow.py +++ /dev/null @@ -1,35 +0,0 @@ -from trezor.utils import unimport -from trezor import wire - - -@unimport -async def sign_tx(session_id, msg): - from trezor.messages.RequestType import TXFINISHED - from trezor.messages.wire_types import TxAck - - from apps.common import seed - from . import signing - from . import layout - - root = await seed.get_root_node(session_id) - - signer = signing.sign_tx(msg, root) - res = None - while True: - try: - req = signer.send(res) - except signing.SigningError as e: - raise wire.FailureError(*e.args) - if req.__qualname__ == 'TxRequest': - if req.request_type == TXFINISHED: - break - res = await wire.call(session_id, req, TxAck) - elif req.__qualname__ == 'UiConfirmOutput': - res = await layout.confirm_output(session_id, req.output, req.coin) - elif req.__qualname__ == 'UiConfirmTotal': - res = await layout.confirm_total(session_id, req.spending, req.fee, req.coin) - elif req.__qualname__ == 'UiConfirmFeeOverThreshold': - res = await layout.confirm_feeoverthreshold(session_id, req.fee, req.coin) - else: - raise TypeError('Invalid signing instruction') - return req