aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/test/asn1_SUITE_data/rfcs/PKIX-X400Address-2009.asn1
blob: 41cbaea67e8e20137dcfc818c6759a33d8122a51 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
  --
  --  This module is used to isolate all the X.400 naming information.
  --  There is no reason to expect this to occur in a PKIX certificate.
  --

  PKIX-X400Address-2009
      {iso(1) identified-organization(3) dod(6) internet(1) security(5)
      mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-x400address-02(60) }
  DEFINITIONS EXPLICIT TAGS ::=
  BEGIN

  -- 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

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

  ExtensionAttribute ::=  SEQUENCE {
     extension-attribute-type [0] IMPLICIT EXTENSION-ATTRIBUTE.
          &id({SupportedExtensionAttributes}),
     extension-attribute-value [1] EXTENSION-ATTRIBUTE.
          &Type({SupportedExtensionAttributes}
              {@extension-attribute-type})}

  SupportedExtensionAttributes EXTENSION-ATTRIBUTE ::= {
      ea-commonName | ea-teletexCommonName | ea-teletexOrganizationName
      | ea-teletexPersonalName | ea-teletexOrganizationalUnitNames |
      ea-pDSName | ea-physicalDeliveryCountryName | ea-postalCode |
      ea-physicalDeliveryOfficeName | ea-physicalDeliveryOfficeNumber |
      ea-extensionORAddressComponents | ea-physicalDeliveryPersonalName
      | ea-physicalDeliveryOrganizationName |
      ea-extensionPhysicalDeliveryAddressComponents |
      ea-unformattedPostalAddress | ea-streetAddress |
      ea-postOfficeBoxAddress | ea-posteRestanteAddress |
      ea-uniquePostalName | ea-localPostalAttributes |
      ea-extendedNetworkAddress | ea-terminalType |
      ea-teletexDomainDefinedAttributes, ... }

  -- Extension types and attribute values

  ea-commonName EXTENSION-ATTRIBUTE ::= { PrintableString
      (SIZE (1..ub-common-name-length)) IDENTIFIED BY 1 }

  ea-teletexCommonName EXTENSION-ATTRIBUTE ::= {TeletexString
      (SIZE (1..ub-common-name-length)) IDENTIFIED BY 2 }

  ea-teletexOrganizationName EXTENSION-ATTRIBUTE::= { TeletexString
      (SIZE (1..ub-organization-name-length)) IDENTIFIED BY 3 }

  ea-teletexPersonalName EXTENSION-ATTRIBUTE ::= {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 } IDENTIFIED BY 4 }

  ea-teletexOrganizationalUnitNames EXTENSION-ATTRIBUTE ::=
      { SEQUENCE SIZE (1..ub-organizational-units) OF
            TeletexOrganizationalUnitName IDENTIFIED BY 5 }

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

  ea-pDSName EXTENSION-ATTRIBUTE ::= {PrintableString
      (SIZE (1..ub-pds-name-length)) IDENTIFIED BY 7 }

  ea-physicalDeliveryCountryName EXTENSION-ATTRIBUTE ::= { CHOICE {
       x121-dcc-code NumericString (SIZE
          (ub-country-name-numeric-length)),
       iso-3166-alpha2-code PrintableString
          (SIZE (ub-country-name-alpha-length)) }
       IDENTIFIED BY 8 }

  ea-postalCode EXTENSION-ATTRIBUTE ::= { CHOICE {
     numeric-code NumericString (SIZE (1..ub-postal-code-length)),
     printable-code PrintableString (SIZE (1..ub-postal-code-length)) }
     IDENTIFIED BY 9 }

  ea-physicalDeliveryOfficeName EXTENSION-ATTRIBUTE ::=
      { PDSParameter IDENTIFIED BY 10 }

  ea-physicalDeliveryOfficeNumber EXTENSION-ATTRIBUTE ::=
      {PDSParameter IDENTIFIED BY 11 }

  ea-extensionORAddressComponents EXTENSION-ATTRIBUTE ::=
      {PDSParameter IDENTIFIED BY 12 }

  ea-physicalDeliveryPersonalName EXTENSION-ATTRIBUTE ::=
      {PDSParameter IDENTIFIED BY 13}

  ea-physicalDeliveryOrganizationName EXTENSION-ATTRIBUTE ::=
      {PDSParameter IDENTIFIED BY 14 }

  ea-extensionPhysicalDeliveryAddressComponents EXTENSION-ATTRIBUTE ::=
      {PDSParameter IDENTIFIED BY 15 }

  ea-unformattedPostalAddress EXTENSION-ATTRIBUTE ::= { 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 }
     IDENTIFIED BY 16 }

  ea-streetAddress EXTENSION-ATTRIBUTE ::=
      {PDSParameter IDENTIFIED BY 17 }

  ea-postOfficeBoxAddress EXTENSION-ATTRIBUTE ::=
      {PDSParameter IDENTIFIED BY 18 }

  ea-posteRestanteAddress EXTENSION-ATTRIBUTE ::=
      {PDSParameter IDENTIFIED BY 19 }

  ea-uniquePostalName EXTENSION-ATTRIBUTE ::=
      { PDSParameter IDENTIFIED BY 20 }

  ea-localPostalAttributes EXTENSION-ATTRIBUTE ::=
      {PDSParameter IDENTIFIED BY 21 }
  PDSParameter ::= SET {
     printable-string PrintableString
                  (SIZE(1..ub-pds-parameter-length)) OPTIONAL,
     teletex-string TeletexString
                  (SIZE(1..ub-pds-parameter-length)) OPTIONAL }

  ea-extendedNetworkAddress EXTENSION-ATTRIBUTE ::= {
     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
     } IDENTIFIED BY 22
  }

  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 }

  ea-terminalType EXTENSION-ATTRIBUTE ::= {INTEGER {
     telex (3),
     teletex (4),
     g3-facsimile (5),
     g4-facsimile (6),
     ia5-terminal (7),
     videotex (8) } (0..ub-integer-options)
     IDENTIFIED BY 23 }

  -- Extension Domain-defined Attributes

  ea-teletexDomainDefinedAttributes EXTENSION-ATTRIBUTE ::=
      { SEQUENCE SIZE (1..ub-domain-defined-attributes) OF
           TeletexDomainDefinedAttribute IDENTIFIED BY 6 }

  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-match INTEGER ::= 128
  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-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