-- Section 2.1.3
-- ASN1START
SGP32Definitions {joint-iso-itu-t(2) international-organizations(23) gsma(146) rsp(1) asn1modules(1) sgp32v1(31)}
DEFINITIONS
AUTOMATIC TAGS
EXTENSIBILITY IMPLIED ::=
BEGIN

IMPORTS Certificate, SubjectPublicKeyInfo
FROM PKIX1Explicit88 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit(18)}
SubjectKeyIdentifier FROM PKIX1Implicit88 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit(19)}

ProfileInfo, EuiccSigned1, CancelSessionReason, RetrieveNotificationsListResponse,
ServerSigned1, RspCapability, Iccid, TransactionId, ProfileInfoListRequest,
ProfileInfoListResponse, RulesAuthorisationTable, EUICCInfo1, DeviceInfo,
VersionType, UICCCapability, PprIds,
CertificationDataObject, Octet1, Octet16, Octet32, PrepareDownloadResponse,
PrepareDownloadResponseOk, PrepareDownloadResponseError,
AuthenticateServerResponse, AuthenticateResponseOk, AuthenticateResponseError,
CtxParams1, ProfileInstallationResult, ProfileInstallationResultData,
OtherSignedNotification, EuiccSignPIR, ErrorResult, NotificationMetadata,
CancelSessionResponse, CancelSessionResponseOk,
StoreMetadataRequest, SmdpSigned2, BoundProfilePackage, NotificationEvent
FROM RSPDefinitions {joint-iso-itu-t(2) international-organizations(23) gsma(146) rsp(1) asn1modules(1) sgp22v2(2)};
-- ASN1STOP

-- Section 2.11.1.1
-- ASN1START
EuiccPackageRequest ::= [81] SEQUENCE { -- Tag ' BF51', #SupportedForPsmoV1.0.0#
  euiccPackageSigned EuiccPackageSigned,
  eimSignature [APPLICATION 55] OCTET STRING -- Tag '5F37'
}
EuiccPackageSigned ::= SEQUENCE {
  eimId [0] UTF8String,
  eidValue [APPLICATION 26] Octet16, -- Tag '5A'
  counterValue [1] INTEGER,
  transactionId [2] TransactionId OPTIONAL,
  euiccPackage EuiccPackage
}
EuiccPackage ::= CHOICE {
  psmoList SEQUENCE OF Psmo, -- #SupportedForPsmoV1.0.0#
  ecoList SEQUENCE OF Eco -- #SupportedForEcoV1.0.0#
}
-- ASN1STOP


-- Section 2.11.1.1.1
-- ASN1START
EimConfigurationData ::= SEQUENCE {
  eimId [0] UTF8String, -- eimId of eIM
  eimFqdn [1] UTF8String OPTIONAL, -- FQDN of eIM
  eimIdType [2] EimIdType OPTIONAL,
  counterValue [3] INTEGER OPTIONAL, -- initial counterValue for the eIM
  associationToken [4] INTEGER OPTIONAL,
  eimPublicKeyData [5] CHOICE {
    eimPublicKey SubjectPublicKeyInfo, -- public key of eIM, used for eUICC Package signature verification, where the encoding follows X.509 standard
    eimCertificate Certificate -- certificate of eIM, used for eUICC Package signature verification, where the encoding follows X.509 standard
  } OPTIONAL,
  trustedPublicKeyDataTls [6] CHOICE {
    trustedEimPkTls SubjectPublicKeyInfo, -- public key of eIM, used for TLS or DTLS, where the encoding follows X.509 standard
    trustedCertificateTls Certificate -- either the certificate of eIM, used for (D)TLS, or the certificate of the CA, where the encoding follows X.509 standard
  } OPTIONAL,
  eimSupportedProtocol [7] EimSupportedProtocol OPTIONAL,
  euiccCiPKId [8] SubjectKeyIdentifier OPTIONAL -- CI Public Key Identifier supported on the eUICC for signature creation
}
EimIdType ::= INTEGER {
  eimIdTypeOid(1),
  eimIdTypeFqdn(2),
  eimIdTypeProprietary(3)
}
  EimSupportedProtocol ::= BIT STRING {
  eimRetrieveHttps(0),
  eimRetrieveCoaps(1),
  eimInjectHttps(2),
  eimInjectCoaps(3),
  eimProprietary(4)
}
-- ASN1STOP

-- Section 2.11.1.1.2
-- ASN1START
Eco ::= CHOICE {
  addEim [8] EimConfigurationData, -- for eIM configuration data see 2.11.1
  deleteEim [9] SEQUENCE {eimId [0] UTF8String},
  updateEim [10] EimConfigurationData,
  listEim [11] SEQUENCE {}
}
-- ASN1STOP

