
    Wwg~)                   2   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dl	mZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*  ejV                  ddd      Z,	 	 	 	 d}dZ-d~dZ. G d de/      Z0 G d de/      Z1 G d dejd                        Z3 G d d      Z4 G d de3      Z5 G d de3      Z6 G d  d!e3      Z7 G d" d#e3      Z8 G d$ d%e3      Z9 G d& d'      Z: G d( d)e3      Z; G d* d+e3      Z< G d, d-e3      Z= G d. d/e3      Z> G d0 d1      Z? G d2 d3ej                        ZAeAj                  eAj                  eAj                  eAj                  eAj                  eAj                  eAj                  eAj                  d4ZJeAj                  d5eAj                  d6eAj                  d7eAj                  d8eAj                  d9eAj                  d:eAj                  d;eAj                  d<iZKeAj                  d eAj                  d5eAj                  d6eAj                  d7eAj                  d8eAj                  d9eAj                  d:eAj                  d<eAj                  d=eAj                  d>i
ZN G d? d@e3      ZO G dA dBe3      ZP G dC dD      ZQ G dE dF      ZR G dG dH      ZS G dI dJe3      ZT G dK dLe3      ZU G dM dNe3      ZV G dO dPe3      ZW G dQ dRej                        ZXeXD  ci c]  } | j                  |  c} ZZ G dS dTe3      Z[ G dU dVe3      Z\ G dW dXe3      Z] G dY dZej                  e,         Z_ G d[ d\      Z` G d] d^e3      Za G d_ d`e3      Zb G da dbe3      Zc G dc dde3      Zd G de dfe3      Ze G dg dhe3      Zf G di dje3      Zg G dk dle3      Zh G dm dne3      Zi G do dpe3      Zj G dq dre3      Zk G ds dt      Zl G du dv      Zm G dw dx      Zn G dy dze3      Zo G d{ d|e3      Zpyc c} w )    )annotationsN)utils)asn1)x509)constant_timeserialization)EllipticCurvePublicKey)RSAPublicKey)CertificateIssuerPublicKeyTypesCertificatePublicKeyTypes)SignedCertificateTimestamp)	DirectoryNameDNSNameGeneralName	IPAddress	OtherNameRegisteredID
RFC822NameUniformResourceIdentifier_IPAddressTypes)NameRelativeDistinguishedName)CRLEntryExtensionOIDExtensionOIDObjectIdentifierOCSPExtensionOIDExtensionTypeVarExtensionTypeT)bound	covariantc                B   t        | t              rC| j                  t        j                  j
                  t        j                  j                        }nt        | t              rC| j                  t        j                  j                  t        j                  j                        }nW| j                  t        j                  j
                  t        j                  j                        }t        j                  |      }t        j                  |      j!                         S N)
isinstancer
   public_bytesr   EncodingDERPublicFormatPKCS1r	   X962UncompressedPointSubjectPublicKeyInfor   parse_spki_for_datahashlibsha1digest)
public_keydata
serializeds      S/var/www/horilla/myenv/lib/python3.12/site-packages/cryptography/x509/extensions.py_key_identifier_from_public_keyr4   2   s     *l+&&""&&&&,,
 
J 6	7&&""''&&88
  ,,""&&&&;;

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

 - - , ,6r5   r  c                  d    e Zd Zej                  ZddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)CertificatePoliciesc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   )r#   PolicyInformationr   s     r3   r   z/CertificatePolicies.__init__.<locals>.<genexpr>=  s     F:a!23Fr   z;Every item in the policies list must be a PolicyInformation)rl   r   rv   	_policies)r;   policiess     r3   rN   zCertificatePolicies.__init__;  s4    >FXFF$ 
 "r5   r  c                "    d| j                    dS )Nz<CertificatePolicies(r{   )r  rd   s    r3   r|   zCertificatePolicies.__repr__G      &t~~&6b99r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zCertificatePolicies.__eq__J  s&    %!45!!~~00r5   c                >    t        t        | j                              S r"   )r   r   r  rd   s    r3   r   zCertificatePolicies.__hash__P      E$..)**r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   z CertificatePolicies.public_bytesS  r   r5   N)r  z"typing.Iterable[PolicyInformation]rE   rV   r}   r   rD   re   )rX   rY   rZ   r   CERTIFICATE_POLICIESrO   rN   rH   r~   r   r   r|   r   r   r$   rG   r5   r3   r  r  8  s9    

