laforge has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/pysim/+/37524?usp=email )


Change subject: move parts of pySim.ts_31_103 to pySim.ts_31_103_shared
......................................................................

move parts of pySim.ts_31_103 to pySim.ts_31_103_shared

This is requird to make some definitions available to USIM / ts_31_102
without introducing circular dependencies.

Change-Id: I32e29f400d2da047e821bf732316b21805b5a1e2
---
M pySim/ts_31_103.py
A pySim/ts_31_103_shared.py
2 files changed, 151 insertions(+), 113 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/24/37524/1

diff --git a/pySim/ts_31_103.py b/pySim/ts_31_103.py
index 2a71449..0de0d62 100644
--- a/pySim/ts_31_103.py
+++ b/pySim/ts_31_103.py
@@ -29,6 +29,7 @@
 from pySim.ts_51_011 import EF_AD, EF_SMS, EF_SMSS, EF_SMSR, EF_SMSP
 from pySim.ts_31_102 import ADF_USIM, EF_FromPreferred
 from pySim.ts_31_102_telecom import EF_UServiceTable
+from pySim.ts_31_103_shared import *
 import pySim.ts_102_221
 from pySim.ts_102_221 import EF_ARR
 from pySim.construct import *
@@ -190,119 +191,6 @@
         super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
         self._tlv = EF_NAFKCA.NafKeyCentreAddress

