Change in osmo-gsm-tester[master]: 4G: Add milenage support

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Mon Jul 13 19:28:27 UTC 2020


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/19237 )

Change subject: 4G: Add milenage support
......................................................................

4G: Add milenage support

Change-Id: I4c1fb9bfec9927f2bfa29e6b27959323838f59e5
---
M src/osmo_gsm_tester/core/schema.py
M src/osmo_gsm_tester/obj/epc_amarisoft.py
M src/osmo_gsm_tester/obj/epc_srs.py
M src/osmo_gsm_tester/obj/ms.py
M src/osmo_gsm_tester/obj/ms_amarisoft.py
M src/osmo_gsm_tester/obj/ms_srs.py
M src/osmo_gsm_tester/templates/amarisoft_ltemme.cfg.tmpl
M src/osmo_gsm_tester/templates/amarisoft_lteue.cfg.tmpl
M src/osmo_gsm_tester/templates/srsepc_user_db.csv.tmpl
M src/osmo_gsm_tester/templates/srsue.conf.tmpl
M sysmocom/resources.conf.prod
11 files changed, 41 insertions(+), 8 deletions(-)

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



diff --git a/src/osmo_gsm_tester/core/schema.py b/src/osmo_gsm_tester/core/schema.py
index 9a346cd..72c2738 100644
--- a/src/osmo_gsm_tester/core/schema.py
+++ b/src/osmo_gsm_tester/core/schema.py
@@ -28,6 +28,7 @@
 HWADDR_RE = re.compile('([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}')
 IMSI_RE = re.compile('[0-9]{6,15}')
 KI_RE = re.compile('[0-9a-fA-F]{32}')
+OPC_RE = re.compile('[0-9a-fA-F]{32}')
 MSISDN_RE = re.compile('[0-9]{1,15}')
 
 def match_re(name, regex, val):
@@ -60,6 +61,9 @@
 def ki(val):
     return match_re('KI', KI_RE, val)
 
+def opc(val):
+    return match_re('OPC', OPC_RE, val)
+
 def msisdn(val):
     return match_re('MSISDN', MSISDN_RE, val)
 
@@ -157,6 +161,7 @@
 HWADDR = 'hwaddr'
 IMSI = 'imsi'
 KI = 'ki'
+OPC = 'opc'
 MSISDN = 'msisdn'
 AUTH_ALGO = 'auth_algo'
 TIMES='times'
@@ -180,6 +185,7 @@
         HWADDR: hwaddr,
         IMSI: imsi,
         KI: ki,
+        OPC: opc,
         MSISDN: msisdn,
         AUTH_ALGO: auth_algo,
         TIMES: times,
diff --git a/src/osmo_gsm_tester/obj/epc_amarisoft.py b/src/osmo_gsm_tester/obj/epc_amarisoft.py
index 40216f7..3e91b5c 100644
--- a/src/osmo_gsm_tester/obj/epc_amarisoft.py
+++ b/src/osmo_gsm_tester/obj/epc_amarisoft.py
@@ -177,8 +177,11 @@
         if algo_str != util.OSMO_AUTH_ALGO_NONE and not modem.ki():
             raise log.Error("Auth algo %r selected but no KI specified" % algo_str)
 
+        if algo_str == 'milenage' and not modem.opc():
+            raise log.Error("Auth algo milenage selected but no OPC specified")
+
         subscriber_id = len(self.subscriber_list) # list index
-        self.subscriber_list.append({'id': subscriber_id, 'imsi': modem.imsi(), 'msisdn': msisdn, 'auth_algo': algo_str, 'ki': modem.ki(), 'opc': None, 'apn_ipaddr': modem.apn_ipaddr()})
+        self.subscriber_list.append({'id': subscriber_id, 'imsi': modem.imsi(), 'msisdn': msisdn, 'auth_algo': algo_str, 'ki': modem.ki(), 'opc': modem.opc(), 'apn_ipaddr': modem.apn_ipaddr()})
 
         self.log('Add subscriber', msisdn=msisdn, imsi=modem.imsi(), subscriber_id=subscriber_id,
                  algo_str=algo_str)
diff --git a/src/osmo_gsm_tester/obj/epc_srs.py b/src/osmo_gsm_tester/obj/epc_srs.py
index 9c4b004..44e06a5 100644
--- a/src/osmo_gsm_tester/obj/epc_srs.py
+++ b/src/osmo_gsm_tester/obj/epc_srs.py
@@ -190,8 +190,15 @@
         if algo_str != util.OSMO_AUTH_ALGO_NONE and not modem.ki():
             raise log.Error("Auth algo %r selected but no KI specified" % algo_str)
 
