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