
    ;3h/                   X   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m	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j\                  ddd      Z/	 	 	 	 ddZ0ddZ1 G d de2      Z3 G d de2      Z4 G d dejj                        Z6 G d d      Z7 G d de6      Z8 G d d e6      Z9 G d! d"e6      Z: G d# d$e6      Z; G d% d&e6      Z< G d' d(      Z= G d) d*e6      Z> G d+ d,e6      Z? G d- d.e6      Z@ G d/ d0e6      ZA G d1 d2      ZB G d3 d4ej                        ZDeDj                  eDj                  eDj                  eDj                  eDj                  eDj                  eDj                  eDj                  d5ZMeDj                  d6eDj                  d7eDj                  d8eDj                  d9eDj                  d:eDj                  d;eDj                  d<eDj                  d=iZNeDj                  d eDj                  d6eDj                  d7eDj                  d8eDj                  d9eDj                  d:eDj                  d;eDj                  d=eDj                  d>eDj                  d?i
ZQ G d@ dAe6      ZR G dB dCe6      ZS G dD dE      ZT G dF dG      ZU G dH dI      ZV G dJ dKe6      ZW G dL dMe6      ZX G dN dOe6      ZY G dP dQe6      ZZ G dR dSej                        Z[e[D  ci c]  } | j                  |  c} Z] G dT dUe6      Z^ G dV dWe6      Z_ G dX dYe6      Z` G dZ d[e6      Za G d\ d]ej                  e/         Zc G d^ d_      Zd G d` dae6      Ze G db dce6      Zf G dd dee6      Zg G df dge6      Zh G dh die6      Zi G dj dke6      Zj G dl dme6      Zk G dn doe6      Zl G dp dqe6      Zm G dr dse6      Zn G dt due6      Zo G dv dw      Zp G dx dy      Zq G dz d{      Zr G d| d}e6      Zs G d~ de6      Ztyc c} w )    )annotationsN)IterableIterator)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      \/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/cryptography/x509/extensions.py_key_identifier_from_public_keyr6   3   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    r5   
len_methodz*_make_sequence_methods.<locals>.len_methodL   s    74,--r7   c                .    t        t        |             S r$   )iterr;   r<   s    r5   iter_methodz+_make_sequence_methods.<locals>.iter_methodO   s    GD*-..r7   c                "    t        |       |   S r$   )r;   )r=   idxr>   s     r5   getitem_methodz._make_sequence_methods.<locals>.getitem_methodR   s    tZ(--r7   returnint )r>   r?   rB   rE   s   `   r5   _make_sequence_methodsrJ   K   s!    ./. {N22r7   c                        e Zd Zd fdZ xZS )DuplicateExtensionc                2    t         |   |       || _        y r$   super__init__oidr=   msgrQ   	__class__s      r5   rP   zDuplicateExtension.__init__Y       r7   rS   strrQ   r   rG   None__name__
__module____qualname__rP   __classcell__rT   s   @r5   rL   rL   X        r7   rL   c                        e Zd Zd fdZ xZS )ExtensionNotFoundc                2    t         |   |       || _        y r$   rN   rR   s      r5   rP   zExtensionNotFound.__init___   rU   r7   rV   rY   r^   s   @r5   ra   ra   ^   r_   r7   ra   c                       e Zd ZU ded<   ddZy)r    z!typing.ClassVar[ObjectIdentifier]rQ   c                    t        d|       )z7
        Serializes the extension type to DER.
        z3public_bytes is not implemented for extension type )NotImplementedErrorr=   s    r5   r&   zExtensionType.public_bytesg   s     "A$J
 	
r7   NrG   bytes)rZ   r[   r\   __annotations__r&   rI   r7   r5   r    r    d   s    	**
r7   )	metaclassc                  T    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     r5   rP   zExtensions.__init__q   s    
+r7   c                V    | D ]  }|j                   |k(  s|c S  t        d| d|      )NNo  extension was found)rQ   ra   )r=   rQ   exts      r5   get_extension_for_oidz Extensions.get_extension_for_oidt   s<      	Cww#~
	  #cU*> ?EEr7   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.rr   rs   )UnrecognizedExtension	TypeErrorr%   valuera   rQ   )r=   extclassrt   s      r5   get_extension_for_classz"Extensions.get_extension_for_class}   se     ,,)   	C#))X.
	  (/0(,,
 	
r7   ro   c                "    d| j                    dS )Nz<Extensions()>)ro   rf   s    r5   __repr__zExtensions.__repr__   s    d../r22r7   N)rp   z"Iterable[Extension[ExtensionType]]rG   rX   )rQ   r   rG   zExtension[ExtensionType])rz   ztype[ExtensionTypeVar]rG   zExtension[ExtensionTypeVar]rG   rW   )rZ   r[   r\   rP   ru   r{   rJ   __len____iter____getitem__r~   rI   r7   r5   rl   rl   p   sL    ,F#F	!F
.
	$
$ &<M%J"GX{3r7   rl   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%   rH   rx   _crl_numberr=   
crl_numbers     r5   rP   zCRLNumber.__init__        *c*;<<%r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r   NotImplementedr   r=   others     r5   __eq__zCRLNumber.__eq__   s'    %+!!%"2"222r7   c                ,    t        | j                        S r$   hashr   rf   s    r5   __hash__zCRLNumber.__hash__       DOO$$r7   c                "    d| j                    dS )Nz<CRLNumber(r}   r   rf   s    r5   r~   zCRLNumber.__repr__   s    T__-R00r7   c                    | j                   S r$   r   rf   s    r5   r   zCRLNumber.crl_number       r7   c                ,    t        j                  |       S r$   	rust_x509encode_extension_valuerf   s    r5   r&   zCRLNumber.public_bytes       //55r7   Nr   rH   rG   rX   r   objectrG   boolrF   r   rg   )rZ   r[   r\   r   
CRL_NUMBERrQ   rP   r   r   r~   propertyr   r&   rI   r7   r5   r   r      s:    

!
!C&3%1    6r7   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     r5   	<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)	
ValueErrorrn   allrx   r%   rH   _key_identifier_authority_cert_issuer_authority_cert_serial_number)r=   key_identifierauthority_cert_issuerauthority_cert_serial_numbers       r5   rP   zAuthorityKeyIdentifier.__init__   s     "T)(D0
 4 
 !,$()>$?! 4I    
 (3J(#=
 MNN-&;#-I*r7   c                .    t        |      } | |d d       S Nr   r   r   r6   )clsr2   r1   s      r5   from_issuer_public_keyz-AuthorityKeyIdentifier.from_issuer_public_key   s$     1<!"&)-
 	
r7   c                ,     | |j                   d d       S r   r1   )r   skis     r5   "from_issuer_subject_key_identifierz9AuthorityKeyIdentifier.from_issuer_subject_key_identifier   s     ::"&)-
 	
r7   c                V    d| j                   d| j                   d| j                   dS )Nz'<AuthorityKeyIdentifier(key_identifier=z, authority_cert_issuer=z, authority_cert_serial_number=r}   r   rf   s    r5   r~   zAuthorityKeyIdentifier.__repr__   sA    5d6I6I5L M%%)%?%?$@ A,,0,M,M+N	
r7   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     r5   r   zAuthorityKeyIdentifier.__eq__   sc    %!78!! 5#7#77 2**e.I.II211112	
r7   c                    | j                   d }nt        | j                         }t        | j                  || j                  f      S r$   )r   tupler   r   r   )r=   acis     r5   r   zAuthorityKeyIdentifier.__hash__  sF    %%-C223C  #t'H'HI
 	
