
    3Tf                      d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dl	mZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*  ejV                  ddd      Z,	 	 	 	 dsdZ-dtdZ. G d de/      Z0 G d de/      Z1 G d dejd                        Z3 G d d      Z4 G d de3      Z5 G d de3      Z6 G d  d!e3      Z7 G d" d#e3      Z8 G d$ d%e3      Z9 G d& d'      Z: G d( d)e3      Z; G d* d+e3      Z< G d, d-e3      Z= G d. d/e3      Z> G d0 d1      Z? G d2 d3ej                        ZAeAj                  eAj                  eAj                  eAj                  eAj                  eAj                  eAj                  eAj                  d4ZJeAj                  d5eAj                  d6eAj                  d7eAj                  d8eAj                  d9eAj                  d:eAj                  d;eAj                  d<iZK G d= d>e3      ZL G d? d@e3      ZM G dA dB      ZN G dC dD      ZO G dE dF      ZP G dG dHe3      ZQ G dI dJe3      ZR G dK dLe3      ZS G dM dNe3      ZT G dO dPej                        ZUeUD  ci c]  } | j                  |  c} ZW G dQ dRe3      ZX G dS dTe3      ZY G dU dVe3      ZZ G dW dXej                  e,         Z\ G dY dZ      Z] G d[ d\e3      Z^ G d] d^e3      Z_ G d_ d`e3      Z` G da dbe3      Za G dc dde3      Zb G de dfe3      Zc G dg dhe3      Zd G di dje3      Ze G dk dle3      Zf G dm dne3      Zg G do dpe3      Zh G dq dre3      Ziyc c} w )u    )annotationsN)utils)asn1)x509)constant_timeserialization)EllipticCurvePublicKey)RSAPublicKey)CertificateIssuerPublicKeyTypesCertificatePublicKeyTypes)SignedCertificateTimestamp)	DirectoryNameDNSNameGeneralName	IPAddress	OtherNameRegisteredID
RFC822NameUniformResourceIdentifier_IPAddressTypes)NameRelativeDistinguishedName)CRLEntryExtensionOIDExtensionOIDObjectIdentifierOCSPExtensionOIDExtensionTypeVarExtensionTypeT)bound	covariantc                B   t        | t              rC| j                  t        j                  j
                  t        j                  j                        }nt        | t              rC| j                  t        j                  j                  t        j                  j                        }nW| j                  t        j                  j
                  t        j                  j                        }t        j                  |      }t        j                  |      j!                         S N)
isinstancer
   public_bytesr   EncodingDERPublicFormatPKCS1r	   X962UncompressedPointSubjectPublicKeyInfor   parse_spki_for_datahashlibsha1digest)
public_keydata
serializeds      >/usr/lib/python3/dist-packages/cryptography/x509/extensions.py_key_identifier_from_public_keyr4   2   s     *l+&&""&&&&,,
 
J 6	7&&""''&&88
  ,,""&&&&;;

 ''
3<<$$&&    c                .     d fd} fd} fd}|||fS )Nc                .    t        t        |             S r"   )lengetattrself
field_names    r3   
len_methodz*_make_sequence_methods.<locals>.len_methodK   s    74,--r5   c                .    t        t        |             S r"   )iterr9   r:   s    r3   iter_methodz+_make_sequence_methods.<locals>.iter_methodN   s    GD*-..r5   c                "    t        |       |   S r"   )r9   )r;   idxr<   s     r3   getitem_methodz._make_sequence_methods.<locals>.getitem_methodQ   s    tZ(--r5   returnint )r<   r=   r@   rC   s   `   r3   _make_sequence_methodsrH   J   s!    ./. {N22r5   c                        e Zd Zd fdZ xZS )DuplicateExtensionc                2    t         |   |       || _        y r"   super__init__oidr;   msgrO   	__class__s      r3   rN   zDuplicateExtension.__init__X       r5   rQ   strrO   r   rE   None__name__
__module____qualname__rN   __classcell__rR   s   @r3   rJ   rJ   W        r5   rJ   c                        e Zd Zd fdZ xZS )ExtensionNotFoundc                2    t         |   |       || _        y r"   rL   rP   s      r3   rN   zExtensionNotFound.__init__^   rS   r5   rT   rW   r\   s   @r3   r_   r_   ]   r]   r5   r_   c                       e Zd ZU ded<   ddZy)r   z!typing.ClassVar[ObjectIdentifier]rO   c                6    t        dj                  |             )z7
        Serializes the extension type to DER.
        z7public_bytes is not implemented for extension type {!r})NotImplementedErrorformatr;   s    r3   r$   zExtensionType.public_bytesf   s"     "ELL
 	
r5   NrE   bytes)rX   rY   rZ   __annotations__r$   rG   r5   r3   r   r   c   s    	**
r5   )	metaclassc                  \    e Zd Z	 	 	 	 ddZ	 	 	 	 ddZ	 	 	 	 d	dZ ed      \  ZZZ	d
dZ
y)
Extensionsc                $    t        |      | _        y r"   )list_extensions)r;   
extensionss     r3   rN   zExtensions.__init__r   s      
+r5   c                V    | D ]  }|j                   |k(  s|c S  t        d| d|      )NNo  extension was found)rO   r_   )r;   rO   exts      r3   get_extension_for_oidz Extensions.get_extension_for_oidw   s<      	Cww#~
	  #cU*> ?EEr5   c                    |t         u rt        d      | D ]  }t        |j                  |      s|c S  t	        d| d|j
                        )Nz|UnrecognizedExtension can't be used with get_extension_for_class because more than one instance of the class may be present.rq   rr   )UnrecognizedExtension	TypeErrorr#   valuer_   rO   )r;   extclassrs   s      r3   get_extension_for_classz"Extensions.get_extension_for_class   se     ,,)   	C#))X.
	  (/0(,,
 	
r5   rn   c                "    d| j                    dS )Nz<Extensions()>)rn   re   s    r3   __repr__zExtensions.__repr__   s    d../r22r5   N)ro   z)typing.Iterable[Extension[ExtensionType]]rE   rV   )rO   r   rE   zExtension[ExtensionType])ry   ztyping.Type[ExtensionTypeVar]rE   zExtension[ExtensionTypeVar]rE   rU   )rX   rY   rZ   rN   rt   rz   rH   __len____iter____getitem__r}   rG   r5   r3   rk   rk   q   s\    ,C,	,
F#F	!F
5
	$
$ &<M%J"GX{3r5   rk   c                  ^    e Zd Zej                  ZddZd	dZd
dZddZ	e
d
d       ZddZy)	CRLNumberc                H    t        |t              st        d      || _        y Nzcrl_number must be an integerr#   rF   rw   _crl_numberr;   
crl_numbers     r3   rN   zCRLNumber.__init__        *c*;<<%r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r   NotImplementedr   r;   others     r3   __eq__zCRLNumber.__eq__   s'    %+!!%"2"222r5   c                ,    t        | j                        S r"   hashr   re   s    r3   __hash__zCRLNumber.__hash__       DOO$$r5   c                "    d| j                    dS )Nz<CRLNumber(r|   r   re   s    r3   r}   zCRLNumber.__repr__   s    T__-R00r5   c                    | j                   S r"   r   re   s    r3   r   zCRLNumber.crl_number       r5   c                ,    t        j                  |       S r"   	rust_x509encode_extension_valuere   s    r3   r$   zCRLNumber.public_bytes       //55r5   Nr   rF   rE   rV   r   objectrE   boolrD   r~   rf   )rX   rY   rZ   r   
CRL_NUMBERrO   rN   r   r   r}   propertyr   r$   rG   r5   r3   r   r      s:    

!
!C&3%1    6r5   r   c                      e Zd Zej                  Z	 	 	 	 	 	 	 	 ddZe	 	 	 	 dd       Ze	 	 	 	 dd       Z	ddZ
ddZddZedd       Ze	 	 dd       Zedd	       Zdd
Zy)AuthorityKeyIdentifierc                    |d u |d u k7  rt        d      |(t        |      }t        d |D              st        d      |t	        |t
              st        d      || _        || _        || _        y )NzXauthority_cert_issuer and authority_cert_serial_number must both be present or both Nonec              3  <   K   | ]  }t        |t                y wr"   r#   r   .0xs     r3   	<genexpr>z2AuthorityKeyIdentifier.__init__.<locals>.<genexpr>   s      /0
1k*   z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer)	
ValueErrorrm   allrw   r#   rF   _key_identifier_authority_cert_issuer_authority_cert_serial_number)r;   key_identifierauthority_cert_issuerauthority_cert_serial_numbers       r3   rN   zAuthorityKeyIdentifier.__init__   s     "T)(D0
 4 
 !,$()>$?! 4I    
 (3J(#=
 MNN-&;#-I*r5   c                .    t        |      } | |d d       S N)r   r   r   r4   )clsr0   r/   s      r3   from_issuer_public_keyz-AuthorityKeyIdentifier.from_issuer_public_key   s$     1<!"&)-
 	
r5   c                ,     | |j                   d d       S r   r/   )r   skis     r3   "from_issuer_subject_key_identifierz9AuthorityKeyIdentifier.from_issuer_subject_key_identifier   s     ::"&)-
 	
