msc: Separate as_GSUP_SAI from f_mm_auth
In some cases we might want to match on (and perform) the GSUP SEND AUTH INFO without also expecting/performing a MM authentication on the Iu/A interface. Hence it makes sense to split those two. Change-Id: I7b298d589930bab976b478ac84553a6352f25c93
This commit is contained in:
parent
d29a64c6d3
commit
a183a5ddc2
|
@ -379,34 +379,39 @@ private function f_build_lu(MobileIdentityLV mi) runs on BSC_ConnHdlr return PDU
|
|||
return l3_info;
|
||||
}
|
||||
|
||||
altstep as_GSUP_SAI() runs on BSC_ConnHdlr {
|
||||
var GSUP_IE auth_tuple;
|
||||
[] GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)) {
|
||||
if (g_pars.use_umts_aka) {
|
||||
g_pars.vec := f_gen_auth_vec_3g();
|
||||
auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G3G(g_pars.vec.rand,
|
||||
g_pars.vec.sres,
|
||||
g_pars.vec.kc,
|
||||
g_pars.vec.ik,
|
||||
g_pars.vec.ck,
|
||||
g_pars.vec.autn,
|
||||
g_pars.vec.res));
|
||||
GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
|
||||
} else {
|
||||
g_pars.vec := f_gen_auth_vec_2g();
|
||||
auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(g_pars.vec.rand,
|
||||
g_pars.vec.sres,
|
||||
g_pars.vec.kc));
|
||||
GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function f_mm_auth() runs on BSC_ConnHdlr
|
||||
{
|
||||
if (g_pars.net.expect_auth) {
|
||||
var GSUP_IE auth_tuple;
|
||||
GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi));
|
||||
|
||||
as_GSUP_SAI();
|
||||
if (g_pars.use_umts_aka) {
|
||||
g_pars.vec := f_gen_auth_vec_3g();
|
||||
auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G3G(g_pars.vec.rand,
|
||||
g_pars.vec.sres,
|
||||
g_pars.vec.kc,
|
||||
g_pars.vec.ik,
|
||||
g_pars.vec.ck,
|
||||
g_pars.vec.autn,
|
||||
g_pars.vec.res));
|
||||
GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
|
||||
|
||||
BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ_3G(g_pars.vec.rand, g_pars.vec.autn)));
|
||||
var OCT4 res := substr(g_pars.vec.res, 0, 4);
|
||||
var OCT4 xres := substr(g_pars.vec.res, 4, 4);
|
||||
BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_3G(res, xres)));
|
||||
} else {
|
||||
g_pars.vec := f_gen_auth_vec_2g();
|
||||
auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(g_pars.vec.rand,
|
||||
g_pars.vec.sres,
|
||||
g_pars.vec.kc));
|
||||
GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
|
||||
|
||||
BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ(g_pars.vec.rand)));
|
||||
BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_2G(g_pars.vec.sres)));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue