From 79652a78a695733567bcc8b777f0e6033ff43827 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Tue, 4 Oct 2022 13:08:53 +0000 Subject: [PATCH] keygen.py: relocate libsecp256k1 availability test to class --- mmgen/addr.py | 12 +++++------- mmgen/keygen.py | 10 ++++++++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/mmgen/addr.py b/mmgen/addr.py index 275da522..15a2858f 100755 --- a/mmgen/addr.py +++ b/mmgen/addr.py @@ -204,14 +204,12 @@ def KeyGenerator(proto,pubkey_type,backend=None,silent=False): backend_id = pubkey_type_cls.backends[int(backend) - 1 if backend else 0] - if backend_id == 'libsecp256k1': - if not pubkey_type_cls.libsecp256k1.test_avail(silent=silent): - backend_id = 'python-ecdsa' - if not backend: - from .util import qmsg - qmsg('Using (slow) native Python ECDSA library for public key generation') + backend_clsname = getattr( + pubkey_type_cls, + backend_id.replace('-','_') + ).test_avail(silent=silent) - return getattr(pubkey_type_cls,backend_id.replace('-','_'))() + return getattr(pubkey_type_cls,backend_clsname)() def AddrGenerator(proto,addr_type): """ diff --git a/mmgen/keygen.py b/mmgen/keygen.py index 33a16d92..f408ea68 100755 --- a/mmgen/keygen.py +++ b/mmgen/keygen.py @@ -43,6 +43,10 @@ class keygen_base: def to_viewkey(self,privkey): return None + @classmethod + def test_avail(cls,silent=False): + return cls.__name__ + class keygen_backend: class std: @@ -67,12 +71,14 @@ class keygen_backend: from .util import die die( 'ExtensionModuleError', 'Unable to execute priv2pub() from secp256k1 extension module' ) - return True + return cls.__name__ except Exception as e: if not silent: from .util import ymsg ymsg(str(e)) - return False + from .util import qmsg + qmsg('Using (slow) native Python ECDSA library for public key generation') + return 'python_ecdsa' class python_ecdsa(keygen_base):