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
+	}
+}