r5   c                $    dj                  |       S )Nz<AuthorityKeyIdentifier(key_identifier={0.key_identifier!r}, authority_cert_issuer={0.authority_cert_issuer}, authority_cert_serial_number={0.authority_cert_serial_number})>rd   re   s    r3   r}   zAuthorityKeyIdentifier.__repr__   s     		
r5   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r"   )r#   r   r   r   r   r   r   s     r3   r   zAuthorityKeyIdentifier.__eq__   sc    %!78!! 5#7#77 2**e.I.II211112	
r5   c                    | j                   d }nt        | j                         }t        | j                  || j                  f      S r"   )r   tupler   r   r   )r;   acis     r3   r   zAuthorityKeyIdentifier.__hash__  sF    %%-C223C  #t'H'HI
 	
r5   c                    | j                   S r"   )r   re   s    r3   r   z%AuthorityKeyIdentifier.key_identifier      ###r5   c                    | j                   S r"   )r   re   s    r3   r   z,AuthorityKeyIdentifier.authority_cert_issuer  s     ***r5   c                    | j                   S r"   )r   re   s    r3   r   z3AuthorityKeyIdentifier.authority_cert_serial_number  s    111r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z#AuthorityKeyIdentifier.public_bytes  r   r5   N)r   typing.Optional[bytes]r   -typing.Optional[typing.Iterable[GeneralName]]r   typing.Optional[int]rE   rV   )r0   r   rE   r   )r   SubjectKeyIdentifierrE   r   r~   r   rD   )rE   r   rE   z)typing.Optional[typing.List[GeneralName]]rE   r   rf   )rX   rY   rZ   r   AUTHORITY_KEY_IDENTIFIERrO   rN   classmethodr   r   r}   r   r   r   r   r   r   r$   rG   r5   r3   r   r      s    

/
/CJ.J  MJ ';	J
 
JL 
8
	
 
 
&
	
 

	

 $ $ +	2+ +
 2 26r5   r   c                      e Zd Zej                  Zd
dZe	 	 	 	 dd       Ze	dd       Z
e	dd       ZddZddZddZddZy	)r   c                    || _         y r"   _digest)r;   r/   s     r3   rN   zSubjectKeyIdentifier.__init__$  s	    r5   c                $     | t        |            S r"   r   )r   r0   s     r3   from_public_keyz$SubjectKeyIdentifier.from_public_key'  s     2:>??r5   c                    | j                   S r"   r   re   s    r3   r/   zSubjectKeyIdentifier.digest-      ||r5   c                    | j                   S r"   r   re   s    r3   r   z#SubjectKeyIdentifier.key_identifier1  r   r5   c                "    d| j                   dS )Nz<SubjectKeyIdentifier(digest=r|   r   re   s    r3   r}   zSubjectKeyIdentifier.__repr__5  s    .t{{oR@@r5   c                    t        |t              st        S t        j                  | j
                  |j
                        S r"   )r#   r   r   r   bytes_eqr/   r   s     r3   r   zSubjectKeyIdentifier.__eq__8  s.    %!56!!%%dkk5<<@@r5   c                ,    t        | j                        S r"   )r   r/   re   s    r3   r   zSubjectKeyIdentifier.__hash__>      DKK  r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z!SubjectKeyIdentifier.public_bytesA  r   r5   N)r/   rg   rE   rV   )r0   r   rE   r   rf   r~   r   rD   )rX   rY   rZ   r   SUBJECT_KEY_IDENTIFIERrO   rN   r   r   r   r/   r   r}   r   r   r$   rG   r5   r3   r   r   !  sx    

-
-C @2@	@ @
    AA!6r5   r   c                  l    e Zd Zej                  Z	 	 	 	 ddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)AuthorityInformationAccessc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r#   AccessDescriptionr   s     r3   r   z6AuthorityInformationAccess.__init__.<locals>.<genexpr>L       J:a!23Jr   @Every item in the descriptions list must be an AccessDescriptionrm   r   rw   _descriptionsr;   descriptionss     r3   rN   z#AuthorityInformationAccess.__init__H  8     L)J\JJ$ 
 *r5   r   c                "    d| j                    dS )Nz<AuthorityInformationAccess(r|   r   re   s    r3   r}   z#AuthorityInformationAccess.__repr__V  s    -d.@.@-ADDr5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r   r   r   r   s     r3   r   z!AuthorityInformationAccess.__eq__Y  s*    %!;<!!!!U%8%888r5   c                >    t        t        | j                              S r"   r   r   r   re   s    r3   r   z#AuthorityInformationAccess.__hash___      E$,,-..r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z'AuthorityInformationAccess.public_bytesb  r   r5   Nr   z"typing.Iterable[AccessDescription]rE   rV   r~   r   rD   rf   )rX   rY   rZ   r   AUTHORITY_INFORMATION_ACCESSrO   rN   rH   r   r   r   r}   r   r   r$   rG   r5   r3   r   r   E  sJ    

3
3C
*>
*	
* &<O%L"GX{E9/6r5   r   c                  l    e Zd Zej                  Z	 	 	 	 ddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)SubjectInformationAccessc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r   r   s     r3   r   z4SubjectInformationAccess.__init__.<locals>.<genexpr>m  r   r   r   r   r   s     r3   rN   z!SubjectInformationAccess.__init__i  r   r5   r   c                "    d| j                    dS )Nz<SubjectInformationAccess(r|   r   re   s    r3   r}   z!SubjectInformationAccess.__repr__w  s    +D,>,>+?rBBr5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r   r   r   r   s     r3   r   zSubjectInformationAccess.__eq__z  s*    %!9:!!!!U%8%888r5   c                >    t        t        | j                              S r"   r   re   s    r3   r   z!SubjectInformationAccess.__hash__  r   r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z%SubjectInformationAccess.public_bytes  r   r5   Nr   r~   r   rD   rf   )rX   rY   rZ   r   SUBJECT_INFORMATION_ACCESSrO   rN   rH   r   r   r   r}   r   r   r$   rG   r5   r3   r   r   f  sJ    

