async def confirm_set_options_op(ctx, op: StellarSetOptionsOp): if op.inflation_destination_account: text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("Set Inflation Destination") text.mono(*split(op.inflation_destination_account)) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) if op.clear_flags: t = _format_flags(op.clear_flags) text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("Clear Flags") text.mono(*t) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) if op.set_flags: t = _format_flags(op.set_flags) text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("Set Flags") text.mono(*t) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) thresholds = _format_thresholds(op) if thresholds: text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("Account Thresholds") text.mono(*thresholds) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) if op.home_domain: text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("Home Domain") text.mono(*split(op.home_domain)) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) if op.signer_type is not None: if op.signer_weight > 0: t = "Add Signer (%s)" else: t = "Remove Signer (%s)" if op.signer_type == consts.SIGN_TYPE_ACCOUNT: text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold(t % "acc") text.mono(*split(helpers.address_from_public_key(op.signer_key))) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) elif op.signer_type in (consts.SIGN_TYPE_PRE_AUTH, consts.SIGN_TYPE_HASH): if op.signer_type == consts.SIGN_TYPE_PRE_AUTH: signer_type = "auth" else: signer_type = "hash" text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold(t % signer_type) text.mono(*split(hexlify(op.signer_key).decode())) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) else: raise ProcessError("Stellar: invalid signer type")
async def confirm_asset_issuer(ctx, asset: StellarAssetType): if asset is None or asset.type == consts.ASSET_TYPE_NATIVE: return text = Text("Confirm issuer", ui.ICON_CONFIRM, ui.GREEN) text.bold("%s issuer:" % asset.code) text.mono(*split(asset.issuer)) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput)
async def confirm_payment_op(ctx, op: StellarPaymentOp): text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("Pay %s" % format_amount(op.amount, ticker=False)) text.bold("%s to:" % format_asset_code(op.asset)) text.mono(*split(trim_to_rows(op.destination_account, 3))) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) await confirm_asset_issuer(ctx, op.asset)
async def confirm_manage_data_op(ctx, op: StellarManageDataOp): from trezor.crypto.hashlib import sha256 if op.value: title = "Set" else: title = "Clear" text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("%s data value key" % title) text.mono(*split(op.key)) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) if op.value: digest = sha256(op.value).digest() digest_str = hexlify(digest).decode() text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("Value (SHA-256):") text.mono(*split(digest_str)) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput)
async def confirm_allow_trust_op(ctx, op: StellarAllowTrustOp): if op.is_authorized: t = "Allow Trust" else: t = "Revoke Trust" text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold(t) text.normal("of %s by:" % op.asset_code) text.mono(*split(trim_to_rows(op.trusted_account, 3))) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput)
async def confirm_path_payment_op(ctx, op: StellarPathPaymentOp): text = Text("Confirm operation", ui.ICON_CONFIRM, icon_color=ui.GREEN) text.bold("Path Pay %s" % format_amount(op.destination_amount, ticker=False)) text.bold("%s to:" % format_asset_code(op.destination_asset)) text.mono(*split(trim_to_rows(op.destination_account, 3))) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) await confirm_asset_issuer(ctx, op.destination_asset) # confirm what the sender is using to pay text = Text("Confirm operation", ui.ICON_CONFIRM, icon_color=ui.GREEN) text.normal("Pay using") text.bold(format_amount(op.send_max, ticker=False)) text.bold(format_asset_code(op.send_asset)) text.normal("This amount is debited") text.normal("from your account.") await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput) await confirm_asset_issuer(ctx, op.send_asset)
async def confirm_create_account_op(ctx, op: StellarCreateAccountOp): text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("Create Account") text.normal("with %s" % format_amount(op.starting_balance)) text.mono(*split(trim_to_rows(op.new_account, 3))) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput)
async def confirm_account_merge_op(ctx, op: StellarAccountMergeOp): text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("Account Merge") text.normal("All XLM will be sent to:") text.mono(*split(trim_to_rows(op.destination_account, 3))) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput)
async def confirm_source_account(ctx, source_account: bytes): text = Text("Confirm operation", ui.ICON_CONFIRM, ui.GREEN) text.bold("Source account:") text.mono(*split(source_account)) await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput)