
    tf*                      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j+        ddd          Z,d|dZ-d}dZ. G d de/          Z0 G d de/          Z1 G d dej2                  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 d0 d1e3          Z< G d2 d3e3          Z= G d4 d5e3          Z> G d6 d7          Z? G d8 d9ej@                  ZAeAjB        eAjC        eAjD        eAjE        eAjF        eAjG        eAjH        eAjI        d:ZJeAjB        d;eAjC        d<eAjD        d=eAjE        d>eAjF        d?eAjG        d@eAjH        dAeAjI        dBiZKeAjL        d eAjB        d;eAjC        d<eAjD        d=eAjE        d>eAjF        d?eAjG        d@eAjM        dBeAjH        dCeAjI        dDi
ZN G dE dFe3          ZO G dG dHe3          ZP G dI dJ          ZQ G dK dL          ZR G dM dN          ZS G dO dPe3          ZT G dQ dRe3          ZU G dS dTe3          ZV G dU dVe3          ZW G dW dXej@                  ZXdY eXD             ZY G dZ d[e3          ZZ G d\ d]e3          Z[ G d^ d_e3          Z\ G d` daej]        e,                   Z^ G db dc          Z_ G dd dee3          Z` G df dge3          Za G dh die3          Zb G dj dke3          Zc G dl dme3          Zd G dn doe3          Ze G dp dqe3          Zf G dr dse3          Zg G dt due3          Zh G dv dwe3          Zi G dx dye3          Zj G dz d{e3          ZkdS )~    )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	covariant
public_keyr   returnbytesc                   t          | t                    r5|                     t          j        j        t          j        j                  }nt          | t                    r5|                     t          j        j	        t          j        j
                  }nH|                     t          j        j        t          j        j                  }t          j        |          }t          j        |                                          S N)
isinstancer
   public_bytesr   EncodingDERPublicFormatPKCS1r	   X962UncompressedPointSubjectPublicKeyInfor   parse_spki_for_datahashlibsha1digest)r!   data
serializeds      [/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/cryptography/x509/extensions.py_key_identifier_from_public_keyr6   2   s     *l++ 4&&"&&,
 
 
J 6	7	7 4&&"'&8
 
  ,,"&&;
 

 '
33<$$&&&    
field_namestrc                .     d fd} fd} fd}|||fS )Nr"   intc                >    t          t          |                     S r%   )lengetattrselfr8   s    r5   
len_methodz*_make_sequence_methods.<locals>.len_methodK   s    74,,---r7   c                >    t          t          |                     S r%   )iterr>   r?   s    r5   iter_methodz+_make_sequence_methods.<locals>.iter_methodN   s    GD*--...r7   c                0    t          |           |         S r%   )r>   )r@   idxr8   s     r5   getitem_methodz._make_sequence_methods.<locals>.getitem_methodQ   s    tZ((--r7   r"   r;    )r8   rA   rD   rG   s   `   r5   _make_sequence_methodsrJ   J   sb    . . . . . ./ / / / /. . . . . {N22r7   c                        e Zd Zd fdZ xZS )	DuplicateExtensionmsgr9   oidr   r"   Nonec                X    t                                          |           || _        d S r%   super__init__rN   r@   rM   rN   	__class__s      r5   rS   zDuplicateExtension.__init__X   &    r7   rM   r9   rN   r   r"   rO   __name__
__module____qualname__rS   __classcell__rU   s   @r5   rL   rL   W   =                 r7   rL   c                        e Zd Zd fdZ xZS )	ExtensionNotFoundrM   r9   rN   r   r"   rO   c                X    t                                          |           || _        d S r%   rQ   rT   s      r5   rS   zExtensionNotFound.__init__^   rV   r7   rW   rX   r]   s   @r5   r`   r`   ]   r^   r7   r`   c                  "    e Zd ZU ded<   ddZdS )r   z!typing.ClassVar[ObjectIdentifier]rN   r"   r#   c                &    t          d|           )z7
        Serializes the extension type to DER.
        z3public_bytes is not implemented for extension type )NotImplementedErrorr@   s    r5   r'   zExtensionType.public_bytesf   s!     "J$JJ
 
 	
r7   Nr"   r#   )rY   rZ   r[   __annotations__r'   rI   r7   r5   r   r   c   s6         ****
 
 
 
 
 
r7   )	metaclassc                  L    e Zd ZddZdd	ZddZ ed          \  ZZZ	ddZ
dS )
Extensions
extensions)typing.Iterable[Extension[ExtensionType]]r"   rO   c                .    t          |          | _        d S r%   )list_extensions)r@   rk   s     r5   rS   zExtensions.__init__p   s      
++r7   rN   r   Extension[ExtensionType]c                R    | D ]}|j         |k    r|c S t          d| d|          )NNo  extension was found)rN   r`   )r@   rN   exts      r5   get_extension_for_oidz Extensions.get_extension_for_oidu   sJ      	 	Cw#~~


    ?c ? ? ?EEEr7   extclasstype[ExtensionTypeVar]Extension[ExtensionTypeVar]c                    |t           u rt          d          | D ]}t          |j        |          r|c S t	          d| d|j                  )Nz|UnrecognizedExtension can't be used with get_extension_for_class because more than one instance of the class may be present.rr   rs   )UnrecognizedExtension	TypeErrorr&   valuer`   rN   )r@   rv   rt   s      r5   get_extension_for_classz"Extensions.get_extension_for_class~   s     ,,,)    	 	C#)X.. 


  0(000(,
 
 	
r7   ro   r9   c                    d| j          dS )Nz<Extensions()>)ro   re   s    r5   __repr__zExtensions.__repr__   s    2d.2222r7   N)rk   rl   r"   rO   )rN   r   r"   rp   )rv   rw   r"   rx   r"   r9   )rY   rZ   r[   rS   ru   r}   rJ   __len____iter____getitem__r   rI   r7   r5   rj   rj   o   s        , , , ,
F F F F
 
 
 
$ &<%;M%J%J"GX{3 3 3 3 3 3r7   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dS )	CRLNumber
crl_numberr;   r"   rO   c                \    t          |t                    st          d          || _        d S Nzcrl_number must be an integerr&   r;   r{   _crl_numberr@   r   s     r5   rS   zCRLNumber.__init__   1    *c** 	=;<<<%r7   otherobjectboolc                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r   NotImplementedr   r@   r   s     r5   __eq__zCRLNumber.__eq__   s*    %++ 	"!!%"222r7   c                *    t          | j                  S r%   hashr   re   s    r5   __hash__zCRLNumber.__hash__       DO$$$r7   r9   c                    d| j          dS )Nz<CRLNumber(r   r   re   s    r5   r   zCRLNumber.__repr__   s    0T_0000r7   c                    | j         S r%   r   re   s    r5   r   zCRLNumber.crl_number       r7   r#   c                *    t          j        |           S r%   	rust_x509encode_extension_valuere   s    r5   r'   zCRLNumber.public_bytes       /555r7   Nr   r;   r"   rO   r   r   r"   r   rH   r   rf   )rY   rZ   r[   r   
CRL_NUMBERrN   rS   r   r   r   propertyr   r'   rI   r7   r5   r   r      s        

!C& & & &3 3 3 3% % % %1 1 1 1       X 6 6 6 6 6 6r7   r   c                      e Zd Zej        Zdd	Zed d            Zed!d            Z	d"dZ
d#dZd$dZed%d            Zed&d            Zed'd            Zd(dZdS ))AuthorityKeyIdentifierkey_identifierbytes | Noneauthority_cert_issuer#typing.Iterable[GeneralName] | Noneauthority_cert_serial_number
int | Noner"   rO   c                    |d u |d u k    rt          d          |7t          |          }t          d |D                       st          d          |$t	          |t
                    st          d          || _        || _        || _        d S )NzXauthority_cert_issuer and authority_cert_serial_number must both be present or both Nonec              3  @   K   | ]}t          |t                    V  d S r%   r&   r   .0xs     r5   	<genexpr>z2AuthorityKeyIdentifier.__init__.<locals>.<genexpr>   s=        /0
1k**     r7   z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer)	
ValueErrorrn   allr{   r&   r;   _key_identifier_authority_cert_issuer_authority_cert_serial_number)r@   r   r   r   s       r5   rS   zAuthorityKeyIdentifier.__init__   s     "T)(D0
 
 4  
 !,$()>$?$?!  4I         
 (3J(#=
 =
3 MNNN-&;#-I***r7   r!   r   c                <    t          |          } | |d d           S Nr   r   r   r6   )clsr!   r2   s      r5   from_issuer_public_keyz-AuthorityKeyIdentifier.from_issuer_public_key   s3     1<<s!"&)-
 
 
 	
r7   skiSubjectKeyIdentifierc                (     | |j         d d           S r   r2   )r   r   s     r5   "from_issuer_subject_key_identifierz9AuthorityKeyIdentifier.from_issuer_subject_key_identifier   s(     s:"&)-
 
 
 	
r7   r9   c                8    d| j         d| j         d| j         dS )Nz'<AuthorityKeyIdentifier(key_identifier=z, authority_cert_issuer=z, authority_cert_serial_number=r   r   re   s    r5   r   zAuthorityKeyIdentifier.__repr__   s@    d6I  %)%? ,0,M  	
r7   r   r   r   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )r&   r   r   r   r   r   r   s     r5   r   zAuthorityKeyIdentifier.__eq__   sY    %!788 	"!! 5#77 2*e.II2112	
r7   r;   c                v    | j         d }nt          | j                   }t          | j        || j        f          S r%   )r   tupler   r   r   )r@   acis     r5   r   zAuthorityKeyIdentifier.__hash__  sD    %-CC233C #t'HI
 
 	
r7   c                    | j         S r%   )r   re   s    r5   r   z%AuthorityKeyIdentifier.key_identifier      ##r7   list[GeneralName] | Nonec                    | j         S r%   )r   re   s    r5   r   z,AuthorityKeyIdentifier.authority_cert_issuer  s     **r7   c                    | j         S r%   )r   re   s    r5   r   z3AuthorityKeyIdentifier.authority_cert_serial_number  s    11r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z#AuthorityKeyIdentifier.public_bytes  r   r7   N)r   r   r   r   r   r   r"   rO   )r!   r   r"   r   )r   r   r"   r   r   r   rH   )r"   r   r"   r   r"   r   rf   )rY   rZ   r[   r   AUTHORITY_KEY_IDENTIFIERrN   rS   classmethodr   r   r   r   r   r   r   r   r   r'   rI   r7   r5   r   r      s%       

