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