-- Section 2.11.1.1.3
-- ASN1START
Psmo ::= CHOICE {
  enable [3] SEQUENCE {
    iccid [APPLICATION 26] Iccid,
    rollbackFlag NULL OPTIONAL
  },
  disable [4] SEQUENCE {iccid [APPLICATION 26] Iccid},
  delete [5] SEQUENCE {iccid [APPLICATION 26] Iccid},
  listProfileInfo [45] ProfileInfoListRequest, -- Tag 'BF2D'
  getRAT [6] SEQUENCE {},
  configureAutoEnable [7] SEQUENCE {
    autoEnableFlag [0] NULL OPTIONAL,
    smdpOid [1] OBJECT IDENTIFIER OPTIONAL,
    smdpAddress [2] UTF8String OPTIONAL
  }
}
-- ASN1STOP


-- Section 2.11.1.2
-- ASN1START
IpaEuiccDataRequest ::= [82] SEQUENCE { -- Tag BF52
  tagList [APPLICATION 28] OCTET STRING, -- Tag '5C'
  euiccCiPKId SubjectKeyIdentifier OPTIONAL, -- CI Public Key Identifier supported on the eUICC for signature creation
  searchCriteria [1] CHOICE {
    seqNumber [0] INTEGER,
    profileManagementOperation [1] NotificationEvent,
    euiccPackageResults [2] NULL
  } OPTIONAL
}
-- ASN1STOP

-- Section 2.11.1.3
-- ASN1START
ProfileDownloadTriggerRequest ::= [84] SEQUENCE { -- Tag 'BF54'
  profileDownloadData [0] ProfileDownloadData OPTIONAL,
  eimTransactionId [2] TransactionId OPTIONAL
}
ProfileDownloadData ::= CHOICE {
  activationCode [0] UTF8String (SIZE(0..255)),
  contactDefaultSmdp [1] NULL,
  contactSmds [2] SEQUENCE {
    smdsAddress UTF8String OPTIONAL
  }
}
-- ASN1STOP

-- Section 2.11.1.4
-- ASN1START
EimAcknowledgements ::= [83] SEQUENCE OF SequenceNumber -- Tag BF53
SequenceNumber ::= [0] INTEGER
-- ASN1STOP


-- Section 2.11.2.1
-- ASN1START
EuiccPackageResult ::= [81] CHOICE { -- Tag 'BF51' #SupportedForPsmoV1.0.0#
  euiccPackageResultSigned EuiccPackageResultSigned,
  euiccPackageErrorSigned EuiccPackageErrorSigned,
  euiccPackageErrorUnsigned EuiccPackageErrorUnsigned
}
EuiccPackageResultSigned ::= SEQUENCE {
  euiccPackageResultDataSigned EuiccPackageResultDataSigned,
  euiccSignEPR [APPLICATION 55] OCTET STRING -- Tag '5F37'
}
EuiccPackageResultDataSigned ::= SEQUENCE { -- #SupportedForPsmoV1.0.0#
  eimId [0] UTF8String,
  counterValue [1] INTEGER,
  transactionId[2] TransactionId OPTIONAL,
  seqNumber [3] INTEGER,
  euiccResult SEQUENCE OF EuiccResultData
}
EuiccResultData ::= CHOICE {
  enableResult [3] EnableProfileResult,
  disableResult [4] DisableProfileResult,
  deleteResult [5] DeleteProfileResult,
  listProfileInfoResult [45] SGP32-ProfileInfoListResponse,
  getRATResult [6] RulesAuthorisationTable, -- see SGP.22
  configureAutoEnableResult [7] ConfigureAutoEnableResult,
  addEimResult [8] AddEimResult,
  deleteEimResult [9] DeleteEimResult,
  updateEimResult [10] UpdateEimResult,
  listEimResult [11] ListEimResult,
  rollbackResult [12] RollbackProfileResult,
  processingTerminated INTEGER {
    resultSizeOverflow(1),
    unknownOrDamagedCommand(2),
    interruption(3),
    undefinedError(127)
  }
}
EuiccPackageErrorSigned ::= SEQUENCE {
  euiccPackageErrorDataSigned EuiccPackageErrorDataSigned,
  euiccSignEPE [APPLICATION 55] OCTET STRING -- Tag '5F37'
}
EuiccPackageErrorDataSigned ::= SEQUENCE {
  eimId [0] UTF8String,
  counterValue [1] INTEGER,
  transactionId [2] TransactionId OPTIONAL,
  euiccPackageErrorCode EuiccPackageErrorCode
}
EuiccPackageErrorCode ::= INTEGER { invalidEid(3), replayError(4), counterValueOutOfRange(6), sizeOverflow(15), undefinedError(127)}
EuiccPackageErrorUnsigned ::= SEQUENCE {
  eimId [0] UTF8String,
  associationToken [4] INTEGER OPTIONAL
}
ConfigureAutoEnableResult ::= INTEGER {
  ok(0),
  insufficientMemory(1),
  commandError(7),
  undefinedError(127)
}
EnableProfileResult ::= INTEGER {
  ok(0),
  iccidOrAidNotFound(1),
  profileNotInDisabledState(2),
  undefinedError(127)
}
DisableProfileResult ::= INTEGER {
  ok(0),
  iccidOrAidNotFound(1),
  profileNotInEnabledState(2),
  undefinedError(127)
}
DeleteProfileResult ::= INTEGER {
  ok(0),
  iccidOrAidNotFound(1),
  profileNotInDisabledState(2),
  undefinedError(127)
}
SGP32-ProfileInfoListResponse ::= [45] CHOICE {
  profileInfoListOk SEQUENCE OF ProfileInfo, -- see SGP.22
  profileInfoListError SGP32-ProfileInfoListError
}
SGP32-ProfileInfoListError ::= INTEGER {
  incorrectInputValues(1),
  profileChangeOngoing (11),
  undefinedError(127)
}
RollbackProfileResult ::= INTEGER {
  ok(0),
  undefinedError(127)
}
AddEimResult ::= CHOICE {
  associationToken [4] INTEGER,
  addEimResultCode INTEGER {
    ok(0),
    insufficientMemory(1),
    ciPKUnknown(3),
    invalidAssociationToken(5),
    counterValueOutOfRange(6),
    commandError(7),
    undefinedError(127)
  }
}
DeleteEimResult ::= INTEGER {
  ok(0),
  eimNotFound(1),
  lastEimDeleted(2), -- no eIM Configuration Data available in eUICC,
  commandError(7),
  undefinedError(127)
}
UpdateEimResult ::= INTEGER {
  ok(0),
  eimNotFound (1),
  ciPKUnknown(3),
  counterValueOutOfRange(6),
  commandError(7),
  undefinedError(127)
}
ListEimResult ::= CHOICE {
  eimIdList SEQUENCE OF EimIdInfo,
  listEimError INTEGER {
    commandError(7),
    undefinedError(127)
  }
}
EimIdInfo ::= SEQUENCE {
  eimId [0] UTF8String,
  eimIdType [4] EimIdType  OPTIONAL -- present in case of eimIdTypeOid and eimIdTypeFqdn
}
-- ASN1STOP

