mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-26 01:18:28 +00:00
fix(core/stellar): review usages of write_bytes_unchecked
(cherry picked from commit 781e9f4db8
)
This commit is contained in:
parent
08edbca428
commit
6fd355756c
@ -119,7 +119,7 @@ def write_set_options_op(w, msg: StellarSetOptionsOp):
|
||||
elif msg.signer_type in consts.SIGN_TYPES:
|
||||
writers.write_bool(w, True)
|
||||
writers.write_uint32(w, msg.signer_type)
|
||||
writers.write_bytes_unchecked(w, msg.signer_key)
|
||||
writers.write_bytes_fixed(w, msg.signer_key, 32)
|
||||
writers.write_uint32(w, msg.signer_weight)
|
||||
else:
|
||||
raise ProcessError("Stellar: unknown signer type")
|
||||
@ -146,10 +146,10 @@ def _write_asset_code(w, asset_type: int, asset_code: str):
|
||||
return # nothing is needed
|
||||
elif asset_type == consts.ASSET_TYPE_ALPHANUM4:
|
||||
# pad with zeros to 4 chars
|
||||
writers.write_bytes_unchecked(w, code + bytearray([0] * (4 - len(code))))
|
||||
writers.write_bytes_fixed(w, code + bytearray([0] * (4 - len(code))), 4)
|
||||
elif asset_type == consts.ASSET_TYPE_ALPHANUM12:
|
||||
# pad with zeros to 12 chars
|
||||
writers.write_bytes_unchecked(w, code + bytearray([0] * (12 - len(code))))
|
||||
writers.write_bytes_fixed(w, code + bytearray([0] * (12 - len(code))), 12)
|
||||
else:
|
||||
raise ProcessError("Stellar: invalid asset type")
|
||||
|
||||
|
@ -48,8 +48,8 @@ async def _final(ctx, w: bytearray, msg: StellarSignTx):
|
||||
|
||||
async def _init(ctx, w: bytearray, pubkey: bytes, msg: StellarSignTx):
|
||||
network_passphrase_hash = sha256(msg.network_passphrase).digest()
|
||||
writers.write_bytes_unchecked(w, network_passphrase_hash)
|
||||
writers.write_bytes_unchecked(w, consts.TX_TYPE)
|
||||
writers.write_bytes_fixed(w, network_passphrase_hash, 32)
|
||||
writers.write_bytes_fixed(w, consts.TX_TYPE, 4)
|
||||
|
||||
address = helpers.address_from_public_key(pubkey)
|
||||
accounts_match = msg.source_account == address
|
||||
@ -104,7 +104,7 @@ async def _memo(ctx, w: bytearray, msg: StellarSignTx):
|
||||
memo_confirm_text = str(msg.memo_id)
|
||||
elif msg.memo_type in (consts.MEMO_TYPE_HASH, consts.MEMO_TYPE_RETURN):
|
||||
# Hash/Return: 32 byte hash
|
||||
writers.write_bytes_unchecked(w, bytearray(msg.memo_hash))
|
||||
writers.write_bytes_fixed(w, bytearray(msg.memo_hash), 32)
|
||||
memo_confirm_text = hexlify(msg.memo_hash).decode()
|
||||
else:
|
||||
raise ProcessError("Stellar invalid memo type")
|
||||
|
@ -1,4 +1,9 @@
|
||||
from apps.common.writers import write_bytes_unchecked, write_uint32_be, write_uint64_be
|
||||
from apps.common.writers import (
|
||||
write_bytes_fixed,
|
||||
write_bytes_unchecked,
|
||||
write_uint32_be,
|
||||
write_uint64_be,
|
||||
)
|
||||
|
||||
from .helpers import public_key_from_address
|
||||
|
||||
@ -18,9 +23,9 @@ def write_string(w, s: AnyStr) -> None:
|
||||
write_uint32(w, len(buf))
|
||||
write_bytes_unchecked(w, buf)
|
||||
# if len isn't a multiple of 4, add padding bytes
|
||||
reminder = len(buf) % 4
|
||||
if reminder:
|
||||
write_bytes_unchecked(w, bytes([0] * (4 - reminder)))
|
||||
remainder = len(buf) % 4
|
||||
if remainder:
|
||||
write_bytes_unchecked(w, bytes([0] * (4 - remainder)))
|
||||
|
||||
|
||||
def write_bool(w, val: bool):
|
||||
@ -33,4 +38,4 @@ def write_bool(w, val: bool):
|
||||
def write_pubkey(w, address: str):
|
||||
# first 4 bytes of an address are the type, there's only one type (0)
|
||||
write_uint32(w, 0)
|
||||
write_bytes_unchecked(w, public_key_from_address(address))
|
||||
write_bytes_fixed(w, public_key_from_address(address), 32)
|
||||
|
Loading…
Reference in New Issue
Block a user