+
+C" &<K%H"GX{:1+6r5   r  c                  `    e Zd Z	 	 	 	 	 	 ddZd	dZd
dZddZedd       Ze	 	 dd       Z	y)r  c                    t        |t              st        d      || _        |(t	        |      }t        d |D              st        d      || _        y )Nz-policy_identifier must be an ObjectIdentifierc              3  H   K   | ]  }t        |t        t        f        y wr"   )r#   rU   
UserNoticer   s     r3   r   z-PolicyInformation.__init__.<locals>.<genexpr>d  s!      56
1sJ/0s    "zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r#   r   rv   _policy_identifierrl   r   _policy_qualifiers)r;   policy_identifierpolicy_qualifierss      r3   rN   zPolicyInformation.__init__X  si    
 +-=>KLL"3( $%6 7 :K   1 
 #4r5   c                <    d| j                    d| j                   dS )Nz%<PolicyInformation(policy_identifier=z, policy_qualifiers=r{   )r  r  rd   s    r3   r|   zPolicyInformation.__repr__n  s.    3D4J4J3K L!!%!7!7 8<	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r  r   r  r  r   s     r3   r   zPolicyInformation.__eq__t  sH    %!23!! ""e&=&== B&&%*A*AA	
r5   c                x    | j                   t        | j                         }nd }t        | j                  |f      S r"   )r  r   r   r  )r;   pqs     r3   r   zPolicyInformation.__hash__}  s9    !!-t--.BBT++R011r5   c                    | j                   S r"   )r  rd   s    r3   r  z#PolicyInformation.policy_identifier      &&&r5   c                    | j                   S r"   )r  rd   s    r3   r  z#PolicyInformation.policy_qualifiers       &&&r5   N)r  r   r  z(typing.Iterable[str | UserNotice] | NonerE   rV   r}   r   rD   r  )rE   zlist[str | UserNotice] | None)
rX   rY   rZ   rN   r|   r   r   r   r  r  rG   r5   r3   r  r  W  sc    4+4 D4 
	4,

2 ' ' '	&' 'r5   r  c                  \    e Zd Z	 	 	 	 	 	 ddZd	dZd
dZddZedd       Zedd       Z	y)r  c                Z    |rt        |t              st        d      || _        || _        y )Nz2notice_reference must be None or a NoticeReference)r#   NoticeReferencerv   _notice_reference_explicit_text)r;   notice_referenceexplicit_texts      r3   rN   zUserNotice.__init__  s7    
 Jo%
 D  "2+r5   c                <    d| j                    d| j                  dS )Nz<UserNotice(notice_reference=z, explicit_text=r{   )r  r  rd   s    r3   r|   zUserNotice.__repr__  s.    +D,A,A+B C!//2"6	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r  r   r  r  r   s     r3   r   zUserNotice.__eq__  sF    %,!! !!U%;%;; :""e&9&99	
r5   c                D    t        | j                  | j                  f      S r"   )r   r  r  rd   s    r3   r   zUserNotice.__hash__  s    T**D,>,>?@@r5   c                    | j                   S r"   )r  rd   s    r3   r  zUserNotice.notice_reference      %%%r5   c                    | j                   S r"   )r  rd   s    r3   r  zUserNotice.explicit_text  r  r5   N)r  NoticeReference | Noner  
str | NonerE   rV   r}   r   rD   )rE   r  rE   r  )
rX   rY   rZ   rN   r|   r   r   r   r  r  rG   r5   r3   r  r    s[    ,0, ", 
	,

A & & # #r5   r  c                  \    e Zd Z	 	 	 	 	 	 ddZd	dZd
dZddZedd       Zedd       Z	y)r  c                p    || _         t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   )r#   rF   r   s     r3   r   z+NoticeReference.__init__.<locals>.<genexpr>  s     >!:a%>r   z)notice_numbers must be a list of integers)_organizationrl   r   rv   _notice_numbers)r;   organizationnotice_numberss      r3   rN   zNoticeReference.__init__  s8    
 *n->~>>GHH-r5   c                <    d| j                   d| j                   dS )Nz<NoticeReference(organization=z, notice_numbers=r{   )r  r  rd   s    r3   r|   zNoticeReference.__repr__  s.    ,T->->,A B"112"6	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r  r   r  r  r   s     r3   r   zNoticeReference.__eq__  sF    %1!! !3!33 <##u';';;	
r5   c                V    t        | j                  t        | j                        f      S r"   )r   r  r   r  rd   s    r3   r   zNoticeReference.__hash__  s#    T&&d.A.A(BCDDr5   c                    | j                   S r"   )r  rd   s    r3   r  zNoticeReference.organization      !!!r5   c                    | j                   S r"   )r  rd   s    r3   r  zNoticeReference.notice_numbers  r   r5   N)r  r  r  ztyping.Iterable[int]rE   rV   r}   r   rD   r  )rE   z	list[int])
rX   rY   rZ   rN   r|   r   r   r   r  r  rG   r5   r3   r  r    s[    
. 
. -
. 
	
.

E " " $ $r5   r  c                  d    e Zd Zej                  ZddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)ExtendedKeyUsagec                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r#   r   r   s     r3   r   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>  s     Cq:a!12Cr   z9Every item in the usages list must be an ObjectIdentifier)rl   r   rv   _usages)r;   usagess     r3   rN   zExtendedKeyUsage.__init__  s2    fCFCCK  r5   r  c                "    d| j                    dS )Nz<ExtendedKeyUsage(r{   )r  rd   s    r3   r|   zExtendedKeyUsage.__repr__      #DLL>44r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zExtendedKeyUsage.__eq__  s&    %!12!!||u}},,r5   c                >    t        t        | j                              S r"   )r   r   r  rd   s    r3   r   zExtendedKeyUsage.__hash__  s    E$,,'((r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zExtendedKeyUsage.public_bytes  r   r5   N)r  !typing.Iterable[ObjectIdentifier]rE   rV   r}   r   rD   re   )rX   rY   rZ   r   EXTENDED_KEY_USAGErO   rN   rH   r~   r   r   r|   r   r   r$   rG   r5   r3   r  r    s9    

)
)C &<I%F"GX{5-)6r5   r  c                  D    e Zd Zej                  ZddZddZddZd	dZ	y)
OCSPNoCheckc                0    t        |t              st        S yNT)r#   r  r   r   s     r3   r   zOCSPNoCheck.__eq__  s    %-!!r5   c                     t        t              S r"   )r   r  rd   s    r3   r   zOCSPNoCheck.__hash__
  s    K  r5   c                     y)Nz<OCSPNoCheck()>rG   rd   s    r3   r|   zOCSPNoCheck.__repr__  s     r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zOCSPNoCheck.public_bytes  r   r5   Nr   rD   r}   re   )
rX   rY   rZ   r   OCSP_NO_CHECKrO   r   r   r|   r$   rG   r5   r3   r  r    s!    

$
$C!!6r5   r  c                  D    e Zd Zej                  ZddZddZddZd	dZ	y)
PrecertPoisonc                0    t        |t              st        S yr  )r#   r  r   r   s     r3   r   zPrecertPoison.__eq__  s    %/!!r5   c                     t        t              S r"   )r   r  rd   s    r3   r   zPrecertPoison.__hash__  s    M""r5   c                     y)Nz<PrecertPoison()>rG   rd   s    r3   r|   zPrecertPoison.__repr__   s    "r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zPrecertPoison.public_bytes#  r   r5   Nr   rD   r}   re   )
rX   rY   rZ   r   PRECERT_POISONrO   r   r   r|   r$   rG   r5   r3   r  r    s!    

%
%C##6r5   r  c                  d    e Zd Zej                  ZddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)
TLSFeaturec                ~    t        |      }t        d |D              rt        |      dk(  rt        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   )r#   TLSFeatureTyper   s     r3   r   z&TLSFeature.__init__.<locals>.<genexpr>-  s     DaJq.1Dr   r   z@features must be a list of elements from the TLSFeatureType enum)rl   r   r8   rv   	_features)r;   featuress     r3   rN   zTLSFeature.__init__*  s@    >D8DD8}! 
 "r5   r  c                "    d| j                    dS )Nz<TLSFeature(features=r{   )r  rd   s    r3   r|   zTLSFeature.__repr__9  r  r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zTLSFeature.__eq__<  s%    %,!!~~00r5   c                >    t        t        | j                              S r"   )r   r   r  rd   s    r3   r   zTLSFeature.__hash__B  r  r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zTLSFeature.public_bytesE  r   r5   N)r  ztyping.Iterable[TLSFeatureType]rE   rV   r}   r   rD   re   )rX   rY   rZ   r   TLS_FEATURErO   rN   rH   r~   r   r   r|   r   r   r$   rG   r5   r3   r  r  '  s9    

"
"C" &<K%H"GX{:1+6r5   r  c                      e Zd ZdZdZy)r  r     N)rX   rY   rZ   status_requeststatus_request_v2rG   r5   r3   r  r  I  s     N r5   r  c                  ^    e Zd Zej                  ZddZd	dZd
dZddZ	e
dd       ZddZy)InhibitAnyPolicyc                h    t        |t              st        d      |dk  rt        d      || _        y )Nzskip_certs must be an integerr   z)skip_certs must be a non-negative integer)r#   rF   rv   r   _skip_certs)r;   
skip_certss     r3   rN   zInhibitAnyPolicy.__init__Z  s3    *c*;<<>HII%r5   c                "    d| j                    dS )Nz<InhibitAnyPolicy(skip_certs=r{   )r  rd   s    r3   r|   zInhibitAnyPolicy.__repr__c  s    .t.?rBBr5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zInhibitAnyPolicy.__eq__f  s(    %!12!!%"2"222r5   c                ,    t        | j                        S r"   )r   r  rd   s    r3   r   zInhibitAnyPolicy.__hash__l  r   r5   c                    | j                   S r"   )r  rd   s    r3   r  zInhibitAnyPolicy.skip_certso  r   r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zInhibitAnyPolicy.public_bytess  r   r5   N)r  rF   rE   rV   r}   r   rD   re   )rX   rY   rZ   r   INHIBIT_ANY_POLICYrO   rN   r|   r   r   r   r  r$   rG   r5   r3   r  r  W  s;    

)
)C&C3%    6r5   r  c                     e Zd Zej                  Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZedd       Zedd       Z	edd       Z
edd       Zedd       Zedd       Zedd       Zedd	       Zedd
       ZddZddZddZddZy)KeyUsagec
                    |s|s|	rt        d      || _        || _        || _        || _        || _        || _        || _        || _        |	| _	        y )NzKencipher_only and decipher_only can only be true when key_agreement is true)
r   _digital_signature_content_commitment_key_encipherment_data_encipherment_key_agreement_key_cert_sign	_crl_sign_encipher_only_decipher_only)
r;   digital_signaturecontent_commitmentkey_enciphermentdata_enciphermentkey_agreementkey_cert_signcrl_signencipher_onlydecipher_onlys
             r3   rN   zKeyUsage.__init__z  sf     -=( 
 #4#5 !1"3++!++r5   c                    | j                   S r"   )r  rd   s    r3   r  zKeyUsage.digital_signature  r  r5   c                    | j                   S r"   )r  rd   s    r3   r  zKeyUsage.content_commitment  s    '''r5   c                    | j                   S r"   )r  rd   s    r3   r  zKeyUsage.key_encipherment  r  r5   c                    | j                   S r"   )r  rd   s    r3   r  zKeyUsage.data_encipherment  r  r5   c                    | j                   S r"   )r  rd   s    r3   r  zKeyUsage.key_agreement  r  r5   c                    | j                   S r"   )r  rd   s    r3   r  zKeyUsage.key_cert_sign  r  r5   c                    | j                   S r"   )r  rd   s    r3   r  zKeyUsage.crl_sign      ~~r5   c                H    | j                   st        d      | j                  S )Nz7encipher_only is undefined unless key_agreement is true)r  r   r  rd   s    r3   r  zKeyUsage.encipher_only  )    !!I  &&&r5   c                H    | j                   st        d      | j                  S )Nz7decipher_only is undefined unless key_agreement is true)r  r   r  rd   s    r3   r  zKeyUsage.decipher_only  r'  r5   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      r3   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     r3   r   zKeyUsage.__eq__  s    %*!! ""e&=&== <''5+C+CC<%%)?)??< &&%*A*AA< ""e&9&99	<
 ""e&9&99< /< ##u';';;< ##u';';;
	
r5   c                    t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  f	      S r"   )
r   r  r  r  r  r  r  r  r  r  rd   s    r3   r   zKeyUsage.__hash__  sc    &&''%%&&""""####

 	
r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zKeyUsage.public_bytes  r   r5   N)r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   rE   rV   r  r}   r   rD   re   )rX   rY   rZ   r   	KEY_USAGErO   rN   r   r  r  r  r  r  r  r  r  r  r|   r   r   r$   rG   r5   r3   r
  r
  w  s<   

 
 C,, !, 	,
  , , , , , , 
,8 ' ' ( ( & & ' ' # # # #   ' ' ' '
*
 
6r5   r
  c                      e Zd Zej                  Z	 	 	 	 	 	 ddZddZddZddZ	ddZ
ddZddZe	 	 dd       Ze	 	 dd	       Zdd
Zy)NameConstraintsc                ^   |Ft        |      }|st        d      t        d |D              st        d      | j	                  |       |Ft        |      }|st        d      t        d |D              st        d      | j	                  |       ||t        d      || _        || _        y )Nz3permitted_subtrees must be a non-empty list or Nonec              3  <   K   | ]  }t        |t                y wr"   r   r   s     r3   r   z+NameConstraints.__init__.<locals>.<genexpr>
  s     Naz![1Nr   z@permitted_subtrees must be a list of GeneralName objects or Nonez2excluded_subtrees must be a non-empty list or Nonec              3  <   K   | ]  }t        |t                y wr"   r   r   s     r3   r   z+NameConstraints.__init__.<locals>.<genexpr>       Maz![1Mr   z?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)rl   r   r   rv   _validate_tree_permitted_subtrees_excluded_subtrees)r;   permitted_subtreesexcluded_subtreess      r3   rN   zNameConstraints.__init__  s    
 )!%&8!9% I  N;MNN 
  23( $%6 7$ H  M;LMM 
  12%*;*C# 
 $6 "3r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r/  r   r8  r7  r   s     r3   r   zNameConstraints.__eq__)  sG    %1!! ""e&=&== D''5+C+CC	
r5   c                H    | j                  |       | j                  |       y r"   )_validate_ip_name_validate_dns_namer;   trees     r3   r4  zNameConstraints._validate_tree2  s    t$%r5   c                >    t        d |D              rt        d      y )Nc              3     K   | ]K  }t        |t              xr5 t        |j                  t        j                  t        j
                  f        M y wr"   )r#   r   rw   	ipaddressIPv4NetworkIPv6Networkr   names     r3   r   z4NameConstraints._validate_ip_name.<locals>.<genexpr>7  sR      

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

Y22I4I4IJ 
s   AAzGIPAddress name constraints must be an IPv4Network or IPv6Network object)anyrv   r=  s     r3   r;  z!NameConstraints._validate_ip_name6  s2     

 
 
 & 
r5   c                >    t        d |D              rt        d      y )Nc              3  \   K   | ]$  }t        |t              xr d |j                  v  & yw)*N)r#   r   rw   rD  s     r3   r   z5NameConstraints._validate_dns_name.<locals>.<genexpr>D  s-      
@DJtW%;#*;;
s   *,zDDNSName name constraints must not contain the '*' wildcard character)rF  r   r=  s     r3   r<  z"NameConstraints._validate_dns_nameC  s0     
HL
 
  
r5   c                <    d| j                    d| j                   dS )Nz$<NameConstraints(permitted_subtrees=z, excluded_subtrees=r{   )r7  r8  rd   s    r3   r|   zNameConstraints.__repr__L  s.    243J3J2K L!!%!7!7 8<	
r5   c                    | j                   t        | j                         }nd }| j                  t        | j                        }nd }t        ||f      S r"   )r7  r   r8  r   )r;   psess      r3   r   zNameConstraints.__hash__R  sR    "".16t7N7N1OBB!!-16t7M7M1NBBRH~r5   c                    | j                   S r"   )r5  rd   s    r3   r7  z"NameConstraints.permitted_subtrees_  s     '''r5   c                    | j                   S r"   )r6  rd   s    r3   r8  z!NameConstraints.excluded_subtreese  r  r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zNameConstraints.public_bytesk  r   r5   N)r7  r   r8  r   rE   rV   r   )r>  typing.Iterable[GeneralName]rE   rV   r}   rD   r   re   )rX   rY   rZ   r   NAME_CONSTRAINTSrO   rN   r   r4  r;  r<  r|   r   r   r7  r8  r$   rG   r5   r3   r/  r/    s    

'
'C(4?(4 ?(4 
	(4T
&
 (	!( (
 '	!' '
6r5   r/  c                  r    e Zd Z	 	 	 	 	 	 	 	 d	dZed
d       Zedd       Zedd       ZddZddZ	ddZ
y)	Extensionc                    t        |t              st        d      t        |t              st        d      || _        || _        || _        y )Nz2oid argument must be an ObjectIdentifier instance.z critical must be a boolean value)r#   r   rv   r   _oid	_critical_value)r;   rO   criticalrw   s       r3   rN   zExtension.__init__p  sL     #/0D  (D)>??	!r5   c                    | j                   S r"   rV  rd   s    r3   rO   zExtension.oid      yyr5   c                    | j                   S r"   )rW  rd   s    r3   rY  zExtension.critical  r%  r5   c                    | j                   S r"   rX  rd   s    r3   rw   zExtension.value      {{r5   c                V    d| j                    d| j                   d| j                   dS )Nz<Extension(oid=z, critical=, value=r{   )rO   rY  rw   rd   s    r3   r|   zExtension.__repr__  s2    dhhZ{4==/ BZZL$	
r5   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r"   )r#   rT  r   rO   rY  rw   r   s     r3   r   zExtension.__eq__  sS    %+!! HH		! */*

ekk)	
r5   c                Z    t        | j                  | j                  | j                  f      S r"   )r   rO   rY  rw   rd   s    r3   r   zExtension.__hash__  s     TXXt}}djj9::r5   N)rO   r   rY  r   rw   r   rE   rV   r  r  )rE   r   r}   r   rD   )rX   rY   rZ   rN   r   rO   rY  rw   r|   r   r   rG   r5   r3   rT  rT  o  sr    #/3<L	      

;r5   rT  c                  :   e Zd ZddZ ed      \  ZZZej                  	 	 	 	 dd       Z
ej                  	 	 	 	 dd       Z
ej                  	 	 	 	 dd       Z
ej                  	 	 	 	 dd       Z
ej                  	 	 	 	 dd       Z
	 	 	 	 ddZ
dd	Zdd
ZddZy)GeneralNamesc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r   r   s     r3   r   z(GeneralNames.__init__.<locals>.<genexpr>  s     E!:a-Er   z^Every item in the general_names list must be an object conforming to the GeneralName interface)rl   r   rv   _general_namesr;   general_namess     r3   rN   zGeneralNames.__init__  s7    ]+E}EEA 
 ,r5   ri  c                     y r"   rG   r;   types     r3   get_values_for_typez GeneralNames.get_values_for_type       r5   c                     y r"   rG   rm  s     r3   ro  z GeneralNames.get_values_for_type       r5   c                     y r"   rG   rm  s     r3   ro  z GeneralNames.get_values_for_type       "%r5   c                     y r"   rG   rm  s     r3   ro  z GeneralNames.get_values_for_type       !$r5   c                     y r"   rG   rm  s     r3   ro  z GeneralNames.get_values_for_type       r5   c                    fd| D        }t         k7  r|D cg c]  }|j                   c}S t        |      S c c}w )Nc              3  <   K   | ]  }t        |      s|  y wr"   )r#   )r   irn  s     r3   r   z3GeneralNames.get_values_for_type.<locals>.<genexpr>  s     7a:a#67s   )r   rw   rl   )r;   rn  objsr{  s    `  r3   ro  z GeneralNames.get_values_for_type  s;    & 8479%)*AGG**Dz +s   ;c                "    d| j                    dS )Nz<GeneralNames(r{   ri  rd   s    r3   r|   zGeneralNames.__repr__  s     3 34B77r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   rf  r   ri  r   s     r3   r   zGeneralNames.__eq__  s)    %.!!""e&:&:::r5   c                >    t        t        | j                              S r"   )r   r   ri  rd   s    r3   r   zGeneralNames.__hash__  s    E$--.//r5   Nrk  rQ  rE   rV   rn  zBtype[DNSName] | type[UniformResourceIdentifier] | type[RFC822Name]rE   	list[str]rn  ztype[DirectoryName]rE   z
