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/.
fixeria gerrit-no-reply at lists.osmocom.orgfixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/26404 )
Change subject: msc/BSC_ConnectionHandler: refactor and split f_mm_common()
......................................................................
msc/BSC_ConnectionHandler: refactor and split f_mm_common()
Reduce nesting and improve readability by splitting GERAN/UTRAN
specific CMC/SMC message handling into separate functions.
Change-Id: Ib7ebe8fd675295beb02cadebb19d8465dffeb732
Related: OS#5333
---
M msc/BSC_ConnectionHandler.ttcn
1 file changed, 69 insertions(+), 57 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/04/26404/1
diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index 2f270ca..873ec5b 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -611,68 +611,80 @@
}
+private function f_mm_ciph_geran() runs on BSC_ConnHdlr
+{
+ var template BSSMAP_IE_EncryptionInformation encryptionInformation;
+ var template BSSMAP_IE_ChosenEncryptionAlgorithm chosenEncryptionAlgorithm;
+ var template BSSMAP_IE_KC128 kC128;
+ var OCT1 a5_perm_alg;
+ var PDU_BSSAP pdu;
+
+ if (g_pars.net.expect_ciph) {
+ /* There is nothing to do */
+ return;
+ }
+
+ f_get_expected_encryption(encryptionInformation, chosenEncryptionAlgorithm, kC128, a5_perm_alg);
+ alt {
+ [] BSSAP.receive(tr_BSSMAP_CipherModeCmd2(encryptionInformation, kC128)) -> value pdu {
+ var OCT1 a5_chosen := f_best_alg_from_mask(a5_perm_alg);
+ var integer a5_nr := f_alg_from_mask(a5_chosen);
+ BSSAP.send(ts_BSSMAP_CipherModeCompl(int2oct(a5_nr+1, 1)));
+ }
+ [] BSSAP.receive(tr_BSSMAP_CipherModeCmd2) -> value pdu {
+ log("Error: Ciphering Mode Command with unexpected content. Expected: ",
+ tr_BSSMAP_CipherModeCmd2(encryptionInformation, kC128), " got: ", pdu);
+ setverdict(fail, "Ciphering Mode Command with unexpected content.");
+ mtc.stop;
+ }
+ [] BSSAP.receive(tr_BSSMAP_ClassmarkRequest) {
+ BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3))
+ repeat;
+ }
+ }
+ /* FIXME: Send the best available algorithm */
+}
+
+private function f_mm_ciph_utran() runs on BSC_ConnHdlr
+{
+ alt {
+ [g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmdEnc(uia_algs := ?,
+ uia_key := oct2bit(g_pars.vec.ik),
+ key_sts := ?,
+ uea_algs := ?,
+ uea_key := oct2bit(g_pars.vec.ck))) {
+ var IntegrityProtectionAlgorithm uia_chosen := 0; /*standard_UMTS_integrity_algorithm_UIA1*/
+ var EncryptionAlgorithm uea_chosen := 1; /*standard_UMTS_encryption_algorith_UEA1*/
+ BSSAP.send(ts_RANAP_SecurityModeCompleteEnc(uia_chosen, uea_chosen));
+ }
+ [g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmdEnc(?,?,?,?,?)) {
+ setverdict(fail, "Invalid SecurityModeCommand (ciphering case)");
+ mtc.stop;
+ }
+ [not g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?,
+ uia_key := oct2bit(g_pars.vec.ik),
+ key_sts := ?)) {
+ var IntegrityProtectionAlgorithm uia_chosen := 0; /*standard_UMTS_integrity_algorithm_UIA1;*/
+ BSSAP.send(ts_RANAP_SecurityModeComplete(uia_chosen));
+ }
+ [not g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmd(?,?,?)) {
+ setverdict(fail, "Invalid SecurityModeCommand (non-ciphering case)");
+ mtc.stop;
+ }
+ }
+}
+
function f_mm_common() runs on BSC_ConnHdlr
{
f_mm_auth();
- if (g_pars.ran_is_geran) {
- if (g_pars.net.expect_ciph) {
- 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 PDU_BSSAP pdu;
- var template PDU_BSSAP expect_ciph_mode_cmd := tr_BSSMAP_CipherModeCmd2(encryptionInformation, kC128);
- alt {
- [] BSSAP.receive(expect_ciph_mode_cmd) -> value pdu {
- var OCT1 a5_chosen := f_best_alg_from_mask(a5_perm_alg);
- var integer a5_nr := f_alg_from_mask(a5_chosen);
- BSSAP.send(ts_BSSMAP_CipherModeCompl(int2oct(a5_nr+1, 1)));
- }
- [] BSSAP.receive(tr_BSSMAP_CipherModeCmd2) -> value pdu {
- log("Error: Ciphering Mode Command with unexpected content. Expected: ",
- expect_ciph_mode_cmd, " got: ", pdu);
- setverdict(fail, "Ciphering Mode Command with unexpected content.");
- mtc.stop;
- }
- [] BSSAP.receive(tr_BSSMAP_ClassmarkRequest) {
- BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3))
- repeat;
- }
- }
- /* FIXME: Send the best available algorithm */
- }
- f_expect_common_id();
- } else { /* UTRAN */
- alt {
- [g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmdEnc(uia_algs := ?,
- uia_key := oct2bit(g_pars.vec.ik),
- key_sts := ?,
- uea_algs := ?,
- uea_key := oct2bit(g_pars.vec.ck))) {
- var IntegrityProtectionAlgorithm uia_chosen := 0; /*standard_UMTS_integrity_algorithm_UIA1*/
- var EncryptionAlgorithm uea_chosen := 1; /*standard_UMTS_encryption_algorith_UEA1*/
- BSSAP.send(ts_RANAP_SecurityModeCompleteEnc(uia_chosen, uea_chosen));
- f_expect_common_id();
- }
- [g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmdEnc(?,?,?,?,?)) {
- setverdict(fail, "Invalid SecurityModeCommand (ciphering case)");
- mtc.stop;
- }
- [not g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?,
- uia_key := oct2bit(g_pars.vec.ik),
- key_sts := ?)) {
- var IntegrityProtectionAlgorithm uia_chosen := 0; /*standard_UMTS_integrity_algorithm_UIA1;*/
- BSSAP.send(ts_RANAP_SecurityModeComplete(uia_chosen));
- f_expect_common_id();
- }
- [not g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmd(?,?,?)) {
- setverdict(fail, "Invalid SecurityModeCommand (non-ciphering case)");
- mtc.stop;
- }
- }
+ if (g_pars.ran_is_geran) {
+ f_mm_ciph_geran();
+ } else {
+ f_mm_ciph_utran();
}
+
+ f_expect_common_id();
}
function f_expect_mm_info() runs on BSC_ConnHdlr {
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/26404
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: Ib7ebe8fd675295beb02cadebb19d8465dffeb732
Gerrit-Change-Number: 26404
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20211128/6a5a789f/attachment.htm>