-- Section 2.11.2.2
-- ASN1START
IpaEuiccDataResponse ::= [82] CHOICE { -- Tag 'BF52'
  ipaEuiccData IpaEuiccData,
  ipaEuiccDataError INTEGER {
    incorrectTagList (1),
    euiccCiPKIdNotFound(5),
    undefinedError(127)
  }
}
IpaEuiccData ::= SEQUENCE {
  defaultSmdpAddress [0] UTF8String OPTIONAL, -- Tag '80'
  euiccInfo1 [32] EUICCInfo1 OPTIONAL, -- Tag 'BF20'
  euiccInfo2 [34] SGP32-EUICCInfo2 OPTIONAL, -- Tag 'BF22'
  rootSmdsAddress [3] UTF8String OPTIONAL, -- Tag '83'
  associationToken [4] INTEGER OPTIONAL, -- Tag '84'
  eumCertificate [5] Certificate OPTIONAL, -- Tag 'A5'
  euiccCertificate [6] Certificate OPTIONAL, -- Tag 'A6'
  ipaCapabilities [8] IpaCapabilities OPTIONAL, -- Tag '88'
  deviceInfo [9] DeviceInfo OPTIONAL, -- Tag 'A9'
  notificationsList [43] SGP32-RetrieveNotificationsListResponse OPTIONAL -- Tag 'BF2B'.
}
-- ASN1STOP

-- Section 2.11.2.3
-- ASN1START
ProfileDownloadTriggerResult ::= [84] SEQUENCE { -- tag 'BF54'
  eimTransactionId [2] TransactionId OPTIONAL,
  profileDownloadTriggerResultData CHOICE {
    profileInstallationResult [55] SGP32-ProfileInstallationResult, -- see SGP.22 [4]
    profileDownloadError SEQUENCE {
      errorResponse OCTET STRING OPTIONAL
    }
  }
}
-- ASN1STOP

-- Section 4.1
-- ASN1START
IpaCapabilities ::= SEQUENCE {
  ipaFeatures [0] BIT STRING {
    directRspServerCommunication (0),
    indirectRspServerCommunication (1),
    eimDownloadDataHandling (2),
    eimCtxParams1Generation (3),
    eimProfileMetadataVerification (4),
    minimizeEsipaBytes (5)
  },
  ipaSupportedProtocols [1] BIT STRING {
    ipaRetrieveHttps(0),
    ipaRetrieveCoaps(1),
    ipaInjectHttps(2),
    ipaInjectCoaps(3),
    ipaProprietary(4)
  } OPTIONAL
}
-- ASN1STOP

