1# coding: utf-8
2#
3# This file is part of pyasn1-modules software.
4#
5# Created by Stanisław Pitucha with asn1ate tool.
6# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
7# License: http://snmplabs.com/pyasn1/license.html
8#
9# Internet X.509 Public Key Infrastructure Certificate and Certificate
10# Revocation List (CRL) Profile
11#
12# ASN.1 source from:
13# http://www.ietf.org/rfc/rfc3280.txt
14#
15from pyasn1.type import char
16from pyasn1.type import constraint
17from pyasn1.type import namedtype
18from pyasn1.type import namedval
19from pyasn1.type import tag
20from pyasn1.type import univ
21from pyasn1.type import useful
22
23MAX = float('inf')
24
25
26def _OID(*components):
27    output = []
28    for x in tuple(components):
29        if isinstance(x, univ.ObjectIdentifier):
30            output.extend(list(x))
31        else:
32            output.append(int(x))
33
34    return univ.ObjectIdentifier(output)
35
36
37unformatted_postal_address = univ.Integer(16)
38
39ub_organizational_units = univ.Integer(4)
40
41ub_organizational_unit_name_length = univ.Integer(32)
42
43
44class OrganizationalUnitName(char.PrintableString):
45    pass
46
47
48OrganizationalUnitName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_organizational_unit_name_length)
49
50
51class OrganizationalUnitNames(univ.SequenceOf):
52    pass
53
54
55OrganizationalUnitNames.componentType = OrganizationalUnitName()
56OrganizationalUnitNames.sizeSpec = constraint.ValueSizeConstraint(1, ub_organizational_units)
57
58
59class AttributeType(univ.ObjectIdentifier):
60    pass
61
62
63id_at = _OID(2, 5, 4)
64
65id_at_name = _OID(id_at, 41)
66
67ub_pds_parameter_length = univ.Integer(30)
68
69
70class PDSParameter(univ.Set):
71    pass
72
73
74PDSParameter.componentType = namedtype.NamedTypes(
75    namedtype.OptionalNamedType('printable-string', char.PrintableString().subtype(
76        subtypeSpec=constraint.ValueSizeConstraint(1, ub_pds_parameter_length))),
77    namedtype.OptionalNamedType('teletex-string', char.TeletexString().subtype(
78        subtypeSpec=constraint.ValueSizeConstraint(1, ub_pds_parameter_length)))
79)
80
81
82class PhysicalDeliveryOrganizationName(PDSParameter):
83    pass
84
85
86ub_organization_name_length = univ.Integer(64)
87
88ub_domain_defined_attribute_type_length = univ.Integer(8)
89
90ub_domain_defined_attribute_value_length = univ.Integer(128)
91
92
93class TeletexDomainDefinedAttribute(univ.Sequence):
94    pass
95
96
97TeletexDomainDefinedAttribute.componentType = namedtype.NamedTypes(
98    namedtype.NamedType('type', char.TeletexString().subtype(
99        subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_defined_attribute_type_length))),
100    namedtype.NamedType('value', char.TeletexString().subtype(
101        subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_defined_attribute_value_length)))
102)
103
104id_pkix = _OID(1, 3, 6, 1, 5, 5, 7)
105
106id_qt = _OID(id_pkix, 2)
107
108
109class PresentationAddress(univ.Sequence):
110    pass
111
112
113PresentationAddress.componentType = namedtype.NamedTypes(
114    namedtype.OptionalNamedType('pSelector', univ.OctetString().subtype(
115        explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
116    namedtype.OptionalNamedType('sSelector', univ.OctetString().subtype(
117        explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
118    namedtype.OptionalNamedType('tSelector', univ.OctetString().subtype(
119        explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
120    namedtype.NamedType('nAddresses', univ.SetOf(componentType=univ.OctetString()).subtype(
121        explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
122)
123
124
125class AlgorithmIdentifier(univ.Sequence):
126    pass
127
128
129AlgorithmIdentifier.componentType = namedtype.NamedTypes(
130    namedtype.NamedType('algorithm', univ.ObjectIdentifier()),
131    namedtype.OptionalNamedType('parameters', univ.Any())
132)
133
134
135class UniqueIdentifier(univ.BitString):
136    pass
137
138
139class Extension(univ.Sequence):
140    pass
141
142
143Extension.componentType = namedtype.NamedTypes(
144    namedtype.NamedType('extnID', univ.ObjectIdentifier()),
145    namedtype.DefaultedNamedType('critical', univ.Boolean().subtype(value=0)),
146    namedtype.NamedType('extnValue', univ.OctetString())
147)
148
149
150class Extensions(univ.SequenceOf):
151    pass
152
153
154Extensions.componentType = Extension()
155Extensions.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
156
157
158class CertificateSerialNumber(univ.Integer):
159    pass
160
161
162class SubjectPublicKeyInfo(univ.Sequence):
163    pass
164
165
166SubjectPublicKeyInfo.componentType = namedtype.NamedTypes(
167    namedtype.NamedType('algorithm', AlgorithmIdentifier()),
168    namedtype.NamedType('subjectPublicKey', univ.BitString())
169)
170
171
172class Time(univ.Choice):
173    pass
174
175
176Time.componentType = namedtype.NamedTypes(
177    namedtype.NamedType('utcTime', useful.UTCTime()),
178    namedtype.NamedType('generalTime', useful.GeneralizedTime())
179)
180
181
182class Validity(univ.Sequence):
183    pass
184
185
186Validity.componentType = namedtype.NamedTypes(
187    namedtype.NamedType('notBefore', Time()),
188    namedtype.NamedType('notAfter', Time())
189)
190
191
192class Version(univ.Integer):
193    pass
194
195
196Version.namedValues = namedval.NamedValues(
197    ('v1', 0),
198    ('v2', 1),
199    ('v3', 2)
200)
201
202
203class AttributeValue(univ.Any):
204    pass
205
206
207class AttributeTypeAndValue(univ.Sequence):
208    pass
209
210
211AttributeTypeAndValue.componentType = namedtype.NamedTypes(
212    namedtype.NamedType('type', AttributeType()),
213    namedtype.NamedType('value', AttributeValue())
214)
215
216
217class RelativeDistinguishedName(univ.SetOf):
218    pass
219
220
221RelativeDistinguishedName.componentType = AttributeTypeAndValue()
222RelativeDistinguishedName.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
223
224
225class RDNSequence(univ.SequenceOf):
226    pass
227
228
229RDNSequence.componentType = RelativeDistinguishedName()
230
231
232class Name(univ.Choice):
233    pass
234
235
236Name.componentType = namedtype.NamedTypes(
237    namedtype.NamedType('rdnSequence', RDNSequence())
238)
239
240
241class TBSCertificate(univ.Sequence):
242    pass
243
244
245TBSCertificate.componentType = namedtype.NamedTypes(
246    namedtype.DefaultedNamedType('version',
247                                 Version().subtype(explicitTag=tag.Tag(tag.tagClassContext,
248                                                                       tag.tagFormatSimple, 0)).subtype(value="v1")),
249    namedtype.NamedType('serialNumber', CertificateSerialNumber()),
250    namedtype.NamedType('signature', AlgorithmIdentifier()),
251    namedtype.NamedType('issuer', Name()),
252    namedtype.NamedType('validity', Validity()),
253    namedtype.NamedType('subject', Name()),
254    namedtype.NamedType('subjectPublicKeyInfo', SubjectPublicKeyInfo()),
255    namedtype.OptionalNamedType('issuerUniqueID', UniqueIdentifier().subtype(
256        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
257    namedtype.OptionalNamedType('subjectUniqueID', UniqueIdentifier().subtype(
258        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
259    namedtype.OptionalNamedType('extensions',
260                                Extensions().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
261)
262
263
264class Certificate(univ.Sequence):
265    pass
266
267
268Certificate.componentType = namedtype.NamedTypes(
269    namedtype.NamedType('tbsCertificate', TBSCertificate()),
270    namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()),
271    namedtype.NamedType('signature', univ.BitString())
272)
273
274ub_surname_length = univ.Integer(40)
275
276
277class TeletexOrganizationName(char.TeletexString):
278    pass
279
280
281TeletexOrganizationName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_organization_name_length)
282
283ub_e163_4_sub_address_length = univ.Integer(40)
284
285teletex_common_name = univ.Integer(2)
286
287ub_country_name_alpha_length = univ.Integer(2)
288
289ub_country_name_numeric_length = univ.Integer(3)
290
291
292class CountryName(univ.Choice):
293    pass
294
295
296CountryName.tagSet = univ.Choice.tagSet.tagExplicitly(tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 1))
297CountryName.componentType = namedtype.NamedTypes(
298    namedtype.NamedType('x121-dcc-code', char.NumericString().subtype(
299        subtypeSpec=constraint.ValueSizeConstraint(ub_country_name_numeric_length, ub_country_name_numeric_length))),
300    namedtype.NamedType('iso-3166-alpha2-code', char.PrintableString().subtype(
301        subtypeSpec=constraint.ValueSizeConstraint(ub_country_name_alpha_length, ub_country_name_alpha_length)))
302)
303
304extension_OR_address_components = univ.Integer(12)
305
306id_at_dnQualifier = _OID(id_at, 46)
307
308ub_e163_4_number_length = univ.Integer(15)
309
310
311class ExtendedNetworkAddress(univ.Choice):
312    pass
313
314
315ExtendedNetworkAddress.componentType = namedtype.NamedTypes(
316    namedtype.NamedType('e163-4-address', univ.Sequence(componentType=namedtype.NamedTypes(
317        namedtype.NamedType('number', char.NumericString().subtype(
318            subtypeSpec=constraint.ValueSizeConstraint(1, ub_e163_4_number_length)).subtype(
319            implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
320        namedtype.OptionalNamedType('sub-address', char.NumericString().subtype(
321            subtypeSpec=constraint.ValueSizeConstraint(1, ub_e163_4_sub_address_length)).subtype(
322            implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
323    ))
324                        ),
325    namedtype.NamedType('psap-address', PresentationAddress().subtype(
326        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
327)
328
329terminal_type = univ.Integer(23)
330
331id_domainComponent = _OID(0, 9, 2342, 19200300, 100, 1, 25)
332
333ub_state_name = univ.Integer(128)
334
335
336class X520StateOrProvinceName(univ.Choice):
337    pass
338
339
340X520StateOrProvinceName.componentType = namedtype.NamedTypes(
341    namedtype.NamedType('teletexString',
342                        char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_state_name))),
343    namedtype.NamedType('printableString',
344                        char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_state_name))),
345    namedtype.NamedType('universalString',
346                        char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_state_name))),
347    namedtype.NamedType('utf8String',
348                        char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_state_name))),
349    namedtype.NamedType('bmpString',
350                        char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_state_name)))
351)
352
353ub_organization_name = univ.Integer(64)
354
355
356class X520OrganizationName(univ.Choice):
357    pass
358
359
360X520OrganizationName.componentType = namedtype.NamedTypes(
361    namedtype.NamedType('teletexString', char.TeletexString().subtype(
362        subtypeSpec=constraint.ValueSizeConstraint(1, ub_organization_name))),
363    namedtype.NamedType('printableString', char.PrintableString().subtype(
364        subtypeSpec=constraint.ValueSizeConstraint(1, ub_organization_name))),
365    namedtype.NamedType('universalString', char.UniversalString().subtype(
366        subtypeSpec=constraint.ValueSizeConstraint(1, ub_organization_name))),
367    namedtype.NamedType('utf8String',
368                        char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_organization_name))),
369    namedtype.NamedType('bmpString',
370                        char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_organization_name)))
371)
372
373ub_emailaddress_length = univ.Integer(128)
374
375
376class ExtensionPhysicalDeliveryAddressComponents(PDSParameter):
377    pass
378
379
380id_at_surname = _OID(id_at, 4)
381
382ub_common_name_length = univ.Integer(64)
383
384id_ad = _OID(id_pkix, 48)
385
386ub_numeric_user_id_length = univ.Integer(32)
387
388
389class NumericUserIdentifier(char.NumericString):
390    pass
391
392
393NumericUserIdentifier.subtypeSpec = constraint.ValueSizeConstraint(1, ub_numeric_user_id_length)
394
395
396class OrganizationName(char.PrintableString):
397    pass
398
399
400OrganizationName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_organization_name_length)
401
402ub_domain_name_length = univ.Integer(16)
403
404
405class AdministrationDomainName(univ.Choice):
406    pass
407
408
409AdministrationDomainName.tagSet = univ.Choice.tagSet.tagExplicitly(
410    tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 2))
411AdministrationDomainName.componentType = namedtype.NamedTypes(
412    namedtype.NamedType('numeric', char.NumericString().subtype(
413        subtypeSpec=constraint.ValueSizeConstraint(0, ub_domain_name_length))),
414    namedtype.NamedType('printable', char.PrintableString().subtype(
415        subtypeSpec=constraint.ValueSizeConstraint(0, ub_domain_name_length)))
416)
417
418
419class PrivateDomainName(univ.Choice):
420    pass
421
422
423PrivateDomainName.componentType = namedtype.NamedTypes(
424    namedtype.NamedType('numeric', char.NumericString().subtype(
425        subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_name_length))),
426    namedtype.NamedType('printable', char.PrintableString().subtype(
427        subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_name_length)))
428)
429
430ub_generation_qualifier_length = univ.Integer(3)
431
432ub_given_name_length = univ.Integer(16)
433
434ub_initials_length = univ.Integer(5)
435
436
437class PersonalName(univ.Set):
438    pass
439
440
441PersonalName.componentType = namedtype.NamedTypes(
442    namedtype.NamedType('surname', char.PrintableString().subtype(
443        subtypeSpec=constraint.ValueSizeConstraint(1, ub_surname_length)).subtype(
444        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
445    namedtype.OptionalNamedType('given-name', char.PrintableString().subtype(
446        subtypeSpec=constraint.ValueSizeConstraint(1, ub_given_name_length)).subtype(
447        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
448    namedtype.OptionalNamedType('initials', char.PrintableString().subtype(
449        subtypeSpec=constraint.ValueSizeConstraint(1, ub_initials_length)).subtype(
450        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
451    namedtype.OptionalNamedType('generation-qualifier', char.PrintableString().subtype(
452        subtypeSpec=constraint.ValueSizeConstraint(1, ub_generation_qualifier_length)).subtype(
453        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
454)
455
456ub_terminal_id_length = univ.Integer(24)
457
458
459class TerminalIdentifier(char.PrintableString):
460    pass
461
462
463TerminalIdentifier.subtypeSpec = constraint.ValueSizeConstraint(1, ub_terminal_id_length)
464
465ub_x121_address_length = univ.Integer(16)
466
467
468class X121Address(char.NumericString):
469    pass
470
471
472X121Address.subtypeSpec = constraint.ValueSizeConstraint(1, ub_x121_address_length)
473
474
475class NetworkAddress(X121Address):
476    pass
477
478
479class BuiltInStandardAttributes(univ.Sequence):
480    pass
481
482
483BuiltInStandardAttributes.componentType = namedtype.NamedTypes(
484    namedtype.OptionalNamedType('country-name', CountryName()),
485    namedtype.OptionalNamedType('administration-domain-name', AdministrationDomainName()),
486    namedtype.OptionalNamedType('network-address', NetworkAddress().subtype(
487        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
488    namedtype.OptionalNamedType('terminal-identifier', TerminalIdentifier().subtype(
489        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
490    namedtype.OptionalNamedType('private-domain-name', PrivateDomainName().subtype(
491        explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
492    namedtype.OptionalNamedType('organization-name', OrganizationName().subtype(
493        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
494    namedtype.OptionalNamedType('numeric-user-identifier', NumericUserIdentifier().subtype(
495        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
496    namedtype.OptionalNamedType('personal-name', PersonalName().subtype(
497        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
498    namedtype.OptionalNamedType('organizational-unit-names', OrganizationalUnitNames().subtype(
499        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6)))
500)
501
502ub_domain_defined_attributes = univ.Integer(4)
503
504
505class BuiltInDomainDefinedAttribute(univ.Sequence):
506    pass
507
508
509BuiltInDomainDefinedAttribute.componentType = namedtype.NamedTypes(
510    namedtype.NamedType('type', char.PrintableString().subtype(
511        subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_defined_attribute_type_length))),
512    namedtype.NamedType('value', char.PrintableString().subtype(
513        subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_defined_attribute_value_length)))
514)
515
516
517class BuiltInDomainDefinedAttributes(univ.SequenceOf):
518    pass
519
520
521BuiltInDomainDefinedAttributes.componentType = BuiltInDomainDefinedAttribute()
522BuiltInDomainDefinedAttributes.sizeSpec = constraint.ValueSizeConstraint(1, ub_domain_defined_attributes)
523
524ub_extension_attributes = univ.Integer(256)
525
526
527class ExtensionAttribute(univ.Sequence):
528    pass
529
530
531ExtensionAttribute.componentType = namedtype.NamedTypes(
532    namedtype.NamedType('extension-attribute-type', univ.Integer().subtype(
533        subtypeSpec=constraint.ValueRangeConstraint(0, ub_extension_attributes)).subtype(
534        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
535    namedtype.NamedType('extension-attribute-value',
536                        univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
537)
538
539
540class ExtensionAttributes(univ.SetOf):
541    pass
542
543
544ExtensionAttributes.componentType = ExtensionAttribute()
545ExtensionAttributes.sizeSpec = constraint.ValueSizeConstraint(1, ub_extension_attributes)
546
547
548class ORAddress(univ.Sequence):
549    pass
550
551
552ORAddress.componentType = namedtype.NamedTypes(
553    namedtype.NamedType('built-in-standard-attributes', BuiltInStandardAttributes()),
554    namedtype.OptionalNamedType('built-in-domain-defined-attributes', BuiltInDomainDefinedAttributes()),
555    namedtype.OptionalNamedType('extension-attributes', ExtensionAttributes())
556)
557
558id_pe = _OID(id_pkix, 1)
559
560ub_title = univ.Integer(64)
561
562
563class X520Title(univ.Choice):
564    pass
565
566
567X520Title.componentType = namedtype.NamedTypes(
568    namedtype.NamedType('teletexString',
569                        char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_title))),
570    namedtype.NamedType('printableString',
571                        char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_title))),
572    namedtype.NamedType('universalString',
573                        char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_title))),
574    namedtype.NamedType('utf8String',
575                        char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_title))),
576    namedtype.NamedType('bmpString', char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_title)))
577)
578
579id_at_organizationalUnitName = _OID(id_at, 11)
580
581
582class EmailAddress(char.IA5String):
583    pass
584
585
586EmailAddress.subtypeSpec = constraint.ValueSizeConstraint(1, ub_emailaddress_length)
587
588physical_delivery_country_name = univ.Integer(8)
589
590id_at_givenName = _OID(id_at, 42)
591
592
593class TeletexCommonName(char.TeletexString):
594    pass
595
596
597TeletexCommonName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_common_name_length)
598
599id_qt_cps = _OID(id_qt, 1)
600
601
602class LocalPostalAttributes(PDSParameter):
603    pass
604
605
606class StreetAddress(PDSParameter):
607    pass
608
609
610id_kp = _OID(id_pkix, 3)
611
612
613class DirectoryString(univ.Choice):
614    pass
615
616
617DirectoryString.componentType = namedtype.NamedTypes(
618    namedtype.NamedType('teletexString',
619                        char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
620    namedtype.NamedType('printableString',
621                        char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
622    namedtype.NamedType('universalString',
623                        char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
624    namedtype.NamedType('utf8String', char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
625    namedtype.NamedType('bmpString', char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX)))
626)
627
628
629class DomainComponent(char.IA5String):
630    pass
631
632
633id_at_initials = _OID(id_at, 43)
634
635id_qt_unotice = _OID(id_qt, 2)
636
637ub_pds_name_length = univ.Integer(16)
638
639
640class PDSName(char.PrintableString):
641    pass
642
643
644PDSName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_pds_name_length)
645
646
647class PosteRestanteAddress(PDSParameter):
648    pass
649
650
651class DistinguishedName(RDNSequence):
652    pass
653
654
655class CommonName(char.PrintableString):
656    pass
657
658
659CommonName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_common_name_length)
660
661ub_serial_number = univ.Integer(64)
662
663
664class X520SerialNumber(char.PrintableString):
665    pass
666
667
668X520SerialNumber.subtypeSpec = constraint.ValueSizeConstraint(1, ub_serial_number)
669
670id_at_generationQualifier = _OID(id_at, 44)
671
672ub_organizational_unit_name = univ.Integer(64)
673
674id_ad_ocsp = _OID(id_ad, 1)
675
676
677class TeletexOrganizationalUnitName(char.TeletexString):
678    pass
679
680
681TeletexOrganizationalUnitName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_organizational_unit_name_length)
682
683
684class TeletexPersonalName(univ.Set):
685    pass
686
687
688TeletexPersonalName.componentType = namedtype.NamedTypes(
689    namedtype.NamedType('surname', char.TeletexString().subtype(
690        subtypeSpec=constraint.ValueSizeConstraint(1, ub_surname_length)).subtype(
691        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
692    namedtype.OptionalNamedType('given-name', char.TeletexString().subtype(
693        subtypeSpec=constraint.ValueSizeConstraint(1, ub_given_name_length)).subtype(
694        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
695    namedtype.OptionalNamedType('initials', char.TeletexString().subtype(
696        subtypeSpec=constraint.ValueSizeConstraint(1, ub_initials_length)).subtype(
697        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
698    namedtype.OptionalNamedType('generation-qualifier', char.TeletexString().subtype(
699        subtypeSpec=constraint.ValueSizeConstraint(1, ub_generation_qualifier_length)).subtype(
700        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
701)
702
703
704class TeletexDomainDefinedAttributes(univ.SequenceOf):
705    pass
706
707
708TeletexDomainDefinedAttributes.componentType = TeletexDomainDefinedAttribute()
709TeletexDomainDefinedAttributes.sizeSpec = constraint.ValueSizeConstraint(1, ub_domain_defined_attributes)
710
711
712class TBSCertList(univ.Sequence):
713    pass
714
715
716TBSCertList.componentType = namedtype.NamedTypes(
717    namedtype.OptionalNamedType('version', Version()),
718    namedtype.NamedType('signature', AlgorithmIdentifier()),
719    namedtype.NamedType('issuer', Name()),
720    namedtype.NamedType('thisUpdate', Time()),
721    namedtype.OptionalNamedType('nextUpdate', Time()),
722    namedtype.OptionalNamedType('revokedCertificates',
723                                univ.SequenceOf(componentType=univ.Sequence(componentType=namedtype.NamedTypes(
724                                    namedtype.NamedType('userCertificate', CertificateSerialNumber()),
725                                    namedtype.NamedType('revocationDate', Time()),
726                                    namedtype.OptionalNamedType('crlEntryExtensions', Extensions())
727                                ))
728                                )),
729    namedtype.OptionalNamedType('crlExtensions',
730                                Extensions().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
731)
732
733local_postal_attributes = univ.Integer(21)
734
735pkcs_9 = _OID(1, 2, 840, 113549, 1, 9)
736
737
738class PhysicalDeliveryCountryName(univ.Choice):
739    pass
740
741
742PhysicalDeliveryCountryName.componentType = namedtype.NamedTypes(
743    namedtype.NamedType('x121-dcc-code', char.NumericString().subtype(
744        subtypeSpec=constraint.ValueSizeConstraint(ub_country_name_numeric_length, ub_country_name_numeric_length))),
745    namedtype.NamedType('iso-3166-alpha2-code', char.PrintableString().subtype(
746        subtypeSpec=constraint.ValueSizeConstraint(ub_country_name_alpha_length, ub_country_name_alpha_length)))
747)
748
749ub_name = univ.Integer(32768)
750
751
752class X520name(univ.Choice):
753    pass
754
755
756X520name.componentType = namedtype.NamedTypes(
757    namedtype.NamedType('teletexString',
758                        char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_name))),
759    namedtype.NamedType('printableString',
760                        char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_name))),
761    namedtype.NamedType('universalString',
762                        char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_name))),
763    namedtype.NamedType('utf8String',
764                        char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_name))),
765    namedtype.NamedType('bmpString', char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_name)))
766)
767
768id_emailAddress = _OID(pkcs_9, 1)
769
770
771class TerminalType(univ.Integer):
772    pass
773
774
775TerminalType.namedValues = namedval.NamedValues(
776    ('telex', 3),
777    ('teletex', 4),
778    ('g3-facsimile', 5),
779    ('g4-facsimile', 6),
780    ('ia5-terminal', 7),
781    ('videotex', 8)
782)
783
784
785class X520OrganizationalUnitName(univ.Choice):
786    pass
787
788
789X520OrganizationalUnitName.componentType = namedtype.NamedTypes(
790    namedtype.NamedType('teletexString', char.TeletexString().subtype(
791        subtypeSpec=constraint.ValueSizeConstraint(1, ub_organizational_unit_name))),
792    namedtype.NamedType('printableString', char.PrintableString().subtype(
793        subtypeSpec=constraint.ValueSizeConstraint(1, ub_organizational_unit_name))),
794    namedtype.NamedType('universalString', char.UniversalString().subtype(
795        subtypeSpec=constraint.ValueSizeConstraint(1, ub_organizational_unit_name))),
796    namedtype.NamedType('utf8String', char.UTF8String().subtype(
797        subtypeSpec=constraint.ValueSizeConstraint(1, ub_organizational_unit_name))),
798    namedtype.NamedType('bmpString', char.BMPString().subtype(
799        subtypeSpec=constraint.ValueSizeConstraint(1, ub_organizational_unit_name)))
800)
801
802id_at_commonName = _OID(id_at, 3)
803
804pds_name = univ.Integer(7)
805
806post_office_box_address = univ.Integer(18)
807
808ub_locality_name = univ.Integer(128)
809
810
811class X520LocalityName(univ.Choice):
812    pass
813
814
815X520LocalityName.componentType = namedtype.NamedTypes(
816    namedtype.NamedType('teletexString',
817                        char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_locality_name))),
818    namedtype.NamedType('printableString', char.PrintableString().subtype(
819        subtypeSpec=constraint.ValueSizeConstraint(1, ub_locality_name))),
820    namedtype.NamedType('universalString', char.UniversalString().subtype(
821        subtypeSpec=constraint.ValueSizeConstraint(1, ub_locality_name))),
822    namedtype.NamedType('utf8String',
823                        char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_locality_name))),
824    namedtype.NamedType('bmpString',
825                        char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_locality_name)))
826)
827
828id_ad_timeStamping = _OID(id_ad, 3)
829
830id_at_countryName = _OID(id_at, 6)
831
832physical_delivery_personal_name = univ.Integer(13)
833
834teletex_personal_name = univ.Integer(4)
835
836teletex_organizational_unit_names = univ.Integer(5)
837
838
839class PhysicalDeliveryPersonalName(PDSParameter):
840    pass
841
842
843ub_postal_code_length = univ.Integer(16)
844
845
846class PostalCode(univ.Choice):
847    pass
848
849
850PostalCode.componentType = namedtype.NamedTypes(
851    namedtype.NamedType('numeric-code', char.NumericString().subtype(
852        subtypeSpec=constraint.ValueSizeConstraint(1, ub_postal_code_length))),
853    namedtype.NamedType('printable-code', char.PrintableString().subtype(
854        subtypeSpec=constraint.ValueSizeConstraint(1, ub_postal_code_length)))
855)
856
857
858class X520countryName(char.PrintableString):
859    pass
860
861
862X520countryName.subtypeSpec = constraint.ValueSizeConstraint(2, 2)
863
864postal_code = univ.Integer(9)
865
866id_ad_caRepository = _OID(id_ad, 5)
867
868extension_physical_delivery_address_components = univ.Integer(15)
869
870
871class PostOfficeBoxAddress(PDSParameter):
872    pass
873
874
875class PhysicalDeliveryOfficeName(PDSParameter):
876    pass
877
878
879id_at_title = _OID(id_at, 12)
880
881id_at_serialNumber = _OID(id_at, 5)
882
883id_ad_caIssuers = _OID(id_ad, 2)
884
885ub_integer_options = univ.Integer(256)
886
887
888class CertificateList(univ.Sequence):
889    pass
890
891
892CertificateList.componentType = namedtype.NamedTypes(
893    namedtype.NamedType('tbsCertList', TBSCertList()),
894    namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()),
895    namedtype.NamedType('signature', univ.BitString())
896)
897
898
899class PhysicalDeliveryOfficeNumber(PDSParameter):
900    pass
901
902
903class TeletexOrganizationalUnitNames(univ.SequenceOf):
904    pass
905
906
907TeletexOrganizationalUnitNames.componentType = TeletexOrganizationalUnitName()
908TeletexOrganizationalUnitNames.sizeSpec = constraint.ValueSizeConstraint(1, ub_organizational_units)
909
910physical_delivery_office_name = univ.Integer(10)
911
912ub_common_name = univ.Integer(64)
913
914
915class ExtensionORAddressComponents(PDSParameter):
916    pass
917
918
919ub_pseudonym = univ.Integer(128)
920
921poste_restante_address = univ.Integer(19)
922
923id_at_organizationName = _OID(id_at, 10)
924
925physical_delivery_office_number = univ.Integer(11)
926
927id_at_pseudonym = _OID(id_at, 65)
928
929
930class X520CommonName(univ.Choice):
931    pass
932
933
934X520CommonName.componentType = namedtype.NamedTypes(
935    namedtype.NamedType('teletexString',
936                        char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_common_name))),
937    namedtype.NamedType('printableString',
938                        char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_common_name))),
939    namedtype.NamedType('universalString',
940                        char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_common_name))),
941    namedtype.NamedType('utf8String',
942                        char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_common_name))),
943    namedtype.NamedType('bmpString',
944                        char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_common_name)))
945)
946
947physical_delivery_organization_name = univ.Integer(14)
948
949
950class X520dnQualifier(char.PrintableString):
951    pass
952
953
954id_at_stateOrProvinceName = _OID(id_at, 8)
955
956common_name = univ.Integer(1)
957
958id_at_localityName = _OID(id_at, 7)
959
960ub_match = univ.Integer(128)
961
962ub_unformatted_address_length = univ.Integer(180)
963
964
965class Attribute(univ.Sequence):
966    pass
967
968
969Attribute.componentType = namedtype.NamedTypes(
970    namedtype.NamedType('type', AttributeType()),
971    namedtype.NamedType('values', univ.SetOf(componentType=AttributeValue()))
972)
973
974extended_network_address = univ.Integer(22)
975
976unique_postal_name = univ.Integer(20)
977
978ub_pds_physical_address_lines = univ.Integer(6)
979
980
981class UnformattedPostalAddress(univ.Set):
982    pass
983
984
985UnformattedPostalAddress.componentType = namedtype.NamedTypes(
986    namedtype.OptionalNamedType('printable-address', univ.SequenceOf(componentType=char.PrintableString().subtype(
987        subtypeSpec=constraint.ValueSizeConstraint(1, ub_pds_parameter_length)))),
988    namedtype.OptionalNamedType('teletex-string', char.TeletexString().subtype(
989        subtypeSpec=constraint.ValueSizeConstraint(1, ub_unformatted_address_length)))
990)
991
992
993class UniquePostalName(PDSParameter):
994    pass
995
996
997class X520Pseudonym(univ.Choice):
998    pass
999
1000
1001X520Pseudonym.componentType = namedtype.NamedTypes(
1002    namedtype.NamedType('teletexString',
1003                        char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_pseudonym))),
1004    namedtype.NamedType('printableString',
1005                        char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_pseudonym))),
1006    namedtype.NamedType('universalString',
1007                        char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_pseudonym))),
1008    namedtype.NamedType('utf8String',
1009                        char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_pseudonym))),
1010    namedtype.NamedType('bmpString',
1011                        char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_pseudonym)))
1012)
1013
1014teletex_organization_name = univ.Integer(3)
1015
1016teletex_domain_defined_attributes = univ.Integer(6)
1017
1018street_address = univ.Integer(17)
1019
1020id_kp_OCSPSigning = _OID(id_kp, 9)
1021
1022id_ce = _OID(2, 5, 29)
1023
1024id_ce_certificatePolicies = _OID(id_ce, 32)
1025
1026
1027class EDIPartyName(univ.Sequence):
1028    pass
1029
1030
1031EDIPartyName.componentType = namedtype.NamedTypes(
1032    namedtype.OptionalNamedType('nameAssigner', DirectoryString().subtype(
1033        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
1034    namedtype.NamedType('partyName',
1035                        DirectoryString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
1036)
1037
1038
1039class AnotherName(univ.Sequence):
1040    pass
1041
1042
1043AnotherName.componentType = namedtype.NamedTypes(
1044    namedtype.NamedType('type-id', univ.ObjectIdentifier()),
1045    namedtype.NamedType('value', univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
1046)
1047
1048
1049class GeneralName(univ.Choice):
1050    pass
1051
1052
1053GeneralName.componentType = namedtype.NamedTypes(
1054    namedtype.NamedType('otherName',
1055                        AnotherName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
1056    namedtype.NamedType('rfc822Name',
1057                        char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
1058    namedtype.NamedType('dNSName',
1059                        char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
1060    namedtype.NamedType('x400Address',
1061                        ORAddress().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
1062    namedtype.NamedType('directoryName',
1063                        Name().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
1064    namedtype.NamedType('ediPartyName',
1065                        EDIPartyName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
1066    namedtype.NamedType('uniformResourceIdentifier',
1067                        char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))),
1068    namedtype.NamedType('iPAddress',
1069                        univ.OctetString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
1070    namedtype.NamedType('registeredID', univ.ObjectIdentifier().subtype(
1071        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8)))
1072)
1073
1074
1075class GeneralNames(univ.SequenceOf):
1076    pass
1077
1078
1079GeneralNames.componentType = GeneralName()
1080GeneralNames.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
1081
1082
1083class IssuerAltName(GeneralNames):
1084    pass
1085
1086
1087id_ce_cRLDistributionPoints = _OID(id_ce, 31)
1088
1089
1090class CertPolicyId(univ.ObjectIdentifier):
1091    pass
1092
1093
1094class PolicyMappings(univ.SequenceOf):
1095    pass
1096
1097
1098PolicyMappings.componentType = univ.Sequence(componentType=namedtype.NamedTypes(
1099    namedtype.NamedType('issuerDomainPolicy', CertPolicyId()),
1100    namedtype.NamedType('subjectDomainPolicy', CertPolicyId())
1101))
1102
1103PolicyMappings.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
1104
1105
1106class PolicyQualifierId(univ.ObjectIdentifier):
1107    pass
1108
1109
1110holdInstruction = _OID(2, 2, 840, 10040, 2)
1111
1112id_ce_subjectDirectoryAttributes = _OID(id_ce, 9)
1113
1114id_holdinstruction_callissuer = _OID(holdInstruction, 2)
1115
1116
1117class SubjectDirectoryAttributes(univ.SequenceOf):
1118    pass
1119
1120
1121SubjectDirectoryAttributes.componentType = Attribute()
1122SubjectDirectoryAttributes.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
1123
1124anyPolicy = _OID(id_ce_certificatePolicies, 0)
1125
1126id_ce_subjectAltName = _OID(id_ce, 17)
1127
1128id_kp_emailProtection = _OID(id_kp, 4)
1129
1130
1131class ReasonFlags(univ.BitString):
1132    pass
1133
1134
1135ReasonFlags.namedValues = namedval.NamedValues(
1136    ('unused', 0),
1137    ('keyCompromise', 1),
1138    ('cACompromise', 2),
1139    ('affiliationChanged', 3),
1140    ('superseded', 4),
1141    ('cessationOfOperation', 5),
1142    ('certificateHold', 6),
1143    ('privilegeWithdrawn', 7),
1144    ('aACompromise', 8)
1145)
1146
1147
1148class DistributionPointName(univ.Choice):
1149    pass
1150
1151
1152DistributionPointName.componentType = namedtype.NamedTypes(
1153    namedtype.NamedType('fullName',
1154                        GeneralNames().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
1155    namedtype.NamedType('nameRelativeToCRLIssuer', RelativeDistinguishedName().subtype(
1156        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
1157)
1158
1159
1160class DistributionPoint(univ.Sequence):
1161    pass
1162
1163
1164DistributionPoint.componentType = namedtype.NamedTypes(
1165    namedtype.OptionalNamedType('distributionPoint', DistributionPointName().subtype(
1166        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
1167    namedtype.OptionalNamedType('reasons', ReasonFlags().subtype(
1168        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
1169    namedtype.OptionalNamedType('cRLIssuer', GeneralNames().subtype(
1170        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
1171)
1172
1173id_ce_keyUsage = _OID(id_ce, 15)
1174
1175
1176class PolicyQualifierInfo(univ.Sequence):
1177    pass
1178
1179
1180PolicyQualifierInfo.componentType = namedtype.NamedTypes(
1181    namedtype.NamedType('policyQualifierId', PolicyQualifierId()),
1182    namedtype.NamedType('qualifier', univ.Any())
1183)
1184
1185
1186class PolicyInformation(univ.Sequence):
1187    pass
1188
1189
1190PolicyInformation.componentType = namedtype.NamedTypes(
1191    namedtype.NamedType('policyIdentifier', CertPolicyId()),
1192    namedtype.OptionalNamedType('policyQualifiers', univ.SequenceOf(componentType=PolicyQualifierInfo()))
1193)
1194
1195
1196class CertificatePolicies(univ.SequenceOf):
1197    pass
1198
1199
1200CertificatePolicies.componentType = PolicyInformation()
1201CertificatePolicies.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
1202
1203id_ce_basicConstraints = _OID(id_ce, 19)
1204
1205
1206class HoldInstructionCode(univ.ObjectIdentifier):
1207    pass
1208
1209
1210class KeyPurposeId(univ.ObjectIdentifier):
1211    pass
1212
1213
1214class ExtKeyUsageSyntax(univ.SequenceOf):
1215    pass
1216
1217
1218ExtKeyUsageSyntax.componentType = KeyPurposeId()
1219ExtKeyUsageSyntax.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
1220
1221
1222class SubjectAltName(GeneralNames):
1223    pass
1224
1225
1226class BasicConstraints(univ.Sequence):
1227    pass
1228
1229
1230BasicConstraints.componentType = namedtype.NamedTypes(
1231    namedtype.DefaultedNamedType('cA', univ.Boolean().subtype(value=0)),
1232    namedtype.OptionalNamedType('pathLenConstraint',
1233                                univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, MAX)))
1234)
1235
1236
1237class SkipCerts(univ.Integer):
1238    pass
1239
1240
1241SkipCerts.subtypeSpec = constraint.ValueRangeConstraint(0, MAX)
1242
1243
1244class InhibitAnyPolicy(SkipCerts):
1245    pass
1246
1247
1248class CRLNumber(univ.Integer):
1249    pass
1250
1251
1252CRLNumber.subtypeSpec = constraint.ValueRangeConstraint(0, MAX)
1253
1254
1255class BaseCRLNumber(CRLNumber):
1256    pass
1257
1258
1259class KeyIdentifier(univ.OctetString):
1260    pass
1261
1262
1263class AuthorityKeyIdentifier(univ.Sequence):
1264    pass
1265
1266
1267AuthorityKeyIdentifier.componentType = namedtype.NamedTypes(
1268    namedtype.OptionalNamedType('keyIdentifier', KeyIdentifier().subtype(
1269        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
1270    namedtype.OptionalNamedType('authorityCertIssuer', GeneralNames().subtype(
1271        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
1272    namedtype.OptionalNamedType('authorityCertSerialNumber', CertificateSerialNumber().subtype(
1273        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
1274)
1275
1276id_ce_nameConstraints = _OID(id_ce, 30)
1277
1278id_kp_serverAuth = _OID(id_kp, 1)
1279
1280id_ce_freshestCRL = _OID(id_ce, 46)
1281
1282id_ce_cRLReasons = _OID(id_ce, 21)
1283
1284
1285class CRLDistributionPoints(univ.SequenceOf):
1286    pass
1287
1288
1289CRLDistributionPoints.componentType = DistributionPoint()
1290CRLDistributionPoints.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
1291
1292
1293class FreshestCRL(CRLDistributionPoints):
1294    pass
1295
1296
1297id_ce_inhibitAnyPolicy = _OID(id_ce, 54)
1298
1299
1300class CRLReason(univ.Enumerated):
1301    pass
1302
1303
1304CRLReason.namedValues = namedval.NamedValues(
1305    ('unspecified', 0),
1306    ('keyCompromise', 1),
1307    ('cACompromise', 2),
1308    ('affiliationChanged', 3),
1309    ('superseded', 4),
1310    ('cessationOfOperation', 5),
1311    ('certificateHold', 6),
1312    ('removeFromCRL', 8),
1313    ('privilegeWithdrawn', 9),
1314    ('aACompromise', 10)
1315)
1316
1317
1318class BaseDistance(univ.Integer):
1319    pass
1320
1321
1322BaseDistance.subtypeSpec = constraint.ValueRangeConstraint(0, MAX)
1323
1324
1325class GeneralSubtree(univ.Sequence):
1326    pass
1327
1328
1329GeneralSubtree.componentType = namedtype.NamedTypes(
1330    namedtype.NamedType('base', GeneralName()),
1331    namedtype.DefaultedNamedType('minimum', BaseDistance().subtype(
1332        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)).subtype(value=0)),
1333    namedtype.OptionalNamedType('maximum', BaseDistance().subtype(
1334        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
1335)
1336
1337
1338class GeneralSubtrees(univ.SequenceOf):
1339    pass
1340
1341
1342GeneralSubtrees.componentType = GeneralSubtree()
1343GeneralSubtrees.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
1344
1345
1346class NameConstraints(univ.Sequence):
1347    pass
1348
1349
1350NameConstraints.componentType = namedtype.NamedTypes(
1351    namedtype.OptionalNamedType('permittedSubtrees', GeneralSubtrees().subtype(
1352        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
1353    namedtype.OptionalNamedType('excludedSubtrees', GeneralSubtrees().subtype(
1354        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
1355)
1356
1357id_pe_authorityInfoAccess = _OID(id_pe, 1)
1358
1359id_pe_subjectInfoAccess = _OID(id_pe, 11)
1360
1361id_ce_certificateIssuer = _OID(id_ce, 29)
1362
1363id_ce_invalidityDate = _OID(id_ce, 24)
1364
1365
1366class DirectoryString(univ.Choice):
1367    pass
1368
1369
1370DirectoryString.componentType = namedtype.NamedTypes(
1371    namedtype.NamedType('any', univ.Any())
1372)
1373
1374id_ce_authorityKeyIdentifier = _OID(id_ce, 35)
1375
1376
1377class AccessDescription(univ.Sequence):
1378    pass
1379
1380
1381AccessDescription.componentType = namedtype.NamedTypes(
1382    namedtype.NamedType('accessMethod', univ.ObjectIdentifier()),
1383    namedtype.NamedType('accessLocation', GeneralName())
1384)
1385
1386
1387class AuthorityInfoAccessSyntax(univ.SequenceOf):
1388    pass
1389
1390
1391AuthorityInfoAccessSyntax.componentType = AccessDescription()
1392AuthorityInfoAccessSyntax.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
1393
1394id_ce_issuingDistributionPoint = _OID(id_ce, 28)
1395
1396
1397class CPSuri(char.IA5String):
1398    pass
1399
1400
1401class DisplayText(univ.Choice):
1402    pass
1403
1404
1405DisplayText.componentType = namedtype.NamedTypes(
1406    namedtype.NamedType('ia5String', char.IA5String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, 200))),
1407    namedtype.NamedType('visibleString',
1408                        char.VisibleString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, 200))),
1409    namedtype.NamedType('bmpString', char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, 200))),
1410    namedtype.NamedType('utf8String', char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, 200)))
1411)
1412
1413
1414class NoticeReference(univ.Sequence):
1415    pass
1416
1417
1418NoticeReference.componentType = namedtype.NamedTypes(
1419    namedtype.NamedType('organization', DisplayText()),
1420    namedtype.NamedType('noticeNumbers', univ.SequenceOf(componentType=univ.Integer()))
1421)
1422
1423
1424class UserNotice(univ.Sequence):
1425    pass
1426
1427
1428UserNotice.componentType = namedtype.NamedTypes(
1429    namedtype.OptionalNamedType('noticeRef', NoticeReference()),
1430    namedtype.OptionalNamedType('explicitText', DisplayText())
1431)
1432
1433
1434class PrivateKeyUsagePeriod(univ.Sequence):
1435    pass
1436
1437
1438PrivateKeyUsagePeriod.componentType = namedtype.NamedTypes(
1439    namedtype.OptionalNamedType('notBefore', useful.GeneralizedTime().subtype(
1440        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
1441    namedtype.OptionalNamedType('notAfter', useful.GeneralizedTime().subtype(
1442        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
1443)
1444
1445id_ce_subjectKeyIdentifier = _OID(id_ce, 14)
1446
1447
1448class CertificateIssuer(GeneralNames):
1449    pass
1450
1451
1452class InvalidityDate(useful.GeneralizedTime):
1453    pass
1454
1455
1456class SubjectInfoAccessSyntax(univ.SequenceOf):
1457    pass
1458
1459
1460SubjectInfoAccessSyntax.componentType = AccessDescription()
1461SubjectInfoAccessSyntax.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
1462
1463
1464class KeyUsage(univ.BitString):
1465    pass
1466
1467
1468KeyUsage.namedValues = namedval.NamedValues(
1469    ('digitalSignature', 0),
1470    ('nonRepudiation', 1),
1471    ('keyEncipherment', 2),
1472    ('dataEncipherment', 3),
1473    ('keyAgreement', 4),
1474    ('keyCertSign', 5),
1475    ('cRLSign', 6),
1476    ('encipherOnly', 7),
1477    ('decipherOnly', 8)
1478)
1479
1480id_ce_extKeyUsage = _OID(id_ce, 37)
1481
1482anyExtendedKeyUsage = _OID(id_ce_extKeyUsage, 0)
1483
1484id_ce_privateKeyUsagePeriod = _OID(id_ce, 16)
1485
1486id_ce_policyMappings = _OID(id_ce, 33)
1487
1488id_ce_cRLNumber = _OID(id_ce, 20)
1489
1490id_ce_policyConstraints = _OID(id_ce, 36)
1491
1492id_holdinstruction_none = _OID(holdInstruction, 1)
1493
1494id_holdinstruction_reject = _OID(holdInstruction, 3)
1495
1496id_kp_timeStamping = _OID(id_kp, 8)
1497
1498
1499class PolicyConstraints(univ.Sequence):
1500    pass
1501
1502
1503PolicyConstraints.componentType = namedtype.NamedTypes(
1504    namedtype.OptionalNamedType('requireExplicitPolicy',
1505                                SkipCerts().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
1506    namedtype.OptionalNamedType('inhibitPolicyMapping',
1507                                SkipCerts().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
1508)
1509
1510
1511class SubjectKeyIdentifier(KeyIdentifier):
1512    pass
1513
1514
1515id_kp_clientAuth = _OID(id_kp, 2)
1516
1517id_ce_deltaCRLIndicator = _OID(id_ce, 27)
1518
1519id_ce_issuerAltName = _OID(id_ce, 18)
1520
1521id_kp_codeSigning = _OID(id_kp, 3)
1522
1523id_ce_holdInstructionCode = _OID(id_ce, 23)
1524
1525
1526class IssuingDistributionPoint(univ.Sequence):
1527    pass
1528
1529
1530IssuingDistributionPoint.componentType = namedtype.NamedTypes(
1531    namedtype.OptionalNamedType('distributionPoint', DistributionPointName().subtype(
1532        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
1533    namedtype.DefaultedNamedType('onlyContainsUserCerts', univ.Boolean().subtype(
1534        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)).subtype(value=0)),
1535    namedtype.DefaultedNamedType('onlyContainsCACerts', univ.Boolean().subtype(
1536        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)).subtype(value=0)),
1537    namedtype.OptionalNamedType('onlySomeReasons', ReasonFlags().subtype(
1538        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
1539    namedtype.DefaultedNamedType('indirectCRL', univ.Boolean().subtype(
1540        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)).subtype(value=0)),
1541    namedtype.DefaultedNamedType('onlyContainsAttributeCerts', univ.Boolean().subtype(
1542        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5)).subtype(value=0))
1543)
1544