U vf*@szddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZmZddlmZddlmZdd lmZmZdd lmZdd lmZmZmZmZmZmZm Z m!Z!m"Z"dd l#m$Z$m%Z%dd l&m'Z'm(Z(m)Z)m*Z*ej+ddddZ,dddddZ-ddddZ.Gddde/Z0Gddde/Z1Gdddej2d Z3Gd!d"d"Z4Gd#d$d$e3Z5Gd%d&d&e3Z6Gd'd(d(e3Z7Gd)d*d*e3Z8Gd+d,d,e3Z9Gd-d.d.Z:Gd/d0d0e3Z;Gd1d2d2e3ZGd7d8d8Z?Gd9d:d:ej@ZAeAjBeAjCeAjDeAjEeAjFeAjGeAjHeAjId;ZJeAjBdeAjEd?eAjFd@eAjGdAeAjHdBeAjIdCiZKeAjLdeAjBdeAjEd?eAjFd@eAjGdAeAjMdCeAjHdDeAjIdEi ZNGdFdGdGe3ZOGdHdIdIe3ZPGdJdKdKZQGdLdMdMZRGdNdOdOZSGdPdQdQe3ZTGdRdSdSe3ZUGdTdUdUe3ZVGdVdWdWe3ZWGdXdYdYej@ZXdZd[eXDZYGd\d]d]e3ZZGd^d_d_e3Z[Gd`dadae3Z\Gdbdcdcej]e,Z^GdddedeZ_Gdfdgdge3Z`Gdhdidie3ZaGdjdkdke3ZbGdldmdme3ZcGdndodoe3ZdGdpdqdqe3ZeGdrdsdse3ZfGdtdudue3ZgGdvdwdwe3ZhGdxdydye3ZiGdzd{d{e3ZjGd|d}d}e3ZkdS)~) annotationsN)utils)asn1)x509) constant_time serialization)EllipticCurvePublicKey) RSAPublicKey)CertificateIssuerPublicKeyTypesCertificatePublicKeyTypes)SignedCertificateTimestamp) DirectoryNameDNSName GeneralName IPAddress OtherName RegisteredID RFC822NameUniformResourceIdentifier_IPAddressTypes)NameRelativeDistinguishedName)CRLEntryExtensionOID ExtensionOIDObjectIdentifierOCSPExtensionOIDExtensionTypeVar ExtensionTypeT)bound covariantr bytes public_keyreturncCslt|tr |tjjtjj}n>t|tr@|tjj tjj }n|tjjtjj }t |}t|SN) isinstancer public_bytesrZEncodingZDERZ PublicFormatZPKCS1rZX962ZUncompressedPointZSubjectPublicKeyInforZparse_spki_for_datahashlibsha1digest)r"dataZ serializedr+O/opt/alt/python38/lib64/python3.8/site-packages/cryptography/x509/extensions.py_key_identifier_from_public_key2s    r-str field_namecs4ddfdd }fdd}fdd}|||fS) Nintr#cstt|Sr$)lengetattrselfr/r+r, len_methodKsz*_make_sequence_methods..len_methodcstt|Sr$)iterr4r5r/r+r, iter_methodNsz+_make_sequence_methods..iter_methodcst||Sr$)r4)r6idxr/r+r,getitem_methodQsz._make_sequence_methods..getitem_methodr+)r0r7r9r;r+r/r,_make_sequence_methodsJs  r<cs&eZdZddddfdd ZZS)DuplicateExtensionr.rNonemsgoidr#cst|||_dSr$super__init__rAr6r@rA __class__r+r,rDXs zDuplicateExtension.__init____name__ __module__ __qualname__rD __classcell__r+r+rFr,r=Wsr=cs&eZdZddddfdd ZZS)ExtensionNotFoundr.rr>r?cst|||_dSr$rBrErFr+r,rD^s zExtensionNotFound.__init__rHr+r+rFr,rM]srMc@s$eZdZUded<ddddZdS)rz!typing.ClassVar[ObjectIdentifier]rAr r2cCstd|dS)z7 Serializes the extension type to DER. z3public_bytes is not implemented for extension type N)NotImplementedErrorr5r+r+r,r&fszExtensionType.public_bytesN)rIrJrK__annotations__r&r+r+r+r,rcs ) metaclassc@sXeZdZdddddZdddd d Zd d d ddZed\ZZZ ddddZ dS) Extensionsz)typing.Iterable[Extension[ExtensionType]]r>) extensionsr#cCst||_dSr$)list _extensions)r6rRr+r+r,rDpszExtensions.__init__rzExtension[ExtensionType])rAr#cCs2|D]}|j|kr|Sqtd|d|dS)NNo  extension was found)rArM)r6rAextr+r+r,get_extension_for_oidus  z Extensions.get_extension_for_oidztype[ExtensionTypeVar]zExtension[ExtensionTypeVar])extclassr#cCsF|tkrtd|D]}t|j|r|Sqtd|d|jdS)Nz|UnrecognizedExtension can't be used with get_extension_for_class because more than one instance of the class may be present.rUrV)UnrecognizedExtension TypeErrorr%valuerMrA)r6rYrWr+r+r,get_extension_for_class~s   z"Extensions.get_extension_for_classrTr.r2cCsd|jdS)Nz )rTr5r+r+r,__repr__szExtensions.__repr__N) rIrJrKrDrXr]r<__len____iter__ __getitem__r_r+r+r+r,rQos  rQc@sneZdZejZdddddZdddd d Zdd d d Zdd ddZ e dd ddZ dd ddZ dS) CRLNumberr1r> crl_numberr#cCst|tstd||_dSNzcrl_number must be an integerr%r1r[ _crl_numberr6rer+r+r,rDs zCRLNumber.__init__objectboolotherr#cCst|tstS|j|jkSr$)r%rcNotImplementedrer6rmr+r+r,__eq__s zCRLNumber.__eq__r2cCs t|jSr$hashrer5r+r+r,__hash__szCRLNumber.__hash__r.cCsd|jdS)Nz )key_identifierauthority_cert_issuerauthority_cert_serial_numberr#cCsr|dk|dkkrtd|dk rBt|}tdd|DsBtd|dk r\t|ts\td||_||_||_dS)NzXauthority_cert_issuer and authority_cert_serial_number must both be present or both Nonecss|]}t|tVqdSr$r%r.0xr+r+r, sz2AuthorityKeyIdentifier.__init__..z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer) ValueErrorrSallr[r%r1_key_identifier_authority_cert_issuer_authority_cert_serial_number)r6r|r}r~r+r+r,rDs, zAuthorityKeyIdentifier.__init__r r!cCst|}||dddSNr|r}r~r-)clsr"r)r+r+r,from_issuer_public_keys z-AuthorityKeyIdentifier.from_issuer_public_keySubjectKeyIdentifier)skir#cCs||jdddSrr))rrr+r+r,"from_issuer_subject_key_identifiers z9AuthorityKeyIdentifier.from_issuer_subject_key_identifierr.r2cCsd|jd|jd|jdS)Nz')r)r#cCs ||_dSr$Z_digest)r6r)r+r+r,rD"szSubjectKeyIdentifier.__init__r r!cCs |t|Sr$r)rr"r+r+r,from_public_key%sz$SubjectKeyIdentifier.from_public_keyr2cCs|jSr$rr5r+r+r,r)+szSubjectKeyIdentifier.digestcCs|jSr$rr5r+r+r,r|/sz#SubjectKeyIdentifier.key_identifierr.cCsd|jdS)Nz descriptionsr#cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$r%AccessDescriptionrr+r+r,rJsz6AuthorityInformationAccess.__init__..@Every item in the descriptions list must be an AccessDescriptionrSrr[ _descriptionsr6rr+r+r,rDFs z#AuthorityInformationAccess.__init__rr.r2cCsd|jdS)NzrcCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$rrr+r+r,rksz4SubjectInformationAccess.__init__..rrrr+r+r,rDgs z!SubjectInformationAccess.__init__rr.r2cCsd|jdS)Nz) access_methodaccess_locationr#cCs4t|tstdt|ts$td||_||_dS)Nz)access_method must be an ObjectIdentifierz%access_location must be a GeneralName)r%rr[r_access_method_access_location)r6rrr+r+r,rDs   zAccessDescription.__init__r.r2cCsd|jd|jdS)Nz!)ca path_lengthr#cCsXt|tstd|dk r&|s&td|dk rHt|tr@|dkrHtd||_||_dS)Nzca must be a boolean valuez)path_length must be None when ca is Falserz2path_length must be a non-negative integer or None)r%rkr[rr1_ca _path_length)r6rrr+r+r,rDs  zBasicConstraints.__init__r2cCs|jSr$)rr5r+r+r,rszBasicConstraints.cacCs|jSr$)rr5r+r+r,rszBasicConstraints.path_lengthr.cCsd|jd|jdS)NzrdcCst|tstd||_dSrfrgrir+r+r,rDs zDeltaCRLIndicator.__init__r2cCs|jSr$rur5r+r+r,reszDeltaCRLIndicator.crl_numberrjrkrlcCst|tstS|j|jkSr$)r%rrnreror+r+r,rps zDeltaCRLIndicator.__eq__cCs t|jSr$rqr5r+r+r,rsszDeltaCRLIndicator.__hash__r.cCsd|jdS)Nzdistribution_pointsr#cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$r%DistributionPointrr+r+r,rsz1CRLDistributionPoints.__init__..?distribution_points must be a list of DistributionPoint objectsrSrr[_distribution_pointsr6rr+r+r,rDszCRLDistributionPoints.__init__rr.r2cCsd|jdS)NzrcCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$rrr+r+r,r%sz'FreshestCRL.__init__..rrrr+r+r,rD!szFreshestCRL.__init__rr.r2cCsd|jdS)Nz ) full_name relative_namereasons crl_issuerr#cCs|r|rtd|s$|s$|s$td|dk rNt|}tdd|DsNtd|rdt|tsdtd|dk rt|}tdd|Dstd|rt|trtd d|Dstd |rtj|kstj |krtd ||_ ||_ ||_ ||_ dS) NzOYou cannot provide both full_name and relative_name, at least one must be None.z?Either full_name, relative_name or crl_issuer must be provided.css|]}t|tVqdSr$rrr+r+r,rXsz-DistributionPoint.__init__..z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamecss|]}t|tVqdSr$rrr+r+r,resz2crl_issuer must be None or a list of general namescss|]}t|tVqdSr$r% ReasonFlagsrr+r+r,rlsz0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)rrSrr[r%r frozensetr unspecifiedremove_from_crl _full_name_relative_name_reasons _crl_issuer)r6rrrrr+r+r,rDDsV  zDistributionPoint.__init__r.r2cCs d|S)Nz}formatr5r+r+r,r_~szDistributionPoint.__repr__rjrkrlcCs>t|tstS|j|jko<|j|jko<|j|jko<|j|jkSr$)r%rrnrrrrror+r+r,rps     zDistributionPoint.__eq__r1cCsH|jdk rt|j}nd}|jdk r0t|j}nd}t||j|j|fSr$)rrrrrrr)r6fnrr+r+r,rss    zDistributionPoint.__hash__rcCs|jSr$rr5r+r+r,rszDistributionPoint.full_namecCs|jSr$rr5r+r+r,rszDistributionPoint.relative_namecCs|jSr$)rr5r+r+r,rszDistributionPoint.reasonscCs|jSr$)rr5r+r+r,rszDistributionPoint.crl_issuerN) rIrJrKrDr_rprsrxrrrrr+r+r+r,rCs:  rc@s4eZdZdZdZdZdZdZdZdZ dZ d Z d Z d S) rrZ keyCompromiseZ cACompromiseZaffiliationChanged supersededZcessationOfOperationZcertificateHoldZprivilegeWithdrawnZ aACompromiseZ removeFromCRLN) rIrJrKrkey_compromise ca_compromiseaffiliation_changedrcessation_of_operationcertificate_holdprivilege_withdrawn aa_compromiserr+r+r+r,rsr)rrrrrrrr c@seZdZejZddddddZdddd Zd d d d dZddddZ e ddddZ e ddddZ ddddZ dS)PolicyConstraintsr{r>)require_explicit_policyinhibit_policy_mappingr#cCs\|dk rt|tstd|dk r4t|ts4td|dkrL|dkrLtd||_||_dS)Nz>require_explicit_policy must be a non-negative integer or Nonez=inhibit_policy_mapping must be a non-negative integer or NonezSAt least one of require_explicit_policy and inhibit_policy_mapping must not be None)r%r1r[r_require_explicit_policy_inhibit_policy_mapping)r6rrr+r+r,rDs(  zPolicyConstraints.__init__r.r2cCs d|S)Nz{rr5r+r+r,r_szPolicyConstraints.__repr__rjrkrlcCs&t|tstS|j|jko$|j|jkSr$)r%rrnrrror+r+r,rps    zPolicyConstraints.__eq__r1cCst|j|jfSr$)rrrrr5r+r+r,rs's zPolicyConstraints.__hash__cCs|jSr$)rr5r+r+r,r,sz)PolicyConstraints.require_explicit_policycCs|jSr$)rr5r+r+r,r0sz(PolicyConstraints.inhibit_policy_mappingr cCs t|Sr$rvr5r+r+r,r&4szPolicyConstraints.public_bytesN)rIrJrKrZPOLICY_CONSTRAINTSrArDr_rprsrxrrr&r+r+r+r,rs rc@sjeZdZejZdddddZed\ZZ Z ddd d Z d d d ddZ ddddZ ddddZdS)CertificatePoliciesz"typing.Iterable[PolicyInformation]r>)policiesr#cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$)r%PolicyInformationrr+r+r,r=sz/CertificatePolicies.__init__..z;Every item in the policies list must be a PolicyInformation)rSrr[ _policies)r6rr+r+r,rD;s zCertificatePolicies.__init__rr.r2cCsd|jdS)Nz)policy_identifierpolicy_qualifiersr#cCsLt|tstd||_|dk rBt|}tdd|DsBtd||_dS)Nz-policy_identifier must be an ObjectIdentifiercss|]}t|ttfVqdSr$)r%r. UserNoticerr+r+r,rdsz-PolicyInformation.__init__..zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r%rr[_policy_identifierrSr_policy_qualifiers)r6rrr+r+r,rDXs zPolicyInformation.__init__r.r2cCsd|jd|jdS)Nz%)notice_reference explicit_textr#cCs&|rt|tstd||_||_dS)Nz2notice_reference must be None or a NoticeReference)r%NoticeReferencer[_notice_reference_explicit_text)r6rrr+r+r,rDszUserNotice.__init__r.r2cCsd|jd|jdS)Nz) organizationnotice_numbersr#cCs2||_t|}tdd|Ds(td||_dS)Ncss|]}t|tVqdSr$)r%r1rr+r+r,rsz+NoticeReference.__init__..z)notice_numbers must be a list of integers) _organizationrSrr[_notice_numbers)r6rrr+r+r,rDs zNoticeReference.__init__r.r2cCsd|jd|jdS)Nz)usagesr#cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$r%rrr+r+r,rsz,ExtendedKeyUsage.__init__..z9Every item in the usages list must be an ObjectIdentifier)rSrr[_usages)r6rr+r+r,rDs zExtendedKeyUsage.__init__rr.r2cCsd|jdS)Nzr+r5r+r+r,r_szOCSPNoCheck.__repr__r cCs t|Sr$rvr5r+r+r,r&szOCSPNoCheck.public_bytesN) rIrJrKrZ OCSP_NO_CHECKrArprsr_r&r+r+r+r,rs rc@sLeZdZejZdddddZdddd Zd dd d Zd dddZ dS) PrecertPoisonrjrkrlcCst|tstSdSr)r%rrnror+r+r,rps zPrecertPoison.__eq__r1r2cCsttSr$)rrrr5r+r+r,rsszPrecertPoison.__hash__r.cCsdS)Nzr+r5r+r+r,r_"szPrecertPoison.__repr__r cCs t|Sr$rvr5r+r+r,r&%szPrecertPoison.public_bytesN) rIrJrKrZPRECERT_POISONrArprsr_r&r+r+r+r,rs rc@sjeZdZejZdddddZed\ZZ Z ddd d Z d d d ddZ ddddZ ddddZdS) TLSFeatureztyping.Iterable[TLSFeatureType]r>)featuresr#cCs8t|}tdd|Dr&t|dkr.td||_dS)Ncss|]}t|tVqdSr$)r%TLSFeatureTyperr+r+r,r/sz&TLSFeature.__init__..rz@features must be a list of elements from the TLSFeatureType enum)rSrr3r[ _features)r6rr+r+r,rD,s zTLSFeature.__init__rr.r2cCsd|jdS)Nzs zTLSFeature.__eq__r1cCstt|jSr$)rrrrr5r+r+r,rsDszTLSFeature.__hash__r cCs t|Sr$rvr5r+r+r,r&GszTLSFeature.public_bytesN)rIrJrKrZ TLS_FEATURErArDr<r`rarbr_rprsr&r+r+r+r,r)s rc@seZdZdZdZdS)rrN)rIrJrKZstatus_requestZstatus_request_v2r+r+r+r,rKsrcCsi|] }|j|qSr+r\rr+r+r, Vsrc@sneZdZejZdddddZdddd Zd d d d dZddddZ e ddddZ ddddZ dS)InhibitAnyPolicyr1r>) skip_certsr#cCs,t|tstd|dkr"td||_dS)Nzskip_certs must be an integerrz)skip_certs must be a non-negative integer)r%r1r[r _skip_certs)r6r r+r+r,rD\s  zInhibitAnyPolicy.__init__r.r2cCsd|jdS)Nz) digital_signaturecontent_commitmentkey_enciphermentdata_encipherment key_agreement key_cert_signcrl_sign encipher_only decipher_onlyr#c CsN|s|s | rtd||_||_||_||_||_||_||_||_| |_ dS)NzKencipher_only and decipher_only can only be true when key_agreement is true) r_digital_signature_content_commitment_key_encipherment_data_encipherment_key_agreement_key_cert_sign _crl_sign_encipher_only_decipher_only) r6r r rrrrrrrr+r+r,rD|s zKeyUsage.__init__r2cCs|jSr$)rr5r+r+r,r szKeyUsage.digital_signaturecCs|jSr$)rr5r+r+r,r szKeyUsage.content_commitmentcCs|jSr$)rr5r+r+r,rszKeyUsage.key_enciphermentcCs|jSr$)rr5r+r+r,rszKeyUsage.data_enciphermentcCs|jSr$)rr5r+r+r,rszKeyUsage.key_agreementcCs|jSr$)rr5r+r+r,rszKeyUsage.key_cert_signcCs|jSr$)rr5r+r+r,rszKeyUsage.crl_signcCs|jstdn|jSdS)Nz7encipher_only is undefined unless key_agreement is true)rrrr5r+r+r,rs zKeyUsage.encipher_onlycCs|jstdn|jSdS)Nz7decipher_only is undefined unless key_agreement is true)rrrr5r+r+r,rs zKeyUsage.decipher_onlyr.cCsxz|j}|j}Wntk r,d}d}YnXd|jd|jd|jd|jd|jd|jd|j d |d |d S) NFz)permitted_subtreesexcluded_subtreesr#cCs|dk r@t|}|stdtdd|Ds6td|||dk rt|}|s\tdtdd|Dsvtd|||dkr|dkrtd||_||_dS) Nz3permitted_subtrees must be a non-empty list or Nonecss|]}t|tVqdSr$rrr+r+r,r sz+NameConstraints.__init__..z@permitted_subtrees must be a list of GeneralName objects or Nonez2excluded_subtrees must be a non-empty list or Nonecss|]}t|tVqdSr$rrr+r+r,rsz?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)rSrrr[_validate_tree_permitted_subtrees_excluded_subtrees)r6rr r+r+r,rDs8  zNameConstraints.__init__rjrkrlcCs&t|tstS|j|jko$|j|jkSr$)r%rrnr rror+r+r,rp+s    zNameConstraints.__eq__typing.Iterable[GeneralName])treer#cCs||||dSr$)_validate_ip_name_validate_dns_namer6r%r+r+r,r!4s zNameConstraints._validate_treecCstdd|DrtddS)Ncss.|]&}t|to$t|jtjtjf VqdSr$)r%rr\ ipaddress IPv4Network IPv6Networkrnamer+r+r,r9s   z4NameConstraints._validate_ip_name..zGIPAddress name constraints must be an IPv4Network or IPv6Network object)anyr[r(r+r+r,r&8s z!NameConstraints._validate_ip_namecCstdd|DrtddS)Ncss"|]}t|tod|jkVqdS)*N)r%rr\r,r+r+r,rFsz5NameConstraints._validate_dns_name..zDDNSName name constraints must not contain the '*' wildcard character)r.rr(r+r+r,r'Es z"NameConstraints._validate_dns_namer.r2cCsd|jd|jdS)Nz$)rAcriticalr\r#cCs:t|tstdt|ts$td||_||_||_dS)Nz2oid argument must be an ObjectIdentifier instance.z critical must be a boolean value)r%rr[rk_oid _critical_value)r6rAr2r\r+r+r,rDrs  zExtension.__init__r2cCs|jSr$r3r5r+r+r,rAsz Extension.oidcCs|jSr$)r4r5r+r+r,r2szExtension.criticalcCs|jSr$r5r5r+r+r,r\szExtension.valuer.cCsd|jd|jd|jdS)Nz general_namesr#cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$rrr+r+r,rsz(GeneralNames.__init__..z^Every item in the general_names list must be an object conforming to the GeneralName interface)rSrr[_general_namesr6r;r+r+r,rDs zGeneralNames.__init__r<Btype[DNSName] | type[UniformResourceIdentifier] | type[RFC822Name] list[str]typer#cCsdSr$r+r6rAr+r+r,get_values_for_typesz GeneralNames.get_values_for_typetype[DirectoryName] list[Name]cCsdSr$r+rBr+r+r,rCstype[RegisteredID]list[ObjectIdentifier]cCsdSr$r+rBr+r+r,rCstype[IPAddress]list[_IPAddressTypes]cCsdSr$r+rBr+r+r,rCstype[OtherName]list[OtherName]cCsdSr$r+rBr+r+r,rCstype[DNSName] | type[DirectoryName] | type[IPAddress] | type[OtherName] | type[RFC822Name] | type[RegisteredID] | type[UniformResourceIdentifier]Ylist[_IPAddressTypes] | list[str] | list[OtherName] | list[Name] | list[ObjectIdentifier]cs0fdd|D}tkr(dd|DSt|S)Nc3s|]}t|r|VqdSr$)r%rirAr+r,rs z3GeneralNames.get_values_for_type..cSsg|] }|jqSr+rrNr+r+r, sz4GeneralNames.get_values_for_type..)rrS)r6rAZobjsr+rPr,rCsr.r2cCsd|jdS)Nzr:cCst||_dSr$r9r<r=r+r+r,rDszSubjectAlternativeName.__init__r<r>r?r@cCsdSr$r+rBr+r+r,rCsz*SubjectAlternativeName.get_values_for_typerDrEcCsdSr$r+rBr+r+r,rCsrFrGcCsdSr$r+rBr+r+r,rCsrHrIcCsdSr$r+rBr+r+r,rC srJrKcCsdSr$r+rBr+r+r,rCsrLrMcCs |j|Sr$r<rCrBr+r+r,rCsr.r2cCsd|jdS)Nzr:cCst||_dSr$rVr=r+r+r,rD<szIssuerAlternativeName.__init__r<r>r?r@cCsdSr$r+rBr+r+r,rCAsz)IssuerAlternativeName.get_values_for_typerDrEcCsdSr$r+rBr+r+r,rCIsrFrGcCsdSr$r+rBr+r+r,rCOsrHrIcCsdSr$r+rBr+r+r,rCUsrJrKcCsdSr$r+rBr+r+r,rCZsrLrMcCs |j|Sr$rWrBr+r+r,rC_sr.r2cCsd|jdS)Nzr:cCst||_dSr$rVr=r+r+r,rDszCertificateIssuer.__init__r<r>r?r@cCsdSr$r+rBr+r+r,rCsz%CertificateIssuer.get_values_for_typerDrEcCsdSr$r+rBr+r+r,rCsrFrGcCsdSr$r+rBr+r+r,rCsrHrIcCsdSr$r+rBr+r+r,rCsrJrKcCsdSr$r+rBr+r+r,rCsrLrMcCs |j|Sr$rWrBr+r+r,rCsr.r2cCsd|jdS)Nz)reasonr#cCst|tstd||_dS)Nz*reason must be an element from ReasonFlags)r%rr[_reason)r6r\r+r+r,rDs zCRLReason.__init__r.r2cCsd|jdS)Nz)invalidity_dater#cCst|tjstd||_dS)Nz+invalidity_date must be a datetime.datetime)r%datetimer[_invalidity_date)r6r`r+r+r,rDs zInvalidityDate.__init__r.r2cCsd|jdS)Nz signed_certificate_timestampsr#cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$r%r rZsctr+r+r,rszEPrecertificateSignedCertificateTimestamps.__init__..YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamprSrr[_signed_certificate_timestampsr6rnr+r+r,rD sz2PrecertificateSignedCertificateTimestamps.__init__rsr.r2cCsdt|dS)Nz+rmcCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$rorpr+r+r,r?sz7SignedCertificateTimestamps.__init__..rqrrrtr+r+r,rD8sz$SignedCertificateTimestamps.__init__rsr.r2cCsdt|dS)Nz)noncer#cCst|tstd||_dS)Nznonce must be bytes)r%r r[_nonce)r6ryr+r+r,rDcs zOCSPNonce.__init__rjrkrlcCst|tstS|j|jkSr$)r%rxrnryror+r+r,rpis zOCSPNonce.__eq__r1r2cCs t|jSr$)rrryr5r+r+r,rsoszOCSPNonce.__hash__r.cCsd|jdS)Nz) responsesr#cCs,t|}tdd|Dr"td||_dS)Ncss|]}t|t VqdSr$r)rrr+r+r,rsz3OCSPAcceptableResponses.__init__..z'All responses must be ObjectIdentifiers)rSr.r[ _responses)r6r|r+r+r,rDsz OCSPAcceptableResponses.__init__rjrkrlcCst|tstS|j|jkSr$)r%r{rnr~ror+r+r,rps zOCSPAcceptableResponses.__eq__r1r2cCstt|jSr$)rrrr~r5r+r+r,rssz OCSPAcceptableResponses.__hash__r.cCsd|jdS)Nz#)rronly_contains_user_certsonly_contains_ca_certsonly_some_reasons indirect_crlonly_contains_attribute_certsr#c Cs|dk rt|}|r8t|tr0tdd|Ds8td|rXtj|ksPtj|krXtdt|t rt|t rt|t rt|t std||||g}t dd|Ddkrtd t |||||||gstd ||_ ||_ ||_||_||_||_||_dS) Ncss|]}t|tVqdSr$rrr+r+r,rsz4IssuingDistributionPoint.__init__..z:only_some_reasons must be None or frozenset of ReasonFlagszTunspecified and remove_from_crl are not valid reasons in an IssuingDistributionPointzuonly_contains_user_certs, only_contains_ca_certs, indirect_crl and only_contains_attribute_certs must all be boolean.cSsg|] }|r|qSr+r+rr+r+r,rQsz5IssuingDistributionPoint.__init__..rzOnly one of the following can be set to True: only_contains_user_certs, only_contains_ca_certs, indirect_crl, only_contains_attribute_certszCannot create empty extension: if only_contains_user_certs, only_contains_ca_certs, indirect_crl, and only_contains_attribute_certs are all False, then either full_name, relative_name, or only_some_reasons must have a value.)rSr%rrr[rrrrrkr3r._only_contains_user_certs_only_contains_ca_certs _indirect_crl_only_contains_attribute_certs_only_some_reasonsrr) r6rrrrrrrZcrl_constraintsr+r+r,rDst  z!IssuingDistributionPoint.__init__r.r2cCs>d|jd|jd|jd|jd|jd|jd|jdS) Nz$) template_id major_version minor_versionr#cCsTt|tstd||_|dk r*t|tr<|dk rDt|tsDtd||_||_dS)Noid must be an ObjectIdentifierz8major_version and minor_version must be integers or None)r%rr[ _template_idr1_major_version_minor_version)r6rrrr+r+r,rD=s  zMSCertificateTemplate.__init__r2cCs|jSr$)rr5r+r+r,rQsz!MSCertificateTemplate.template_idcCs|jSr$)rr5r+r+r,rUsz#MSCertificateTemplate.major_versioncCs|jSr$)rr5r+r+r,rYsz#MSCertificateTemplate.minor_versionr.cCsd|jd|jd|jdS)Nz#)rAr\r#cCs"t|tstd||_||_dS)Nr)r%rr[r3r5)r6rAr\r+r+r,rDvs zUnrecognizedExtension.__init__r2cCs|jSr$r6r5r+r+r,rA|szUnrecognizedExtension.oidcCs|jSr$r7r5r+r+r,r\szUnrecognizedExtension.valuer.cCsd|jd|jdS)Nzs       ,   'l$!!(/%%k A;+("  s0PHHH$++!;