-- Section 5.9.2
-- ASN1START
SGP32-EUICCInfo2 ::= [34] SEQUENCE { -- Tag 'BF22'
  profileVersion [1] VersionType, -- Base eUICC Profile package version supported
  svn [2] VersionType, -- GSMA SGP.22 version supported (SVN)referenced by SGP.32
  euiccFirmwareVer [3] VersionType, -- eUICC Firmware version
  extCardResource [4] OCTET STRING, -- Extended Card Resource Information according to ETSI TS 102 226
  uiccCapability [5] UICCCapability,
  ts102241Version [6] VersionType OPTIONAL,
  globalplatformVersion [7] VersionType OPTIONAL,
  rspCapability [8] RspCapability,
  euiccCiPKIdListForVerification [9] SEQUENCE OF SubjectKeyIdentifier, -- List of CI Public Key Identifiers supported on the eUICC for signature verification
  euiccCiPKIdListForSigning [10] SEQUENCE OF SubjectKeyIdentifier, -- List of CI Public Key Identifier supported on the eUICC for signature creation
  euiccCategory [11] INTEGER {
    other(0),
    basicEuicc(1),
    mediumEuicc(2),
    contactlessEuicc(3)
  } OPTIONAL,
  forbiddenProfilePolicyRules [25] PprIds OPTIONAL, -- Tag '99'
  ppVersion VersionType, -- Protection Profile version
  sasAcreditationNumber UTF8String (SIZE(0..64)),
  certificationDataObject [12] CertificationDataObject OPTIONAL,
  treProperties [13] BIT STRING {
    isDiscrete(0),
    isIntegrated(1),
    usesRemoteMemory(2) -- refers to the usage of remote memory protected by the Remote Memory Protection Function described in SGP.21 [4]
  } OPTIONAL,
  treProductReference [14] UTF8String OPTIONAL, -- Platform_Label as defined in GlobalPlatform DLOA specification [57]
  additionalEuiccProfilePackageVersions [15] SEQUENCE OF VersionType OPTIONAL,
  ipaMode [16] IpaMode OPTIONAL, -- active IPA, mandatory within SGP.32
  rfu2 [17] SEQUENCE OF SubjectKeyIdentifier OPTIONAL, -- not used by this version of SGP.32.
  rfu3 [18] OCTET STRING (SIZE(0..32)) OPTIONAL,
  -- not used by this version of SGP.32
  rfu4 [19] VersionType OPTIONAL, -- not used by this version of SGP.32
  iotSpecificInfo [20] IoTSpecificInfo OPTIONAL -- mandatory within SGP.32
}
-- Definition of IoTSpecificInfo
IoTSpecificInfo ::= SEQUENCE {
iotVersion [0] SEQUENCE OF VersionType -- SGP.32 version(s) supported by the eUICC, at least one must be present
}
-- Definition of IpaMode
IpaMode ::= INTEGER {
ipad (0), -- IPAd is active
ipae (1) -- IPAe is active
}
-- ASN1STOP

-- Section 5.9.4
-- ASN1START
AddInitialEimRequest ::= [87] SEQUENCE { -- Tag 'BF57'
  eimConfigurationDataList [0] SEQUENCE OF EimConfigurationData
}
-- ASN1STOP

-- Section 5.9.4
-- ASN1START
AddInitialEimResponse ::= [87] CHOICE { -- Tag 'BF57'
  addInitialEimOk SEQUENCE OF CHOICE {
    associationToken [4] INTEGER,
    addOk NULL
  },
  addInitialEimError INTEGER {
    insufficientMemory(1),
    unsignedEimConfigDisallowed(2),
    ciPKUnknown(3),
    invalidAssociationToken(5),
    counterValueOutOfRange(6),
    undefinedError(127)
  }
}
-- ASN1STOP


-- Section 5.9.10
-- ASN1START
GetCertsRequest ::= [86] SEQUENCE { -- Tag 'BF56'
  euiccCiPKId SubjectKeyIdentifier OPTIONAL -- CI Public Key Identifier supported on the eUICC for signature creation
}
-- ASN1STOP
-- ASN1START
GetCertsResponse ::= [86] CHOICE { -- Tag 'BF56'
  certs SEQUENCE {
    eumCertificate [5] Certificate, -- Tag 'A5'
    euiccCertificate [6] Certificate -- Tag 'A6'
  },
  getCertsError INTEGER {invalidCiPKId(1), undfinedError(127)}
}
-- ASN1STOP