list[Name]rn  ztype[RegisteredID]rE   zlist[ObjectIdentifier]rn  ztype[IPAddress]rE   zlist[_IPAddressTypes]rn  ztype[OtherName]rE   zlist[OtherName]rn  ztype[DNSName] | type[DirectoryName] | type[IPAddress] | type[OtherName] | type[RFC822Name] | type[RegisteredID] | type[UniformResourceIdentifier]rE   zYlist[_IPAddressTypes] | list[str] | list[OtherName] | list[Name] | list[ObjectIdentifier]r}   r   rD   )rX   rY   rZ   rN   rH   r~   r   r   typingoverloadro  r|   r   r   rG   r5   r3   rf  rf    s   , &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 *	!08;0r5   rf  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"   rf  ri  rj  s     r3   rN   zSubjectAlternativeName.__init__      *=9r5   ri  c                     y r"   rG   rm  s     r3   ro  z*SubjectAlternativeName.get_values_for_type  rp  r5   c                     y r"   rG   rm  s     r3   ro  z*SubjectAlternativeName.get_values_for_type  rr  r5   c                     y r"   rG   rm  s     r3   ro  z*SubjectAlternativeName.get_values_for_type  rt  r5   c                     y r"   rG   rm  s     r3   ro  z*SubjectAlternativeName.get_values_for_type  rv  r5   c                     y r"   rG   rm  s     r3   ro  z*SubjectAlternativeName.get_values_for_type  rx  r5   c                8    | j                   j                  |      S r"   ri  ro  rm  s     r3   ro  z*SubjectAlternativeName.get_values_for_type        ""66t<<r5   c                "    d| j                    dS )Nz<SubjectAlternativeName(r{   r~  rd   s    r3   r|   zSubjectAlternativeName.__repr__'  s    )$*=*=)>bAAr5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   ri  r   s     r3   r   zSubjectAlternativeName.__eq__*  s*    %!78!!""e&:&:::r5   c                ,    t        | j                        S r"   r   ri  rd   s    r3   r   zSubjectAlternativeName.__hash__0      D''((r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   z#SubjectAlternativeName.public_bytes3  r   r5   Nr  r  r  r  r  r  r  r}   r   rD   re   )rX   rY   rZ   r   SUBJECT_ALTERNATIVE_NAMErO   rN   rH   r~   r   r   r  r  ro  r|   r   r   r$   rG   r5   r3   r  r    s"   

/
/C: &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 =*=	!=$B;)6r5   r  c                  Z   e Zd Zej                  ZddZ ed      \  ZZ	Z
ej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Z	 	 	 	 ddZdd	Zdd
ZddZddZy)IssuerAlternativeNamec                $    t        |      | _        y r"   r  rj  s     r3   rN   zIssuerAlternativeName.__init__:  r  r5   ri  c                     y r"   rG   rm  s     r3   ro  z)IssuerAlternativeName.get_values_for_type?  rp  r5   c                     y r"   rG   rm  s     r3   ro  z)IssuerAlternativeName.get_values_for_typeG  rr  r5   c                     y r"   rG   rm  s     r3   ro  z)IssuerAlternativeName.get_values_for_typeM  rt  r5   c                     y r"   rG   rm  s     r3   ro  z)IssuerAlternativeName.get_values_for_typeS  rv  r5   c                     y r"   rG   rm  s     r3   ro  z)IssuerAlternativeName.get_values_for_typeX  rx  r5   c                8    | j                   j                  |      S r"   r  rm  s     r3   ro  z)IssuerAlternativeName.get_values_for_type]  r  r5   c                "    d| j                    dS )Nz<IssuerAlternativeName(r{   r~  rd   s    r3   r|   zIssuerAlternativeName.__repr__o  s    ()<)<(=R@@r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   ri  r   s     r3   r   zIssuerAlternativeName.__eq__r  s*    %!67!!""e&:&:::r5   c                ,    t        | j                        S r"   r  rd   s    r3   r   zIssuerAlternativeName.__hash__x  r  r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   z"IssuerAlternativeName.public_bytes{  r   r5   Nr  r  r  r  r  r  r  r}   r   rD   re   )rX   rY   rZ   r   ISSUER_ALTERNATIVE_NAMErO   rN   rH   r~   r   r   r  r  ro  r|   r   r   r$   rG   r5   r3   r  r  7  s"   

.
.C: &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 =*=	!=$A;)6r5   r  c                  Z   e Zd Zej                  ZddZ ed      \  ZZ	Z
ej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Zej                  	 	 	 	 dd       Z	 	 	 	 ddZdd	Zdd
ZddZddZy)CertificateIssuerc                $    t        |      | _        y r"   r  rj  s     r3   rN   zCertificateIssuer.__init__  r  r5   ri  c                     y r"   rG   rm  s     r3   ro  z%CertificateIssuer.get_values_for_type  rp  r5   c                     y r"   rG   rm  s     r3   ro  z%CertificateIssuer.get_values_for_type  rr  r5   c                     y r"   rG   rm  s     r3   ro  z%CertificateIssuer.get_values_for_type  rt  r5   c                     y r"   rG   rm  s     r3   ro  z%CertificateIssuer.get_values_for_type  rv  r5   c                     y r"   rG   rm  s     r3   ro  z%CertificateIssuer.get_values_for_type  rx  r5   c                8    | j                   j                  |      S r"   r  rm  s     r3   ro  z%CertificateIssuer.get_values_for_type  r  r5   c                "    d| j                    dS )Nz<CertificateIssuer(r{   r~  rd   s    r3   r|   zCertificateIssuer.__repr__  s    $T%8%8$9<<r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   ri  r   s     r3   r   zCertificateIssuer.__eq__  s*    %!23!!""e&:&:::r5   c                ,    t        | j                        S r"   r  rd   s    r3   r   zCertificateIssuer.__hash__  r  r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zCertificateIssuer.public_bytes  r   r5   Nr  r  r  r  r  r  r  r}   r   rD   re   )rX   rY   rZ   r   CERTIFICATE_ISSUERrO   rN   rH   r~   r   r   r  r  ro  r|   r   r   r$   rG   r5   r3   r  r    s!   

1
1C: &<<L%M"GX{__
 
  __! 
 
 __% % 
 % %
 __$#$	$ $ __#	 =*=	!=$=;)6r5   r  c                  ^    e Zd Zej                  ZddZd	dZd
dZddZ	e
dd       ZddZy)	CRLReasonc                H    t        |t              st        d      || _        y )Nz*reason must be an element from ReasonFlags)r#   rO  rv   _reason)r;   reasons     r3   rN   zCRLReason.__init__  s    &+.HIIr5   c                "    d| j                    dS )Nz<CRLReason(reason=r{   r  rd   s    r3   r|   zCRLReason.__repr__  r  r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zCRLReason.__eq__  s%    %+!!{{ell**r5   c                ,    t        | j                        S r"   )r   r  rd   s    r3   r   zCRLReason.__hash__  r   r5   c                    | j                   S r"   r  rd   s    r3   r  zCRLReason.reason  r   r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zCRLReason.public_bytes  r   r5   N)r  rO  rE   rV   r}   r   rD   )rE   rO  re   )rX   rY   rZ   r   
CRL_REASONrO   rN   r|   r   r   r   r  r$   rG   r5   r3   r  r    s:    

)
)C5+!  6r5   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#   datetimerv   _invalidity_date)r;   invalidity_dates     r3   rN   zInvalidityDate.__init__  s&    /8+<+<=IJJ /r5   c                "    d| j                    dS )Nz <InvalidityDate(invalidity_date=r{   r  rd   s    r3   r|   zInvalidityDate.__repr__  s    1$2G2G1HKKr5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zInvalidityDate.__eq__  s)    %0!!##u'<'<<<r5   c                ,    t        | j                        S r"   )r   r  rd   s    r3   r   zInvalidityDate.__hash__  s    D(())r5   c                    | j                   S r"   r  rd   s    r3   r  zInvalidityDate.invalidity_date  r  r5   c                    | j                   j                  4| j                   j                  t        j                  j
                        S | j                   j                  t        j                  j
                        S )N)tzinfo)tz)r  r  replacer  timezoneutc
