-- Module MTSAbstractService (X.509:11/2008)
-- See also ITU-T X.509 (11/2008)
-- See also the index of all ASN.1 assignments needed in this document

/* The follow module is an abstract of the module specified by ITU-T Rec. X.411 | ISO/IEC 10021-4. An  import statement has been changed to only import from the current Directory Specifications not to be dependent on modules from previous editions.*/
MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
  mts-abstract-service(1) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
BEGIN

--EXPORTS All
IMPORTS
  PresentationAddress
    FROM SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
      selectedAttributeTypes(5) 6};

G3FacsimileNonBasicParameters ::= BIT STRING {
  two-dimensional(8), -- As defined in ITU-T Recommendation T.30
  fine-resolution(9),
  unlimited-length(20), -- These bit values are chosen such that when
  b4-length(21), -- encoded using ASN.1 Basic Encoding Rules
  a3-width(22), -- the resulting octets have the same values
  b4-width(23), -- as for T.30 encoding
  t6-coding(25),
  uncompressed(30), -- Trailing zero bits are not significant
  width-middle-864-of-1728(37), -- It is recommended that implementations
  width-middle-1216-of-1728(38), -- should not encode more than 32 bits unless
  resolution-type(44), -- higher numbered bits are non-zero
  resolution-400x400(45), resolution-300x300(46), resolution-8x15(47), 
  edi(49), dtm(50), bft(51), mixed-mode(58), character-mode(60),
  twelve-bits(65), preferred-huffmann(66), full-colour(67), jpeg(68),
  processable-mode-26(71)}

ORAddress ::= SEQUENCE {
  built-in-standard-attributes        BuiltInStandardAttributes,
  built-in-domain-defined-attributes  BuiltInDomainDefinedAttributes OPTIONAL,
  -- see also teletex-domain-defined-attributes
  extension-attributes                ExtensionAttributes OPTIONAL
}

--	The OR-address is semantically absent from the OR-name if the built-in-standard-attribute
--	sequence is empty and the built-in-domain-defined-attributes and extension-attributes are both omitted.
--	Built-in Standard Attributes
BuiltInStandardAttributes ::= SEQUENCE {
  country-name                CountryName OPTIONAL,
  administration-domain-name  AdministrationDomainName OPTIONAL,
  network-address             [0]  NetworkAddress OPTIONAL,
  -- see also extended-network-address
  terminal-identifier         [1]  TerminalIdentifier OPTIONAL,
  private-domain-name         [2]  PrivateDomainName OPTIONAL,
  organization-name           [3]  OrganizationName OPTIONAL,
  -- see also teletex-organization-name
  numeric-user-identifier     [4]  NumericUserIdentifier OPTIONAL,
  personal-name               [5]  PersonalName OPTIONAL,
  -- see also teletex-personal-name
  organizational-unit-names   [6]  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]  PrintableString(SIZE (1..ub-surname-length)),
  given-name
    [1]  PrintableString(SIZE (1..ub-given-name-length)) OPTIONAL,
  initials
    [2]  PrintableString(SIZE (1..ub-initials-length)) OPTIONAL,
  generation-qualifier
    [3]  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]  EXTENSION-ATTRIBUTE.&id({ExtensionAttributeTable}),
  extension-attribute-value
    [1]  EXTENSION-ATTRIBUTE.&Type
           ({ExtensionAttributeTable}{@extension-attribute-type})
}

EXTENSION-ATTRIBUTE ::= CLASS {
  &id    INTEGER(0..ub-extension-attributes) UNIQUE,
  &Type  
}WITH SYNTAX {&Type
              IDENTIFIED BY &id
}

ExtensionAttributeTable EXTENSION-ATTRIBUTE ::=
  {common-name | teletex-common-name | universal-common-name |
   teletex-organization-name | universal-organization-name |
   teletex-personal-name | universal-personal-name |
   teletex-organizational-unit-names | universal-organizational-unit-names |
   teletex-domain-defined-attributes | universal-domain-defined-attributes |
   pds-name | physical-delivery-country-name | postal-code |
   physical-delivery-office-name | universal-physical-delivery-office-name |
   physical-delivery-office-number | universal-physical-delivery-office-number
   | extension-OR-address-components |
   universal-extension-OR-address-components | physical-delivery-personal-name
   | universal-physical-delivery-personal-name |
   physical-delivery-organization-name |
   universal-physical-delivery-organization-name |
   extension-physical-delivery-address-components |
   universal-extension-physical-delivery-address-components |
   unformatted-postal-address | universal-unformatted-postal-address |
   street-address | universal-street-address | post-office-box-address |
   universal-post-office-box-address | poste-restante-address |
   universal-poste-restante-address | unique-postal-name |
   universal-unique-postal-name | local-postal-attributes |
   universal-local-postal-attributes | extended-network-address | terminal-type
  }