-- Section 5.9.11 (no ASN1START/STOP)!
SGP32-RetrieveNotificationsListRequest ::= [43] SEQUENCE { -- Tag 'BF2B'
  searchCriteria CHOICE {
    seqNumber [0] INTEGER,
    profileManagementOperation [1] NotificationEvent,
    euiccPackageResults [2] NULL
  } OPTIONAL
}

-- ASN1START
SGP32-RetrieveNotificationsListResponse ::= [43] CHOICE { -- Tag 'BF2B'
  notificationList SEQUENCE OF SGP32-PendingNotification,
  notificationsListResultError INTEGER { undefinedError(127)},
  euiccPackageResultList SEQUENCE OF EuiccPackageResult,
  notificationAndEprList SEQUENCE {
    notificationList SEQUENCE OF SGP32-PendingNotification,
    euiccPackageResultList SEQUENCE OF EuiccPackageResult
  }
}
-- ASN1STOP

-- Section 5.9.15
-- ASN1START
EnableUsingDDRequest ::= [90] SEQUENCE { -- Tag 'BF5A'
}
-- ASN1STOP
-- ASN1START
EnableUsingDDResponse ::= [90] SEQUENCE { -- Tag 'BF5A'
  enableUsingDDResult [0] INTEGER {
    ok(0),
    autoEnableNotAvailable(1),
    noSessionContext(4),
    undefinedError(127)
  }
}
-- ASN1STOP

-- Section 5.9.16
-- ASN1START
ProfileRollbackRequest ::= [88] SEQUENCE { -- Tag 'BF58'
  refreshFlag BOOLEAN -- indicating whether REFRESH is required
}
-- ASN1STOP
-- ASN1START
ProfileRollbackResponse ::= [88] SEQUENCE { -- Tag 'BF58'
  cmdResult INTEGER {
    ok(0),
    rollbackNotAllowed(1), -- Usage of rollback was not granted by the eIM
    catBusy(5),
    commandError(7),
    undefinedError(127)
  },
  eUICCPackageResult [81] EuiccPackageResult OPTIONAL
}
-- ASN1STOP

-- Section 5.9.17
-- ASN1START
ConfigureAutoProfileEnablingRequest ::= [89] SEQUENCE { -- Tag 'BF59'
  autoEnableFlag [0] NULL OPTIONAL,
  smdpOid [1] OBJECT IDENTIFIER OPTIONAL,
  smdpAddress [2] UTF8String OPTIONAL
}
-- ASN1STOP
-- ASN1START
ConfigureAutoProfileEnablingResponse ::= [89] SEQUENCE { -- Tag 'BF59'
  configAutoEnableResult [0] INTEGER {
    ok(0),
    insufficientMemory(1),
    unsignedAutoEnableConfigDisallowed(2),
    undefinedError(127)
  }
}
-- ASN1STOP

-- Section 5.9.18
-- ASN1START
GetEimConfigurationDataRequest ::= [85] SEQUENCE { -- Tag 'BF55'
}
-- ASN1STOP
-- ASN1START
GetEimConfigurationDataResponse ::= [85] SEQUENCE { -- Tag 'BF55'
  eimConfigurationDataList [0] SEQUENCE OF EimConfigurationData
}
-- ASN1STOP

-- Section 5.14.2
-- ASN1START
SGP32-PrepareDownloadResponse ::= [33] CHOICE { -- Tag 'BF21'
  downloadResponseOk PrepareDownloadResponseOk,
  downloadResponseError PrepareDownloadResponseError,
  compactDownloadResponseOk CompactPrepareDownloadResponseOk
}
CompactPrepareDownloadResponseOk ::= SEQUENCE {
  compactEuiccSigned2 CompactEuiccSigned2, -- Compact version of EuiccSigned2
  euiccSignature2 [APPLICATION 55] OCTET STRING -- tag '5F37' signature on EuiccSigned2
}
CompactEuiccSigned2 ::= SEQUENCE {
  euiccOtpk [APPLICATION 73] OCTET STRING OPTIONAL, -- otPK.EUICC.ECKA, tag '5F49' euiccOtpk is always present except if bppEuiccOtpk was chosen by the eUICC
  hashCc Octet32 OPTIONAL -- Hash of confirmation code, if not received from Eim
}
-- ASN1STOP

