<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24761">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">msc: add inter-BSC HO tests with A5 encryption<br><br>Related: SYS#5324<br>Change-Id: I57e43c60d4389bd301d0195179321a34401bd1dc<br>---<br>M library/BSSMAP_Templates.ttcn<br>M msc/MSC_Tests.ttcn<br>2 files changed, 80 insertions(+), 7 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/61/24761/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 cde0fb0..9b1203d 100644</span><br><span>--- a/library/BSSMAP_Templates.ttcn</span><br><span>+++ b/library/BSSMAP_Templates.ttcn</span><br><span>@@ -954,11 +954,18 @@</span><br><span>   }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template PDU_BSSAP tr_BSSMAP_HandoverRequest modifies tr_BSSAP_BSSMAP := {</span><br><span style="color: hsl(120, 100%, 40%);">+template PDU_BSSAP tr_BSSMAP_HandoverRequest(template BSSMAP_IE_EncryptionInformation encryptionInformation := *,</span><br><span style="color: hsl(120, 100%, 40%);">+                                            template BSSMAP_IE_ChosenEncryptionAlgorithm chosenEncryptionAlgorithm := *,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          template BSSMAP_IE_KC128 kC128 := *</span><br><span style="color: hsl(120, 100%, 40%);">+                                          )</span><br><span style="color: hsl(120, 100%, 40%);">+  modifies tr_BSSAP_BSSMAP := {</span><br><span>       pdu := {</span><br><span>             bssmap := {</span><br><span>                  handoverRequest := {</span><br><span style="color: hsl(0, 100%, 40%);">-                            messageType := '10'O</span><br><span style="color: hsl(120, 100%, 40%);">+                          messageType := '10'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                         encryptionInformation := encryptionInformation,</span><br><span style="color: hsl(120, 100%, 40%);">+                               chosenEncryptionAlgorithm := chosenEncryptionAlgorithm,</span><br><span style="color: hsl(120, 100%, 40%);">+                               kC128 := kC128</span><br><span>                       }</span><br><span>            }</span><br><span>    }</span><br><span>diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn</span><br><span>index 46a368e..949988c 100644</span><br><span>--- a/msc/MSC_Tests.ttcn</span><br><span>+++ b/msc/MSC_Tests.ttcn</span><br><span>@@ -5764,8 +5764,22 @@</span><br><span>       * from now on this here is the new BSS. */</span><br><span>  f_create_bssmap_exp_handoverRequest(193);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ var template BSSMAP_IE_EncryptionInformation encryptionInformation;</span><br><span style="color: hsl(120, 100%, 40%);">+   var template BSSMAP_IE_ChosenEncryptionAlgorithm chosenEncryptionAlgorithm;</span><br><span style="color: hsl(120, 100%, 40%);">+   var template BSSMAP_IE_KC128 kC128;</span><br><span style="color: hsl(120, 100%, 40%);">+   var OCT1 a5_perm_alg;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_get_expected_encryption(encryptionInformation, chosenEncryptionAlgorithm, kC128, a5_perm_alg);</span><br><span style="color: hsl(120, 100%, 40%);">+      var template PDU_BSSAP expect_ho_request := tr_BSSMAP_HandoverRequest(encryptionInformation, chosenEncryptionAlgorithm, kC128);</span><br><span>      var PDU_BSSAP ho_request;</span><br><span style="color: hsl(0, 100%, 40%);">-       BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request;</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BSSAP.receive(expect_ho_request);</span><br><span style="color: hsl(120, 100%, 40%);">+  [] BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request {</span><br><span style="color: hsl(120, 100%, 40%);">+          log("Error: Unexpected handoverRequest received. Expected: ", expect_ho_request,</span><br><span style="color: hsl(120, 100%, 40%);">+                " got ", ho_request);</span><br><span style="color: hsl(120, 100%, 40%);">+           setverdict(fail, "Unexpected handoverRequest received");</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> </span><br><span>        /* new BSS composes a RR Handover Command */</span><br><span>         var PDU_ML3_NW_MS rr_ho_cmd := valueof(ts_RR_HandoverCommand);</span><br><span>@@ -5812,9 +5826,22 @@</span><br><span>      f_init_handler(pars);</span><br><span>        f_create_bssmap_exp_handoverRequest(194);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ var template BSSMAP_IE_EncryptionInformation encryptionInformation;</span><br><span style="color: hsl(120, 100%, 40%);">+   var template BSSMAP_IE_ChosenEncryptionAlgorithm chosenEncryptionAlgorithm;</span><br><span style="color: hsl(120, 100%, 40%);">+   var template BSSMAP_IE_KC128 kC128;</span><br><span style="color: hsl(120, 100%, 40%);">+   var OCT1 a5_perm_alg;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_get_expected_encryption(encryptionInformation, chosenEncryptionAlgorithm, kC128, a5_perm_alg);</span><br><span style="color: hsl(120, 100%, 40%);">+      var template PDU_BSSAP expect_ho_request := tr_BSSMAP_HandoverRequest(encryptionInformation, chosenEncryptionAlgorithm, kC128);</span><br><span>      var PDU_BSSAP ho_request;</span><br><span style="color: hsl(0, 100%, 40%);">-       BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BSSAP.receive(expect_ho_request);</span><br><span style="color: hsl(120, 100%, 40%);">+  [] BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request {</span><br><span style="color: hsl(120, 100%, 40%);">+          log("Error: Unexpected handoverRequest received. Expected: ", expect_ho_request,</span><br><span style="color: hsl(120, 100%, 40%);">+                " got ", ho_request);</span><br><span style="color: hsl(120, 100%, 40%);">+           setverdict(fail, "Unexpected handoverRequest received");</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>    /* new BSS composes a RR Handover Command */</span><br><span>         var PDU_ML3_NW_MS rr_ho_cmd := valueof(ts_RR_HandoverCommand);</span><br><span>       var octetstring rr_ho_cmd_enc := enc_PDU_ML3_NW_MS(rr_ho_cmd);</span><br><span>@@ -5861,15 +5888,42 @@</span><br><span>     f_expect_clear();</span><br><span>    setverdict(pass);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-function f_tc_ho_inter_bsc_main(boolean use_ipv6 := false) runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+function f_tc_ho_inter_bsc_main(boolean use_ipv6 := false, integer a5_n := 0) runs on MTC_CT {</span><br><span>    var BSC_ConnHdlr vc_conn0;</span><br><span>   var BSC_ConnHdlr vc_conn1;</span><br><span>   f_init(2);</span><br><span> </span><br><span>       var BSC_ConnHdlrPars pars0 := f_init_pars(53);</span><br><span>       pars0.use_ipv6 := use_ipv6;</span><br><span style="color: hsl(120, 100%, 40%);">+   pars0.net.expect_ciph := a5_n > 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars0.net.expect_auth := pars0.net.expect_ciph;</span><br><span style="color: hsl(120, 100%, 40%);">+       pars0.net.kc_support := bit2oct('00000001'B << a5_n);</span><br><span style="color: hsl(120, 100%, 40%);">+   pars0.cm2.classmarkInformationType2_oct5.a5_3 := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+        pars0.cm2.classmarkInformationType2_oct5.a5_2 := '0'B;</span><br><span style="color: hsl(120, 100%, 40%);">+        pars0.cm2.classmarkInformationType2_oct5.cm3 := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars0.cm3 := valueof(ts_CM3_default);</span><br><span style="color: hsl(120, 100%, 40%);">+ pars0.use_umts_aka := true;</span><br><span style="color: hsl(120, 100%, 40%);">+   pars0.vec := f_gen_auth_vec_3g();</span><br><span style="color: hsl(120, 100%, 40%);">+     pars0.vec_keep := true;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    var BSC_ConnHdlrPars pars1 := f_init_pars(53);</span><br><span>       pars1.use_ipv6 := use_ipv6;</span><br><span style="color: hsl(120, 100%, 40%);">+   pars1.net.expect_ciph := pars0.net.expect_ciph;</span><br><span style="color: hsl(120, 100%, 40%);">+       pars1.net.expect_auth := pars0.net.expect_ciph;</span><br><span style="color: hsl(120, 100%, 40%);">+       pars1.net.kc_support := bit2oct('00000001'B << a5_n);</span><br><span style="color: hsl(120, 100%, 40%);">+   pars1.cm2 := pars0.cm2;</span><br><span style="color: hsl(120, 100%, 40%);">+       pars1.cm3 := pars0.cm3;</span><br><span style="color: hsl(120, 100%, 40%);">+       pars1.use_umts_aka := true;</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Both components need the same auth vector info because we expect f_tc_ho_inter_bsc0's ciphering key to be</span><br><span style="color: hsl(120, 100%, 40%);">+       * identical to the one that shows up in f_tc_ho_inter_bsc1. Can only do that by feeding in a vector to both</span><br><span style="color: hsl(120, 100%, 40%);">+   * components and then not overwriting it in BSC_ConnectionHandler. */</span><br><span style="color: hsl(120, 100%, 40%);">+        pars1.vec := pars0.vec;</span><br><span style="color: hsl(120, 100%, 40%);">+       pars1.vec_keep := true;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (a5_n > 0) {</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%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     f_vty_config(MSCVTY, "network", "encryption a5 " & int2str(a5_n));</span><br><span> </span><br><span>       vc_conn0 := f_start_handler_with_pars(refers(f_tc_ho_inter_bsc0), pars0, 0);</span><br><span>         vc_conn1 := f_start_handler_with_pars(refers(f_tc_ho_inter_bsc1), pars1, 1);</span><br><span>@@ -5877,7 +5931,16 @@</span><br><span>        vc_conn1.done;</span><br><span> }</span><br><span> testcase TC_ho_inter_bsc() runs on MTC_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-      f_tc_ho_inter_bsc_main(false);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_tc_ho_inter_bsc_main(false, a5_n := 0);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ho_inter_bsc_a5_1() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        f_tc_ho_inter_bsc_main(false, a5_n := 1);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ho_inter_bsc_a5_3() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        f_tc_ho_inter_bsc_main(false, a5_n := 3);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ho_inter_bsc_a5_4() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        f_tc_ho_inter_bsc_main(false, a5_n := 4);</span><br><span> }</span><br><span> testcase TC_ho_inter_bsc_ipv6() runs on MTC_CT {</span><br><span>   f_tc_ho_inter_bsc_main(true);</span><br><span>@@ -6614,6 +6677,9 @@</span><br><span> </span><br><span>    execute( TC_ho_inter_bsc_unknown_cell() );</span><br><span>   execute( TC_ho_inter_bsc() );</span><br><span style="color: hsl(120, 100%, 40%);">+ execute( TC_ho_inter_bsc_a5_1() );</span><br><span style="color: hsl(120, 100%, 40%);">+    execute( TC_ho_inter_bsc_a5_3() );</span><br><span style="color: hsl(120, 100%, 40%);">+    execute( TC_ho_inter_bsc_a5_4() );</span><br><span>   execute( TC_ho_inter_bsc_ipv6() );</span><br><span> </span><br><span>       execute( TC_ho_inter_msc_out() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24761">change 24761</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/+/24761"/><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: I57e43c60d4389bd301d0195179321a34401bd1dc </div>
<div style="display:none"> Gerrit-Change-Number: 24761 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>