r7   c                    | j                   S r$   )r   rf   s    r5   r   z%AuthorityKeyIdentifier.key_identifier      ###r7   c                    | j                   S r$   )r   rf   s    r5   r   z,AuthorityKeyIdentifier.authority_cert_issuer  s     ***r7   c                    | j                   S r$   )r   rf   s    r5   r   z3AuthorityKeyIdentifier.authority_cert_serial_number  s    111r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z#AuthorityKeyIdentifier.public_bytes  r   r7   N)r   bytes | Noner   Iterable[GeneralName] | Noner   
int | NonerG   rX   )r2   r   rG   r   )r   SubjectKeyIdentifierrG   r   r   r   rF   rG   r   rG   zlist[GeneralName] | NonerG   r   rg   )rZ   r[   r\   r   AUTHORITY_KEY_IDENTIFIERrQ   rP   classmethodr   r   r~   r   r   r   r   r   r   r&   rI   r7   r5   r   r      s    

/
/CJ$J  <J '1	J
 
JL 
8
	
 
 
&
	
 

	

 $ $ +	!+ +
 2 26r7   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=   r1   s     r5   rP   zSubjectKeyIdentifier.__init__!  s	    r7   c                $     | t        |            S r$   r   )r   r2   s     r5   from_public_keyz$SubjectKeyIdentifier.from_public_key$  s     2:>??r7   c                    | j                   S r$   r   rf   s    r5   r1   zSubjectKeyIdentifier.digest*      ||r7   c                    | j                   S r$   r   rf   s    r5   r   z#SubjectKeyIdentifier.key_identifier.  r   r7   c                "    d| j                   dS )Nz<SubjectKeyIdentifier(digest=r}   r   rf   s    r5   r~   zSubjectKeyIdentifier.__repr__2  s    .t{{oR@@r7   c                    t        |t              st        S t        j                  | j
                  |j
                        S r$   )r%   r   r   r	   bytes_eqr1   r   s     r5   r   zSubjectKeyIdentifier.__eq__5  s.    %!56!!%%dkk5<<@@r7   c                ,    t        | j                        S r$   )r   r1   rf   s    r5   r   zSubjectKeyIdentifier.__hash__;      DKK  r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z!SubjectKeyIdentifier.public_bytes>  r   r7   N)r1   rh   rG   rX   )r2   r   rG   r   rg   r   r   rF   )rZ   r[   r\   r   SUBJECT_KEY_IDENTIFIERrQ   rP   r   r   r   r1   r   r~   r   r   r&   rI   r7   r5   r   r     sx    

-
-C @2@	@ @
    AA!6r7   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)AuthorityInformationAccessc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr$   r%   AccessDescriptionr   s     r5   r   z6AuthorityInformationAccess.__init__.<locals>.<genexpr>G       J:a!23Jr   @Every item in the descriptions list must be an AccessDescriptionrn   r   rx   _descriptionsr=   descriptionss     r5   rP   z#AuthorityInformationAccess.__init__E  6    L)J\JJ$ 
 *r7   r   c                "    d| j                    dS )Nz<AuthorityInformationAccess(r}   r   rf   s    r5   r~   z#AuthorityInformationAccess.__repr__Q  s    -d.@.@-ADDr7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r   r   r   r   s     r5   r   z!AuthorityInformationAccess.__eq__T  s*    %!;<!!!!U%8%888r7   c                >    t        t        | j                              S r$   r   r   r   rf   s    r5   r   z#AuthorityInformationAccess.__hash__Z      E$,,-..r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z'AuthorityInformationAccess.public_bytes]  r   r7   Nr   zIterable[AccessDescription]rG   rX   r   r   rF   rg   )rZ   r[   r\   r   AUTHORITY_INFORMATION_ACCESSrQ   rP   rJ   r   r   r   r~   r   r   r&   rI   r7   r5   r   r   B  s:    