/CJ J J JL 
 
 
 [
 
 
 
 [

 
 
 
	
 	
 	
 	

 
 
 
 $ $ $ X$ + + + X+
 2 2 2 X26 6 6 6 6 6r7   r   c                      e Zd Zej        ZddZedd            Ze	dd	            Z
e	dd
            ZddZddZddZddZdS )r   r2   r#   r"   rO   c                    || _         d S r%   _digest)r@   r2   s     r5   rS   zSubjectKeyIdentifier.__init__"  s    r7   r!   r   c                2     | t          |                    S r%   r   )r   r!   s     r5   from_public_keyz$SubjectKeyIdentifier.from_public_key%  s     s2:>>???r7   c                    | j         S r%   r   re   s    r5   r2   zSubjectKeyIdentifier.digest+  
    |r7   c                    | j         S r%   r   re   s    r5   r   z#SubjectKeyIdentifier.key_identifier/  r   r7   r9   c                    d| j         dS )Nz<SubjectKeyIdentifier(digest=r   r   re   s    r5   r   zSubjectKeyIdentifier.__repr__3  s    @t{@@@@r7   r   r   r   c                x    t          |t                    st          S t          j        | j        |j                  S r%   )r&   r   r   r   bytes_eqr2   r   s     r5   r   zSubjectKeyIdentifier.__eq__6  s2    %!566 	"!!%dk5<@@@r7   r;   c                *    t          | j                  S r%   )r   r2   re   s    r5   r   zSubjectKeyIdentifier.__hash__<      DK   r7   c                *    t          j        |           S r%   r   re   s    r5   r'   z!SubjectKeyIdentifier.public_bytes?  r   r7   N)r2   r#   r"   rO   )r!   r   r"   r   rf   r   r   rH   )rY   rZ   r[   r   SUBJECT_KEY_IDENTIFIERrN   rS   r   r   r   r2   r   r   r   r   r'   rI   r7   r5   r   r     s        

-C    @ @ @ [@
    X    XA A A AA A A A! ! ! !6 6 6 6 6 6r7   r   c                  b    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dS )AuthorityInformationAccessdescriptions"typing.Iterable[AccessDescription]r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r&   AccessDescriptionr   s     r5   r   z6AuthorityInformationAccess.__init__.<locals>.<genexpr>J  -      JJ:a!233JJJJJJr7   @Every item in the descriptions list must be an AccessDescriptionrn   r   r{   _descriptionsr@   r   s     r5   rS   z#AuthorityInformationAccess.__init__F  W     L))JJ\JJJJJ 	$  
 *r7   r   r9   c                    d| j          dS )Nz<AuthorityInformationAccess(r   r   re   s    r5   r   z#AuthorityInformationAccess.__repr__T  s    Dd.@DDDDr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r   r   r   r   s     r5   r   z!AuthorityInformationAccess.__eq__W  s,    %!;<< 	"!!!U%888r7   r;   c                D    t          t          | j                            S r%   r   r   r   re   s    r5   r   z#AuthorityInformationAccess.__hash__]      E$,--...r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z'AuthorityInformationAccess.public_bytes`  r   r7   Nr   r   r"   rO   r   r   rH   rf   )rY   rZ   r[   r   AUTHORITY_INFORMATION_ACCESSrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r   r   C  s        

3C
* 
* 
* 
* &<%;O%L%L"GX{E E E E9 9 9 9/ / / /6 6 6 6 6 6r7   r   c                  b    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dS )SubjectInformationAccessr   r   r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r   r   s     r5   r   z4SubjectInformationAccess.__init__.<locals>.<genexpr>k  r   r7   r   r   r   s     r5   rS   z!SubjectInformationAccess.__init__g  r   r7   r   r9   c                    d| j          dS )Nz<SubjectInformationAccess(r   r   re   s    r5   r   z!SubjectInformationAccess.__repr__u  s    BD,>BBBBr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r   r   r   r   s     r5   r   zSubjectInformationAccess.__eq__x  s,    %!9:: 	"!!!U%888r7   r;   c                D    t          t          | j                            S r%   r   re   s    r5   r   z!SubjectInformationAccess.__hash__~  r   r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z%SubjectInformationAccess.public_bytes  r   r7   Nr   r   r   rH   rf   )rY   rZ   r[   r   SUBJECT_INFORMATION_ACCESSrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r   r   d  s        

1C
* 
* 
* 
* &<%;O%L%L"GX{C C C C9 9 9 9/ / / /6 6 6 6 6 6r7   r   c                  ^    e Zd ZddZdd	ZddZddZedd            Zedd            Z	dS )r   access_methodr   access_locationr   r"   rO   c                    t          |t                    st          d          t          |t                    st          d          || _        || _        d S )Nz)access_method must be an ObjectIdentifierz%access_location must be a GeneralName)r&   r   r{   r   _access_method_access_location)r@   r  r  s      r5   rS   zAccessDescription.__init__  s_     -)9:: 	IGHHH/;77 	ECDDD+ /r7   r9   c                (    d| j          d| j         dS )Nz!<AccessDescription(access_method=z, access_location=r   )r  r  re   s    r5   r   zAccessDescription.__repr__  s0    80B 8 8#38 8 8	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r   r   r  r  r   s     r5   r   zAccessDescription.__eq__  sC    %!233 	"!! %"55 >$(==	
r7   r;   c                8    t          | j        | j        f          S r%   )r   r  r  re   s    r5   r   zAccessDescription.__hash__  s    T')=>???r7   c                    | j         S r%   )r
  re   s    r5   r  zAccessDescription.access_method      ""r7   c                    | j         S r%   )r  re   s    r5   r  z!AccessDescription.access_location      $$r7   N)r  r   r  r   r"   rO   r   r   rH   r"   r   )r"   r   )