astimezonerd   s    r3   invalidity_date_utcz"InvalidityDate.invalidity_date_utc  s`      ''/((008I8I8M8M0NN((33x7H7H7L7L3MMr5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zInvalidityDate.public_bytes  r   r5   N)r  datetime.datetimerE   rV   r}   r   rD   )rE   r  re   )rX   rY   rZ   r   INVALIDITY_DATErO   rN   r|   r   r   r   r  r  r$   rG   r5   r3   r  r    sQ    

.
.C0L=* % % N N6r5   r  c                  l    e Zd Zej                  Z	 	 	 	 ddZ ed      \  ZZ	Z
d	dZd
dZddZddZy))PrecertificateSignedCertificateTimestampsc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r#   r   r   scts     r3   r   zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>         
 s67
r   YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamprl   r   rv   _signed_certificate_timestampsr;   signed_certificate_timestampss     r3   rN   z2PrecertificateSignedCertificateTimestamps.__init__  D     )--J(K% 
4
 
 /  /L+r5   r  c                     dt        |        dS )Nz+<PrecertificateSignedCertificateTimestamps(r{   rl   rd   s    r3   r|   z2PrecertificateSignedCertificateTimestamps.__repr__   s    <T$ZLKKr5   c                >    t        t        | j                              S r"   r   r   r  rd   s    r3   r   z2PrecertificateSignedCertificateTimestamps.__hash__#      E$==>??r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   z0PrecertificateSignedCertificateTimestamps.__eq__&  s1    %!JK!! //334	
r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   z6PrecertificateSignedCertificateTimestamps.public_bytes/  r   r5   Nr  z+typing.Iterable[SignedCertificateTimestamp]rE   rV   r}   rD   r   re   )rX   rY   rZ   r   %PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrO   rN   rH   r~   r   r   r|   r   r   r$   rG   r5   r3   r  r    sU    