1
1C
*>
*	
* &<O%L"GX{C9/6r5   r   c                  \    e Zd Z	 	 	 	 	 	 ddZd	dZd
dZddZedd       Zedd       Z	y)r   c                    t        |t              st        d      t        |t              st        d      || _        || _        y )Nz)access_method must be an ObjectIdentifierz%access_location must be a GeneralName)r#   r   rw   r   _access_method_access_location)r;   access_methodaccess_locations      r3   rN   zAccessDescription.__init__  sA     -)9:GHH/;7CDD+ /r5   c                $    dj                  |       S )NzY<AccessDescription(access_method={0.access_method}, access_location={0.access_location})>r   re   s    r3   r}   zAccessDescription.__repr__  s    ''-vd|	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r   r   r  r  r   s     r3   r   zAccessDescription.__eq__  sG    %!23!! %"5"55 >$$(=(==	
r5   c                D    t        | j                  | j                  f      S r"   )r   r  r  re   s    r3   r   zAccessDescription.__hash__  s    T'')=)=>??r5   c                    | j                   S r"   )r  re   s    r3   r  zAccessDescription.access_method      """r5   c                    | j                   S r"   )r  re   s    r3   r  z!AccessDescription.access_location      $$$r5   N)r  r   r  r   rE   rV   r~   r   rD   rE   r   )rE   r   )
rX   rY   rZ   rN   r}   r   r   r   r  r  rG   r5   r3   r   r     sW    
0-
0@K
0	
0

@ # # % %r5   r   c                  p    e Zd Zej                  Zd	dZed
d       Zedd       Z	ddZ
ddZddZddZy)BasicConstraintsc                    t        |t              st        d      ||st        d      | t        |t              r|dk  rt        d      || _        || _        y )Nzca must be a boolean valuez)path_length must be None when ca is Falser   z2path_length must be a non-negative integer or None)r#   r   rw   r   rF   _ca_path_length)r;   capath_lengths      r3   rN   zBasicConstraints.__init__  sc    "d#899"2HII";,aD  'r5   c                    | j                   S r"   )r  re   s    r3   r  zBasicConstraints.ca  s    xxr5   c                    | j                   S r"   )r  re   s    r3   r  zBasicConstraints.path_length         r5   c                $    dj                  |       S )Nz:<BasicConstraints(ca={0.ca}, path_length={0.path_length})>r   re   s    r3   r}   zBasicConstraints.__repr__  s    K
&,	r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r  r   r  r  r   s     r3   r   zBasicConstraints.__eq__  s<    %!12!!ww%(("Lt'7'75;L;L'LLr5   c                D    t        | j                  | j                  f      S r"   )r   r  r  re   s    r3   r   zBasicConstraints.__hash__  s    TWWd../00r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zBasicConstraints.public_bytes  r   r5   N)r  r   r  r   rE   rV   rE   r   r   r~   r   rD   rf   )rX   rY   rZ   r   BASIC_CONSTRAINTSrO   rN   r   r  r  r}   r   r   r$   rG   r5   r3   r  r    sO    

(
(C("   ! !
M16r5   r  c                  ^    e Zd Zej                  ZddZed	d       Zd
dZ	d	dZ
ddZddZy)DeltaCRLIndicatorc                H    t        |t              st        d      || _        y r   r   r   s     r3   rN   zDeltaCRLIndicator.__init__  r   r5   c                    | j                   S r"   r   re   s    r3   r   zDeltaCRLIndicator.crl_number  r   r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r!  r   r   r   s     r3   r   zDeltaCRLIndicator.__eq__  s(    %!23!!%"2"222r5   c                ,    t        | j                        S r"   r   re   s    r3   r   zDeltaCRLIndicator.__hash__  r   r5   c                "    d| j                    dS )Nz<DeltaCRLIndicator(crl_number=r|   r   re   s    r3   r}   zDeltaCRLIndicator.__repr__  s    //@CCr5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zDeltaCRLIndicator.public_bytes  r   r5   Nr   rD   r   r~   rf   )rX   rY   rZ   r   DELTA_CRL_INDICATORrO   rN   r   r   r   r   r}   r$   rG   r5   r3   r!  r!    s;    

*
*C&    3%D6r5   r!  c                  l    e Zd Zej                  Z	 	 	 	 ddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)CRLDistributionPointsc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r#   DistributionPointr   s     r3   r   z1CRLDistributionPoints.__init__.<locals>.<genexpr>        
12Jq+,
r   ?distribution_points must be a list of DistributionPoint objectsrm   r   rw   _distribution_pointsr;   distribution_pointss     r3   rN   zCRLDistributionPoints.__init__  C     ##67 
6I
 
  
 %8!r5   r2  c                "    d| j                    dS )Nz<CRLDistributionPoints(r|   r2  re   s    r3   r}   zCRLDistributionPoints.__repr__  s    ()B)B(C2FFr5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r*  r   r2  r   s     r3   r   zCRLDistributionPoints.__eq__  s*    %!67!!((E,F,FFFr5   c                >    t        t        | j                              S r"   r   r   r2  re   s    r3   r   zCRLDistributionPoints.__hash__      E$33455r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z"CRLDistributionPoints.public_bytes  r   r5   Nr4  z"typing.Iterable[DistributionPoint]rE   rV   r~   r   rD   rf   )rX   rY   rZ   r   CRL_DISTRIBUTION_POINTSrO   rN   rH   r   r   r   r}   r   r   r$   rG   r5   r3   r*  r*    sN    

.
.C8#E8	8 &<&"GX{GG66r5   r*  c                  l    e Zd Zej                  Z	 	 	 	 ddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)FreshestCRLc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r-  r   s     r3   r   z'FreshestCRL.__init__.<locals>.<genexpr>&  r/  r   r0  r1  r3  s     r3   rN   zFreshestCRL.__init__"  r5  r5   r2  c                "    d| j                    dS )Nz<FreshestCRL(r|   r7  re   s    r3   r}   zFreshestCRL.__repr__4  s    t889<<r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r@  r   r2  r   s     r3   r   zFreshestCRL.__eq__7  s)    %-!!((E,F,FFFr5   c                >    t        t        | j                              S r"   r:  re   s    r3   r   zFreshestCRL.__hash__=  r;  r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zFreshestCRL.public_bytes@  r   r5   Nr=  r~   r   rD   rf   )rX   rY   rZ   r   FRESHEST_CRLrO   rN   rH   r   r   r   r}   r   r   r$   rG   r5   r3   r@  r@    sM    

#
#C8#E8	8 &<&"GX{=G66r5   r@  c                      e Zd Z	 	 	 	 	 	 	 	 	 	 d
dZddZddZddZedd       Zedd       Z	edd       Z
edd       Zy	)r.  c                   |r|rt        d      |s|s|st        d      |(t        |      }t        d |D              st        d      |rt	        |t
              st        d      |(t        |      }t        d |D              st        d      |r-t	        |t              rt        d |D              st        d	      |r/t        j                  |v st        j                  |v rt        d
      || _
        || _        || _        || _        y )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.c              3  <   K   | ]  }t        |t                y wr"   r   r   s     r3   r   z-DistributionPoint.__init__.<locals>.<genexpr>Y  s     Eaz![1Er   z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamec              3  <   K   | ]  }t        |t                y wr"   r   r   s     r3   r   z-DistributionPoint.__init__.<locals>.<genexpr>f  s     Faz![1Fr   z2crl_issuer must be None or a list of general namesc              3  <   K   | ]  }t        |t                y wr"   r#   ReasonFlagsr   s     r3   r   z-DistributionPoint.__init__.<locals>.<genexpr>m  s     Caz![1Cr   z0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)r   rm   r   rw   r#   r   	frozensetrN  unspecifiedremove_from_crl
_full_name_relative_name_reasons_crl_issuer)r;   	full_namerelative_namereasons
crl_issuers        r3   rN   zDistributionPoint.__init__E  s/    *  z 
  YIE9EEE  m-FGG  !j)JF:FFH  7I.C7CCNOO##w.**g5$ 
 $+%r5   c                $    dj                  |       S )Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>r   re   s    r3   r}   zDistributionPoint.__repr__  s    **0&,	
r5   c                   t        |t              st        S | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j
                  |j
                  k(  xr | j                  |j                  k(  S r"   )r#   r.  r   rV  rW  rX  rY  r   s     r3   r   zDistributionPoint.__eq__  sq    %!23!! NNeoo- 4""e&9&994-4 5#3#33		
r5   c                    | j                   t        | j                         }nd }| j                  t        | j                        }nd }t        || j                  | j
                  |f      S r"   )rV  r   rY  r   rW  rX  )r;   fnrY  s      r3   r   zDistributionPoint.__hash__  sg    >>%BGCB B??& doo&  JR++T\\:FGGr5   c                    | j                   S r"   rR  re   s    r3   rV  zDistributionPoint.full_name      r5   c                    | j                   S r"   rS  re   s    r3   rW  zDistributionPoint.relative_name  r  r5   c                    | j                   S r"   )rT  re   s    r3   rX  zDistributionPoint.reasons  s    }}r5   c                    | j                   S r"   )rU  re   s    r3   rY  zDistributionPoint.crl_issuer  r   r5   N)
rV  r   rW  *typing.Optional[RelativeDistinguishedName]rX  .typing.Optional[typing.FrozenSet[ReasonFlags]]rY  r   rE   rV   r~   r   rD   r   rE   re  rE   rf  )rX   rY   rZ   rN   r}   r   r   r   rV  rW  rX  rY  rG   r5   r3   r.  r.  D  s    8&@8& B8& @	8&
 B8& 
8&t
	
H"   # #      r5   r.  c                  4    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)rN  rP  keyCompromisecACompromiseaffiliationChanged
supersededcessationOfOperationcertificateHoldprivilegeWithdrawnaACompromiseremoveFromCRLN)rX   rY   rZ   rP  key_compromiseca_compromiseaffiliation_changedrm  cessation_of_operationcertificate_holdprivilege_withdrawnaa_compromiserQ  rG   r5   r3   rN  rN    s8    K$N"M.J3(."M%Or5   rN  )                        rz  r{  r|  r}  r~  r  r  r  c                  |    e Zd Zej                  Z	 	 	 	 	 	 d	dZd
dZddZddZ	e
dd       Ze
dd       ZddZy)PolicyConstraintsc                    |t        |t              st        d      |t        |t              st        d      ||t        d      || _        || _        y )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#   rF   rw   r   _require_explicit_policy_inhibit_policy_mapping)r;   require_explicit_policyinhibit_policy_mappings      r3   rN   zPolicyConstraints.__init__  s    
 #.z#S8
  
 "-j"C7
 O  ").E.M: 
 )@%'=$r5   c                $    dj                  |       S )Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>r   re   s    r3   r}   zPolicyConstraints.__repr__  s    	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r  r   r  r  r   s     r3   r   zPolicyConstraints.__eq__
  sH    %!23!! ((E,I,II L++u/K/KK	
r5   c                D    t        | j                  | j                  f      S r"   )r   r  r  re   s    r3   r   zPolicyConstraints.__hash__  s#    ))4+F+FG
 	
r5   c                    | j                   S r"   )r  re   s    r3   r  z)PolicyConstraints.require_explicit_policy  s    ,,,r5   c                    | j                   S r"   )r  re   s    r3   r  z(PolicyConstraints.inhibit_policy_mapping      +++r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zPolicyConstraints.public_bytes   r   r5   N)r  r   r  r   rE   rV   r~   r   rD   r   rf   )rX   rY   rZ   r   POLICY_CONSTRAINTSrO   rN   r}   r   r   r   r  r  r$   rG   r5   r3   r  r    sj    

)
)C>!5> !5> 
	>:



 - - , ,6r5   r  c                  d    e Zd Zej                  ZddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)CertificatePoliciesc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   )r#   PolicyInformationr   s     r3   r   z/CertificatePolicies.__init__.<locals>.<genexpr>)  s     F:a!23Fr   z;Every item in the policies list must be a PolicyInformation)rm   r   rw   	_policies)r;   policiess     r3   rN   zCertificatePolicies.__init__'  s4    >FXFF$ 
 "r5   r  c                "    d| j                    dS )Nz<CertificatePolicies(r|   )r  re   s    r3   r}   zCertificatePolicies.__repr__3      &t~~&6b99r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zCertificatePolicies.__eq__6  s&    %!45!!~~00r5   c                >    t        t        | j                              S r"   )r   r   r  re   s    r3   r   zCertificatePolicies.__hash__<      E$..)**r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z CertificatePolicies.public_bytes?  r   r5   N)r  z"typing.Iterable[PolicyInformation]rE   rV   r~   r   rD   rf   )rX   rY   rZ   r   CERTIFICATE_POLICIESrO   rN   rH   r   r   r   r}   r   r   r$   rG   r5   r3   r  r  $  s9    

+
+C" &<K%H"GX{:1+6r5   r  c                  `    e Zd Z	 	 	 	 	 	 ddZd	dZd
dZddZedd       Ze	 	 dd       Z	y)r  c                    t        |t              st        d      || _        |(t	        |      }t        d |D              st        d      || _        y )Nz-policy_identifier must be an ObjectIdentifierc              3  H   K   | ]  }t        |t        t        f        y wr"   )r#   rU   
UserNoticer   s     r3   r   z-PolicyInformation.__init__.<locals>.<genexpr>R  s!      56
1sJ/0s    "zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r#   r   rw   _policy_identifierrm   r   _policy_qualifiers)r;   policy_identifierpolicy_qualifierss      r3   rN   zPolicyInformation.__init__D  si     +-=>KLL"3( $%6 7 :K   1 
 #4r5   c                $    dj                  |       S )Nze<PolicyInformation(policy_identifier={0.policy_identifier}, policy_qualifiers={0.policy_qualifiers})>r   re   s    r3   r}   zPolicyInformation.__repr__\  s    3396$<	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r  r   r  r  r   s     r3   r   zPolicyInformation.__eq__b  sH    %!23!! ""e&=&== B&&%*A*AA	
r5   c                x    | j                   t        | j                         }nd }t        | j                  |f      S r"   )r  r   r   r  )r;   pqs     r3   r   zPolicyInformation.__hash__k  s@    !!- d,,-  BT++R011r5   c                    | j                   S r"   )r  re   s    r3   r  z#PolicyInformation.policy_identifieru      &&&r5   c                    | j                   S r"   )r  re   s    r3   r  z#PolicyInformation.policy_qualifiersy       &&&r5   N)r  r   r  z?typing.Optional[typing.Iterable[typing.Union[str, UserNotice]]]rE   rV   r~   r   rD   r  )rE   z;typing.Optional[typing.List[typing.Union[str, UserNotice]]])
rX   rY   rZ   rN   r}   r   r   r   r  r  rG   r5   r3   r  r  C  sb    4+4
4 
40

2 ' ' '	D' 'r5   r  c                  \    e Zd Z	 	 	 	 	 	 ddZd	dZd
dZddZedd       Zedd       Z	y)r  c                Z    |rt        |t              st        d      || _        || _        y )Nz2notice_reference must be None or a NoticeReference)r#   NoticeReferencerw   _notice_reference_explicit_text)r;   notice_referenceexplicit_texts      r3   rN   zUserNotice.__init__  s7    
 Jo%
 D  "2+r5   c                $    dj                  |       S )NzV<UserNotice(notice_reference={0.notice_reference}, explicit_text={0.explicit_text!r})>r   re   s    r3   r}   zUserNotice.__repr__  s    $$*F4L	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r  r   r  r  r   s     r3   r   zUserNotice.__eq__  sF    %,!! !!U%;%;; :""e&9&99	
r5   c                D    t        | j                  | j                  f      S r"   )r   r  r  re   s    r3   r   zUserNotice.__hash__  s    T**D,>,>?@@r5   c                    | j                   S r"   )r  re   s    r3   r  zUserNotice.notice_reference      %%%r5   c                    | j                   S r"   )r  re   s    r3   r  zUserNotice.explicit_text  r  r5   N)r   typing.Optional[NoticeReference]r  typing.Optional[str]rE   rV   r~   r   rD   )rE   r  rE   r  )
rX   rY   rZ   rN   r}   r   r   r   r  r  rG   r5   r3   r  r    s[    ,:, ,, 
	,

A & & # #r5   r  c                  \    e Zd Z	 	 	 	 	 	 ddZd	dZd
dZddZedd       Zedd       Z	y)r  c                p    || _         t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   )r#   rF   r   s     r3   r   z+NoticeReference.__init__.<locals>.<genexpr>  s     >!:a%>r   z)notice_numbers must be a list of integers)_organizationrm   r   rw   _notice_numbers)r;   organizationnotice_numberss      r3   rN   zNoticeReference.__init__  s8    
 *n->~>>GHH-r5   c                $    dj                  |       S )NzU<NoticeReference(organization={0.organization!r}, notice_numbers={0.notice_numbers})>r   re   s    r3   r}   zNoticeReference.__repr__  s    ##)6$<	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r  r   r  r  r   s     r3   r   zNoticeReference.__eq__  sF    %1!! !3!33 <##u';';;	
r5   c                V    t        | j                  t        | j                        f      S r"   )r   r  r   r  re   s    r3   r   zNoticeReference.__hash__  s#    T&&d.A.A(BCDDr5   c                    | j                   S r"   )r  re   s    r3   r  zNoticeReference.organization      !!!r5   c                    | j                   S r"   )r  re   s    r3   r  zNoticeReference.notice_numbers  r   r5   N)r  r  r  ztyping.Iterable[int]rE   rV   r~   r   rD   r  )rE   ztyping.List[int])
rX   rY   rZ   rN   r}   r   r   r   r  r  rG   r5   r3   r  r    s[    
.*
. -
. 
	
.

E " " $ $r5   r  c                  d    e Zd Zej                  ZddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)ExtendedKeyUsagec                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r#   r   r   s     r3   r   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>  s     Cq:a!12Cr   z9Every item in the usages list must be an ObjectIdentifier)rm   r   rw   _usages)r;   usagess     r3   rN   zExtendedKeyUsage.__init__  s2    fCFCCK  r5   r  c                "    d| j                    dS )Nz<ExtendedKeyUsage(r|   )r  re   s    r3   r}   zExtendedKeyUsage.__repr__      #DLL>44r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zExtendedKeyUsage.__eq__  s&    %!12!!||u}},,r5   c                >    t        t        | j                              S r"   )r   r   r  re   s    r3   r   zExtendedKeyUsage.__hash__  s    E$,,'((r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zExtendedKeyUsage.public_bytes  r   r5   N)r  !typing.Iterable[ObjectIdentifier]rE   rV   r~   r   rD   rf   )rX   rY   rZ   r   EXTENDED_KEY_USAGErO   rN   rH   r   r   r   r}   r   r   r$   rG   r5   r3   r  r    s9    

)
)C &<I%F"GX{5-)6r5   r  c                  D    e Zd Zej                  ZddZddZddZd	dZ	y)
OCSPNoCheckc                0    t        |t              st        S yNT)r#   r  r   r   s     r3   r   zOCSPNoCheck.__eq__  s    %-!!r5   c                     t        t              S r"   )r   r  re   s    r3   r   zOCSPNoCheck.__hash__  s    K  r5   c                     y)Nz<OCSPNoCheck()>rG   re   s    r3   r}   zOCSPNoCheck.__repr__  s     r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zOCSPNoCheck.public_bytes   r   r5   Nr   rD   r~   rf   )
rX   rY   rZ   r   OCSP_NO_CHECKrO   r   r   r}   r$   rG   r5   r3   r  r    s!    

$
$C!!6r5   r  c                  D    e Zd Zej                  ZddZddZddZd	dZ	y)
PrecertPoisonc                0    t        |t              st        S yr  )r#   r  r   r   s     r3   r   zPrecertPoison.__eq__  s    %/!!r5   c                     t        t              S r"   )r   r  re   s    r3   r   zPrecertPoison.__hash__  s    M""r5   c                     y)Nz<PrecertPoison()>rG   re   s    r3   r}   zPrecertPoison.__repr__  s    "r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zPrecertPoison.public_bytes  r   r5   Nr   rD   r~   rf   )
rX   rY   rZ   r   PRECERT_POISONrO   r   r   r}   r$   rG   r5   r3   r  r    s!    

%
%C##6r5   r  c                  d    e Zd Zej                  ZddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)
TLSFeaturec                ~    t        |      }t        d |D              rt        |      dk(  rt        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   )r#   TLSFeatureTyper   s     r3   r   z&TLSFeature.__init__.<locals>.<genexpr>  s     DaJq.1Dr   r   z@features must be a list of elements from the TLSFeatureType enum)rm   r   r8   rw   	_features)r;   featuress     r3   rN   zTLSFeature.__init__  s@    >D8DD8}! 
 "r5   r  c                "    d| j                    dS )Nz<TLSFeature(features=r|   )r  re   s    r3   r}   zTLSFeature.__repr__)  r  r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zTLSFeature.__eq__,  s%    %,!!~~00r5   c                >    t        t        | j                              S r"   )r   r   r  re   s    r3   r   zTLSFeature.__hash__2  r  r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zTLSFeature.public_bytes5  r   r5   N)r  ztyping.Iterable[TLSFeatureType]rE   rV   r~   r   rD   rf   )rX   rY   rZ   r   TLS_FEATURErO   rN   rH   r   r   r   r}   r   r   r$   rG   r5   r3   r  r    s9    

"
"C" &<K%H"GX{:1+6r5   r  c                      e Zd ZdZdZy)r  r~     N)rX   rY   rZ   status_requeststatus_request_v2rG   r5   r3   r  r  9  s     N r5   r  c                  ^    e Zd Zej                  ZddZd	dZd
dZddZ	e
dd       ZddZy)InhibitAnyPolicyc                h    t        |t              st        d      |dk  rt        d      || _        y )Nzskip_certs must be an integerr   z)skip_certs must be a non-negative integer)r#   rF   rw   r   _skip_certs)r;   
skip_certss     r3   rN   zInhibitAnyPolicy.__init__J  s3    *c*;<<>HII%r5   c                "    d| j                    dS )Nz<InhibitAnyPolicy(skip_certs=r|   )r  re   s    r3   r}   zInhibitAnyPolicy.__repr__S  s    .t.?rBBr5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zInhibitAnyPolicy.__eq__V  s(    %!12!!%"2"222r5   c                ,    t        | j                        S r"   )r   r  re   s    r3   r   zInhibitAnyPolicy.__hash__\  r   r5   c                    | j                   S r"   )r  re   s    r3   r  zInhibitAnyPolicy.skip_certs_  r   r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zInhibitAnyPolicy.public_bytesc  r   r5   N)r  rF   rE   rV   r~   r   rD   rf   )rX   rY   rZ   r   INHIBIT_ANY_POLICYrO   rN   r}   r   r   r   r  r$   rG   r5   r3   r  r  G  s;    

)
)C&C3%    6r5   r  c                     e Zd Zej                  Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZedd       Zedd       Z	edd       Z
edd       Zedd       Zedd       Zedd       Zedd	       Zedd
       ZddZddZddZddZy)KeyUsagec
                    |s|s|	rt        d      || _        || _        || _        || _        || _        || _        || _        || _        |	| _	        y )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)
r;   digital_signaturecontent_commitmentkey_enciphermentdata_enciphermentkey_agreementkey_cert_signcrl_signencipher_onlydecipher_onlys
             r3   rN   zKeyUsage.__init__j  sf     -=( 
 #4#5 !1"3++!++r5   c                    | j                   S r"   )r  re   s    r3   r  zKeyUsage.digital_signature  r  r5   c                    | j                   S r"   )r  re   s    r3   r  zKeyUsage.content_commitment  s    '''r5   c                    | j                   S r"   )r	  re   s    r3   r  zKeyUsage.key_encipherment  r  r5   c                    | j                   S r"   )r
  re   s    r3   r  zKeyUsage.data_encipherment  r  r5   c                    | j                   S r"   )r  re   s    r3   r  zKeyUsage.key_agreement  r  r5   c                    | j                   S r"   )r  re   s    r3   r  zKeyUsage.key_cert_sign  r  r5   c                    | j                   S r"   )r  re   s    r3   r  zKeyUsage.crl_sign      ~~r5   c                H    | j                   st        d      | j                  S )Nz7encipher_only is undefined unless key_agreement is true)r  r   r  re   s    r3   r  zKeyUsage.encipher_only  )    !!I  &&&r5   c                H    | j                   st        d      | j                  S )Nz7decipher_only is undefined unless key_agreement is true)r  r   r  re   s    r3   r  zKeyUsage.decipher_only  r"  r5   c                    	 | j                   }| j                  }dj                  | ||      S # t        $ r d}d}Y "w xY w)NFa-  <KeyUsage(digital_signature={0.digital_signature}, content_commitment={0.content_commitment}, key_encipherment={0.key_encipherment}, data_encipherment={0.data_encipherment}, key_agreement={0.key_agreement}, key_cert_sign={0.key_cert_sign}, crl_sign={0.crl_sign}, encipher_only={1}, decipher_only={2})>)r  r  r   rd   )r;   r  r  s      r3   r}   zKeyUsage.__repr__  sT    	" ..M ..M5 &}m
4	5  	" "M!M	"s   - ==c                   t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  xr | j
                  |j
                  k(  xr | j                  |j                  k(  xr | j                  |j                  k(  xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r  r   r  r  r  r  r  r  r  r  r  r   s     r3   r   zKeyUsage.__eq__  s    %*!! ""e&=&== <''5+C+CC<%%)?)??< &&%*A*AA< ""e&9&99	<
 ""e&9&99< /< ##u';';;< ##u';';;
	
r5   c                    t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  f	      S r"   )
r   r  r  r  r  r  r  r  r  r  re   s    r3   r   zKeyUsage.__hash__  sc    &&''%%&&""""####

 	
r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zKeyUsage.public_bytes  r   r5   N)r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   rE   rV   r  r~   r   rD   rf   )rX   rY   rZ   r   	KEY_USAGErO   rN   r   r  r  r  r  r  r  r  r  r  r}   r   r   r$   rG   r5   r3   r  r  g  s<   

 
 C,, !, 	,
  , , , , , , 