rY   rZ   r[   rS   r   r   r   r   r  r  rI   r7   r5   r   r     s        
0 
0 
0 
0
 
 
 

 
 
 
@ @ @ @ # # # X# % % % X% % %r7   r   c                  t    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dS )BasicConstraintscar   path_lengthr   r"   rO   c                    t          |t                    st          d          ||st          d          |*t          |t                    r|dk     rt          d          || _        || _        d S )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   r{   r   r;   _ca_path_length)r@   r  r  s      r5   rS   zBasicConstraints.__init__  s    "d## 	:8999"2"HIII";,, #0;aD   'r7   c                    | j         S r%   )r  re   s    r5   r  zBasicConstraints.ca  s	    xr7   c                    | j         S r%   )r  re   s    r5   r  zBasicConstraints.path_length        r7   r9   c                (    d| j          d| j         dS )Nz<BasicConstraints(ca=z, path_length=r   )r  r  re   s    r5   r   zBasicConstraints.__repr__  s/    0DG 0 0+0 0 0	
r7   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r  r   r  r  r   s     r5   r   zBasicConstraints.__eq__  s:    %!122 	"!!w%("Lt'75;L'LLr7   r;   c                8    t          | j        | j        f          S r%   )r   r  r  re   s    r5   r   zBasicConstraints.__hash__  s    TWd./000r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zBasicConstraints.public_bytes  r   r7   N)r  r   r  r   r"   rO   r"   r   r   r   r   rH   rf   )rY   rZ   r[   r   BASIC_CONSTRAINTSrN   rS   r   r  r  r   r   r   r'   rI   r7   r5   r  r    s        

(C( ( ( ("    X ! ! ! X!
 
 
 
M M M M1 1 1 16 6 6 6 6 6r7   r  c                  \    e Zd Zej        ZddZedd            Zdd
Z	ddZ
ddZddZdS )DeltaCRLIndicatorr   r;   r"   rO   c                \    t          |t                    st          d          || _        d S r   r   r   s     r5   rS   zDeltaCRLIndicator.__init__  r   r7   c                    | j         S r%   r   re   s    r5   r   zDeltaCRLIndicator.crl_number  r   r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r%  r   r   r   s     r5   r   zDeltaCRLIndicator.__eq__  s+    %!233 	"!!%"222r7   c                *    t          | j                  S r%   r   re   s    r5   r   zDeltaCRLIndicator.__hash__  r   r7   r9   c                    d| j          dS )Nz<DeltaCRLIndicator(crl_number=r   r   re   s    r5   r   zDeltaCRLIndicator.__repr__  s    CCCCCr7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zDeltaCRLIndicator.public_bytes  r   r7   Nr   rH   r   r   rf   )rY   rZ   r[   r   DELTA_CRL_INDICATORrN   rS   r   r   r   r   r   r'   rI   r7   r5   r%  r%    s        

*C& & & &       X 3 3 3 3% % % %D D D D6 6 6 6 6 6r7   r%  c                  b    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dS )CRLDistributionPointsdistribution_points"typing.Iterable[DistributionPoint]r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r&   DistributionPointr   s     r5   r   z1CRLDistributionPoints.__init__.<locals>.<genexpr>   >       
 
12Jq+,,
 
 
 
 
 
r7   ?distribution_points must be a list of DistributionPoint objectsrn   r   r{   _distribution_pointsr@   r/  s     r5   rS   zCRLDistributionPoints.__init__  j     ##677 
 
6I
 
 
 
 
 	   
 %8!!!r7   r8  r9   c                    d| j          dS )Nz<CRLDistributionPoints(r   r8  re   s    r5   r   zCRLDistributionPoints.__repr__  s    F)BFFFFr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r.  r   r8  r   s     r5   r   zCRLDistributionPoints.__eq__  s,    %!677 	"!!(E,FFFr7   r;   c                D    t          t          | j                            S r%   r   r   r8  re   s    r5   r   zCRLDistributionPoints.__hash__      E$344555r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z"CRLDistributionPoints.public_bytes  r   r7   Nr/  r0  r"   rO   r   r   rH   rf   )rY   rZ   r[   r   CRL_DISTRIBUTION_POINTSrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r.  r.    s        

.C8 8 8 8 &<%;& &"GX{G G G GG G G G6 6 6 66 6 6 6 6 6r7   r.  c                  b    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dS )FreshestCRLr/  r0  r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r3  r   s     r5   r   z'FreshestCRL.__init__.<locals>.<genexpr>%  r5  r7   r6  r7  r9  s     r5   rS   zFreshestCRL.__init__!  r:  r7   r8  r9   c                    d| j          dS )Nz<FreshestCRL(r   r<  re   s    r5   r   zFreshestCRL.__repr__3  s    <t8<<<<r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   rE  r   r8  r   s     r5   r   zFreshestCRL.__eq__6  s+    %-- 	"!!(E,FFFr7   r;   c                D    t          t          | j                            S r%   r?  re   s    r5   r   zFreshestCRL.__hash__<  r@  r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zFreshestCRL.public_bytes?  r   r7   NrB  r   r   rH   rf   )rY   rZ   r[   r   FRESHEST_CRLrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   rE  rE    s        

#C8 8 8 8 &<%;& &"GX{= = = =G G G G6 6 6 66 6 6 6 6 6r7   rE  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dS ) r4  	full_namer   relative_name RelativeDistinguishedName | Nonereasonsfrozenset[ReasonFlags] | None
crl_issuerr"   rO   c                   |r|rt          d          |s|s|st          d          |7t          |          }t          d |D                       st          d          |r$t	          |t
                    st          d          |7t          |          }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
          || _
        || _        || _        || _        d S )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                    V  d S r%   r   r   s     r5   r   z-DistributionPoint.__init__.<locals>.<genexpr>X  s,      EEaz![11EEEEEEr7   z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamec              3  @   K   | ]}t          |t                    V  d S r%   r   r   s     r5   r   z-DistributionPoint.__init__.<locals>.<genexpr>e  s,      FFaz![11FFFFFFr7   z2crl_issuer must be None or a list of general namesc              3  @   K   | ]}t          |t                    V  d S r%   r&   ReasonFlagsr   s     r5   r   z-DistributionPoint.__init__.<locals>.<genexpr>l  s,      CCaz![11CCCCCCr7   z0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)r   rn   r   r{   r&   r   	frozensetrY  unspecifiedremove_from_crl
_full_name_relative_name_reasons_crl_issuer)r@   rN  rO  rQ  rS  s        r5   rS   zDistributionPoint.__init__D  s     	 	*    	 	z 	  
  YIEE9EEEEE E    	m-FGG G   !j))JFF:FFFFF H    	P7I..	PCC7CCCCC	P NOOO 	#w..*g55$  
 $+%r7   r9   c                ,    d                     |           S )Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>formatre   s    r5   r   zDistributionPoint.__repr__~  s    **0&,,	