-# TS 31.103 Section 4.2.16
-class EF_UICCIARI(LinFixedEF):
-    class iari(BER_TLV_IE, tag=0x80):
-        _construct = Utf8Adapter(GreedyBytes)
-
-    def __init__(self, fid='6fe7', sfid=None, name='EF.UICCIARI', desc='UICC 
IARI', **kwargs):
-        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
-        self._tlv = EF_UICCIARI.iari
-
-# TS 31.103 Section 4.2.18
-class EF_IMSConfigData(BerTlvEF):
-    class ImsConfigDataEncoding(BER_TLV_IE, tag=0x80):
-        _construct = HexAdapter(Bytes(1))
-    class ImsConfigData(BER_TLV_IE, tag=0x81):
-        _construct = GreedyString
-    # pylint: disable=undefined-variable
-    class ImsConfigDataCollection(TLV_IE_Collection, 
nested=[ImsConfigDataEncoding, ImsConfigData]):
-        pass
-    def __init__(self, fid='6ff8', sfid=None, name='EF.IMSConfigData', 
desc='IMS Configuration Data', **kwargs):
-        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
-        self._tlv = EF_IMSConfigData.ImsConfigDataCollection
-
-# TS 31.103 Section 4.2.19
-class EF_XCAPConfigData(BerTlvEF):
-    class Access(BER_TLV_IE, tag=0x81):
-        pass
-    class ApplicationName(BER_TLV_IE, tag=0x82):
-        pass
-    class ProviderID(BER_TLV_IE, tag=0x83):
-        pass
-    class URI(BER_TLV_IE, tag=0x84):
-        pass
-    class XcapAuthenticationUserName(BER_TLV_IE, tag=0x85):
-        pass
-    class XcapAuthenticationPassword(BER_TLV_IE, tag=0x86):
-        pass
-    class XcapAuthenticationType(BER_TLV_IE, tag=0x87):
-        pass
-    class AddressType(BER_TLV_IE, tag=0x88):
-        pass
-    class Address(BER_TLV_IE, tag=0x89):
-        pass
-    class PDPAuthenticationType(BER_TLV_IE, tag=0x8a):
-        pass
-    class PDPAuthenticationName(BER_TLV_IE, tag=0x8b):
-        pass
-    class PDPAuthenticationSecret(BER_TLV_IE, tag=0x8c):
-        pass
-
-    class AccessForXCAP(BER_TLV_IE, tag=0x81):
-        pass
-    class NumberOfXcapConnParPolicy(BER_TLV_IE, tag=0x82):
-        _construct = Int8ub
-    # pylint: disable=undefined-variable
-    class XcapConnParamsPolicyPart(BER_TLV_IE, tag=0xa1, nested=[Access, 
ApplicationName, ProviderID, URI,
-                                 XcapAuthenticationUserName, 
XcapAuthenticationPassword,
-                                 XcapAuthenticationType, AddressType, Address, 
PDPAuthenticationType,
-                                 PDPAuthenticationName, 
PDPAuthenticationSecret]):
-        pass
-    class XcapConnParamsPolicy(BER_TLV_IE, tag=0xa0, nested=[AccessForXCAP, 
NumberOfXcapConnParPolicy, XcapConnParamsPolicyPart]):
-        pass
-    class XcapConnParamsPolicyDO(BER_TLV_IE, tag=0x80, 
nested=[XcapConnParamsPolicy]):
-        pass
-    def __init__(self, fid='6ffc', sfid=None, name='EF.XCAPConfigData', 
desc='XCAP Configuration Data', **kwargs):
-        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
-        self._tlv = EF_XCAPConfigData.XcapConnParamsPolicy
-
-# TS 31.103 Section 4.2.20
-class EF_WebRTCURI(TransparentEF):
-    class uri(BER_TLV_IE, tag=0x80):
-        _construct = Utf8Adapter(GreedyBytes)
-
-    def __init__(self, fid='6ffa', sfid=None, name='EF.WebRTCURI', 
desc='WebRTC URI', **kwargs):
-        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
-        self._tlv = EF_WebRTCURI.uri
-
-# TS 31.103 Section 4.2.21
-class EF_MuDMiDConfigData(BerTlvEF):
-    class MudMidConfigDataEncoding(BER_TLV_IE, tag=0x80):
-        _construct = HexAdapter(Bytes(1))
-    class MudMidConfigData(BER_TLV_IE, tag=0x81):
-        _construct = GreedyString
-    # pylint: disable=undefined-variable
-    class MudMidConfigDataCollection(TLV_IE_Collection, 
nested=[MudMidConfigDataEncoding, MudMidConfigData]):
-        pass
-    def __init__(self, fid='6ffe', sfid=None, name='EF.MuDMiDConfigData',
-                 desc='MuD and MiD Configuration Data', **kwargs):
-        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
-        self._tlv = EF_MuDMiDConfigData.MudMidConfigDataCollection
-
-# TS 31.103 Section 4.2.22
-class EF_AC_GBAUAPI(LinFixedEF):
-    """The use of this EF is eescribed in 3GPP TS 31.130"""
-    class AppletNafAccessControl(BER_TLV_IE, tag=0x80):
-        # the use of Int8ub as length field in Prefixed is strictly speaking 
incorrect, as it is a BER-TLV
-        # length field whihc will consume two bytes from length > 127 bytes.  
However, AIDs and NAF IDs can
-        # safely be assumed shorter than that
-        _construct = Struct('aid'/Prefixed(Int8ub, GreedyBytes),
-                            'naf_id'/Prefixed(Int8ub, GreedyBytes))
-    def __init__(self, fid='6f0a', sfid=None, name='EF.GBAUAPI',
-                 desc='Access Control to GBA_U_API', **kwargs):
-        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
-        self._tlv = EF_AC_GBAUAPI.AppletNafAccessControl
-
-# TS 31.103 Section 4.2.23
-class EF_IMSDCI(TransparentEF):
-    """See Management object as defined in 3GPP TS 24.275."""
-    def __init__(self, fid='6f0b', sfid=None, name='EF.IMSDCI', desc='IMS Data 
Channel Indication', **kwargs):
-        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
-        self._construct = Enum(Byte, ims_dc_not_allowed=0x00,
-                                     ims_dc_allowed_after_ims_session=0x01,
-                                     
ims_dc_allowed_simultaneous_ims_session=0x02)
-

 class ADF_ISIM(CardADF):
     def __init__(self, aid='a0000000871004', has_fs=True, name='ADF.ISIM', 
fid=None, sfid=None,
diff --git a/pySim/ts_31_103_shared.py b/pySim/ts_31_103_shared.py
new file mode 100644
index 0000000..98b5954
--- /dev/null
+++ b/pySim/ts_31_103_shared.py
@@ -0,0 +1,138 @@
+"""
+Definitions from 3GPP TS 31.103 V18.1.0 which are shared by both USIM (31.102) 
and ISIM (31.103) and
+hence need to be in a separate python module to avoid circular dependencies.
+"""
+
+# Copyright (C) 2021-2024 Harald Welte <lafo...@osmocom.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+from construct import Struct, Switch, Bytes, GreedyString, GreedyBytes, 
Int8ub, Prefixed, Enum, Byte
+from pySim.construct import HexAdapter, Utf8Adapter
+from pySim.filesystem import *
+from pySim.tlv import BER_TLV_IE, TLV_IE_Collection
+
+# TS 31.103 Section 4.2.16
+class EF_UICCIARI(LinFixedEF):
+    class iari(BER_TLV_IE, tag=0x80):
+        _construct = Utf8Adapter(GreedyBytes)
+
+    def __init__(self, fid='6fe7', sfid=None, name='EF.UICCIARI', desc='UICC 
IARI', **kwargs):
+        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
+        self._tlv = EF_UICCIARI.iari
+
+# TS 31.103 Section 4.2.18
+class EF_IMSConfigData(BerTlvEF):
+    class ImsConfigDataEncoding(BER_TLV_IE, tag=0x80):
+        _construct = HexAdapter(Bytes(1))
+    class ImsConfigData(BER_TLV_IE, tag=0x81):
+        _construct = GreedyString
+    # pylint: disable=undefined-variable
+    class ImsConfigDataCollection(TLV_IE_Collection, 
nested=[ImsConfigDataEncoding, ImsConfigData]):
+        pass
+    def __init__(self, fid='6ff8', sfid=None, name='EF.IMSConfigData', 
desc='IMS Configuration Data', **kwargs):
+        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
+        self._tlv = EF_IMSConfigData.ImsConfigDataCollection
+
+# TS 31.103 Section 4.2.19
+class EF_XCAPConfigData(BerTlvEF):
+    class Access(BER_TLV_IE, tag=0x81):
+        pass
+    class ApplicationName(BER_TLV_IE, tag=0x82):
+        pass
+    class ProviderID(BER_TLV_IE, tag=0x83):
+        pass
+    class URI(BER_TLV_IE, tag=0x84):
+        pass
+    class XcapAuthenticationUserName(BER_TLV_IE, tag=0x85):
+        pass
+    class XcapAuthenticationPassword(BER_TLV_IE, tag=0x86):
+        pass
+    class XcapAuthenticationType(BER_TLV_IE, tag=0x87):
+        pass
+    class AddressType(BER_TLV_IE, tag=0x88):
+        pass
+    class Address(BER_TLV_IE, tag=0x89):
+        pass
+    class PDPAuthenticationType(BER_TLV_IE, tag=0x8a):
+        pass
+    class PDPAuthenticationName(BER_TLV_IE, tag=0x8b):
+        pass
+    class PDPAuthenticationSecret(BER_TLV_IE, tag=0x8c):
+        pass
+
+    class AccessForXCAP(BER_TLV_IE, tag=0x81):
+        pass
+    class NumberOfXcapConnParPolicy(BER_TLV_IE, tag=0x82):
+        _construct = Int8ub
+    # pylint: disable=undefined-variable
+    class XcapConnParamsPolicyPart(BER_TLV_IE, tag=0xa1, nested=[Access, 
ApplicationName, ProviderID, URI,
+                                 XcapAuthenticationUserName, 
XcapAuthenticationPassword,
+                                 XcapAuthenticationType, AddressType, Address, 
PDPAuthenticationType,
+                                 PDPAuthenticationName, 
PDPAuthenticationSecret]):
+        pass
+    class XcapConnParamsPolicy(BER_TLV_IE, tag=0xa0, nested=[AccessForXCAP, 
NumberOfXcapConnParPolicy, XcapConnParamsPolicyPart]):
+        pass
+    class XcapConnParamsPolicyDO(BER_TLV_IE, tag=0x80, 
nested=[XcapConnParamsPolicy]):
+        pass
+    def __init__(self, fid='6ffc', sfid=None, name='EF.XCAPConfigData', 
desc='XCAP Configuration Data', **kwargs):
+        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
+        self._tlv = EF_XCAPConfigData.XcapConnParamsPolicy
+
+# TS 31.103 Section 4.2.20
+class EF_WebRTCURI(TransparentEF):
+    class uri(BER_TLV_IE, tag=0x80):
+        _construct = Utf8Adapter(GreedyBytes)
+
+    def __init__(self, fid='6ffa', sfid=None, name='EF.WebRTCURI', 
desc='WebRTC URI', **kwargs):
+        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
+        self._tlv = EF_WebRTCURI.uri
+
+# TS 31.103 Section 4.2.21
+class EF_MuDMiDConfigData(BerTlvEF):
+    class MudMidConfigDataEncoding(BER_TLV_IE, tag=0x80):
+        _construct = HexAdapter(Bytes(1))
+    class MudMidConfigData(BER_TLV_IE, tag=0x81):
+        _construct = GreedyString
+    # pylint: disable=undefined-variable
+    class MudMidConfigDataCollection(TLV_IE_Collection, 
nested=[MudMidConfigDataEncoding, MudMidConfigData]):
+        pass
+    def __init__(self, fid='6ffe', sfid=None, name='EF.MuDMiDConfigData',
+                 desc='MuD and MiD Configuration Data', **kwargs):
+        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
+        self._tlv = EF_MuDMiDConfigData.MudMidConfigDataCollection
+
+# TS 31.103 Section 4.2.22
+class EF_AC_GBAUAPI(LinFixedEF):
+    """The use of this EF is eescribed in 3GPP TS 31.130"""
+    class AppletNafAccessControl(BER_TLV_IE, tag=0x80):
+        # the use of Int8ub as length field in Prefixed is strictly speaking 
incorrect, as it is a BER-TLV
+        # length field whihc will consume two bytes from length > 127 bytes.  
However, AIDs and NAF IDs can
+        # safely be assumed shorter than that
+        _construct = Struct('aid'/Prefixed(Int8ub, GreedyBytes),
+                            'naf_id'/Prefixed(Int8ub, GreedyBytes))
+    def __init__(self, fid='6f0a', sfid=None, name='EF.GBAUAPI',
+                 desc='Access Control to GBA_U_API', **kwargs):
+        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
+        self._tlv = EF_AC_GBAUAPI.AppletNafAccessControl
+
+# TS 31.103 Section 4.2.23
+class EF_IMSDCI(TransparentEF):
+    """See Management object as defined in 3GPP TS 24.275."""
+    def __init__(self, fid='6f0b', sfid=None, name='EF.IMSDCI', desc='IMS Data 
Channel Indication', **kwargs):
+        super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs)
+        self._construct = Enum(Byte, ims_dc_not_allowed=0x00,
+                                     ims_dc_allowed_after_ims_session=0x01,
+                                     
ims_dc_allowed_simultaneous_ims_session=0x02)

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

Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I32e29f400d2da047e821bf732316b21805b5a1e2
Gerrit-Change-Number: 37524
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <lafo...@osmocom.org>
Gerrit-MessageType: newchange

Reply via email to