--	Extension Standard Attributes
common-name EXTENSION-ATTRIBUTE ::= {CommonName
                                     IDENTIFIED BY  1
}

CommonName ::= PrintableString(SIZE (1..ub-common-name-length))

teletex-common-name EXTENSION-ATTRIBUTE ::= {TeletexCommonName
                                             IDENTIFIED BY  2
}

TeletexCommonName ::= TeletexString(SIZE (1..ub-common-name-length))

universal-common-name EXTENSION-ATTRIBUTE ::= {
  UniversalCommonName
  IDENTIFIED BY  24
}

UniversalCommonName ::= UniversalOrBMPString{ub-common-name-length}

teletex-organization-name EXTENSION-ATTRIBUTE ::= {
  TeletexOrganizationName
  IDENTIFIED BY  3
}

TeletexOrganizationName ::=
  TeletexString(SIZE (1..ub-organization-name-length))

universal-organization-name EXTENSION-ATTRIBUTE ::= {
  UniversalOrganizationName
  IDENTIFIED BY  25
}

UniversalOrganizationName ::= UniversalOrBMPString{ub-organization-name-length}

teletex-personal-name EXTENSION-ATTRIBUTE ::= {
  TeletexPersonalName
  IDENTIFIED BY  4
}

TeletexPersonalName ::= SET {
  surname               [0]  TeletexString(SIZE (1..ub-surname-length)),
  given-name
    [1]  TeletexString(SIZE (1..ub-given-name-length)) OPTIONAL,
  initials
    [2]  TeletexString(SIZE (1..ub-initials-length)) OPTIONAL,
  generation-qualifier
    [3]  TeletexString(SIZE (1..ub-generation-qualifier-length)) OPTIONAL
}

universal-personal-name EXTENSION-ATTRIBUTE ::= {
  UniversalPersonalName
  IDENTIFIED BY  26
}

UniversalPersonalName ::= SET {
  surname               [0]  UniversalOrBMPString{ub-universal-surname-length},
  -- If a language is specified within surname, then that language applies to each of the following
  -- optional components unless the component specifies another language.
  given-name
    [1]  UniversalOrBMPString{ub-universal-given-name-length} OPTIONAL,
  initials
    [2]  UniversalOrBMPString{ub-universal-initials-length} OPTIONAL,
  generation-qualifier
    [3]  UniversalOrBMPString{ub-universal-generation-qualifier-length}
      OPTIONAL
}

teletex-organizational-unit-names EXTENSION-ATTRIBUTE ::= {
  TeletexOrganizationalUnitNames
  IDENTIFIED BY  5
}

TeletexOrganizationalUnitNames ::=
  SEQUENCE SIZE (1..ub-organizational-units) OF TeletexOrganizationalUnitName

TeletexOrganizationalUnitName ::=
  TeletexString(SIZE (1..ub-organizational-unit-name-length))

universal-organizational-unit-names EXTENSION-ATTRIBUTE ::= {
  UniversalOrganizationalUnitNames
  IDENTIFIED BY  27
}

UniversalOrganizationalUnitNames ::=
  SEQUENCE SIZE (1..ub-organizational-units) OF UniversalOrganizationalUnitName

-- If a unit name specifies a language, then that language applies to subordinate unit names unless
-- the subordinate specifies another language.
UniversalOrganizationalUnitName ::=
  UniversalOrBMPString{ub-organizational-unit-name-length}

UniversalOrBMPString{INTEGER:ub-string-length} ::= SET {
  character-encoding
    CHOICE {two-octets   BMPString(SIZE (1..ub-string-length)),
            four-octets  UniversalString(SIZE (1..ub-string-length))},
  iso-639-language-code  PrintableString(SIZE (2 | 5)) OPTIONAL
}

pds-name EXTENSION-ATTRIBUTE ::= {PDSName
                                  IDENTIFIED BY  7
}

PDSName ::= PrintableString(SIZE (1..ub-pds-name-length))