r7   r   r   r   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )r&   r4  r   rN  rO  rQ  rS  r   s     r5   r   zDistributionPoint.__eq__  sf    %!233 	"!! Neo- 4"e&994-4 5#33		
r7   r;   c                    | j         t          | j                   }nd }| j        t          | j                  }nd }t          || j        | j        |f          S r%   )rN  r   rS  r   rO  rQ  )r@   fnrS  s      r5   r   zDistributionPoint.__hash__  sZ    >%16t~1F1FBBB?&9>t9O9OJJJR+T\:FGGGr7   r   c                    | j         S r%   r]  re   s    r5   rN  zDistributionPoint.full_name  
    r7   c                    | j         S r%   r^  re   s    r5   rO  zDistributionPoint.relative_name  r  r7   c                    | j         S r%   )r_  re   s    r5   rQ  zDistributionPoint.reasons  s
    }r7   c                    | j         S r%   )r`  re   s    r5   rS  zDistributionPoint.crl_issuer  r   r7   N)
rN  r   rO  rP  rQ  rR  rS  r   r"   rO   r   r   rH   r   r"   rP  r"   rR  )rY   rZ   r[   rS   r   r   r   r   rN  rO  rQ  rS  rI   r7   r5   r4  r4  C  s        8& 8& 8& 8&t
 
 
 
	
 	
 	
 	
H H H H    X # # # X#    X       X     r7   r4  c                  6    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS )rY  r[  keyCompromisecACompromiseaffiliationChanged
supersededcessationOfOperationcertificateHoldprivilegeWithdrawnaACompromiseremoveFromCRLN)rY   rZ   r[   r[  key_compromiseca_compromiseaffiliation_changedrt  cessation_of_operationcertificate_holdprivilege_withdrawnaa_compromiser\  rI   r7   r5   rY  rY    sD        K$N"M.J3(."M%OOOr7   rY  )                        r  r  r  r  r  r  r  r  	   
   c                  t    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dS )PolicyConstraintsrequire_explicit_policyr   inhibit_policy_mappingr"   rO   c                    |$t          |t                    st          d          |$t          |t                    st          d          ||t          d          || _        || _        d S )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&   r;   r{   r   _require_explicit_policy_inhibit_policy_mapping)r@   r  r  s      r5   rS   zPolicyConstraints.__init__  s    
 #.z#S8
 8
.   
 "-j"C7
 7
- O   ").E.M:  
 )@%'=$$$r7   r9   c                ,    d                     |           S )Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>rb  re   s    r5   r   zPolicyConstraints.__repr__  s    	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r  r   r  r  r   s     r5   r   zPolicyConstraints.__eq__  sD    %!233 	"!! (E,II L+u/KK	
r7   r;   c                8    t          | j        | j        f          S r%   )r   r  r  re   s    r5   r   zPolicyConstraints.__hash__'  s"    )4+FG
 
 	
r7   c                    | j         S r%   )r  re   s    r5   r  z)PolicyConstraints.require_explicit_policy,  s    ,,r7   c                    | j         S r%   )r  re   s    r5   r  z(PolicyConstraints.inhibit_policy_mapping0      ++r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zPolicyConstraints.public_bytes4  r   r7   N)r  r   r  r   r"   rO   r   r   rH   r   rf   )rY   rZ   r[   r   POLICY_CONSTRAINTSrN   rS   r   r   r   r   r  r  r'   rI   r7   r5   r  r    s        

)C> > > >:
 
 
 

 
 
 

 
 
 

 - - - X- , , , X,6 6 6 6 6 6r7   r  c                  b    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dS )CertificatePoliciespolicies"typing.Iterable[PolicyInformation]r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   )r&   PolicyInformationr   s     r5   r   z/CertificatePolicies.__init__.<locals>.<genexpr>=  s-      FF:a!233FFFFFFr7   z;Every item in the policies list must be a PolicyInformation)rn   r   r{   	_policies)r@   r  s     r5   rS   zCertificatePolicies.__init__;  sP    >>FFXFFFFF 	$  
 "r7   r  r9   c                    d| j          dS )Nz<CertificatePolicies(r   )r  re   s    r5   r   zCertificatePolicies.__repr__G      9t~9999r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zCertificatePolicies.__eq__J  s*    %!455 	"!!~00r7   r;   c                D    t          t          | j                            S r%   )r   r   r  re   s    r5   r   zCertificatePolicies.__hash__P      E$.))***r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z CertificatePolicies.public_bytesS  r   r7   N)r  r  r"   rO   r   r   rH   rf   )rY   rZ   r[   r   CERTIFICATE_POLICIESrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r  r  8  s        

+C" " " " &<%;K%H%H"GX{: : : :1 1 1 1+ + + +6 6 6 6 6 6r7   r  c                  ^    e Zd ZddZdd	ZddZddZedd            Zedd            Z	dS )r  policy_identifierr   policy_qualifiers(typing.Iterable[str | UserNotice] | Noner"   rO   c                    t          |t                    st          d          || _        |7t	          |          }t          d |D                       st          d          || _        d S )Nz-policy_identifier must be an ObjectIdentifierc              3  N   K   | ] }t          |t          t          f          V  !d S r%   )r&   r9   
UserNoticer   s     r5   r   z-PolicyInformation.__init__.<locals>.<genexpr>d  sB        56
1sJ/00     r7   zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r&   r   r{   _policy_identifierrn   r   _policy_qualifiers)r@   r  r  s      r5   rS   zPolicyInformation.__init__X  s    
 +-=>> 	MKLLL"3( $%6 7 7  :K       1  
 #4r7   r9   c                (    d| j          d| j         dS )Nz%<PolicyInformation(policy_identifier=z, policy_qualifiers=r   )r  r  re   s    r5   r   zPolicyInformation.__repr__n  s0    <D4J < <!%!7< < <	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r  r   r  r  r   s     r5   r   zPolicyInformation.__eq__t  sD    %!233 	"!! "e&== B&%*AA	
r7   r;   c                j    | j         t          | j                   }nd }t          | j        |f          S r%   )r  r   r   r  )r@   pqs     r5   r   zPolicyInformation.__hash__}  s?    !-6;&7 7BB BT+R0111r7   c                    | j         S r%   )r  re   s    r5   r  z#PolicyInformation.policy_identifier      &&r7   list[str | UserNotice] | Nonec                    | j         S r%   )r  re   s    r5   r  z#PolicyInformation.policy_qualifiers       &&r7   N)r  r   r  r  r"   rO   r   r   rH   r  )r"   r  )
rY   rZ   r[   rS   r   r   r   r   r  r  rI   r7   r5   r  r  W  s        4 4 4 4,
 
 
 

 
 
 
2 2 2 2 ' ' ' X' ' ' ' X' ' 'r7   r  c                  ^    e Zd ZddZdd	ZddZddZedd            Zedd            Z	dS )r  notice_referenceNoticeReference | Noneexplicit_text
str | Noner"   rO   c                n    |r$t          |t                    st          d          || _        || _        d S )Nz2notice_reference must be None or a NoticeReference)r&   NoticeReferencer{   _notice_reference_explicit_text)r@   r  r  s      r5   rS   zUserNotice.__init__  sQ    
  	Jo%
 %
 	 D   "2+r7   r9   c                (    d| j          d| j        dS )Nz<UserNotice(notice_reference=z, explicit_text=r   )r  r  re   s    r5   r   zUserNotice.__repr__  s0    6D,A 6 6!/6 6 6	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r  r   r  r  r   s     r5   r   zUserNotice.__eq__  sB    %,, 	"!! !U%;; :"e&99	
r7   r;   c                8    t          | j        | j        f          S r%   )r   r  r  re   s    r5   r   zUserNotice.__hash__  s    T*D,>?@@@r7   c                    | j         S r%   )r  re   s    r5   r  zUserNotice.notice_reference      %%r7   c                    | j         S r%   )r  re   s    r5   r  zUserNotice.explicit_text  r  r7   N)r  r  r  r  r"   rO   r   r   rH   )r"   r  r"   r  )
rY   rZ   r[   rS   r   r   r   r   r  r  rI   r7   r5   r  r    s        , , , ,
 
 
 

 
 
 
A A A A & & & X& # # # X# # #r7   r  c                  ^    e Zd ZddZdd	ZddZddZedd            Zedd            Z	dS )r  organizationr  notice_numberstyping.Iterable[int]r"   rO   c                    || _         t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   )r&   r;   r   s     r5   r   z+NoticeReference.__init__.<locals>.<genexpr>  s,      >>!:a%%>>>>>>r7   z)notice_numbers must be a list of integers)_organizationrn   r   r{   _notice_numbers)r@   r  r  s      r5   rS   zNoticeReference.__init__  sV    
 *n-->>~>>>>> 	IGHHH-r7   r9   c                (    d| j         d| j         dS )Nz<NoticeReference(organization=z, notice_numbers=r   )r  r  re   s    r5   r   zNoticeReference.__repr__  s0    6T-> 6 6"16 6 6	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r  r   r  r  r   s     r5   r   zNoticeReference.__eq__  sB    %11 	"!! !33 <#u';;	
r7   r;   c                R    t          | j        t          | j                  f          S r%   )r   r  r   r  re   s    r5   r   zNoticeReference.__hash__  s#    T&d.A(B(BCDDDr7   c                    | j         S r%   )r  re   s    r5   r  zNoticeReference.organization      !!r7   	list[int]c                    | j         S r%   )r  re   s    r5   r  zNoticeReference.notice_numbers  r   r7   N)r  r  r  r  r"   rO   r   r   rH   r  )r"   r  )
rY   rZ   r[   rS   r   r   r   r   r  r  rI   r7   r5   r  r    s        
. 
. 
. 
.
 
 
 

 
 
 
E E E E " " " X" $ $ $ X$ $ $r7   r  c                  b    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dS )ExtendedKeyUsageusages!typing.Iterable[ObjectIdentifier]r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r&   r   r   s     r5   r   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>  s-      CCq:a!122CCCCCCr7   z9Every item in the usages list must be an ObjectIdentifier)rn   r   r{   _usages)r@   r  s     r5   rS   zExtendedKeyUsage.__init__  sN    fCCFCCCCC 	K   r7   r  r9   c                    d| j          dS )Nz<ExtendedKeyUsage(r   )r  re   s    r5   r   zExtendedKeyUsage.__repr__      4DL4444r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zExtendedKeyUsage.__eq__  s*    %!122 	"!!|u},,r7   r;   c                D    t          t          | j                            S r%   )r   r   r  re   s    r5   r   zExtendedKeyUsage.__hash__  s    E$,''(((r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zExtendedKeyUsage.public_bytes  r   r7   N)r  r  r"   rO   r   r   rH   rf   )rY   rZ   r[   r   EXTENDED_KEY_USAGErN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r  r    s        

)C    &<%;I%F%F"GX{5 5 5 5- - - -) ) ) )6 6 6 6 6 6r7   r  c                  <    e Zd Zej        ZddZddZdd	ZddZ	dS )OCSPNoCheckr   r   r"   r   c                >    t          |t                    st          S dS NT)r&   r  r   r   s     r5   r   zOCSPNoCheck.__eq__  s    %-- 	"!!tr7   r;   c                *    t          t                    S r%   )r   r  re   s    r5   r   zOCSPNoCheck.__hash__  s    K   r7   r9   c                    dS )Nz<OCSPNoCheck()>rI   re   s    r5   r   zOCSPNoCheck.__repr__  s      r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zOCSPNoCheck.public_bytes  r   r7   Nr   rH   r   rf   )
rY   rZ   r[   r   OCSP_NO_CHECKrN   r   r   r   r'   rI   r7   r5   r  r    sl        

$C   ! ! ! !! ! ! !6 6 6 6 6 6r7   r  c                  <    e Zd Zej        ZddZddZdd	ZddZ	dS )PrecertPoisonr   r   r"   r   c                >    t          |t                    st          S dS r  )r&   r  r   r   s     r5   r   zPrecertPoison.__eq__  s    %// 	"!!tr7   r;   c                *    t          t                    S r%   )r   r  re   s    r5   r   zPrecertPoison.__hash__  s    M"""r7   r9   c                    dS )Nz<PrecertPoison()>rI   re   s    r5   r   zPrecertPoison.__repr__"  s    ""r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zPrecertPoison.public_bytes%  r   r7   Nr   rH   r   rf   )
rY   rZ   r[   r   PRECERT_POISONrN   r   r   r   r'   rI   r7   r5   r  r    sl        

%C   # # # ## # # #6 6 6 6 6 6r7   r  c                  b    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dS )
TLSFeaturefeaturestyping.Iterable[TLSFeatureType]r"   rO   c                    t          |          }t          d |D                       rt          |          dk    rt          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   )r&   TLSFeatureTyper   s     r5   r   z&TLSFeature.__init__.<locals>.<genexpr>/  s,      DDaJq.11DDDDDDr7   r   z@features must be a list of elements from the TLSFeatureType enum)rn   r   r=   r{   	_features)r@   r  s     r5   rS   zTLSFeature.__init__,  sa    >>DD8DDDDD	8}}!!  
 "r7   r  r9   c                    d| j          dS )Nz<TLSFeature(features=r   )r  re   s    r5   r   zTLSFeature.__repr__;  r  r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zTLSFeature.__eq__>  s)    %,, 	"!!~00r7   r;   c                D    t          t          | j                            S r%   )r   r   r  re   s    r5   r   zTLSFeature.__hash__D  r  r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zTLSFeature.public_bytesG  r   r7   N)r  r  r"   rO   r   r   rH   rf   )rY   rZ   r[   r   TLS_FEATURErN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r  r  )  s        

"C" " " " &<%;K%H%H"GX{: : : :1 1 1 1+ + + +6 6 6 6 6 6r7   r  c                      e Zd ZdZdZdS )r  r     N)rY   rZ   r[   status_requeststatus_request_v2rI   r7   r5   r  r  K  s         N r7   r  c                    i | ]
}|j         |S rI   r|   r   s     r5   
<dictcomp>r
  V  s    @@@AQWa@@@r7   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dS )InhibitAnyPolicy
skip_certsr;   r"   rO   c                    t          |t                    st          d          |dk     rt          d          || _        d S )Nzskip_certs must be an integerr   z)skip_certs must be a non-negative integer)r&   r;   r{   r   _skip_certs)r@   r  s     r5   rS   zInhibitAnyPolicy.__init__\  sI    *c** 	=;<<<>>HIII%r7   r9   c                    d| j          dS )Nz<InhibitAnyPolicy(skip_certs=r   )r  re   s    r5   r   zInhibitAnyPolicy.__repr__e  s    BtBBBBr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zInhibitAnyPolicy.__eq__h  s+    %!122 	"!!%"222r7   c                *    t          | j                  S r%   )r   r  re   s    r5   r   zInhibitAnyPolicy.__hash__n  r   r7   c                    | j         S r%   )r  re   s    r5   r  zInhibitAnyPolicy.skip_certsq  r   r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zInhibitAnyPolicy.public_bytesu  r   r7   N)r  r;   r"   rO   r   r   rH   rf   )rY   rZ   r[   r   INHIBIT_ANY_POLICYrN   rS   r   r   r   r   r  r'   rI   r7   r5   r  r  Y  s        

)C& & & &C C C C3 3 3 3% % % %       X 6 6 6 6 6 6r7   r  c                     e Zd Zej        Zd!dZed"d            Zed"d            Z	ed"d            Z
ed"d            Zed"d            Zed"d            Zed"d            Zed"d            Zed"d            Zd#dZd$dZd%dZd&dZd S )'KeyUsagedigital_signaturer   content_commitmentkey_enciphermentdata_enciphermentkey_agreementkey_cert_signcrl_signencipher_onlydecipher_onlyr"   rO   c
                    |s|s|	rt          d          || _        || _        || _        || _        || _        || _        || _        || _        |	| _	        d S )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@   r  r  r  r  r  r  r  r  r   s
             r5   rS   zKeyUsage.__init__|  s      	- 	= 	(  
 #4#5 !1"3++!++r7   c                    | j         S r%   )r"  re   s    r5   r  zKeyUsage.digital_signature  r  r7   c                    | j         S r%   )r#  re   s    r5   r  zKeyUsage.content_commitment  s    ''r7   c                    | j         S r%   )r$  re   s    r5   r  zKeyUsage.key_encipherment  r  r7   c                    | j         S r%   )r%  re   s    r5   r  zKeyUsage.data_encipherment  r  r7   c                    | j         S r%   )r&  re   s    r5   r  zKeyUsage.key_agreement  r  r7   c                    | j         S r%   )r'  re   s    r5   r  zKeyUsage.key_cert_sign  r  r7   c                    | j         S r%   )r(  re   s    r5   r  zKeyUsage.crl_sign  
    ~r7   c                <    | j         st          d          | j        S )Nz7encipher_only is undefined unless key_agreement is true)r  r   r)  re   s    r5   r  zKeyUsage.encipher_only  -    ! 	'I   &&r7   c                <    | j         st          d          | j        S )Nz7decipher_only is undefined unless key_agreement is true)r  r   r*  re   s    r5   r   zKeyUsage.decipher_only  r4  r7   r9   c                    	 | j         }| j        }n# t          $ r d}d}Y nw xY wd| j         d| j         d| j         d| j         d| j         d| j         d| j	         d	| d
| dS )NFz<KeyUsage(digital_signature=z, content_commitment=z, key_encipherment=z, data_encipherment=z, key_agreement=z, key_cert_sign=z, crl_sign=z, encipher_only=z, decipher_only=r   )
r  r   r   r  r  r  r  r  r  r  )r@   r  r   s      r5   r   zKeyUsage.__repr__  s    	" .M .MM 	" 	" 	" "M!MMM	"N4+A N N"&"9N N $ 5N N "&!7N N "/	N N
 "/N N
 =AMN N +N N =JN N N	
s    ""r   r   c                Z   t          |t                    st          S | j        |j        k    o| j        |j        k    oo| j        |j        k    o_| j        |j        k    oO| j        |j        k    o?| j        |j        k    o/| j	        |j	        k    o| j
        |j
        k    o| j        |j        k    S r%   )r&   r  r   r  r  r  r  r  r  r  r)  r*  r   s     r5   r   zKeyUsage.__eq__  s    %** 	"!! "e&== <'5+CC<%)??< &%*AA< "e&99	<
 "e&99< /< #u';;< #u';;
	
r7   r;   c                    t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        f	          S r%   )
r   r  r  r  r  r  r  r  r)  r*  re   s    r5   r   zKeyUsage.__hash__  sN    &'%&""##

 
 	
r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zKeyUsage.public_bytes  r   r7   N)r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   r   r   r"   rO   r"  r   r   rH   rf   )rY   rZ   r[   r   	KEY_USAGErN   rS   r   r  r  r  r  r  r  r  r  r   r   r   r   r'   rI   r7   r5   r  r  y  s       

 C, , , ,8 ' ' ' X' ( ( ( X( & & & X& ' ' ' X' # # # X# # # # X#    X ' ' ' X' ' ' ' X'
 
 
 
*
 
 
 
 
 
 
 
6 6 6 6 6 6r7   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dS )!NameConstraintspermitted_subtreesr   excluded_subtreesr"   rO   c                   |]t          |          }|st          d          t          d |D                       st          d          |                     |           |]t          |          }|st          d          t          d |D                       st          d          |                     |           ||t          d          || _        || _        d S )Nz3permitted_subtrees must be a non-empty list or Nonec              3  @   K   | ]}t          |t                    V  d S r%   r   r   s     r5   r   z+NameConstraints.__init__.<locals>.<genexpr>  s,      NNaz![11NNNNNNr7   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                    V  d S r%   r   r   s     r5   r   z+NameConstraints.__init__.<locals>.<genexpr>  ,      MMaz![11MMMMMMr7   z?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)rn   r   r   r{   _validate_tree_permitted_subtrees_excluded_subtrees)r@   r=  r>  s      r5   rS   zNameConstraints.__init__  sC   
 )!%&8!9!9%  I   NN;MNNNNN   
  2333( $%6 7 7$  H   MM;LMMMMM   
  1222%*;*C#  
 $6 "3r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r<  r   r>  r=  r   s     r5   r   zNameConstraints.__eq__+  sC    %11 	"!! "e&== D'5+CC	
r7   treetyping.Iterable[GeneralName]c                Z    |                      |           |                     |           d S r%   )_validate_ip_name_validate_dns_namer@   rG  s     r5   rC  zNameConstraints._validate_tree4  s0    t$$$%%%%%r7   c                V    t          d |D                       rt          d          d S )Nc              3     K   | ]E}t          |t                    o+t          |j        t          j        t          j        f           V  Fd S r%   )r&   r   r|   	ipaddressIPv4NetworkIPv6Networkr   names     r5   r   z4NameConstraints._validate_ip_name.<locals>.<genexpr>9  sk       
 

 	 tY'' 
Y2I4IJ  
 
 
 
 
 
r7   zGIPAddress name constraints must be an IPv4Network or IPv6Network object)anyr{   rL  s     r5   rJ  z!NameConstraints._validate_ip_name8  sU     
 

 
 
 
 
 
 
	 &  
	 
	r7   c                V    t          d |D                       rt          d          d S )Nc              3  R   K   | ]"}t          |t                    od |j        v V  #dS )*N)r&   r   r|   rR  s     r5   r   z5NameConstraints._validate_dns_name.<locals>.<genexpr>F  sI       
 
@DJtW%%;#*;
 
 
 
 
 
r7   zDDNSName name constraints must not contain the '*' wildcard character)rT  r   rL  s     r5   rK  z"NameConstraints._validate_dns_nameE  sS     
 
HL
 
 
 
 
 	   	 	r7   r9   c                (    d| j          d| j         dS )Nz$<NameConstraints(permitted_subtrees=z, excluded_subtrees=r   )r=  r>  re   s    r5   r   zNameConstraints.__repr__N  s0    <43J < <!%!7< < <	
r7   r;   c                    | j         t          | j                   }nd }| j        t          | j                  }nd }t          ||f          S r%   )r=  r   r>  r   )r@   psess      r5   r   zNameConstraints.__hash__T  sR    ".16t7N1O1OBBB!-16t7M1N1NBBBRH~~r7   r   c                    | j         S r%   )rD  re   s    r5   r=  z"NameConstraints.permitted_subtreesa  s     ''r7   c                    | j         S r%   )rE  re   s    r5   r>  z!NameConstraints.excluded_subtreesg  r  r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zNameConstraints.public_bytesm  r   r7   N)r=  r   r>  r   r"   rO   r   )rG  rH  r"   rO   r   rH   r   rf   )rY   rZ   r[   r   NAME_CONSTRAINTSrN   rS   r   rC  rJ  rK  r   r   r   r=  r>  r'   rI   r7   r5   r<  r<    s        

'C(4 (4 (4 (4T
 
 
 
& & & &      
 
 
 
    ( ( ( X(
 ' ' ' X'
6 6 6 6 6 6r7   r<  c                  v    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
dS )	ExtensionrN   r   criticalr   r|   r   r"   rO   c                    t          |t                    st          d          t          |t                    st          d          || _        || _        || _        d S )Nz2oid argument must be an ObjectIdentifier instance.z critical must be a boolean value)r&   r   r{   r   _oid	_critical_value)r@   rN   rb  r|   s       r5   rS   zExtension.__init__r  si     #/00 	D   (D)) 	@>???	!r7   c                    | j         S r%   rd  re   s    r5   rN   zExtension.oid  
    yr7   c                    | j         S r%   )re  re   s    r5   rb  zExtension.critical  r2  r7   c                    | j         S r%   rf  re   s    r5   r|   zExtension.value  
    {r7   r9   c                8    d| j          d| j         d| j         dS )Nz<Extension(oid=z, critical=, value=r   )rN   rb  r|   re   s    r5   r   zExtension.__repr__  s<    $dh $ $4= $ $Z$ $ $	
r7   r   r   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )r&   ra  r   rN   rb  r|   r   s     r5   r   zExtension.__eq__  sO    %++ 	"!! H	! */*
ek)	
r7   r;   c                D    t          | j        | j        | j        f          S r%   )r   rN   rb  r|   re   s    r5   r   zExtension.__hash__  s    TXt}dj9:::r7   N)rN   r   rb  r   r|   r   r"   rO   r  r"  )r"   r   r   r   rH   )rY   rZ   r[   rS   r   rN   rb  r|   r   r   r   rI   r7   r5   ra  ra  q  s               X    X    X
 
 
 

 
 
 
; ; ; ; ; ;r7   ra  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d"S )-GeneralNamesgeneral_namesrH  r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r   r   s     r5   r   z(GeneralNames.__init__.<locals>.<genexpr>  s,      EE!:a--EEEEEEr7   z^Every item in the general_names list must be an object conforming to the GeneralName interface)rn   r   r{   _general_namesr@   rt  s     r5   rS   zGeneralNames.__init__  sV    ]++EE}EEEEE 	A  
 ,r7   rw  typeBtype[DNSName] | type[UniformResourceIdentifier] | type[RFC822Name]	list[str]c                    d S r%   rI   r@   ry  s     r5   get_values_for_typez GeneralNames.get_values_for_type  	     Cr7   type[DirectoryName]
list[Name]c                    d S r%   rI   r}  s     r5   r~  z GeneralNames.get_values_for_type  	     Sr7   type[RegisteredID]list[ObjectIdentifier]c                    d S r%   rI   r}  s     r5   r~  z GeneralNames.get_values_for_type  	     "%r7   type[IPAddress]list[_IPAddressTypes]c                    d S r%   rI   r}  s     r5   r~  z GeneralNames.get_values_for_type  	     !$r7   type[OtherName]list[OtherName]c                    d S r%   rI   r}  s     r5   r~  z GeneralNames.get_values_for_type  	     #r7   type[DNSName] | type[DirectoryName] | type[IPAddress] | type[OtherName] | type[RFC822Name] | type[RegisteredID] | type[UniformResourceIdentifier]Ylist[_IPAddressTypes] | list[str] | list[OtherName] | list[Name] | list[ObjectIdentifier]c                l    fd| D             }t           k    rd |D             S t          |          S )Nc              3  <   K   | ]}t          |          |V  d S r%   )r&   )r   iry  s     r5   r   z3GeneralNames.get_values_for_type.<locals>.<genexpr>  s2      77a:a#6#67777777r7   c                    g | ]	}|j         
S rI   r	  )r   r  s     r5   
<listcomp>z4GeneralNames.get_values_for_type.<locals>.<listcomp>  s    ***AG***r7   )r   rn   )r@   ry  objss    ` r5   r~  z GeneralNames.get_values_for_type  sI    & 877747779**T****Dzzr7   r9   c                    d| j          dS )Nz<GeneralNames(r   rw  re   s    r5   r   zGeneralNames.__repr__  s    7 37777r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   rs  r   rw  r   s     r5   r   zGeneralNames.__eq__  s+    %.. 	"!!"e&:::r7   r;   c                D    t          t          | j                            S r%   )r   r   rw  re   s    r5   r   zGeneralNames.__hash__  s    E$-..///r7   Nrt  rH  r"   rO   ry  rz  r"   r{  ry  r  r"   r  ry  r  r"   r  ry  r  r"   r  ry  r  r"   r  ry  r  r"   r  r   r   rH   )rY   rZ   r[   rS   rJ   r   r   r   typingoverloadr~  r   r   r   rI   r7   r5   rs  rs    s:       , , , , &<%;<L%M%M"GX{_   _ _   _
 _% % % _%
 _$ $ $ _$ _   _   08 8 8 8; ; ; ;0 0 0 0 0 0r7   rs  c                     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d$S )0SubjectAlternativeNamert  rH  r"   rO   c                .    t          |          | _        d S r%   rs  rw  rx  s     r5   rS   zSubjectAlternativeName.__init__      *=99r7   rw  ry  rz  r{  c                    d S r%   rI   r}  s     r5   r~  z*SubjectAlternativeName.get_values_for_type  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z*SubjectAlternativeName.get_values_for_type  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z*SubjectAlternativeName.get_values_for_type  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z*SubjectAlternativeName.get_values_for_type  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z*SubjectAlternativeName.get_values_for_type  r  r7   r  r  c                6    | j                             |          S r%   rw  r~  r}  s     r5   r~  z*SubjectAlternativeName.get_values_for_type        "66t<<<r7   r9   c                    d| j          dS )Nz<SubjectAlternativeName(r   r  re   s    r5   r   zSubjectAlternativeName.__repr__)  s    A$*=AAAAr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   rw  r   s     r5   r   zSubjectAlternativeName.__eq__,  s,    %!788 	"!!"e&:::r7   r;   c                *    t          | j                  S r%   r   rw  re   s    r5   r   zSubjectAlternativeName.__hash__2      D'(((r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z#SubjectAlternativeName.public_bytes5  r   r7   Nr  r  r  r  r  r  r  r   r   rH   rf   )rY   rZ   r[   r   SUBJECT_ALTERNATIVE_NAMErN   rS   rJ   r   r   r   r  r  r~  r   r   r   r'   rI   r7   r5   r  r    sZ       