<
<CL(
L
 
L" &<(&"GX{L@
6r5   r  c                  l    e Zd Zej                  Z	 	 	 	 ddZ ed      \  ZZ	Z
d	dZd
dZddZddZy)SignedCertificateTimestampsc                b    t        |      }t        d |D              st        d      || _        y )Nc              3  <   K   | ]  }t        |t                y wr"   r  r  s     r3   r   z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>=  r  r   r  r  r  s     r3   rN   z$SignedCertificateTimestamps.__init__6  r  r5   r  c                     dt        |        dS )Nz<SignedCertificateTimestamps(r{   r  rd   s    r3   r|   z$SignedCertificateTimestamps.__repr__K  s    .tDzl"==r5   c                >    t        t        | j                              S r"   r  rd   s    r3   r   z$SignedCertificateTimestamps.__hash__N  r  r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   z"SignedCertificateTimestamps.__eq__Q  s1    %!<=!! //334	
r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   z(SignedCertificateTimestamps.public_bytesZ  r   r5   Nr  r}   rD   r   re   )rX   rY   rZ   r   SIGNED_CERTIFICATE_TIMESTAMPSrO   rN   rH   r~   r   r   r|   r   r   r$   rG   r5   r3   r  r  3  sT    

4
4CL(
L
 
L" &<(&"GX{>@
6r5   r  c                  ^    e Zd Zej                  ZddZd	dZd
dZddZ	e
dd       ZddZy)	OCSPNoncec                H    t        |t              st        d      || _        y )Nznonce must be bytes)r#   rf   rv   _nonce)r;   nonces     r3   rN   zOCSPNonce.__init__a  s    %'122r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r  r   r  r   s     r3   r   zOCSPNonce.__eq__g  s%    %+!!zzU[[((r5   c                ,    t        | j                        S r"   )r   r  rd   s    r3   r   zOCSPNonce.__hash__m  s    DJJr5   c                "    d| j                   dS )Nz<OCSPNonce(nonce=r{   )r  rd   s    r3   r|   zOCSPNonce.__repr__p  s    "4::.33r5   c                    | j                   S r"   )r   rd   s    r3   r  zOCSPNonce.nonces  r`  r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zOCSPNonce.public_bytesw  r   r5   N)r  rf   rE   rV   r   rD   r}   re   )rX   rY   rZ   r   NONCErO   rN   r   r   r|   r   r  r$   rG   r5   r3   r  r  ^  s:    

 
 C) 4  6r5   r  c                  T    e Zd Zej                  ZddZd	dZd