physical-delivery-country-name EXTENSION-ATTRIBUTE ::= {
  PhysicalDeliveryCountryName
  IDENTIFIED BY  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 EXTENSION-ATTRIBUTE ::= {PostalCode
                                     IDENTIFIED BY  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 EXTENSION-ATTRIBUTE ::= {
  PhysicalDeliveryOfficeName
  IDENTIFIED BY  10
}

PhysicalDeliveryOfficeName ::= PDSParameter

universal-physical-delivery-office-name EXTENSION-ATTRIBUTE ::= {
  UniversalPhysicalDeliveryOfficeName
  IDENTIFIED BY  29
}

UniversalPhysicalDeliveryOfficeName ::= UniversalPDSParameter

physical-delivery-office-number EXTENSION-ATTRIBUTE ::= {
  PhysicalDeliveryOfficeNumber
  IDENTIFIED BY  11
}

PhysicalDeliveryOfficeNumber ::= PDSParameter

universal-physical-delivery-office-number EXTENSION-ATTRIBUTE ::= {
  UniversalPhysicalDeliveryOfficeNumber
  IDENTIFIED BY  30
}

UniversalPhysicalDeliveryOfficeNumber ::= UniversalPDSParameter

extension-OR-address-components EXTENSION-ATTRIBUTE ::= {
  ExtensionORAddressComponents
  IDENTIFIED BY  12
}

ExtensionORAddressComponents ::= PDSParameter

universal-extension-OR-address-components EXTENSION-ATTRIBUTE ::= {
  UniversalExtensionORAddressComponents
  IDENTIFIED BY  31
}

UniversalExtensionORAddressComponents ::= UniversalPDSParameter

physical-delivery-personal-name EXTENSION-ATTRIBUTE ::= {
  PhysicalDeliveryPersonalName
  IDENTIFIED BY  13
}

PhysicalDeliveryPersonalName ::= PDSParameter

universal-physical-delivery-personal-name EXTENSION-ATTRIBUTE ::= {
  UniversalPhysicalDeliveryPersonalName
  IDENTIFIED BY  32
}

UniversalPhysicalDeliveryPersonalName ::= UniversalPDSParameter

physical-delivery-organization-name EXTENSION-ATTRIBUTE ::= {
  PhysicalDeliveryOrganizationName
  IDENTIFIED BY  14
}

PhysicalDeliveryOrganizationName ::= PDSParameter

universal-physical-delivery-organization-name EXTENSION-ATTRIBUTE ::= 
{UniversalPhysicalDeliveryOrganizationName
 IDENTIFIED BY  33
}

UniversalPhysicalDeliveryOrganizationName ::= UniversalPDSParameter

extension-physical-delivery-address-components EXTENSION-ATTRIBUTE ::= 
{ExtensionPhysicalDeliveryAddressComponents
 IDENTIFIED BY  15
}

ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter

universal-extension-physical-delivery-address-components EXTENSION-ATTRIBUTE
  ::= {UniversalExtensionPhysicalDeliveryAddressComponents
       IDENTIFIED BY  34
}

UniversalExtensionPhysicalDeliveryAddressComponents ::= UniversalPDSParameter

unformatted-postal-address EXTENSION-ATTRIBUTE ::= {
  UnformattedPostalAddress
  IDENTIFIED BY  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
}

universal-unformatted-postal-address EXTENSION-ATTRIBUTE ::= {
  UniversalUnformattedPostalAddress
  IDENTIFIED BY  35
}

UniversalUnformattedPostalAddress ::=
  UniversalOrBMPString{ub-unformatted-address-length}

street-address EXTENSION-ATTRIBUTE ::= {StreetAddress
                                        IDENTIFIED BY  17
}

StreetAddress ::= PDSParameter

universal-street-address EXTENSION-ATTRIBUTE ::= {
  UniversalStreetAddress
  IDENTIFIED BY  36
}

UniversalStreetAddress ::= UniversalPDSParameter

post-office-box-address EXTENSION-ATTRIBUTE ::= {
  PostOfficeBoxAddress
  IDENTIFIED BY  18
}

PostOfficeBoxAddress ::= PDSParameter

universal-post-office-box-address EXTENSION-ATTRIBUTE ::= {
  UniversalPostOfficeBoxAddress
  IDENTIFIED BY  37
}

UniversalPostOfficeBoxAddress ::= UniversalPDSParameter

poste-restante-address EXTENSION-ATTRIBUTE ::= {
  PosteRestanteAddress
  IDENTIFIED BY  19
}

PosteRestanteAddress ::= PDSParameter

universal-poste-restante-address EXTENSION-ATTRIBUTE ::= {
  UniversalPosteRestanteAddress
  IDENTIFIED BY  38
}

UniversalPosteRestanteAddress ::= UniversalPDSParameter

unique-postal-name EXTENSION-ATTRIBUTE ::= {UniquePostalName
                                            IDENTIFIED BY  20
}

UniquePostalName ::= PDSParameter

universal-unique-postal-name EXTENSION-ATTRIBUTE ::= {
  UniversalUniquePostalName
  IDENTIFIED BY  39
}

UniversalUniquePostalName ::= UniversalPDSParameter

local-postal-attributes EXTENSION-ATTRIBUTE ::= {
  LocalPostalAttributes
  IDENTIFIED BY  21
}

LocalPostalAttributes ::= PDSParameter

universal-local-postal-attributes EXTENSION-ATTRIBUTE ::= {
  UniversalLocalPostalAttributes
  IDENTIFIED BY  40
}

UniversalLocalPostalAttributes ::= UniversalPDSParameter

PDSParameter ::= SET {
  printable-string  PrintableString(SIZE (1..ub-pds-parameter-length)) OPTIONAL,
  teletex-string    TeletexString(SIZE (1..ub-pds-parameter-length)) OPTIONAL
}

UniversalPDSParameter ::= UniversalOrBMPString{ub-pds-parameter-length}

extended-network-address EXTENSION-ATTRIBUTE ::= {
  ExtendedNetworkAddress
  IDENTIFIED BY  22
}

ExtendedNetworkAddress ::= CHOICE {
  e163-4-address
    SEQUENCE {number
                [0]  NumericString(SIZE (1..ub-e163-4-number-length)),
              sub-address
                [1]  NumericString(SIZE (1..ub-e163-4-sub-address-length))
                  OPTIONAL},
  psap-address    [0]  PresentationAddress
}

terminal-type EXTENSION-ATTRIBUTE ::= {TerminalType
                                       IDENTIFIED BY  23
}

TerminalType ::= INTEGER {
  telex(3), teletex(4), g3-facsimile(5), g4-facsimile(6), ia5-terminal(7),
  videotex(8)}(0..ub-integer-options)

--	Extension Domain-defined Attributes
teletex-domain-defined-attributes EXTENSION-ATTRIBUTE ::= {
  TeletexDomainDefinedAttributes
  IDENTIFIED BY  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))
}