/C: : : : &<%;<L%M%M"GX{_   _ _   _
 _% % % _%
 _$ $ $ _$ _   _= = = =$B B B B; ; ; ;) ) ) )6 6 6 6 6 6r7   r  c                     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d$S )0IssuerAlternativeNamert  rH  r"   rO   c                .    t          |          | _        d S r%   r  rx  s     r5   rS   zIssuerAlternativeName.__init__<  r  r7   rw  ry  rz  r{  c                    d S r%   rI   r}  s     r5   r~  z)IssuerAlternativeName.get_values_for_typeA  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z)IssuerAlternativeName.get_values_for_typeI  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z)IssuerAlternativeName.get_values_for_typeO  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z)IssuerAlternativeName.get_values_for_typeU  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z)IssuerAlternativeName.get_values_for_typeZ  r  r7   r  r  c                6    | j                             |          S r%   r  r}  s     r5   r~  z)IssuerAlternativeName.get_values_for_type_  r  r7   r9   c                    d| j          dS )Nz<IssuerAlternativeName(r   r  re   s    r5   r   zIssuerAlternativeName.__repr__q  s    @)<@@@@r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   rw  r   s     r5   r   zIssuerAlternativeName.__eq__t  s,    %!677 	"!!"e&:::r7   r;   c                *    t          | j                  S r%   r  re   s    r5   r   zIssuerAlternativeName.__hash__z  r  r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z"IssuerAlternativeName.public_bytes}  r   r7   Nr  r  r  r  r  r  r  r   r   rH   rf   )rY   rZ   r[   r   ISSUER_ALTERNATIVE_NAMErN   rS   rJ   r   r   r   r  r  r~  r   r   r   r'   rI   r7   r5   r  r  9  sZ       

.C: : : : &<%;<L%M%M"GX{_   _ _   _
 _% % % _%
 _$ $ $ _$ _   _= = = =$A A A A; ; ; ;) ) ) )6 6 6 6 6 6r7   r  c                     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d$S )0CertificateIssuerrt  rH  r"   rO   c                .    t          |          | _        d S r%   r  rx  s     r5   rS   zCertificateIssuer.__init__  r  r7   rw  ry  rz  r{  c                    d S r%   rI   r}  s     r5   r~  z%CertificateIssuer.get_values_for_type  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z%CertificateIssuer.get_values_for_type  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z%CertificateIssuer.get_values_for_type  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z%CertificateIssuer.get_values_for_type  r  r7   r  r  c                    d S r%   rI   r}  s     r5   r~  z%CertificateIssuer.get_values_for_type  r  r7   r  r  c                6    | j                             |          S r%   r  r}  s     r5   r~  z%CertificateIssuer.get_values_for_type  r  r7   r9   c                    d| j          dS )Nz<CertificateIssuer(r   r  re   s    r5   r   zCertificateIssuer.__repr__  s    <T%8<<<<r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   rw  r   s     r5   r   zCertificateIssuer.__eq__  s,    %!233 	"!!"e&:::r7   r;   c                *    t          | j                  S r%   r  re   s    r5   r   zCertificateIssuer.__hash__  r  r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zCertificateIssuer.public_bytes  r   r7   Nr  r  r  r  r  r  r  r   r   rH   rf   )rY   rZ   r[   r   CERTIFICATE_ISSUERrN   rS   rJ   r   r   r   r  r  r~  r   r   r   r'   rI   r7   r5   r  r    sV       