,8 ' ' ( ( & & ' ' # # # #   ' ' ' '5*
 
6r5   r  c                      e Zd Zej                  Z	 	 	 	 	 	 ddZddZddZddZ	ddZ
ddZddZe	 	 dd       Ze	 	 dd	       Zdd
Zy)NameConstraintsc                ^   |Ft        |      }|st        d      t        d |D              st        d      | j	                  |       |Ft        |      }|st        d      t        d |D              st        d      | j	                  |       ||t        d      || _        || _        y )Nz3permitted_subtrees must be a non-empty list or Nonec              3  <   K   | ]  }t        |t                y wr"   r   r   s     r3   r   z+NameConstraints.__init__.<locals>.<genexpr>  s     Naz![1Nr   z@permitted_subtrees must be a list of GeneralName objects or Nonez2excluded_subtrees must be a non-empty list or Nonec              3  <   K   | ]  }t        |t                y wr"   r   r   s     r3   r   z+NameConstraints.__init__.<locals>.<genexpr>       Maz![1Mr   z?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)rm   r   r   rw   _validate_tree_permitted_subtrees_excluded_subtrees)r;   permitted_subtreesexcluded_subtreess      r3   rN   zNameConstraints.__init__  s    
 )!%&8!9% I  N;MNN 
  23( $%6 7$ H  M;LMM 
  12%*;*C# 
 $6 "3r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r*  r   r3  r2  r   s     r3   r   zNameConstraints.__eq__  sG    %1!! ""e&=&== D''5+C+CC	
r5   c                H    | j                  |       | j                  |       y r"   )_validate_ip_name_validate_dns_namer;   trees     r3   r/  zNameConstraints._validate_tree"  s    t$%r5   c                >    t        d |D              rt        d      y )Nc              3     K   | ]K  }t        |t              xr5 t        |j                  t        j                  t        j
                  f        M y wr"   )r#   r   rx   	ipaddressIPv4NetworkIPv6Networkr   names     r3   r   z4NameConstraints._validate_ip_name.<locals>.<genexpr>'  sR      

 	 tY' 

