library: add SGP.32 and SGP.22 ASN.1 specification, encoder and templates

This patch adds the eUICC related SGP.32 and SGP.22 ASN.1 specification
along with templates and related encoder/decoders (_EncDec.cc).

The collection of templates is not comprehensive, which means that there
are only templates available for a subset needed to implement testcases
for an IPAd.

Related: SYS#6563
Change-Id: I9df8caa98aeb6953a738660a758c92249832d780
This commit is contained in:
Philipp Maier 2024-03-04 10:32:55 +01:00
parent fca4e4f5d5
commit 08902cf05d
17 changed files with 7456 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,619 @@
PKIX1Explicit88 { iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit(18) }
DEFINITIONS EXPLICIT TAGS ::=
BEGIN
-- EXPORTS ALL --
-- IMPORTS NONE --
-- UNIVERSAL Types defined in 1993 and 1998 ASN.1
-- and required by this specification
-- UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING
-- UniversalString is defined in ASN.1:1993
-- BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING
-- BMPString is the subtype of UniversalString and models
-- the Basic Multilingual Plane of ISO/IEC/ITU 10646-1
-- UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING
-- The content of this type conforms to RFC 2279.
-- PKIX specific OIDs
id-pkix OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) }
-- PKIX arcs
id-pe OBJECT IDENTIFIER ::= { id-pkix 1 }
-- arc for private certificate extensions
id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
-- arc for policy qualifier types
id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
-- arc for extended key purpose OIDS
id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
-- arc for access descriptors
-- policyQualifierIds for Internet policy qualifiers
id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 }
-- OID for CPS qualifier
id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 }
-- OID for user notice qualifier
-- access descriptor definitions
id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
id-ad-timeStamping OBJECT IDENTIFIER ::= { id-ad 3 }
id-ad-caRepository OBJECT IDENTIFIER ::= { id-ad 5 }
-- attribute data types
Attribute ::= SEQUENCE {
type AttributeType,
values SET OF AttributeValue }
-- at least one value is required
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
-- suggested naming attributes: Definition of the following
-- information object set may be augmented to meet local
-- requirements. Note that deleting members of the set may
-- prevent interoperability with conforming implementations.
-- presented in pairs: the AttributeType followed by the
-- type definition for the corresponding AttributeValue
--Arc for standard naming attributes
id-at OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 4 }
-- Naming attributes of type X520name
id-at-name AttributeType ::= { id-at 41 }
id-at-surname AttributeType ::= { id-at 4 }
id-at-givenName AttributeType ::= { id-at 42 }
id-at-initials AttributeType ::= { id-at 43 }
id-at-generationQualifier AttributeType ::= { id-at 44 }
X520name ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-name)),
printableString PrintableString (SIZE (1..ub-name)),
universalString UniversalString (SIZE (1..ub-name)),
utf8String UTF8String (SIZE (1..ub-name)),
bmpString BMPString (SIZE (1..ub-name)) }
-- Naming attributes of type X520CommonName
id-at-commonName AttributeType ::= { id-at 3 }
X520CommonName ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-common-name)),
printableString PrintableString (SIZE (1..ub-common-name)),
universalString UniversalString (SIZE (1..ub-common-name)),
utf8String UTF8String (SIZE (1..ub-common-name)),
bmpString BMPString (SIZE (1..ub-common-name)) }
-- Naming attributes of type X520LocalityName
id-at-localityName AttributeType ::= { id-at 7 }
X520LocalityName ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-locality-name)),
printableString PrintableString (SIZE (1..ub-locality-name)),
universalString UniversalString (SIZE (1..ub-locality-name)),
utf8String UTF8String (SIZE (1..ub-locality-name)),
bmpString BMPString (SIZE (1..ub-locality-name)) }
-- Naming attributes of type X520StateOrProvinceName
id-at-stateOrProvinceName AttributeType ::= { id-at 8 }
X520StateOrProvinceName ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-state-name)),
printableString PrintableString (SIZE (1..ub-state-name)),
universalString UniversalString (SIZE (1..ub-state-name)),
utf8String UTF8String (SIZE (1..ub-state-name)),
bmpString BMPString (SIZE(1..ub-state-name)) }
-- Naming attributes of type X520OrganizationName
id-at-organizationName AttributeType ::= { id-at 10 }
X520OrganizationName ::= CHOICE {
teletexString TeletexString
(SIZE (1..ub-organization-name)),
printableString PrintableString
(SIZE (1..ub-organization-name)),
universalString UniversalString
(SIZE (1..ub-organization-name)),
utf8String UTF8String
(SIZE (1..ub-organization-name)),
bmpString BMPString
(SIZE (1..ub-organization-name)) }
-- Naming attributes of type X520OrganizationalUnitName
id-at-organizationalUnitName AttributeType ::= { id-at 11 }
X520OrganizationalUnitName ::= CHOICE {
teletexString TeletexString
(SIZE (1..ub-organizational-unit-name)),
printableString PrintableString
(SIZE (1..ub-organizational-unit-name)),
universalString UniversalString
(SIZE (1..ub-organizational-unit-name)),
utf8String UTF8String
(SIZE (1..ub-organizational-unit-name)),
bmpString BMPString
(SIZE (1..ub-organizational-unit-name)) }
-- Naming attributes of type X520Title
id-at-title AttributeType ::= { id-at 12 }
X520Title ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-title)),
printableString PrintableString (SIZE (1..ub-title)),
universalString UniversalString (SIZE (1..ub-title)),
utf8String UTF8String (SIZE (1..ub-title)),
bmpString BMPString (SIZE (1..ub-title)) }
-- Naming attributes of type X520dnQualifier
id-at-dnQualifier AttributeType ::= { id-at 46 }
X520dnQualifier ::= PrintableString
-- Naming attributes of type X520countryName (digraph from IS 3166)
id-at-countryName AttributeType ::= { id-at 6 }
X520countryName ::= PrintableString (SIZE (2))
-- Naming attributes of type X520SerialNumber
id-at-serialNumber AttributeType ::= { id-at 5 }
X520SerialNumber ::= PrintableString (SIZE (1..ub-serial-number))
-- Naming attributes of type X520Pseudonym
id-at-pseudonym AttributeType ::= { id-at 65 }
X520Pseudonym ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-pseudonym)),
printableString PrintableString (SIZE (1..ub-pseudonym)),
universalString UniversalString (SIZE (1..ub-pseudonym)),
utf8String UTF8String (SIZE (1..ub-pseudonym)),
bmpString BMPString (SIZE (1..ub-pseudonym)) }
-- Naming attributes of type DomainComponent (from RFC 2247)
id-domainComponent AttributeType ::=
{ 0 9 2342 19200300 100 1 25 }
DomainComponent ::= IA5String
-- Legacy attributes
pkcs-9 OBJECT IDENTIFIER ::=
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 }
id-emailAddress AttributeType ::= { pkcs-9 1 }
EmailAddress ::= IA5String (SIZE (1..ub-emailaddress-length))
-- naming data types --
Name ::= CHOICE { -- only one possibility for now --
rdnSequence RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
DistinguishedName ::= RDNSequence
RelativeDistinguishedName ::=
SET SIZE (1 .. MAX) OF AttributeTypeAndValue
-- Directory string type --
DirectoryString ::= CHOICE {
teletexString TeletexString (SIZE (1..MAX)),
printableString PrintableString (SIZE (1..MAX)),
universalString UniversalString (SIZE (1..MAX)),
utf8String UTF8String (SIZE (1..MAX)),
bmpString BMPString (SIZE (1..MAX)) }
-- certificate and CRL specific structures begin here
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
extensions [3] Extensions OPTIONAL
-- If present, version MUST be v3 -- }
Version ::= INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber ::= INTEGER (0..999999999999999999999999999999999999) -- apply a range to suitable to force asn1c to uses INTEGER_t
Validity ::= SEQUENCE {
notBefore Time,
notAfter Time }
Time ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime }
UniqueIdentifier ::= BIT STRING
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING }
-- CRL structures
CertificateList ::= SEQUENCE {
tbsCertList TBSCertList,
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING }
TBSCertList ::= SEQUENCE {
version Version OPTIONAL,
-- if present, MUST be v2
signature AlgorithmIdentifier,
issuer Name,
thisUpdate Time,
nextUpdate Time OPTIONAL,
revokedCertificates SEQUENCE OF SEQUENCE {
userCertificate CertificateSerialNumber,
revocationDate Time,
crlEntryExtensions Extensions OPTIONAL
-- if present, MUST be v2
} OPTIONAL,
crlExtensions [0] Extensions OPTIONAL }
-- if present, MUST be v2
-- Version, Time, CertificateSerialNumber, and Extensions were
-- defined earlier for use in the certificate structure
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
-- contains a value of the type
-- registered for use with the
-- algorithm object identifier value
-- X.400 address syntax starts here
ORAddress ::= SEQUENCE {
built-in-standard-attributes BuiltInStandardAttributes,
built-in-domain-defined-attributes
BuiltInDomainDefinedAttributes OPTIONAL,
-- see also teletex-domain-defined-attributes
extension-attributes ExtensionAttributes OPTIONAL }
-- Built-in Standard Attributes
BuiltInStandardAttributes ::= SEQUENCE {
country-name CountryName OPTIONAL,
administration-domain-name AdministrationDomainName OPTIONAL,
network-address [0] IMPLICIT NetworkAddress OPTIONAL,
-- see also extended-network-address
terminal-identifier [1] IMPLICIT TerminalIdentifier OPTIONAL,
private-domain-name [2] PrivateDomainName OPTIONAL,
organization-name [3] IMPLICIT OrganizationName OPTIONAL,
-- see also teletex-organization-name
numeric-user-identifier [4] IMPLICIT NumericUserIdentifier
OPTIONAL,
personal-name [5] IMPLICIT PersonalName OPTIONAL,
-- see also teletex-personal-name
organizational-unit-names [6] IMPLICIT OrganizationalUnitNames
OPTIONAL }
-- see also teletex-organizational-unit-names
CountryName ::= [APPLICATION 1] CHOICE {
x121-dcc-code NumericString
(SIZE (ub-country-name-numeric-length)),
iso-3166-alpha2-code PrintableString
(SIZE (ub-country-name-alpha-length)) }
AdministrationDomainName ::= [APPLICATION 2] CHOICE {
numeric NumericString (SIZE (0..ub-domain-name-length)),
printable PrintableString (SIZE (0..ub-domain-name-length)) }
NetworkAddress ::= X121Address -- see also extended-network-address
X121Address ::= NumericString (SIZE (1..ub-x121-address-length))
TerminalIdentifier ::= PrintableString (SIZE
(1..ub-terminal-id-length))
PrivateDomainName ::= CHOICE {
numeric NumericString (SIZE (1..ub-domain-name-length)),
printable PrintableString (SIZE (1..ub-domain-name-length)) }
OrganizationName ::= PrintableString
(SIZE (1..ub-organization-name-length))
-- see also teletex-organization-name
NumericUserIdentifier ::= NumericString
(SIZE (1..ub-numeric-user-id-length))
PersonalName ::= SET {
surname [0] IMPLICIT PrintableString
(SIZE (1..ub-surname-length)),
given-name [1] IMPLICIT PrintableString
(SIZE (1..ub-given-name-length)) OPTIONAL,
initials [2] IMPLICIT PrintableString
(SIZE (1..ub-initials-length)) OPTIONAL,
generation-qualifier [3] IMPLICIT PrintableString
(SIZE (1..ub-generation-qualifier-length))
OPTIONAL }
-- see also teletex-personal-name
OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
OF OrganizationalUnitName
-- see also teletex-organizational-unit-names
OrganizationalUnitName ::= PrintableString (SIZE
(1..ub-organizational-unit-name-length))
-- Built-in Domain-defined Attributes
BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
(1..ub-domain-defined-attributes) OF
BuiltInDomainDefinedAttribute
BuiltInDomainDefinedAttribute ::= SEQUENCE {
type PrintableString (SIZE
(1..ub-domain-defined-attribute-type-length)),
value PrintableString (SIZE
(1..ub-domain-defined-attribute-value-length)) }
-- Extension Attributes
ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF
ExtensionAttribute
ExtensionAttribute ::= SEQUENCE {
extension-attribute-type [0] IMPLICIT INTEGER
(0..ub-extension-attributes),
extension-attribute-value [1]
ANY DEFINED BY extension-attribute-type }
-- Extension types and attribute values
common-name INTEGER ::= 1
CommonName ::= PrintableString (SIZE (1..ub-common-name-length))
teletex-common-name INTEGER ::= 2
TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length))
teletex-organization-name INTEGER ::= 3
TeletexOrganizationName ::=
TeletexString (SIZE (1..ub-organization-name-length))
teletex-personal-name INTEGER ::= 4
TeletexPersonalName ::= SET {
surname [0] IMPLICIT TeletexString
(SIZE (1..ub-surname-length)),
given-name [1] IMPLICIT TeletexString
(SIZE (1..ub-given-name-length)) OPTIONAL,
initials [2] IMPLICIT TeletexString
(SIZE (1..ub-initials-length)) OPTIONAL,
generation-qualifier [3] IMPLICIT TeletexString
(SIZE (1..ub-generation-qualifier-length))
OPTIONAL }
teletex-organizational-unit-names INTEGER ::= 5
TeletexOrganizationalUnitNames ::= SEQUENCE SIZE
(1..ub-organizational-units) OF TeletexOrganizationalUnitName
TeletexOrganizationalUnitName ::= TeletexString
(SIZE (1..ub-organizational-unit-name-length))
pds-name INTEGER ::= 7
PDSName ::= PrintableString (SIZE (1..ub-pds-name-length))
physical-delivery-country-name INTEGER ::= 8
PhysicalDeliveryCountryName ::= CHOICE {
x121-dcc-code NumericString (SIZE
(ub-country-name-numeric-length)),
iso-3166-alpha2-code PrintableString
(SIZE (ub-country-name-alpha-length)) }
postal-code INTEGER ::= 9
PostalCode ::= CHOICE {
numeric-code NumericString (SIZE (1..ub-postal-code-length)),
printable-code PrintableString (SIZE (1..ub-postal-code-length)) }
physical-delivery-office-name INTEGER ::= 10
PhysicalDeliveryOfficeName ::= PDSParameter
physical-delivery-office-number INTEGER ::= 11
PhysicalDeliveryOfficeNumber ::= PDSParameter
extension-OR-address-components INTEGER ::= 12
ExtensionORAddressComponents ::= PDSParameter
physical-delivery-personal-name INTEGER ::= 13
PhysicalDeliveryPersonalName ::= PDSParameter
physical-delivery-organization-name INTEGER ::= 14
PhysicalDeliveryOrganizationName ::= PDSParameter
extension-physical-delivery-address-components INTEGER ::= 15
ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter
unformatted-postal-address INTEGER ::= 16
UnformattedPostalAddress ::= SET {
printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines)
OF PrintableString (SIZE (1..ub-pds-parameter-length))
OPTIONAL,
teletex-string TeletexString
(SIZE (1..ub-unformatted-address-length)) OPTIONAL }
street-address INTEGER ::= 17
StreetAddress ::= PDSParameter
post-office-box-address INTEGER ::= 18
PostOfficeBoxAddress ::= PDSParameter
poste-restante-address INTEGER ::= 19
PosteRestanteAddress ::= PDSParameter
unique-postal-name INTEGER ::= 20
UniquePostalName ::= PDSParameter
local-postal-attributes INTEGER ::= 21
LocalPostalAttributes ::= PDSParameter
PDSParameter ::= SET {
printable-string PrintableString
(SIZE(1..ub-pds-parameter-length)) OPTIONAL,
teletex-string TeletexString
(SIZE(1..ub-pds-parameter-length)) OPTIONAL }
extended-network-address INTEGER ::= 22
ExtendedNetworkAddress ::= CHOICE {
e163-4-address SEQUENCE {
number [0] IMPLICIT NumericString
(SIZE (1..ub-e163-4-number-length)),
sub-address [1] IMPLICIT NumericString
(SIZE (1..ub-e163-4-sub-address-length))
OPTIONAL },
psap-address [0] IMPLICIT PresentationAddress }
PresentationAddress ::= SEQUENCE {
pSelector [0] EXPLICIT OCTET STRING OPTIONAL,
sSelector [1] EXPLICIT OCTET STRING OPTIONAL,
tSelector [2] EXPLICIT OCTET STRING OPTIONAL,
nAddresses [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING }
terminal-type INTEGER ::= 23
TerminalType ::= INTEGER {
telex (3),
teletex (4),
g3-facsimile (5),
g4-facsimile (6),
ia5-terminal (7),
videotex (8) }
-- Extension Domain-defined Attributes
teletex-domain-defined-attributes INTEGER ::= 6
TeletexDomainDefinedAttributes ::= SEQUENCE SIZE
(1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute
TeletexDomainDefinedAttribute ::= SEQUENCE {
type TeletexString
(SIZE (1..ub-domain-defined-attribute-type-length)),
value TeletexString
(SIZE (1..ub-domain-defined-attribute-value-length)) }
-- specifications of Upper Bounds MUST be regarded as mandatory
-- from Annex B of ITU-T X.411 Reference Definition of MTS Parameter
-- Upper Bounds
-- Upper Bounds
ub-name INTEGER ::= 32768
ub-common-name INTEGER ::= 64
ub-locality-name INTEGER ::= 128
ub-state-name INTEGER ::= 128
ub-organization-name INTEGER ::= 64
ub-organizational-unit-name INTEGER ::= 64
ub-title INTEGER ::= 64
ub-serial-number INTEGER ::= 64
ub-match INTEGER ::= 128
ub-emailaddress-length INTEGER ::= 255
ub-common-name-length INTEGER ::= 64
ub-country-name-alpha-length INTEGER ::= 2
ub-country-name-numeric-length INTEGER ::= 3
ub-domain-defined-attributes INTEGER ::= 4
ub-domain-defined-attribute-type-length INTEGER ::= 8
ub-domain-defined-attribute-value-length INTEGER ::= 128
ub-domain-name-length INTEGER ::= 16
ub-extension-attributes INTEGER ::= 256
ub-e163-4-number-length INTEGER ::= 15
ub-e163-4-sub-address-length INTEGER ::= 40
ub-generation-qualifier-length INTEGER ::= 3
ub-given-name-length INTEGER ::= 16
ub-initials-length INTEGER ::= 5
ub-integer-options INTEGER ::= 256
ub-numeric-user-id-length INTEGER ::= 32
ub-organization-name-length INTEGER ::= 64
ub-organizational-unit-name-length INTEGER ::= 32
ub-organizational-units INTEGER ::= 4
ub-pds-name-length INTEGER ::= 16
ub-pds-parameter-length INTEGER ::= 30
ub-pds-physical-address-lines INTEGER ::= 6
ub-postal-code-length INTEGER ::= 16
ub-pseudonym INTEGER ::= 128
ub-surname-length INTEGER ::= 40
ub-terminal-id-length INTEGER ::= 24
ub-unformatted-address-length INTEGER ::= 180
ub-x121-address-length INTEGER ::= 16
-- Note - upper bounds on string types, such as TeletexString, are
-- measured in characters. Excepting PrintableString or IA5String, a
-- significantly greater number of octets will be required to hold
-- such a value. As a minimum, 16 octets, or twice the specified
-- upper bound, whichever is the larger, should be allowed for
-- TeletexString. For UTF8String or UniversalString at least four
-- times the upper bound should be allowed.
END

View File

@ -0,0 +1,213 @@
#include "PKIX1Explicit88.hh"
namespace PKIX1Explicit88__Types {
using namespace PKIX1Explicit88;
TTCN_Module PKIX1Explicit88__EncDec("PKIX1Explicit88_EncDec", __DATE__, __TIME__);
OCTETSTRING enc__X520name(const X520name &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520name_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520name dec__X520name(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520name msg;
buf.put_os(stream);
msg.decode(X520name_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__X520CommonName(const X520CommonName &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520CommonName_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520CommonName dec__X520CommonName(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520CommonName msg;
buf.put_os(stream);
msg.decode(X520CommonName_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__X520LocalityName(const X520LocalityName &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520LocalityName_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520LocalityName dec__X520LocalityName(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520LocalityName msg;
buf.put_os(stream);
msg.decode(X520LocalityName_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__X520StateOrProvinceName(const X520StateOrProvinceName &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520StateOrProvinceName_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520StateOrProvinceName dec__X520StateOrProvinceName(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520StateOrProvinceName msg;
buf.put_os(stream);
msg.decode(X520StateOrProvinceName_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__X520OrganizationName(const X520OrganizationName &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520OrganizationName_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520OrganizationName dec__X520OrganizationName(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520OrganizationName msg;
buf.put_os(stream);
msg.decode(X520OrganizationName_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__X520OrganizationalUnitName(const X520OrganizationalUnitName &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520OrganizationalUnitName_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520OrganizationalUnitName dec__X520OrganizationalUnitName(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520OrganizationalUnitName msg;
buf.put_os(stream);
msg.decode(X520OrganizationalUnitName_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__X520Title(const X520Title &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520Title_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520Title dec__X520Title(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520Title msg;
buf.put_os(stream);
msg.decode(X520Title_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__X520dnQualifier(const X520dnQualifier &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520dnQualifier_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520dnQualifier dec__X520dnQualifier(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520dnQualifier msg;
buf.put_os(stream);
msg.decode(X520dnQualifier_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__X520countryName(const X520countryName &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520countryName_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520countryName dec__X520countryName(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520countryName msg;
buf.put_os(stream);
msg.decode(X520countryName_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__X520SerialNumber(const X520SerialNumber &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520SerialNumber_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520SerialNumber dec__X520SerialNumber(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520SerialNumber msg;
buf.put_os(stream);
msg.decode(X520SerialNumber_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__X520Pseudonym(const X520Pseudonym &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(X520Pseudonym_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
X520Pseudonym dec__X520Pseudonym(const OCTETSTRING &stream) {
TTCN_Buffer buf;
X520Pseudonym msg;
buf.put_os(stream);
msg.decode(X520Pseudonym_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__Certificate(const Certificate &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(Certificate_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
Certificate dec__Certificate(const OCTETSTRING &stream) {
TTCN_Buffer buf;
Certificate msg;
buf.put_os(stream);
msg.decode(Certificate_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,42 @@
module PKIX1Explicit88_Types {
import from PKIX1Explicit88 all;
import from Native_Functions all;
external function dec_X520name(in octetstring stream) return X520name;
external function enc_X520name(in X520name msg) return octetstring;
external function dec_X520CommonName(in octetstring stream) return X520CommonName;
external function enc_X520CommonName(in X520CommonName msg) return octetstring;
external function dec_X520LocalityName(in octetstring stream) return X520LocalityName;
external function enc_X520LocalityName(in X520LocalityName msg) return octetstring;
external function dec_X520StateOrProvinceName(in octetstring stream) return X520StateOrProvinceName;
external function enc_X520StateOrProvinceName(in X520StateOrProvinceName msg) return octetstring;
external function dec_X520OrganizationName(in octetstring stream) return X520OrganizationName;
external function enc_X520OrganizationName(in X520OrganizationName msg) return octetstring;
external function dec_X520OrganizationalUnitName(in octetstring stream) return X520OrganizationalUnitName;
external function enc_X520OrganizationalUnitName(in X520OrganizationalUnitName msg) return octetstring;
external function dec_X520Title(in octetstring stream) return X520Title;
external function enc_X520Title(in X520Title msg) return octetstring;
external function dec_X520dnQualifier(in octetstring stream) return X520dnQualifier;
external function enc_X520dnQualifier(in X520dnQualifier msg) return octetstring;
external function dec_X520countryName(in octetstring stream) return X520countryName;
external function enc_X520countryName(in X520countryName msg) return octetstring;
external function dec_X520SerialNumber(in octetstring stream) return X520SerialNumber;
external function enc_X520SerialNumber(in X520SerialNumber msg) return octetstring;
external function dec_X520Pseudonym(in octetstring stream) return X520Pseudonym;
external function enc_X520Pseudonym(in X520Pseudonym msg) return octetstring;
external function dec_Certificate(in octetstring stream) return Certificate;
external function enc_Certificate(in Certificate msg) return octetstring;
}

View File

@ -0,0 +1,387 @@
--
-- ASN.1 module found by ./crfc2asn1.pl in rfc3280.txt at line 5850
--
PKIX1Implicit88 { iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit(19) }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
-- EXPORTS ALL --
IMPORTS
id-pe, id-kp, id-qt-unotice, id-qt-cps,
ORAddress, Name, RelativeDistinguishedName,
CertificateSerialNumber, Attribute, DirectoryString
FROM PKIX1Explicit88 { iso(1) identified-organization(3)
dod(6) internet(1) security(5) mechanisms(5) pkix(7)
id-mod(0) id-pkix1-explicit(18) };
-- ISO arc for standard certificate and CRL extensions
id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29}
-- authority key identifier OID and syntax
id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 }
AuthorityKeyIdentifier ::= SEQUENCE {
keyIdentifier [0] KeyIdentifier OPTIONAL,
authorityCertIssuer [1] GeneralNames OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
-- authorityCertIssuer and authorityCertSerialNumber MUST both
-- be present or both be absent
KeyIdentifier ::= OCTET STRING
-- subject key identifier OID and syntax
id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 }
SubjectKeyIdentifier ::= KeyIdentifier
-- key usage extension OID and syntax
id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }
KeyUsage ::= BIT STRING {
digitalSignature (0),
nonRepudiation (1),
keyEncipherment (2),
dataEncipherment (3),
keyAgreement (4),
keyCertSign (5),
cRLSign (6),
encipherOnly (7),
decipherOnly (8) }
-- private key usage period extension OID and syntax
id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 }
PrivateKeyUsagePeriod ::= SEQUENCE {
notBefore [0] GeneralizedTime OPTIONAL,
notAfter [1] GeneralizedTime OPTIONAL }
-- either notBefore or notAfter MUST be present
-- certificate policies extension OID and syntax
id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 }
anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 }
CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
PolicyInformation ::= SEQUENCE {
policyIdentifier CertPolicyId,
policyQualifiers SEQUENCE SIZE (1..MAX) OF
PolicyQualifierInfo OPTIONAL }
CertPolicyId ::= OBJECT IDENTIFIER
PolicyQualifierInfo ::= SEQUENCE {
policyQualifierId PolicyQualifierId,
qualifier ANY DEFINED BY policyQualifierId }
-- Implementations that recognize additional policy qualifiers MUST
-- augment the following definition for PolicyQualifierId
PolicyQualifierId ::=
OBJECT IDENTIFIER -- ( id-qt-cps | id-qt-unotice )
-- CPS pointer qualifier
CPSuri ::= IA5String
-- user notice qualifier
UserNotice ::= SEQUENCE {
noticeRef NoticeReference OPTIONAL,
explicitText DisplayText OPTIONAL}
NoticeReference ::= SEQUENCE {
organization DisplayText,
noticeNumbers SEQUENCE OF INTEGER }
DisplayText ::= CHOICE {
ia5String IA5String (SIZE (1..200)),
visibleString VisibleString (SIZE (1..200)),
bmpString BMPString (SIZE (1..200)),
utf8String UTF8String (SIZE (1..200)) }
-- policy mapping extension OID and syntax
id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 }
PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
issuerDomainPolicy CertPolicyId,
subjectDomainPolicy CertPolicyId }
-- subject alternative name extension OID and syntax
id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 }
SubjectAltName ::= GeneralNames
GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
GeneralName ::= CHOICE {
otherName [0] AnotherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER }
-- AnotherName replaces OTHER-NAME ::= TYPE-IDENTIFIER, as
-- TYPE-IDENTIFIER is not supported in the '88 ASN.1 syntax
AnotherName ::= SEQUENCE {
type-id OBJECT IDENTIFIER,
value [0] EXPLICIT ANY DEFINED BY type-id }
EDIPartyName ::= SEQUENCE {
nameAssigner [0] DirectoryString OPTIONAL,
partyName [1] DirectoryString }
-- issuer alternative name extension OID and syntax
id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 }
IssuerAltName ::= GeneralNames
id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 }
SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
-- basic constraints extension OID and syntax
id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 }
BasicConstraints ::= SEQUENCE {
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER (0..MAX) OPTIONAL }
-- name constraints extension OID and syntax
id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 }
NameConstraints ::= SEQUENCE {
permittedSubtrees [0] GeneralSubtrees OPTIONAL,
excludedSubtrees [1] GeneralSubtrees OPTIONAL }
GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
GeneralSubtree ::= SEQUENCE {
base GeneralName,
minimum [0] BaseDistance DEFAULT 0,
maximum [1] BaseDistance OPTIONAL }
BaseDistance ::= INTEGER (0..MAX)
-- policy constraints extension OID and syntax
id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 }
PolicyConstraints ::= SEQUENCE {
requireExplicitPolicy [0] SkipCerts OPTIONAL,
inhibitPolicyMapping [1] SkipCerts OPTIONAL }
SkipCerts ::= INTEGER (0..MAX)
-- CRL distribution points extension OID and syntax
id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31}
CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
DistributionPoint ::= SEQUENCE {
distributionPoint [0] DistributionPointName OPTIONAL,
reasons [1] ReasonFlags OPTIONAL,
cRLIssuer [2] GeneralNames OPTIONAL }
DistributionPointName ::= CHOICE {
fullName [0] GeneralNames,
nameRelativeToCRLIssuer [1] RelativeDistinguishedName }
ReasonFlags ::= BIT STRING {
unused (0),
keyCompromise (1),
cACompromise (2),
affiliationChanged (3),
superseded (4),
cessationOfOperation (5),
certificateHold (6),
privilegeWithdrawn (7),
aACompromise (8) }
-- extended key usage extension OID and syntax
id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37}
ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
KeyPurposeId ::= OBJECT IDENTIFIER
-- permit unspecified key uses
anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 }
-- extended key purpose OIDs
id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 }
id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 }
id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 }
id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 }
id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 }
id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 }
-- inhibit any policy OID and syntax
id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 }
InhibitAnyPolicy ::= SkipCerts
-- freshest (delta)CRL extension OID and syntax
id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 }
FreshestCRL ::= CRLDistributionPoints
-- authority info access
id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
AuthorityInfoAccessSyntax ::=
SEQUENCE SIZE (1..MAX) OF AccessDescription
AccessDescription ::= SEQUENCE {
accessMethod OBJECT IDENTIFIER,
accessLocation GeneralName }
-- subject info access
id-pe-subjectInfoAccess OBJECT IDENTIFIER ::= { id-pe 11 }
SubjectInfoAccessSyntax ::=
SEQUENCE SIZE (1..MAX) OF AccessDescription
-- CRL number extension OID and syntax
id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }
CRLNumber ::= INTEGER (0..MAX)
-- issuing distribution point extension OID and syntax
id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }
IssuingDistributionPoint ::= SEQUENCE {
distributionPoint [0] DistributionPointName OPTIONAL,
onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE,
onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE,
onlySomeReasons [3] ReasonFlags OPTIONAL,
indirectCRL [4] BOOLEAN DEFAULT FALSE,
onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }
BaseCRLNumber ::= CRLNumber
-- CRL reasons extension OID and syntax
id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 }
CRLReason ::= ENUMERATED {
unspecified (0),
keyCompromise (1),
cACompromise (2),
affiliationChanged (3),
superseded (4),
cessationOfOperation (5),
certificateHold (6),
removeFromCRL (8),
privilegeWithdrawn (9),
aACompromise (10) }
-- certificate issuer CRL entry extension OID and syntax
id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 }
CertificateIssuer ::= GeneralNames
-- hold instruction extension OID and syntax
id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 }
HoldInstructionCode ::= OBJECT IDENTIFIER
-- ANSI x9 holdinstructions
-- ANSI x9 arc holdinstruction arc
holdInstruction OBJECT IDENTIFIER ::=
{joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2}
-- ANSI X9 holdinstructions referenced by this standard
id-holdinstruction-none OBJECT IDENTIFIER ::=
{holdInstruction 1} -- deprecated
id-holdinstruction-callissuer OBJECT IDENTIFIER ::=
{holdInstruction 2}
id-holdinstruction-reject OBJECT IDENTIFIER ::=
{holdInstruction 3}
-- invalidity date CRL entry extension OID and syntax
id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 }
InvalidityDate ::= GeneralizedTime
END

View File

@ -0,0 +1,26 @@
#include "PKIX1Implicit88.hh"
namespace PKIX1Implicit88__Types {
using namespace PKIX1Implicit88;
TTCN_Module PKIX1Implicit88__EncDec("PKIX1Implicit88_EncDec", __DATE__, __TIME__);
OCTETSTRING enc__SubjectKeyIdentifier(const SubjectKeyIdentifier &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(SubjectKeyIdentifier_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
SubjectKeyIdentifier dec__SubjectKeyIdentifier(const OCTETSTRING &stream) {
TTCN_Buffer buf;
SubjectKeyIdentifier msg;
buf.put_os(stream);
msg.decode(SubjectKeyIdentifier_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
}

View File

@ -0,0 +1,16 @@
/* PKIX1 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 PKIX1Implicit88_Templates {
import from PKIX1Implicit88_Types all;
import from PKIX1Implicit88 all;
}

View File

@ -0,0 +1,9 @@
module PKIX1Implicit88_Types {
import from PKIX1Implicit88 all;
import from Native_Functions all;
external function dec_SubjectKeyIdentifier(in octetstring stream) return SubjectKeyIdentifier;
external function enc_SubjectKeyIdentifier(in SubjectKeyIdentifier msg) return octetstring;
}

View File

@ -0,0 +1,825 @@
--Version V2.5
RSPDefinitions {joint-iso-itu-t(2) international-organizations(23) gsma(146) rsp(1)
asn1modules(1) sgp22v2(2)}
DEFINITIONS
AUTOMATIC TAGS
EXTENSIBILITY IMPLIED ::=
BEGIN
IMPORTS Certificate, CertificateList, Time 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)}
UICCCapability FROM PEDefinitions {joint-iso-itu-t(2) international-organizations(23) tca(143) euicc-profile(1) spec-version(1) version-three(3)};
-- The UICCCapability import module version is defined in section 5.7.8
id-rsp OBJECT IDENTIFIER ::= {joint-iso-itu-t(2) international-organizations(23)
gsma(146) rsp(1)}
-- Basic types, for size constraints
Octet8 ::= OCTET STRING (SIZE(8))
Octet4 ::= OCTET STRING (SIZE(4))
Octet16 ::= OCTET STRING (SIZE(16))
OctetTo16 ::= OCTET STRING (SIZE(1..16))
Octet32 ::= OCTET STRING (SIZE(32))
Octet1 ::= OCTET STRING(SIZE(1))
Octet2 ::= OCTET STRING (SIZE(2))
VersionType ::= OCTET STRING(SIZE(3)) -- major/minor/revision version are coded as binary value on byte 1/2/3, e.g. '02 00 0C' for v2.0.12.
-- If revision is not used (e.g. v2.1), byte 3 SHALL be set to '00'.
Iccid ::= [APPLICATION 26] OCTET STRING (SIZE(10)) -- ICCID as coded in EFiccid, corresponding tag is '5A'
RemoteOpId ::= [2] INTEGER {installBoundProfilePackage(1)}
TransactionId ::= OCTET STRING (SIZE(1..16))
-- Definition of EUICCInfo1 --------------------------
GetEuiccInfo1Request ::= [32] SEQUENCE { -- Tag 'BF20'
}
EUICCInfo1 ::= [32] SEQUENCE { -- Tag 'BF20'
svn [2] VersionType, -- GSMA SGP.22 version supported (SVN)
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
}
-- Definition of EUICCInfo2 --------------------------
GetEuiccInfo2Request ::= [34] SEQUENCE { -- Tag 'BF22'
}
EUICCInfo2 ::= [34] SEQUENCE { -- Tag 'BF22'
profileVersion [1] VersionType, -- Base eUICC Profile package version supported
svn [2] VersionType, -- GSMA SGP.22 version supported (SVN)
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
}
-- Definition of RspCapability
RspCapability ::= BIT STRING {
additionalProfile(0), -- at least one more Profile can be installed
crlSupport(1), -- CRL
rpmSupport(2), -- Remote Profile Management
testProfileSupport (3), -- support for test profile
deviceInfoExtensibilitySupport (4), -- support for ASN.1 extensibility in the Device Info
serviceSpecificDataSupport (5) -- support for Service Specific Data in the Profile Metadata
}
-- Definition of CertificationDataObject
CertificationDataObject ::= SEQUENCE {
platformLabel UTF8String, -- Platform_Label as defined in GlobalPlatform DLOA specification [57]
discoveryBaseURL UTF8String -- Discovery Base URL of the SE default DLOA Registrar as defined in GlobalPlatform DLOA specification [57]
}
CertificateInfo ::= BIT STRING {
reserved(0), -- eUICC has a CERT.EUICC.ECDSA in GlobalPlatform format. The use of this bit is deprecated.
certSigningX509(1), -- eUICC has a CERT.EUICC.ECDSA in X.509 format
rfu2(2),
rfu3(3),
reserved2(4), -- Handling of Certificate in GlobalPlatform format. The use of this bit is deprecated.
certVerificationX509(5)-- Handling of Certificate in X.509 format
}
-- Definition of DeviceInfo
DeviceInfo ::= SEQUENCE {
tac Octet4,
deviceCapabilities DeviceCapabilities,
imei Octet8 OPTIONAL
}
DeviceCapabilities ::= SEQUENCE { -- Highest fully supported release for each definition
-- The device SHALL set all the capabilities it supports
gsmSupportedRelease VersionType OPTIONAL,
utranSupportedRelease VersionType OPTIONAL,
cdma2000onexSupportedRelease VersionType OPTIONAL,
cdma2000hrpdSupportedRelease VersionType OPTIONAL,
cdma2000ehrpdSupportedRelease VersionType OPTIONAL,
eutranEpcSupportedRelease VersionType OPTIONAL,
contactlessSupportedRelease VersionType OPTIONAL,
rspCrlSupportedVersion VersionType OPTIONAL,
nrEpcSupportedRelease VersionType OPTIONAL,
nr5gcSupportedRelease VersionType OPTIONAL,
eutran5gcSupportedRelease VersionType OPTIONAL,
lpaSvn VersionType OPTIONAL, -- Not defined in this version of SGP.22
catSupportedClasses CatSupportedClasses OPTIONAL, -- Not defined in this version of SGP.22
euiccFormFactorType EuiccFormFactorType OPTIONAL, -- Not defined in this version of SGP.22
deviceAdditionalFeatureSupport DeviceAdditionalFeatureSupport OPTIONAL
}
-- Definition of DeviceAdditionalFeatureSupport
DeviceAdditionalFeatureSupport ::= SEQUENCE {
naiSupport VersionType OPTIONAL -- Device supports Network Access Identifier
}
CatSupportedClasses ::= BIT STRING
EuiccFormFactorType ::= INTEGER
ProfileInfoListRequest ::= [45] SEQUENCE { -- Tag 'BF2D'
searchCriteria [0] CHOICE {
isdpAid [APPLICATION 15] OctetTo16, -- AID of the ISD-P, tag '4F'
iccid Iccid, -- ICCID, tag '5A'
profileClass [21] ProfileClass -- Tag '95'
} OPTIONAL,
tagList [APPLICATION 28] OCTET STRING OPTIONAL -- tag '5C'
}
-- Definition of ProfileInfoList
ProfileInfoListResponse ::= [45] CHOICE { -- Tag 'BF2D'
profileInfoListOk SEQUENCE OF ProfileInfo,
profileInfoListError ProfileInfoListError
}
ProfileInfo ::= [PRIVATE 3] SEQUENCE { -- Tag 'E3'
iccid Iccid OPTIONAL,
isdpAid [APPLICATION 15] OctetTo16 OPTIONAL, -- AID of the ISD-P containing the Profile, tag '4F'
profileState [112] ProfileState OPTIONAL, -- Tag '9F70'
profileNickname [16] UTF8String (SIZE(0..64)) OPTIONAL, -- Tag '90'
serviceProviderName [17] UTF8String (SIZE(0..32)) OPTIONAL, -- Tag '91'
profileName [18] UTF8String (SIZE(0..64)) OPTIONAL, -- Tag '92'
iconType [19] IconType OPTIONAL, -- Tag '93'
icon [20] OCTET STRING (SIZE(0..1024)) OPTIONAL, -- Tag '94', see condition in ES10c:GetProfilesInfo
profileClass [21] ProfileClass OPTIONAL, -- Tag '95'
notificationConfigurationInfo [22] SEQUENCE OF NotificationConfigurationInformation OPTIONAL, -- Tag 'B6'
profileOwner [23] OperatorId OPTIONAL, -- Tag 'B7'
dpProprietaryData [24] DpProprietaryData OPTIONAL, -- Tag 'B8'
profilePolicyRules [25] PprIds OPTIONAL, -- Tag '99'
serviceSpecificDataStoredInEuicc [34] VendorSpecificExtension OPTIONAL -- Tag 'BF22'
}
PprIds ::= BIT STRING {-- Definition of Profile Policy Rules identifiers
pprUpdateControl(0), -- defines how to update PPRs via ES6
ppr1(1), -- Indicator for PPR1 'Disabling of this Profile is not allowed'
ppr2(2) -- Indicator for PPR2 'Deletion of this Profile is not allowed'
}
OperatorId ::= SEQUENCE {
mccMnc OCTET STRING (SIZE(3)), -- MCC and MNC coded as defined in 3GPP TS 24.008 [32]
gid1 OCTET STRING OPTIONAL, -- referring to content of EF GID1 (file identifier '6F3E') as defined in 3GPP TS 31.102 [54]
gid2 OCTET STRING OPTIONAL -- referring to content of EF GID2 (file identifier '6F3F') as defined in 3GPP TS 31.102 [54]
}
ProfileInfoListError ::= INTEGER {incorrectInputValues(1), undefinedError(127)}
-- Definition of StoreMetadata request
StoreMetadataRequest ::= [37] SEQUENCE { -- Tag 'BF25'
iccid Iccid,
serviceProviderName [17] UTF8String (SIZE(0..32)), -- Tag '91'
profileName [18] UTF8String (SIZE(0..64)), -- Tag '92' (corresponds to 'Short Description' defined in SGP.21 [2])
iconType [19] IconType OPTIONAL, -- Tag '93' (JPG or PNG)
icon [20] OCTET STRING (SIZE(0..1024)) OPTIONAL, -- Tag '94'(Data of the icon. Size 64 x 64 pixel. This field SHALL only be present if iconType is present)
profileClass [21] ProfileClass DEFAULT operational, -- Tag '95'
notificationConfigurationInfo [22] SEQUENCE OF NotificationConfigurationInformation OPTIONAL,
profileOwner [23] OperatorId OPTIONAL, -- Tag 'B7'
profilePolicyRules [25] PprIds OPTIONAL, -- Tag '99'
serviceSpecificDataStoredInEuicc [34] VendorSpecificExtension OPTIONAL, -- Tag 'BF22'
serviceSpecificDataNotStoredInEuicc [35] VendorSpecificExtension OPTIONAL -- Tag 'BF23'
}
NotificationEvent ::= BIT STRING {
notificationInstall(0),
notificationEnable(1),
notificationDisable(2),
notificationDelete(3)
}
NotificationConfigurationInformation ::= SEQUENCE {
profileManagementOperation NotificationEvent,
notificationAddress UTF8String -- FQDN to forward the notification
}
OPENTYPE ::= CLASS {
&typeId OBJECT IDENTIFIER,
&Type
}
VendorSpecificExtension ::= SEQUENCE OF SEQUENCE {
vendorOid [0] OPENTYPE.&typeId, -- OID of the vendor who defined this specific extension
vendorSpecificData [1] OPENTYPE.&Type
}
IconType ::= INTEGER {jpg(0), png(1)}
ProfileState ::= INTEGER {disabled(0), enabled(1)}
ProfileClass ::= INTEGER {test(0), provisioning(1), operational(2)}
-- Definition of UpdateMetadata request
UpdateMetadataRequest ::= [42] SEQUENCE { -- Tag 'BF2A'
serviceProviderName [17] UTF8String (SIZE(0..32)) OPTIONAL, -- Tag '91'
profileName [18] UTF8String (SIZE(0..64)) OPTIONAL, -- Tag '92'
iconType [19] IconType OPTIONAL, -- Tag '93'
icon [20] OCTET STRING (SIZE(0..1024)) OPTIONAL, -- Tag '94'
profilePolicyRules [25] PprIds OPTIONAL, -- Tag '99'
serviceSpecificDataStoredInEuicc [34] VendorSpecificExtension OPTIONAL -- Tag 'BF22'
}
-- Definition of data objects for command PrepareDownload -------------------------
PrepareDownloadRequest ::= [33] SEQUENCE { -- Tag 'BF21'
smdpSigned2 SmdpSigned2, -- Signed information
smdpSignature2 [APPLICATION 55] OCTET STRING, -- DP_Sign1, tag '5F37'
hashCc Octet32 OPTIONAL, -- Hash of confirmation code
smdpCertificate Certificate -- CERT.DPpb.ECDSA
}
SmdpSigned2 ::= SEQUENCE {
transactionId [0] TransactionId, -- The TransactionID generated by the SM-DP+
ccRequiredFlag BOOLEAN, --Indicates if the Confirmation Code is required
bppEuiccOtpk [APPLICATION 73] OCTET STRING OPTIONAL -- otPK.EUICC.ECKA already used for binding the BPP, tag '5F49'
}
PrepareDownloadResponse ::= [33] CHOICE { -- Tag 'BF21'
downloadResponseOk PrepareDownloadResponseOk,
downloadResponseError PrepareDownloadResponseError
}
PrepareDownloadResponseOk ::= SEQUENCE {
euiccSigned2 EUICCSigned2, -- Signed information
euiccSignature2 [APPLICATION 55] OCTET STRING -- tag '5F37'
}
EUICCSigned2 ::= SEQUENCE {
transactionId [0] TransactionId,
euiccOtpk [APPLICATION 73] OCTET STRING, -- otPK.EUICC.ECKA, tag '5F49'
hashCc Octet32 OPTIONAL -- Hash of confirmation code
}
PrepareDownloadResponseError ::= SEQUENCE {
transactionId [0] TransactionId,
downloadErrorCode DownloadErrorCode
}
DownloadErrorCode ::= INTEGER {invalidCertificate(1), invalidSignature(2),
unsupportedCurve(3), noSessionContext(4), invalidTransactionId(5),
undefinedError(127)}
-- Definition of data objects for command AuthenticateServer--------------------
AuthenticateServerRequest ::= [56] SEQUENCE { -- Tag 'BF38'
serverSigned1 ServerSigned1, -- Signed information
serverSignature1 [APPLICATION 55] OCTET STRING, -- tag 5F37
euiccCiPKIdToBeUsed SubjectKeyIdentifier, -- CI Public Key Identifier to be used
serverCertificate Certificate, -- RSP Server Certificate CERT.XXauth.ECDSA
ctxParams1 CtxParams1
}
ServerSigned1 ::= SEQUENCE {
transactionId [0] TransactionId, -- The Transaction ID generated by the RSP Server
euiccChallenge [1] Octet16, -- The eUICC Challenge
serverAddress [3] UTF8String, -- The RSP Server address
serverChallenge [4] Octet16 -- The RSP Server Challenge
}
CtxParams1 ::= CHOICE {
ctxParamsForCommonAuthentication CtxParamsForCommonAuthentication -- New contextual data objects MAY be defined for extensibility
}
CtxParamsForCommonAuthentication ::= SEQUENCE {
matchingId UTF8String OPTIONAL,-- The MatchingId could be the Activation code token or EventID or empty
deviceInfo DeviceInfo -- The Device information
}
AuthenticateServerResponse ::= [56] CHOICE { -- Tag 'BF38'
authenticateResponseOk AuthenticateResponseOk,
authenticateResponseError AuthenticateResponseError
}
AuthenticateResponseOk ::= SEQUENCE {
euiccSigned1 EuiccSigned1, -- Signed information
euiccSignature1 [APPLICATION 55] OCTET STRING, --EUICC_Sign1, tag 5F37
euiccCertificate Certificate, -- eUICC Certificate (CERT.EUICC.ECDSA) signed by the EUM
eumCertificate Certificate -- EUM Certificate (CERT.EUM.ECDSA) signed by the requested CI
}
EuiccSigned1 ::= SEQUENCE {
transactionId [0] TransactionId,
serverAddress [3] UTF8String,
serverChallenge [4] Octet16, -- The RSP Server Challenge
euiccInfo2 [34] EUICCInfo2,
ctxParams1 CtxParams1
}
AuthenticateResponseError ::= SEQUENCE {
transactionId [0] TransactionId,
authenticateErrorCode AuthenticateErrorCode
}
AuthenticateErrorCode ::= INTEGER {invalidCertificate(1), invalidSignature(2),
unsupportedCurve(3), noSessionContext(4), invalidOid(5), euiccChallengeMismatch(6),
ciPKUnknown(7), undefinedError(127)}
-- Definition of Cancel Session------------------------------
CancelSessionRequest ::= [65] SEQUENCE { -- Tag 'BF41'
transactionId TransactionId, -- The TransactionID generated by the RSP Server
reason CancelSessionReason
}
CancelSessionReason ::= INTEGER {endUserRejection(0), postponed(1), timeout(2),
pprNotAllowed(3), metadataMismatch(4), loadBppExecutionError(5),
undefinedReason(127)}
CancelSessionResponse ::= [65] CHOICE { -- Tag 'BF41'
cancelSessionResponseOk CancelSessionResponseOk,
cancelSessionResponseError INTEGER {invalidTransactionId(5),
undefinedError(127)}
}
CancelSessionResponseOk ::= SEQUENCE {
euiccCancelSessionSigned EuiccCancelSessionSigned, -- Signed information
euiccCancelSessionSignature [APPLICATION 55] OCTET STRING -- tag '5F37
}
EuiccCancelSessionSigned ::= SEQUENCE {
transactionId TransactionId,
smdpOid OBJECT IDENTIFIER, -- SM-DP+ OID as contained in CERT.DPauth.ECDSA
reason CancelSessionReason
}
-- Definition of Bound Profile Package --------------------------
BoundProfilePackage ::= [54] SEQUENCE { -- Tag 'BF36'
initialiseSecureChannelRequest [35] InitialiseSecureChannelRequest, -- Tag 'BF23'
firstSequenceOf87 [0] SEQUENCE OF [7] OCTET STRING, -- sequence of '87' TLVs
sequenceOf88 [1] SEQUENCE OF [8] OCTET STRING, -- sequence of '88' TLVs
secondSequenceOf87 [2] SEQUENCE OF [7] OCTET STRING OPTIONAL, -- sequence of '87' TLVs
sequenceOf86 [3] SEQUENCE OF [6] OCTET STRING -- sequence of '86' TLVs
}
-- Definition of Get eUICC Challenge --------------------------
GetEuiccChallengeRequest ::= [46] SEQUENCE { -- Tag 'BF2E'
}
GetEuiccChallengeResponse ::= [46] SEQUENCE { -- Tag 'BF2E'
euiccChallenge Octet16 -- random eUICC challenge
}
-- Definition of Profile Installation Result
ProfileInstallationResult ::= [55] SEQUENCE { -- Tag 'BF37'
profileInstallationResultData [39] ProfileInstallationResultData,
euiccSignPIR EuiccSignPIR
}
ProfileInstallationResultData ::= [39] SEQUENCE { -- Tag 'BF27'
transactionId[0] TransactionId, -- The TransactionID generated by the SM-DP+
notificationMetadata[47] NotificationMetadata,
smdpOid OBJECT IDENTIFIER, -- SM-DP+ OID (same value as in CERT.DPpb.ECDSA)
finalResult [2] CHOICE {
successResult SuccessResult,
errorResult ErrorResult
}
}
EuiccSignPIR ::= [APPLICATION 55] OCTET STRING -- Tag '5F37', eUICCs signature
SuccessResult ::= SEQUENCE {
aid [APPLICATION 15] OCTET STRING (SIZE (5..16)), -- AID of ISD-P
simaResponse OCTET STRING -- contains (multiple) 'EUICCResponse' as defined in [5]
}
ErrorResult ::= SEQUENCE {
bppCommandId BppCommandId,
errorReason ErrorReason,
simaResponse OCTET STRING OPTIONAL -- contains (multiple) 'EUICCResponse' as defined in [5]
}
BppCommandId ::= INTEGER {initialiseSecureChannel(0), configureISDP(1),
storeMetadata(2), storeMetadata2(3), replaceSessionKeys(4), loadProfileElements(5)}
ErrorReason ::= INTEGER {
incorrectInputValues(1),
invalidSignature(2),
invalidTransactionId(3),
unsupportedCrtValues(4),
unsupportedRemoteOperationType(5),
unsupportedProfileClass(6),
scp03tStructureError(7),
scp03tSecurityError(8),
installFailedDueToIccidAlreadyExistsOnEuicc(9),
installFailedDueToInsufficientMemoryForProfile(10),
installFailedDueToInterruption(11),
installFailedDueToPEProcessingError (12),
installFailedDueToDataMismatch(13),
testProfileInstallFailedDueToInvalidNaaKey(14),
pprNotAllowed(15),
installFailedDueToUnknownError(127)
}
ListNotificationRequest ::= [40] SEQUENCE { -- Tag 'BF28'
profileManagementOperation [1] NotificationEvent OPTIONAL
}
ListNotificationResponse ::= [40] CHOICE { -- Tag 'BF28'
notificationMetadataList SEQUENCE OF NotificationMetadata,
listNotificationsResultError INTEGER {undefinedError(127)}
}
NotificationMetadata ::= [47] SEQUENCE { -- Tag 'BF2F'
seqNumber [0] INTEGER,
profileManagementOperation [1] NotificationEvent, /*Only one bit SHALL be set to
1*/
notificationAddress UTF8String, -- FQDN to forward the notification
iccid Iccid OPTIONAL
}
-- Definition of Profile Nickname Information
SetNicknameRequest ::= [41] SEQUENCE { -- Tag 'BF29'
iccid Iccid,
profileNickname [16] UTF8String (SIZE(0..64))
}
SetNicknameResponse ::= [41] SEQUENCE { -- Tag 'BF29'
setNicknameResult INTEGER {ok(0), iccidNotFound (1), undefinedError(127)}
}
id-rsp-cert-objects OBJECT IDENTIFIER ::= { id-rsp cert-objects(2)}
id-rspExt OBJECT IDENTIFIER ::= {id-rsp-cert-objects 0}
id-rspRole OBJECT IDENTIFIER ::= {id-rsp-cert-objects 1}
-- Definition of OIDs for role identification
id-rspRole-ci OBJECT IDENTIFIER ::= {id-rspRole 0}
id-rspRole-euicc OBJECT IDENTIFIER ::= {id-rspRole 1}
id-rspRole-eum OBJECT IDENTIFIER ::= {id-rspRole 2}
id-rspRole-dp-tls OBJECT IDENTIFIER ::= {id-rspRole 3}
id-rspRole-dp-auth OBJECT IDENTIFIER ::= {id-rspRole 4}
id-rspRole-dp-pb OBJECT IDENTIFIER ::= {id-rspRole 5}
id-rspRole-ds-tls OBJECT IDENTIFIER ::= {id-rspRole 6}
id-rspRole-ds-auth OBJECT IDENTIFIER ::= {id-rspRole 7}
--Definition of data objects for InitialiseSecureChannel Request
InitialiseSecureChannelRequest ::= [35] SEQUENCE { -- Tag 'BF23'
remoteOpId RemoteOpId, -- Remote Operation Type Identifier (value SHALL be set to installBoundProfilePackage)
transactionId [0] TransactionId, -- The TransactionID generated by the SM-DP+
controlRefTemplate[6] IMPLICIT ControlRefTemplate, -- Control Reference Template (Key Agreement). Current specification considers a subset of CRT specified in GlobalPlatform Card Specification [8], section 6.4.2.3 for the Mutual Authentication Data Field
smdpOtpk [APPLICATION 73] OCTET STRING, ---otPK.DP.ECKA as specified in GlobalPlatform Card Specification [8] section 6.4.2.3 for ePK.OCE.ECKA, tag '5F49'
smdpSign [APPLICATION 55] OCTET STRING -- SM-DP's signature, tag '5F37'
}
ControlRefTemplate ::= SEQUENCE {
keyType[0] Octet1, -- Key type according to GlobalPlatform Card Specification [8] Table 11-16, AES= '88', Tag '80'
keyLen[1] Octet1, --Key length in number of bytes. For current specification key length SHALL by 0x10 bytes, Tag '81'
hostId[4] OctetTo16 -- Host ID value , Tag '84'
}
--Definition of data objects for ConfigureISDPRequest
ConfigureISDPRequest ::= [36] SEQUENCE { -- Tag 'BF24'
dpProprietaryData [24] DpProprietaryData OPTIONAL -- Tag 'B8'
}
DpProprietaryData ::= SEQUENCE { -- maximum size including tag and length field: 128 bytes
dpOid OBJECT IDENTIFIER -- OID in the tree of the SM-DP+ that created the Profile
-- additional data objects defined by the SM-DP+ MAY follow
}
-- Definition of request message for command ReplaceSessionKeys
ReplaceSessionKeysRequest ::= [38] SEQUENCE { -- tag 'BF26'
/*The new initial MAC chaining value*/
initialMacChainingValue OCTET STRING,
/*New session key value for encryption/decryption (PPK-ENC)*/
ppkEnc OCTET STRING,
/*New session key value of the session key C-MAC computation/verification (PPK-MAC)*/
ppkCmac OCTET STRING
}
-- Definition of data objects for RetrieveNotificationsList
RetrieveNotificationsListRequest ::= [43] SEQUENCE { -- Tag 'BF2B'
searchCriteria CHOICE {
seqNumber [0] INTEGER,
profileManagementOperation [1] NotificationEvent
} OPTIONAL
}
RetrieveNotificationsListResponse ::= [43] CHOICE { -- Tag 'BF2B'
notificationList SEQUENCE OF PendingNotification,
notificationsListResultError INTEGER { undefinedError(127)}
}
PendingNotification ::= CHOICE {
profileInstallationResult [55] ProfileInstallationResult, -- tag 'BF37'
otherSignedNotification OtherSignedNotification
}
OtherSignedNotification ::= SEQUENCE {
tbsOtherNotification NotificationMetadata,
euiccNotificationSignature [APPLICATION 55] OCTET STRING, -- eUICC signature of tbsOtherNotification, Tag '5F37'
euiccCertificate Certificate, -- eUICC Certificate (CERT.EUICC.ECDSA) signed by the EUM
eumCertificate Certificate -- EUM Certificate (CERT.EUM.ECDSA) signed by the requested CI
}
-- Definition of notificationSent
NotificationSentRequest ::= [48] SEQUENCE { -- Tag 'BF30'
seqNumber [0] INTEGER
}
NotificationSentResponse ::= [48] SEQUENCE { -- Tag 'BF30'
deleteNotificationStatus INTEGER {ok(0), nothingToDelete(1),
undefinedError(127)}
}
-- Definition of Enable Profile --------------------------
EnableProfileRequest ::= [49] SEQUENCE { -- Tag 'BF31'
profileIdentifier CHOICE {
isdpAid [APPLICATION 15] OctetTo16, -- AID, tag '4F'
iccid Iccid -- ICCID, tag '5A'
},
refreshFlag BOOLEAN -- indicating whether REFRESH is required
}
EnableProfileResponse ::= [49] SEQUENCE { -- Tag 'BF31'
enableResult INTEGER {ok(0), iccidOrAidNotFound (1),
profileNotInDisabledState(2), disallowedByPolicy(3), wrongProfileReenabling(4),
catBusy(5), undefinedError(127)}
}
-- Definition of Disable Profile --------------------------
DisableProfileRequest ::= [50] SEQUENCE { -- Tag 'BF32'
profileIdentifier CHOICE {
isdpAid [APPLICATION 15] OctetTo16, -- AID, tag '4F'
iccid Iccid -- ICCID, tag '5A'
},
refreshFlag BOOLEAN -- indicating whether REFRESH is required
}
DisableProfileResponse ::= [50] SEQUENCE { -- Tag 'BF32'
disableResult INTEGER {ok(0), iccidOrAidNotFound (1),
profileNotInEnabledState(2), disallowedByPolicy(3), catBusy(5),
undefinedError(127)}
}
-- Definition of Delete Profile --------------------------
DeleteProfileRequest ::= [51] CHOICE { -- Tag 'BF33'
isdpAid [APPLICATION 15] OctetTo16, -- AID, tag '4F'
iccid Iccid -- ICCID, tag '5A'
}
DeleteProfileResponse ::= [51] SEQUENCE { -- Tag 'BF33'
deleteResult INTEGER {ok(0), iccidOrAidNotFound (1),
profileNotInDisabledState(2), disallowedByPolicy(3), undefinedError(127)}
}
-- Definition of Memory Reset --------------------------
EuiccMemoryResetRequest ::= [52] SEQUENCE { -- Tag 'BF34'
resetOptions [2] BIT STRING {
deleteOperationalProfiles(0),
deleteFieldLoadedTestProfiles(1),
resetDefaultSmdpAddress(2)}
}
EuiccMemoryResetResponse ::= [52] SEQUENCE { -- Tag 'BF34'
resetResult INTEGER {ok(0), nothingToDelete(1), catBusy(5), undefinedError(127)}
}
-- Definition of Get EID --------------------------
GetEuiccDataRequest ::= [62] SEQUENCE { -- Tag 'BF3E'
tagList [APPLICATION 28] Octet1 -- tag '5C', the value SHALL be set to '5A'
}
GetEuiccDataResponse ::= [62] SEQUENCE { -- Tag 'BF3E'
eidValue [APPLICATION 26] Octet16 -- tag '5A'
}
-- Definition of Get Rat
GetRatRequest ::= [67] SEQUENCE { -- Tag ' BF43'
-- No input data
}
GetRatResponse ::= [67] SEQUENCE { -- Tag 'BF43'
rat RulesAuthorisationTable
}
RulesAuthorisationTable ::= SEQUENCE OF ProfilePolicyAuthorisationRule
ProfilePolicyAuthorisationRule ::= SEQUENCE {
pprIds PprIds,
allowedOperators SEQUENCE OF OperatorId,
pprFlags BIT STRING {consentRequired(0)}
}
-- Definition of data structure containing the list of CRL segments
SegmentedCrlList ::= SEQUENCE OF CertificateList
-- Definition of data structure command for loading a CRL
LoadCRLRequest ::= [53] SEQUENCE { -- Tag 'BF35'
-- A CRL
crl CertificateList
}
-- Definition of data structure response for loading a CRL
LoadCRLResponse ::= [53] CHOICE { -- Tag 'BF35'
loadCRLResponseOk LoadCRLResponseOk,
loadCRLResponseError LoadCRLResponseError
}
LoadCRLResponseOk ::= SEQUENCE {
missingParts SEQUENCE OF INTEGER OPTIONAL
}
LoadCRLResponseError ::= INTEGER {invalidSignature(1), invalidCRLFormat(2),
notEnoughMemorySpace(3), verificationKeyNotFound(4), fresherCrlAlreadyLoaded(5),
baseCrlMissing(6), undefinedError(127)}
-- Definition of the extension for Certificate Expiration Date
id-rsp-expDate OBJECT IDENTIFIER ::= {id-rspExt 1}
ExpirationDate ::= Time
-- Definition of the extension id for total partial-CRL number
id-rsp-totalPartialCrlNumber OBJECT IDENTIFIER ::= {id-rspExt 2}
TotalPartialCrlNumber ::= INTEGER
-- Definition of the extension id for the partial-CRL number
id-rsp-partialCrlNumber OBJECT IDENTIFIER ::= {id-rspExt 3}
PartialCrlNumber ::= INTEGER
-- Definition for ES9+ ASN.1 Binding --------------------------
RemoteProfileProvisioningRequest ::= [2] CHOICE { -- Tag 'A2'
initiateAuthenticationRequest [57] InitiateAuthenticationRequest, -- Tag 'BF39'
authenticateClientRequest [59] AuthenticateClientRequest, -- Tag 'BF3B'
getBoundProfilePackageRequest [58] GetBoundProfilePackageRequest, -- Tag 'BF3A'
cancelSessionRequestEs9 [65] CancelSessionRequestEs9, -- Tag 'BF41'
handleNotification [61] HandleNotification -- tag 'BF3D'
}
RemoteProfileProvisioningResponse ::= [2] CHOICE { -- Tag 'A2'
initiateAuthenticationResponse [57] InitiateAuthenticationResponse, -- Tag 'BF39'
authenticateClientResponseEs9 [59] AuthenticateClientResponseEs9, -- Tag 'BF3B'
getBoundProfilePackageResponse [58] GetBoundProfilePackageResponse, -- Tag 'BF3A'
cancelSessionResponseEs9 [65] CancelSessionResponseEs9, -- Tag 'BF41'
authenticateClientResponseEs11 [64] AuthenticateClientResponseEs11 -- Tag 'BF40'
}
InitiateAuthenticationRequest ::= [57] SEQUENCE { -- Tag 'BF39'
euiccChallenge [1] Octet16, -- random eUICC challenge
smdpAddress [3] UTF8String,
euiccInfo1 EUICCInfo1
}
InitiateAuthenticationResponse ::= [57] CHOICE { -- Tag 'BF39'
initiateAuthenticationOk InitiateAuthenticationOkEs9,
initiateAuthenticationError INTEGER {
invalidDpAddress(1),
euiccVersionNotSupportedByDp(2),
ciPKNotSupported(3)
}
}
InitiateAuthenticationOkEs9 ::= SEQUENCE {
transactionId [0] TransactionId, -- The TransactionID generated by the SM-DP+
serverSigned1 ServerSigned1, -- Signed information
serverSignature1 [APPLICATION 55] OCTET STRING, -- Server_Sign1, tag '5F37'
euiccCiPKIdToBeUsed SubjectKeyIdentifier, -- The curve CI Public Key to be used as required by ES10b.AuthenticateServer
serverCertificate Certificate
}
AuthenticateClientRequest ::= [59] SEQUENCE { -- Tag 'BF3B'
transactionId [0] TransactionId,
authenticateServerResponse [56] AuthenticateServerResponse -- This is the response from ES10b.AuthenticateServer
}
AuthenticateClientResponseEs9 ::= [59] CHOICE { -- Tag 'BF3B'
authenticateClientOk AuthenticateClientOk,
authenticateClientError INTEGER {
eumCertificateInvalid(1),
eumCertificateExpired(2),
euiccCertificateInvalid(3),
euiccCertificateExpired(4),
euiccSignatureInvalid(5),
matchingIdRefused(6),
eidMismatch(7),
noEligibleProfile(8),
ciPKUnknown(9),
invalidTransactionId(10),
insufficientMemory(11),
undefinedError(127)
}
}
AuthenticateClientOk ::= SEQUENCE {
transactionId [0] TransactionId,
profileMetaData [37] StoreMetadataRequest,
smdpSigned2 SmdpSigned2, -- Signed information
smdpSignature2 [APPLICATION 55] OCTET STRING, -- tag '5F37'
smdpCertificate Certificate -- CERT.DPpb.ECDSA
}
GetBoundProfilePackageRequest ::= [58] SEQUENCE { -- Tag 'BF3A'
transactionId [0] TransactionId,
prepareDownloadResponse [33] PrepareDownloadResponse
}
GetBoundProfilePackageResponse ::= [58] CHOICE { -- Tag 'BF3A'
getBoundProfilePackageOk GetBoundProfilePackageOk,
getBoundProfilePackageError INTEGER {
euiccSignatureInvalid(1),
confirmationCodeMissing(2),
confirmationCodeRefused(3),
confirmationCodeRetriesExceeded(4),
bppRebindingRefused(5),
downloadOrderExpired(6),
invalidTransactionId(95),
undefinedError(127)
}
}
GetBoundProfilePackageOk ::= SEQUENCE {
transactionId [0] TransactionId,
boundProfilePackage [54] BoundProfilePackage
}
HandleNotification ::= [61] SEQUENCE { -- Tag 'BF3D'
pendingNotification PendingNotification
}
CancelSessionRequestEs9 ::= [65] SEQUENCE { -- Tag 'BF41'
transactionId TransactionId,
cancelSessionResponse CancelSessionResponse -- data structure defined for ES10b.CancelSession function
}
CancelSessionResponseEs9 ::= [65] CHOICE { -- Tag 'BF41'
cancelSessionOk CancelSessionOk,
cancelSessionError INTEGER {
invalidTransactionId(1),
euiccSignatureInvalid(2),
undefinedError(127)
}
}
CancelSessionOk ::= SEQUENCE { -- This function has no output data
}
EuiccConfiguredAddressesRequest ::= [60] SEQUENCE { -- Tag 'BF3C'
}
EuiccConfiguredAddressesResponse ::= [60] SEQUENCE { -- Tag 'BF3C'
defaultDpAddress UTF8String OPTIONAL, -- Default SM-DP+ address as an FQDN
rootDsAddress UTF8String -- Root SM-DS address as an FQDN
}
ISDRProprietaryApplicationTemplate ::= [PRIVATE 0] SEQUENCE { -- Tag 'E0'
svn [2] VersionType, -- GSMA SGP.22 version supported (SVN)
lpaeSupport BIT STRING {
lpaeUsingCat(0), -- LPA in the eUICC using Card Application Toolkit
lpaeUsingScws(1) -- LPA in the eUICC using Smartcard Web Server
} OPTIONAL
}
LpaeActivationRequest ::= [66] SEQUENCE { -- Tag 'BF42'
lpaeOption BIT STRING {
activateCatBasedLpae(0), -- LPAe with LUIe based on CAT
activateScwsBasedLpae(1) -- LPAe with LUIe based on SCWS
}
}
LpaeActivationResponse ::= [66] SEQUENCE { -- Tag 'BF42'
lpaeActivationResult INTEGER {ok(0), notSupported(1)}
}
SetDefaultDpAddressRequest ::= [63] SEQUENCE { -- Tag 'BF3F'
defaultDpAddress UTF8String -- Default SM-DP+ address as an FQDN
}
SetDefaultDpAddressResponse ::= [63] SEQUENCE { -- Tag 'BF3F'
setDefaultDpAddressResult INTEGER { ok (0), undefinedError (127)}
}
AuthenticateClientResponseEs11 ::= [64] CHOICE { -- Tag 'BF40'
authenticateClientOk AuthenticateClientOkEs11,
authenticateClientError INTEGER {
eumCertificateInvalid(1),
eumCertificateExpired(2),
euiccCertificateInvalid(3),
euiccCertificateExpired(4),
euiccSignatureInvalid(5),
eventIdUnknown(6),
invalidTransactionId(7),
undefinedError(127)
}
}
AuthenticateClientOkEs11 ::= SEQUENCE {
transactionId TransactionId,
eventEntries SEQUENCE OF EventEntries
}
EventEntries ::= SEQUENCE {
eventId UTF8String,
rspServerAddress UTF8String
}
END

View File

@ -0,0 +1,281 @@
#include "RSPDefinitions.hh"
namespace RSPDefinitions__Types {
using namespace RSPDefinitions;
TTCN_Module RSPDefinitions__EncDec("RSPDefinitions_EncDec", __DATE__, __TIME__);
OCTETSTRING enc__GetEuiccChallengeResponse(const GetEuiccChallengeResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(GetEuiccChallengeResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
GetEuiccChallengeResponse dec__GetEuiccChallengeResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
GetEuiccChallengeResponse msg;
buf.put_os(stream);
msg.decode(GetEuiccChallengeResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__EUICCInfo1(const EUICCInfo1 &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(EUICCInfo1_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
EUICCInfo1 dec__EUICCInfo1(const OCTETSTRING &stream) {
TTCN_Buffer buf;
EUICCInfo1 msg;
buf.put_os(stream);
msg.decode(EUICCInfo1_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__EUICCInfo2(const EUICCInfo2 &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(EUICCInfo2_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
EUICCInfo2 dec__EUICCInfo2(const OCTETSTRING &stream) {
TTCN_Buffer buf;
EUICCInfo2 msg;
buf.put_os(stream);
msg.decode(EUICCInfo2_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__AuthenticateServerResponse(const AuthenticateServerResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(AuthenticateServerResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
AuthenticateServerResponse dec__AuthenticateServerResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
AuthenticateServerResponse msg;
buf.put_os(stream);
msg.decode(AuthenticateServerResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__CancelSessionResponse(const CancelSessionResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(CancelSessionResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
CancelSessionResponse dec__CancelSessionResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
CancelSessionResponse msg;
buf.put_os(stream);
msg.decode(CancelSessionResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__PrepareDownloadResponse(const PrepareDownloadResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(PrepareDownloadResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
PrepareDownloadResponse dec__PrepareDownloadResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
PrepareDownloadResponse msg;
buf.put_os(stream);
msg.decode(PrepareDownloadResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__ProfileInstallationResult(const ProfileInstallationResult &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(ProfileInstallationResult_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
ProfileInstallationResult dec__ProfileInstallationResult(const OCTETSTRING &stream) {
TTCN_Buffer buf;
ProfileInstallationResult msg;
buf.put_os(stream);
msg.decode(ProfileInstallationResult_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__NotificationSentResponse(const NotificationSentResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(NotificationSentResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
NotificationSentResponse dec__NotificationSentResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
NotificationSentResponse msg;
buf.put_os(stream);
msg.decode(NotificationSentResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__RetrieveNotificationsListResponse(const RetrieveNotificationsListResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(RetrieveNotificationsListResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
RetrieveNotificationsListResponse dec__RetrieveNotificationsListResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
RetrieveNotificationsListResponse msg;
buf.put_os(stream);
msg.decode(RetrieveNotificationsListResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__GetEuiccDataResponse(const GetEuiccDataResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(GetEuiccDataResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
GetEuiccDataResponse dec__GetEuiccDataResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
GetEuiccDataResponse msg;
buf.put_os(stream);
msg.decode(GetEuiccDataResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__EuiccConfiguredAddressesResponse(const EuiccConfiguredAddressesResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(EuiccConfiguredAddressesResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
EuiccConfiguredAddressesResponse dec__EuiccConfiguredAddressesResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
EuiccConfiguredAddressesResponse msg;
buf.put_os(stream);
msg.decode(EuiccConfiguredAddressesResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__PendingNotification(const PendingNotification &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(PendingNotification_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
PendingNotification dec__PendingNotification(const OCTETSTRING &stream) {
TTCN_Buffer buf;
PendingNotification msg;
buf.put_os(stream);
msg.decode(PendingNotification_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__ServerSigned1(const ServerSigned1 &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(ServerSigned1_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
ServerSigned1 dec__ServerSigned1(const OCTETSTRING &stream) {
TTCN_Buffer buf;
ServerSigned1 msg;
buf.put_os(stream);
msg.decode(ServerSigned1_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__BoundProfilePackage(const BoundProfilePackage &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(BoundProfilePackage_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
BoundProfilePackage dec__BoundProfilePackage(const OCTETSTRING &stream) {
TTCN_Buffer buf;
BoundProfilePackage msg;
buf.put_os(stream);
msg.decode(BoundProfilePackage_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__StoreMetadataRequest(const StoreMetadataRequest &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(StoreMetadataRequest_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
StoreMetadataRequest dec__StoreMetadataRequest(const OCTETSTRING &stream) {
TTCN_Buffer buf;
StoreMetadataRequest msg;
buf.put_os(stream);
msg.decode(StoreMetadataRequest_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__SmdpSigned2(const SmdpSigned2 &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(SmdpSigned2_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
SmdpSigned2 dec__SmdpSigned2(const OCTETSTRING &stream) {
TTCN_Buffer buf;
SmdpSigned2 msg;
buf.put_os(stream);
msg.decode(SmdpSigned2_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
}

View File

@ -0,0 +1,579 @@
/* SGP22 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 RSPDefinitions_Templates {
import from PEDefinitions all;
import from RSPDefinitions all;
import from RSPDefinitions_Types all;
import from PKIX1Explicit88 all;
import from PKIX1Explicit88_Templates all;
import from PKIX1Explicit88_Types all;
import from PKIX1Implicit88 all;
/* GSMA SGP.22, section 2.5.4 */
template (present) BoundProfilePackage
tr_boundProfilePackage := {
initialiseSecureChannelRequest := {
remoteOpId := ?,
transactionId := ?,
controlRefTemplate := {
keyType := ?,
keyLen := ?,
hostId := ?
},
smdpOtpk := ?,
smdpSign := ?
},
/* ES8+.ConfigureISDP */
firstSequenceOf87 := ?,
/* ES8+.StoreMetadata */
sequenceOf88 := ?,
/* ES8+.ReplaceSessionKeys (optional) */
secondSequenceOf87 := *,
/* ES8+.LoadProfileElements */
sequenceOf86 := ?
}
template (value) BoundProfilePackage
ts_boundProfilePackage := {
initialiseSecureChannelRequest := {
remoteOpId := 1,
transactionId := 'AABBCC'O,
controlRefTemplate := {
keyType := '88'O, /* AES */
keyLen := '10'O, /* 16 byte key-length */
hostId := '01020304050607080910111213141516'O
},
smdpOtpk := '1122334455667788'O,
smdpSign := 'AABBCCDDEEFF0000'O
},
/* ES8+.ConfigureISDP */
firstSequenceOf87 := {'41414141414141414141414141414141414141414141414141414141414141'O,
'42424242424242424242424242424242424242424242424242424242424242'O,
'43434343434343434343434343434343434343434343434343434343434343'O},
/* ES8+.StoreMetadata */
sequenceOf88 := {'444444444444444444444444444444444444444444'O,
'454545454545454545454545454545454545454545'O,
'464646464646464646464646464646464646464646'O},
/* ES8+.ReplaceSessionKeys (optional) */
secondSequenceOf87 := omit,
/* ES8+.LoadProfileElements */
sequenceOf86 := {'474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747'O,
'484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848'O,
'494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949494949'O,
'505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050'O,
'515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151'O}
}
/* GSMA SGP.22, section 2.5.6 */
template (present) ProfileInstallationResult
tr_profileInstallationResult := {
profileInstallationResultData := {
transactionId := ?,
notificationMetadata := {
seqNumber := ?,
profileManagementOperation := ?,
notificationAddress := ?,
iccid := *
},
smdpOid := ?,
finalResult := ?
},
euiccSignPIR := ?
}
template (value) ProfileInstallationResult
ts_profileInstallationResult := {
profileInstallationResultData := {
transactionId := 'AABBCC'O,
notificationMetadata := {
seqNumber := 1234,
profileManagementOperation := '01'B, /* is this correct? (notificationInstall) */
notificationAddress := "smdp.example.com",
iccid := omit
},
smdpOid := id_rsp, /* random OBJECT IDENTIFIER for testing */
finalResult := {
successResult := {
aid := '0102030405'O,
simaResponse := '4141414141414141414141414141414141414141414141414141'O
}
}
},
euiccSignPIR := '00112233445566778899AABBCCDDEEFF'O
}
/* GSMA SGP.22, section 5.6.1 (ES9+) */
template (present) RemoteProfileProvisioningRequest
tr_initiateAuthenticationRequest(template (present) octetstring euiccChallenge := ?,
template (present) charstring smdpAddress := ?,
template (present) EUICCInfo1 euiccInfo1 := ?) := {
initiateAuthenticationRequest := {
euiccChallenge := euiccChallenge,
smdpAddress := smdpAddress,
euiccInfo1 := euiccInfo1
}
}
template (value) RemoteProfileProvisioningRequest
ts_initiateAuthenticationRequest(template (value) octetstring euiccChallenge,
template (value) charstring smdpAddress,
template (value) EUICCInfo1 euiccInfo1) := {
initiateAuthenticationRequest := {
euiccChallenge := euiccChallenge,
smdpAddress := smdpAddress,
euiccInfo1 := euiccInfo1
}
}
template (present) RemoteProfileProvisioningResponse
tr_initiateAuthenticationResponse(template (present) octetstring transactionId := ?,
template (present) ServerSigned1 serverSigned1 := ?,
template (present) octetstring serverSignature1 := ?,
template (present) SubjectKeyIdentifier euiccCiPKIdToBeUsed := ?,
template (present) Certificate serverCertificate := ?) := {
initiateAuthenticationResponse := {
initiateAuthenticationOk := {
transactionId := transactionId,
serverSigned1 := serverSigned1,
serverSignature1 := serverSignature1,
euiccCiPKIdToBeUsed := euiccCiPKIdToBeUsed,
serverCertificate := serverCertificate
}
}
}
template (value) RemoteProfileProvisioningResponse
ts_initiateAuthenticationResponse(template (value) octetstring transactionId,
template (value) ServerSigned1 serverSigned1,
template (value) octetstring serverSignature1,
template (value) SubjectKeyIdentifier euiccCiPKIdToBeUsed,
template (value) Certificate serverCertificate) := {
initiateAuthenticationResponse := {
initiateAuthenticationOk := {
transactionId := transactionId,
serverSigned1 := serverSigned1,
serverSignature1 := serverSignature1,
euiccCiPKIdToBeUsed := euiccCiPKIdToBeUsed,
serverCertificate := serverCertificate
}
}
}
/* GSMA SGP.22, section 5.6.2 (ES9+) */
template (present) RemoteProfileProvisioningRequest
tr_getBoundProfilePackageRequest(template (present) octetstring transactionId := ?,
template (present) PrepareDownloadResponse prepareDownloadResponse := ?) := {
getBoundProfilePackageRequest := {
transactionId := transactionId,
prepareDownloadResponse := prepareDownloadResponse
}
}
template (value) RemoteProfileProvisioningRequest
ts_getBoundProfilePackageRequest(template (value) octetstring transactionId,
template (value) PrepareDownloadResponse prepareDownloadResponse) := {
getBoundProfilePackageRequest := {
transactionId := transactionId,
prepareDownloadResponse := prepareDownloadResponse
}
}
template (present) RemoteProfileProvisioningResponse
tr_getBoundProfilePackageResponse(template (present) octetstring transactionId := ?,
template (present) BoundProfilePackage boundProfilePackage := ?) := {
getBoundProfilePackageResponse := {
getBoundProfilePackageOk := {
transactionId := transactionId,
boundProfilePackage := boundProfilePackage
}
}
}
template (value) RemoteProfileProvisioningResponse
ts_getBoundProfilePackageResponse(template (value) octetstring transactionId,
template (value) BoundProfilePackage boundProfilePackage) := {
getBoundProfilePackageResponse := {
getBoundProfilePackageOk := {
transactionId := transactionId,
boundProfilePackage := boundProfilePackage
}
}
}
/* GSMA SGP.22, section 5.6.3 (ES9+) */
template (present) RemoteProfileProvisioningRequest
tr_authenticateClientRequest(template (present) octetstring transactionId := ?,
template (present) AuthenticateServerResponse authenticateServerResponse := ?) := {
authenticateClientRequest := {
transactionId := transactionId,
authenticateServerResponse := authenticateServerResponse
}
}
template (value) RemoteProfileProvisioningRequest
ts_authenticateClientRequest(template (value) octetstring transactionId,
template (value) AuthenticateServerResponse authenticateServerResponse) := {
authenticateClientRequest := {
transactionId := transactionId,
authenticateServerResponse := authenticateServerResponse
}
}
template (present) RemoteProfileProvisioningResponse
tr_authenticateClientResponseEs9(template (present) octetstring transactionId := ?,
template (present) StoreMetadataRequest profileMetaData := ?,
template (present) SmdpSigned2 smdpSigned2 := ?,
template (present) octetstring smdpSignature2 := ?,
template (present) Certificate smdpCertificate := ?) := {
authenticateClientResponseEs9 := {
authenticateClientOk := {
transactionId := transactionId,
profileMetaData := profileMetaData,
smdpSigned2 := smdpSigned2,
smdpSignature2 := smdpSignature2,
smdpCertificate := smdpCertificate
}
}
}
template (value) RemoteProfileProvisioningResponse
ts_authenticateClientResponseEs9(template (value) octetstring transactionId,
template (value) StoreMetadataRequest profileMetaData,
template (value) SmdpSigned2 smdpSigned2,
template (value) octetstring smdpSignature2,
template (value) Certificate smdpCertificate) := {
authenticateClientResponseEs9 := {
authenticateClientOk := {
transactionId := transactionId,
profileMetaData := profileMetaData,
smdpSigned2 := smdpSigned2,
smdpSignature2 := smdpSignature2,
smdpCertificate := smdpCertificate
}
}
}
/* GSMA SGP.22, section 5.6.4 (ES9+) */
template (present) RemoteProfileProvisioningRequest
tr_handleNotification(template (present) PendingNotification pendingNotification := ?) := {
handleNotification := {
pendingNotification := pendingNotification
}
}
template (value) RemoteProfileProvisioningRequest
ts_handleNotification(template (value) PendingNotification pendingNotification) := {
handleNotification := {
pendingNotification := pendingNotification
}
}
/* GSMA SGP.22, section 5.6.5 (ES9+) */
template (present) RemoteProfileProvisioningRequest
tr_cancelSessionRequestEs9(template (present) octetstring transactionId := ?,
template (present) CancelSessionResponse cancelSessionResponse := ?) := {
cancelSessionRequestEs9 := {
transactionId := transactionId,
cancelSessionResponse := cancelSessionResponse
}
}
template (value) RemoteProfileProvisioningRequest
ts_cancelSessionRequestEs9(template (value) octetstring transactionId,
template (value) CancelSessionResponse cancelSessionResponse) := {
cancelSessionRequestEs9 := {
transactionId := transactionId,
cancelSessionResponse := cancelSessionResponse
}
}
template (present) RemoteProfileProvisioningResponse
tr_cancelSessionResponseEs9 := {
cancelSessionResponseEs9 := {
cancelSessionOk := { } /* This function has no output data */
}
}
template (value) RemoteProfileProvisioningResponse
ts_cancelSessionResponseEs9 := {
cancelSessionResponseEs9 := {
cancelSessionOk := { } /* This function has no output data */
}
}
/* GSMA SGP.22, section 5.7.3 (ES10x) */
template (present) EuiccConfiguredAddressesResponse
tr_euiccConfiguredAddressesResponse := {
defaultDpAddress := *,
rootDsAddress := ?
}
template (value) EuiccConfiguredAddressesResponse
ts_euiccConfiguredAddressesResponse := {
defaultDpAddress := "smdp.example.com",
rootDsAddress := "smds.example.com"
}
/* GSMA SGP.22, section 5.7.5 (ES10x) */
template (present) PrepareDownloadResponse
tr_prepareDownloadResponse := {
downloadResponseOk := {
euiccSigned2 := {
transactionId := ?,
euiccOtpk := ?,
hashCc := *
},
euiccSignature2 := ?
}
}
template (value) PrepareDownloadResponse
ts_prepareDownloadResponse := {
downloadResponseOk := {
euiccSigned2 := {
transactionId := 'ABCDEF'O,
euiccOtpk := 'AABBCCDDEEFF'O,
hashCc := omit
},
euiccSignature2 := 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'O
}
}
/* GSMA SGP.22, section 5.7.7 (ES10x) */
template (present) GetEuiccChallengeResponse
tr_GetEuiccChallengeResponse := {
euiccChallenge := ?
}
template (value) GetEuiccChallengeResponse
ts_GetEuiccChallengeResponse(template (value) octetstring euiccChallenge := '00112233445566778899AABBCCDDEEFF'O) := {
euiccChallenge := euiccChallenge
}
/* GSMA SGP.22, section 5.7.8 (ES10x) */
template (present) EUICCInfo1
tr_EUICCInfo1 := {
svn := ?,
euiccCiPKIdListForVerification := ?,
euiccCiPKIdListForSigning := ?
}
template (value) EUICCInfo1
ts_EUICCInfo1 := {
svn := '020200'O,
euiccCiPKIdListForVerification := {
'C0BC70BA36929D43B467FF57570530E57AB8FCD8'O,
'F54172BDF98A95D65CBEB88A38A1C11D800A85C3'O
},
euiccCiPKIdListForSigning := {
'C0BC70BA36929D43B467FF57570530E57AB8FCD8'O,
'F54172BDF98A95D65CBEB88A38A1C11D800A85C3'O
}
}
/* GSMA SGP.22, section 5.7.8 (ES10x) */
template (present) EUICCInfo2
tr_EUICCInfo2 := {
profileVersion := ?,
svn := ?,
euiccFirmwareVer := ?,
extCardResource := ?,
uiccCapability := ?,
ts102241Version := *,
globalplatformVersion := *,
rspCapability := ?,
euiccCiPKIdListForVerification := ?,
euiccCiPKIdListForSigning := ?,
euiccCategory := *,
forbiddenProfilePolicyRules := *,
ppVersion := ?,
sasAcreditationNumber := ?,
certificationDataObject := *,
treProperties := *,
treProductReference := *,
additionalEuiccProfilePackageVersions := *
}
template (value) EUICCInfo2
ts_EUICCInfo2 := {
profileVersion := '414243'O,
svn := '02000C'O,
euiccFirmwareVer := '414243'O,
extCardResource := '414243'O,
uiccCapability := '1111111111111111111'B,
ts102241Version := omit,
globalplatformVersion := omit,
rspCapability := '1111'B,
euiccCiPKIdListForVerification := {
'C0BC70BA36929D43B467FF57570530E57AB8FCD8'O,
'F54172BDF98A95D65CBEB88A38A1C11D800A85C3'O
},
euiccCiPKIdListForSigning := {
'C0BC70BA36929D43B467FF57570530E57AB8FCD8'O,
'F54172BDF98A95D65CBEB88A38A1C11D800A85C3'O
},
euiccCategory := omit,
forbiddenProfilePolicyRules := omit,
ppVersion := '414243'O,
sasAcreditationNumber := "123456",
certificationDataObject := omit,
treProperties := omit,
treProductReference := omit,
additionalEuiccProfilePackageVersions := omit
}
/* GSMA SGP.22, section 5.7.10 (ES10x) */
template (value) RetrieveNotificationsListResponse
ts_retrieveNotificationsListResponse := {
notificationList := {
{
profileInstallationResult := {
profileInstallationResultData := {
transactionId := 'AABBCC'O,
notificationMetadata := {
seqNumber := 1234,
profileManagementOperation := '01'B, /* is this correct? (notificationInstall) */
notificationAddress := "smdp.example.com",
iccid := omit
},
smdpOid := id_rsp, /* random OBJECT IDENTIFIER for testing */
finalResult := {
successResult := {
aid := 'A0000005591010FFFFFFFF8900000D00'O,
simaResponse := 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'O
}
}
},
euiccSignPIR := 'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'O
}
}
}
}
/* GSMA SGP.22, section 5.7.11 (ES10x) */
template (present) NotificationSentResponse
tr_notificationSentResponse := {
deleteNotificationStatus := ?
}
template (value) NotificationSentResponse
ts_notificationSentResponse := {
deleteNotificationStatus := 0 /* 0k */
}
/* GSMA SGP.22, section 5.7.13 (ES10x) */
template (present) AuthenticateServerResponse
tr_authenticateServerResponse := {
authenticateResponseOk := {
euiccSigned1 := {
transactionId := ?,
serverAddress := ?,
serverChallenge := ?,
euiccInfo2 := ?,
ctxParams1 := {
ctxParamsForCommonAuthentication := {
matchingId := *,
deviceInfo := {
tac := ?,
deviceCapabilities := {
gsmSupportedRelease := *,
utranSupportedRelease := *,
cdma2000onexSupportedRelease := *,
cdma2000hrpdSupportedRelease := *,
cdma2000ehrpdSupportedRelease := *,
eutranEpcSupportedRelease := *,
contactlessSupportedRelease := *,
rspCrlSupportedVersion := *,
nrEpcSupportedRelease := *,
nr5gcSupportedRelease := *,
eutran5gcSupportedRelease := *,
lpaSvn := *,
catSupportedClasses := *,
euiccFormFactorType := *,
deviceAdditionalFeatureSupport := *
},
imei := *
}
}
}
},
euiccSignature1 := ?,
euiccCertificate := ?,
eumCertificate := ?
}
}
template (value) AuthenticateServerResponse
ts_authenticateServerResponse := {
authenticateResponseOk := {
euiccSigned1 := {
transactionId := 'ABCDEF'O,
serverAddress := "smdp.example.com",
serverChallenge := '01020304050607080910111213141516'O,
euiccInfo2 := ts_EUICCInfo2,
ctxParams1 := {
ctxParamsForCommonAuthentication := {
matchingId := omit,
deviceInfo := {
tac := '12345678'O,
deviceCapabilities := {
gsmSupportedRelease := omit,
utranSupportedRelease := omit,
cdma2000onexSupportedRelease := omit,
cdma2000hrpdSupportedRelease := omit,
cdma2000ehrpdSupportedRelease := omit,
eutranEpcSupportedRelease := omit,
contactlessSupportedRelease := omit,
rspCrlSupportedVersion := omit,
nrEpcSupportedRelease := omit,
nr5gcSupportedRelease := omit,
eutran5gcSupportedRelease := omit,
lpaSvn := omit,
catSupportedClasses := omit,
euiccFormFactorType := omit,
deviceAdditionalFeatureSupport := omit
},
imei := omit
}
}
}
},
euiccSignature1 := '12345678'O,
euiccCertificate := ts_cert_euicc_nist,
// euiccCertificate := ts_cert_euicc_brp,
eumCertificate := ts_cert_eum_nist
// eumCertificate := ts_cert_eum_brp
}
}
/* GSMA SGP.22, section 5.7.13 (ES10x) */
template (present) CancelSessionResponseOk
tr_cancelSessionResponseOk := {
euiccCancelSessionSigned := {
transactionId := ?,
smdpOid := ?,
reason := ?
},
euiccCancelSessionSignature := ?
}
template (value) CancelSessionResponseOk
ts_cancelSessionResponseOk := {
euiccCancelSessionSigned := {
transactionId := 'AABBCC'O,
smdpOid := id_rspRole_euicc,
reason := 5
},
euiccCancelSessionSignature := '1234567890'O
}
template (present) CancelSessionResponse
tr_cancelSessionResponse := {
cancelSessionResponseOk := tr_cancelSessionResponseOk
}
template (value) CancelSessionResponse
ts_cancelSessionResponse := {
cancelSessionResponseOk := ts_cancelSessionResponseOk
}
/* GSMA SGP.22, section 5.7.20 (ES10x) */
template (present) GetEuiccDataResponse
tr_getEuiccDataResponse := {
eidValue := ?
}
template (value) GetEuiccDataResponse
ts_getEuiccDataResponse(template (value) octetstring eidValue := '000102030405060708090A0B0C0D0E0F'O) := {
eidValue := eidValue
}
}

View File

@ -0,0 +1,54 @@
module RSPDefinitions_Types {
import from RSPDefinitions all;
import from Native_Functions all;
external function dec_GetEuiccChallengeResponse(in octetstring stream) return GetEuiccChallengeResponse;
external function enc_GetEuiccChallengeResponse(in GetEuiccChallengeResponse msg) return octetstring;
external function dec_EUICCInfo1(in octetstring stream) return EUICCInfo1;
external function enc_EUICCInfo1(in EUICCInfo1 msg) return octetstring;
external function dec_EUICCInfo2(in octetstring stream) return EUICCInfo2;
external function enc_EUICCInfo2(in EUICCInfo2 msg) return octetstring;
external function dec_AuthenticateServerResponse(in octetstring stream) return AuthenticateServerResponse;
external function enc_AuthenticateServerResponse(in AuthenticateServerResponse msg) return octetstring;
external function dec_CancelSessionResponse(in octetstring stream) return CancelSessionResponse;
external function enc_CancelSessionResponse(in CancelSessionResponse msg) return octetstring;
external function dec_PrepareDownloadResponse(in octetstring stream) return PrepareDownloadResponse;
external function enc_PrepareDownloadResponse(in PrepareDownloadResponse msg) return octetstring;
external function dec_ProfileInstallationResult(in octetstring stream) return ProfileInstallationResult;
external function enc_ProfileInstallationResult(in ProfileInstallationResult msg) return octetstring;
external function dec_NotificationSentResponse(in octetstring stream) return NotificationSentResponse;
external function enc_NotificationSentResponse(in NotificationSentResponse msg) return octetstring;
external function dec_RetrieveNotificationsListResponse(in octetstring stream) return RetrieveNotificationsListResponse;
external function enc_RetrieveNotificationsListResponse(in RetrieveNotificationsListResponse msg) return octetstring;
external function dec_GetEuiccDataResponse(in octetstring stream) return GetEuiccDataResponse;
external function enc_GetEuiccDataResponse(in GetEuiccDataResponse msg) return octetstring;
external function dec_EuiccConfiguredAddressesResponse(in octetstring stream) return EuiccConfiguredAddressesResponse;
external function enc_EuiccConfiguredAddressesResponse(in EuiccConfiguredAddressesResponse msg) return octetstring;
external function dec_PendingNotification(in octetstring stream) return PendingNotification;
external function enc_PendingNotification(in PendingNotification msg) return octetstring;
external function dec_ServerSigned1(in octetstring stream) return ServerSigned1;
external function enc_ServerSigned1(in ServerSigned1 msg) return octetstring;
external function dec_BoundProfilePackage(in octetstring stream) return BoundProfilePackage;
external function enc_BoundProfilePackage(in BoundProfilePackage msg) return octetstring;
external function dec_StoreMetadataRequest(in octetstring stream) return StoreMetadataRequest;
external function enc_StoreMetadataRequest(in StoreMetadataRequest msg) return octetstring;
external function dec_SmdpSigned2(in octetstring stream) return SmdpSigned2;
external function enc_SmdpSigned2(in SmdpSigned2 msg) return octetstring;
}

View File

@ -0,0 +1,806 @@
-- 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

View File

@ -0,0 +1,113 @@
#include "SGP32Definitions.hh"
namespace SGP32Definitions__Types {
using namespace SGP32Definitions;
using namespace PKIX1Explicit88;
TTCN_Module SGP32Definitions__EncDec("SGP32Definitions_EncDec", __DATE__, __TIME__);
OCTETSTRING enc__EsipaMessageFromIpaToEim(const EsipaMessageFromIpaToEim &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(EsipaMessageFromIpaToEim_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
EsipaMessageFromIpaToEim dec__EsipaMessageFromIpaToEim(const OCTETSTRING &stream) {
TTCN_Buffer buf;
EsipaMessageFromIpaToEim msg;
buf.put_os(stream);
msg.decode(EsipaMessageFromIpaToEim_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__EsipaMessageFromEimToIpa(const EsipaMessageFromEimToIpa &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(EsipaMessageFromEimToIpa_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
EsipaMessageFromEimToIpa dec__EsipaMessageFromEimToIpa(const OCTETSTRING &stream) {
TTCN_Buffer buf;
EsipaMessageFromEimToIpa msg;
buf.put_os(stream);
msg.decode(EsipaMessageFromEimToIpa_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__EuiccPackageResult(const EuiccPackageResult &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(EuiccPackageResult_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
EuiccPackageResult dec__EuiccPackageResult(const OCTETSTRING &stream) {
TTCN_Buffer buf;
EuiccPackageResult msg;
buf.put_os(stream);
msg.decode(EuiccPackageResult_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__GetCertsResponse(const GetCertsResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(GetCertsResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
GetCertsResponse dec__GetCertsResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
GetCertsResponse msg;
buf.put_os(stream);
msg.decode(GetCertsResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__GetEimConfigurationDataResponse(const GetEimConfigurationDataResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(GetEimConfigurationDataResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
GetEimConfigurationDataResponse dec__GetEimConfigurationDataResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
GetEimConfigurationDataResponse msg;
buf.put_os(stream);
msg.decode(GetEimConfigurationDataResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
OCTETSTRING enc__AddInitialEimResponse(const AddInitialEimResponse &msg) {
TTCN_Buffer buf;
buf.clear();
msg.encode(AddInitialEimResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
return OCTETSTRING(buf.get_len(), buf.get_data());
}
AddInitialEimResponse dec__AddInitialEimResponse(const OCTETSTRING &stream) {
TTCN_Buffer buf;
AddInitialEimResponse msg;
buf.put_os(stream);
msg.decode(AddInitialEimResponse_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
return msg;
}
}

View File

@ -0,0 +1,433 @@
/* 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 := {
transactionId := ?,
euiccChallenge := euiccChallenge,
serverAddress := serverAddress,
serverChallenge := ?
},
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 := {
transactionId := 'ABCDEF'O,
euiccChallenge := euiccChallenge,
serverAddress := "smdp.example.com",
serverChallenge := '01020304050607080910111213141516'O
},
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) := {
initiateAuthenticationRequestEsipa := {
euiccChallenge := euiccChallenge,
smdpAddress := omit,
euiccInfo1 := omit
}
}
/* GSMA SGP.32, section 6.3.2.2 */
template (present) EsipaMessageFromIpaToEim
tr_authenticateClientRequestEsipa := {
authenticateClientRequestEsipa := {
transactionId := ?,
authenticateServerResponse := {
authenticateResponseOk := ?
}
}
}
/* TODO: create coresponding ts_ template */
/* 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 6.3.2.6 */
template (value) EsipaMessageFromEimToIpa
ts_getEimPackageResponse_euiccPkgReq := {
getEimPackageResponse := {
euiccPackageRequest := {
euiccPackageSigned := {
eimId := "myEim",
eidValue := '00112233445566778899AABBCCDDEEFF'O,
counterValue := 123,
transactionId := omit,
euiccPackage := {
psmoList := {
{
configureAutoEnable := {
autoEnableFlag := NULL,
smdpOid := omit,
smdpAddress := omit
}
}
}
}
},
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) 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 := {
{
configureAutoEnableResult := 0
}
}
},
euiccSignEPR := 'AABBCCDDEEFF'O
}
}
/* GSMA SGP.32, section 6.3.2.7 */
/* TODO rename tr_provideEimPackageResultResponse to something like tr_provideEimPackageResultResponse_eimAck */
template (present) EsipaMessageFromEimToIpa
tr_provideEimPackageResultResponse := {
provideEimPackageResultResponse := {
eimAcknowledgements := *
}
}
template (value) EsipaMessageFromEimToIpa
ts_provideEimPackageResultResponse(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) GetEimConfigurationDataResponse
tr_getEimConfigurationDataResponse := {
eimConfigurationDataList := ?
}
template (value) GetEimConfigurationDataResponse
ts_getEimConfigurationDataResponse(template (value) charstring eimFqdn := "127.0.0.1") := {
eimConfigurationDataList := {
{
eimId := "myEIM",
eimFqdn := eimFqdn,
eimIdType := omit,
counterValue := omit,
associationToken := 123,
eimPublicKeyData := omit,
trustedPublicKeyDataTls := omit,
eimSupportedProtocol := omit,
euiccCiPKId := omit
}
}
}
/* GSMA SGP.32, section 5.9.4 */
template (present) AddInitialEimResponse
tr_addInitialEimResponse := {
addInitialEimOk := ?
}
template (value) AddInitialEimResponse
ts_addInitialEimResponse(template (value) charstring eimFqdn := "127.0.0.1") := {
addInitialEimOk := {
{
addOk := NULL
}
}
}
}

View File

@ -0,0 +1,24 @@
module SGP32Definitions_Types {
import from SGP32Definitions all;
import from Native_Functions all;
external function dec_EsipaMessageFromIpaToEim(in octetstring stream) return EsipaMessageFromIpaToEim;
external function enc_EsipaMessageFromIpaToEim(in EsipaMessageFromIpaToEim msg) return octetstring;
external function dec_EsipaMessageFromEimToIpa(in octetstring stream) return EsipaMessageFromEimToIpa;
external function enc_EsipaMessageFromEimToIpa(in EsipaMessageFromEimToIpa msg) return octetstring;
external function dec_EuiccPackageResult(in octetstring stream) return EuiccPackageResult;
external function enc_EuiccPackageResult(in EuiccPackageResult msg) return octetstring;
external function dec_GetCertsResponse(in octetstring stream) return GetCertsResponse;
external function enc_GetCertsResponse(in GetCertsResponse msg) return octetstring;
external function dec_GetEimConfigurationDataResponse(in octetstring stream) return GetEimConfigurationDataResponse;
external function enc_GetEimConfigurationDataResponse(in GetEimConfigurationDataResponse msg) return octetstring;
external function dec_AddInitialEimResponse(in octetstring stream) return AddInitialEimResponse;
external function enc_AddInitialEimResponse(in AddInitialEimResponse msg) return octetstring;
}