universal-domain-defined-attributes EXTENSION-ATTRIBUTE ::= {
  UniversalDomainDefinedAttributes
  IDENTIFIED BY  28
}

UniversalDomainDefinedAttributes ::=
  SEQUENCE SIZE (1..ub-domain-defined-attributes) OF
    UniversalDomainDefinedAttribute

UniversalDomainDefinedAttribute ::= SEQUENCE {
  type   UniversalOrBMPString{ub-domain-defined-attribute-type-length},
  value  UniversalOrBMPString{ub-domain-defined-attribute-value-length}
}

ub-integer-options INTEGER ::= 256

ub-e163-4-number-length INTEGER ::= 15

ub-e163-4-sub-address-length INTEGER ::= 40

ub-unformatted-address-length INTEGER ::= 180

ub-pds-parameter-length INTEGER ::= 30

ub-pds-physical-address-lines INTEGER ::= 6

ub-postal-code-length INTEGER ::= 16

ub-pds-name-length INTEGER ::= 16

ub-universal-surname-length INTEGER ::= 64

ub-universal-given-name-length INTEGER ::= 40

ub-universal-initials-length INTEGER ::= 16

ub-universal-generation-qualifier-length INTEGER ::= 16

ub-common-name-length INTEGER ::= 64

ub-extension-attributes INTEGER ::= 256

ub-domain-defined-attribute-type-length INTEGER ::= 8

ub-domain-defined-attribute-value-length INTEGER ::= 128

ub-domain-defined-attributes INTEGER ::= 4

ub-organizational-unit-name-length INTEGER ::= 32

ub-organizational-units INTEGER ::= 4

ub-generation-qualifier-length INTEGER ::= 3

ub-initials-length INTEGER ::= 5

ub-given-name-length INTEGER ::= 16

ub-surname-length INTEGER ::= 40

ub-numeric-user-id-length INTEGER ::= 32

ub-organization-name-length INTEGER ::= 64

ub-terminal-id-length INTEGER ::= 24

ub-x121-address-length INTEGER ::= 16

ub-domain-name-length INTEGER ::= 16

ub-country-name-alpha-length INTEGER ::= 2

ub-country-name-numeric-length INTEGER ::= 3

END -- MTSAbstractService
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D