mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-01-11 16:00:57 +00:00
refactor(core): call super().__init__() in subclasses
This commit is contained in:
parent
fa1566cb71
commit
ee64b65b26
@ -15,7 +15,7 @@ from ..common import SIGHASH_ALL, ecdsa_sign, input_is_external, input_is_segwit
|
||||
from ..ownership import verify_nonownership
|
||||
from ..verification import SignatureVerifier
|
||||
from . import approvers, helpers, progress
|
||||
from .hash143 import Hash143
|
||||
from .hash143 import Bip143Hash
|
||||
from .tx_info import OriginalTxInfo, TxInfo
|
||||
|
||||
if False:
|
||||
@ -32,6 +32,8 @@ if False:
|
||||
from apps.common.coininfo import CoinInfo
|
||||
from apps.common.keychain import Keychain
|
||||
|
||||
from .hash143 import Hash143
|
||||
|
||||
|
||||
# the number of bytes to preallocate for serialized transaction chunks
|
||||
_MAX_SERIALIZED_CHUNK_SIZE = const(2048)
|
||||
@ -108,7 +110,7 @@ class Bitcoin:
|
||||
return HashWriter(sha256())
|
||||
|
||||
def create_hash143(self) -> Hash143:
|
||||
return Hash143()
|
||||
return Bip143Hash()
|
||||
|
||||
async def step1_process_inputs(self) -> None:
|
||||
for i in range(self.tx_info.tx.inputs_count):
|
||||
|
@ -12,7 +12,6 @@ from .. import multisig, scripts, writers
|
||||
from ..common import ecdsa_hash_pubkey, ecdsa_sign
|
||||
from . import approvers, helpers, progress
|
||||
from .bitcoin import Bitcoin
|
||||
from .hash143 import Hash143
|
||||
|
||||
DECRED_SERIALIZE_FULL = const(0 << 16)
|
||||
DECRED_SERIALIZE_NO_WITNESS = const(1 << 16)
|
||||
@ -22,7 +21,7 @@ DECRED_SCRIPT_VERSION = const(0)
|
||||
DECRED_SIGHASH_ALL = const(1)
|
||||
|
||||
if False:
|
||||
from typing import Optional, Union
|
||||
from typing import Optional, Union, List
|
||||
|
||||
from trezor.messages.SignTx import SignTx
|
||||
from trezor.messages.TxInput import TxInput
|
||||
@ -33,8 +32,10 @@ if False:
|
||||
from apps.common.coininfo import CoinInfo
|
||||
from apps.common.keychain import Keychain
|
||||
|
||||
from .hash143 import Hash143
|
||||
|
||||
class DecredHash(Hash143):
|
||||
|
||||
class DecredHash:
|
||||
def __init__(self, h_prefix: HashWriter) -> None:
|
||||
self.h_prefix = h_prefix
|
||||
|
||||
@ -44,6 +45,17 @@ class DecredHash(Hash143):
|
||||
def add_output(self, txo: TxOutput, script_pubkey: bytes) -> None:
|
||||
Decred.write_tx_output(self.h_prefix, txo, script_pubkey)
|
||||
|
||||
def preimage_hash(
|
||||
self,
|
||||
txi: TxInput,
|
||||
public_keys: List[bytes],
|
||||
threshold: int,
|
||||
tx: Union[SignTx, PrevTx],
|
||||
coin: CoinInfo,
|
||||
sighash_type: int,
|
||||
) -> bytes:
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class Decred(Bitcoin):
|
||||
def __init__(
|
||||
|
@ -10,11 +10,29 @@ from apps.common import coininfo
|
||||
from .. import scripts, writers
|
||||
|
||||
if False:
|
||||
from typing import List, Union
|
||||
from typing import List, Union, Protocol
|
||||
|
||||
class Hash143(Protocol):
|
||||
def add_input(self, txi: TxInput) -> None:
|
||||
...
|
||||
|
||||
def add_output(self, txo: TxOutput, script_pubkey: bytes) -> None:
|
||||
...
|
||||
|
||||
def preimage_hash(
|
||||
self,
|
||||
txi: TxInput,
|
||||
public_keys: List[bytes],
|
||||
threshold: int,
|
||||
tx: Union[SignTx, PrevTx],
|
||||
coin: coininfo.CoinInfo,
|
||||
sighash_type: int,
|
||||
) -> bytes:
|
||||
...
|
||||
|
||||
|
||||
# BIP-0143 hash
|
||||
class Hash143:
|
||||
class Bip143Hash:
|
||||
def __init__(self) -> None:
|
||||
self.h_prevouts = HashWriter(sha256())
|
||||
self.h_sequence = HashWriter(sha256())
|
||||
|
@ -7,6 +7,7 @@ from trezor.messages import InputScriptType
|
||||
from trezor.messages.PrevTx import PrevTx
|
||||
from trezor.messages.SignTx import SignTx
|
||||
from trezor.messages.TxInput import TxInput
|
||||
from trezor.messages.TxOutput import TxOutput
|
||||
from trezor.utils import HashWriter, ensure
|
||||
|
||||
from apps.common.coininfo import CoinInfo
|
||||
@ -21,28 +22,37 @@ from ..writers import (
|
||||
write_bytes_fixed,
|
||||
write_bytes_prefixed,
|
||||
write_bytes_reversed,
|
||||
write_tx_output,
|
||||
write_uint32,
|
||||
write_uint64,
|
||||
)
|
||||
from . import approvers, helpers
|
||||
from .bitcoinlike import Bitcoinlike
|
||||
from .hash143 import Hash143
|
||||
|
||||
if False:
|
||||
from apps.common import coininfo
|
||||
from typing import List, Optional, Union
|
||||
from .hash143 import Hash143
|
||||
from .tx_info import OriginalTxInfo, TxInfo
|
||||
from ..writers import Writer
|
||||
|
||||
OVERWINTERED = const(0x8000_0000)
|
||||
|
||||
|
||||
class Zip243Hash(Hash143):
|
||||
class Zip243Hash:
|
||||
def __init__(self) -> None:
|
||||
self.h_prevouts = HashWriter(blake2b(outlen=32, personal=b"ZcashPrevoutHash"))
|
||||
self.h_sequence = HashWriter(blake2b(outlen=32, personal=b"ZcashSequencHash"))
|
||||
self.h_outputs = HashWriter(blake2b(outlen=32, personal=b"ZcashOutputsHash"))
|
||||
|
||||
def add_input(self, txi: TxInput) -> None:
|
||||
write_bytes_reversed(self.h_prevouts, txi.prev_hash, TX_HASH_SIZE)
|
||||
write_uint32(self.h_prevouts, txi.prev_index)
|
||||
write_uint32(self.h_sequence, txi.sequence)
|
||||
|
||||
def add_output(self, txo: TxOutput, script_pubkey: bytes) -> None:
|
||||
write_tx_output(self.h_outputs, txo, script_pubkey)
|
||||
|
||||
def preimage_hash(
|
||||
self,
|
||||
txi: TxInput,
|
||||
|
@ -237,6 +237,7 @@ _last_good_auth_check_cid = 0
|
||||
|
||||
class CborError(Exception):
|
||||
def __init__(self, code: int):
|
||||
super().__init__()
|
||||
self.code = code
|
||||
|
||||
|
||||
|
@ -152,10 +152,6 @@ class MessageType:
|
||||
def get_fields(cls) -> "FieldDict":
|
||||
return {}
|
||||
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
for kw in kwargs:
|
||||
setattr(self, kw, kwargs[kw])
|
||||
|
||||
def __eq__(self, rhs: Any) -> bool:
|
||||
return self.__class__ is rhs.__class__ and self.__dict__ == rhs.__dict__
|
||||
|
||||
|
@ -280,6 +280,7 @@ class Result(Exception):
|
||||
"""
|
||||
|
||||
def __init__(self, value: ResultValue) -> None:
|
||||
super().__init__()
|
||||
self.value = value
|
||||
|
||||
|
||||
|
@ -299,6 +299,7 @@ class Context:
|
||||
|
||||
class UnexpectedMessageError(Exception):
|
||||
def __init__(self, msg: codec_v1.Message) -> None:
|
||||
super().__init__()
|
||||
self.msg = msg
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@ from common import *
|
||||
|
||||
from apps.bitcoin.common import SIGHASH_ALL
|
||||
from apps.bitcoin.scripts import output_derive_script
|
||||
from apps.bitcoin.sign_tx.bitcoin import Hash143
|
||||
from apps.bitcoin.sign_tx.bitcoin import Bip143Hash
|
||||
from apps.bitcoin.writers import get_tx_hash
|
||||
from apps.common import coins
|
||||
from apps.common.keychain import Keychain
|
||||
@ -49,7 +49,7 @@ class TestSegwitBip143NativeP2WPKH(unittest.TestCase):
|
||||
|
||||
def test_prevouts(self):
|
||||
coin = coins.by_name(self.tx.coin_name)
|
||||
bip143 = Hash143()
|
||||
bip143 = Bip143Hash()
|
||||
bip143.add_input(self.inp1)
|
||||
bip143.add_input(self.inp2)
|
||||
prevouts_hash = get_tx_hash(bip143.h_prevouts, double=coin.sign_hash_double)
|
||||
@ -57,7 +57,7 @@ class TestSegwitBip143NativeP2WPKH(unittest.TestCase):
|
||||
|
||||
def test_sequence(self):
|
||||
coin = coins.by_name(self.tx.coin_name)
|
||||
bip143 = Hash143()
|
||||
bip143 = Bip143Hash()
|
||||
bip143.add_input(self.inp1)
|
||||
bip143.add_input(self.inp2)
|
||||
sequence_hash = get_tx_hash(bip143.h_sequence, double=coin.sign_hash_double)
|
||||
@ -67,7 +67,7 @@ class TestSegwitBip143NativeP2WPKH(unittest.TestCase):
|
||||
|
||||
seed = bip39.seed('alcohol woman abuse must during monitor noble actual mixed trade anger aisle', '')
|
||||
coin = coins.by_name(self.tx.coin_name)
|
||||
bip143 = Hash143()
|
||||
bip143 = Bip143Hash()
|
||||
|
||||
for txo in [self.out1, self.out2]:
|
||||
script_pubkey = output_derive_script(txo.address, coin)
|
||||
@ -81,7 +81,7 @@ class TestSegwitBip143NativeP2WPKH(unittest.TestCase):
|
||||
|
||||
seed = bip39.seed('alcohol woman abuse must during monitor noble actual mixed trade anger aisle', '')
|
||||
coin = coins.by_name(self.tx.coin_name)
|
||||
bip143 = Hash143()
|
||||
bip143 = Bip143Hash()
|
||||
bip143.add_input(self.inp1)
|
||||
bip143.add_input(self.inp2)
|
||||
|
||||
|
@ -2,7 +2,7 @@ from common import *
|
||||
|
||||
from apps.bitcoin.common import SIGHASH_ALL
|
||||
from apps.bitcoin.scripts import output_derive_script
|
||||
from apps.bitcoin.sign_tx.bitcoin import Hash143
|
||||
from apps.bitcoin.sign_tx.bitcoin import Bip143Hash
|
||||
from apps.bitcoin.writers import get_tx_hash
|
||||
from apps.common import coins
|
||||
from apps.common.keychain import Keychain
|
||||
@ -41,14 +41,14 @@ class TestSegwitBip143(unittest.TestCase):
|
||||
|
||||
def test_bip143_prevouts(self):
|
||||
coin = coins.by_name(self.tx.coin_name)
|
||||
bip143 = Hash143()
|
||||
bip143 = Bip143Hash()
|
||||
bip143.add_input(self.inp1)
|
||||
prevouts_hash = get_tx_hash(bip143.h_prevouts, double=coin.sign_hash_double)
|
||||
self.assertEqual(hexlify(prevouts_hash), b'b0287b4a252ac05af83d2dcef00ba313af78a3e9c329afa216eb3aa2a7b4613a')
|
||||
|
||||
def test_bip143_sequence(self):
|
||||
coin = coins.by_name(self.tx.coin_name)
|
||||
bip143 = Hash143()
|
||||
bip143 = Bip143Hash()
|
||||
bip143.add_input(self.inp1)
|
||||
sequence_hash = get_tx_hash(bip143.h_sequence, double=coin.sign_hash_double)
|
||||
self.assertEqual(hexlify(sequence_hash), b'18606b350cd8bf565266bc352f0caddcf01e8fa789dd8a15386327cf8cabe198')
|
||||
@ -56,7 +56,7 @@ class TestSegwitBip143(unittest.TestCase):
|
||||
def test_bip143_outputs(self):
|
||||
seed = bip39.seed('alcohol woman abuse must during monitor noble actual mixed trade anger aisle', '')
|
||||
coin = coins.by_name(self.tx.coin_name)
|
||||
bip143 = Hash143()
|
||||
bip143 = Bip143Hash()
|
||||
|
||||
for txo in [self.out1, self.out2]:
|
||||
script_pubkey = output_derive_script(txo.address, coin)
|
||||
@ -69,7 +69,7 @@ class TestSegwitBip143(unittest.TestCase):
|
||||
def test_bip143_preimage_testdata(self):
|
||||
seed = bip39.seed('alcohol woman abuse must during monitor noble actual mixed trade anger aisle', '')
|
||||
coin = coins.by_name(self.tx.coin_name)
|
||||
bip143 = Hash143()
|
||||
bip143 = Bip143Hash()
|
||||
bip143.add_input(self.inp1)
|
||||
for txo in [self.out1, self.out2]:
|
||||
script_pubkey = output_derive_script(txo.address, coin)
|
||||
|
Loading…
Reference in New Issue
Block a user