<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24767">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">msc: add inter-MSC HO tests with A5 encryption<br><br>Related: SYS#5324<br>Change-Id: Ia1df783be33bf752d291acb857d3c48882c65975<br>---<br>M msc/MSC_Tests.ttcn<br>1 file changed, 61 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/67/24767/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn</span><br><span>index 221123b..b12fb5e 100644</span><br><span>--- a/msc/MSC_Tests.ttcn</span><br><span>+++ b/msc/MSC_Tests.ttcn</span><br><span>@@ -5992,10 +5992,24 @@</span><br><span>       /* The target cell 017-017 LAC 1 is configured to be a remote MSC of name "msc-017-017-1".</span><br><span>          * This MSC tries to reach the other MSC via GSUP. */</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 style="color: hsl(120, 100%, 40%);">+</span><br><span>    var octetstring remote_msc_name := '6D73632D3031372D3031372D3100'O; /* "msc-017-017-1\0" as octetstring */</span><br><span>         var GSUP_PDU prep_ho_req;</span><br><span style="color: hsl(0, 100%, 40%);">-       GSUP.receive(tr_GSUP_E_AN_APDU(OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_REQUEST,</span><br><span style="color: hsl(0, 100%, 40%);">-                               pars.imsi, destination_name := remote_msc_name)) -> value prep_ho_req;</span><br><span style="color: hsl(120, 100%, 40%);">+     alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] GSUP.receive(tr_GSUP_E_AN_APDU(OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_REQUEST,</span><br><span style="color: hsl(120, 100%, 40%);">+                          pars.imsi, destination_name := remote_msc_name,</span><br><span style="color: hsl(120, 100%, 40%);">+                               an_apdu := t_GSUP_AN_APDU(OSMO_GSUP_AN_PROTO_48006, decmatch expect_ho_request))) -> value prep_ho_req;</span><br><span style="color: hsl(120, 100%, 40%);">+    [] GSUP.receive(tr_GSUP_E_AN_APDU(OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_REQUEST)) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, "Wrong OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_REQUEST message 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>        var GSUP_IeValue source_name_ie;</span><br><span>     f_gsup_find_ie(prep_ho_req, OSMO_GSUP_SOURCE_NAME_IE, source_name_ie);</span><br><span>@@ -6006,7 +6020,8 @@</span><br><span>       var octetstring rr_ho_cmd_enc := enc_PDU_ML3_NW_MS(rr_ho_cmd);</span><br><span>       var PDU_BSSAP ho_req_ack := valueof(ts_BSSMAP_HandoverRequestAcknowledge(rr_ho_cmd_enc, lengthof(rr_ho_cmd_enc),</span><br><span>                                     aoIPTransportLayer := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-                                     speechCodec := ts_BSSMAP_IE_SpeechCodec({ts_CodecFR})));</span><br><span style="color: hsl(120, 100%, 40%);">+                                      speechCodec := ts_BSSMAP_IE_SpeechCodec({ts_CodecFR}),</span><br><span style="color: hsl(120, 100%, 40%);">+                                        chosenEncryptionAlgorithm := chosenEncryptionAlgorithm));</span><br><span>    GSUP.send(ts_GSUP_E_PrepareHandoverResult(</span><br><span>                           pars.imsi,</span><br><span>                           ho_number,</span><br><span>@@ -6142,7 +6157,18 @@</span><br><span>                          ));</span><br><span> </span><br><span>      /* MSC asks local BSS to prepare Handover to it */</span><br><span style="color: hsl(0, 100%, 40%);">-      BSSAP.receive(tr_BSSMAP_HandoverRequest);</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%);">+      expect_ho_request := tr_BSSMAP_HandoverRequest(encryptionInformation, chosenEncryptionAlgorithm, kC128);</span><br><span style="color: hsl(120, 100%, 40%);">+      var PDU_BSSAP 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: Wrong 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, "Wrong 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>        /* Make sure the new BSSAP conn continues with the correct N_SD sequence numbers */</span><br><span>  f_bssmap_continue_after_n_sd(last_n_sd);</span><br><span>@@ -6153,7 +6179,8 @@</span><br><span>     var BSSMAP_IE_AoIP_TransportLayerAddress tla :=</span><br><span>              valueof(f_ts_BSSMAP_IE_AoIP_TLA(cpars.bss_rtp_ip, cpars.bss_rtp_port));</span><br><span>      BSSAP.send(ts_BSSMAP_HandoverRequestAcknowledge(rr_ho_cmd_enc, lengthof(rr_ho_cmd_enc),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                 tla, ts_BSSMAP_IE_SpeechCodec({ts_CodecFR})));</span><br><span style="color: hsl(120, 100%, 40%);">+                                                        tla, ts_BSSMAP_IE_SpeechCodec({ts_CodecFR}),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                  chosenEncryptionAlgorithm := chosenEncryptionAlgorithm));</span><br><span> </span><br><span>        /* HandoverCommand goes out via remote MSC-I */</span><br><span>      var GSUP_PDU prep_subsq_ho_res;</span><br><span>@@ -6190,15 +6217,40 @@</span><br><span> </span><br><span>        setverdict(pass);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-testcase TC_ho_inter_msc_out() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+function f_tc_ho_inter_msc_out_a5(integer a5_n) runs on MTC_CT {</span><br><span>      var BSC_ConnHdlr vc_conn;</span><br><span>    f_init(1);</span><br><span> </span><br><span>       var BSC_ConnHdlrPars pars := f_init_pars(54);</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.net.expect_ciph := a5_n > 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  pars.net.expect_auth := pars.net.expect_ciph;</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.net.kc_support := bit2oct('00000001'B << a5_n);</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%);">+  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_conn := f_start_handler_with_pars(refers(f_tc_ho_inter_msc_out), pars, 0);</span><br><span>        vc_conn.done;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ho_inter_msc_out() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+   f_tc_ho_inter_msc_out_a5(0);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ho_inter_msc_out_a5_1() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ f_tc_ho_inter_msc_out_a5(1);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ho_inter_msc_out_a5_3() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ f_tc_ho_inter_msc_out_a5(3);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ho_inter_msc_out_a5_4() runs on MTC_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ f_tc_ho_inter_msc_out_a5(4);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> testcase TC_ho_inter_msc_out_ipv6() runs on MTC_CT {</span><br><span>      var BSC_ConnHdlr vc_conn;</span><br><span>    f_init(1);</span><br><span>@@ -6683,6 +6735,9 @@</span><br><span>   execute( TC_ho_inter_bsc_ipv6() );</span><br><span> </span><br><span>       execute( TC_ho_inter_msc_out() );</span><br><span style="color: hsl(120, 100%, 40%);">+     execute( TC_ho_inter_msc_out_a5_1() );</span><br><span style="color: hsl(120, 100%, 40%);">+        execute( TC_ho_inter_msc_out_a5_3() );</span><br><span style="color: hsl(120, 100%, 40%);">+        execute( TC_ho_inter_msc_out_a5_4() );</span><br><span>       execute( TC_ho_inter_msc_out_ipv6() );</span><br><span> </span><br><span>   execute( TC_lu_imsi_auth_tmsi_check_imei() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24767">change 24767</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/+/24767"/><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: Ia1df783be33bf752d291acb857d3c48882c65975 </div>
<div style="display:none"> Gerrit-Change-Number: 24767 </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>