[PATCH] osmo-ttcn3-hacks[master]: msc: TC_lu_imsi_auth_tmsi_encr_13_13

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/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Wed Jan 24 21:42:46 UTC 2018


Review at  https://gerrit.osmocom.org/6046

msc: TC_lu_imsi_auth_tmsi_encr_13_13

Add a first test for encryption (cipher mode command/complete)

Change-Id: I8a8a5c55d87bb251896664679920b96f678673a0
---
M library/BSSMAP_Templates.ttcn
M msc_tests/BSC_ConnectionHandler.ttcn
M msc_tests/MSC_Tests.ttcn
3 files changed, 68 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/46/6046/1

diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index 5331505..33c370e 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -367,6 +367,14 @@
 	key := kc
 }
 
+template BSSMAP_IE_EncryptionInformation tr_BSSMAP_IE_EncrInfo(template OCT8 kc := ?, template OCT1 algs := ?) := {
+	elementIdentifier := '0A'O,
+	lengthIndicator := ?,	/* overwritten */
+	permittedAlgorithms := algs,
+	key := kc
+}
+
+
 
 template (value) BSSMAP_IE_CircuitIdentityCode ts_BSSMAP_IE_CIC(uint11_t span, uint5_t ts) := {
 	elementIdentifier := '01'O,	/* overwritten */
@@ -748,6 +756,37 @@
 	}
 }
 
+template PDU_BSSAP tr_BSSMAP_CipherModeCmd(template OCT1 alg, template OCT8 key)
+modifies tr_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			cipherModeCommand := {
+				messageType := '53'O,
+				layer3HeaderInfo := *,
+				encryptionInformation := tr_BSSMAP_IE_EncrInfo(key, alg),
+				cipherResponseMode := *,
+				kC128 := *
+			}
+		}
+	}
+}
+
+template PDU_BSSAP ts_BSSMAP_CipherModeCompl(OCT1 alg)
+modifies ts_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			cipherModeComplete := {
+				messageType := '55'O,
+				layer3MessageContents := omit,
+				chosenEncryptionAlgorithm := {
+					elementIdentifier := '2C'O,
+					algorithmIdentifier := alg
+				}
+			}
+		}
+	}
+}
+
 template PDU_BSSAP tr_BSSMAP_CipherModeCompl(template OCT1 alg := ?) modifies tr_BSSAP_BSSMAP := {
 	pdu := {
 		bssmap := {
diff --git a/msc_tests/BSC_ConnectionHandler.ttcn b/msc_tests/BSC_ConnectionHandler.ttcn
index 330f25a..656fb4e 100644
--- a/msc_tests/BSC_ConnectionHandler.ttcn
+++ b/msc_tests/BSC_ConnectionHandler.ttcn
@@ -33,7 +33,8 @@
 	hexstring msisdn,
 	OCT4 tmsi optional,
 	BSSMAP_IE_ClassmarkInformationType2 cm2,
-	BSSMAP_IE_ClassmarkInformationType3 cm3 optional
+	BSSMAP_IE_ClassmarkInformationType3 cm3 optional,
+	octetstring kc optional
 };
 
 
@@ -161,10 +162,12 @@
 	return vec;
 }
 
-function f_perform_lu(boolean expect_auth, boolean expect_tmsi, boolean send_early_cm)
+function f_perform_lu(boolean expect_auth, boolean expect_tmsi, boolean send_early_cm,
+		      boolean expect_ciph := false)
 runs on BSC_ConnHdlr {
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi)
 	var PDU_DTAP_MT dtap_mt;
+	var AuthVector vec;
 
 	/* tell GSUP dispatcher to send this IMSI to us */
 	f_create_gsup_expect(hex2str(g_pars.imsi));
@@ -177,7 +180,7 @@
 	}
 
 	if (expect_auth) {
-		var AuthVector vec := f_gen_auth_vec_2g();
+		vec := f_gen_auth_vec_2g();
 		var GSUP_IE auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(vec.rand, vec.sres, vec.kc));
 		GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi));
 		GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
@@ -186,6 +189,12 @@
 		BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_2G(vec.sres)));
 	}
 
+	if (expect_ciph) {
+		BSSAP.receive(tr_BSSMAP_CipherModeCmd(?, vec.kc));
+		g_pars.kc := vec.kc;
+		BSSAP.send(ts_BSSMAP_CipherModeCompl('02'O));
+	}
+
 	/* Expect MSC to perform LU with HLR */
 	GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi));
 	GSUP.send(ts_GSUP_ISD_REQ(g_pars.imsi, g_pars.msisdn));
diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn
index 367cd79..74d1b93 100644
--- a/msc_tests/MSC_Tests.ttcn
+++ b/msc_tests/MSC_Tests.ttcn
@@ -331,7 +331,8 @@
 		msisdn := f_gen_msisdn(imsi_suffix),
 		tmsi := omit,
 		cm2 := valueof(ts_CM2_default),
-		cm3 := omit
+		cm3 := omit,
+		kc := omit
 	};
 
 	vc_conn := BSC_ConnHdlr.create(id);
@@ -1087,6 +1088,21 @@
 	vc_conn.done;
 }
 
+private function f_tc_lu_imsi_auth_tmsi_encr_13_13(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
+	g_pars := pars;
+	f_perform_lu(true, true, true, true);
+}
+testcase TC_lu_imsi_auth_tmsi_encr_13_13() runs on MTC_CT {
+	var BSC_ConnHdlr vc_conn;
+	f_init();
+	f_vty_config(MSCVTY, "network", "authentication required");
+	f_vty_config(MSCVTY, "msc", "assign-tmsi");
+	f_vty_config(MSCVTY, "network", "encryption a5 1 3");
+
+	vc_conn := f_start_handler(refers(f_tc_lu_imsi_auth_tmsi_encr_13_13), testcasename(), 24);
+	vc_conn.done;
+}
+
 
 /* TODO:
    * continue to send repeated MO signalling messages to keep channel open: does MSC tmeout?

-- 
To view, visit https://gerrit.osmocom.org/6046
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8a8a5c55d87bb251896664679920b96f678673a0
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>



More information about the gerrit-log mailing list