Y22I4I4IJ 
s   AAzGIPAddress name constraints must be an IPv4Network or IPv6Network object)anyrw   r8  s     r3   r6  z!NameConstraints._validate_ip_name&  s2     

 
 
 & 
r5   c                >    t        d |D              rt        d      y )Nc              3  \   K   | ]$  }t        |t              xr d |j                  v  & yw)*N)r#   r   rx   r?  s     r3   r   z5NameConstraints._validate_dns_name.<locals>.<genexpr>4  s-      
@DJtW%;#*;;
s   *,zDDNSName name constraints must not contain the '*' wildcard character)rA  r   r8  s     r3   r7  z"NameConstraints._validate_dns_name3  s0     
HL
 
  
r5   c                $    dj                  |       S )Nze<NameConstraints(permitted_subtrees={0.permitted_subtrees}, excluded_subtrees={0.excluded_subtrees})>r   re   s    r3   r}   zNameConstraints.__repr__<  s    88>t	
r5   c                    | j                   t        | j                         }nd }| j                  t        | j                        }nd }t        ||f      S r"   )r2  r   r3  r   )r;   psess      r3   r   zNameConstraints.__hash__B  s^    "".BG''CB B!!-BG&&CB BRH~r5   c                    | j                   S r"   )r0  re   s    r3   r2  z"NameConstraints.permitted_subtreesS  s     '''r5   c                    | j                   S r"   )r1  re   s    r3   r3  z!NameConstraints.excluded_subtreesY  r  r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zNameConstraints.public_bytes_  r   r5   N)r2  r   r3  r   rE   rV   r   )r9  typing.Iterable[GeneralName]rE   rV   r~   rD   r   rf   )rX   rY   rZ   r   NAME_CONSTRAINTSrO   rN   r   r/  r6  r7  r}   r   r   r2  r3  r$   rG   r5   r3   r*  r*    s    