1C: : : : &<%;<L%M%M"GX{_   _ _   _
 _% % % _%
 _$ $ $ _$ _   _= = = =$= = = =; ; ; ;) ) ) )6 6 6 6 6 6r7   r  c                  \    e Zd Zej        ZddZddZddZddZ	e
dd            ZddZdS )	CRLReasonreasonrY  r"   rO   c                \    t          |t                    st          d          || _        d S )Nz*reason must be an element from ReasonFlags)r&   rY  r{   _reason)r@   r  s     r5   rS   zCRLReason.__init__  s/    &+.. 	JHIIIr7   r9   c                    d| j          dS )Nz<CRLReason(reason=r   r  re   s    r5   r   zCRLReason.__repr__  r  r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zCRLReason.__eq__  s)    %++ 	"!!{el**r7   r;   c                *    t          | j                  S r%   )r   r  re   s    r5   r   zCRLReason.__hash__  r   r7   c                    | j         S r%   r  re   s    r5   r  zCRLReason.reason  r   r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zCRLReason.public_bytes  r   r7   N)r  rY  r"   rO   r   r   rH   )r"   rY  rf   )rY   rZ   r[   r   
CRL_REASONrN   rS   r   r   r   r   r  r'   rI   r7   r5   r  r    s        

)C   5 5 5 5+ + + +! ! ! !    X6 6 6 6 6 6r7   r  c                  t    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dS )InvalidityDateinvalidity_datedatetime.datetimer"   rO   c                f    t          |t          j                  st          d          || _        d S )Nz+invalidity_date must be a datetime.datetime)r&   datetimer{   _invalidity_date)r@   r  s     r5   rS   zInvalidityDate.__init__  s5    /8+<== 	KIJJJ /r7   r9   c                    d| j          dS )Nz <InvalidityDate(invalidity_date=r   r  re   s    r5   r   zInvalidityDate.__repr__  s    K$2GKKKKr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zInvalidityDate.__eq__  s+    %00 	"!!#u'<<<r7   r;   c                *    t          | j                  S r%   )r   r  re   s    r5   r   zInvalidityDate.__hash__  s    D()))r7   c                    | j         S r%   r  re   s    r5   r  zInvalidityDate.invalidity_date  r  r7   c                    | j         j        *| j                             t          j        j                  S | j                             t          j        j                  S )N)tzinfo)tz)r  r  replacer  timezoneutc
astimezonere   s    r5   invalidity_date_utcz"InvalidityDate.invalidity_date_utc  sN     '/(008I8M0NNN(33x7H7L3MMMr7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   zInvalidityDate.public_bytes  r   r7   N)r  r  r"   rO   r   r   rH   )r"   r  rf   )rY   rZ   r[   r   INVALIDITY_DATErN   rS   r   r   r   r   r  r  r'   rI   r7   r5   r  r    s        