3
3C* &<O%L"GX{E9/6r7   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)SubjectInformationAccessc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr$   r   r   s     r5   r   z4SubjectInformationAccess.__init__.<locals>.<genexpr>f  r   r   r   r   r   s     r5   rP   z!SubjectInformationAccess.__init__d  r   r7   r   c                "    d| j                    dS )Nz<SubjectInformationAccess(r}   r   rf   s    r5   r~   z!SubjectInformationAccess.__repr__p  s    +D,>,>+?rBBr7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r   r   r   r   s     r5   r   zSubjectInformationAccess.__eq__s  s*    %!9:!!!!U%8%888r7   c                >    t        t        | j                              S r$   r   rf   s    r5   r   z!SubjectInformationAccess.__hash__y  r   r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z%SubjectInformationAccess.public_bytes|  r   r7   Nr   r   r   rF   rg   )rZ   r[   r\   r   SUBJECT_INFORMATION_ACCESSrQ   rP   rJ   r   r   r   r~   r   r   r&   rI   r7   r5   r   r   a  s:    

1
1C* &<O%L"GX{C9/6r7   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   rx   r   _access_method_access_location)r=   access_methodaccess_locations      r5   rP   zAccessDescription.__init__  sA     -)9:GHH/;7CDD+ /r7   c                <    d| j                    d| j                   dS )Nz!<AccessDescription(access_method=z, access_location=r}   )r  r	  rf   s    r5   r~   zAccessDescription.__repr__  s.    /0B0B/C D#334B8	
r7   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r%   r   r   r  r	  r   s     r5   r   zAccessDescription.__eq__  sG    %!23!! %"5"55 >$$(=(==	
r7   c                D    t        | j                  | j                  f      S r$   )r   r  r	  rf   s    r5   r   zAccessDescription.__hash__  s    T'')=)=>??r7   c                    | j                   S r$   )r  rf   s    r5   r  zAccessDescription.access_method      """r7   c                    | j                   S r$   )r  rf   s    r5   r	  z!AccessDescription.access_location      $$$r7   N)r  r   r	  r   rG   rX   r   r   rF   rG   r   )rG   r   )
rZ   r[   r\   rP   r~   r   r   r   r  r	  rI   r7   r5   r   r     sW    
0-
0@K
0	
0

@ # # % %r7   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   rx   r   rH   _ca_path_length)r=   capath_lengths      r5   rP   zBasicConstraints.__init__  sc    "d#899"2HII";,aD  'r7   c                    | j                   S r$   )r  rf   s    r5   r  zBasicConstraints.ca      xxr7   c                    | j                   S r$   )r  rf   s    r5   r  zBasicConstraints.path_length         r7   c                <    d| j                    d| j                   dS )Nz<BasicConstraints(ca=z, path_length=r}   )r  r  rf   s    r5   r~   zBasicConstraints.__repr__  s$    #DGG9N4;K;K:LBO	
r7   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r%   r  r   r  r  r   s     r5   r   zBasicConstraints.__eq__  s<    %!12!!ww%(("Lt'7'75;L;L'LLr7   c                D    t        | j                  | j                  f      S r$   )r   r  r  rf   s    r5   r   zBasicConstraints.__hash__  s    TWWd../00r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zBasicConstraints.public_bytes  r   r7   N)r  r   r  r   rG   rX   rG   r   r   r   r   rF   rg   )rZ   r[   r\   r   BASIC_CONSTRAINTSrQ   rP   r   r  r  r~   r   r   r&   rI   r7   r5   r  r    sO    

(
(C("   ! !

M16r7   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     r5   rP   zDeltaCRLIndicator.__init__  r   r7   c                    | j                   S r$   r   rf   s    r5   r   zDeltaCRLIndicator.crl_number  r   r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r$  r   r   r   s     r5   r   zDeltaCRLIndicator.__eq__  s(    %!23!!%"2"222r7   c                ,    t        | j                        S r$   r   rf   s    r5   r   zDeltaCRLIndicator.__hash__  r   r7   c                "    d| j                    dS )Nz<DeltaCRLIndicator(crl_number=r}   r   rf   s    r5   r~   zDeltaCRLIndicator.__repr__  s    //@CCr7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zDeltaCRLIndicator.public_bytes  r   r7   Nr   rF   r   r   rg   )rZ   r[   r\   r   DELTA_CRL_INDICATORrQ   rP   r   r   r   r   r~   r&   rI   r7   r5   r$  r$    s;    

*
*C&    3%D6r7   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     r5   r   z1CRLDistributionPoints.__init__.<locals>.<genexpr>        
12Jq+,
r   ?distribution_points must be a list of DistributionPoint objectsrn   r   rx   _distribution_pointsr=   distribution_pointss     r5   rP   zCRLDistributionPoints.__init__  C     ##67 
6I
 
  
 %8!r7   r5  c                "    d| j                    dS )Nz<CRLDistributionPoints(r}   r5  rf   s    r5   r~   zCRLDistributionPoints.__repr__  s    ()B)B(C2FFr7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r-  r   r5  r   s     r5   r   zCRLDistributionPoints.__eq__  s*    %!67!!((E,F,FFFr7   c                >    t        t        | j                              S r$   r   r   r5  rf   s    r5   r   zCRLDistributionPoints.__hash__      E$33455r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z"CRLDistributionPoints.public_bytes  r   r7   Nr7  zIterable[DistributionPoint]rG   rX   r   r   rF   rg   )rZ   r[   r\   r   CRL_DISTRIBUTION_POINTSrQ   rP   rJ   r   r   r   r~   r   r   r&   rI   r7   r5   r-  r-    sN    

.
.C8#>8	8 &<&"GX{GG66r7   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$   r0  r   s     r5   r   z'FreshestCRL.__init__.<locals>.<genexpr>  r2  r   r3  r4  r6  s     r5   rP   zFreshestCRL.__init__  r8  r7   r5  c                "    d| j                    dS )Nz<FreshestCRL(r}   r:  rf   s    r5   r~   zFreshestCRL.__repr__-  s    t889<<r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   rC  r   r5  r   s     r5   r   zFreshestCRL.__eq__0  s)    %-!!((E,F,FFFr7   c                >    t        t        | j                              S r$   r=  rf   s    r5   r   zFreshestCRL.__hash__6  r>  r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zFreshestCRL.public_bytes9  r   r7   Nr@  r   r   rF   rg   )rZ   r[   r\   r   FRESHEST_CRLrQ   rP   rJ   r   r   r   r~   r   r   r&   rI   r7   r5   rC  rC    sM    

#
#C8#>8	8 &<&"GX{=G66r7   rC  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	)r1  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     r5   r   z-DistributionPoint.__init__.<locals>.<genexpr>R  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     r5   r   z-DistributionPoint.__init__.<locals>.<genexpr>_  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     r5   r   z-DistributionPoint.__init__.<locals>.<genexpr>f  s     Caz![1Cr   z0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)r   rn   r   rx   r%   r   	frozensetrQ  unspecifiedremove_from_crl
_full_name_relative_name_reasons_crl_issuer)r=   	full_namerelative_namereasons
crl_issuers        r5   rP   zDistributionPoint.__init__>  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$ 
 $+%r7   c                $    dj                  |       S )Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>formatrf   s    r5   r~   zDistributionPoint.__repr__x  s    **0&,	
r7   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%   r1  r   rY  rZ  r[  r\  r   s     r5   r   zDistributionPoint.__eq__  sq    %!23!! NNeoo- 4""e&9&994-4 5#3#33		
r7   c                    | j                   t        | j                         }nd }| j                  t        | j                        }nd }t        || j                  | j
                  |f      S r$   )rY  r   r\  r   rZ  r[  )r=   fnr\  s      r5   r   zDistributionPoint.__hash__  sZ    >>%16t~~1FBB??&9>t9OJJR++T\\:FGGr7   c                    | j                   S r$   rU  rf   s    r5   rY  zDistributionPoint.full_name      r7   c                    | j                   S r$   rV  rf   s    r5   rZ  zDistributionPoint.relative_name  r  r7   c                    | j                   S r$   )rW  rf   s    r5   r[  zDistributionPoint.reasons  s    }}r7   c                    | j                   S r$   )rX  rf   s    r5   r\  zDistributionPoint.crl_issuer  r   r7   N)
rY  r   rZ   RelativeDistinguishedName | Noner[  frozenset[ReasonFlags] | Noner\  r   rG   rX   r   r   rF   r   rG   rj  rG   rk  )rZ   r[   r\   rP   r~   r   r   r   rY  rZ  r[  r\  rI   r7   r5   r1  r1  =  s    8&/8& 88& /	8&
 18& 
8&t
	
H   # #      r7   r1  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)rQ  rS  keyCompromisecACompromiseaffiliationChanged
supersededcessationOfOperationcertificateHoldprivilegeWithdrawnaACompromiseremoveFromCRLN)rZ   r[   r\   rS  key_compromiseca_compromiseaffiliation_changedrr  cessation_of_operationcertificate_holdprivilege_withdrawnaa_compromiserT  rI   r7   r5   rQ  rQ    s8    K$N"M.J3(."M%Or7   rQ  )                        r  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%   rH   rx   r   _require_explicit_policy_inhibit_policy_mapping)r=   require_explicit_policyinhibit_policy_mappings      r5   rP   zPolicyConstraints.__init__  s    
 #.z#S8
  
 "-j"C7
 O  ").E.M: 
 )@%'=$r7   c                $    dj                  |       S )Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>r^  rf   s    r5   r~   zPolicyConstraints.__repr__  s    	
r7   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r%   r  r   r  r  r   s     r5   r   zPolicyConstraints.__eq__  sH    %!23!! ((E,I,II L++u/K/KK	
r7   c                D    t        | j                  | j                  f      S r$   )r   r  r  rf   s    r5   r   zPolicyConstraints.__hash__!  s#    ))4+F+FG
 	
r7   c                    | j                   S r$   )r  rf   s    r5   r  z)PolicyConstraints.require_explicit_policy&  s    ,,,r7   c                    | j                   S r$   )r  rf   s    r5   r  z(PolicyConstraints.inhibit_policy_mapping*      +++r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zPolicyConstraints.public_bytes.  r   r7   N)r  r   r  r   rG   rX   r   r   rF   r   rg   )rZ   r[   r\   r   POLICY_CONSTRAINTSrQ   rP   r~   r   r   r   r  r  r&   rI   r7   r5   r  r    sj    

)
)C>!+> !+> 
	>:



 - - , ,6r7   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     r5   r   z/CertificatePolicies.__init__.<locals>.<genexpr>7  s     F:a!23Fr   z;Every item in the policies list must be a PolicyInformation)rn   r   rx   	_policies)r=   policiess     r5   rP   zCertificatePolicies.__init__5  s2    >FXFFM  "r7   r  c                "    d| j                    dS )Nz<CertificatePolicies(r}   )r  rf   s    r5   r~   zCertificatePolicies.__repr__@      &t~~&6b99r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r  r   s     r5   r   zCertificatePolicies.__eq__C  s&    %!45!!~~00r7   c                >    t        t        | j                              S r$   )r   r   r  rf   s    r5   r   zCertificatePolicies.__hash__I      E$..)**r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z CertificatePolicies.public_bytesL  r   r7   N)r  zIterable[PolicyInformation]rG   rX   r   r   rF   rg   )rZ   r[   r\   r   CERTIFICATE_POLICIESrQ   rP   rJ   r   r   r   r~   r   r   r&   rI   r7   r5   r  r  2  s9    

+
+C" &<K%H"GX{:1+6r7   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%   rW   
UserNoticer   s     r5   r   z-PolicyInformation.__init__.<locals>.<genexpr>]  s!      56
1sJ/0s    "zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r%   r   rx   _policy_identifierrn   r   _policy_qualifiers)r=   policy_identifierpolicy_qualifierss      r5   rP   zPolicyInformation.__init__Q  si    
 +-=>KLL"3( $%6 7 :K   1 
 #4r7   c                <    d| j                    d| j                   dS )Nz%<PolicyInformation(policy_identifier=z, policy_qualifiers=r}   )r  r  rf   s    r5   r~   zPolicyInformation.__repr__g  s.    3D4J4J3K L!!%!7!7 8<	
r7   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r%   r  r   r  r  r   s     r5   r   zPolicyInformation.__eq__m  sH    %!23!! ""e&=&== B&&%*A*AA	
r7   c                x    | j                   t        | j                         }nd }t        | j                  |f      S r$   )r  r   r   r  )r=   pqs     r5   r   zPolicyInformation.__hash__v  s9    !!-t--.BBT++R011r7   c                    | j                   S r$   )r  rf   s    r5   r  z#PolicyInformation.policy_identifier~      &&&r7   c                    | j                   S r$   )r  rf   s    r5   r  z#PolicyInformation.policy_qualifiers       &&&r7   N)r  r   r  z!Iterable[str | UserNotice] | NonerG   rX   r   r   rF   r  )rG   zlist[str | UserNotice] | None)
rZ   r[   r\   rP   r~   r   r   r   r  r  rI   r7   r5   r  r  P  sb    4+4 =4 
	4,

2 ' ' '	&' 'r7   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%   NoticeReferencerx   _notice_reference_explicit_text)r=   notice_referenceexplicit_texts      r5   rP   zUserNotice.__init__  s7    
 Jo%
 D  "2+r7   c                <    d| j                    d| j                  dS )Nz<UserNotice(notice_reference=z, explicit_text=r}   )r  r  rf   s    r5   r~   zUserNotice.__repr__  s.    +D,A,A+B C!//2"6	
r7   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r%   r  r   r  r  r   s     r5   r   zUserNotice.__eq__  sF    %,!! !!U%;%;; :""e&9&99	
r7   c                D    t        | j                  | j                  f      S r$   )r   r  r  rf   s    r5   r   zUserNotice.__hash__  s    T**D,>,>?@@r7   c                    | j                   S r$   )r  rf   s    r5   r  zUserNotice.notice_reference      %%%r7   c                    | j                   S r$   )r  rf   s    r5   r  zUserNotice.explicit_text  r  r7   N)r  NoticeReference | Noner  
str | NonerG   rX   r   r   rF   )rG   r  rG   r  )
rZ   r[   r\   rP   r~   r   r   r   r  r  rI   r7   r5   r  r    s[    ,0, ", 
	,

A & & # #r7   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%   rH   r   s     r5   r   z+NoticeReference.__init__.<locals>.<genexpr>  s     >!:a%>r   z)notice_numbers must be a list of integers)_organizationrn   r   rx   _notice_numbers)r=   organizationnotice_numberss      r5   rP   zNoticeReference.__init__  s8    
 *n->~>>GHH-r7   c                <    d| j                   d| j                   dS )Nz<NoticeReference(organization=z, notice_numbers=r}   )r  r  rf   s    r5   r~   zNoticeReference.__repr__  s.    ,T->->,A B"112"6	
r7   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r%   r  r   r  r  r   s     r5   r   zNoticeReference.__eq__  sF    %1!! !3!33 <##u';';;	
r7   c                V    t        | j                  t        | j                        f      S r$   )r   r  r   r  rf   s    r5   r   zNoticeReference.__hash__  s#    T&&d.A.A(BCDDr7   c                    | j                   S r$   )r  rf   s    r5   r  zNoticeReference.organization      !!!r7   c                    | j                   S r$   )r  rf   s    r5   r  zNoticeReference.notice_numbers  r   r7   N)r  r  r  zIterable[int]rG   rX   r   r   rF   r  )rG   z	list[int])
rZ   r[   r\   rP   r~   r   r   r   r  r  rI   r7   r5   r  r    s[    
. 
. &
. 
	
.

E " " $ $r7   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     r5   r   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>  s     Cq:a!12Cr   z9Every item in the usages list must be an ObjectIdentifier)rn   r   rx   _usages)r=   usagess     r5   rP   zExtendedKeyUsage.__init__  s2    fCFCCK  r7   r  c                "    d| j                    dS )Nz<ExtendedKeyUsage(r}   )r  rf   s    r5   r~   zExtendedKeyUsage.__repr__      #DLL>44r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r  r   s     r5   r   zExtendedKeyUsage.__eq__  s&    %!12!!||u}},,r7   c                >    t        t        | j                              S r$   )r   r   r  rf   s    r5   r   zExtendedKeyUsage.__hash__  s    E$,,'((r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zExtendedKeyUsage.public_bytes  r   r7   N)r  Iterable[ObjectIdentifier]rG   rX   r   r   rF   rg   )rZ   r[   r\   r   EXTENDED_KEY_USAGErQ   rP   rJ   r   r   r   r~   r   r   r&   rI   r7   r5   r  r    s9    

)
)C &<I%F"GX{5-)6r7   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     r5   r   zOCSPNoCheck.__eq__  s    %-!!r7   c                     t        t              S r$   )r   r  rf   s    r5   r   zOCSPNoCheck.__hash__  s    K  r7   c                     y)Nz<OCSPNoCheck()>rI   rf   s    r5   r~   zOCSPNoCheck.__repr__  s     r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zOCSPNoCheck.public_bytes	  r   r7   Nr   rF   r   rg   )
rZ   r[   r\   r   OCSP_NO_CHECKrQ   r   r   r~   r&   rI   r7   r5   r  r    s!    

$
$C!!6r7   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     r5   r   zPrecertPoison.__eq__  s    %/!!r7   c                     t        t              S r$   )r   r  rf   s    r5   r   zPrecertPoison.__hash__  s    M""r7   c                     y)Nz<PrecertPoison()>rI   rf   s    r5   r~   zPrecertPoison.__repr__  s    "r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zPrecertPoison.public_bytes  r   r7   Nr   rF   r   rg   )
rZ   r[   r\   r   PRECERT_POISONrQ   r   r   r~   r&   rI   r7   r5   r  r    s!    

%
%C##6r7   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     r5   r   z&TLSFeature.__init__.<locals>.<genexpr>&  s     DaJq.1Dr   r   z@features must be a list of elements from the TLSFeatureType enum)rn   r   r:   rx   	_features)r=   featuress     r5   rP   zTLSFeature.__init__#  s@    >D8DD8}! 
 "r7   r  c                "    d| j                    dS )Nz<TLSFeature(features=r}   )r  rf   s    r5   r~   zTLSFeature.__repr__2  r  r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r  r   s     r5   r   zTLSFeature.__eq__5  s%    %,!!~~00r7   c                >    t        t        | j                              S r$   )r   r   r  rf   s    r5   r   zTLSFeature.__hash__;  r  r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zTLSFeature.public_bytes>  r   r7   N)r  zIterable[TLSFeatureType]rG   rX   r   r   rF   rg   )rZ   r[   r\   r   TLS_FEATURErQ   rP   rJ   r   r   r   r~   r   r   r&   rI   r7   r5   r  r     s9    

"
"C" &<K%H"GX{:1+6r7   r  c                      e Zd ZdZdZy)r  r     N)rZ   r[   r\   status_requeststatus_request_v2rI   r7   r5   r  r  B  s     N r7   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%   rH   rx   r   _skip_certs)r=   
skip_certss     r5   rP   zInhibitAnyPolicy.__init__S  s3    *c*;<<>HII%r7   c                "    d| j                    dS )Nz<InhibitAnyPolicy(skip_certs=r}   )r  rf   s    r5   r~   zInhibitAnyPolicy.__repr__\  s    .t.?rBBr7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r  r   s     r5   r   zInhibitAnyPolicy.__eq___  s(    %!12!!%"2"222r7   c                ,    t        | j                        S r$   )r   r  rf   s    r5   r   zInhibitAnyPolicy.__hash__e  r   r7   c                    | j                   S r$   )r  rf   s    r5   r  zInhibitAnyPolicy.skip_certsh  r   r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zInhibitAnyPolicy.public_bytesl  r   r7   N)r  rH   rG   rX   r   r   rF   rg   )rZ   r[   r\   r   INHIBIT_ANY_POLICYrQ   rP   r~   r   r   r   r  r&   rI   r7   r5   r  r  P  s;    

)
)C&C3%    6r7   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
             r5   rP   zKeyUsage.__init__s  sf     -=( 
 #4#5 !1"3++!++r7   c                    | j                   S r$   )r  rf   s    r5   r  zKeyUsage.digital_signature  r  r7   c                    | j                   S r$   )r  rf   s    r5   r  zKeyUsage.content_commitment  s    '''r7   c                    | j                   S r$   )r  rf   s    r5   r  zKeyUsage.key_encipherment  r  r7   c                    | j                   S r$   )r  rf   s    r5   r  zKeyUsage.data_encipherment  r  r7   c                    | j                   S r$   )r  rf   s    r5   r  zKeyUsage.key_agreement  r  r7   c                    | j                   S r$   )r  rf   s    r5   r  zKeyUsage.key_cert_sign  r  r7   c                    | j                   S r$   )r  rf   s    r5   r  zKeyUsage.crl_sign      ~~r7   c                H    | j                   st        d      | j                  S )Nz7encipher_only is undefined unless key_agreement is true)r  r   r  rf   s    r5   r  zKeyUsage.encipher_only  )    !!I  &&&r7   c                H    | j                   st        d      | j                  S )Nz7decipher_only is undefined unless key_agreement is true)r  r   r  rf   s    r5   r  zKeyUsage.decipher_only  r)  r7   c                "   	 | j                   }| j                  }d| j                   d| j                   d| j
                   d| j                   d| j                   d| j                   d| j                   d	| d
| dS # t        $ r d}d}Y sw xY w)NFz<KeyUsage(digital_signature=z, content_commitment=z, key_encipherment=z, data_encipherment=z, key_agreement=z, key_cert_sign=z, crl_sign=z, encipher_only=z, decipher_only=r}   )
r  r  r   r  r  r  r  r  r  r  )r=   r  r  s      r5   r~   zKeyUsage.__repr__  s    	" ..M ..M +4+A+A*B C""&"9"9!: ;  $ 5 56 7!!%!7!7 8 9!//0 1!//0DMM? K*O+;M?"N	
  	" "M!M	"s   A> >BB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     r5   r   zKeyUsage.__eq__  s    %*!! ""e&=&== <''5+C+CC<%%)?)??< &&%*A*AA< ""e&9&99	<
 ""e&9&99< /< ##u';';;< ##u';';;
	
r7   c                    t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  f	      S r$   )
r   r  r  r  r  r  r  r  r  r  rf   s    r5   r   zKeyUsage.__hash__  sc    &&''%%&&""""####

 	
r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zKeyUsage.public_bytes  r   r7   N)r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   rG   rX   r!  r   r   rF   rg   )rZ   r[   r\   r   	KEY_USAGErQ   rP   r   r  r  r  r  r  r  r  r  r  r~   r   r   r&   rI   r7   r5   r  r  p  s<   

 
 C,, !, 	,
  , , , , , , 
,8 ' ' ( ( & & ' ' # # # #   ' ' ' '
*
 
6r7   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ddZy)PrivateKeyUsagePeriodc                   t        |t        j                        s|t        d      t        |t        j                        s|t        d      ||t        d      ||||kD  rt        d      || _        || _        y )Nz.not_before must be a datetime.datetime or Nonez-not_after must be a datetime.datetime or Nonez9At least one of not_before and not_after must not be Nonez#not_before must be before not_after)r%   datetimerx   r   _not_before
_not_after)r=   
not_before	not_afters      r5   rP   zPrivateKeyUsagePeriod.__init__  s     :x'8'89&LMM 9h&7&78%KLL)"3K 
 "%Y&BCC%#r7   c                    | j                   S r$   )r4  rf   s    r5   r6  z PrivateKeyUsagePeriod.not_before  r   r7   c                    | j                   S r$   )r5  rf   s    r5   r7  zPrivateKeyUsagePeriod.not_after  re  r7   c                <    d| j                    d| j                   dS )Nz"<PrivateKeyUsagePeriod(not_before=z, not_after=r}   )r6  r7  rf   s    r5   r~   zPrivateKeyUsagePeriod.__repr__   s*    00A B(,	
r7   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r%   r1  r   r6  r7  r   s     r5   r   zPrivateKeyUsagePeriod.__eq__&  sA    %!67!! OOu/// 2%//1	
r7   c                D    t        | j                  | j                  f      S r$   )r   r6  r7  rf   s    r5   r   zPrivateKeyUsagePeriod.__hash__/  s    T__dnn566r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z"PrivateKeyUsagePeriod.public_bytes2  r   r7   N)r6  datetime.datetime | Noner7  r>  rG   rX   )rG   r>  r   r   rF   rg   )rZ   r[   r\   r   PRIVATE_KEY_USAGE_PERIODrQ   rP   r   r6  r7  r~   r   r   r&   rI   r7   r5   r1  r1    sk    