dZddZ	ddZ
ddZy)OCSPAcceptableResponsesc                b    t        |      }t        d |D              rt        d      || _        y )Nc              3  >   K   | ]  }t        |t                 y wr"   r  )r   rs     r3   r   z3OCSPAcceptableResponses.__init__.<locals>.<genexpr>  s     Fq:a!122Fs   z'All responses must be ObjectIdentifiers)rl   rF  rv   
_responses)r;   	responsess     r3   rN   z OCSPAcceptableResponses.__init__~  s,    O	FIFFEFF#r5   c                `    t        |t              st        S | j                  |j                  k(  S r"   )r#   r	  r   r  r   s     r3   r   zOCSPAcceptableResponses.__eq__  s(    %!89!!%"2"222r5   c                >    t        t        | j                              S r"   )r   r   r  rd   s    r3   r   z OCSPAcceptableResponses.__hash__  s    E$//*++r5   c                "    d| j                    dS )Nz#<OCSPAcceptableResponses(responses=r{   )r  rd   s    r3   r|   z OCSPAcceptableResponses.__repr__  s    4T__4ERHHr5   c                ,    t        | j                        S r"   )r?   r  rd   s    r3   r   z OCSPAcceptableResponses.__iter__  r   r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   z$OCSPAcceptableResponses.public_bytes  r   r5   N)r  r  rE   rV   r   rD   r}   )rE   z!typing.Iterator[ObjectIdentifier]re   )rX   rY   rZ   r   ACCEPTABLE_RESPONSESrO   rN   r   r   r|   r   r$   rG   r5   r3   r	  r	  {  s,    

/
/C$3,I%6r5   r	  c                      e Zd Zej                  Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZddZddZ	e
dd       Ze
dd       Ze
dd       Ze
dd       Ze
	 	 dd	       Ze
dd
       Ze
dd       ZddZy)IssuingDistributionPointc           	     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"   rN  r   s     r3   r   z4IssuingDistributionPoint.__init__.<locals>.<genexpr>  r3  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.)rl   r#   rP  r   rv   rO  rQ  rR  r   r   r8   rF  _only_contains_user_certs_only_contains_ca_certs_indirect_crl_only_contains_attribute_certs_only_some_reasonsrS  rT  )
r;   rW  rX  only_contains_user_certsonly_contains_ca_certsonly_some_reasonsindirect_crlonly_contains_attribute_certscrl_constraintsr   s
             r3   rN   z!IssuingDistributionPoint.__init__  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{   )rW  rX  r  r  r   r!  r"  rd   s    r3   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		