'
'C(4I(4 I(4 
	(4T
&
" (	2( (
 '	2' '
6r5   r*  c                  r    e Zd Z	 	 	 	 	 	 	 	 d	dZed
d       Zedd       Zedd       ZddZddZ	ddZ
y)	Extensionc                    t        |t              st        d      t        |t              st        d      || _        || _        || _        y )Nz2oid argument must be an ObjectIdentifier instance.z critical must be a boolean value)r#   r   rw   r   _oid	_critical_value)r;   rO   criticalrx   s       r3   rN   zExtension.__init__d  sL     #/0D  (D)>??	!r5   c                    | j                   S r"   rQ  re   s    r3   rO   zExtension.oids      yyr5   c                    | j                   S r"   )rR  re   s    r3   rT  zExtension.criticalw  r   r5   c                    | j                   S r"   rS  re   s    r3   rx   zExtension.value{      {{r5   c                $    dj                  |       S )Nz@<Extension(oid={0.oid}, critical={0.critical}, value={0.value})>r   re   s    r3   r}   zExtension.__repr__  s     
&,	r5   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r"   )r#   rO  r   rO   rT  rx   r   s     r3   r   zExtension.__eq__  sS    %+!! HH		! */*

ekk)	
r5   c                Z    t        | j                  | j                  | j                  f      S r"   )r   rO   rT  rx   re   s    r3   r   zExtension.__hash__  s     TXXt}}djj9::r5   N)rO   r   rT  r   rx   r   rE   rV   r  r  )rE   r   r~   r   rD   )rX   rY   rZ   rN   r   rO   rT  rx   r}   r   r   rG   r5   r3   rO  rO  c  sr    #/3<L	      
;r5   rO  c                  :   e Zd ZddZ ed      \  ZZZej                  	 	 	 	 dd       Z
ej                  	 	 	 	 dd       Z
ej                  	 	 	 	 dd       Z
ej                  	 	 	 	 dd       Z
ej                  	 	 	 	 dd       Z
	 	 	 	 ddZ
dd	Zdd
ZddZy)GeneralNamesc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r   r   s     r3   r   z(GeneralNames.__init__.<locals>.<genexpr>  s     E!:a-Er   z^Every item in the general_names list must be an object conforming to the GeneralName interface)rm   r   rw   _general_namesr;   general_namess     r3   rN   zGeneralNames.__init__  s7    ]+E}EEA 
 ,r5   rc  c                     y r"   rG   r;   types     r3   get_values_for_typez GeneralNames.get_values_for_type       	r5   c                     y r"   rG   rg  s     r3   ri  z GeneralNames.get_values_for_type      
 	r5   c                     y r"   rG   rg  s     r3   ri  z GeneralNames.get_values_for_type  rl  r5   c                     y r"   rG   rg  s     r3   ri  z GeneralNames.get_values_for_type       	r5   c                     y r"   rG   rg  s     r3   ri  z GeneralNames.get_values_for_type  ro  r5   c                    fd| D        }t         k7  r|D cg c]  }|j                   c}S t        |      S c c}w )Nc              3  <   K   | ]  }t        |      s|  y wr"   )r#   )r   irh  s     r3   r   z3GeneralNames.get_values_for_type.<locals>.<genexpr>  s     7a:a#67s   )r   rx   rm   )r;   rh  objsrs  s    `  r3   ri  z GeneralNames.get_values_for_type  s;    * 8479%)*AGG**Dz +s   ;c                "    d| j                    dS )Nz<GeneralNames(r|   rc  re   s    r3   r}   zGeneralNames.__repr__  s     3 34B77r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r`  r   rc  r   s     r3   r   zGeneralNames.__eq__  s)    %.!!""e&:&:::r5   c                >    t        t        | j                              S r"   )r   r   rc  re   s    r3   r   zGeneralNames.__hash__  s    E$--.//r5   Nre  rL  rE   rV   rh  zctyping.Union[typing.Type[DNSName], typing.Type[UniformResourceIdentifier], typing.Type[RFC822Name]]rE   ztyping.List[str]rh  ztyping.Type[DirectoryName]rE   ztyping.List[Name]rh  ztyping.Type[RegisteredID]rE   ztyping.List[ObjectIdentifier]rh  ztyping.Type[IPAddress]rE   ztyping.List[_IPAddressTypes]rh  ztyping.Type[OtherName]rE   ztyping.List[OtherName]rh  ztyping.Union[typing.Type[DNSName], typing.Type[DirectoryName], typing.Type[IPAddress], typing.Type[OtherName], typing.Type[RFC822Name], typing.Type[RegisteredID], typing.Type[UniformResourceIdentifier]]rE   ztyping.Union[typing.List[_IPAddressTypes], typing.List[str], typing.List[OtherName], typing.List[Name], typing.List[ObjectIdentifier]]r~   r   rD   )rX   rY   rZ   rN   rH   r   r   r   typingoverloadri  r}   r   r   rG   r5   r3   r`  r`    s   , &<<L%M"GX{__
 
  __( 
  __' 
'  __*	% 
 __*	 


48;0r5   r`  c                  Z   e Zd Zej                  ZddZ ed      \  ZZ	Z
ej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Z	 	 	 	 ddZdd	Zdd
ZddZddZy)SubjectAlternativeNamec                $    t        |      | _        y r"   r`  rc  rd  s     r3   rN   zSubjectAlternativeName.__init__      *=9r5   rc  c                     y r"   rG   rg  s     r3   ri  z*SubjectAlternativeName.get_values_for_type  rj  r5   c                     y r"   rG   rg  s     r3   ri  z*SubjectAlternativeName.get_values_for_type  rl  r5   c                     y r"   rG   rg  s     r3   ri  z*SubjectAlternativeName.get_values_for_type  rl  r5   c                     y r"   rG   rg  s     r3   ri  z*SubjectAlternativeName.get_values_for_type  ro  r5   c                     y r"   rG   rg  s     r3   ri  z*SubjectAlternativeName.get_values_for_type  ro  r5   c                8    | j                   j                  |      S r"   rc  ri  rg  s     r3   ri  z*SubjectAlternativeName.get_values_for_type      $ ""66t<<r5   c                "    d| j                    dS )Nz<SubjectAlternativeName(r|   rv  re   s    r3   r}   zSubjectAlternativeName.__repr__-  s    )$*=*=)>bAAr5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   rc  r   s     r3   r   zSubjectAlternativeName.__eq__0  s*    %!78!!""e&:&:::r5   c                ,    t        | j                        S r"   r   rc  re   s    r3   r   zSubjectAlternativeName.__hash__6      D''((r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z#SubjectAlternativeName.public_bytes9  r   r5   Nry  rz  r{  r|  r}  r~  r  r~   r   rD   rf   )rX   rY   rZ   r   SUBJECT_ALTERNATIVE_NAMErO   rN   rH   r   r   r   r  r  ri  r}   r   r   r$   rG   r5   r3   r  r    s"   

/
/C: &<<L%M"GX{__
 
  __( 
  __' 
'  __*	% 
 __*	 
=
=
=(B;)6r5   r  c                  Z   e Zd Zej                  ZddZ ed      \  ZZ	Z
ej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Z	 	 	 	 ddZdd	Zdd
ZddZddZy)IssuerAlternativeNamec                $    t        |      | _        y r"   r  rd  s     r3   rN   zIssuerAlternativeName.__init__@  r  r5   rc  c                     y r"   rG   rg  s     r3   ri  z)IssuerAlternativeName.get_values_for_typeE  rj  r5   c                     y r"   rG   rg  s     r3   ri  z)IssuerAlternativeName.get_values_for_typeP  rl  r5   c                     y r"   rG   rg  s     r3   ri  z)IssuerAlternativeName.get_values_for_typeW  rl  r5   c                     y r"   rG   rg  s     r3   ri  z)IssuerAlternativeName.get_values_for_type^  ro  r5   c                     y r"   rG   rg  s     r3   ri  z)IssuerAlternativeName.get_values_for_typed  ro  r5   c                8    | j                   j                  |      S r"   r  rg  s     r3   ri  z)IssuerAlternativeName.get_values_for_typej  r  r5   c                "    d| j                    dS )Nz<IssuerAlternativeName(r|   rv  re   s    r3   r}   zIssuerAlternativeName.__repr__~  s    ()<)<(=R@@r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   rc  r   s     r3   r   zIssuerAlternativeName.__eq__  s*    %!67!!""e&:&:::r5   c                ,    t        | j                        S r"   r  re   s    r3   r   zIssuerAlternativeName.__hash__  r  r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z"IssuerAlternativeName.public_bytes  r   r5   Nry  rz  r{  r|  r}  r~  r  r~   r   rD   rf   )rX   rY   rZ   r   ISSUER_ALTERNATIVE_NAMErO   rN   rH   r   r   r   r  r  ri  r}   r   r   r$   rG   r5   r3   r  r  =  s"   

