From 245681b35bfa01b4e151b8c9e1c5a48bca66bb00 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Tue, 23 Sep 2025 09:20:54 +0000 Subject: [PATCH] protocol: use match statement where practicable --- mmgen/protocol.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/mmgen/protocol.py b/mmgen/protocol.py index 4b327279..3a1da43a 100755 --- a/mmgen/protocol.py +++ b/mmgen/protocol.py @@ -149,13 +149,13 @@ class CoinProtocol(MMGenObject): @staticmethod def parse_network_id(network_id): - nid = namedtuple('parsed_network_id', ['coin', 'network']) - if network_id.endswith('_tn'): - return nid(network_id[:-3], 'testnet') - elif network_id.endswith('_rt'): - return nid(network_id[:-3], 'regtest') - else: - return nid(network_id, 'mainnet') + match network_id.rsplit('_', 1): + case (coin, netcode) if netcode in ('tn', 'rt'): + network = {'tn': 'testnet', 'rt': 'regtest'}[netcode] + case _: + coin = network_id + network = 'mainnet' + return namedtuple('parsed_network_id', ['coin', 'network'])(coin, network) @staticmethod def create_network_id(coin, network): @@ -257,14 +257,15 @@ class CoinProtocol(MMGenObject): # Key must be non-zero and less than group order of secp256k1 curve if 0 < int.from_bytes(sec, 'big') < self.secp256k1_group_order: return sec - else: # chance of this is less than 1 in 2^127 - from .util import die, ymsg - pk = int.from_bytes(sec, 'big') - if pk == 0: # chance of this is 1 in 2^256 + + # less than 1 in 2^127 probability that we get here + from .util import die, ymsg + match int.from_bytes(sec, 'big'): + case 0: die(4, 'Private key is zero!') - elif pk == self.secp256k1_group_order: # ditto + case self.secp256k1_group_order: die(4, 'Private key == secp256k1_group_order!') - else: # return key mod group order as the key + case pk: # return key (mod group order) as the key if not self.cfg.test_suite: ymsg(f'Warning: private key is greater than secp256k1 group order!:\n {sec.hex()}') return (pk % self.secp256k1_group_order).to_bytes(self.privkey_len, 'big')