/* SGP32 Templates in TTCN-3
 *
 * Author: Philipp Maier <pmaier@sysmocom.de> / sysmocom - s.f.m.c. GmbH
 *
 * Released under the terms of GNU General Public License, Version 2 or
 * (at your option) any later version.
 *
 * SPDX-License-Identifier: GPL-2.0-or-later
 */

module SGP32Definitions_Templates {

import from SGP32Definitions all;
import from SGP32Definitions_Types all;

import from RSPDefinitions all;
import from RSPDefinitions_Types all;
import from RSPDefinitions_Templates all;

import from PKIX1Explicit88 all;
import from PKIX1Explicit88_Templates all;
import from PKIX1Explicit88_Types all;

/* GSMA SGP.32, section 6.3.2.1 */
template (present) EsipaMessageFromEimToIpa
tr_initiateAuthenticationResponseEsipa(template (present) octetstring euiccChallenge := ?,
				       template (present) universal charstring serverAddress := ?) := {
	initiateAuthenticationResponseEsipa := {
		initiateAuthenticationOkEsipa := {
			transactionId := *,
			serverSigned1 := tr_serverSigned1(euiccChallenge := euiccChallenge, serverAddress := serverAddress),
			serverSignature1 := ?,
			euiccCiPKIdToBeUsed := ?,
			serverCertificate := ?,
			matchingId := *,
			ctxParams1 := *
		}
	}
}

template (value) EsipaMessageFromEimToIpa
ts_initiateAuthenticationResponseEsipa(template (value) octetstring euiccChallenge := '00112233445566778899AABBCCDDEEFF'O,
				       template (value) universal charstring serverAddress := "smdp.example.com") := {
	initiateAuthenticationResponseEsipa := {
		initiateAuthenticationOkEsipa := {
			transactionId := omit,
			serverSigned1 := ts_serverSigned1(euiccChallenge := euiccChallenge, serverAddress := serverAddress),
			serverSignature1 := '01020304'O,
			euiccCiPKIdToBeUsed := 'F54172BDF98A95D65CBEB88A38A1C11D800A85C3'O, /* NIST */
			serverCertificate := ts_cert_s_sm_dpauth_nist,
//			serverCertificate := ts_cert_s_sm_dpauth_brp,
//			serverCertificate := ts_cert_s_sm_dp2auth_nist,
//			serverCertificate := ts_cert_s_sm_dp2auth_brp,
			matchingId := omit,
			ctxParams1 := omit
		}
	}
}

/* GSMA SGP.32, section 6.3.2.1 */
template (present) EsipaMessageFromIpaToEim
tr_initiateAuthenticationRequestEsipa(template (present) octetstring euiccChallenge := ?) := {
	initiateAuthenticationRequestEsipa := {
		euiccChallenge := euiccChallenge,
		smdpAddress := *,
		euiccInfo1 := *
	}
}
template (value) EsipaMessageFromIpaToEim
ts_initiateAuthenticationRequestEsipa(template (value) octetstring euiccChallenge := '00112233445566778899aabbccddeeff'O,
				      template (omit) charstring smdpAddress := "smdp.example.com",
				      template (omit) EUICCInfo1 euiccInfo1 := ts_EUICCInfo1) := {
	initiateAuthenticationRequestEsipa := {
		euiccChallenge := euiccChallenge,
		smdpAddress := smdpAddress,
		euiccInfo1 := euiccInfo1
	}
}

/* GSMA SGP.32, section 6.3.2.2 */
template (present) EsipaMessageFromIpaToEim
tr_authenticateClientRequestEsipa := {
	authenticateClientRequestEsipa := {
		transactionId := ?,
		authenticateServerResponse := {
			authenticateResponseOk := ?
		}
	}
}
template (value) EsipaMessageFromIpaToEim
ts_authenticateClientRequestEsipa(template (value) octetstring transactionId := 'ABCDEF'O) := {
	authenticateClientRequestEsipa := {
		transactionId := transactionId,
		authenticateServerResponse := {
			authenticateResponseOk := {
				euiccSigned1 := ts_euiccSigned1,
				euiccSignature1 := '1234567890'O,
				euiccCertificate := ts_cert_eum_nist,
				eumCertificate := ts_cert_s_sm_dpauth_nist
			}
		}
	}
}

/* GSMA SGP.32, section 6.3.2.2 */
template (present) EsipaMessageFromEimToIpa
tr_authenticateClientResponseEsipa_dse(template (present) octetstring transactionId := ?,
				       template (present) charstring activationCode := ?) := {
	authenticateClientResponseEsipa := {
		authenticateClientOkDSEsipa := {
			transactionId := transactionId,
				profileDownloadTrigger := {
				profileDownloadData := {
					activationCode := ?
				},
				eimTransactionId := *
			}
		}
	}
}
template (value) EsipaMessageFromEimToIpa
ts_authenticateClientResponseEsipa_dse(template (value) octetstring transactionId := 'ABCDEF'O,
				       template (value) charstring activationCode := "1$SMDP.EXAMPLE.COM$$1.3.6.1.4.1.31746") := {
	authenticateClientResponseEsipa := {
		authenticateClientOkDSEsipa := {
			transactionId := transactionId,
			profileDownloadTrigger := {
				profileDownloadData := {
					activationCode := activationCode
				},
				eimTransactionId := omit
			}
		}
	}
}

/* GSMA SGP.32, section 6.3.2.2 */
template (present) EsipaMessageFromEimToIpa
tr_authenticateClientResponseEsipa_dpe(template (present) octetstring transactionId := ?) := {
	authenticateClientResponseEsipa := {
		authenticateClientOkDPEsipa := {
			transactionId := transactionId,
			profileMetaData := *,
			smdpSigned2 := {
				transactionId := ?,
				ccRequiredFlag := ?,
				bppEuiccOtpk := *
			},
			smdpSignature2 := ?,
			smdpCertificate := ?,
			hashCc := *
		}
	}
}
template (value) EsipaMessageFromEimToIpa
ts_authenticateClientResponseEsipa_dpe(template (value) octetstring transactionId := 'ABCDEF'O) := {
	authenticateClientResponseEsipa := {
		authenticateClientOkDPEsipa := {
			transactionId := transactionId,
			profileMetaData := omit,
			smdpSigned2 := {
				transactionId := transactionId,
				ccRequiredFlag := false,
				bppEuiccOtpk := omit
			},
			smdpSignature2 := 'AAAAAAAAAAAAAAAAAAAAAAAA'O,
			smdpCertificate := ts_cert_s_sm_dpauth_nist,
//			smdpCertificate := ts_cert_s_sm_dpauth_brp,
//			smdpCertificate := ts_cert_s_sm_dp2auth_nist,
//			smdpCertificate := ts_cert_s_sm_dp2auth_brp,
			hashCc := omit
		}
	}
}

/* GSMA SGP.32, section 6.3.2.6 */
template (present) EsipaMessageFromIpaToEim
tr_getEimPackageRequest(template (present) octetstring eidValue := ?) := {
	getEimPackageRequest := {
		eidValue := eidValue,
		notifyStateChange := *,
		rPLMN := *
	}
}
template (value) EsipaMessageFromIpaToEim
ts_getEimPackageRequest(template (value) octetstring eidValue) := {
	getEimPackageRequest := {
		eidValue := eidValue,
		notifyStateChange := omit,
		rPLMN := omit
	}
}

/* GSMA SGP.32, section 6.3.2.6 and 2.11.1.3 */
template (present) EsipaMessageFromEimToIpa
tr_getEimPackageResponse_dnlTrigReq(template (present) charstring activationCode := ?) := {
	getEimPackageResponse := {
		profileDownloadTriggerRequest := {
			profileDownloadData := {
				activationCode := activationCode
			},
			eimTransactionId := *
		}
	}
}
template (value) EsipaMessageFromEimToIpa
ts_getEimPackageResponse_dnlTrigReq(template (value) charstring activationCode := "1$SMDP.EXAMPLE.COM$$1.3.6.1.4.1.31746") := {
	getEimPackageResponse := {
		profileDownloadTriggerRequest := {
			profileDownloadData := {
				activationCode := activationCode
			},
			eimTransactionId := omit
		}
	}
}

/* GSMA SGP.32, section 6.3.2.6 and 2.11.1.2 */
template (present) EsipaMessageFromEimToIpa
tr_getEimPackageResponse_euiccDataReq := {
	getEimPackageResponse := {
		ipaEuiccDataRequest := {
			tagList := ?,
			euiccCiPKId := *,
			searchCriteria := *
		}
	}
}
template (value) EsipaMessageFromEimToIpa
ts_getEimPackageResponse_euiccDataReq := {
	getEimPackageResponse := {
		ipaEuiccDataRequest := {
			tagList := '80BF20BF228384A5A688A9BF2B'O,
			euiccCiPKId := omit,
			searchCriteria := omit
		}
	}
}

/* GSMA SGP.32, section 6.3.2.6 */
template (present) EsipaMessageFromEimToIpa
tr_getEimPackageResponse_eimPkgErrUndef := {
	getEimPackageResponse := {
		eimPackageError := ?
	}
}
template (value) EsipaMessageFromEimToIpa
ts_getEimPackageResponse_eimPkgErrUndef := {
	getEimPackageResponse := {
		eimPackageError := 127
	}
}

/* GSMA SGP.32, section 2.11.1.1.3 */
template (present) EuiccPackage
tr_euiccPackage_enablePsmo := {
	psmoList := {
		{
			enable := {
				iccid := ?,
				rollbackFlag := *
			}
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_enablePsmo := {
	psmoList := {
		{
			enable := {
				iccid := '123456789ABCDEFFAAAA'O,
				rollbackFlag := NULL
			}
		}
	}
}
template (present) EuiccPackage
tr_euiccPackage_disablePsmo := {
	psmoList := {
		{
			disable := {
				iccid := ?
			}
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_disablePsmo := {
	psmoList := {
		{
			disable := {
				iccid := '123456789ABCDEFFAAAA'O
			}
		}
	}
}
template (present) EuiccPackage
tr_euiccPackage_deletePsmo := {
	psmoList := {
		{
			delete := {
				iccid := ?
			}
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_deletePsmo := {
	psmoList := {
		{
			delete := {
				iccid := '123456789ABCDEFFAAAA'O
			}
		}
	}
}
template (present) EuiccPackage
tr_euiccPackage_disableAndDeletePsmo := {
	psmoList := {
		{
			disable := {
				iccid := ?
			}
		},
		{
			delete := {
				iccid := ?
			}
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_disableAndDeletePsmo := {
	psmoList := {
		{
			disable := {
				iccid := '123456789ABCDEFFAAAA'O
			}
		},
		{
			delete := {
				iccid := '123456789ABCDEFFAAAA'O
			}
		}
	}
}
template (present) EuiccPackage
tr_euiccPackage_listProfileInfo := {
	psmoList := {
		{
			listProfileInfo := {
				searchCriteria := *,
				tagList := *
			}
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_listProfileInfo := {
	psmoList := {
		{
			listProfileInfo := {
				searchCriteria := {
					iccid := '123456789ABCDEFFAAAA'O
				},
				tagList := '92'O /* profileName */
			}
		}
	}
}
template (present) EuiccPackage
tr_euiccPackage_getRAT := {
	psmoList := {
		{
			getRAT := { }
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_getRAT := {
	psmoList := {
		{
			getRAT := { }
		}
	}
}
template (present) EuiccPackage
tr_euiccPackage_configureAutoEnable := {
	psmoList := {
		{
			configureAutoEnable := {
				autoEnableFlag := *,
				smdpOid := *,
				smdpAddress := *
			}
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_configureAutoEnable := {
	psmoList := {
		{
			configureAutoEnable := {
				autoEnableFlag := NULL,
				smdpOid := objid {1 2 3},
				smdpAddress := "smdp.example.com"
			}
		}
	}
}
template (present) EuiccPackage
tr_euiccPackage_addEim := {
	ecoList := {
		{
			addEim := tr_eimConfigurationData
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_addEim := {
	ecoList := {
		{
			addEim := ts_eimConfigurationData
		}
	}
}
template (present) EuiccPackage
tr_euiccPackage_deleteEim := {
	ecoList := {
		{
			deleteEim := ?
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_deleteEim := {
	ecoList := {
		{
			deleteEim := {
				eimId := "eIM"
			}
		}
	}
}
template (present) EuiccPackage
tr_euiccPackage_updateEim := {
	ecoList := {
		{
			updateEim := tr_eimConfigurationData
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_updateEim := {
	ecoList := {
		{
			updateEim := ts_eimConfigurationData
		}
	}
}
template (present) EuiccPackage
tr_euiccPackage_listEim := {
	ecoList := {
		{
			listEim := { }
		}
	}
}
template (value) EuiccPackage
ts_euiccPackage_listEim := {
	ecoList := {
		{
			listEim := { }
		}
	}
}

/* GSMA SGP.32, section 6.3.2.6 */
template (present) EsipaMessageFromEimToIpa
tr_getEimPackageResponse_euiccPkgReq(template (present) EuiccPackage euiccPackage := tr_euiccPackage_enablePsmo) := {
	getEimPackageResponse := {
		euiccPackageRequest := {
			euiccPackageSigned := {
				eimId := ?,
				eidValue := ?,
				counterValue := ?,
				transactionId := *,
				euiccPackage := euiccPackage
			},
			eimSignature := ?
		}
	}
}
template (value) EsipaMessageFromEimToIpa
ts_getEimPackageResponse_euiccPkgReq(template (value) EuiccPackage euiccPackage := ts_euiccPackage_enablePsmo) := {
	getEimPackageResponse := {
		euiccPackageRequest := {
			euiccPackageSigned := {
				eimId := "myEim",
				eidValue := '00112233445566778899AABBCCDDEEFF'O,
				counterValue := 123,
				transactionId := omit,
				euiccPackage := euiccPackage
			},
			eimSignature := '1234567890'O
		}
	}
}

/* GSMA SGP.32, section 6.3.2.5 */
template (present) EsipaMessageFromIpaToEim
tr_cancelSessionRequestEsipa := {
	cancelSessionRequestEsipa := {
		transactionId := ?,
		cancelSessionResponse := {
			cancelSessionResponseOk := tr_cancelSessionResponseOk
		}
	}
}
template (value) EsipaMessageFromIpaToEim
ts_cancelSessionRequestEsipa := {
	cancelSessionRequestEsipa := {
		transactionId := 'AABBCC'O,
		cancelSessionResponse := {
			cancelSessionResponseOk := ts_cancelSessionResponseOk
		}
	}
}

/* GSMA SGP.32, section 6.3.2.5 */
template (present) EsipaMessageFromEimToIpa
tr_cancelSessionResponseEsipa := {
	cancelSessionResponseEsipa := {
		cancelSessionOk := {
			/* This function has no output data */
		}
	}
}
template (value) EsipaMessageFromEimToIpa
ts_cancelSessionResponseEsipa := {
	cancelSessionResponseEsipa := {
		cancelSessionOk := {
			/* This function has no output data */
		}
	}
}

/* GSMA SGP.32, section 6.3.2.3 */
template (present) EsipaMessageFromIpaToEim
tr_getBoundProfilePackageRequestEsipa := {
	getBoundProfilePackageRequestEsipa := {
		transactionId := ?,
		prepareDownloadResponse := {
			downloadResponseOk := tr_prepareDownloadResponseOk
		}
	}
}
template (value) EsipaMessageFromIpaToEim
ts_getBoundProfilePackageRequestEsipa := {
	getBoundProfilePackageRequestEsipa := {
		transactionId := 'ABCDEF'O,
		prepareDownloadResponse := {
			downloadResponseOk := ts_prepareDownloadResponseOk
		}
	}
}

/* GSMA SGP.32, section 6.3.2.3 */
template (present) EsipaMessageFromEimToIpa
tr_getBoundProfilePackageResponseEsipa := {
	getBoundProfilePackageResponseEsipa := {
		getBoundProfilePackageOkEsipa := {
			transactionId := *,
			boundProfilePackage := tr_boundProfilePackage
		}
	}
}
template (value) EsipaMessageFromEimToIpa
ts_getBoundProfilePackageResponseEsipa := {
	getBoundProfilePackageResponseEsipa := {
		getBoundProfilePackageOkEsipa := {
			transactionId := omit,
			boundProfilePackage := ts_boundProfilePackage
		}
	}
}

/* GSMA SGP.32, section 5.9.1 */
template (present) EuiccPackageResult
tr_euiccPackageResult := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := ?
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResult := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEim",
			counterValue := 333,
			transactionId := omit,
			seqNumber := 1234,
			euiccResult := {
				{
					enableResult := 0
				}
			}
		},
		euiccSignEPR := 'AABBCCDDEEFF'O
	}
}

/* GSMA SGP.32, section 6.3.2.4 */
template (present) EsipaMessageFromIpaToEim
tr_handleNotificationEsipa_prfleInstRslt := {
	handleNotificationEsipa := {
		pendingNotification := {
			profileInstallationResult := {
				profileInstallationResultData := tr_profileInstallationResultData,
				euiccSignPIR := ?
			}
		}
	}
}
template (value) EsipaMessageFromIpaToEim
ts_handleNotificationEsipa_prfleInstRslt := {
	handleNotificationEsipa := {
		pendingNotification := {
			profileInstallationResult := {
				profileInstallationResultData := ts_profileInstallationResultData,
				euiccSignPIR := '00112233445566778899AABBCCDDEEFF'O
			}
		}
	}
}

/* GSMA SGP.32, section 6.3.2.7 */
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_enablePsmo := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					enableResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_enablePsmo := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					enableResult := 0
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_disablePsmo := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					disableResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_disablePsmo := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					disableResult := 0
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_deletePsmo := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					deleteResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_deletePsmo := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					deleteResult := 0
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_disableAndDeletePsmo := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					disableResult := ?
				},
				{
					deleteResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_disableAndDeletePsmo := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					disableResult := 0
				},
				{
					deleteResult := 0
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_listProfileInfo := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					listProfileInfoResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_listProfileInfo := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					listProfileInfoResult := {
						profileInfoListOk := {
							{
								iccid := omit,
								isdpAid := omit,
								profileState := omit,
								profileNickname := omit,
								serviceProviderName := omit,
								profileName := "testme",
								iconType := omit,
								icon := omit,
								profileClass := omit,
								notificationConfigurationInfo := omit,
								profileOwner := omit,
								dpProprietaryData := omit,
								profilePolicyRules := omit,
								serviceSpecificDataStoredInEuicc := omit
							}
						}
					}
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_getRAT := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					getRATResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_getRAT := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					getRATResult := {
						{
							pprIds := '000'B,
							allowedOperators := {
								{
									mccMnc := '001F01'O,
									gid1 := omit,
									gid2 := omit
								}
							},
							pprFlags := '0'B
						}
					}
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_configureAutoEnable := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					configureAutoEnableResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_configureAutoEnable := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					configureAutoEnableResult := 0
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_addEim := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					addEimResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_addEim := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					addEimResult := {
						associationToken := 123
					}
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_deleteEim := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					deleteEimResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_deleteEim := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					deleteEimResult := 0
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_updateEim := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					updateEimResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_updateEim := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					updateEimResult := 0
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EuiccPackageResult
tr_euiccPackageResultSigned_listEim := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := ?,
			counterValue := ?,
			transactionId := *,
			seqNumber := ?,
			euiccResult := {
				{
					listEimResult := ?
				}
			}
		},
		euiccSignEPR := ?
	}
}
template (value) EuiccPackageResult
ts_euiccPackageResultSigned_listEim := {
	euiccPackageResultSigned := {
		euiccPackageResultDataSigned := {
			eimId := "myEIM",
			counterValue := 1,
			transactionId := omit,
			seqNumber := 123,
			euiccResult := {
				{
					listEimResult := {
						eimIdList := {
							{
								eimId := "eIM",
								eimIdType := omit
							}
						}
					}
				}
			}
		},
		euiccSignEPR := '00112233445566778899AABBCCDDEEFF'O
	}
}
template (present) EsipaMessageFromIpaToEim
tr_provideEimPackageResult_ePRAndNotif(template (present) EuiccPackageResult euiccPackageResult := tr_euiccPackageResultSigned_enablePsmo) := {
	provideEimPackageResult := {
		ePRAndNotifications := {
			euiccPackageResult := euiccPackageResult,
			notificationList := ?
		}
	}
}
template (value) EsipaMessageFromIpaToEim
ts_provideEimPackageResult_ePRAndNotif(template (value) EuiccPackageResult euiccPackageResult := ts_euiccPackageResultSigned_enablePsmo) := {
	provideEimPackageResult := {
		ePRAndNotifications := {
			euiccPackageResult := euiccPackageResult,
			notificationList := {
				notificationList := { }
			}
		}
	}
}

template (present) EsipaMessageFromEimToIpa
tr_provideEimPackageResultResponse_eimAck := {
	provideEimPackageResultResponse := {
		eimAcknowledgements := *
	}
}
template (value) EsipaMessageFromEimToIpa
ts_provideEimPackageResultResponse_eimAck(template (value) EimAcknowledgements eimAcknowledgements := {}) := {
	provideEimPackageResultResponse := {
		eimAcknowledgements := eimAcknowledgements
	}
}

/* GSMA SGP.32, section 2.11.1.2 */
template (present) GetCertsResponse
tr_getCertsResponse := {
	certs := {
		eumCertificate := ?,
		euiccCertificate := ?
	}
}
template (value) GetCertsResponse
ts_getCertsResponse := {
	certs := {
		eumCertificate := ts_cert_s_sm_dpauth_nist,
		euiccCertificate := ts_cert_eum_nist
	}
}

/* GSMA SGP.32, section 5.9.18 */
template (present) EimConfigurationData
tr_eimConfigurationData := {
	eimId := ?,
	eimFqdn := *,
	eimIdType := *,
	counterValue := *,
	associationToken := *,
	eimPublicKeyData := *,
	trustedPublicKeyDataTls := *,
	eimSupportedProtocol := *,
	euiccCiPKId := *
}
template (value) EimConfigurationData
ts_eimConfigurationData(template (omit) charstring eimFqdn := omit) := {
	eimId := "myEIM",
	eimFqdn := eimFqdn,
	eimIdType := omit,
	counterValue := omit,
	associationToken := 123,
	eimPublicKeyData := omit,
	trustedPublicKeyDataTls := omit,
	eimSupportedProtocol := omit,
	euiccCiPKId := omit
}
template (present) GetEimConfigurationDataResponse
tr_getEimConfigurationDataResponse := {
	eimConfigurationDataList := ?
}
template (value) GetEimConfigurationDataResponse
ts_getEimConfigurationDataResponse(template (value) charstring eimFqdn := "127.0.0.1") := {
	eimConfigurationDataList := {
		ts_eimConfigurationData(eimFqdn)
	}
}

/* GSMA SGP.32, section 5.9.4 */
template (present) AddInitialEimResponse
tr_addInitialEimResponse := {
	addInitialEimOk := ?
}
template (value) AddInitialEimResponse
ts_addInitialEimResponse := {
	addInitialEimOk := {
		{
			addOk := NULL
		}
	}
}

/* GSMA SGP.32, section 5.9.16 */
template (present) ProfileRollbackRequest
tr_profileRollbackRequest := {
	refreshFlag := ?
}
template (value) ProfileRollbackRequest
ts_profileRollbackRequest := {
	refreshFlag := false
}
template (present) ProfileRollbackResponse
tr_profileRollbackResponse := {
	cmdResult := ?,
	eUICCPackageResult := ?
}
template (value) ProfileRollbackResponse
ts_profileRollbackResponse := {
	cmdResult := 0,
	eUICCPackageResult := {
		euiccPackageResultSigned := {
			euiccPackageResultDataSigned := {
				eimId := "myEim",
				counterValue := 333,
				transactionId := omit,
				seqNumber := 1234,
				euiccResult := {
					{
						enableResult := 0
					},
					{
						rollbackResult := 0
					}
				}
			},
			euiccSignEPR := 'AABBCCDDEEFF'O
		}
	}
}


}
