GSUP/L3: Add templates related to authentication
Change-Id: Id9566e3e075a8837e2e77a7c2b9d8f0f6e9b7554
diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn
index 7455085..bc54510 100644
--- a/library/GSUP_Types.ttcn
+++ b/library/GSUP_Types.ttcn
@@ -88,8 +88,15 @@
variant (val) "CROSSTAG(imsi, tag = OSMO_GSUP_IMSI_IE;
cause, tag = OSMO_GSUP_CAUSE_IE;
cancel_type, tag = OSMO_GSUP_CANCEL_TYPE_IE;
+ auth_tuple, tag = OSMO_GSUP_AUTH_TUPLE_IE;
auts, tag = OSMO_GSUP_AUTS_IE;
rand, tag = OSMO_GSUP_RAND_IE;
+ sres, tag = OSMO_GSUP_SRES_IE;
+ kc, tag = OSMO_GSUP_KC_IE;
+ ik, tag = OSMO_GSUP_IK_IE;
+ ck, tag = OSMO_GSUP_CK_IE;
+ autn, tag = OSMO_GSUP_AUTN_IE;
+ res, tag = OSMO_GSUP_RES_IE;
msisdn, tag = OSMO_GSUP_MSISDN_IE;
hlr_number, tag = OSMO_GSUP_HLR_NUMBER_IE;
cn_domain, tag = OSMO_GSUP_CN_DOMAIN_IE;
@@ -108,6 +115,12 @@
GSUP_IEs auth_tuple,
octetstring auts,
octetstring rand,
+ octetstring sres,
+ octetstring kc,
+ octetstring ik,
+ octetstring ck,
+ octetstring autn,
+ octetstring res,
hexstring msisdn,
octetstring hlr_number,
GSUP_CnDomain cn_domain,
@@ -126,6 +139,38 @@
with { extension "prototype(convert) decode(RAW)" };
+template GSUP_IE ts_GSUP_IE_AuthTuple2G(octetstring rand, octetstring sres,
+ octetstring kc) := {
+ tag := OSMO_GSUP_AUTH_TUPLE_IE,
+ len := 0, /* overwritten */
+ val := {
+ auth_tuple := {
+ valueof(ts_GSUP_IE_RAND(rand)),
+ valueof(ts_GSUP_IE_SRES(sres)),
+ valueof(ts_GSUP_IE_Kc(kc))
+ }
+ }
+}
+
+template GSUP_IE ts_GSUP_IE_AuthTuple2G3G(octetstring rand, octetstring sres,
+ octetstring kc, octetstring ik,
+ octetstring ck, octetstring autn,
+ octetstring res) := {
+ tag := OSMO_GSUP_AUTH_TUPLE_IE,
+ len := 0, /* overwritten */
+ val := {
+ auth_tuple := {
+ valueof(ts_GSUP_IE_RAND(rand)),
+ valueof(ts_GSUP_IE_SRES(sres)),
+ valueof(ts_GSUP_IE_Kc(kc)),
+ valueof(ts_GSUP_IE_IK(ik)),
+ valueof(ts_GSUP_IE_CK(ck)),
+ valueof(ts_GSUP_IE_AUTN(autn)),
+ valueof(ts_GSUP_IE_RES(res))
+ }
+ }
+}
+
template GSUP_PDU tr_GSUP(template GSUP_MessageType msgt := ?, template GSUP_IEs ies := *) := {
msg_type := msgt,
ies := ies
@@ -142,6 +187,10 @@
template GSUP_PDU tr_GSUP_SAI_REQ(template hexstring imsi) :=
tr_GSUP(OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST, { tr_GSUP_IE_IMSI(imsi), * });
+template (value) GSUP_PDU ts_GSUP_SAI_RES(hexstring imsi, GSUP_IE auth_tuple) :=
+ ts_GSUP(OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT, {
+ valueof(ts_GSUP_IE_IMSI(imsi)), auth_tuple });
+
template GSUP_PDU tr_GSUP_SAI_ERR(template hexstring imsi, template integer cause) :=
tr_GSUP(OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST, {
tr_GSUP_IE_IMSI(imsi), tr_GSUP_IE_Cause(cause) });
@@ -241,6 +290,53 @@
}
}
+template (value) GSUP_IE ts_GSUP_IE_SRES(octetstring sres) := {
+ tag := OSMO_GSUP_SRES_IE,
+ len := 0, /* overwritten */
+ val := {
+ sres := sres
+ }
+}
+
+template (value) GSUP_IE ts_GSUP_IE_Kc(octetstring kc) := {
+ tag := OSMO_GSUP_KC_IE,
+ len := 0, /* overwritten */
+ val := {
+ kc := kc
+ }
+}
+
+template (value) GSUP_IE ts_GSUP_IE_IK(octetstring ik) := {
+ tag := OSMO_GSUP_IK_IE,
+ len := 0, /* overwritten */
+ val := {
+ ik := ik
+ }
+}
+
+template (value) GSUP_IE ts_GSUP_IE_CK(octetstring ck) := {
+ tag := OSMO_GSUP_CK_IE,
+ len := 0, /* overwritten */
+ val := {
+ ck := ck
+ }
+}
+
+template (value) GSUP_IE ts_GSUP_IE_AUTN(octetstring autn) := {
+ tag := OSMO_GSUP_AUTN_IE,
+ len := 0, /* overwritten */
+ val := {
+ autn := autn
+ }
+}
+
+template (value) GSUP_IE ts_GSUP_IE_RES(octetstring res) := {
+ tag := OSMO_GSUP_RES_IE,
+ len := 0, /* overwritten */
+ val := {
+ res := res
+ }
+}
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index be9386a..d652873 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -474,6 +474,62 @@
}
}
+template PDU_ML3_NW_MS tr_ML3_MT_MM_AUTH_REQ(template OCT16 rand := ?) := {
+ discriminator := '0101'B,
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ mm := {
+ authenticationRequest := {
+ messageType := '010010'B,
+ nsd := '00'B,
+ cipheringKeySequenceNumber := ?,
+ spare2_4 := ?,
+ authenticationParRAND := rand,
+ authenticationParAUTN := *
+ }
+ }
+ }
+}
+
+template (value) PDU_ML3_MS_NW ts_ML3_MT_MM_AUTH_RESP_2G(OCT4 sres) := {
+ discriminator := '0101'B,
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ mm := {
+ authenticationResponse := {
+ messageType := '010100'B,
+ nsd := '00'B,
+ authenticationParSRES := sres,
+ authenticationParSRESext := omit
+ }
+ }
+ }
+}
+
+template (value) PDU_ML3_MS_NW ts_ML3_MT_MM_AUTH_RESP_3G(OCT4 sres, octetstring res) := {
+ discriminator := '0101'B,
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ mm := {
+ authenticationResponse := {
+ messageType := '010100'B,
+ nsd := '00'B,
+ authenticationParSRES := sres,
+ authenticationParSRESext := {
+ elementIdentifier := '21'O,
+ lengthIndicator := 0, /* overwritten */
+ valueField := res
+ }
+ }
+ }
+ }
+}
}