+        if algo_str == 'milenage':
+            if not modem.opc():
+                raise log.Error("Auth algo milenage selected but no OPC specified")
+            # srsepc's used_db uses token 'mil' for milenage:
+            algo_str = 'mil'
+
+        opc = (modem.opc() or '')
         subscriber_id = len(self.subscriber_list) # list index
-        self.subscriber_list.append({'id': subscriber_id, 'imsi': modem.imsi(), 'msisdn': msisdn, 'auth_algo': algo_str, 'ki': modem.ki(), 'opc': None, 'apn_ipaddr': modem.apn_ipaddr()})
+        self.subscriber_list.append({'id': subscriber_id, 'imsi': modem.imsi(), 'msisdn': msisdn, 'auth_algo': algo_str, 'ki': modem.ki(), 'opc': opc, 'apn_ipaddr': modem.apn_ipaddr()})
 
         self.log('Add subscriber', msisdn=msisdn, imsi=modem.imsi(), subscriber_id=subscriber_id,
                  algo_str=algo_str)
diff --git a/src/osmo_gsm_tester/obj/ms.py b/src/osmo_gsm_tester/obj/ms.py
index b39d3ee..3e75719 100644
--- a/src/osmo_gsm_tester/obj/ms.py
+++ b/src/osmo_gsm_tester/obj/ms.py
@@ -28,6 +28,7 @@
         'path': schema.STR,
         'imsi': schema.IMSI,
         'ki': schema.KI,
+        'opc': schema.OPC,
         'auth_algo': schema.AUTH_ALGO,
         'apn_ipaddr': schema.IPV4,
         'ciphers[]': schema.CIPHER,
@@ -100,6 +101,9 @@
     def ki(self):
         return self._conf.get('ki')
 
+    def opc(self):
+        return self._conf.get('opc', None)
+
     def apn_ipaddr(self):
         return self._conf.get('apn_ipaddr', 'dynamic')
 
diff --git a/src/osmo_gsm_tester/obj/ms_amarisoft.py b/src/osmo_gsm_tester/obj/ms_amarisoft.py
index 565786b..7af6283 100644
--- a/src/osmo_gsm_tester/obj/ms_amarisoft.py
+++ b/src/osmo_gsm_tester/obj/ms_amarisoft.py
@@ -231,7 +231,8 @@
         config.overlay(values, dict(ue=self.testenv.suite().config().get('modem', {})))
         config.overlay(values, dict(ue=self._conf))
         config.overlay(values, dict(ue=dict(addr = self.addr(),
-                                            num_antennas = self.enb.num_ports())))
+                                            num_antennas = self.enb.num_ports(),
+                                            opc = self.opc())))
 
         logfile = self.log_file if self._run_node.is_local() else self.remote_log_file
         ifupfile = self.ifup_file if self._run_node.is_local() else self.remote_ifup_file
diff --git a/src/osmo_gsm_tester/obj/ms_srs.py b/src/osmo_gsm_tester/obj/ms_srs.py
index 96623a2..124b113 100644
--- a/src/osmo_gsm_tester/obj/ms_srs.py
+++ b/src/osmo_gsm_tester/obj/ms_srs.py
@@ -246,7 +246,8 @@
         values = dict(ue=config.get_defaults('srsue'))
         config.overlay(values, dict(ue=self.testenv.suite().config().get('modem', {})))
         config.overlay(values, dict(ue=self._conf))
-        config.overlay(values, dict(ue=dict(num_antennas = self.enb.num_ports())))
+        config.overlay(values, dict(ue=dict(num_antennas = self.enb.num_ports(),
+                                            opc = self.opc())))
 
         metricsfile = self.metrics_file if self._run_node.is_local() else self.remote_metrics_file
         logfile = self.log_file if self._run_node.is_local() else self.remote_log_file
diff --git a/src/osmo_gsm_tester/templates/amarisoft_ltemme.cfg.tmpl b/src/osmo_gsm_tester/templates/amarisoft_ltemme.cfg.tmpl
index 5fcc74a..fb3ec98 100644
--- a/src/osmo_gsm_tester/templates/amarisoft_ltemme.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/amarisoft_ltemme.cfg.tmpl
@@ -154,10 +154,13 @@
       amf: 0x9001, /* Authentication Management Field */
       sqn: "000000000000", /* Sequence Number */
       K: "${sub.ki}", /* Anritsu Test USIM */
