laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/pysim/+/42736?usp=email )

Change subject: card_key_provider: add a static method to parse --column-keys 
args
......................................................................

card_key_provider: add a static method to parse --column-keys args

The contents of the --column-keys arguments are currently parsed
in init_card_key_provider. Let's add a static method in
CardKeyFieldCryptor to simplify re-usage of the CardKeyFieldCryptor

Related: SYS#6959
Change-Id: Ic955f271b1de1b1b855b21c82ed10343044e45fa
---
M pySim/card_key_provider.py
1 file changed, 19 insertions(+), 5 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved




diff --git a/pySim/card_key_provider.py b/pySim/card_key_provider.py
index e71daa6..6991cfa 100644
--- a/pySim/card_key_provider.py
+++ b/pySim/card_key_provider.py
@@ -140,6 +140,23 @@
         arg_parser.add_argument('--csv-column-key', 
metavar='FIELD:AES_KEY_HEX', default=[], action='append',
                                 help=argparse.SUPPRESS, dest='column_key')

+    @staticmethod
+    def transport_keys_from_opts(opts: argparse.Namespace) -> dict:
+        """
+        Transport keys are passed via the commandline using the '--column-key' 
option. Each column requires a
+        dedicated transport key. This method can be used to extract the column 
keys parameters from the commandline
+        options into a dict that can be directly passed to the construtor with 
the transport_keys argument.
+
+        Args:
+                opts: parsed commandline options (Namespace)
+        """
+
+        transport_keys = {}
+        for par in opts.column_key:
+            name, key = par.split(':')
+            transport_keys[name] = key
+        return transport_keys
+
 class CardKeyProvider(abc.ABC):
     """Base class, not containing any concrete implementation."""

@@ -345,11 +362,8 @@

 def card_key_provider_init(opts: argparse.Namespace):
     """Initialize card key provider depending on the user provided commandline 
options"""
-    column_keys = {}
-    for par in opts.column_key:
-        name, key = par.split(':')
-        column_keys[name] = key
-    card_key_field_cryptor = CardKeyFieldCryptor(column_keys)
+    transport_keys = CardKeyFieldCryptor.transport_keys_from_opts(opts)
+    card_key_field_cryptor = CardKeyFieldCryptor(transport_keys)
     if os.path.isfile(os.path.expanduser(opts.csv)):
         
card_key_provider_register(CardKeyProviderCsv(os.path.expanduser(opts.csv), 
card_key_field_cryptor))
     if os.path.isfile(os.path.expanduser(opts.pgsql)):

--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42736?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ic955f271b1de1b1b855b21c82ed10343044e45fa
Gerrit-Change-Number: 42736
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>

Reply via email to