a oe @s:ddlmZddlZddlZddlZddlZddlZddlmZddl 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@eAjGdAeAjHdBeAjIdCiZKGdDdEdEe3ZLGdFdGdGe3ZMGdHdIdIZNGdJdKdKZOGdLdMdMZPGdNdOdOe3ZQGdPdQdQe3ZRGdRdSdSe3ZSGdTdUdUe3ZTGdVdWdWej@ZUdXdYeUDZVGdZd[d[e3ZWGd\d]d]e3ZXGd^d_d_e3ZYGd`dadaejZe,Z[GdbdcdcZ\Gdddedee3Z]Gdfdgdge3Z^Gdhdidie3Z_Gdjdkdke3Z`Gdldmdme3ZaGdndodoe3ZbGdpdqdqe3ZcGdrdsdse3ZdGdtdudue3ZeGdvdwdwe3ZfGdxdydye3ZgGdzd{d{e3ZhdS)|) 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_datahashlibZsha1digest)r"dataZ serializedr*=C:\Program Files\Certbot\pkgs\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$)iterr3r4r.r*r+ iter_methodNsz+_make_sequence_methods..iter_methodcst||Sr$)r3)r5idxr.r*r+getitem_methodQsz._make_sequence_methods..getitem_methodr*)r/r6r8r:r*r.r+_make_sequence_methodsJs  r;cs&eZdZddddfdd ZZS)DuplicateExtensionr-rNonemsgoidr#cst|||_dSr$super__init__r@r5r?r@ __class__r*r+rCXs zDuplicateExtension.__init____name__ __module__ __qualname__rC __classcell__r*r*rEr+r<Wsr<cs&eZdZddddfdd ZZS)ExtensionNotFoundr-rr=r>cst|||_dSr$rArDrEr*r+rC^s zExtensionNotFound.__init__rGr*r*rEr+rL]srLc@s$eZdZUded<ddddZdS)rz!typing.ClassVar[ObjectIdentifier]r@r r1cCstd|dS)z7 Serializes the extension type to DER. z7public_bytes is not implemented for extension type {!r}N)NotImplementedErrorformatr4r*r*r+r&fs zExtensionType.public_bytesN)rHrIrJ__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)r5rRr*r*r+rCrszExtensions.__init__rzExtension[ExtensionType])r@r#cCs2|D]}|j|kr|Sqtd|d|dS)NNo  extension was found)r@rL)r5r@extr*r*r+get_extension_for_oidws  z Extensions.get_extension_for_oidztyping.Type[ExtensionTypeVar]zExtension[ExtensionTypeVar])extclassr#cCsF|turtd|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%valuerLr@)r5rYrWr*r*r+get_extension_for_classs  z"Extensions.get_extension_for_classrTr-r1cCsd|jdS)Nz )rTr4r*r*r+__repr__szExtensions.__repr__N) rHrIrJrCrXr]r;__len____iter__ __getitem__r_r*r*r*r+rQqs  rQc@sneZdZejZdddddZdddd d Zdd d d Zdd ddZ e dd ddZ dd ddZ dS) CRLNumberr0r= crl_numberr#cCst|tstd||_dSNzcrl_number must be an integerr%r0r[ _crl_numberr5rer*r*r+rCs zCRLNumber.__init__objectboolotherr#cCst|tstS|j|jkSr$)r%rcNotImplementedrer5rmr*r*r+__eq__s zCRLNumber.__eq__r1cCs t|jSr$hashrer4r*r*r+__hash__szCRLNumber.__hash__r-cCsd|jdS)Nz sz2AuthorityKeyIdentifier.__init__..z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer) ValueErrorrSallr[r%r0_key_identifier_authority_cert_issuer_authority_cert_serial_number)r5r|r}r~r*r*r+rCs* zAuthorityKeyIdentifier.__init__r r!cCst|}||dddSN)r|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-r1cCs d|S)NzrNr4r*r*r+r_szAuthorityKeyIdentifier.__repr__rjrkrlcCs2t|tstS|j|jko0|j|jko0|j|jkSr$)r%ryrnr|r}r~ror*r*r+rps   zAuthorityKeyIdentifier.__eq__r0cCs,|jdurd}n t|j}t|j||jfSr$)r}tuplerrr|r~)r5Zacir*r*r+rss    zAuthorityKeyIdentifier.__hash__cCs|jSr$)rr4r*r*r+r|sz%AuthorityKeyIdentifier.key_identifier)typing.Optional[typing.List[GeneralName]]cCs|jSr$)rr4r*r*r+r}sz,AuthorityKeyIdentifier.authority_cert_issuercCs|jSr$)rr4r*r*r+r~sz3AuthorityKeyIdentifier.authority_cert_serial_numberr cCs t|Sr$rvr4r*r*r+r&sz#AuthorityKeyIdentifier.public_bytesN)rHrIrJrZAUTHORITY_KEY_IDENTIFIERr@rC classmethodrrr_rprsrxr|r}r~r&r*r*r*r+rys &    ryc@seZdZejZdddddZeddddd Ze dd d d Z e dd d dZ dd ddZ dddddZ dd ddZdd ddZdS)rr r=)r(r#cCs ||_dSr$Z_digest)r5r(r*r*r+rC$szSubjectKeyIdentifier.__init__r r!cCs |t|Sr$r)rr"r*r*r+from_public_key'sz$SubjectKeyIdentifier.from_public_keyr1cCs|jSr$rr4r*r*r+r(-szSubjectKeyIdentifier.digestcCs|jSr$rr4r*r*r+r|1sz#SubjectKeyIdentifier.key_identifierr-cCsd|jdS)NzszSubjectKeyIdentifier.__hash__cCs t|Sr$rvr4r*r*r+r&Asz!SubjectKeyIdentifier.public_bytesN)rHrIrJrZSUBJECT_KEY_IDENTIFIERr@rCrrrxr(r|r_rprsr&r*r*r*r+r!src@sjeZdZejZdddddZed\ZZ Z ddd d Z d d d ddZ ddddZ ddddZdS)AuthorityInformationAccess"typing.Iterable[AccessDescription]r= descriptionsr#cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$r%AccessDescriptionrr*r*r+rLz6AuthorityInformationAccess.__init__..@Every item in the descriptions list must be an AccessDescriptionrSrr[ _descriptionsr5rr*r*r+rCHs z#AuthorityInformationAccess.__init__rr-r1cCsd|jdS)Nz.rrrr*r*r+rCis z!SubjectInformationAccess.__init__rr-r1cCsd|jdS)Nzrr4r*r*r+r_szAccessDescription.__repr__rjrkrlcCs&t|tstS|j|jko$|j|jkSr$)r%rrnrrror*r*r+rps    zAccessDescription.__eq__r0cCst|j|jfSr$)rrrrr4r*r*r+rsszAccessDescription.__hash__cCs|jSr$)rr4r*r*r+rszAccessDescription.access_methodcCs|jSr$)rr4r*r*r+rsz!AccessDescription.access_locationN) rHrIrJrCr_rprsrxrrr*r*r*r+rs  rc@seZdZejZddddddZedddd Zeddd d Z d dd dZ dddddZ ddddZ ddddZ dS)BasicConstraintsrkr{r=)ca path_lengthr#cCsXt|tstd|dur&|s&td|durHt|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[rr0_ca _path_length)r5rrr*r*r+rCs  zBasicConstraints.__init__r1cCs|jSr$)rr4r*r*r+rszBasicConstraints.cacCs|jSr$)rr4r*r*r+rszBasicConstraints.path_lengthr-cCs d|S)Nz:rr4r*r*r+r_szBasicConstraints.__repr__rjrlcCs&t|tstS|j|jko$|j|jkSr$)r%rrnrrror*r*r+rps zBasicConstraints.__eq__r0cCst|j|jfSr$)rrrrr4r*r*r+rsszBasicConstraints.__hash__r cCs t|Sr$rvr4r*r*r+r&szBasicConstraints.public_bytesN)rHrIrJrZBASIC_CONSTRAINTSr@rCrxrrr_rprsr&r*r*r*r+rsrc@sneZdZejZdddddZeddddZd d d d d Z ddddZ ddddZ ddddZ dS)DeltaCRLIndicatorr0r=rdcCst|tstd||_dSrfrgrir*r*r+rCs zDeltaCRLIndicator.__init__r1cCs|jSr$rur4r*r*r+reszDeltaCRLIndicator.crl_numberrjrkrlcCst|tstS|j|jkSr$)r%rrnreror*r*r+rps zDeltaCRLIndicator.__eq__cCs t|jSr$rqr4r*r*r+rsszDeltaCRLIndicator.__hash__r-cCsd|jdS)Nz.?distribution_points must be a list of DistributionPoint objectsrSrr[_distribution_pointsr5rr*r*r+rCszCRLDistributionPoints.__init__rr-r1cCsd|jdS)Nz.rrrr*r*r+rC"szFreshestCRL.__init__rr-r1cCsd|jdS)Nz .z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamecss|]}t|tVqdSr$rrr*r*r+rfrz2crl_issuer must be None or a list of general namescss|]}t|tVqdSr$r% ReasonFlagsrr*r*r+rmrz0reasons 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)r5rrrrr*r*r+rCEsV  zDistributionPoint.__init__r-r1cCs d|S)Nz}rr4r*r*r+r_szDistributionPoint.__repr__rjrkrlcCs>t|tstS|j|jko<|j|jko<|j|jko<|j|jkSr$)r%rrnrrrrror*r*r+rps     zDistributionPoint.__eq__r0cCsH|jdurt|j}nd}|jdur0t|j}nd}t||j|j|fSr$)rrrrrrr)r5fnrr*r*r+rss  zDistributionPoint.__hash__rcCs|jSr$rr4r*r*r+rszDistributionPoint.full_namecCs|jSr$rr4r*r*r+rszDistributionPoint.relative_namecCs|jSr$)rr4r*r*r+rszDistributionPoint.reasonscCs|jSr$)rr4r*r*r+rszDistributionPoint.crl_issuerN) rHrIrJrCr_rprsrxrrrrr*r*r*r+rDs: rc@s4eZdZdZdZdZdZdZdZdZ dZ d Z d Z d S) rrZ keyCompromiseZ cACompromiseZaffiliationChanged supersededZcessationOfOperationZcertificateHoldZprivilegeWithdrawnZ aACompromiseZ removeFromCRLN) rHrIrJrkey_compromise ca_compromiseaffiliation_changedrcessation_of_operationcertificate_holdprivilege_withdrawn aa_compromiserr*r*r*r+rsr)rrrrrrrrc@seZdZejZddddddZdddd Zd d d d dZddddZ e ddddZ e ddddZ ddddZ dS)PolicyConstraintsr{r=)require_explicit_policyinhibit_policy_mappingr#cCs\|durt|tstd|dur4t|ts4td|durL|durLtd||_||_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%r0r[r_require_explicit_policy_inhibit_policy_mapping)r5rrr*r*r+rCs$  zPolicyConstraints.__init__r-r1cCs d|S)Nz{rr4r*r*r+r_szPolicyConstraints.__repr__rjrkrlcCs&t|tstS|j|jko$|j|jkSr$)r%rrnrrror*r*r+rp s    zPolicyConstraints.__eq__r0cCst|j|jfSr$)rrrrr4r*r*r+rss zPolicyConstraints.__hash__cCs|jSr$)rr4r*r*r+rsz)PolicyConstraints.require_explicit_policycCs|jSr$)rr4r*r*r+rsz(PolicyConstraints.inhibit_policy_mappingr cCs t|Sr$rvr4r*r*r+r& szPolicyConstraints.public_bytesN)rHrIrJrZPOLICY_CONSTRAINTSr@rCr_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)rz/CertificatePolicies.__init__..z;Every item in the policies list must be a PolicyInformation)rSrr[ _policies)r5rr*r*r+rC's zCertificatePolicies.__init__rr-r1cCsd|jdS)Nz.zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r%rr[_policy_identifierrSr_policy_qualifiers)r5rrr*r*r+rCDs zPolicyInformation.__init__r-r1cCs d|S)Nzerr4r*r*r+r_\szPolicyInformation.__repr__rjrkrlcCs&t|tstS|j|jko$|j|jkSr$)r%rrnrrror*r*r+rpbs    zPolicyInformation.__eq__r0cCs(|jdurt|j}nd}t|j|fSr$)rrrrr)r5Zpqr*r*r+rsks  zPolicyInformation.__hash__cCs|jSr$)rr4r*r*r+rusz#PolicyInformation.policy_identifierz;typing.Optional[typing.List[typing.Union[str, UserNotice]]]cCs|jSr$)rr4r*r*r+rysz#PolicyInformation.policy_qualifiersN) rHrIrJrCr_rprsrxrrr*r*r*r+rCs  rc@sneZdZddddddZddd d Zd d d ddZddddZeddddZeddddZ dS)rz typing.Optional[NoticeReference]typing.Optional[str]r=)notice_reference explicit_textr#cCs&|rt|tstd||_||_dS)Nz2notice_reference must be None or a NoticeReference)r%NoticeReferencer[_notice_reference_explicit_text)r5rrr*r*r+rCszUserNotice.__init__r-r1cCs d|S)NzVrr4r*r*r+r_szUserNotice.__repr__rjrkrlcCs&t|tstS|j|jko$|j|jkSr$)r%rrnrrror*r*r+rps    zUserNotice.__eq__r0cCst|j|jfSr$)rrrrr4r*r*r+rsszUserNotice.__hash__cCs|jSr$)rr4r*r*r+rszUserNotice.notice_referencecCs|jSr$)rr4r*r*r+rszUserNotice.explicit_textN) rHrIrJrCr_rprsrxrrr*r*r*r+rs rc@sneZdZddddddZddd d Zd d d ddZddddZeddddZeddddZ dS)rrztyping.Iterable[int]r=) organizationnotice_numbersr#cCs2||_t|}tdd|Ds(td||_dS)Ncss|]}t|tVqdSr$)r%r0rr*r*r+rrz+NoticeReference.__init__..z)notice_numbers must be a list of integers) _organizationrSrr[_notice_numbers)r5rrr*r*r+rCs zNoticeReference.__init__r-r1cCs d|S)NzUrr4r*r*r+r_szNoticeReference.__repr__rjrkrlcCs&t|tstS|j|jko$|j|jkSr$)r%rrnrrror*r*r+rps    zNoticeReference.__eq__r0cCst|jt|jfSr$)rrrrrr4r*r*r+rsszNoticeReference.__hash__cCs|jSr$)rr4r*r*r+rszNoticeReference.organizationztyping.List[int]cCs|jSr$)rr4r*r*r+rszNoticeReference.notice_numbersN) rHrIrJrCr_rprsrxrrr*r*r*r+rs  rc@sjeZdZejZdddddZed\ZZ Z ddd d Z d d d ddZ ddddZ ddddZdS)ExtendedKeyUsage!typing.Iterable[ObjectIdentifier]r=)usagesr#cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$r%rrr*r*r+rrz,ExtendedKeyUsage.__init__..z9Every item in the usages list must be an ObjectIdentifier)rSrr[_usages)r5rr*r*r+rCs zExtendedKeyUsage.__init__rr-r1cCsd|jdS)Nzr*r4r*r*r+r_szOCSPNoCheck.__repr__r cCs t|Sr$rvr4r*r*r+r&szOCSPNoCheck.public_bytesN) rHrIrJrZ OCSP_NO_CHECKr@rprsr_r&r*r*r*r+rs rc@sLeZdZejZdddddZdddd Zd dd d Zd dddZ dS) PrecertPoisonrjrkrlcCst|tstSdSr)r%rrnror*r*r+rps zPrecertPoison.__eq__r0r1cCsttSr$)rrrr4r*r*r+rs szPrecertPoison.__hash__r-cCsdS)Nzr*r4r*r*r+r_szPrecertPoison.__repr__r cCs t|Sr$rvr4r*r*r+r&szPrecertPoison.public_bytesN) rHrIrJrZPRECERT_POISONr@rprsr_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+rrz&TLSFeature.__init__..rz@features must be a list of elements from the TLSFeatureType enum)rSrr2r[ _features)r5rr*r*r+rCs zTLSFeature.__init__rr-r1cCsd|jdS)NzDrrc@sneZdZejZdddddZdddd Zd d d d dZddddZ e ddddZ ddddZ dS)InhibitAnyPolicyr0r=) skip_certsr#cCs,t|tstd|dkr"td||_dS)Nzskip_certs must be an integerrz)skip_certs must be a non-negative integer)r%r0r[r _skip_certs)r5rr*r*r+rCJs  zInhibitAnyPolicy.__init__r-r1cCsd|jdS)Nz)rrrrN)r5rrr*r*r+r_s   zKeyUsage.__repr__rjrlcCszt|tstS|j|jkox|j|jkox|j|jkox|j|jkox|j|jkox|j|jkox|j |j kox|j |j kox|j |j kSr$) r%rrnr r r r r rrrrror*r*r+rps&          zKeyUsage.__eq__r0c Cs,t|j|j|j|j|j|j|j|j|j f Sr$) rrr r r r r rrrrr4r*r*r+rsszKeyUsage.__hash__r cCs t|Sr$rvr4r*r*r+r&szKeyUsage.public_bytesN)rHrIrJrZ KEY_USAGEr@rCrxr r r r r rrrrr_rprsr&r*r*r*r+rgs0 rc@seZdZejZddddddZdddd d Zd dd d dZd dd ddZ d dd ddZ ddddZ ddddZ e ddddZe ddddZddd d!Zd"S)#NameConstraintsrzr=)permitted_subtreesexcluded_subtreesr#cCs|dur@t|}|stdtdd|Ds6td|||durt|}|s\tdtdd|Dsvtd|||dur|durtd||_||_dS) Nz3permitted_subtrees must be a non-empty list or Nonecss|]}t|tVqdSr$rrr*r*r+rrz+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+rrz?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)r5rrr*r*r+rCs8  zNameConstraints.__init__rjrkrlcCs&t|tstS|j|jko$|j|jkSr$)r%rrnrrror*r*r+rps    zNameConstraints.__eq__typing.Iterable[GeneralName])treer#cCs||||dSr$)_validate_ip_name_validate_dns_namer5r"r*r*r+r"s zNameConstraints._validate_treecCstdd|DrtddS)Ncss.|]&}t|to$t|jtjtjf VqdSr$)r%rr\ ipaddressZ IPv4NetworkZ IPv6Networkrnamer*r*r+r's  z4NameConstraints._validate_ip_name..zGIPAddress name constraints must be an IPv4Network or IPv6Network object)anyr[r%r*r*r+r#&s z!NameConstraints._validate_ip_namecCstdd|DrtddS)Ncss"|]}t|tod|jvVqdS)*N)r%rr\r'r*r*r+r4sz5NameConstraints._validate_dns_name..zDDNSName name constraints must not contain the '*' wildcard character)r)rr%r*r*r+r$3s z"NameConstraints._validate_dns_namer-r1cCs d|S)Nzerr4r*r*r+r_<szNameConstraints.__repr__r0cCs@|jdurt|j}nd}|jdur0t|j}nd}t||fSr$)rrrrr)r5Zpsesr*r*r+rsBs  zNameConstraints.__hash__rcCs|jSr$)rr4r*r*r+rSsz"NameConstraints.permitted_subtreescCs|jSr$)r r4r*r*r+rYsz!NameConstraints.excluded_subtreesr cCs t|Sr$rvr4r*r*r+r&_szNameConstraints.public_bytesN)rHrIrJrZNAME_CONSTRAINTSr@rCrprr#r$r_rsrxrrr&r*r*r*r+rs*   rc@seZdZdddddddZeddd d Zeddd d Zeddd dZddddZdddddZ ddddZ dS) Extensionrrkrr=)r@criticalr\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)r5r@r-r\r*r*r+rCds  zExtension.__init__r1cCs|jSr$r.r4r*r*r+r@ssz Extension.oidcCs|jSr$)r/r4r*r*r+r-wszExtension.criticalcCs|jSr$r0r4r*r*r+r\{szExtension.valuer-cCs d|S)Nz@rr4r*r*r+r_szExtension.__repr__rjrlcCs2t|tstS|j|jko0|j|jko0|j|jkSr$)r%r,rnr@r-r\ror*r*r+rps    zExtension.__eq__r0cCst|j|j|jfSr$)rrr@r-r\r4r*r*r+rsszExtension.__hash__N) rHrIrJrCrxr@r-r\r_rprsr*r*r*r+r,cs r,c@seZdZdddddZed\ZZZej ddd d d Z ej d d d dd Z ej ddd dd Z ej ddd dd Z ej ddd dd Z ddd dd Z ddddZ dd d!d"d#Z d$dd%d&Z d'S)( GeneralNamesr!r= general_namesr#cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$rrr*r*r+rrz(GeneralNames.__init__..z^Every item in the general_names list must be an object conforming to the GeneralName interface)rSrr[_general_namesr5r5r*r*r+rCs zGeneralNames.__init__r6ctyping.Union[typing.Type[DNSName], typing.Type[UniformResourceIdentifier], typing.Type[RFC822Name]]typing.List[str]typer#cCsdSr$r*r5r;r*r*r+get_values_for_types z GeneralNames.get_values_for_typetyping.Type[DirectoryName]typing.List[Name]cCsdSr$r*r<r*r*r+r=styping.Type[RegisteredID]typing.List[ObjectIdentifier]cCsdSr$r*r<r*r*r+r=styping.Type[IPAddress]typing.List[_IPAddressTypes]cCsdSr$r*r<r*r*r+r=styping.Type[OtherName]typing.List[OtherName]cCsdSr$r*r<r*r*r+r=styping.Union[typing.Type[DNSName], typing.Type[DirectoryName], typing.Type[IPAddress], typing.Type[OtherName], typing.Type[RFC822Name], typing.Type[RegisteredID], typing.Type[UniformResourceIdentifier]]typing.Union[typing.List[_IPAddressTypes], typing.List[str], typing.List[OtherName], typing.List[Name], typing.List[ObjectIdentifier]]cs0fdd|D}tkr(dd|DSt|S)Nc3s|]}t|r|VqdSr$)r%rir;r*r+rrz3GeneralNames.get_values_for_type..cSsg|] }|jqSr*rrHr*r*r+ rz4GeneralNames.get_values_for_type..)rrS)r5r;Zobjsr*rJr+r=sr-r1cCsd|jdS)Nzr?cCsdSr$r*r<r*r*r+r=sr@rAcCsdSr$r*r<r*r*r+r=srBrCcCsdSr$r*r<r*r*r+r= srDrEcCsdSr$r*r<r*r*r+r=srFrGcCs |j|Sr$r6r=r<r*r*r+r=sr-r1cCsd|jdS)Nzr?cCsdSr$r*r<r*r*r+r=Psr@rAcCsdSr$r*r<r*r*r+r=WsrBrCcCsdSr$r*r<r*r*r+r=^srDrEcCsdSr$r*r<r*r*r+r=dsrFrGcCs |j|Sr$rQr<r*r*r+r=jsr-r1cCsd|jdS)Nzr?cCsdSr$r*r<r*r*r+r=sr@rAcCsdSr$r*r<r*r*r+r=srBrCcCsdSr$r*r<r*r*r+r=srDrEcCsdSr$r*r<r*r*r+r=srFrGcCs |j|Sr$rQr<r*r*r+r=sr-r1cCsd|jdS)Nz)rNr\r4r*r*r+r_szInvalidityDate.__repr__rjrkrlcCst|tstS|j|jkSr$)r%rYrnrZror*r*r+rp s zInvalidityDate.__eq__r0cCs t|jSr$)rrrZr4r*r*r+rsszInvalidityDate.__hash__cCs|jSr$)r\r4r*r*r+rZszInvalidityDate.invalidity_dater cCs t|Sr$rvr4r*r*r+r&szInvalidityDate.public_bytesN) rHrIrJrZINVALIDITY_DATEr@rCr_rprsrxrZr&r*r*r*r+rYsrYc@sjeZdZejZdddddZed\ZZ Z ddd d Z d dd d Z dddddZ ddddZdS))PrecertificateSignedCertificateTimestamps+typing.Iterable[SignedCertificateTimestamp]r=signed_certificate_timestampsr#cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$r%r rZsctr*r*r+r%szEPrecertificateSignedCertificateTimestamps.__init__..YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamprSrr[_signed_certificate_timestampsr5r`r*r*r+rCsz2PrecertificateSignedCertificateTimestamps.__init__rer-r1cCsdt|S)Nz/)rNrSr4r*r*r+r_3sz2PrecertificateSignedCertificateTimestamps.__repr__r0cCstt|jSr$rrrrer4r*r*r+rs8sz2PrecertificateSignedCertificateTimestamps.__hash__rjrkrlcCst|tstS|j|jkSr$)r%r]rnreror*r*r+rp;s  z0PrecertificateSignedCertificateTimestamps.__eq__r cCs t|Sr$rvr4r*r*r+r&Dsz6PrecertificateSignedCertificateTimestamps.public_bytesN)rHrIrJrZ%PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSr@rCr;r`rarbr_rsrpr&r*r*r*r+r]s  r]c@sjeZdZejZdddddZed\ZZ Z ddd d Z d dd d Z dddddZ ddddZdS)SignedCertificateTimestampsr^r=r_cCs,t|}tdd|Ds"td||_dS)Ncss|]}t|tVqdSr$rarbr*r*r+rRsz7SignedCertificateTimestamps.__init__..rcrdrfr*r*r+rCKsz$SignedCertificateTimestamps.__init__rer-r1cCsdt|dS)Nz.z'All responses must be ObjectIdentifiers)rSr)r[ _responses)r5rmr*r*r+rCsz OCSPAcceptableResponses.__init__rjrkrlcCst|tstS|j|jkSr$)r%rlrnroror*r*r+rps zOCSPAcceptableResponses.__eq__r0r1cCstt|jSr$)rrrror4r*r*r+rssz OCSPAcceptableResponses.__hash__r-cCsd|jdS)Nz#.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+rKrz5IssuingDistributionPoint.__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[rrrrrkr2r)_only_contains_user_certs_only_contains_ca_certs _indirect_crl_only_contains_attribute_certs_only_some_reasonsrr) r5rrrqrrrsrtruZcrl_constraintsr*r*r+rCst  z!IssuingDistributionPoint.__init__r-r1cCs d|S)NaGrr4r*r*r+r_sz!IssuingDistributionPoint.__repr__rjrlcCsbt|tstS|j|jko`|j|jko`|j|jko`|j|jko`|j|jko`|j|jko`|j |j kSr$) r%rprnrrrqrrrsrtruror*r*r+rps"       zIssuingDistributionPoint.__eq__r0cCs$t|j|j|j|j|j|j|jfSr$)rrrrrqrrrsrtrur4r*r*r+rssz!IssuingDistributionPoint.__hash__rcCs|jSr$rr4r*r*r+r+sz"IssuingDistributionPoint.full_namecCs|jSr$rr4r*r*r+r/sz&IssuingDistributionPoint.relative_namecCs|jSr$)rvr4r*r*r+rq3sz1IssuingDistributionPoint.only_contains_user_certscCs|jSr$)rwr4r*r*r+rr7sz/IssuingDistributionPoint.only_contains_ca_certscCs|jSr$)rzr4r*r*r+rs;sz*IssuingDistributionPoint.only_some_reasonscCs|jSr$)rxr4r*r*r+rtAsz%IssuingDistributionPoint.indirect_crlcCs|jSr$)ryr4r*r*r+ruEsz6IssuingDistributionPoint.only_contains_attribute_certsr cCs t|Sr$rvr4r*r*r+r&Isz%IssuingDistributionPoint.public_bytesN)rHrIrJrZISSUING_DISTRIBUTION_POINTr@rCr_rprsrxrrrqrrrsrtrur&r*r*r*r+rps(S  rpc@seZdZejZdddddddZedddd Zeddd d Z eddd d Z ddddZ dddddZ ddddZ ddddZdS)MSCertificateTemplaterr{r=) template_id major_version minor_versionr#cCsTt|tstd||_|dur*t|tr<|durDt|tsDtd||_||_dS)Noid must be an ObjectIdentifierz8major_version and minor_version must be integers or None)r%rr[ _template_idr0_major_version_minor_version)r5r|r}r~r*r*r+rCPs  zMSCertificateTemplate.__init__r1cCs|jSr$)rr4r*r*r+r|dsz!MSCertificateTemplate.template_idcCs|jSr$)rr4r*r*r+r}hsz#MSCertificateTemplate.major_versioncCs|jSr$)rr4r*r*r+r~lsz#MSCertificateTemplate.minor_versionr-cCsd|jd|jd|jdS)Nz#rr4r*r*r+r_szUnrecognizedExtension.__repr__rjrkrlcCs&t|tstS|j|jko$|j|jkSr$)r%rZrnr@r\ror*r*r+rps zUnrecognizedExtension.__eq__r0cCst|j|jfSr$)rrr@r\r4r*r*r+rsszUnrecognizedExtension.__hash__cCs|jSr$rr4r*r*r+r&sz"UnrecognizedExtension.public_bytesN) rHrIrJrCrxr@r\r_rprsr&r*r*r*r+rZsrZ)iZ __future__rabcr[r'r&rMZ cryptographyrZ"cryptography.hazmat.bindings._rustrrrwZcryptography.hazmat.primitivesrrZ,cryptography.hazmat.primitives.asymmetric.ecrZ-cryptography.hazmat.primitives.asymmetric.rsar Z/cryptography.hazmat.primitives.asymmetric.typesr r Z*cryptography.x509.certificate_transparencyr Zcryptography.x509.general_namer rrrrrrrrZcryptography.x509.namerrZcryptography.x509.oidrrrrTypeVarrr,r; Exceptionr<rLABCMetarrQrcryrrrrrrrrrEnumrrrrrrrrrZ_REASON_BIT_MAPPINGZ_CRLREASONFLAGSrrrrrrrrrrZ_TLS_FEATURE_TYPE_TO_ENUMrrrGenericr,r3rOrSrTrUrYr]rhrirlrpr{rZr*r*r*r+s       ,  'l$!!(.%%o  A=+("  w0YQQQ-+!;