From 33e9dac2fe2e81876d1946aeb76a2e8632c6b064 Mon Sep 17 00:00:00 2001 From: Leandro Reinaux Date: Fri, 12 Oct 2018 23:13:18 -0300 Subject: [PATCH] src/apps/common: add smartcash curve --- src/apps/common/coininfo.py | 6 +++++- src/apps/common/coininfo.py.mako | 6 +++++- src/trezor/crypto/base58.py | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/apps/common/coininfo.py b/src/apps/common/coininfo.py index 3d7d5415c..09a37e130 100644 --- a/src/apps/common/coininfo.py +++ b/src/apps/common/coininfo.py @@ -1,6 +1,6 @@ # generated from coininfo.py.mako # do not edit manually! -from trezor.crypto.base58 import blake256_32, groestl512d_32, sha256d_32 +from trezor.crypto.base58 import blake256_32, groestl512d_32, sha3k_256, sha256d_32 from trezor.crypto.scripts import blake256_ripemd160_digest, sha256_ripemd160_digest @@ -54,6 +54,10 @@ class CoinInfo: self.b58_hash = blake256_32 self.sign_hash_double = False self.script_hash = blake256_ripemd160_digest + elif curve_name == "secp256k1-smart": + self.b58_hash = sha3k_256 + self.sign_hash_double = False + self.script_hash = sha256_ripemd160_digest else: self.b58_hash = sha256d_32 self.sign_hash_double = True diff --git a/src/apps/common/coininfo.py.mako b/src/apps/common/coininfo.py.mako index 6f6d496d0..ffd545e29 100644 --- a/src/apps/common/coininfo.py.mako +++ b/src/apps/common/coininfo.py.mako @@ -1,6 +1,6 @@ # generated from coininfo.py.mako # do not edit manually! -from trezor.crypto.base58 import blake256_32, groestl512d_32, sha256d_32 +from trezor.crypto.base58 import blake256_32, groestl512d_32, sha3k_256, sha256d_32 from trezor.crypto.scripts import blake256_ripemd160_digest, sha256_ripemd160_digest @@ -54,6 +54,10 @@ class CoinInfo: self.b58_hash = blake256_32 self.sign_hash_double = False self.script_hash = blake256_ripemd160_digest + elif curve_name == "secp256k1-smart": + self.b58_hash = sha3k_256 + self.sign_hash_double = False + self.script_hash = sha256_ripemd160_digest else: self.b58_hash = sha256d_32 self.sign_hash_double = True diff --git a/src/trezor/crypto/base58.py b/src/trezor/crypto/base58.py index a9b560aa5..f3227bba0 100644 --- a/src/trezor/crypto/base58.py +++ b/src/trezor/crypto/base58.py @@ -77,6 +77,12 @@ def blake256_32(data: bytes) -> bytes: return blake256(blake256(data).digest()).digest()[:4] +def sha3k_256(data: bytes) -> bytes: + from .hashlib import sha3_256 + + return sha3_256(data, keccak=True).digest()[:4] + + def encode_check(data: bytes, digestfunc=sha256d_32) -> str: """ Convert bytes to base58 encoded string, append checksum.