<p>osmith has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24898">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: add TC_ciph_mode_a5_2_1<br><br>Verify that A5/1 is preferred over A5/2. Add encr_exp_enc_alg to<br>MSC_ConnectionHandler:TestHdlrEncrParams, so the expected encryption<br>algorithm can be different from what the MSC tells the BSC about the<br>capabilities of MS.<br><br>Related: OS#4975<br>Change-Id: I688d056bcfe73f7846f908a28f4621f944cf2178<br>---<br>M bsc/BSC_Tests.ttcn<br>M bsc/MSC_ConnectionHandler.ttcn<br>M bsc/expected-results.xml<br>3 files changed, 36 insertions(+), 3 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/98/24898/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn</span><br><span>index 6bea49e..dac86ca 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -3351,6 +3351,22 @@</span><br><span>      vc_conn.done;</span><br><span>        f_shutdown_helper();</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+/* OS#4975: verify that A5/1 is preferred over A5/2 */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ciph_mode_a5_2_1() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+   var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+     var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  pars.encr := valueof(t_EncrParams('06'O, f_rnd_octstring(8))); /* A5/1 and A5/2 (0x02|0x04)*/</span><br><span style="color: hsl(120, 100%, 40%);">+ pars.encr_exp_enc_alg := '02'O; /* A5/1 */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_init(1, true);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_vty_encryption_a5("1 2");</span><br><span style="color: hsl(120, 100%, 40%);">+ f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ vc_conn := f_start_handler(refers(f_tc_ciph_mode_a5), pars);</span><br><span style="color: hsl(120, 100%, 40%);">+  vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_encryption_a5_reset();</span><br><span style="color: hsl(120, 100%, 40%);">+  f_shutdown_helper();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> testcase TC_ciph_mode_a5_3() runs on test_CT {</span><br><span>    var MSC_ConnHdlr vc_conn;</span><br><span>    var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>@@ -9228,6 +9244,7 @@</span><br><span>   execute( TC_assignment_fr_a5_not_sup() );</span><br><span>    execute( TC_ciph_mode_a5_0() );</span><br><span>      execute( TC_ciph_mode_a5_1() );</span><br><span style="color: hsl(120, 100%, 40%);">+       execute( TC_ciph_mode_a5_2_1() );</span><br><span>    execute( TC_ciph_mode_a5_3() );</span><br><span>      execute( TC_ciph_mode_a5_4() );</span><br><span> </span><br><span>diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>index 94ec2b9..fc12307 100644</span><br><span>--- a/bsc/MSC_ConnectionHandler.ttcn</span><br><span>+++ b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>@@ -581,6 +581,7 @@</span><br><span>       RSL_IE_Body     expect_mr_conf_ie optional, /* typically present for AMR codecs */</span><br><span>   bitstring       expect_mr_s0_s7 optional, /* typically present for AMR codecs */</span><br><span>     TestHdlrEncrParams encr optional,</span><br><span style="color: hsl(120, 100%, 40%);">+     OCT1            encr_exp_enc_alg optional, /* if set, expect a different enc_alg than encr.enc_alg */</span><br><span>        TestHdlrParamsLcls lcls,</span><br><span>     SCCP_PAR_Address sccp_addr_msc optional,</span><br><span>     SCCP_PAR_Address sccp_addr_bsc optional,</span><br><span>@@ -610,6 +611,7 @@</span><br><span>       expect_mr_conf_ie := omit,</span><br><span>   expect_mr_s0_s7 := omit,</span><br><span>     encr := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+ encr_exp_enc_alg := omit,</span><br><span>    lcls := {</span><br><span>            gcr := omit,</span><br><span>                 cfg := omit,</span><br><span>@@ -713,6 +715,19 @@</span><br><span>  }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+function f_cipher_mode_bssmap_to_rsl_exp_enc_alg() runs on MSC_ConnHdlr return RSL_AlgId</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       var OCT1 enc_alg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if (ispresent(g_pars.encr_exp_enc_alg)) {</span><br><span style="color: hsl(120, 100%, 40%);">+             enc_alg := g_pars.encr_exp_enc_alg;</span><br><span style="color: hsl(120, 100%, 40%);">+   } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              enc_alg := g_pars.encr.enc_alg;</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 f_cipher_mode_bssmap_to_rsl(enc_alg);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> function f_verify_encr_info(RSL_Message rsl) runs on MSC_ConnHdlr {</span><br><span>     var RSL_IE_Body encr_info;</span><br><span>   var RSL_AlgId alg_rsl;</span><br><span>@@ -731,7 +746,7 @@</span><br><span> </span><br><span>     /* RSL uses a different representation of the encryption algorithm,</span><br><span>   * so we need to convert first */</span><br><span style="color: hsl(0, 100%, 40%);">-       alg_rsl := f_cipher_mode_bssmap_to_rsl(g_pars.encr.enc_alg);</span><br><span style="color: hsl(120, 100%, 40%);">+  alg_rsl := f_cipher_mode_bssmap_to_rsl_exp_enc_alg();</span><br><span> </span><br><span>    if (alg_rsl == RSL_ALG_ID_A5_4 and ispresent(g_pars.encr.enc_kc128)) {</span><br><span>               expect_kc := g_pars.encr.enc_kc128;</span><br><span>@@ -797,7 +812,7 @@</span><br><span>                    Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected Cipher Mode Complete");</span><br><span>             } else {</span><br><span>                     setverdict(pass);</span><br><span style="color: hsl(0, 100%, 40%);">-                       var RSL_AlgId alg_rsl := f_cipher_mode_bssmap_to_rsl(g_pars.encr.enc_alg);</span><br><span style="color: hsl(120, 100%, 40%);">+                    var RSL_AlgId alg_rsl := f_cipher_mode_bssmap_to_rsl_exp_enc_alg();</span><br><span>                  if (oct2int(bssap.pdu.bssmap.cipherModeComplete.chosenEncryptionAlgorithm.algorithmIdentifier) != enum2int(alg_rsl)) {</span><br><span>                               setverdict(fail, "Unexpected Encryption Algorithm ID in BSSMAP Cipher Mode Complete");</span><br><span>                     }</span><br><span>@@ -897,7 +912,7 @@</span><br><span>              if (not f_rsl_find_ie(chan_act, RSL_IE_ENCR_INFO, encr_info)) {</span><br><span>                      Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Missing Encryption IE in CHAN ACT");</span><br><span>           } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        var RSL_AlgId alg := f_cipher_mode_bssmap_to_rsl(g_pars.encr.enc_alg);</span><br><span style="color: hsl(120, 100%, 40%);">+                        var RSL_AlgId alg := f_cipher_mode_bssmap_to_rsl_exp_enc_alg();</span><br><span>                      var octetstring expect_key;</span><br><span>                  if (alg == RSL_ALG_ID_A5_4) {</span><br><span>                                expect_key := g_pars.encr.enc_kc128;</span><br><span>diff --git a/bsc/expected-results.xml b/bsc/expected-results.xml</span><br><span>index d2052b8..793ca03 100644</span><br><span>--- a/bsc/expected-results.xml</span><br><span>+++ b/bsc/expected-results.xml</span><br><span>@@ -54,6 +54,7 @@</span><br><span>   <testcase classname='BSC_Tests' name='TC_assignment_fr_a5_not_sup' time='MASKED'/></span><br><span>   <testcase classname='BSC_Tests' name='TC_ciph_mode_a5_0' time='MASKED'/></span><br><span>   <testcase classname='BSC_Tests' name='TC_ciph_mode_a5_1' time='MASKED'/></span><br><span style="color: hsl(120, 100%, 40%);">+  <testcase classname='BSC_Tests' name='TC_ciph_mode_a5_2_1' time='MASKED'/></span><br><span>   <testcase classname='BSC_Tests' name='TC_ciph_mode_a5_3' time='MASKED'/></span><br><span>   <testcase classname='BSC_Tests' name='TC_ciph_mode_a5_4' time='MASKED'/></span><br><span>   <testcase classname='BSC_Tests' name='TC_assignment_codec_fr' time='MASKED'/></span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24898">change 24898</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/+/24898"/><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: I688d056bcfe73f7846f908a28f4621f944cf2178 </div>
<div style="display:none"> Gerrit-Change-Number: 24898 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>