.C0 0 0 0L L L L= = = =* * * * % % % X% N N N XN6 6 6 6 6 6r7   r  c                  b    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dS ))PrecertificateSignedCertificateTimestampssigned_certificate_timestamps+typing.Iterable[SignedCertificateTimestamp]r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r&   r   r   scts     r5   r   zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>  A       
 
 s677
 
 
 
 
 
r7   YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamprn   r   r{   _signed_certificate_timestampsr@   r  s     r5   rS   z2PrecertificateSignedCertificateTimestamps.__init__  k     )--J(K(K% 
 
4
 
 
 
 
 	 /   /L+++r7   r  r9   c                (    dt          |            dS )Nz+<PrecertificateSignedCertificateTimestamps(r   rn   re   s    r5   r   z2PrecertificateSignedCertificateTimestamps.__repr__"  s    KT$ZZKKKKr7   r;   c                D    t          t          | j                            S r%   r   r   r  re   s    r5   r   z2PrecertificateSignedCertificateTimestamps.__hash__%      E$=>>???r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   z0PrecertificateSignedCertificateTimestamps.__eq__(  s3    %!JKK 	"!! /34	
r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z6PrecertificateSignedCertificateTimestamps.public_bytes1  r   r7   Nr  r  r"   rO   r   rH   r   rf   )rY   rZ   r[   r   %PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r  r  
  s        

<CL L L L" &<%;(& &"GX{L L L L@ @ @ @
 
 
 
6 6 6 6 6 6r7   r  c                  b    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dS )SignedCertificateTimestampsr  r  r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r  r  s     r5   r   z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>?  r   r7   r  r  r  s     r5   rS   z$SignedCertificateTimestamps.__init__8  r  r7   r  r9   c                (    dt          |            dS )Nz<SignedCertificateTimestamps(r   r  re   s    r5   r   z$SignedCertificateTimestamps.__repr__M  s    =tDzz====r7   r;   c                D    t          t          | j                            S r%   r	  re   s    r5   r   z$SignedCertificateTimestamps.__hash__P  r
  r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   z"SignedCertificateTimestamps.__eq__S  s3    %!<== 	"!! /34	
r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z(SignedCertificateTimestamps.public_bytes\  r   r7   Nr  r   rH   r   rf   )rY   rZ   r[   r   SIGNED_CERTIFICATE_TIMESTAMPSrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r  r  5  s        

4CL L L L" &<%;(& &"GX{> > > >@ @ @ @
 
 
 
6 6 6 6 6 6r7   r  c                  \    e Zd Zej        ZddZdd	ZddZddZ	e
dd            ZddZdS )	OCSPNoncenoncer#   r"   rO   c                \    t          |t                    st          d          || _        d S )Nznonce must be bytes)r&   r#   r{   _nonce)r@   r  s     r5   rS   zOCSPNonce.__init__c  s.    %'' 	31222r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zOCSPNonce.__eq__i  s)    %++ 	"!!zU[((r7   r;   c                *    t          | j                  S r%   )r   r  re   s    r5   r   zOCSPNonce.__hash__o  s    DJr7   r9   c                    d| j         dS )Nz<OCSPNonce(nonce=r   )r  re   s    r5   r   zOCSPNonce.__repr__r  s    34:3333r7   c                    | j         S r%   )r  re   s    r5   r  zOCSPNonce.nonceu  rm  r7   c                *    t          j        |           S r%   r   re   s    r5   r'   zOCSPNonce.public_bytesy  r   r7   N)r  r#   r"   rO   r   rH   r   rf   )rY   rZ   r[   r   NONCErN   rS   r   r   r   r   r  r'   rI   r7   r5   r  r  `  s        

 C   ) ) ) )       4 4 4 4    X6 6 6 6 6 6r7   r  c                  L    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S )OCSPAcceptableResponses	responsesr  r"   rO   c                    t          |          }t          d |D                       rt          d          || _        d S )Nc              3  B   K   | ]}t          |t                     V  d S r%   r  )r   rs     r5   r   z3OCSPAcceptableResponses.__init__.<locals>.<genexpr>  s0      FFq:a!1222FFFFFFr7   z'All responses must be ObjectIdentifiers)rn   rT  r{   
_responses)r@   r%  s     r5   rS   z OCSPAcceptableResponses.__init__  sG    OO	FFIFFFFF 	GEFFF#r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r$  r   r)  r   s     r5   r   zOCSPAcceptableResponses.__eq__  s+    %!899 	"!!%"222r7   r;   c                D    t          t          | j                            S r%   )r   r   r)  re   s    r5   r   z OCSPAcceptableResponses.__hash__  s    E$/**+++r7   r9   c                    d| j          dS )Nz#<OCSPAcceptableResponses(responses=r   )r)  re   s    r5   r   z OCSPAcceptableResponses.__repr__  s    HT_HHHHr7   !typing.Iterator[ObjectIdentifier]c                *    t          | j                  S r%   )rC   r)  re   s    r5   r   z OCSPAcceptableResponses.__iter__  r   r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z$OCSPAcceptableResponses.public_bytes  r   r7   N)r%  r  r"   rO   r   rH   r   )r"   r-  rf   )rY   rZ   r[   r   ACCEPTABLE_RESPONSESrN   rS   r   r   r   r   r'   rI   r7   r5   r$  r$  }  s        

/C$ $ $ $3 3 3 3, , , ,I I I I% % % %6 6 6 6 6 6r7   r$  c                      e Zd Zej        Zd!dZd"dZd#dZd$dZ	e
d%d            Ze
d&d            Ze
d'd            Ze
d'd            Ze
d(d            Ze
d'd            Ze
d'd            Zd)dZd S )*IssuingDistributionPointrN  r   rO  rP  only_contains_user_certsr   only_contains_ca_certsonly_some_reasonsrR  indirect_crlonly_contains_attribute_certsr"   rO   c           	        |t          |          }|r=t          |t                    rt          d |D                       st	          d          |r+t
          j        |v st
          j        |v rt          d          t          |t                    r?t          |t                    r*t          |t                    rt          |t                    st	          d          ||||g}t          d |D                       dk    rt          d          t          |||||||g          st          d          || _        || _        || _        || _        || _        || _        || _        d S )	Nc              3  @   K   | ]}t          |t                    V  d S r%   rX  r   s     r5   r   z4IssuingDistributionPoint.__init__.<locals>.<genexpr>  rB  r7   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.c                    g | ]}||S rI   rI   r   s     r5   r  z5IssuingDistributionPoint.__init__.<locals>.<listcomp>  s    000aa0000r7   r  zOnly one of the following can be set to True: only_contains_user_certs, only_contains_ca_certs, indirect_crl, only_contains_attribute_certszCannot create empty extension: if only_contains_user_certs, only_contains_ca_certs, indirect_crl, and only_contains_attribute_certs are all False, then either full_name, relative_name, or only_some_reasons must have a value.)rn   r&   rZ  r   r{   rY  r[  r\  r   r   r=   rT  _only_contains_user_certs_only_contains_ca_certs_indirect_crl_only_contains_attribute_certs_only_some_reasonsr]  r^  )	r@   rN  rO  r3  r4  r5  r6  r7  crl_constraintss	            r5   rS   z!IssuingDistributionPoint.__init__  s     YI 	,i88	MM;LMMMMM	 L    	#'888*.???+   /66
	1488
	 <..
	 8$??	
	 '   %")	
 00?00011A55>   (&-!

 

 	 %   *B&'=$).K+"3#+r7   r9   c                x    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   )rN  rO  r3  r4  r5  r6  r7  re   s    r5   r   z!IssuingDistributionPoint.__repr__  s    64> 6 6!/6 6(,(E6 6 '+&A6 6 "&!7	6 6
 !-6 6 16 6 6		
r7   r   r   c                   t          |t                    st          S | j        |j        k    o_| j        |j        k    oO| j        |j        k    o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j	        |j	        k    S r%   )
r&   r2  r   rN  rO  r3  r4  r5  r6  r7  r   s     r5   r   zIssuingDistributionPoint.__eq__  s    %!9:: 	"!! Neo- 3"e&993-1OO3 +u/KK3 &%*AA	3
 !U%773 223		