-- Section 5.14.3
-- ASN1START
SGP32-AuthenticateServerResponse ::= [56] CHOICE { -- Tag 'BF38'
  authenticateResponseOk AuthenticateResponseOk,
  authenticateResponseError AuthenticateResponseError,
  compactAuthenticateResponseOk CompactAuthenticateResponseOk
}
CompactAuthenticateResponseOk ::= SEQUENCE {
  signedData CHOICE {
    euiccSigned1 EuiccSigned1,
    compactEuiccSigned1 [0] CompactEuiccSigned1 -- Compact version of EuiccSigned1
  },
  euiccSignature1 [APPLICATION 55] OCTET STRING, -- tag 5F37 signature on EuiccSigned1
  euiccCertificate [1] Certificate OPTIONAL, -- eUICC Certificate (CERT.EUICC.ECDSA)
  eumCertificate [2] Certificate OPTIONAL -- EUM Certificate (CERT.EUM.ECDSA)
}
CompactEuiccSigned1 ::= SEQUENCE {
  extCardResource [4] OCTET STRING, -- Extended Card Resource Information according to ETSI TS 102 226 extracted from euiccInfo2,
  ctxParams1 [2] CtxParams1 OPTIONAL -- ctxParams1 may be left out by IPA if eIM ctxParams1 was received from the eIM
}
-- ASN1STOP

-- Section 5.14.7
-- ASN1START
SGP32-PendingNotification ::= CHOICE {
  profileInstallationResult [55] SGP32-ProfileInstallationResult, -- tag 'BF37'
  otherSignedNotification OtherSignedNotification,
  compactProfileInstallationResult [0] CompactProfileInstallationResult,
  compactOtherSignedNotification [1] CompactOtherSignedNotification
}
SGP32-ProfileInstallationResult ::= [55] SEQUENCE { -- Tag 'BF37'
  profileInstallationResultData [39] ProfileInstallationResultData,
  euiccSignPIR EuiccSignPIR
}
CompactProfileInstallationResult ::= SEQUENCE {
  compactProfileInstallationResultData [0] CompactProfileInstallationResultData,
  euiccSignPIR EuiccSignPIR
}
CompactProfileInstallationResultData ::= SEQUENCE {
  transactionId [0] TransactionId, -- The TransactionID generated by the SM-DP+
  seqNumber INTEGER,
  iccidPresent BOOLEAN DEFAULT TRUE,
  compactFinalResult [2] CHOICE {
    compactSuccessResult CompactSuccessResult,
    errorResult ErrorResult
  }
}
CompactSuccessResult ::= SEQUENCE {
  compactAid [APPLICATION 15] OCTET STRING (SIZE (2)), -- Byte 14 and 15 of ISD-P AID
  simaResponse OCTET STRING OPTIONAL -- MUST be present if the simaResponse value (EUICCResponse) is different from the 9-byte value ‘30 07 A0 05 30 03 80 01 00’ representing success
}
CompactOtherSignedNotification ::= SEQUENCE {
  tbsOtherNotification NotificationMetadata,
  euiccNotificationSignature [APPLICATION 55] OCTET STRING -- eUICC signature of tbsOtherNotification, Tag '5F37'
}
-- ASN1STOP

-- Section 5.14.8
-- ASN1START
SGP32-CancelSessionResponse ::= [65] CHOICE { -- Tag 'BF41'
  cancelSessionResponseOk CancelSessionResponseOk,
  cancelSessionResponseError INTEGER {invalidTransactionId(5), undefinedError(127)},
  compactCancelSessionResponseOk CompactCancelSessionResponseOk
}
CompactCancelSessionResponseOk ::= SEQUENCE {
  compactEuiccCancelSessionSigned CompactEuiccCancelSessionSigned, -- Compact version of euiccCancelSessionSigned
  euiccCancelSessionSignature [APPLICATION 55] OCTET STRING -- tag 5F37 signature on euiccCancelSessionSigned
}
CompactEuiccCancelSessionSigned ::= SEQUENCE {
  reason CancelSessionReason OPTIONAL
}
-- ASN1STOP

-- Section 6.3.1
-- ASN1START
EsipaMessageFromIpaToEim ::= CHOICE {
  initiateAuthenticationRequestEsipa [57] InitiateAuthenticationRequestEsipa, -- Tag 'BF39'
  authenticateClientRequestEsipa [59] AuthenticateClientRequestEsipa, -- Tag 'BF3B'
  getBoundProfilePackageRequestEsipa [58] GetBoundProfilePackageRequestEsipa, -- Tag 'BF3A'
  cancelSessionRequestEsipa [65] CancelSessionRequestEsipa, -- Tag 'BF41'
  handleNotificationEsipa [61] HandleNotificationEsipa, -- Tag 'BF3D'
  transferEimPackageResponse [78] TransferEimPackageResponse, -- Tag 'BF4E'
  getEimPackageRequest [79] GetEimPackageRequest, -- Tag 'BF4F'
  provideEimPackageResult [80] ProvideEimPackageResult -- Tag 'BF50'
}
EsipaMessageFromEimToIpa ::= CHOICE {
  initiateAuthenticationResponseEsipa [57] InitiateAuthenticationResponseEsipa, -- Tag 'BF39'
  authenticateClientResponseEsipa [59] AuthenticateClientResponseEsipa, -- Tag 'BF3B'
  getBoundProfilePackageResponseEsipa [58] GetBoundProfilePackageResponseEsipa, -- Tag 'BF3A'
  cancelSessionResponseEsipa [65] CancelSessionResponseEsipa, -- Tag 'BF41'
  transferEimPackageRequest [78] TransferEimPackageRequest, -- Tag 'BF4E'
  getEimPackageResponse [79] GetEimPackageResponse, -- Tag 'BF4F'
  provideEimPackageResultResponse [80] ProvideEimPackageResultResponse -- Tag 'BF50'
}
-- ASN1STOP