/
/C$,$ ,$ 
	$@      

76r7   r1  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     r5   r   z+NameConstraints.__init__.<locals>.<genexpr>D  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     r5   r   z+NameConstraints.__init__.<locals>.<genexpr>R       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)rn   r   r   rx   _validate_tree_permitted_subtrees_excluded_subtrees)r=   permitted_subtreesexcluded_subtreess      r5   rP   zNameConstraints.__init__9  s    
 )!%&8!9% I  N;MNN 
  23( $%6 7$ H  M;LMM 
  12%*;*C# 
 $6 "3r7   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r%   rA  r   rJ  rI  r   s     r5   r   zNameConstraints.__eq__c  sG    %1!! ""e&=&== D''5+C+CC	
r7   c                H    | j                  |       | j                  |       y r$   )_validate_ip_name_validate_dns_namer=   trees     r5   rF  zNameConstraints._validate_treel  s    t$%r7   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   ry   	ipaddressIPv4NetworkIPv6Networkr   names     r5   r   z4NameConstraints._validate_ip_name.<locals>.<genexpr>q  sR      

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

Y22I4I4IJ 
s   AAzGIPAddress name constraints must be an IPv4Network or IPv6Network object)anyrx   rO  s     r5   rM  z!NameConstraints._validate_ip_namep  s2     

 
 
 & 
