diff options
author | Harald Welte <laforge@osmocom.org> | 2023-07-09 21:25:14 +0200 |
---|---|---|
committer | Harald Welte <laforge@osmocom.org> | 2023-07-11 08:42:12 +0200 |
commit | 30de9fd8abc9d7c2c541fea7fa4b97c4ca1a54eb (patch) | |
tree | d83c0bd59e07964f6ba2d14d5712accb964caa52 | |
parent | f818acd5eb669b7d28cb770434ce2b99d3b00169 (diff) |
TLV_IE_Collection: use snake-style names during from_dict()
The TLV_IE_Collection, just like the individual TLV classes, do
use their snake-style names when converting from binary to dict
using the to_dict() method. It is inconsistent (and a bug) to
expect the CamelCase names during encoding (from_dict). After all,
we want the output of to_dict() to be used as input to from_dict().
Change-Id: Iabd1ad98c3878659d123eef919c22ca824886f8a
-rw-r--r-- | pySim/ara_m.py | 22 | ||||
-rw-r--r-- | pySim/global_platform.py | 3 | ||||
-rw-r--r-- | pySim/tlv.py | 2 |
3 files changed, 13 insertions, 14 deletions
diff --git a/pySim/ara_m.py b/pySim/ara_m.py index 59f205c..e2e6da1 100644 --- a/pySim/ara_m.py +++ b/pySim/ara_m.py @@ -349,28 +349,28 @@ class ADF_ARAM(CardADF): # REF ref_do_content = [] if opts.aid: - ref_do_content += [{'AidRefDO': opts.aid}] + ref_do_content += [{'aid_ref_do': opts.aid}] elif opts.aid_empty: - ref_do_content += [{'AidRefEmptyDO': None}] - ref_do_content += [{'DevAppIdRefDO': opts.device_app_id}] + ref_do_content += [{'aid_ref_empty_do': None}] + ref_do_content += [{'dev_app_id_ref_do': opts.device_app_id}] if opts.pkg_ref: - ref_do_content += [{'PkgRefDO': opts.pkg_ref}] + ref_do_content += [{'pkg_ref_do': opts.pkg_ref}] # AR ar_do_content = [] if opts.apdu_never: - ar_do_content += [{'ApduArDO': {'generic_access_rule': 'never'}}] + ar_do_content += [{'apdu_ar_od': {'generic_access_rule': 'never'}}] elif opts.apdu_always: - ar_do_content += [{'ApduArDO': {'generic_access_rule': 'always'}}] + ar_do_content += [{'apdu_ar_do': {'generic_access_rule': 'always'}}] elif opts.apdu_filter: # TODO: multiple filters - ar_do_content += [{'ApduArDO': {'apdu_filter': [opts.apdu_filter]}}] + ar_do_content += [{'apdu_ar_do': {'apdu_filter': [opts.apdu_filter]}}] if opts.nfc_always: - ar_do_content += [{'NfcArDO': {'nfc_event_access_rule': 'always'}}] + ar_do_content += [{'nfc_ar_do': {'nfc_event_access_rule': 'always'}}] elif opts.nfc_never: - ar_do_content += [{'NfcArDO': {'nfc_event_access_rule': 'never'}}] + ar_do_content += [{'nfc_ar_do': {'nfc_event_access_rule': 'never'}}] if opts.android_permissions: - ar_do_content += [{'PermArDO': {'permissions': opts.android_permissions}}] - d = [{'RefArDO': [{'RefDO': ref_do_content}, {'ArDO': ar_do_content}]}] + ar_do_content += [{'perm_ar_do': {'permissions': opts.android_permissions}}] + d = [{'ref_ar_do': [{'ref_do': ref_do_content}, {'ar_do': ar_do_content}]}] csrado = CommandStoreRefArDO() csrado.from_dict(d) res_do = ADF_ARAM.store_data(self._cmd.card._scc._tp, csrado) diff --git a/pySim/global_platform.py b/pySim/global_platform.py index 1c31ddc..baae234 100644 --- a/pySim/global_platform.py +++ b/pySim/global_platform.py @@ -232,8 +232,7 @@ class ADF_SD(CardADF): self._cmd.poutput_json(ie.to_dict()) def complete_get_data(self, text, line, begidx, endidx) -> List[str]: - #data_dict = {camel_to_snake(str(x.__name__)): x for x in DataCollection.possible_nested} - data_dict = {str(x.__name__): x for x in DataCollection.possible_nested} + data_dict = {camel_to_snake(str(x.__name__)): x for x in DataCollection.possible_nested} index_dict = {1: data_dict} return self._cmd.index_based_complete(text, line, begidx, endidx, index_dict=index_dict) diff --git a/pySim/tlv.py b/pySim/tlv.py index bd95505..22a14cd 100644 --- a/pySim/tlv.py +++ b/pySim/tlv.py @@ -318,7 +318,7 @@ class TLV_IE_Collection(metaclass=TlvCollectionMeta): self.members_by_tag = {} self.members_by_name = {} self.members_by_tag = {m.tag: m for m in self.members} - self.members_by_name = {m.__name__: m for m in self.members} + self.members_by_name = {camel_to_snake(m.__name__): m for m in self.members} # if we are a constructed IE, [ordered] list of actual child-IE instances self.children = kwargs.get('children', []) self.encoded = None |