.
.C: &<<L%M"GX{__
 
  __( 
  __' 
'  __*	% 
 __*	 
=
=
=(A;)6r5   r  c                  Z   e Zd Zej                  ZddZ ed      \  ZZ	Z
ej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Z	 	 	 	 ddZdd	Zdd
ZddZddZy)CertificateIssuerc                $    t        |      | _        y r"   r  rd  s     r3   rN   zCertificateIssuer.__init__  r  r5   rc  c                     y r"   rG   rg  s     r3   ri  z%CertificateIssuer.get_values_for_type  rj  r5   c                     y r"   rG   rg  s     r3   ri  z%CertificateIssuer.get_values_for_type  rl  r5   c                     y r"   rG   rg  s     r3   ri  z%CertificateIssuer.get_values_for_type  rl  r5   c                     y r"   rG   rg  s     r3   ri  z%CertificateIssuer.get_values_for_type  ro  r5   c                     y r"   rG   rg  s     r3   ri  z%CertificateIssuer.get_values_for_type  ro  r5   c                8    | j                   j                  |      S r"   r  rg  s     r3   ri  z%CertificateIssuer.get_values_for_type  r  r5   c                "    d| j                    dS )Nz<CertificateIssuer(r|   rv  re   s    r3   r}   zCertificateIssuer.__repr__  s    $T%8%8$9<<r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   rc  r   s     r3   r   zCertificateIssuer.__eq__  s*    %!23!!""e&:&:::r5   c                ,    t        | j                        S r"   r  re   s    r3   r   zCertificateIssuer.__hash__  r  r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zCertificateIssuer.public_bytes  r   r5   Nry  rz  r{  r|  r}  r~  r  r~   r   rD   rf   )rX   rY   rZ   r   CERTIFICATE_ISSUERrO   rN   rH   r   r   r   r  r  ri  r}   r   r   r$   rG   r5   r3   r  r    s!   

1
1C: &<<L%M"GX{__
 
  __( 
  __' 
'  __*	% 
 __*	 
=
=
=(=;)6r5   r  c                  ^    e Zd Zej                  ZddZd	dZd
dZddZ	e
dd       ZddZy)	CRLReasonc                H    t        |t              st        d      || _        y )Nz*reason must be an element from ReasonFlags)r#   rN  rw   _reason)r;   reasons     r3   rN   zCRLReason.__init__  s    &+.HIIr5   c                "    d| j                    dS )Nz<CRLReason(reason=r|   r  re   s    r3   r}   zCRLReason.__repr__  r  r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zCRLReason.__eq__  s%    %+!!{{ell**r5   c                ,    t        | j                        S r"   )r   r  re   s    r3   r   zCRLReason.__hash__  r   r5   c                    | j                   S r"   r  re   s    r3   r  zCRLReason.reason  r   r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zCRLReason.public_bytes  r   r5   N)r  rN  rE   rV   r~   r   rD   )rE   rN  rf   )rX   rY   rZ   r   
CRL_REASONrO   rN   r}   r   r   r   r  r$   rG   r5   r3   r  r    s:    

)
)C5+!  6r5   r  c                  ^    e Zd Zej                  ZddZd	dZd
dZddZ	e
dd       ZddZy)InvalidityDatec                \    t        |t        j                        st        d      || _        y )Nz+invalidity_date must be a datetime.datetime)r#   datetimerw   _invalidity_date)r;   invalidity_dates     r3   rN   zInvalidityDate.__init__  s&    /8+<+<=IJJ /r5   c                8    dj                  | j                        S )Nz$<InvalidityDate(invalidity_date={})>)rd   r  re   s    r3   r}   zInvalidityDate.__repr__  s    5<<!!
 	
r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zInvalidityDate.__eq__
  s)    %0!!##u'<'<<<r5   c                ,    t        | j                        S r"   )r   r  re   s    r3   r   zInvalidityDate.__hash__  s    D(())r5   c                    | j                   S r"   )r  re   s    r3   r  zInvalidityDate.invalidity_date  r  r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zInvalidityDate.public_bytes  r   r5   N)r  datetime.datetimerE   rV   r~   r   rD   )rE   r  rf   )rX   rY   rZ   r   INVALIDITY_DATErO   rN   r}   r   r   r   r  r$   rG   r5   r3   r  r    s:    

.
.C0

=* % %6r5   r  c                  l    e Zd Zej                  Z	 	 	 	 ddZ ed      \  ZZ	Z
d	dZd
dZddZddZy))PrecertificateSignedCertificateTimestampsc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r#   r   r   scts     r3   r   zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>%         
 s67
r   YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamprm   r   rw   _signed_certificate_timestampsr;   signed_certificate_timestampss     r3   rN   z2PrecertificateSignedCertificateTimestamps.__init__  D     )--J(K% 
4
 
 /  /L+r5   r  c                6    dj                  t        |             S )Nz/<PrecertificateSignedCertificateTimestamps({})>)rd   rm   re   s    r3   r}   z2PrecertificateSignedCertificateTimestamps.__repr__3  s    @GGJ
 	
r5   c                >    t        t        | j                              S r"   r   r   r  re   s    r3   r   z2PrecertificateSignedCertificateTimestamps.__hash__8      E$==>??r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   z0PrecertificateSignedCertificateTimestamps.__eq__;  s1    %!JK!! //334	
r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z6PrecertificateSignedCertificateTimestamps.public_bytesD  r   r5   Nr  z+typing.Iterable[SignedCertificateTimestamp]rE   rV   r~   rD   r   rf   )rX   rY   rZ   r   %PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrO   rN   rH   r   r   r   r}   r   r   r$   rG   r5   r3   r  r    sT    

<
<CL(
L
 
L" &<(&"GX{

@
6r5   r  c                  l    e Zd Zej                  Z	 	 	 	 ddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)SignedCertificateTimestampsc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r  r  s     r3   r   z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>R  r  r   r  r  r  s     r3   rN   z$SignedCertificateTimestamps.__init__K  r  r5   r  c                     dt        |        dS )Nz<SignedCertificateTimestamps(r|   )rm   re   s    r3   r}   z$SignedCertificateTimestamps.__repr__`  s    .tDzl"==r5   c                >    t        t        | j                              S r"   r  re   s    r3   r   z$SignedCertificateTimestamps.__hash__c  r  r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   z"SignedCertificateTimestamps.__eq__f  s1    %!<=!! //334	
r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z(SignedCertificateTimestamps.public_byteso  r   r5   Nr  r~   rD   r   rf   )rX   rY   rZ   r   SIGNED_CERTIFICATE_TIMESTAMPSrO   rN   rH   r   r   r   r}   r   r   r$   rG   r5   r3   r  r  H  sT    

4
4CL(
L
 
L" &<(&"GX{>@
6r5   r  c                  ^    e Zd Zej                  ZddZd	dZd
dZddZ	e
dd       ZddZy)	OCSPNoncec                H    t        |t              st        d      || _        y )Nznonce must be bytes)r#   rg   rw   _nonce)r;   nonces     r3   rN   zOCSPNonce.__init__v  s    %'122r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zOCSPNonce.__eq__|  s%    %+!!zzU[[((r5   c                ,    t        | j                        S r"   )r   r  re   s    r3   r   zOCSPNonce.__hash__  s    DJJr5   c                "    d| j                   dS )Nz<OCSPNonce(nonce=r|   )r  re   s    r3   r}   zOCSPNonce.__repr__  s    "4::.33r5   c                    | j                   S r"   )r  re   s    r3   r  zOCSPNonce.nonce  r[  r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   zOCSPNonce.public_bytes  r   r5   N)r  rg   rE   rV   r   rD   r~   rf   )rX   rY   rZ   r   NONCErO   rN   r   r   r}   r   r  r$   rG   r5   r3   r  r  s  s:    

 
 C) 4  6r5   r  c                  T    e Zd Zej                  ZddZd	dZd
dZddZ	ddZ
ddZy)OCSPAcceptableResponsesc                b    t        |      }t        d |D              rt        d      || _        y )Nc              3  >   K   | ]  }t        |t                 y wr"   r  )r   rs     r3   r   z3OCSPAcceptableResponses.__init__.<locals>.<genexpr>  s     Fq:a!122Fs   z'All responses must be ObjectIdentifiers)rm   rA  rw   
_responses)r;   	responsess     r3   rN   z OCSPAcceptableResponses.__init__  s,    O	FIFFEFF#r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zOCSPAcceptableResponses.__eq__  s(    %!89!!%"2"222r5   c                >    t        t        | j                              S r"   )r   r   r  re   s    r3   r   z OCSPAcceptableResponses.__hash__  s    E$//*++r5   c                "    d| j                    dS )Nz#<OCSPAcceptableResponses(responses=r|   )r  re   s    r3   r}   z OCSPAcceptableResponses.__repr__  s    4T__4ERHHr5   c                ,    t        | j                        S r"   )r?   r  re   s    r3   r   z OCSPAcceptableResponses.__iter__  r   r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z$OCSPAcceptableResponses.public_bytes  r   r5   N)r  r  rE   rV   r   rD   r~   )rE   z!typing.Iterator[ObjectIdentifier]rf   )rX   rY   rZ   r   ACCEPTABLE_RESPONSESrO   rN   r   r   r}   r   r$   rG   r5   r3   r  r    s,    

/
/C$3,I%6r5   r  c                      e Zd Zej                  Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZddZddZ	e
dd       Ze
dd       Ze
dd       Ze
dd       Ze
	 	 dd	       Ze
dd
       Ze
dd       ZddZy)IssuingDistributionPointc           	     z   |t        |      }|r-t        |t              rt        d |D              st	        d      |r/t
        j                  |v st
        j                  |v rt        d      t        |t              r0t        |t              r t        |t              rt        |t              st	        d      ||||g}t        |D 	cg c]  }	|	s|		 c}	      dkD  rt        d      t        |||||||g      st        d      || _        || _        || _        || _        || _        || _        || _        y c c}	w )Nc              3  <   K   | ]  }t        |t                y wr"   rM  r   s     r3   r   z4IssuingDistributionPoint.__init__.<locals>.<genexpr>  r.  r   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.rz  zOnly 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.)rm   r#   rO  r   rw   rN  rP  rQ  r   r   r8   rA  _only_contains_user_certs_only_contains_ca_certs_indirect_crl_only_contains_attribute_certs_only_some_reasonsrR  rS  )
r;   rV  rW  only_contains_user_certsonly_contains_ca_certsonly_some_reasonsindirect_crlonly_contains_attribute_certscrl_constraintsr   s
             r3   rN   z!IssuingDistributionPoint.__init__  so     YI,i8M;LMML  ##'88**.??+  /6148<.8$?'  %")	
 ?0aa01A5>  (&-!

 %  *B&'=$).K+"3#+A 1s   D8D8c                $    dj                  |       S )NaG  <IssuingDistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, only_contains_user_certs={0.only_contains_user_certs}, only_contains_ca_certs={0.only_contains_ca_certs}, only_some_reasons={0.only_some_reasons}, indirect_crl={0.indirect_crl}, only_contains_attribute_certs={0.only_contains_attribute_certs})>r   re   s    r3   r}   z!IssuingDistributionPoint.__repr__  s    2 39&,		
r5   c                   t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  xr | j
                  |j
                  k(  xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r"   )
r#   r  r   rV  rW  r  r  r  r  r  r   s     r3   r   zIssuingDistributionPoint.__eq__  s    %!9:!! NNeoo- 3""e&9&993--1O1OO3 ++u/K/KK3 &&%*A*AA	3
 !!U%7%773 22223		
r5   c           	         t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  f      S r"   )r   rV  rW  r  r  r  r  r  re   s    r3   r   z!IssuingDistributionPoint.__hash__  sQ    ""--++&&!!22

 
	
r5   c                    | j                   S r"   r_  re   s    r3   rV  z"IssuingDistributionPoint.full_name+  r`  r5   c                    | j                   S r"   rb  re   s    r3   rW  z&IssuingDistributionPoint.relative_name/  r  r5   c                    | j                   S r"   )r  re   s    r3   r  z1IssuingDistributionPoint.only_contains_user_certs3  s    ---r5   c                    | j                   S r"   )r  re   s    r3   r  z/IssuingDistributionPoint.only_contains_ca_certs7  r  r5   c                    | j                   S r"   )r
  re   s    r3   r  z*IssuingDistributionPoint.only_some_reasons;  r  r5   c                    | j                   S r"   )r  re   s    r3   r  z%IssuingDistributionPoint.indirect_crlA  r  r5   c                    | j                   S r"   )r	  re   s    r3   r  z6IssuingDistributionPoint.only_contains_attribute_certsE  s    222r5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z%IssuingDistributionPoint.public_bytesI  r   r5   N)rV  r   rW  re  r  r   r  r   r  rf  r  r   r  r   rE   rV   r~   r   rD   r   rg  r  rh  rf   )rX   rY   rZ   r   ISSUING_DISTRIBUTION_POINTrO   rN   r}   r   r   r   rV  rW  r  r  r  r  r  r$   rG   r5   r3   r  r    s   