-- Section 6.3.2
-- ASN1START
InitiateAuthenticationRequestEsipa ::= [57] SEQUENCE { -- Tag 'BF39'
  euiccChallenge [1] Octet16, -- random eUICC challenge
  smdpAddress [3] UTF8String OPTIONAL,
  euiccInfo1 EUICCInfo1 OPTIONAL
}
InitiateAuthenticationResponseEsipa ::= [57] CHOICE { -- Tag 'BF39'
  initiateAuthenticationOkEsipa InitiateAuthenticationOkEsipa,
  initiateAuthenticationErrorEsipa INTEGER {
  invalidDpAddress(1),
  euiccVersionNotSupportedByDp(2),
  ciPKIdNotSupported(3),
  smdpAddressMismatch(50),
  smdpOidMismatch(51)
}
}
InitiateAuthenticationOkEsipa ::= SEQUENCE {
  transactionId [0] TransactionId OPTIONAL, -- The TransactionID generated by the SM-DP+
  serverSigned1 ServerSigned1, -- Signed information
  serverSignature1 [APPLICATION 55] OCTET STRING, -- Server Sign1, Tag '5F37'
  euiccCiPKIdToBeUsed OCTET STRING, -- Key identifier (possibly truncated) of the CI Public Key to be used as required by ES10b.AuthenticateServer
  serverCertificate Certificate,
  matchingId UTF8String OPTIONAL,
  ctxParams1 [2] CtxParams1 OPTIONAL
}
-- ASN1STOP

-- Section 6.3.2.2
-- ASN1START
AuthenticateClientRequestEsipa ::= [59] SEQUENCE { -- Tag 'BF3B'
  transactionId [0] TransactionId,
  authenticateServerResponse [56] SGP32-AuthenticateServerResponse -- This is the response from ES10b.AuthenticateServer, possibly in compact format
}
AuthenticateClientResponseEsipa ::= [59] CHOICE { -- Tag 'BF3B'
  authenticateClientOkDPEsipa AuthenticateClientOkDPEsipa,
  authenticateClientOkDSEsipa AuthenticateClientOkDSEsipa,
  authenticateClientErrorEsipa INTEGER {
    eumCertificateInvalid(1),
    eumCertificateExpired(2),
    euiccCertificateInvalid(3),
    euiccCertificateExpired(4),
    euiccSignatureInvalid(5),
    matchingIdRefused(6),
    eidMismatch(7),
    noEligibleProfile(8),
    ciPKUnknown(9),
    invalidTransactionId(10),
    insufficientMemory(11),
    pprNotAllowed(50),
    eventIdUnknown(56),
    undefinedError(127)
  }
}
AuthenticateClientOkDPEsipa ::= SEQUENCE {
  transactionId [0] TransactionId OPTIONAL,
  profileMetaData [37] StoreMetadataRequest OPTIONAL,
  smdpSigned2 SmdpSigned2, -- Signed information
  smdpSignature2 [APPLICATION 55] OCTET STRING, -- Tag '5F37'
  smdpCertificate Certificate, -- CERT.DPpb.ECDSA
  hashCc Octet32 OPTIONAL -- Hash of confirmation code
}
AuthenticateClientOkDSEsipa ::= SEQUENCE {
  transactionId [0] TransactionId,
  profileDownloadTrigger [84] ProfileDownloadTriggerRequest OPTIONAL -- Tag 'BF54'
}
-- ASN1STOP

-- Section 6.3.2.3
-- ASN1START
GetBoundProfilePackageRequestEsipa ::= [58] SEQUENCE { -- Tag 'BF3A'
  transactionId [0] TransactionId,
  prepareDownloadResponse [33] SGP32-PrepareDownloadResponse -- This is the response from ES10b.PrepareDownload, possibly in compact format
}
GetBoundProfilePackageResponseEsipa ::= [58] CHOICE { -- Tag 'BF3A'
  getBoundProfilePackageOkEsipa GetBoundProfilePackageOkEsipa,
  getBoundProfilePackageErrorEsipa INTEGER {
    euiccSignatureInvalid(1),
    confirmationCodeMissing(2),
    confirmationCodeRefused(3),
    confirmationCodeRetriesExceeded(4),
    bppRebindingRefused(5),
    downloadOrderExpired(6),
    profileMetadataMismatch(50),
    invalidTransactionId(95),
    undefinedError(127)
  }
}
GetBoundProfilePackageOkEsipa ::= SEQUENCE {
  transactionId [0] TransactionId OPTIONAL,
  boundProfilePackage [54] BoundProfilePackage
}
-- ASN1STOP

