PKIX1 { }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
id-ce OBJECT IDENTIFIER  ::=  {joint-iso-ccitt(2) ds(5) 29}
id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 35 }
AuthorityKeyIdentifier ::= SEQUENCE {
      kfCE {
   built-in-standard-attributes BuiltInStandardAttributes,
   built-in-domain-defined-attributes
                        BuiltInDomainDefinedAttributes OPTIONAL,
   -- see also teletex-domain-defined-attributes
   extension-attributes ExtensionAttributes OPTIONAL }
BuiltInStandardAttributes ::= SEQUENCE {
   country-name CountryName OPTIONAL,
   adminisame-numeric-length)),
   iame-length)),
   printable PrintableString (SIZE (1..ub-domain-name-length)) }
OrganizationName ::= PrintableString
                            (SIZE (2..ub-organization-name-length))
NumericUserIdentifier ::= NumericString
                            (SIZE (1..ub-numeric-user-id-length))
Pe      (SIZE (ub-country-name-alpha-length)) }
AdministrationDomainName ::= [APPLICATION 2] EXPLICIT CHOICE {
   numeric NumericString (SIZE (0..ub-domain-name-length)),
   printable PrintableString (SIZE (0..ub-domain-na1] EXPLICIT TerminalIdentifier OPTIONAL,
   private-domain-name  [2] EXPLICIT PrivateDomainNameAL,
   generation-qualifier [2] PrintableString
                (SIZE (1..ub-generation-qualifier-length)) OPTIONAL }
OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
                 rganizationalUnitName ::= PrintableString (SIZE
                        (1..ub-organizational-unit-name-length))
BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
                                (1..ub-domain-definEQUENCE  {
   z p                         (SIZE (ub-country-name-alpha-length)) }
AdministrationDomainName ::= [APPLICATION 2] EXPLICIT CHOICE {
   numeric NumericString (SIZE (0..ub-domain-name-length)),
   printable PrintableString (SIZE (0..ub-domain-na1] EXPLICIT TerminalIdentifier OPTIONAL,
   private-domain-name  [2] EXPLICIT PrivateDomainNameAL,
   generation-qualifier [2] PrintableString
                (SIZE (1..ub-generation-qualifier-length)) OPTIONAL }
OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
                 rganizationalUnitName ::= PrintableString (SIZE
                        (1..ub-organizational-unit-name-length))
BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
                                (1..ub-domain-definEQUENCE  {
   vateDomainName ::= CHOICE {
   numeric NumericString (SIZE (1..ub-domain-name-length)),
   printable PrintableString (SIZE (1..ub-domain-name-length)) }
OrganizationName ::= PrintableString
                            (SIZE (2..ub-organization-name-length))
NumericUserIdentifier ::= NumericString
                            (SIZE (1..ub-numeric-user-id-length))
Pe  (SIZE (ub-country-name-alpha-length)) }
AdministrationDomainName ::= [APPLICATION 2] EXPLICIT CHOICE {
   numeric NumericString (SIZE (0..ub-domain-name-length)),
   printable PrintableString (SIZE (0..ub-domain-name-length)) }
NetworkAddress ::= X121Address  -- see also exode PrintableString
                (SIZE (ub-country-name-alpha-length)) }
AdministrationDomainName ::= [APPLICATION 2] EXPLICIT CHOICE {
   numeric NumericString (SIZE (0..ub-domain-name-length)),
   printable PrintableString (SIZE (0..ub-domain-na1] EXPLICIT TerminalIdentifier OPTIONAL,
   private-domain-name  [2] EXPLICIT PrivateDomainNameAL,
   generation-qualifier [2] PrintableString
                (SIZE (1..ub-generation-qualifier-length)) OPTIONAL }
OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
                 rganizationalUnitName ::= PrintableString (SIZE
                        (1..ub-organizational-unit-name-length))
BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
                                (1..ub-domain-definEQUENCE  {
   z p                         (SIZE (ub-country-name-alpha-length)) }
AdministrationDomainName ::= [APPLICATION 2] EXPLICIT CHOICE {
   numeric NumericString (SIZE (0..ub-domain-name-length)),
   printable PrintableString (SIZE (0..ub-domain-na1] EXPLICIT TerminalIdentifier OPTIONAL,
   private-domain-name  [2] EXPLICIT PrivateDomainNameAL,
   generation-qualifier [2] PrintableString
                (SIZE (1..ub-generation-qualifier-length)) OPTIONAL }
OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
                 rganizationalUnitName ::= PrintableString (SIZE
                        (1..ub-organizational-unit-name-length))
BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
                                (1..ub-domain-definEQUENCE  {
   z p             INTEGER,
     q             INTEGER,
     g                           BuiltInDomainDefinedAttribute
BuiltInDomainDefinedAttribute ::= SEQUENCE {
   type PrintableString (SIZE
                        (1..ub-domain-defined-attribute-type-lengt {
   extension-attribute-type [0] EXPLICIT INTEGER (0..ub-extension-attributes),
   extension-attribute-value [1] EXPLINumericString (SIZE (2..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))
NumericUserIdentifier ::= NumericString
                            (SIZE (1..ub-numeric-user-id-length))
PersonalName ::= SET {
   surt-name-length))
BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
                                (1..ub-domain-definEQUENCE  {
   z p             INTEGER,
     q             INTEGER,
     g                           BuiltInDomainDefinedAttribute
BuiltInDomainDefinedAttribute ::= SEQUENCE {
   type PrintableString (SIZE
                        (1..ub-domain-defined-attribute-type-lengt {
   extension-attribute-type [0] EXPLICIT INTEGER (0..ub-extension-attributes),
   extension-attribute-value [1] EXPLICIT
                        ANY DEFINED BY extension-attribute-type }
common-name INTEGER ::= 1
CommonName ::= PrintableString (SIZE (1..ub-common-name-length))
teletex-common-name INTEGER ::= 2
TeletexCommonName ::= Th)) OPTIONAL }
teletex-organizational-unit-names INTEGER ::= 5
TeletexOrganizationalUnitNames ::= SEQUENCE SIZE
        (1..ub-organizational-units) OF TeleterOxganizationalUnitName
TeletexO