r7   c                >    t        d |D              rt        d      y )Nc              3  \   K   | ]$  }t        |t              xr d |j                  v  & yw)*N)r%   r   ry   rV  s     r5   r   z5NameConstraints._validate_dns_name.<locals>.<genexpr>~  s-      
@DJtW%;#*;;
s   *,zDDNSName name constraints must not contain the '*' wildcard character)rX  r   rO  s     r5   rN  z"NameConstraints._validate_dns_name}  s0     
HL
 
  
r7   c                <    d| j                    d| j                   dS )Nz$<NameConstraints(permitted_subtrees=z, excluded_subtrees=r}   )rI  rJ  rf   s    r5   r~   zNameConstraints.__repr__  s.    243J3J2K L!!%!7!7 8<	
r7   c                    | j                   t        | j                         }nd }| j                  t        | j                        }nd }t        ||f      S r$   )rI  r   rJ  r   )r=   psess      r5   r   zNameConstraints.__hash__  sR    "".16t7N7N1OBB!!-16t7M7M1NBBRH~r7   c                    | j                   S r$   )rG  rf   s    r5   rI  z"NameConstraints.permitted_subtrees  s     '''r7   c                    | j                   S r$   )rH  rf   s    r5   rJ  z!NameConstraints.excluded_subtrees  r  r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zNameConstraints.public_bytes  r   r7   N)rI  r   rJ  r   rG   rX   r   )rP  Iterable[GeneralName]rG   rX   r   rF   r   rg   )rZ   r[   r\   r   NAME_CONSTRAINTSrQ   rP   r   rF  rM  rN  r~   r   r   rI  rJ  r&   rI   r7   r5   rA  rA  6  s    