r7   r;   c           	     t    t          | j        | j        | j        | j        | j        | j        | j        f          S r%   )r   rN  rO  r3  r4  r5  r6  r7  re   s    r5   r   z!IssuingDistributionPoint.__hash__  sB    "-+&!2

 

 
	
r7   r   c                    | j         S r%   rh  re   s    r5   rN  z"IssuingDistributionPoint.full_name  ri  r7   c                    | j         S r%   rk  re   s    r5   rO  z&IssuingDistributionPoint.relative_name  r  r7   c                    | j         S r%   )r;  re   s    r5   r3  z1IssuingDistributionPoint.only_contains_user_certs   s    --r7   c                    | j         S r%   )r<  re   s    r5   r4  z/IssuingDistributionPoint.only_contains_ca_certs$  r  r7   c                    | j         S r%   )r?  re   s    r5   r5  z*IssuingDistributionPoint.only_some_reasons(  r  r7   c                    | j         S r%   )r=  re   s    r5   r6  z%IssuingDistributionPoint.indirect_crl.  r  r7   c                    | j         S r%   )r>  re   s    r5   r7  z6IssuingDistributionPoint.only_contains_attribute_certs2  s    22r7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z%IssuingDistributionPoint.public_bytes6  r   r7   N)rN  r   rO  rP  r3  r   r4  r   r5  rR  r6  r   r7  r   r"   rO   r   r   rH   r   rn  r"  ro  rf   )rY   rZ   r[   r   ISSUING_DISTRIBUTION_POINTrN   rS   r   r   r   r   rN  rO  r3  r4  r5  r6  r7  r'   rI   r7   r5   r2  r2    se       

1CQ, Q, Q, Q,f

 

 

 


 
 
 

 
 
 
    X # # # X# . . . X. , , , X, ' ' ' X'
 " " " X" 3 3 3 X36 6 6 6 6 6r7   r2  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dS )MSCertificateTemplatetemplate_idr   major_versionr   minor_versionr"   rO   c                    t          |t                    st          d          || _        |t          |t                    r|$t          |t                    st          d          || _        || _        d S )Noid must be an ObjectIdentifierz8major_version and minor_version must be integers or None)r&   r   r{   _template_idr;   _major_version_minor_version)r@   rO  rP  rQ  s       r5   rS   zMSCertificateTemplate.__init__=  s     +'788 	?=>>>'%j.L.L%%j.L.L%J   ,+r7   c                    | j         S r%   )rT  re   s    r5   rO  z!MSCertificateTemplate.template_idQ  r  r7   c                    | j         S r%   )rU  re   s    r5   rP  z#MSCertificateTemplate.major_versionU  r  r7   c                    | j         S r%   )rV  re   s    r5   rQ  z#MSCertificateTemplate.minor_versionY  r  r7   r9   c                8    d| j          d| j         d| j         dS )Nz#<MSCertificateTemplate(template_id=z, major_version=z, minor_version=r   )rO  rP  rQ  re   s    r5   r   zMSCertificateTemplate.__repr__]  s@    4$2B 4 4!/4 4!/4 4 4	
r7   r   r   r   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )r&   rN  r   rO  rP  rQ  r   s     r5   r   zMSCertificateTemplate.__eq__d  sV    %!677 	"!!  11 :"e&99:"e&99	
r7   r;   c                D    t          | j        | j        | j        f          S r%   )r   rO  rP  rQ  re   s    r5   r   zMSCertificateTemplate.__hash__n  s     T%t'94;MNOOOr7   r#   c                *    t          j        |           S r%   r   re   s    r5   r'   z"MSCertificateTemplate.public_bytesq  r   r7   N)rO  r   rP  r   rQ  r   r"   rO   r  r   r   r   rH   rf   )rY   rZ   r[   r   MS_CERTIFICATE_TEMPLATErN   rS   r   rO  rP  rQ  r   r   r   r'   rI   r7   r5   rN  rN  :  s        

.C, , , ,( ! ! ! X! # # # X# # # # X#
 
 
 

 
 
 
P P P P6 6 6 6 6 6r7   rN  c                  f    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
dS )rz   rN   r   r|   r#   r"   rO   c                j    t          |t                    st          d          || _        || _        d S )NrS  )r&   r   r{   rd  rf  )r@   rN   r|   s      r5   rS   zUnrecognizedExtension.__init__v  s6    #/00 	?=>>>	r7   c                    | j         S r%   rh  re   s    r5   rN   zUnrecognizedExtension.oid|  ri  r7   c                    | j         S r%   rl  re   s    r5   r|   zUnrecognizedExtension.value  rm  r7   r9   c                (    d| j          d| j        dS )Nz<UnrecognizedExtension(oid=ro  r   )rN   r|   re   s    r5   r   zUnrecognizedExtension.__repr__  s.    &$( & &Z& & &	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   rz   r   rN   r|   r   s     r5   r   zUnrecognizedExtension.__eq__  s8    %!677 	"!!x59$Bu{)BBr7   r;   c                8    t          | j        | j        f          S r%   )r   rN   r|   re   s    r5   r   zUnrecognizedExtension.__hash__  s    TXtz*+++r7   c                    | j         S r%   r	  re   s    r5   r'   z"UnrecognizedExtension.public_bytes  s
    zr7   N)rN   r   r|   r#   r"   rO   r  rf   r   r   rH   )rY   rZ   r[   rS   r   rN   r|   r   r   r   r'   rI   r7   r5   rz   rz   u  s               X    X
 
 
 
C C C C, , , ,     r7   rz   )r!   r   r"   r#   )r8   r9   )l
__future__r   abcr  r0   rO  r  cryptographyr   "cryptography.hazmat.bindings._rustr   r   r   cryptography.hazmat.primitivesr   r   ,cryptography.hazmat.primitives.asymmetric.ecr	   -cryptography.hazmat.primitives.asymmetric.rsar
   /cryptography.hazmat.primitives.asymmetric.typesr   r   *cryptography.x509.certificate_transparencyr   cryptography.x509.general_namer   r   r   r   r   r   r   r   r   cryptography.x509.namer   r   cryptography.x509.oidr   r   r   r   TypeVarr   r6   rJ   	ExceptionrL   r`   ABCMetar   rj   r   r   r   r   r   r   r  r%  r.  rE  r4  EnumrY  rz  r{  r|  rt  r}  r~  r  r  _REASON_BIT_MAPPING_CRLREASONFLAGSr[  r\  _CRL_ENTRY_REASON_ENUM_TO_CODEr  r  r  r  r  r  r  r  r  r  _TLS_FEATURE_TYPE_TO_ENUMr  r  r<  Genericra  rs  r  r  r  r  r  r  r  r  r$  r2  rN  rz   rI   r7   r5   <module>r|     s
  
 # " " " " " 



              3 3 3 3 3 3 @ @ @ @ @ @ G G G G G G G G O O O O O O F F F F F F            
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 C B B B B B B B            "6>o   
' ' ' '0
3 
3 
3 
3           	   	
 	
 	
 	
 	
ck 	
 	
 	
 	
$3 $3 $3 $3 $3 $3 $3 $3N6 6 6 6 6 6 6 6:i6 i6 i6 i6 i6] i6 i6 i6X!6 !6 !6 !6 !6= !6 !6 !6H6 6 6 6 6 6 6 6B6 6 6 6 6} 6 6 6B%% %% %% %% %% %% %% %%P,6 ,6 ,6 ,6 ,6} ,6 ,6 ,6^6 6 6 6 6 6 6 6:"6 "6 "6 "6 "6M "6 "6 "6J"6 "6 "6 "6 "6- "6 "6 "6Jh  h  h  h  h  h  h  h V
& 
& 
& 
& 
&%* 
& 
& 
&4 ! &)#& 	 	  q#QA& !#Qq	0 Qq#QA& !#Qr" >6 >6 >6 >6 >6 >6 >6 >6B6 6 6 6 6- 6 6 6>8' 8' 8' 8' 8' 8' 8' 8'v(# (# (# (# (# (# (# (#V%$ %$ %$ %$ %$ %$ %$ %$P6 6 6 6 6} 6 6 6<6 6 6 6 6- 6 6 6&6 6 6 6 6M 6 6 6&6 6 6 6 6 6 6 6D    UZ    A@@@@ 6 6 6 6 6} 6 6 6@B6 B6 B6 B6 B6} B6 B6 B6Jp6 p6 p6 p6 p6m p6 p6 p6f-; -; -; -; -;/0 -; -; -;`M0 M0 M0 M0 M0 M0 M0 M0`E6 E6 E6 E6 E6] E6 E6 E6PE6 E6 E6 E6 E6M E6 E6 E6PE6 E6 E6 E6 E6 E6 E6 E6P6 6 6 6 6 6 6 6:!6 !6 !6 !6 !6] !6 !6 !6H(6 (6 (6 (6 (6 (6 (6 (6V(6 (6 (6 (6 (6- (6 (6 (6V6 6 6 6 6 6 6 6:6 6 6 6 6m 6 6 6:]6 ]6 ]6 ]6 ]6} ]6 ]6 ]6@86 86 86 86 86M 86 86 86v    M     r7   