laforge has submitted this change. (
https://gerrit.osmocom.org/c/pysim/+/39057?usp=email
)
Change subject: ara_m fix export of AID-REF-DO (empty)
......................................................................
ara_m fix export of AID-REF-DO (empty)
GPD_SPE_013 Table 6-3 defines two types of AID-REF-DO objects (both
are fully independed TLV IEs with the same name). The version with
tag '4F' identifies an SE application. It may contain an AID prefix
or even be of length 0 in case the rule should apply to all SE
applications. Then there is the version with tag 'C0', which must
always have length 0 and serves a flag to apply the rule to the
implicitly selected SE application. Technically both are completely
different things, so we must also treat them separately in the
pySim-shell code.
Related: OS#6681
Change-Id: I771d5e860b12215280e3d0a8c314ce843fe0d6a2
---
M pySim/ara_m.py
M tests/pySim-shell_test/ara_m/adf_ara-m.cfg.ok
M tests/pySim-shell_test/ara_m/adf_ara-m.script.ok
M tests/pySim-shell_test/ara_m/test.script
4 files changed, 16 insertions(+), 10 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
diff --git a/pySim/ara_m.py b/pySim/ara_m.py
index f4da31d..7a0f93f 100644
--- a/pySim/ara_m.py
+++ b/pySim/ara_m.py
@@ -320,9 +320,9 @@
'--device-app-id', required=True, help='Identifies the specific
device application that the rule appplies to. Hash of Certificate of Application Provider,
or UUID. (20/32 hex bytes)')
aid_grp = store_ref_ar_do_parse.add_mutually_exclusive_group()
aid_grp.add_argument(
- '--aid', help='Identifies the specific SE application for which
rules are to be stored. Can be a partial AID, containing for example only the RID. (5-16
hex bytes)')
+ '--aid', help='Identifies the specific SE application for which
rules are to be stored. Can be a partial AID, containing for example only the RID. (5-16
or 0 hex bytes)')
aid_grp.add_argument('--aid-empty', action='store_true',
- help='No specific SE application, applies to all
applications')
+ help='No specific SE application, applies to implicitly
selected application (all channels)')
store_ref_ar_do_parse.add_argument(
'--pkg-ref', help='Full Android Java package name (up to 127
chars ASCII)')
# AR-DO
@@ -423,10 +423,13 @@
# matching key.
if dictlist is None:
return None
- obj = None
for d in dictlist:
- obj = d.get(key, obj)
- return obj
+ if key in d:
+ obj = d.get(key)
+ if obj is None:
+ return ""
+ return obj
+ return None
@staticmethod
def __export_ref_ar_do_list(ref_ar_do_list):
@@ -437,6 +440,7 @@
if ref_do_list and ar_do_list:
# Get ref_do parameters
aid_ref_do =
CardApplicationARAM.__export_get_from_dictlist('aid_ref_do', ref_do_list)
+ aid_ref_empty_do =
CardApplicationARAM.__export_get_from_dictlist('aid_ref_empty_do', ref_do_list)
dev_app_id_ref_do =
CardApplicationARAM.__export_get_from_dictlist('dev_app_id_ref_do', ref_do_list)
pkg_ref_do =
CardApplicationARAM.__export_get_from_dictlist('pkg_ref_do', ref_do_list)
@@ -447,9 +451,11 @@
# Write command-line
export_str += "aram_store_ref_ar_do"
- if aid_ref_do:
+ if aid_ref_do is not None and len(aid_ref_do) > 0:
export_str += (" --aid %s" % aid_ref_do)
- else:
+ elif aid_ref_do is not None:
+ export_str += " --aid \"\""
+ if aid_ref_empty_do is not None:
export_str += " --aid-empty"
if dev_app_id_ref_do:
export_str += (" --device-app-id %s" % dev_app_id_ref_do)
diff --git a/tests/pySim-shell_test/ara_m/adf_ara-m.cfg.ok
b/tests/pySim-shell_test/ara_m/adf_ara-m.cfg.ok
index 5520a6b..a81f8fc 100644
--- a/tests/pySim-shell_test/ara_m/adf_ara-m.cfg.ok
+++ b/tests/pySim-shell_test/ara_m/adf_ara-m.cfg.ok
@@ -110,7 +110,7 @@
{
"ref_do": [
{
- "aid_ref_do": "ffffffffffdd"
+ "aid_ref_do": null
},
{
"dev_app_id_ref_do":
"a1234567890123bb1f140de987aaa891bbbf0bdd"
diff --git a/tests/pySim-shell_test/ara_m/adf_ara-m.script.ok
b/tests/pySim-shell_test/ara_m/adf_ara-m.script.ok
index 79c20eb..2296492 100644
--- a/tests/pySim-shell_test/ara_m/adf_ara-m.script.ok
+++ b/tests/pySim-shell_test/ara_m/adf_ara-m.script.ok
@@ -7,7 +7,7 @@
# Decoded FCP Template: None
select MF/ADF.ARA-M
aram_delete_all
-aram_store_ref_ar_do --aid ffffffffffdd --device-app-id
a1234567890123bb1f140de987aaa891bbbf0bdd --apdu-filter aabbccdd010203041122334405060708
--nfc-never --android-permissions 0000000000000004
+aram_store_ref_ar_do --aid "" --device-app-id
a1234567890123bb1f140de987aaa891bbbf0bdd --apdu-filter aabbccdd010203041122334405060708
--nfc-never --android-permissions 0000000000000004
aram_store_ref_ar_do --aid ffffffffffcc --device-app-id
a1234567890aaabb1f140de987657891a04f0bdd --apdu-filter aabbccdd01020304 --nfc-always
--android-permissions 0000000000000004
aram_store_ref_ar_do --aid ffffffffffbb --device-app-id
aa6872f28b340b2345678905d5c2bbd5a04f0bdd --apdu-always --nfc-always --android-permissions
0000000000000004
aram_store_ref_ar_do --aid ffffffffffaa --device-app-id
aa6872787654334567840de535c2bbd5a04f0baa --apdu-never --nfc-never --android-permissions
0000000000000004
diff --git a/tests/pySim-shell_test/ara_m/test.script
b/tests/pySim-shell_test/ara_m/test.script
index e6db749..2b59925 100644
--- a/tests/pySim-shell_test/ara_m/test.script
+++ b/tests/pySim-shell_test/ara_m/test.script
@@ -10,7 +10,7 @@
aram_store_ref_ar_do --aid ffffffffffaa --device-app-id
aa6872787654334567840de535c2bbd5a04f0baa --apdu-never --nfc-never --android-permissions
0000000000000004
aram_store_ref_ar_do --aid ffffffffffbb --device-app-id
aa6872f28b340b2345678905d5c2bbd5a04f0bdd --apdu-always --nfc-always --android-permissions
0000000000000004
aram_store_ref_ar_do --aid ffffffffffcc --device-app-id
a1234567890aaabb1f140de987657891a04f0bdd --apdu-filter aabbccdd01020304 --nfc-always
--android-permissions 0000000000000004
-aram_store_ref_ar_do --aid ffffffffffdd --device-app-id
a1234567890123bb1f140de987aaa891bbbf0bdd --apdu-filter aabbccdd010203041122334405060708
--nfc-never --android-permissions 0000000000000004
+aram_store_ref_ar_do --aid "" --device-app-id
a1234567890123bb1f140de987aaa891bbbf0bdd --apdu-filter aabbccdd010203041122334405060708
--nfc-never --android-permissions 0000000000000004
# Export ADF.ARA-M to a temporary script file
export --filename ADF.ARA-M > adf_ara-m.script.tmp
--
To view, visit
https://gerrit.osmocom.org/c/pysim/+/39057?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: I771d5e860b12215280e3d0a8c314ce843fe0d6a2
Gerrit-Change-Number: 39057
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>