r5   c                   t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  xr | j
                  |j
                  k(  xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r"   )
r#   r  r   rW  rX  r  r  r   r!  r"  r   s     r3   r   zIssuingDistributionPoint.__eq__  s    %!9:!! NNeoo- 3""e&9&993--1O1OO3 ++u/K/KK3 &&%*A*AA	3
 !!U%7%773 22223		
r5   c           	         t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  f      S r"   )r   rW  rX  r  r  r   r!  r"  rd   s    r3   r   z!IssuingDistributionPoint.__hash__  sQ    ""--++&&!!22

 
	
r5   c                    | j                   S r"   rb  rd   s    r3   rW  z"IssuingDistributionPoint.full_name  rc  r5   c                    | j                   S r"   re  rd   s    r3   rX  z&IssuingDistributionPoint.relative_name  r  r5   c                    | j                   S r"   )r  rd   s    r3   r  z1IssuingDistributionPoint.only_contains_user_certs   s    ---r5   c                    | j                   S r"   )r  rd   s    r3   r  z/IssuingDistributionPoint.only_contains_ca_certs$  r  r5   c                    | j                   S r"   )r  rd   s    r3   r   z*IssuingDistributionPoint.only_some_reasons(  r  r5   c                    | j                   S r"   )r  rd   s    r3   r!  z%IssuingDistributionPoint.indirect_crl.  r  r5   c                    | j                   S r"   )r  rd   s    r3   r"  z6IssuingDistributionPoint.only_contains_attribute_certs2  s    222r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   z%IssuingDistributionPoint.public_bytes6  r   r5   N)rW  r   rX  rh  r  r   r  r   r   ri  r!  r   r"  r   rE   rV   r}   r   rD   r   rj  r  rk  re   )rX   rY   rZ   r   ISSUING_DISTRIBUTION_POINTrO   rN   r|   r   r   r   rW  rX  r  r  r   r!  r"  r$   rG   r5   r3   r  r    s   

1
1CS,6S, 8S, #'	S,
 !%S, 9S, S, (,S, 
S,j



   # # . . , , '	&' '
 " " 3 36r5   r  c                      e Zd Zej                  Z	 	 	 	 	 	 	 	 d
dZedd       Zedd       Z	edd       Z
ddZddZddZddZy	)MSCertificateTemplatec                    t        |t              st        d      || _        |t        |t              r|t        |t              st        d      || _        || _        y )Noid must be an ObjectIdentifierz8major_version and minor_version must be integers or None)r#   r   rv   _template_idrF   _major_version_minor_version)r;   template_idmajor_versionminor_versions       r3   rN   zMSCertificateTemplate.__init__=  sc     +'78=>>'%j.L%j.LJ  ,+r5   c                    | j                   S r"   )r4  rd   s    r3   r7  z!MSCertificateTemplate.template_idQ  r  r5   c                    | j                   S r"   )r5  rd   s    r3   r8  z#MSCertificateTemplate.major_versionU  r  r5   c                    | j                   S r"   )r6  rd   s    r3   r9  z#MSCertificateTemplate.minor_versionY  r  r5   c                V    d| j                    d| j                   d| j                   dS )Nz#<MSCertificateTemplate(template_id=z, major_version=z, minor_version=r{   )r7  r8  r9  rd   s    r3   r|   zMSCertificateTemplate.__repr__]  s?    1$2B2B1C D!//0 1!//04	
r5   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r"   )r#   r1  r   r7  r8  r9  r   s     r3   r   zMSCertificateTemplate.__eq__d  s`    %!67!!  1 11 :""e&9&99:""e&9&99	
r5   c                Z    t        | j                  | j                  | j                  f      S r"   )r   r7  r8  r9  rd   s    r3   r   zMSCertificateTemplate.__hash__n  s&    T%%t'9'94;M;MNOOr5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   z"MSCertificateTemplate.public_bytesq  r   r5   N)r7  r   r8  r   r9  r   rE   rV   r  r   r}   r   rD   re   )rX   rY   rZ   r   MS_CERTIFICATE_TEMPLATErO   rN   r   r7  r8  r9  r|   r   r   r$   rG   r5   r3   r1  r1  :  s    

.
.C,%, ", "	,
 
,( ! ! # # # #

P6r5   r1  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   rv   rU   _id_url_text)r;   idurltexts       r3   rN   zNamingAuthority.__init__v  si     >*R1A"B<==?:c3#7/00JtS$9011	
r5   c                    | j                   S r"   )rE  rd   s    r3   rH  zNamingAuthority.id  r  r5   c                    | j                   S r"   )rF  rd   s    r3   rI  zNamingAuthority.url  r\  r5   c                    | j                   S r"   )rG  rd   s    r3   rJ  zNamingAuthority.text  s    zzr5   c                V    d| j                    d| j                   d| j                   dS )Nz<NamingAuthority(id=z, url=z, text=r{   )rH  rI  rJ  rd   s    r3   r|   zNamingAuthority.__repr__  s1    ''&
'$))B@	
r5   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r"   )r#   rC  r   rH  rI  rJ  r   s     r3   r   zNamingAuthority.__eq__  sS    %1!! GGuxx (EII%(		UZZ'	
r5   c                Z    t        | j                  | j                  | j                  f      S r"   )r   rH  rI  rJ  rd   s    r3   r   zNamingAuthority.__hash__  s)    		
 	
r5   N)rH  ObjectIdentifier | NonerI  r  rJ  r  rE   rV   )rE   rQ  r  r}   r   rD   )rX   rY   rZ   rN   r   rH  rI  rJ  r|   r   r   rG   r5   r3   rC  rC  u  sx    #  	
 
&      


r5   rC  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#   rU   )r   items     r3   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   rO   s     r3   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#   rC  rv   rl   r   rU   rf   _naming_authority_profession_items_profession_oids_registration_number_add_profession_info)r;   naming_authorityprofession_itemsprofession_oidsregistration_numberadd_profession_infos         r3   rN   zProfessionInfo.__init__  s     '
o1
 HII 01F5EFFG  &"?3O =L   ' 
 *:4
 ?@@*:4
 ?@@!1!1 /$7!$7!r5   c                    | j                   S r"   rY  rd   s    r3   r^  zProfessionInfo.naming_authority  r  r5   c                    | j                   S r"   )rZ  rd   s    r3   r_  zProfessionInfo.profession_items  r  r5   c                    | j                   S r"   )r[  rd   s    r3   r`  zProfessionInfo.profession_oids  r  r5   c                    | j                   S r"   )r\  rd   s    r3   ra  z"ProfessionInfo.registration_number      (((r5   c                    | j                   S r"   )r]  rd   s    r3   rb  z"ProfessionInfo.add_profession_info  rh  r5   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{   )r^  r_  r`  ra  rb  rd   s    r3   r|   zProfessionInfo.__repr__  sb    /0E0E/F G  $ 5 56 7#334 5##'#;#;"< =##'#;#;">b	B	
r5   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#   rS  r   r^  r_  r`  ra  rb  r   s     r3   r   zProfessionInfo.__eq__  s    %0!! !!U%;%;; F%%)?)??F$$(=(==F ((E,E,EEF ((E,E,EE	
r5   c                    | j                   t        | j                         }nd }t        | j                  t        | j                        || j
                  | j                  f      S r"   )r`  r   r   r^  r_  ra  rb  )r;   r`  s     r3   r   zProfessionInfo.__hash__	  sa    +#D$8$89O"O%%d++,((((
 	
r5   N)r^  NamingAuthority | Noner_  ztyping.Iterable[str]r`  z(typing.Iterable[ObjectIdentifier] | Nonera  r  rb  r   rE   rV   rE   rm  )rE   r  )rE   zlist[ObjectIdentifier] | Noner  r   r}   r   rD   )rX   rY   rZ   rN   r   r^  r_  r`  ra  rb  r|   r   r   rG   r5   r3   rS  rS    s    +80+8 /+8 B	+8
 (+8 *+8 
+8Z & & & & % % ) ) ) )