-- Section 6.3.2.4
-- ASN1START
HandleNotificationEsipa ::= [61] CHOICE { -- Tag 'BF3D'
  pendingNotification SGP32-PendingNotification, -- A Notification to be delivered to a Notification Receiver, possibly in compact format
  provideEimPackageResult ProvideEimPackageResult
}
-- ASN1STOP

-- Section 6.3.2.5
-- ASN1START
CancelSessionRequestEsipa ::= [65] SEQUENCE { -- Tag 'BF41'
  transactionId TransactionId,
  cancelSessionResponse SGP32-CancelSessionResponse -- This is the response from ES10b.  CancelSession function, possibly in compact format
}
CancelSessionResponseEsipa ::= [65] CHOICE { -- Tag 'BF41'
  cancelSessionOk SGP32-CancelSessionOk,
  cancelSessionError INTEGER {
    invalidTransactionId(1),
    euiccSignatureInvalid(2),
    undefinedError(127)
  }
}
SGP32-CancelSessionOk ::= SEQUENCE { -- This function has no output data
}
-- ASN1STOP


-- Section 6.3.2.6
-- ASN1START
GetEimPackageRequest ::= [79] SEQUENCE { -- Tag 'BF4F'
  eidValue [APPLICATION 26] Octet16, -- Tag '5A'
  notifyStateChange [0] NULL OPTIONAL, -- Notification to the eIM that it should update its information about the eUICC (e.g. list of profiles, profile states...)
  rPLMN [1] OCTET STRING (SIZE(3)) OPTIONAL -- MCC and MNC of the last registered PLMN, coded as defined in 3GPP TS 24.008 [22]
}
GetEimPackageResponse ::= [79] CHOICE { -- Tag 'BF4F'
  euiccPackageRequest [81] EuiccPackageRequest, -- Tag 'BF51'
  ipaEuiccDataRequest [82] IpaEuiccDataRequest, -- Tag 'BF52'
  profileDownloadTriggerRequest [84] ProfileDownloadTriggerRequest, -- Tag 'BF54'
  eimPackageError INTEGER {
    noEimPackageAvailable(1),
    undefinedError(127)
  }
}
-- ASN1STOP

-- Section 6.3.2.7
-- ASN1START
ProvideEimPackageResult ::= [80] CHOICE { -- Tag 'BF50'
  euiccPackageResult [81] EuiccPackageResult, -- Tag 'BF51'
  ePRAndNotifications SEQUENCE {
    euiccPackageResult [81] EuiccPackageResult, -- Tag 'BF51'
    notificationList [43] SGP32-RetrieveNotificationsListResponse -- Tag 'BF2B'
  },
  ipaEuiccDataResponse [82] IpaEuiccDataResponse, -- Tag 'BF52'
  profileDownloadTriggerResult [84] ProfileDownloadTriggerResult, -- Tag 'BF54'
  eimPackageError INTEGER {
    invalidPackageFormat(1),
    unknownPackage(2),
    undefinedError(127)
  }
}
ProvideEimPackageResultResponse ::= [80] SEQUENCE { -- Tag 'BF50'
  eimAcknowledgements [83] EimAcknowledgements OPTIONAL -- Tag 'BF53'
}
-- ASN1STOP

-- Section 6.3.3.1
-- ASN1START
TransferEimPackageRequest ::= [78] CHOICE { -- Tag 'BF4E'
  euiccPackageRequest [81] EuiccPackageRequest, -- Tag 'BF51'
  ipaEuiccDataRequest [82] IpaEuiccDataRequest, -- Tag 'BF52'
  eimAcknowledgements [83] EimAcknowledgements, -- Tag 'BF53'
  profileDownloadTriggerRequest [84] ProfileDownloadTriggerRequest -- Tag 'BF54'
}
TransferEimPackageResponse ::= [78] CHOICE { -- Tag 'BF4E'
  euiccPackageResult [81] EuiccPackageResult, -- Tag 'BF51'
  ePRAndNotifications SEQUENCE {
    euiccPackageResult [81] EuiccPackageResult, -- Tag 'BF51'
    notificationList [43] SGP32-RetrieveNotificationsListResponse -- Tag 'BF2B'
  },
  ipaEuiccDataResponse [82] IpaEuiccDataResponse, -- Tag 'BF52'
  eimPackageReceived NULL,
  eimPackageError INTEGER {
    invalidPackageFormat(1),
    unknownPackage(2),
    undefinedError(127)
  }
}
-- ASN1STOP


END