'
'C(48(4 8(4 
	(4T
&
 (	!( (
 '	!' '
6r7   rA  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   rx   r   _oid	_critical_value)r=   rQ   criticalry   s       r5   rP   zExtension.__init__  sL     #/0D  (D)>??	!r7   c                    | j                   S r$   rh  rf   s    r5   rQ   zExtension.oid      yyr7   c                    | j                   S r$   )ri  rf   s    r5   rk  zExtension.critical  r'  r7   c                    | j                   S r$   rj  rf   s    r5   ry   zExtension.value      {{r7   c                V    d| j                    d| j                   d| j                   dS )Nz<Extension(oid=z, critical=, value=r}   )rQ   rk  ry   rf   s    r5   r~   zExtension.__repr__  s2    dhhZ{4==/ BZZL$	
r7   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r$   )r%   rf  r   rQ   rk  ry   r   s     r5   r   zExtension.__eq__  sS    %+!! HH		! */*

ekk)	
r7   c                Z    t        | j                  | j                  | j                  f      S r$   )r   rQ   rk  ry   rf   s    r5   r   zExtension.__hash__  s     TXXt}}djj9::r7   N)rQ   r   rk  r   ry   r   rG   rX   r  r!  )rG   r   r   r   rF   )rZ   r[   r\   rP   r   rQ   rk  ry   r~   r   r   rI   r7   r5   rf  rf    sr    #/3<L	      

;r7   rf  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     r5   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)rn   r   rx   _general_namesr=   general_namess     r5   rP   zGeneralNames.__init__  s7    ]+E}EEA 
 ,r7   r{  c                     y r$   rI   r=   types     r5   get_values_for_typez GeneralNames.get_values_for_type       r7   c                     y r$   rI   r  s     r5   r  z GeneralNames.get_values_for_type       r7   c                     y r$   rI   r  s     r5   r  z GeneralNames.get_values_for_type       "%r7   c                     y r$   rI   r  s     r5   r  z GeneralNames.get_values_for_type       !$r7   c                     y r$   rI   r  s     r5   r  z GeneralNames.get_values_for_type       r7   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   ir  s     r5   r   z3GeneralNames.get_values_for_type.<locals>.<genexpr>  s     7a:a#67s   )r   ry   rn   )r=   r  objsr  s    `  r5   r  z GeneralNames.get_values_for_type  s;    & 8479%)*AGG**Dz +s   ;c                "    d| j                    dS )Nz<GeneralNames(r}   r{  rf   s    r5   r~   zGeneralNames.__repr__  s     3 34B77r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   rx  r   r{  r   s     r5   r   zGeneralNames.__eq__  s)    %.!!""e&:&:::r7   c                >    t        t        | j                              S r$   )r   r   r{  rf   s    r5   r   zGeneralNames.__hash__%  s    E$--.//r7   Nr}  rc  rG   rX   r  zBtype[DNSName] | type[UniformResourceIdentifier] | type[RFC822Name]rG   	list[str]r  ztype[DirectoryName]rG   z
list[Name]r  ztype[RegisteredID]rG   zlist[ObjectIdentifier]r  ztype[IPAddress]rG   zlist[_IPAddressTypes]r  ztype[OtherName]rG   zlist[OtherName]r  ztype[DNSName] | type[DirectoryName] | type[IPAddress] | type[OtherName] | type[RFC822Name] | type[RegisteredID] | type[UniformResourceIdentifier]rG   zYlist[_IPAddressTypes] | list[str] | list[OtherName] | list[Name] | list[ObjectIdentifier]r   r   rF   )rZ   r[   r\   rP   rJ   r   r   r   typingoverloadr  r~   r   r   rI   r7   r5   rx  rx    s   , &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 *	!08;0r7   rx  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$   rx  r{  r|  s     r5   rP   zSubjectAlternativeName.__init__,      *=9r7   r{  c                     y r$   rI   r  s     r5   r  z*SubjectAlternativeName.get_values_for_type1  r  r7   c                     y r$   rI   r  s     r5   r  z*SubjectAlternativeName.get_values_for_type9  r  r7   c                     y r$   rI   r  s     r5   r  z*SubjectAlternativeName.get_values_for_type?  r  r7   c                     y r$   rI   r  s     r5   r  z*SubjectAlternativeName.get_values_for_typeE  r  r7   c                     y r$   rI   r  s     r5   r  z*SubjectAlternativeName.get_values_for_typeJ  r  r7   c                8    | j                   j                  |      S r$   r{  r  r  s     r5   r  z*SubjectAlternativeName.get_values_for_typeO        ""66t<<r7   c                "    d| j                    dS )Nz<SubjectAlternativeName(r}   r  rf   s    r5   r~   zSubjectAlternativeName.__repr__a  s    )$*=*=)>bAAr7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r{  r   s     r5   r   zSubjectAlternativeName.__eq__d  s*    %!78!!""e&:&:::r7   c                ,    t        | j                        S r$   r   r{  rf   s    r5   r   zSubjectAlternativeName.__hash__j      D''((r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z#SubjectAlternativeName.public_bytesm  r   r7   Nr  r  r  r  r  r  r  r   r   rF   rg   )rZ   r[   r\   r   SUBJECT_ALTERNATIVE_NAMErQ   rP   rJ   r   r   r   r  r  r  r~   r   r   r&   rI   r7   r5   r  r  )  s"   

/
/C: &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 =*=	!=$B;)6r7   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  r|  s     r5   rP   zIssuerAlternativeName.__init__t  r  r7   r{  c                     y r$   rI   r  s     r5   r  z)IssuerAlternativeName.get_values_for_typey  r  r7   c                     y r$   rI   r  s     r5   r  z)IssuerAlternativeName.get_values_for_type  r  r7   c                     y r$   rI   r  s     r5   r  z)IssuerAlternativeName.get_values_for_type  r  r7   c                     y r$   rI   r  s     r5   r  z)IssuerAlternativeName.get_values_for_type  r  r7   c                     y r$   rI   r  s     r5   r  z)IssuerAlternativeName.get_values_for_type  r  r7   c                8    | j                   j                  |      S r$   r  r  s     r5   r  z)IssuerAlternativeName.get_values_for_type  r  r7   c                "    d| j                    dS )Nz<IssuerAlternativeName(r}   r  rf   s    r5   r~   zIssuerAlternativeName.__repr__  s    ()<)<(=R@@r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r{  r   s     r5   r   zIssuerAlternativeName.__eq__  s*    %!67!!""e&:&:::r7   c                ,    t        | j                        S r$   r  rf   s    r5   r   zIssuerAlternativeName.__hash__  r  r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z"IssuerAlternativeName.public_bytes  r   r7   Nr  r  r  r  r  r  r  r   r   rF   rg   )rZ   r[   r\   r   ISSUER_ALTERNATIVE_NAMErQ   rP   rJ   r   r   r   r  r  r  r~   r   r   r&   rI   r7   r5   r  r  q  s"   

.
.C: &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 =*=	!=$A;)6r7   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  r|  s     r5   rP   zCertificateIssuer.__init__  r  r7   r{  c                     y r$   rI   r  s     r5   r  z%CertificateIssuer.get_values_for_type  r  r7   c                     y r$   rI   r  s     r5   r  z%CertificateIssuer.get_values_for_type  r  r7   c                     y r$   rI   r  s     r5   r  z%CertificateIssuer.get_values_for_type  r  r7   c                     y r$   rI   r  s     r5   r  z%CertificateIssuer.get_values_for_type  r  r7   c                     y r$   rI   r  s     r5   r  z%CertificateIssuer.get_values_for_type  r  r7   c                8    | j                   j                  |      S r$   r  r  s     r5   r  z%CertificateIssuer.get_values_for_type  r  r7   c                "    d| j                    dS )Nz<CertificateIssuer(r}   r  rf   s    r5   r~   zCertificateIssuer.__repr__  s    $T%8%8$9<<r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r{  r   s     r5   r   zCertificateIssuer.__eq__  s*    %!23!!""e&:&:::r7   c                ,    t        | j                        S r$   r  rf   s    r5   r   zCertificateIssuer.__hash__  r  r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zCertificateIssuer.public_bytes  r   r7   Nr  r  r  r  r  r  r  r   r   rF   rg   )rZ   r[   r\   r   CERTIFICATE_ISSUERrQ   rP   rJ   r   r   r   r  r  r  r~   r   r   r&   rI   r7   r5   r  r    s!   

1
1C: &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 =*=	!=$=;)6r7   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%   rQ  rx   _reason)r=   reasons     r5   rP   zCRLReason.__init__  s    &+.HIIr7   c                "    d| j                    dS )Nz<CRLReason(reason=r}   r  rf   s    r5   r~   zCRLReason.__repr__
  r  r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r  r   s     r5   r   zCRLReason.__eq__  s%    %+!!{{ell**r7   c                ,    t        | j                        S r$   )r   r  rf   s    r5   r   zCRLReason.__hash__  r   r7   c                    | j                   S r$   r  rf   s    r5   r  zCRLReason.reason  r   r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zCRLReason.public_bytes  r   r7   N)r  rQ  rG   rX   r   r   rF   )rG   rQ  rg   )rZ   r[   r\   r   
CRL_REASONrQ   rP   r~   r   r   r   r  r&   rI   r7   r5   r  r    s:    

)
)C5+!  6r7   r  c                  p    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)InvalidityDatec                \    t        |t        j                        st        d      || _        y )Nz+invalidity_date must be a datetime.datetime)r%   r3  rx   _invalidity_date)r=   invalidity_dates     r5   rP   zInvalidityDate.__init__!  s&    /8+<+<=IJJ /r7   c                "    d| j                    dS )Nz <InvalidityDate(invalidity_date=r}   r  rf   s    r5   r~   zInvalidityDate.__repr__'  s    1$2G2G1HKKr7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r  r   s     r5   r   zInvalidityDate.__eq__*  s)    %0!!##u'<'<<<r7   c                ,    t        | j                        S r$   )r   r  rf   s    r5   r   zInvalidityDate.__hash__0  s    D(())r7   c                    | j                   S r$   r  rf   s    r5   r  zInvalidityDate.invalidity_date3  r  r7   c                    | j                   j                  4| j                   j                  t        j                  j
                        S | j                   j                  t        j                  j
                        S )N)tzinfo)tz)r  r  replacer3  timezoneutc
astimezonerf   s    r5   invalidity_date_utcz"InvalidityDate.invalidity_date_utc7  s`      ''/((008I8I8M8M0NN((33x7H7H7L7L3MMr7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zInvalidityDate.public_bytes>  r   r7   N)r  datetime.datetimerG   rX   r   r   rF   )rG   r  rg   )rZ   r[   r\   r   INVALIDITY_DATErQ   rP   r~   r   r   r   r  r  r&   rI   r7   r5   r  r    sQ    

.
.C0L=* % % N N6r7   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     r5   r   zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>J         
 s67
r   YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamprn   r   rx   _signed_certificate_timestampsr=   signed_certificate_timestampss     r5   rP   z2PrecertificateSignedCertificateTimestamps.__init__E  D     )--J(K% 
4
 
 /  /L+r7   r  c                     dt        |        dS )Nz+<PrecertificateSignedCertificateTimestamps(r}   rn   rf   s    r5   r~   z2PrecertificateSignedCertificateTimestamps.__repr__X  s    <T$ZLKKr7   c                >    t        t        | j                              S r$   r   r   r  rf   s    r5   r   z2PrecertificateSignedCertificateTimestamps.__hash__[      E$==>??r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r  r   s     r5   r   z0PrecertificateSignedCertificateTimestamps.__eq__^  s1    %!JK!! //334	
r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z6PrecertificateSignedCertificateTimestamps.public_bytesg  r   r7   Nr  z$Iterable[SignedCertificateTimestamp]rG   rX   r   rF   r   rg   )rZ   r[   r\   r   %PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrQ   rP   rJ   r   r   r   r~   r   r   r&   rI   r7   r5   r  r  B  sS    

<
<CL'KL 
L &<(&"GX{L@
6r7   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     r5   r   z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>s  r  r   r  r  r  s     r5   rP   z$SignedCertificateTimestamps.__init__n  r  r7   r  c                     dt        |        dS )Nz<SignedCertificateTimestamps(r}   r  rf   s    r5   r~   z$SignedCertificateTimestamps.__repr__  s    .tDzl"==r7   c                >    t        t        | j                              S r$   r  rf   s    r5   r   z$SignedCertificateTimestamps.__hash__  r   r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r  r   s     r5   r   z"SignedCertificateTimestamps.__eq__  s1    %!<=!! //334	
r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z(SignedCertificateTimestamps.public_bytes  r   r7   Nr  r   rF   r   rg   )rZ   r[   r\   r   SIGNED_CERTIFICATE_TIMESTAMPSrQ   rP   rJ   r   r   r   r~   r   r   r&   rI   r7   r5   r  r  k  sR    

4
4CL'KL 
L &<(&"GX{>@
6r7   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%   rh   rx   _nonce)r=   nonces     r5   rP   zOCSPNonce.__init__  s    %'122r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r  r   s     r5   r   zOCSPNonce.__eq__  s%    %+!!zzU[[((r7   c                ,    t        | j                        S r$   )r   r  rf   s    r5   r   zOCSPNonce.__hash__  s    DJJr7   c                "    d| j                   dS )Nz<OCSPNonce(nonce=r}   )r  rf   s    r5   r~   zOCSPNonce.__repr__  s    "4::.33r7   c                    | j                   S r$   )r  rf   s    r5   r  zOCSPNonce.nonce  rr  r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zOCSPNonce.public_bytes  r   r7   N)r  rh   rG   rX   r   rF   r   rg   )rZ   r[   r\   r   NONCErQ   rP   r   r   r~   r   r  r&   rI   r7   r5   r  r    s:    

 
 C) 4  6r7   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     r5   r   z3OCSPAcceptableResponses.__init__.<locals>.<genexpr>  s     Fq:a!122Fs   z'All responses must be ObjectIdentifiers)rn   rX  rx   
_responses)r=   	responsess     r5   rP   z OCSPAcceptableResponses.__init__  s,    O	FIFFEFF#r7   c                `    t        |t              st        S | j                  |j                  k(  S r$   )r%   r  r   r  r   s     r5   r   zOCSPAcceptableResponses.__eq__  s(    %!89!!%"2"222r7   c                >    t        t        | j                              S r$   )r   r   r  rf   s    r5   r   z OCSPAcceptableResponses.__hash__  s    E$//*++r7   c                "    d| j                    dS )Nz#<OCSPAcceptableResponses(responses=r}   )r  rf   s    r5   r~   z OCSPAcceptableResponses.__repr__  s    4T__4ERHHr7   c                ,    t        | j                        S r$   )rA   r  rf   s    r5   r   z OCSPAcceptableResponses.__iter__  r   r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z$OCSPAcceptableResponses.public_bytes  r   r7   N)r  r  rG   rX   r   rF   r   )rG   zIterator[ObjectIdentifier]rg   )rZ   r[   r\   r   ACCEPTABLE_RESPONSESrQ   rP   r   r   r~   r   r&   rI   r7   r5   r  r    s,    

/
/C$3,I%6r7   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           	     x   |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$   rP  r   s     r5   r   z4IssuingDistributionPoint.__init__.<locals>.<genexpr>  rE  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.r  z}Only one of the following can be set to True: only_contains_user_certs, only_contains_ca_certs, 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.)rn   r%   rR  r   rx   rQ  rS  rT  r   r   r:   rX  _only_contains_user_certs_only_contains_ca_certs_indirect_crl_only_contains_attribute_certs_only_some_reasonsrU  rV  )
r=   rY  rZ  only_contains_user_certsonly_contains_ca_certsonly_some_reasonsindirect_crlonly_contains_attribute_certscrl_constraintsr   s
             r5   rP   z!IssuingDistributionPoint.__init__  sl     YI,i8M;LMML  ##'88**.??+  /6148<.8$?'  %")
 ?0aa01A50  (&-!

 %  *B&'=$).K+"3#+A 1s   D7D7c                    d| j                    d| j                   d| j                   d| j                   d| j                   d| j
                   d| j                   dS )	Nz$<IssuingDistributionPoint(full_name=z, relative_name=z, only_contains_user_certs=z, only_contains_ca_certs=z, only_some_reasons=z, indirect_crl=z , only_contains_attribute_certs=r}   )rY  rZ  r/  r0  r1  r2  r3  rf   s    r5   r~   z!IssuingDistributionPoint.__repr__&  s    24>>2B C!//0 1((,(E(E'F G&&*&A&A%B C!!%!7!7 8 9 --. /-112"6		
r7   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   rY  rZ  r/  r0  r1  r2  r3  r   s     r5   r   zIssuingDistributionPoint.__eq__2  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		
r7   c           	         t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  f      S r$   )r   rY  rZ  r/  r0  r1  r2  r3  rf   s    r5   r   z!IssuingDistributionPoint.__hash__A  sQ    ""--++&&!!22

 
	
r7   c                    | j                   S r$   rd  rf   s    r5   rY  z"IssuingDistributionPoint.full_nameN  re  r7   c                    | j                   S r$   rg  rf   s    r5   rZ  z&IssuingDistributionPoint.relative_nameR  r  r7   c                    | j                   S r$   )r*  rf   s    r5   r/  z1IssuingDistributionPoint.only_contains_user_certsV  s    ---r7   c                    | j                   S r$   )r+  rf   s    r5   r0  z/IssuingDistributionPoint.only_contains_ca_certsZ  r  r7   c                    | j                   S r$   )r.  rf   s    r5   r1  z*IssuingDistributionPoint.only_some_reasons^  r  r7   c                    | j                   S r$   )r,  rf   s    r5   r2  z%IssuingDistributionPoint.indirect_crld  r  r7   c                    | j                   S r$   )r-  rf   s    r5   r3  z6IssuingDistributionPoint.only_contains_attribute_certsh  s    222r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z%IssuingDistributionPoint.public_bytesl  r   r7   N)rY  r   rZ  rj  r/  r   r0  r   r1  rk  r2  r   r3  r   rG   rX   r   r   rF   r   rl  r!  rm  rg   )rZ   r[   r\   r   ISSUING_DISTRIBUTION_POINTrQ   rP   r~   r   r   r   rY  rZ  r/  r0  r1  r2  r3  r&   rI   r7   r5   r'  r'    s   

1
1CS,/S, 8S, #'	S,
 !%S, 9S, S, (,S, 
S,j



   # # . . , , '	&' '
 " " 3 36r7   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   rx   _template_idrH   _major_version_minor_version)r=   template_idmajor_versionminor_versions       r5   rP   zMSCertificateTemplate.__init__s  sc     +'78=>>'%j.L%j.LJ  ,+r7   c                    | j                   S r$   )rE  rf   s    r5   rH  z!MSCertificateTemplate.template_id  r  r7   c                    | j                   S r$   )rF  rf   s    r5   rI  z#MSCertificateTemplate.major_version  r  r7   c                    | j                   S r$   )rG  rf   s    r5   rJ  z#MSCertificateTemplate.minor_version  r  r7   c                V    d| j                    d| j                   d| j                   dS )Nz#<MSCertificateTemplate(template_id=z, major_version=z, minor_version=r}   )rH  rI  rJ  rf   s    r5   r~   zMSCertificateTemplate.__repr__  s?    1$2B2B1C D!//0 1!//04	
r7   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r$   )r%   rB  r   rH  rI  rJ  r   s     r5   r   zMSCertificateTemplate.__eq__  s`    %!67!!  1 11 :""e&9&99:""e&9&99	
r7   c                Z    t        | j                  | j                  | j                  f      S r$   )r   rH  rI  rJ  rf   s    r5   r   zMSCertificateTemplate.__hash__  s&    T%%t'9'94;M;MNOOr7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   z"MSCertificateTemplate.public_bytes  r   r7   N)rH  r   rI  r   rJ  r   rG   rX   r  r   r   r   rF   rg   )rZ   r[   r\   r   MS_CERTIFICATE_TEMPLATErQ   rP   r   rH  rI  rJ  r~   r   r   r&   rI   r7   r5   rB  rB  p  s    

.
.C,%, ", "	,
 
,( ! ! # # # #

P6r7   rB  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)NamingAuthorityc                    |t        |t              st        d      |t        |t              st        d      |t        |t              st        d      || _        || _        || _        y )Nzid must be an ObjectIdentifierzurl must be a strztext must be a str)r%   r   rx   rW   _id_url_text)r=   idurltexts       r5   rP   zNamingAuthority.__init__  si     >*R1A"B<==?:c3#7/00JtS$9011	
r7   c                    | j                   S r$   )rV  rf   s    r5   rY  zNamingAuthority.id  r  r7   c                    | j                   S r$   )rW  rf   s    r5   rZ  zNamingAuthority.url  rn  r7   c                    | j                   S r$   )rX  rf   s    r5   r[  zNamingAuthority.text  s    zzr7   c                V    d| j                    d| j                   d| j                   dS )Nz<NamingAuthority(id=z, url=z, text=r}   )rY  rZ  r[  rf   s    r5   r~   zNamingAuthority.__repr__  s1    ''&
'$))B@	
r7   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r$   )r%   rT  r   rY  rZ  r[  r   s     r5   r   zNamingAuthority.__eq__  sS    %1!! GGuxx (EII%(		UZZ'	
r7   c                Z    t        | j                  | j                  | j                  f      S r$   )r   rY  rZ  r[  rf   s    r5   r   zNamingAuthority.__hash__  s)    		
 	
r7   N)rY  ObjectIdentifier | NonerZ  r  r[  r  rG   rX   )rG   rb  r  r   r   rF   )rZ   r[   r\   rP   r   rY  rZ  r[  r~   r   r   rI   r7   r5   rT  rT    sx    #  	
 
&      


r7   rT  c                      e Z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	ddZ
ddZdd	Zy
)ProfessionInfoc                   |t        |t              st        d      t        |      }t	        d |D              st        d      |(t        |      }t	        d |D              st        d      |t        |t
              st        d      |t        |t              st        d      || _        || _        || _	        || _
        || _        y )N*naming_authority must be a NamingAuthorityc              3  <   K   | ]  }t        |t                y wr$   )r%   rW   )r   items     r5   r   z*ProfessionInfo.__init__.<locals>.<genexpr>  s     FT:dC(Fr   z5Every item in the profession_items list must be a strc              3  <   K   | ]  }t        |t                y wr$   r  )r   rQ   s     r5   r   z*ProfessionInfo.__init__.<locals>.<genexpr>  s      69
3 01r   zBEvery item in the profession_oids list must be an ObjectIdentifierz!registration_number must be a strz!add_profession_info must be bytes)r%   rT  rx   rn   r   rW   rh   _naming_authority_profession_items_profession_oids_registration_number_add_profession_info)r=   naming_authorityprofession_itemsprofession_oidsregistration_numberadd_profession_infos         r5   rP   zProfessionInfo.__init__  s     '
o1
 HII 01F5EFFG  &"?3O =L   ' 
 *:4
 ?@@*:4
 ?@@!1!1 /$7!$7!r7   c                    | j                   S r$   rj  rf   s    r5   ro  zProfessionInfo.naming_authority	  r  r7   c                    | j                   S r$   )rk  rf   s    r5   rp  zProfessionInfo.profession_items	  r  r7   c                    | j                   S r$   )rl  rf   s    r5   rq  zProfessionInfo.profession_oids	  r  r7   c                    | j                   S r$   )rm  rf   s    r5   rr  z"ProfessionInfo.registration_number	      (((r7   c                    | j                   S r$   )rn  rf   s    r5   rs  z"ProfessionInfo.add_profession_info#	  ry  r7   c                    d| j                    d| j                   d| j                   d| j                   d| j                  dS )Nz!<ProfessionInfo(naming_authority=z, profession_items=z, profession_oids=z, registration_number=z, add_profession_info=r}   )ro  rp  rq  rr  rs  rf   s    r5   r~   zProfessionInfo.__repr__'	  sb    /0E0E/F G  $ 5 56 7#334 5##'#;#;"< =##'#;#;">b	B	
r7   c                8   t        |t              st        S | 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%   rd  r   ro  rp  rq  rr  rs  r   s     r5   r   zProfessionInfo.__eq__0	  s    %0!! !!U%;%;; F%%)?)??F$$(=(==F ((E,E,EEF ((E,E,EE	
r7   c                    | j                   t        | j                         }nd }t        | j                  t        | j                        || j
                  | j                  f      S r$   )rq  r   r   ro  rp  rr  rs  )r=   rq  s     r5   r   zProfessionInfo.__hash__<	  sa    +#D$8$89O"O%%d++,((((
 	
r7   N)ro  NamingAuthority | Nonerp  zIterable[str]rq  z!Iterable[ObjectIdentifier] | Nonerr  r  rs  r   rG   rX   rG   r~  )rG   r  )rG   zlist[ObjectIdentifier] | Noner  r   r   r   rF   )rZ   r[   r\   rP   r   ro  rp  rq  rr  rs  r~   r   r   rI   r7   r5   rd  rd    s    +80+8 (+8 ;	+8
 (+8 *+8 
+8Z & & & & % % ) ) ) )



r7   rd  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)	Admissionc                    |t        |t              st        d      |t        |t              st        d      t	        |      }t        d |D              st        d      || _        || _        || _        y )Nz)admission_authority must be a GeneralNamerf  c              3  <   K   | ]  }t        |t                y wr$   )r%   rd  )r   infos     r5   r   z%Admission.__init__.<locals>.<genexpr>^	  s      
15Jt^,
r   z@Every item in the profession_infos list must be a ProfessionInfo)	r%   r   rx   rT  rn   r   _admission_authorityrj  _profession_infos)r=   admission_authorityro  profession_infoss       r5   rP   zAdmission.__init__M	  s     *:4
 GHH'
o1
 HII 01 
9I
 
 ! 
 %8!!1!1r7   c                    | j                   S r$   )r  rf   s    r5   r  zAdmission.admission_authorityj	  ry  r7   c                    | j                   S r$   ru  rf   s    r5   ro  zAdmission.naming_authorityn	  r  r7   c                    | j                   S r$   )r  rf   s    r5   r  zAdmission.profession_infosr	  r  r7   c                V    d| j                    d| j                   d| j                   dS )Nz<Admission(admission_authority=z, naming_authority=z, profession_infos=r}   )r  ro  r  rf   s    r5   r~   zAdmission.__repr__v	  s?    -d.F.F-G H  $ 5 56 7  $ 5 56b:	
r7   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  ro  r  r   s     r5   r   zAdmission.__eq__}	  sa    %+!! $$(A(AA @%%)?)??@%%)?)??	
r7   c                l    t        | j                  | j                  t        | j                        f      S r$   )r   r  ro  r   r  rf   s    r5   r   zAdmission.__hash__	  s4    ((%%d++,
 	
r7   N)r  GeneralName | Nonero  r~  r  zIterable[ProfessionInfo]rG   rX   rG   r  r  )rG   zlist[ProfessionInfo]r   r   rF   )rZ   r[   r\   rP   r   r  ro  r  r~   r   r   rI   r7   r5   r  r  L	  sx    2/2 12 3	2
 
2: ) ) & & & &


r7   r  c                      e Zd Zej                  Z	 	 	 	 	 	 d	dZ ed      \  ZZ	Z
ed
d       ZddZddZddZddZy)
Admissionsc                    |t        |t              st        d      t        |      }t	        d |D              st        d      || _        || _        y )Nzauthority must be a GeneralNamec              3  <   K   | ]  }t        |t                y wr$   )r%   r  )r   	admissions     r5   r   z&Admissions.__init__.<locals>.<genexpr>	  s      
1:Jy),
r   zBEvery item in the contents_of_admissions list must be an Admission)r%   r   rx   rn   r   
_authority_admissions)r=   	authority
admissionss      r5   rP   zAdmissions.__init__	  sc    
  I{)K=>>*%
 
>H
 
  
 $%r7   r  c                    | j                   S r$   )r  rf   s    r5   r  zAdmissions.authority	  re  r7   c                <    d| j                    d| j                   dS )Nz<Admissions(authority=z, admissions=r}   )r  r  rf   s    r5   r~   zAdmissions.__repr__	  s+    $T__$5 6**+2/	
r7   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r%   r  r   r  r  r   s     r5   r   zAdmissions.__eq__	  sB    %,!! NNeoo- 6  E$5$55	
r7   c                V    t        | j                  t        | j                        f      S r$   )r   r  r   r  rf   s    r5   r   zAdmissions.__hash__	  s!    T^^U4+;+;%<=>>r7   c                ,    t        j                  |       S r$   r   rf   s    r5   r&   zAdmissions.public_bytes	  r   r7   N)r  r  r  zIterable[Admission]rG   rX   r  r   r   rF   rg   )rZ   r[   r\   r   
ADMISSIONSrQ   rP   rJ   r   r   r   r   r  r~   r   r   r&   rI   r7   r5   r  r  	  sg    

!
!C&%& (& 
	&( &<M%J"GX{ 

?6r7   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)rw   c                V    t        |t              st        d      || _        || _        y )NrD  )r%   r   rx   rh  rj  )r=   rQ   ry   s      r5   rP   zUnrecognizedExtension.__init__	  s'    #/0=>>	r7   c                    | j                   S r$   rm  rf   s    r5   rQ   zUnrecognizedExtension.oid	  rn  r7   c                    | j                   S r$   rq  rf   s    r5   ry   zUnrecognizedExtension.value	  rr  r7   c                <    d| j                    d| j                  dS )Nz<UnrecognizedExtension(oid=rt  r}   )rQ   ry   rf   s    r5   r~   zUnrecognizedExtension.__repr__	  s    ,TXXJhtzznBOOr7   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r$   )r%   rw   r   rQ   ry   r   s     r5   r   zUnrecognizedExtension.__eq__	  s8    %!67!!xx599$Bu{{)BBr7   c                D    t        | j                  | j                  f      S r$   )r   rQ   ry   rf   s    r5   r   zUnrecognizedExtension.__hash__	  s    TXXtzz*++r7   c                    | j                   S r$   )ry   rf   s    r5   r&   z"UnrecognizedExtension.public_bytes	  s    zzr7   N)rQ   r   ry   rh   rG   rX   r  rg   r   r   rF   )rZ   r[   r\   rP   r   rQ   ry   r~   r   r   r&   rI   r7   r5   rw   rw   	  sE        PC,r7   rw   )r2   r   rG   rh   )r>   rW   )u
__future__r   abcr3  r/   rS  r  collections.abcr   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   r6   rJ   	ExceptionrL   ra   ABCMetar    rl   r   r   r   r   r   r   r  r$  r-  rC  r1  EnumrQ  rx  ry  rz  rr  r{  r|  r}  r~  _REASON_BIT_MAPPING_CRLREASONFLAGSrS  rT  _CRL_ENTRY_REASON_ENUM_TO_CODEr  r  r  r  r  r  r  r  r  r  ry   _TLS_FEATURE_TYPE_TO_ENUMr  r  r1  rA  Genericrf  rx  r  r  r  r  r  r  r  r  r  r'  rB  rT  rd  r  r  rw   )r   s   0r5   <module>r     sP  
 # 
     .  3 @ G O F
 
 
 C  "6>>o 
')'
'0
3 	 	
ckk 	
"3 "3J6 6:i6] i6X!6= !6H6 6>6} 6>%% %%P+6} +6\6 6:"6M "6J"6- "6Jh  h V
&%** 
&4 !!  &&))##&&  	  q##QA&&  !##Qq	0 Qq##QA&&  !##Qr" >6 >6B6- 6<6' 6'r(# (#V%$ %$P6} 6<6- 6&6M 6&6 6DUZZ  2@@AQWWaZ@ 6} 6@B6} B6J>6M >6Bp6m p6f-;/0 -;`M0 M0`E6] E6PE6M E6PE6 E6P6 6:!6] !6H&6 &6R&6- &6R6 6:6m 6:_6} _6D86M 86v7
 7
td
 d
NB
 B
J06 06fM o+ As   P'