1
1CQ,@Q, BQ, #'	Q,
 !%Q, JQ, Q, (,Q, 
Q,f



   # # . . , , '	7' '
 " " 3 36r5   r  c                      e Zd Zej                  Z	 	 	 	 	 	 	 	 d
dZedd       Zedd       Z	edd       Z
ddZddZddZddZy	)MSCertificateTemplatec                    t        |t              st        d      || _        |t        |t              r|t        |t              st        d      || _        || _        y )Noid must be an ObjectIdentifierz8major_version and minor_version must be integers or None)r#   r   rw   _template_idrF   _major_version_minor_version)r;   template_idmajor_versionminor_versions       r3   rN   zMSCertificateTemplate.__init__P  sc     +'78=>>'%j.L%j.LJ  ,+r5   c                    | j                   S r"   )r!  re   s    r3   r$  z!MSCertificateTemplate.template_idd  r  r5   c                    | j                   S r"   )r"  re   s    r3   r%  z#MSCertificateTemplate.major_versionh  r  r5   c                    | j                   S r"   )r#  re   s    r3   r&  z#MSCertificateTemplate.minor_versionl  r  r5   c                V    d| j                    d| j                   d| j                   dS )Nz#<MSCertificateTemplate(template_id=z, major_version=z, minor_version=r|   )r$  r%  r&  re   s    r3   r}   zMSCertificateTemplate.__repr__p  s?    1$2B2B1C D!//0 1!//04	
r5   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r"   )r#   r  r   r$  r%  r&  r   s     r3   r   zMSCertificateTemplate.__eq__w  s`    %!67!!  1 11 :""e&9&99:""e&9&99	
r5   c                Z    t        | j                  | j                  | j                  f      S r"   )r   r$  r%  r&  re   s    r3   r   zMSCertificateTemplate.__hash__  s&    T%%t'9'94;M;MNOOr5   c                ,    t        j                  |       S r"   r   re   s    r3   r$   z"MSCertificateTemplate.public_bytes  r   r5   N)r$  r   r%  r   r&  r   rE   rV   r  r   r~   r   rD   rf   )rX   rY   rZ   r   MS_CERTIFICATE_TEMPLATErO   rN   r   r$  r%  r&  r}   r   r   r$   rG   r5   r3   r  r  M  s    

.
.C,%, ,, ,	,
 
,( ! ! # # # #

P6r5   r  c                  X    e Zd Zd	dZed
d       Zedd       ZddZddZddZ	ddZ
y)rv   c                V    t        |t              st        d      || _        || _        y )Nr   )r#   r   rw   rQ  rS  )r;   rO   rx   s      r3   rN   zUnrecognizedExtension.__init__  s'    #/0=>>	r5   c                    | j                   S r"   rV  re   s    r3   rO   zUnrecognizedExtension.oid  rW  r5   c                    | j                   S r"   rZ  re   s    r3   rx   zUnrecognizedExtension.value  r[  r5   c                $    dj                  |       S )Nz7<UnrecognizedExtension(oid={0.oid}, value={0.value!r})>r   re   s    r3   r}   zUnrecognizedExtension.__repr__  s    ""(&,	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   rv   r   rO   rx   r   s     r3   r   zUnrecognizedExtension.__eq__  s8    %!67!!xx599$Bu{{)BBr5   c                D    t        | j                  | j                  f      S r"   )r   rO   rx   re   s    r3   r   zUnrecognizedExtension.__hash__  s    TXXtzz*++r5   c                    | j                   S r"   )rx   re   s    r3   r$   z"UnrecognizedExtension.public_bytes  s    zzr5   N)rO   r   rx   rg   rE   rV   r  rf   r~   r   rD   )rX   rY   rZ   rN   r   rO   rx   r}   r   r   r$   rG   r5   r3   rv   rv     sD        
C,r5   rv   )r0   r   rE   rg   )r<   rU   )j
__future__r   abcr  r-   r<  r  cryptographyr   "cryptography.hazmat.bindings._rustr   r   r   cryptography.hazmat.primitivesr   r   ,cryptography.hazmat.primitives.asymmetric.ecr	   -cryptography.hazmat.primitives.asymmetric.rsar
   /cryptography.hazmat.primitives.asymmetric.typesr   r   *cryptography.x509.certificate_transparencyr   cryptography.x509.general_namer   r   r   r   r   r   r   r   r   cryptography.x509.namer   r   cryptography.x509.oidr   r   r   r   TypeVarr   r4   rH   	ExceptionrJ   r_   ABCMetar   rk   r   r   r   r   r   r   r  r!  r*  r@  r.  EnumrN  rs  rt  ru  rm  rv  rw  rx  ry  _REASON_BIT_MAPPING_CRLREASONFLAGSr  r  r  r  r  r  r  r  r  r  rx   _TLS_FEATURE_TYPE_TO_ENUMr  r  r*  GenericrO  r`  r  r  r  r  r  r  r  r  r  r  r  rv   )r   s   0r3   <module>rK     s  
 # 
      3 @ G O F
 
 
 C  "6>>o 
')'
'0
3 	 
ckk 
$3 $3N6 6:i6] i6X!6= !6H6 6B6} 6B%% %%P+6} +6\6 6:"6M "6J"6- "6Jl  l ^
&%** 
&4 !!  &&))##&&  	  q##QA&&  !##Qq	>6 >6B6- 6>:' :'z(# (#V%$ %$P6} 6<6- 6&6M 6&6 6DUZZ  2@@AQWWaZ@ 6} 6@B6} B6Jt6m t6n-;/0 -;`V0 V0rN6] N6bN6M N6bN6 N6b6 6:6] 6>*6 *6Z(6- (6V6 6:6m 6:]6} ]6@86M 86vM I" As   M1