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.orgHarald Welte has submitted this change and it was merged. Change subject: msc: TC_lu_imsi_auth_tmsi_encr_13_13 ...................................................................... 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(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified 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: merged Gerrit-Change-Id: I8a8a5c55d87bb251896664679920b96f678673a0 Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder