From fd4904922dc6be6095700636a2499f61cadd96fc Mon Sep 17 00:00:00 2001 From: Mostafa Date: Sat, 16 May 2026 14:22:57 +0800 Subject: [PATCH 1/2] use Blake2b for digest function --- pactus/crypto/secp256k1/private_key.py | 5 ++++- pactus/crypto/secp256k1/public_key.py | 5 +++-- tests/test_crypto_secp256k1.py | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pactus/crypto/secp256k1/private_key.py b/pactus/crypto/secp256k1/private_key.py index 6ba71ca..0b85861 100644 --- a/pactus/crypto/secp256k1/private_key.py +++ b/pactus/crypto/secp256k1/private_key.py @@ -1,9 +1,11 @@ from __future__ import annotations import secp256k1 +import hashlib from pactus.crypto.hrp import HRP from pactus.utils import utils +from functools import partial from .public_key import PublicKey from .signature import SIGNATURE_TYPE_SECP256K1, Signature @@ -62,6 +64,7 @@ def public_key(self) -> PublicKey: return PublicKey(self.scalar.pubkey) def sign(self, msg: bytes) -> Signature: - sig = self.scalar.ecdsa_sign(msg) + digest = partial(hashlib.blake2b, digest_size=32) + sig = self.scalar.ecdsa_sign(msg, digest=digest) sig_compact = self.scalar.ecdsa_serialize_compact(sig) return Signature(sig_compact) diff --git a/pactus/crypto/secp256k1/public_key.py b/pactus/crypto/secp256k1/public_key.py index 12b5137..515e2eb 100644 --- a/pactus/crypto/secp256k1/public_key.py +++ b/pactus/crypto/secp256k1/public_key.py @@ -1,9 +1,9 @@ from __future__ import annotations import hashlib - import secp256k1 from ripemd.ripemd160 import ripemd160 +from functools import partial from pactus.crypto.address import Address, AddressType from pactus.crypto.hrp import HRP @@ -58,9 +58,10 @@ def account_address(self) -> Address: def verify(self, msg: bytes, sig: Signature) -> bool: try: + digest = partial(hashlib.blake2b, digest_size=32) sig_compact = sig.raw_bytes() sig_deserialized = self.pub.ecdsa_deserialize_compact(sig_compact) - return self.pub.ecdsa_verify(msg, sig_deserialized) + return self.pub.ecdsa_verify(msg, sig_deserialized, digest=digest) # ruff: noqa: BLE001 # unable to fix this issue except Exception: diff --git a/tests/test_crypto_secp256k1.py b/tests/test_crypto_secp256k1.py index 0a10b0c..9efc067 100644 --- a/tests/test_crypto_secp256k1.py +++ b/tests/test_crypto_secp256k1.py @@ -26,7 +26,7 @@ def test_encoding(self): msg = b"pactus" sig = Secp256k1Signature.from_string( - "16e6f8bcdb92964a35773aae200628a5b470b6488d42ceef6538da0b4ffd3b42098dd821eea96f66ba02c9c4473443ab51c411ab78adfbb90d53b07ca1d6862b" + "c86779676d217b04979434e5bd37eddd02b671e9a54b48d3a812c7862dcb539631bb5e8459fec007608f50ea5661e0a5215aac976705404cb4f36ee623e63199" ) self.assertTrue(pub.verify(msg, sig)) From 62a40895f236eea3f64b35c49b5e3921d5b5834f Mon Sep 17 00:00:00 2001 From: Mostafa Date: Sat, 16 May 2026 14:26:14 +0800 Subject: [PATCH 2/2] use Blake2b for digest function --- pactus/crypto/secp256k1/private_key.py | 5 +++-- pactus/crypto/secp256k1/public_key.py | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pactus/crypto/secp256k1/private_key.py b/pactus/crypto/secp256k1/private_key.py index 0b85861..e95bec6 100644 --- a/pactus/crypto/secp256k1/private_key.py +++ b/pactus/crypto/secp256k1/private_key.py @@ -1,11 +1,12 @@ from __future__ import annotations -import secp256k1 import hashlib +from functools import partial + +import secp256k1 from pactus.crypto.hrp import HRP from pactus.utils import utils -from functools import partial from .public_key import PublicKey from .signature import SIGNATURE_TYPE_SECP256K1, Signature diff --git a/pactus/crypto/secp256k1/public_key.py b/pactus/crypto/secp256k1/public_key.py index 515e2eb..6970fed 100644 --- a/pactus/crypto/secp256k1/public_key.py +++ b/pactus/crypto/secp256k1/public_key.py @@ -1,9 +1,10 @@ from __future__ import annotations import hashlib +from functools import partial + import secp256k1 from ripemd.ripemd160 import ripemd160 -from functools import partial from pactus.crypto.address import Address, AddressType from pactus.crypto.hrp import HRP