diff --git a/embed/extmod/modtrezorcrypto/modtrezorcrypto-sha3-256.h b/embed/extmod/modtrezorcrypto/modtrezorcrypto-sha3-256.h index 713af6937..c55333434 100644 --- a/embed/extmod/modtrezorcrypto/modtrezorcrypto-sha3-256.h +++ b/embed/extmod/modtrezorcrypto/modtrezorcrypto-sha3-256.h @@ -29,7 +29,7 @@ typedef struct _mp_obj_Sha3_256_t { mp_obj_base_t base; SHA3_CTX ctx; - int keccak; + bool keccak; } mp_obj_Sha3_256_t; STATIC mp_obj_t mod_trezorcrypto_Sha3_256_update(mp_obj_t self, mp_obj_t data); @@ -52,7 +52,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha3_256_make_new(const mp_obj_type_t *type, si mp_arg_val_t vals[MP_ARRAY_SIZE(allowed_args)]; mp_arg_parse_all_kw_array(n_args, n_kw, args, MP_ARRAY_SIZE(allowed_args), allowed_args, vals); if (vals[1].u_obj != MP_OBJ_NULL){ - o->keccak = mp_obj_is_true(vals[1].u_obj) ? 1 : -1; + o->keccak = mp_obj_is_true(vals[1].u_obj); } if (vals[0].u_obj != mp_const_none){ @@ -76,17 +76,16 @@ STATIC mp_obj_t mod_trezorcrypto_Sha3_256_update(mp_obj_t self, mp_obj_t data) { } STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_Sha3_256_update_obj, mod_trezorcrypto_Sha3_256_update); -/// def digest(self, keccak: bool = False) -> bytes: +/// def digest(self) -> bytes: /// ''' /// Returns the digest of hashed data. /// ''' -STATIC mp_obj_t mod_trezorcrypto_Sha3_256_digest(size_t n_args, const mp_obj_t *args) { - mp_obj_Sha3_256_t *o = MP_OBJ_TO_PTR(args[0]); +STATIC mp_obj_t mod_trezorcrypto_Sha3_256_digest(mp_obj_t self) { + mp_obj_Sha3_256_t *o = MP_OBJ_TO_PTR(self); uint8_t out[SHA3_256_DIGEST_LENGTH]; SHA3_CTX ctx; - bool use_keccak = n_args > 1 ? args[1] == mp_const_true : o->keccak == 1; memcpy(&ctx, &(o->ctx), sizeof(SHA3_CTX)); - if (use_keccak) { + if (o->keccak) { keccak_Final(&ctx, out); } else { sha3_Final(&ctx, out); @@ -94,7 +93,8 @@ STATIC mp_obj_t mod_trezorcrypto_Sha3_256_digest(size_t n_args, const mp_obj_t * memset(&ctx, 0, sizeof(SHA3_CTX)); return mp_obj_new_bytes(out, sizeof(out)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorcrypto_Sha3_256_digest_obj, 1, 2, mod_trezorcrypto_Sha3_256_digest); +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Sha3_256_digest_obj, mod_trezorcrypto_Sha3_256_digest); + /// def copy(self) -> sha3: /// ''' diff --git a/embed/extmod/modtrezorcrypto/modtrezorcrypto-sha3-512.h b/embed/extmod/modtrezorcrypto/modtrezorcrypto-sha3-512.h index 062549033..dd51e3c7c 100644 --- a/embed/extmod/modtrezorcrypto/modtrezorcrypto-sha3-512.h +++ b/embed/extmod/modtrezorcrypto/modtrezorcrypto-sha3-512.h @@ -29,22 +29,34 @@ typedef struct _mp_obj_Sha3_512_t { mp_obj_base_t base; SHA3_CTX ctx; + bool keccak; } mp_obj_Sha3_512_t; STATIC mp_obj_t mod_trezorcrypto_Sha3_512_update(mp_obj_t self, mp_obj_t data); -/// def __init__(self, data: bytes = None) -> None: +/// def __init__(self, data: bytes = None, keccak = False) -> None: /// ''' /// Creates a hash context object. /// ''' STATIC mp_obj_t mod_trezorcrypto_Sha3_512_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { - mp_arg_check_num(n_args, n_kw, 0, 1, false); + mp_arg_check_num(n_args, n_kw, 0, 1, true); mp_obj_Sha3_512_t *o = m_new_obj(mp_obj_Sha3_512_t); o->base.type = type; + o->keccak = 0; sha3_512_Init(&(o->ctx)); - // constructor called with bytes/str as first parameter - if (n_args == 1) { - mod_trezorcrypto_Sha3_512_update(MP_OBJ_FROM_PTR(o), args[0]); + + STATIC const mp_arg_t allowed_args[] = { + { MP_QSTR_data, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + { MP_QSTR_keccak, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_obj = MP_OBJ_NULL} }, + }; + mp_arg_val_t vals[MP_ARRAY_SIZE(allowed_args)]; + mp_arg_parse_all_kw_array(n_args, n_kw, args, MP_ARRAY_SIZE(allowed_args), allowed_args, vals); + if (vals[1].u_obj != MP_OBJ_NULL){ + o->keccak = mp_obj_is_true(vals[1].u_obj); + } + + if (vals[0].u_obj != mp_const_none){ + mod_trezorcrypto_Sha3_512_update(MP_OBJ_FROM_PTR(o), vals[0].u_obj); } return MP_OBJ_FROM_PTR(o); } @@ -64,16 +76,16 @@ STATIC mp_obj_t mod_trezorcrypto_Sha3_512_update(mp_obj_t self, mp_obj_t data) { } STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_Sha3_512_update_obj, mod_trezorcrypto_Sha3_512_update); -/// def digest(self, keccak: bool = False) -> bytes: +/// def digest(self) -> bytes: /// ''' /// Returns the digest of hashed data. /// ''' -STATIC mp_obj_t mod_trezorcrypto_Sha3_512_digest(size_t n_args, const mp_obj_t *args) { - mp_obj_Sha3_512_t *o = MP_OBJ_TO_PTR(args[0]); +STATIC mp_obj_t mod_trezorcrypto_Sha3_512_digest(mp_obj_t self) { + mp_obj_Sha3_512_t *o = MP_OBJ_TO_PTR(self); uint8_t out[SHA3_512_DIGEST_LENGTH]; SHA3_CTX ctx; memcpy(&ctx, &(o->ctx), sizeof(SHA3_CTX)); - if (n_args > 1 && args[1] == mp_const_true) { + if (o->keccak) { keccak_Final(&ctx, out); } else { sha3_Final(&ctx, out); @@ -81,7 +93,22 @@ STATIC mp_obj_t mod_trezorcrypto_Sha3_512_digest(size_t n_args, const mp_obj_t * memset(&ctx, 0, sizeof(SHA3_CTX)); return mp_obj_new_bytes(out, sizeof(out)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorcrypto_Sha3_512_digest_obj, 1, 2, mod_trezorcrypto_Sha3_512_digest); +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Sha3_512_digest_obj, mod_trezorcrypto_Sha3_512_digest); + + +/// def copy(self) -> sha3: +/// ''' +/// Returns the copy of the digest object with the current state +/// ''' +STATIC mp_obj_t mod_trezorcrypto_Sha3_512_copy(size_t n_args, const mp_obj_t *args) { + mp_obj_Sha3_512_t *o = MP_OBJ_TO_PTR(args[0]); + mp_obj_Sha3_512_t *out = m_new_obj(mp_obj_Sha3_512_t); + out->base.type = o->base.type; + out->keccak = o->keccak; + memcpy(&(out->ctx), &(o->ctx), sizeof(SHA3_CTX)); + return MP_OBJ_FROM_PTR(out); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorcrypto_Sha3_512_copy_obj, 1, 1, mod_trezorcrypto_Sha3_512_copy); STATIC mp_obj_t mod_trezorcrypto_Sha3_512___del__(mp_obj_t self) { mp_obj_Sha3_512_t *o = MP_OBJ_TO_PTR(self); @@ -93,6 +120,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Sha3_512___del___obj, mod_trez STATIC const mp_rom_map_elem_t mod_trezorcrypto_Sha3_512_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_update), MP_ROM_PTR(&mod_trezorcrypto_Sha3_512_update_obj) }, { MP_ROM_QSTR(MP_QSTR_digest), MP_ROM_PTR(&mod_trezorcrypto_Sha3_512_digest_obj) }, + { MP_ROM_QSTR(MP_QSTR_copy), MP_ROM_PTR(&mod_trezorcrypto_Sha3_512_copy_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&mod_trezorcrypto_Sha3_512___del___obj) }, { MP_ROM_QSTR(MP_QSTR_block_size), MP_OBJ_NEW_SMALL_INT(SHA3_512_BLOCK_LENGTH) }, { MP_ROM_QSTR(MP_QSTR_digest_size), MP_OBJ_NEW_SMALL_INT(SHA3_512_DIGEST_LENGTH) }, diff --git a/src/apps/ethereum/get_address.py b/src/apps/ethereum/get_address.py index 3c8944de7..d7db732f2 100644 --- a/src/apps/ethereum/get_address.py +++ b/src/apps/ethereum/get_address.py @@ -14,7 +14,7 @@ async def ethereum_get_address(ctx, msg): seckey = node.private_key() public_key = secp256k1.publickey(seckey, False) # uncompressed - address = sha3_256(public_key[1:]).digest(True)[12:] # Keccak + address = sha3_256(public_key[1:], keccak=True).digest()[12:] if msg.show_display: if len(address_n) > 1: # path has slip44 network identifier @@ -41,7 +41,7 @@ def _ethereum_address_hex(address, network=None): hx = hexlify(address).decode() prefix = str(network.chain_id) + "0x" if rskip60 else "" - hs = sha3_256(prefix + hx).digest(True) + hs = sha3_256(prefix + hx, keccak=True).digest() h = "" for i in range(20): diff --git a/src/apps/ethereum/sign_message.py b/src/apps/ethereum/sign_message.py index 584e79321..d146f6a31 100644 --- a/src/apps/ethereum/sign_message.py +++ b/src/apps/ethereum/sign_message.py @@ -11,13 +11,13 @@ from apps.common.signverify import split_message def message_digest(message): - h = HashWriter(sha3_256) + h = HashWriter(sha3_256, keccak=True) signed_message_header = "\x19Ethereum Signed Message:\n" h.extend(signed_message_header) h.extend(str(len(message))) h.extend(message) - return h.get_digest(True) + return h.get_digest() async def ethereum_sign_message(ctx, msg): diff --git a/src/apps/ethereum/sign_tx.py b/src/apps/ethereum/sign_tx.py index 6a5b59c0e..9f1cf15c7 100644 --- a/src/apps/ethereum/sign_tx.py +++ b/src/apps/ethereum/sign_tx.py @@ -59,7 +59,7 @@ async def ethereum_sign_tx(ctx, msg): total_length = get_total_length(msg, data_total) - sha = HashWriter(sha3_256) + sha = HashWriter(sha3_256, keccak=True) sha.extend(rlp.encode_length(total_length, True)) # total length if msg.tx_type is not None: @@ -85,7 +85,7 @@ async def ethereum_sign_tx(ctx, msg): sha.extend(rlp.encode(0)) sha.extend(rlp.encode(0)) - digest = sha.get_digest(True) # True -> use keccak mode + digest = sha.get_digest() return await send_signature(ctx, msg, digest) diff --git a/src/apps/ethereum/verify_message.py b/src/apps/ethereum/verify_message.py index 38cb128df..891f3149c 100644 --- a/src/apps/ethereum/verify_message.py +++ b/src/apps/ethereum/verify_message.py @@ -20,7 +20,7 @@ async def ethereum_verify_message(ctx, msg): if not pubkey: raise ValueError("Invalid signature") - pkh = sha3_256(pubkey[1:]).digest(True)[-20:] + pkh = sha3_256(pubkey[1:], keccak=True).digest()[-20:] if msg.address != pkh: raise ValueError("Invalid signature") diff --git a/src/apps/nem/multisig/serialize.py b/src/apps/nem/multisig/serialize.py index 8f3875216..50fd9c331 100644 --- a/src/apps/nem/multisig/serialize.py +++ b/src/apps/nem/multisig/serialize.py @@ -26,7 +26,7 @@ def serialize_multisig_signature( w = write_common( common, bytearray(public_key), NEM_TRANSACTION_TYPE_MULTISIG_SIGNATURE ) - digest = hashlib.sha3_256(inner).digest(True) + digest = hashlib.sha3_256(inner, keccak=True).digest() write_uint32(w, 4 + len(digest)) write_bytes_with_length(w, digest) diff --git a/src/trezor/utils.py b/src/trezor/utils.py index 671d57f4f..69c57d7ac 100644 --- a/src/trezor/utils.py +++ b/src/trezor/utils.py @@ -84,5 +84,5 @@ class HashWriter: self.buf[0] = b self.ctx.update(self.buf) - def get_digest(self, *args) -> bytes: - return self.ctx.digest(*args) + def get_digest(self) -> bytes: + return self.ctx.digest() diff --git a/tests/test_apps.nem.mosaic_creation.py b/tests/test_apps.nem.mosaic_creation.py index 6c387bfab..ef110c1b5 100644 --- a/tests/test_apps.nem.mosaic_creation.py +++ b/tests/test_apps.nem.mosaic_creation.py @@ -37,7 +37,7 @@ class TestNemMosaicCreation(unittest.TestCase): t = serialize_mosaic_creation(m.transaction, m.mosaic_creation, unhexlify('994793ba1c789fa9bdea918afc9b06e2d0309beb1081ac5b6952991e4defd324')) self.assertEqual(t, unhexlify('014000000100009870b4d60020000000994793ba1c789fa9bdea918afc9b06e2d0309beb1081ac5b6952991e4defd32400f36f060000000080c2d600de00000020000000994793ba1c789fa9bdea918afc9b06e2d0309beb1081ac5b6952991e4defd3241f0000001000000067696d72652e67616d65732e706f6e6707000000706164646c65731b000000506164646c657320666f722074686520626f6e672067616d652e0a04000000150000000c00000064697669736962696c69747901000000301a0000000d000000696e697469616c537570706c79050000003130303030190000000d000000737570706c794d757461626c650400000074727565180000000c0000007472616e7366657261626c650400000074727565000000002800000054424d4f534149434f443446353445453543444d523233434342474f414d3258534a4252354f4c4300743ba40b000000')) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('68364353c29105e6d361ad1a42abbccbf419cfc7adb8b74c8f35d8f8bdaca3fa')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('68364353c29105e6d361ad1a42abbccbf419cfc7adb8b74c8f35d8f8bdaca3fa')) def test_nem_transaction_mosaic_creation_with_levy(self): # http://bob.nem.ninja:8765/#/mosaic/b2f4a98113ff1f3a8f1e9d7197aa982545297fe0aa3fa6094af8031569953a55/0 @@ -62,7 +62,7 @@ class TestNemMosaicCreation(unittest.TestCase): t = serialize_mosaic_creation(m.transaction, m.mosaic_creation, unhexlify("244fa194e2509ac0d2fbc18779c2618d8c2ebb61c16a3bcbebcf448c661ba8dc"),) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('b2f4a98113ff1f3a8f1e9d7197aa982545297fe0aa3fa6094af8031569953a55')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('b2f4a98113ff1f3a8f1e9d7197aa982545297fe0aa3fa6094af8031569953a55')) # http://chain.nem.ninja/#/mosaic/e8dc14821dbea4831d9051f86158ef348001447968fc22c01644fdaf2bda75c6/0 m = _create_msg(NEM_NETWORK_MAINNET, @@ -86,7 +86,7 @@ class TestNemMosaicCreation(unittest.TestCase): t = serialize_mosaic_creation(m.transaction, m.mosaic_creation, unhexlify("a1df5306355766bd2f9a64efdc089eb294be265987b3359093ae474c051d7d5a")) self.assertEqual(t, unhexlify('0140000001000068ccaf200420000000a1df5306355766bd2f9a64efdc089eb294be265987b3359093ae474c051d7d5a002d3101000000004c0122040c01000020000000a1df5306355766bd2f9a64efdc089eb294be265987b3359093ae474c051d7d5a0f0000000300000064696d04000000636f696e0800000044494d20434f494e04000000150000000c00000064697669736962696c69747901000000361f0000000d000000696e697469616c537570706c790a000000393030303030303030301a0000000d000000737570706c794d757461626c650500000066616c7365180000000c0000007472616e7366657261626c6504000000747275654b00000002000000280000004e4347474c564f32473343554143564935474e58324b52424a5351434e3452444c325a574a3444500f0000000300000064696d04000000636f696e0a00000000000000280000004e424d4f534149434f443446353445453543444d523233434342474f414d325853495558365452530065cd1d00000000')) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('e8dc14821dbea4831d9051f86158ef348001447968fc22c01644fdaf2bda75c6')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('e8dc14821dbea4831d9051f86158ef348001447968fc22c01644fdaf2bda75c6')) def test_nem_transaction_mosaic_creation_with_description(self): # http://chain.nem.ninja/#/mosaic/269c6fda657aba3053a0e5b138c075808cc20e244e1182d9b730798b60a1f77b/0 @@ -115,7 +115,7 @@ class TestNemMosaicCreation(unittest.TestCase): t = serialize_mosaic_creation(m.transaction, m.mosaic_creation, unhexlify("58956ac77951622dc5f1c938affbf017c458e30e6b21ddb5783d38b302531f23")) self.assertEqual(t, unhexlify('0140000001000068d2dd97012000000058956ac77951622dc5f1c938affbf017c458e30e6b21ddb5783d38b302531f2300f36f0600000000e2eb9701c80100002000000058956ac77951622dc5f1c938affbf017c458e30e6b21ddb5783d38b302531f2317000000060000006a61626f3338090000007265645f746f6b656e0c0100005468697320746f6b656e20697320746f2063656c656272617465207468652072656c65617365206f66204e616d6573706163657320616e64204d6f7361696373206f6e20746865204e454d2073797374656d2e205468697320746f6b656e207761732074686520666973742065766572206d6f736169632063726561746564206f74686572207468616e206e656d2e78656d2e20546865726520617265206f6e6c792031302c3030302052656420546f6b656e7320746861742077696c6c206576657220626520637265617465642e20497420686173206e6f206c65767920616e642063616e2062652074726164656420667265656c7920616d6f6e6720746869726420706172746965732e04000000150000000c00000064697669736962696c69747901000000321a0000000d000000696e697469616c537570706c790500000031303030301a0000000d000000737570706c794d757461626c650500000066616c7365180000000c0000007472616e7366657261626c65040000007472756500000000280000004e424d4f534149434f443446353445453543444d523233434342474f414d3258534955583654525300743ba40b000000')) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('269c6fda657aba3053a0e5b138c075808cc20e244e1182d9b730798b60a1f77b')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('269c6fda657aba3053a0e5b138c075808cc20e244e1182d9b730798b60a1f77b')) def _create_msg(network: int, timestamp: int, fee: int, deadline: int, diff --git a/tests/test_apps.nem.mosaic_supply_change.py b/tests/test_apps.nem.mosaic_supply_change.py index 424b0a67e..97a386073 100644 --- a/tests/test_apps.nem.mosaic_supply_change.py +++ b/tests/test_apps.nem.mosaic_supply_change.py @@ -24,7 +24,7 @@ class TestNemMosaicSupplyChange(unittest.TestCase): 1234) t = serialize_mosaic_supply_change(m.transaction, m.supply_change, unhexlify("994793ba1c789fa9bdea918afc9b06e2d0309beb1081ac5b6952991e4defd324")) - self.assertEqual(hashlib.sha3_256(t).digest(True), + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('33a50fdd4a54913643a580b2af08b9a5b51b7cee922bde380e84c573a7969c50')) # http://bigalice2.nem.ninja:7890/transaction/get?hash=1ce8e8894d077a66ff22294b000825d090a60742ec407efd80eb8b19657704f2 @@ -38,7 +38,7 @@ class TestNemMosaicSupplyChange(unittest.TestCase): 1) t = serialize_mosaic_supply_change(m.transaction, m.supply_change, unhexlify("84afa1bbc993b7f5536344914dde86141e61f8cbecaf8c9cefc07391f3287cf5")) - self.assertEqual(hashlib.sha3_256(t).digest(True), + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('1ce8e8894d077a66ff22294b000825d090a60742ec407efd80eb8b19657704f2')) # http://bigalice3.nem.ninja:7890/transaction/get?hash=694e493e9576d2bcf60d85747e302ac2e1cc27783187947180d4275a713ff1ff @@ -52,7 +52,7 @@ class TestNemMosaicSupplyChange(unittest.TestCase): 9000000) t = serialize_mosaic_supply_change(m.transaction, m.supply_change, unhexlify("b7ccc27b21ba6cf5c699a8dc86ba6ba98950442597ff9fa30e0abe0f5f4dd05d")) - self.assertEqual(hashlib.sha3_256(t).digest(True), + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('694e493e9576d2bcf60d85747e302ac2e1cc27783187947180d4275a713ff1ff')) # http://bigalice3.nem.ninja:7890/transaction/get?hash=09836334e123970e068d5b411e4d1df54a3ead10acf1ad5935a2cdd9f9680185 @@ -66,7 +66,7 @@ class TestNemMosaicSupplyChange(unittest.TestCase): 20) t = serialize_mosaic_supply_change(m.transaction, m.supply_change, unhexlify("75f001a8641e2ce5c4386883dda561399ed346177411b492a677b73899502f13")) - self.assertEqual(hashlib.sha3_256(t).digest(True), + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('09836334e123970e068d5b411e4d1df54a3ead10acf1ad5935a2cdd9f9680185')) diff --git a/tests/test_apps.nem.multisig.aggregate_modification.py b/tests/test_apps.nem.multisig.aggregate_modification.py index 94e222eb2..d0514a9e1 100644 --- a/tests/test_apps.nem.multisig.aggregate_modification.py +++ b/tests/test_apps.nem.multisig.aggregate_modification.py @@ -28,7 +28,7 @@ class TestNemMultisigAggregateModification(unittest.TestCase): serialize_cosignatory_modification(t, 1, unhexlify( "c54d6e33ed1446eedd7f7a80a588dd01857f723687a09200c1917d5524752f8b")) - self.assertEqual(hashlib.sha3_256(t).digest(True), + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify("6a55471b17159e5b6cd579c421e95a4e39d92e3f78b0a55ee337e785a601d3a2")) # http://chain.nem.ninja/#/aggregate/cc64ca69bfa95db2ff7ac1e21fe6d27ece189c603200ebc9778d8bb80ca25c3c @@ -51,7 +51,7 @@ class TestNemMultisigAggregateModification(unittest.TestCase): serialize_cosignatory_modification(t, 1, unhexlify( "43aa69177018fc3e2bdbeb259c81cddf24be50eef9c5386db51d82386c41475a")) - self.assertEqual(hashlib.sha3_256(t).digest(True), + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify("cc64ca69bfa95db2ff7ac1e21fe6d27ece189c603200ebc9778d8bb80ca25c3c")) def test_nem_transaction_aggregate_modification_relative_change(self): @@ -74,7 +74,7 @@ class TestNemMultisigAggregateModification(unittest.TestCase): "d88c6ee2a2cd3929d0d76b6b14ecb549d21296ab196a2b3a4cb2536bcce32e87")) serialize_minimum_cosignatories(t, 2) - self.assertEqual(hashlib.sha3_256(t).digest(True), + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify("1fbdae5ba753e68af270930413ae90f671eb8ab58988116684bac0abd5726584")) diff --git a/tests/test_apps.nem.namespace.py b/tests/test_apps.nem.namespace.py index c9375800d..fa5beac2a 100644 --- a/tests/test_apps.nem.namespace.py +++ b/tests/test_apps.nem.namespace.py @@ -23,7 +23,7 @@ class TestNemNamespace(unittest.TestCase): 'TAMESPACEWH4MKFMBCVFERDPOOP4FK7MTDJEYP35', 5000000000) t = serialize_provision_namespace(m.transaction, m.provision_namespace, unhexlify('84afa1bbc993b7f5536344914dde86141e61f8cbecaf8c9cefc07391f3287cf5')) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('f7cab28da57204d01a907c697836577a4ae755e6c9bac60dcc318494a22debb3')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('f7cab28da57204d01a907c697836577a4ae755e6c9bac60dcc318494a22debb3')) # http://bob.nem.ninja:8765/#/namespace/7ddd5fe607e1bfb5606e0ac576024c318c8300d237273117d4db32a60c49524d m = _create_msg(NEM_NETWORK_TESTNET, @@ -36,7 +36,7 @@ class TestNemNamespace(unittest.TestCase): 5000000000) t = serialize_provision_namespace(m.transaction, m.provision_namespace, unhexlify('244fa194e2509ac0d2fbc18779c2618d8c2ebb61c16a3bcbebcf448c661ba8dc')) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('7ddd5fe607e1bfb5606e0ac576024c318c8300d237273117d4db32a60c49524d')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('7ddd5fe607e1bfb5606e0ac576024c318c8300d237273117d4db32a60c49524d')) # http://chain.nem.ninja/#/namespace/57071aad93ca125dc231dc02c07ad8610cd243d35068f9b36a7d231383907569 m = _create_msg(NEM_NETWORK_MAINNET, @@ -49,7 +49,7 @@ class TestNemNamespace(unittest.TestCase): 50000000000) t = serialize_provision_namespace(m.transaction, m.provision_namespace, unhexlify('9f3c14f304309c8b72b2821339c4428793b1518bea72d58dd01f19d523518614')) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('57071aad93ca125dc231dc02c07ad8610cd243d35068f9b36a7d231383907569')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('57071aad93ca125dc231dc02c07ad8610cd243d35068f9b36a7d231383907569')) def _create_msg(network: int, timestamp: int, fee: int, deadline: int, diff --git a/tests/test_apps.nem.transfer.py b/tests/test_apps.nem.transfer.py index 356dc27ba..272055a5b 100644 --- a/tests/test_apps.nem.transfer.py +++ b/tests/test_apps.nem.transfer.py @@ -24,7 +24,7 @@ class TestNemTransfer(unittest.TestCase): t = serialize_transfer(m.transaction, m.transfer, unhexlify('e59ef184a612d4c3c4d89b5950eb57262c69862b2f96e59c5043bf41765c482f')) self.assertEqual(t, unhexlify('01010000010000980000000020000000e59ef184a612d4c3c4d89b5950eb57262c69862b2f96e59c5043bf41765c482f00000000000000000000000028000000544247494d52453453424652554a584d48374456463249425933364c324544575a3337475653433400203d88792d000000000000')) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('0acbf8df91e6a65dc56c56c43d65f31ff2a6a48d06fc66e78c7f3436faf3e74f')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('0acbf8df91e6a65dc56c56c43d65f31ff2a6a48d06fc66e78c7f3436faf3e74f')) def test_create_transfer_with_payload(self): @@ -39,7 +39,7 @@ class TestNemTransfer(unittest.TestCase): t = serialize_transfer(m.transaction, m.transfer, unhexlify('8d07f90fb4bbe7715fa327c926770166a11be2e494a970605f2e12557f66c9b9'), bytearray('Good luck!')) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('e90e98614c7598fbfa4db5411db1b331d157c2f86b558fb7c943d013ed9f71cb')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('e90e98614c7598fbfa4db5411db1b331d157c2f86b558fb7c943d013ed9f71cb')) def test_create_transfer_with_encrypted_payload(self): @@ -55,7 +55,7 @@ class TestNemTransfer(unittest.TestCase): unhexlify('f85ab43dad059b9d2331ddacc384ad925d3467f03207182e01296bacfb242d01'), unhexlify('4d9dcf9186967d30be93d6d5404ded22812dbbae7c3f0de501bcd7228cba45bded13000eec7b4c6215fc4d3588168c9218167cec98e6977359153a4132e050f594548e61e0dc61c153f0f53c5e65c595239c9eb7c4e7d48e0f4bb8b1dd2f5ddc'), True) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('40e89160e6f83d37f7c82defc0afe2c1605ae8c919134570a51dd27ea1bb516c')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('40e89160e6f83d37f7c82defc0afe2c1605ae8c919134570a51dd27ea1bb516c')) def test_create_transfer_with_mosaic(self): @@ -78,7 +78,7 @@ class TestNemTransfer(unittest.TestCase): serialize_mosaic(t, 'gimre.games.pong', 'paddles', 2) serialize_mosaic(t, 'nem', 'xem', 44000000) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('3409d9ece28d6296d6d5e220a7e3cb8641a3fb235ffcbd20c95da64f003ace6c')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('3409d9ece28d6296d6d5e220a7e3cb8641a3fb235ffcbd20c95da64f003ace6c')) # http://chain.nem.ninja/#/transfer/882dca18dcbe075e15e0ec5a1d7e6ccd69cc0f1309ffd3fde227bfbc107b3f6e m = _create_msg(NEM_NETWORK_MAINNET, @@ -95,7 +95,7 @@ class TestNemTransfer(unittest.TestCase): False) serialize_mosaic(t, 'imre.g', 'tokens', 1) - self.assertEqual(hashlib.sha3_256(t).digest(True), unhexlify('882dca18dcbe075e15e0ec5a1d7e6ccd69cc0f1309ffd3fde227bfbc107b3f6e')) + self.assertEqual(hashlib.sha3_256(t, keccak=True).digest(), unhexlify('882dca18dcbe075e15e0ec5a1d7e6ccd69cc0f1309ffd3fde227bfbc107b3f6e')) def _create_msg(network: int, timestamp: int, fee: int, deadline: int, diff --git a/tests/test_trezor.crypto.hashlib.sha3_256.py b/tests/test_trezor.crypto.hashlib.sha3_256.py index 47606628a..522cf3b1b 100644 --- a/tests/test_trezor.crypto.hashlib.sha3_256.py +++ b/tests/test_trezor.crypto.hashlib.sha3_256.py @@ -26,7 +26,7 @@ class TestCryptoSha3_256(unittest.TestCase): def test_digest_keccak(self): for b, d in self.vectors_keccak: - self.assertEqual(hashlib.sha3_256(b).digest(True), unhexlify(d)) + self.assertEqual(hashlib.sha3_256(b, keccak=True).digest(), unhexlify(d)) def test_update(self): for b, d in self.vectors: @@ -48,9 +48,9 @@ class TestCryptoSha3_256(unittest.TestCase): def test_update_keccak(self): for b, d in self.vectors_keccak: - x = hashlib.sha3_256() + x = hashlib.sha3_256(keccak=True) x.update(b) - self.assertEqual(x.digest(True), unhexlify(d)) + self.assertEqual(x.digest(), unhexlify(d)) def test_digest_multi(self): x = hashlib.sha3_256() @@ -61,10 +61,10 @@ class TestCryptoSha3_256(unittest.TestCase): self.assertEqual(d0, d2) def test_digest_multi_keccak(self): - x = hashlib.sha3_256() - d0 = x.digest(True) - d1 = x.digest(True) - d2 = x.digest(True) + x = hashlib.sha3_256(keccak=True) + d0 = x.digest() + d1 = x.digest() + d2 = x.digest() self.assertEqual(d0, d1) self.assertEqual(d0, d2) diff --git a/tests/test_trezor.crypto.hashlib.sha3_512.py b/tests/test_trezor.crypto.hashlib.sha3_512.py index c7e273bc2..c884409f2 100644 --- a/tests/test_trezor.crypto.hashlib.sha3_512.py +++ b/tests/test_trezor.crypto.hashlib.sha3_512.py @@ -26,7 +26,7 @@ class TestCryptoSha3_512(unittest.TestCase): def test_digest_keccak(self): for b, d in self.vectors_keccak: - self.assertEqual(hashlib.sha3_512(b).digest(True), unhexlify(d)) + self.assertEqual(hashlib.sha3_512(b, keccak=True).digest(), unhexlify(d)) def test_update(self): for b, d in self.vectors: @@ -48,9 +48,9 @@ class TestCryptoSha3_512(unittest.TestCase): def test_update_keccak(self): for b, d in self.vectors_keccak: - x = hashlib.sha3_512() + x = hashlib.sha3_512(keccak=True) x.update(b) - self.assertEqual(x.digest(True), unhexlify(d)) + self.assertEqual(x.digest(), unhexlify(d)) def test_digest_multi(self): x = hashlib.sha3_512() @@ -61,10 +61,10 @@ class TestCryptoSha3_512(unittest.TestCase): self.assertEqual(d0, d2) def test_digest_multi_keccak(self): - x = hashlib.sha3_512() - d0 = x.digest(True) - d1 = x.digest(True) - d2 = x.digest(True) + x = hashlib.sha3_512(keccak=True) + d0 = x.digest() + d1 = x.digest() + d2 = x.digest() self.assertEqual(d0, d1) self.assertEqual(d0, d2)