<p>Hoernchen has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24247">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">msc: add first a5/4 tests<br><br>All msc tests involving classmarks suffer from the same problem: if a<br>existing subscriber is reused the old classmarks will stick, since the<br>msc only overwrites updated parts of the cm when receiving a new cm, so<br>"downgrading" the existing classmark information is not possible.<br><br>Change-Id: Idc055a006b325f58a5eafa88bc4415181b3500a2<br>---<br>M library/BSSMAP_Templates.ttcn<br>M msc/BSC_ConnectionHandler.ttcn<br>M msc/MSC_Tests.ttcn<br>M msc/expected-results.xml<br>M msc/gen_links.sh<br>M msc/regen_makefile.sh<br>6 files changed, 165 insertions(+), 6 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/47/24247/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn</span><br><span>index 2b99a5b..06aa351 100644</span><br><span>--- a/library/BSSMAP_Templates.ttcn</span><br><span>+++ b/library/BSSMAP_Templates.ttcn</span><br><span>@@ -1474,6 +1474,13 @@</span><br><span>   }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template BSSMAP_IE_ClassmarkInformationType3 ts_CM3_default := {</span><br><span style="color: hsl(120, 100%, 40%);">+        elementIdentifier := '13'O,</span><br><span style="color: hsl(120, 100%, 40%);">+   lengthIndicator := 0,   /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+     classmark3ValuePart := '01'O /* A5/4 supported */</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> template PDU_BSSAP ts_BSSMAP_ClassmarkUpd(template BSSMAP_IE_ClassmarkInformationType2 cm2 := ts_CM2_default,</span><br><span>                                        template BSSMAP_IE_ClassmarkInformationType3 cm3 := omit)</span><br><span> modifies ts_BSSAP_BSSMAP := {</span><br><span>@@ -1516,6 +1523,18 @@</span><br><span>        }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+template PDU_BSSAP tr_BSSMAP_ClassmarkRequest</span><br><span style="color: hsl(120, 100%, 40%);">+modifies tr_BSSAP_BSSMAP := {</span><br><span style="color: hsl(120, 100%, 40%);">+      pdu := {</span><br><span style="color: hsl(120, 100%, 40%);">+              bssmap := {</span><br><span style="color: hsl(120, 100%, 40%);">+                   classmarkRequest := {</span><br><span style="color: hsl(120, 100%, 40%);">+                         messageType := '58'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                         talkerPriority := *</span><br><span style="color: hsl(120, 100%, 40%);">+                   }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* return Layer3 octetstring inside BSSAP PDU */</span><br><span> function f_bssap_extract_l3(PDU_BSSAP bssap) return template octetstring {</span><br><span>     if (ischosen(bssap.pdu.bssmap)) {</span><br><span>diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn</span><br><span>index 30adb03..70f2b14 100644</span><br><span>--- a/msc/BSC_ConnectionHandler.ttcn</span><br><span>+++ b/msc/BSC_ConnectionHandler.ttcn</span><br><span>@@ -12,6 +12,7 @@</span><br><span> </span><br><span> module BSC_ConnectionHandler {</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+import from TCCOpenSecurity_Functions all;</span><br><span> import from General_Types all;</span><br><span> import from Osmocom_Types all;</span><br><span> import from Native_Functions all;</span><br><span>@@ -110,7 +111,7 @@</span><br><span> };</span><br><span> </span><br><span> /* get a one-octet bitmaks of supported algorithms based on Classmark information */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_alg_mask_from_cm(BSSMAP_IE_ClassmarkInformationType2 cm2) return OCT1 {</span><br><span style="color: hsl(120, 100%, 40%);">+function f_alg_mask_from_cm(BSSMAP_IE_ClassmarkInformationType2 cm2, template (omit) BSSMAP_IE_ClassmarkInformationType3 cm3 := omit) return OCT1 {</span><br><span>     var BIT8 res := '00000001'B;    /* A5/0 always supported */</span><br><span> </span><br><span>      if (cm2.a5_1 == '0'B) {</span><br><span>@@ -122,7 +123,12 @@</span><br><span>       if (cm2.classmarkInformationType2_oct5.a5_3 == '1'B) {</span><br><span>               res := res or4b '00001000'B;</span><br><span>         }</span><br><span style="color: hsl(0, 100%, 40%);">-       /* TODO: CM3 for A5/4 and beyond */</span><br><span style="color: hsl(120, 100%, 40%);">+   if (not istemplatekind(cm3, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+              var BSSMAP_IE_ClassmarkInformationType3 v := valueof(cm3);</span><br><span style="color: hsl(120, 100%, 40%);">+            var BIT8 tmp := oct2bit(v.classmark3ValuePart[0]) and4b '00001111'B;</span><br><span style="color: hsl(120, 100%, 40%);">+          res := res or4b (tmp << 4);</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  return bit2oct(res);</span><br><span> }</span><br><span> </span><br><span>@@ -154,6 +160,15 @@</span><br><span>         return -1;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* return true for A5/x supported by OCT1 bitmask */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_alg_supported_by_mask(OCT1 mask_in, integer whicha5) return boolean {</span><br><span style="color: hsl(120, 100%, 40%);">+   var BIT8 mask := oct2bit(mask_in);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (mask and4b ('00000001'B << whicha5) != '00000000'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+               return true;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     return false;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* altstep for the global guard timer */</span><br><span> private altstep as_Tguard() runs on BSC_ConnHdlr {</span><br><span>         [] g_Tguard.timeout {</span><br><span>@@ -419,6 +434,7 @@</span><br><span>                                                          g_pars.vec.autn,</span><br><span>                                                             g_pars.vec.res));</span><br><span>            GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));</span><br><span style="color: hsl(120, 100%, 40%);">+          g_pars.vec.kc := f_auth3g_kc();</span><br><span>      } else {</span><br><span>             g_pars.vec := f_gen_auth_vec_2g();</span><br><span>           auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(g_pars.vec.rand,</span><br><span>@@ -530,15 +546,49 @@</span><br><span>        }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+function f_auth3g_kc() runs on BSC_ConnHdlr return OCT8 {</span><br><span style="color: hsl(120, 100%, 40%);">+ var integer i;</span><br><span style="color: hsl(120, 100%, 40%);">+        var octetstring res := g_pars.vec.ck[0] xor4b g_pars.vec.ck[0 + 8] xor4b g_pars.vec.ik[0] xor4b g_pars.vec.ik[0 + 8];</span><br><span style="color: hsl(120, 100%, 40%);">+ for (i := 1; i < 8; i := i + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+          var octetstring a := g_pars.vec.ck[i] xor4b g_pars.vec.ck[i + 8] xor4b g_pars.vec.ik[i] xor4b g_pars.vec.ik[i + 8];</span><br><span style="color: hsl(120, 100%, 40%);">+           res := res & a;</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return res;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> function f_mm_common() runs on BSC_ConnHdlr</span><br><span> {</span><br><span>       f_mm_auth();</span><br><span>         if (g_pars.ran_is_geran) {</span><br><span>           if (g_pars.net.expect_ciph) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   var OCT1 a5_net := f_alg_mask_from_cm(g_pars.cm2);</span><br><span style="color: hsl(120, 100%, 40%);">+                    var OCT1 a5_net := f_alg_mask_from_cm(g_pars.cm2, g_pars.cm3);</span><br><span>                       var OCT1 a5_intersect := g_pars.net.kc_support and4b a5_net;</span><br><span style="color: hsl(120, 100%, 40%);">+                  var boolean has_a54 := f_alg_supported_by_mask(a5_intersect, 4);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                    var PDU_BSSAP pdu;</span><br><span>                   alt {</span><br><span style="color: hsl(0, 100%, 40%);">-                   [] BSSAP.receive(tr_BSSMAP_CipherModeCmd(a5_intersect, g_pars.vec.kc)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              [] BSSAP.receive(tr_BSSMAP_CipherModeCmd(a5_intersect, g_pars.vec.kc)) -> value pdu {</span><br><span style="color: hsl(120, 100%, 40%);">+                              var PDU_BSSMAP_CipherModeCommand ciphmodcmd := pdu.pdu.bssmap.cipherModeCommand;</span><br><span style="color: hsl(120, 100%, 40%);">+                              if (g_pars.use_umts_aka and has_a54) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                        var OCT32 fulloutput := f_calculate_HMAC_SHA256(g_pars.vec.ck & g_pars.vec.ik, '32'O, 32);</span><br><span style="color: hsl(120, 100%, 40%);">+                                        var OCT16 kc128 := substr(fulloutput, 0, 16);</span><br><span style="color: hsl(120, 100%, 40%);">+                                 if (not ispresent(ciphmodcmd.kC128)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                setverdict(fail, "kc128 missing in CiphModCmd");</span><br><span style="color: hsl(120, 100%, 40%);">+                                            mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                                     if (ciphmodcmd.kC128.kC128_Value != kc128) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                          setverdict(fail, "kc128 wrong in CiphModCmd?!", kc128);</span><br><span style="color: hsl(120, 100%, 40%);">+                                             mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                             } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                                      if (ispresent(ciphmodcmd.kC128)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                            setverdict(fail, "kc128 present in CiphModCmd, but should not exist!");</span><br><span style="color: hsl(120, 100%, 40%);">+                                             mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>                          var OCT1 a5_chosen := f_best_alg_from_mask(a5_intersect);</span><br><span>                            var integer a5_nr := f_alg_from_mask(a5_chosen);</span><br><span>                             BSSAP.send(ts_BSSMAP_CipherModeCompl(int2oct(a5_nr+1, 1)));</span><br><span>@@ -547,6 +597,10 @@</span><br><span>                           setverdict(fail, "Wrong ciphering algorithm mask in CiphModCmd");</span><br><span>                          mtc.stop;</span><br><span>                            }</span><br><span style="color: hsl(120, 100%, 40%);">+                     [] BSSAP.receive(tr_BSSMAP_ClassmarkRequest) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3))</span><br><span style="color: hsl(120, 100%, 40%);">+                            repeat;</span><br><span style="color: hsl(120, 100%, 40%);">+                               }</span><br><span>                    }</span><br><span>                    /* FIXME: Send the best available algorithm */</span><br><span>               }</span><br><span>diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn</span><br><span>index 8325625..3ab1745 100644</span><br><span>--- a/msc/MSC_Tests.ttcn</span><br><span>+++ b/msc/MSC_Tests.ttcn</span><br><span>@@ -2007,6 +2007,84 @@</span><br><span>      vc_conn.done;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* A5/0 + A5/1 + A5/3 + a5/4 only permitted on network side, and MS with only A5/1 support */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_tc_lu_imsi_auth_tmsi_encr_0134_1(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+       pars.net.expect_auth := true;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.net.expect_ciph := true;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.net.kc_support := '03'O;   /*  A5/0 + A5/1 */</span><br><span style="color: hsl(120, 100%, 40%);">+    pars.cm1.a5_1 := '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+        pars.cm2.a5_1 := '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+        pars.cm2.classmarkInformationType2_oct5.a5_3 := '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.cm2.classmarkInformationType2_oct5.a5_2 := '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.cm2.classmarkInformationType2_oct5.cm3 := '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+  pars.cm3 := omit;</span><br><span style="color: hsl(120, 100%, 40%);">+     pars.use_umts_aka := true;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_init_handler(pars, 15.0);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_perform_lu();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_lu_imsi_auth_tmsi_encr_0134_1() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var BSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+     f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_config(MSCVTY, "network", "authentication required");</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_config(MSCVTY, "network", "encryption a5 0 1 3 4");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       vc_conn := f_start_handler(refers(f_tc_lu_imsi_auth_tmsi_encr_0134_1), 39);</span><br><span style="color: hsl(120, 100%, 40%);">+   vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* A5/0 + A5/1 + A5/3 + a5/4 only permitted on network side, and MS with A5/3 + A5/4 support */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_tc_lu_imsi_auth_tmsi_encr_0134_34(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+        pars.net.expect_auth := true;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.net.expect_ciph := true;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.net.kc_support := '19'O;   /* A5/3 + A5/4 */</span><br><span style="color: hsl(120, 100%, 40%);">+     pars.cm1.a5_1 := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+        pars.cm2.a5_1 := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+        pars.cm2.classmarkInformationType2_oct5.a5_3 := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.cm2.classmarkInformationType2_oct5.a5_2 := '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.cm2.classmarkInformationType2_oct5.cm3 := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+  pars.cm3 := valueof(ts_CM3_default);</span><br><span style="color: hsl(120, 100%, 40%);">+  pars.use_umts_aka := true;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_init_handler(pars, 15.0);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_perform_lu();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_lu_imsi_auth_tmsi_encr_0134_34() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     var BSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+     f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_config(MSCVTY, "network", "authentication required");</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_config(MSCVTY, "network", "encryption a5 0 1 3 4");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       vc_conn := f_start_handler(refers(f_tc_lu_imsi_auth_tmsi_encr_0134_34), 40);</span><br><span style="color: hsl(120, 100%, 40%);">+  vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* A5/0 + A5/1 + A5/3 + a5/4 only permitted on network side, and MS with A5/3 support but no CM3 */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_tc_lu_imsi_auth_tmsi_encr_0134_34_no_cm3(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+     pars.net.expect_auth := true;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.net.expect_ciph := true;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.net.kc_support := '19'O;   /* A5/3 + A5/4 */</span><br><span style="color: hsl(120, 100%, 40%);">+     pars.cm1.a5_1 := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+        pars.cm2.a5_1 := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+        pars.cm2.classmarkInformationType2_oct5.a5_3 := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.cm2.classmarkInformationType2_oct5.a5_2 := '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.cm2.classmarkInformationType2_oct5.cm3 := '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+  pars.cm3 := omit;</span><br><span style="color: hsl(120, 100%, 40%);">+     pars.use_umts_aka := true;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_init_handler(pars, 15.0);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_perform_lu();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_lu_imsi_auth_tmsi_encr_0134_34_no_cm3() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var BSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+     f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_config(MSCVTY, "network", "authentication required");</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_config(MSCVTY, "network", "encryption a5 0 1 3 4");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       vc_conn := f_start_handler(refers(f_tc_lu_imsi_auth_tmsi_encr_0134_34_no_cm3), 41);</span><br><span style="color: hsl(120, 100%, 40%);">+   vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* A5/0 + A5/1 + A5/3 only permitted on network side, and MS with only A5/2 support */</span><br><span> private function f_tc_lu_imsi_auth_tmsi_encr_013_2(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {</span><br><span>      pars.net.expect_auth := true;</span><br><span>@@ -6435,6 +6513,10 @@</span><br><span>       execute( TC_lu_imsi_auth_tmsi_encr_3_1_no_cm() );</span><br><span>    execute( TC_lu_imsi_auth_tmsi_encr_13_2() );</span><br><span>         execute( TC_lu_imsi_auth_tmsi_encr_013_2() );</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_lu_imsi_auth_tmsi_encr_0134_1() );</span><br><span style="color: hsl(120, 100%, 40%);">+        execute( TC_lu_imsi_auth_tmsi_encr_0134_34() );</span><br><span style="color: hsl(120, 100%, 40%);">+       execute( TC_lu_imsi_auth_tmsi_encr_0134_34_no_cm3() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     execute( TC_mo_release_timeout() );</span><br><span>  execute( TC_lu_and_mt_call_no_dlcx_resp() );</span><br><span>         execute( TC_reset_two() );</span><br><span>diff --git a/msc/expected-results.xml b/msc/expected-results.xml</span><br><span>index a01cd22..4e2eeba 100644</span><br><span>--- a/msc/expected-results.xml</span><br><span>+++ b/msc/expected-results.xml</span><br><span>@@ -56,6 +56,9 @@</span><br><span>   <testcase classname='MSC_Tests' name='TC_lu_imsi_auth_tmsi_encr_3_1_no_cm' time='MASKED'/></span><br><span>   <testcase classname='MSC_Tests' name='TC_lu_imsi_auth_tmsi_encr_13_2' time='MASKED'/></span><br><span>   <testcase classname='MSC_Tests' name='TC_lu_imsi_auth_tmsi_encr_013_2' time='MASKED'/></span><br><span style="color: hsl(120, 100%, 40%);">+  <testcase classname='MSC_Tests' name='TC_lu_imsi_auth_tmsi_encr_0134_1' time='MASKED'/></span><br><span style="color: hsl(120, 100%, 40%);">+  <testcase classname='MSC_Tests' name='TC_lu_imsi_auth_tmsi_encr_0134_34' time='MASKED'/></span><br><span style="color: hsl(120, 100%, 40%);">+  <testcase classname='MSC_Tests' name='TC_lu_imsi_auth_tmsi_encr_0134_34_no_cm3' time='MASKED'/></span><br><span>   <testcase classname='MSC_Tests' name='TC_mo_release_timeout' time='MASKED'/></span><br><span>   <testcase classname='MSC_Tests' name='TC_lu_and_mt_call_no_dlcx_resp' time='MASKED'/></span><br><span>   <testcase classname='MSC_Tests' name='TC_reset_two' time='MASKED'/></span><br><span>diff --git a/msc/gen_links.sh b/msc/gen_links.sh</span><br><span>index 221110e..b112a67 100755</span><br><span>--- a/msc/gen_links.sh</span><br><span>+++ b/msc/gen_links.sh</span><br><span>@@ -11,6 +11,7 @@</span><br><span> DIR=$BASEDIR/titan.Libraries.TCCUsefulFunctions/src</span><br><span> FILES="TCCInterface_Functions.ttcn TCCConversion_Functions.ttcn TCCConversion.cc TCCInterface.cc TCCInterface_ip.h"</span><br><span> FILES+=" TCCEncoding_Functions.ttcn TCCEncoding.cc " # GSM 7-bit coding</span><br><span style="color: hsl(120, 100%, 40%);">+FILES+=" TCCOpenSecurity_Functions.ttcn TCCOpenSecurity.cc TCCOpenSecurity_Functions.hh"</span><br><span> gen_links $DIR $FILES</span><br><span> </span><br><span> DIR=$BASEDIR/titan.TestPorts.Common_Components.Socket-API/src</span><br><span>diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh</span><br><span>index 6ee3ef5..cbb491d 100755</span><br><span>--- a/msc/regen_makefile.sh</span><br><span>+++ b/msc/regen_makefile.sh</span><br><span>@@ -1,9 +1,9 @@</span><br><span> #!/bin/sh</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc  SCTPasp_PT.cc  TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc SMPP_CodecPort_CtrlFunctDef.cc MAP_EncDec.cc SS_EncDec.cc TCCEncoding.cc SGsAP_CodecPort_CtrlFunctDef.cc RANAP_EncDec.cc *.c *.asn"</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc  SCTPasp_PT.cc  TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc SMPP_EncDec.cc SMPP_CodecPort_CtrlFunctDef.cc MAP_EncDec.cc SS_EncDec.cc TCCEncoding.cc SGsAP_CodecPort_CtrlFunctDef.cc RANAP_EncDec.cc TCCOpenSecurity.cc *.c *.asn"</span><br><span> </span><br><span> export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_CTRL -DIPA_EMULATION_GSUP -DIPA_EMULATION_SCCP -DRAN_EMULATION_BSSAP -DRAN_EMULATION_MGCP -DRAN_EMULATION_CTRL -DRAN_EMULATION_RANAP -DUSE_MTP3_DISTRIBUTOR"</span><br><span> </span><br><span> ../regen-makefile.sh MSC_Tests.ttcn $FILES</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lfftranscode/' Makefile</span><br><span style="color: hsl(120, 100%, 40%);">+sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lfftranscode -lssl/' Makefile</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24247">change 24247</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24247"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Idc055a006b325f58a5eafa88bc4415181b3500a2 </div>
<div style="display:none"> Gerrit-Change-Number: 24247 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Hoernchen <ewild@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>