+% if sub.opc:
+      opc: "${sub.opc}",
+% endif
       /* if true, allow several UEs to have the same IMSI (useful
          with test SIM cards). They are distinguished with their
          IMEI. default = false. */
-      multi_sim: true,
+      multi_sim: false,
     },
 %endfor
     /* Add new entries for each IMSI/K */
diff --git a/src/osmo_gsm_tester/templates/amarisoft_lteue.cfg.tmpl b/src/osmo_gsm_tester/templates/amarisoft_lteue.cfg.tmpl
index 720c0ba..d6ba32d 100644
--- a/src/osmo_gsm_tester/templates/amarisoft_lteue.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/amarisoft_lteue.cfg.tmpl
@@ -48,8 +48,12 @@
       ue_category: 4,
 
       /* USIM data */
+      sim_algo: "${sub.auth_algo}", /* USIM authentication algorithm: xor, milenage or tuak */
       imsi: "${ue.imsi}",
       K: "${ue.ki}",
+% if ue.opc is not None:
+      opc: "${ue.opc}",
+% endif
 
       /* If enabled, will try to use external SIM card using libpcsclite */
       //external_sim: true,
diff --git a/src/osmo_gsm_tester/templates/srsepc_user_db.csv.tmpl b/src/osmo_gsm_tester/templates/srsepc_user_db.csv.tmpl
index 5b970bf..250b261 100644
--- a/src/osmo_gsm_tester/templates/srsepc_user_db.csv.tmpl
+++ b/src/osmo_gsm_tester/templates/srsepc_user_db.csv.tmpl
@@ -20,5 +20,5 @@
 #ue2,mil,001010123456780,00112233445566778899aabbccddeeff,opc,63bfa50ee6523365ff14c1f45f88737d,8000,000000001234,7,dynamic
 #ue1,xor,001010123456789,00112233445566778899aabbccddeeff,opc,63bfa50ee6523365ff14c1f45f88737d,9001,000000001255,7,dynamic
 %for sub in epc.hss.subscribers:
-ogt${sub.id},${sub.auth_algo},${sub.imsi},${sub.ki},opc,63bfa50ee6523365ff14c1f45f88737d,8000,000000001234,${sub.qci},${sub.apn_ipaddr}
+ogt${sub.id},${sub.auth_algo},${sub.imsi},${sub.ki},opc,${sub.opc},8000,000000001234,${sub.qci},${sub.apn_ipaddr}
 %endfor
diff --git a/src/osmo_gsm_tester/templates/srsue.conf.tmpl b/src/osmo_gsm_tester/templates/srsue.conf.tmpl
index a75be23..3a43f17 100644
--- a/src/osmo_gsm_tester/templates/srsue.conf.tmpl
+++ b/src/osmo_gsm_tester/templates/srsue.conf.tmpl
@@ -126,7 +126,9 @@
 [usim]
 mode = soft
 algo = ${ue.auth_algo}
-#opc  = 63BFA50EE6523365FF14C1F45F88737D
+% if ue.opc is not None:
+opc  = ${ue.opc}
+% endif
 k    = ${ue.ki}
 imsi = ${ue.imsi}
 imei = 353490069873319
diff --git a/sysmocom/resources.conf.prod b/sysmocom/resources.conf.prod
index e6429a0..dc60734 100644
--- a/sysmocom/resources.conf.prod
+++ b/sysmocom/resources.conf.prod
@@ -260,7 +260,8 @@
   rf_dev_args: auto
   imsi: '001010123456789'
   ki: '00112233445566778899aabbccddeeff'
-  auth_algo: 'xor'
+  opc: '63BFA50EE6523365FF14C1F45F88737D'
+  auth_algo: 'milenage'
   features: ['4g']
   run_node:
     run_type: ssh
@@ -274,6 +275,7 @@
   rf_dev_args: driver=lime,serial=00090706024F0A22,rxant=LNAW,txant=BAND1
   imsi: '001010123456789'
   ki: '00112233445566778899aabbccddeeff'
+  opc: '63BFA50EE6523365FF14C1F45F88737D'
   auth_algo: 'xor'
   features: ['4g']
   run_node:

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/19237
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Change-Id: I4c1fb9bfec9927f2bfa29e6b27959323838f59e5
Gerrit-Change-Number: 19237
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: srs_andre <andre at softwareradiosystems.com>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200713/9fc2048b/attachment.htm>


More information about the gerrit-log mailing list