mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-27 01:48:17 +00:00
fix(core/stellar): review usages of write_bytes_unchecked
This commit is contained in:
parent
5b5ed8cce1
commit
781e9f4db8
@ -119,7 +119,7 @@ def write_set_options_op(w, msg: StellarSetOptionsOp):
|
|||||||
elif msg.signer_type in consts.SIGN_TYPES:
|
elif msg.signer_type in consts.SIGN_TYPES:
|
||||||
writers.write_bool(w, True)
|
writers.write_bool(w, True)
|
||||||
writers.write_uint32(w, msg.signer_type)
|
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)
|
writers.write_uint32(w, msg.signer_weight)
|
||||||
else:
|
else:
|
||||||
raise ProcessError("Stellar: unknown signer type")
|
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
|
return # nothing is needed
|
||||||
elif asset_type == consts.ASSET_TYPE_ALPHANUM4:
|
elif asset_type == consts.ASSET_TYPE_ALPHANUM4:
|
||||||
# pad with zeros to 4 chars
|
# 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:
|
elif asset_type == consts.ASSET_TYPE_ALPHANUM12:
|
||||||
# pad with zeros to 12 chars
|
# 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:
|
else:
|
||||||
raise ProcessError("Stellar: invalid asset type")
|
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):
|
async def _init(ctx, w: bytearray, pubkey: bytes, msg: StellarSignTx):
|
||||||
network_passphrase_hash = sha256(msg.network_passphrase).digest()
|
network_passphrase_hash = sha256(msg.network_passphrase).digest()
|
||||||
writers.write_bytes_unchecked(w, network_passphrase_hash)
|
writers.write_bytes_fixed(w, network_passphrase_hash, 32)
|
||||||
writers.write_bytes_unchecked(w, consts.TX_TYPE)
|
writers.write_bytes_fixed(w, consts.TX_TYPE, 4)
|
||||||
|
|
||||||
address = helpers.address_from_public_key(pubkey)
|
address = helpers.address_from_public_key(pubkey)
|
||||||
accounts_match = msg.source_account == address
|
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)
|
memo_confirm_text = str(msg.memo_id)
|
||||||
elif msg.memo_type in (consts.MEMO_TYPE_HASH, consts.MEMO_TYPE_RETURN):
|
elif msg.memo_type in (consts.MEMO_TYPE_HASH, consts.MEMO_TYPE_RETURN):
|
||||||
# Hash/Return: 32 byte hash
|
# 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()
|
memo_confirm_text = hexlify(msg.memo_hash).decode()
|
||||||
else:
|
else:
|
||||||
raise ProcessError("Stellar invalid memo type")
|
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
|
from .helpers import public_key_from_address
|
||||||
|
|
||||||
@ -18,9 +23,9 @@ def write_string(w, s: AnyStr) -> None:
|
|||||||
write_uint32(w, len(buf))
|
write_uint32(w, len(buf))
|
||||||
write_bytes_unchecked(w, buf)
|
write_bytes_unchecked(w, buf)
|
||||||
# if len isn't a multiple of 4, add padding bytes
|
# if len isn't a multiple of 4, add padding bytes
|
||||||
reminder = len(buf) % 4
|
remainder = len(buf) % 4
|
||||||
if reminder:
|
if remainder:
|
||||||
write_bytes_unchecked(w, bytes([0] * (4 - reminder)))
|
write_bytes_unchecked(w, bytes([0] * (4 - remainder)))
|
||||||
|
|
||||||
|
|
||||||
def write_bool(w, val: bool):
|
def write_bool(w, val: bool):
|
||||||
@ -33,4 +38,4 @@ def write_bool(w, val: bool):
|
|||||||
def write_pubkey(w, address: str):
|
def write_pubkey(w, address: str):
|
||||||
# first 4 bytes of an address are the type, there's only one type (0)
|
# first 4 bytes of an address are the type, there's only one type (0)
|
||||||
write_uint32(w, 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