r5   rS  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 GeneralNamerU  c              3  <   K   | ]  }t        |t                y wr"   )r#   rS  )r   infos     r3   r   z%Admission.__init__.<locals>.<genexpr>(	  s      
15Jt^,
r   z@Every item in the profession_infos list must be a ProfessionInfo)	r#   r   rv   rC  rl   r   _admission_authorityrY  _profession_infos)r;   admission_authorityr^  profession_infoss       r3   rN   zAdmission.__init__	  s     *:4
 GHH'
o1
 HII 01 
9I
 
 ! 
 %8!!1!1r5   c                    | j                   S r"   )rt  rd   s    r3   rv  zAdmission.admission_authority4	  rh  r5   c                    | j                   S r"   rd  rd   s    r3   r^  zAdmission.naming_authority8	  r  r5   c                    | j                   S r"   )ru  rd   s    r3   rw  zAdmission.profession_infos<	  r  r5   c                V    d| j                    d| j                   d| j                   dS )Nz<Admission(admission_authority=z, naming_authority=z, profession_infos=r{   )rv  r^  rw  rd   s    r3   r|   zAdmission.__repr__@	  s?    -d.F.F-G H  $ 5 56 7  $ 5 56b:	
r5   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r"   )r#   rp  r   rv  r^  rw  r   s     r3   r   zAdmission.__eq__G	  sa    %+!! $$(A(AA @%%)?)??@%%)?)??	
r5   c                l    t        | j                  | j                  t        | j                        f      S r"   )r   rv  r^  r   rw  rd   s    r3   r   zAdmission.__hash__Q	  s4    ((%%d++,
 	
r5   N)rv  GeneralName | Noner^  rm  rw  ztyping.Iterable[ProfessionInfo]rE   rV   rE   r~  rn  )rE   zlist[ProfessionInfo]r}   r   rD   )rX   rY   rZ   rN   r   rv  r^  rw  r|   r   r   rG   r5   r3   rp  rp  	  sx    2/2 12 :	2
 
2: ) ) & & & &


r5   rp  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#   rp  )r   	admissions     r3   r   z&Admissions.__init__.<locals>.<genexpr>g	  s      
1:Jy),
r   zBEvery item in the contents_of_admissions list must be an Admission)r#   r   rv   rl   r   
_authority_admissions)r;   	authority
admissionss      r3   rN   zAdmissions.__init__^	  sc    
  I{)K=>>*%
 
>H
 
  
 $%r5   r  c                    | j                   S r"   )r  rd   s    r3   r  zAdmissions.authorityt	  rc  r5   c                <    d| j                    d| j                   dS )Nz<Admissions(authority=z, admissions=r{   )r  r  rd   s    r3   r|   zAdmissions.__repr__x	  s+    $T__$5 6**+2/	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   r  r   r  r  r   s     r3   r   zAdmissions.__eq__~	  sB    %,!! NNeoo- 6  E$5$55	
r5   c                V    t        | j                  t        | j                        f      S r"   )r   r  r   r  rd   s    r3   r   zAdmissions.__hash__	  s!    T^^U4+;+;%<=>>r5   c                ,    t        j                  |       S r"   r   rd   s    r3   r$   zAdmissions.public_bytes	  r   r5   N)r  r~  r  ztyping.Iterable[Admission]rE   rV   r  r}   r   rD   re   )rX   rY   rZ   r   
ADMISSIONSrO   rN   rH   r~   r   r   r   r  r|   r   r   r$   rG   r5   r3   r  r  [	  sg    

!
!C&%& /& 
	&( &<M%J"GX{ 

?6r5   r  c                  X    e Zd Zd	dZed
d       Zedd       ZddZddZddZ	ddZ
y)ru   c                V    t        |t              st        d      || _        || _        y )Nr3  )r#   r   rv   rV  rX  )r;   rO   rw   s      r3   rN   zUnrecognizedExtension.__init__	  s'    #/0=>>	r5   c                    | j                   S r"   r[  rd   s    r3   rO   zUnrecognizedExtension.oid	  r\  r5   c                    | j                   S r"   r_  rd   s    r3   rw   zUnrecognizedExtension.value	  r`  r5   c                <    d| j                    d| j                  dS )Nz<UnrecognizedExtension(oid=rb  r{   )rO   rw   rd   s    r3   r|   zUnrecognizedExtension.__repr__	  s'    )$(( 4ZZN"&	
r5   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r#   ru   r   rO   rw   r   s     r3   r   zUnrecognizedExtension.__eq__	  s8    %!67!!xx599$Bu{{)BBr5   c                D    t        | j                  | j                  f      S r"   )r   rO   rw   rd   s    r3   r   zUnrecognizedExtension.__hash__	  s    TXXtzz*++r5   c                    | j                   S r"   )rw   rd   s    r3   r$   z"UnrecognizedExtension.public_bytes	  s    zzr5   N)rO   r   rw   rf   rE   rV   r  re   r}   r   rD   )rX   rY   rZ   rN   r   rO   rw   r|   r   r   r$   rG   r5   r3   ru   ru   	  sD        
C,r5   ru   )r0   r   rE   rf   )r<   rU   )q
__future__r   abcr  r-   rA  r  cryptographyr   "cryptography.hazmat.bindings._rustr   r   r   cryptography.hazmat.primitivesr   r   ,cryptography.hazmat.primitives.asymmetric.ecr	   -cryptography.hazmat.primitives.asymmetric.rsar
   /cryptography.hazmat.primitives.asymmetric.typesr   r   *cryptography.x509.certificate_transparencyr   cryptography.x509.general_namer   r   r   r   r   r   r   r   r   cryptography.x509.namer   r   cryptography.x509.oidr   r   r   r   TypeVarr   r4   rH   	ExceptionrJ   r_   ABCMetar   rj   r   r   r   r   r   r   r  r"  r+  rA  r/  EnumrO  rv  rw  rx  rp  ry  rz  r{  r|  _REASON_BIT_MAPPING_CRLREASONFLAGSrQ  rR  _CRL_ENTRY_REASON_ENUM_TO_CODEr  r  r  r  r  r  r  r  r  r  rw   _TLS_FEATURE_TYPE_TO_ENUMr  r
  r/  GenericrT  rf  r  r  r  r  r  r  r  r  r	  r  r1  rC  rS  rp  r  ru   )r   s   0r3   <module>r     sB  
 # 
      3 @ G O F
 
 
 C  "6>>o 
')'
'0
3 	 	
ckk 	
$3 $3N6 6:i6] i6X!6= !6H6 6B6} 6B%% %%P,6} ,6^6 6:"6M "6J"6- "6J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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 (6V(6- (6V6 6:6m 6:_6} _6D86M 86v7
 7
td
 d
NB
 B
J06 06fM u) As   P