
     h                        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ede+fdZ,de-f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 d, d-e3          Z< G d. d/e3          Z= G d0 d1e3          Z> G d2 d3          Z? G d4 d5ej@                  ZAeAjB        eAjC        eAjD        eAjE        eAjF        eAjG        eAjH        eAjI        d6ZJeAjB        d7eAjC        d8eAjD        d9eAjE        d:eAjF        d;eAjG        d<eAjH        d=eAjI        d>iZK G d? d@e3          ZL G dA dBe3          ZM G dC dD          ZN G dE dF          ZO G dG dH          ZP G dI dJe3          ZQ G dK dLe3          ZR G dM dNe3          ZS G dO dPe3          ZT G dQ dRej@                  ZUdS eUD             ZV G dT dUe3          ZW G dV dWe3          ZX G dX dYe3          ZY G dZ d[ejZ        e*                   Z[ G d\ d]          Z\ G d^ d_e3          Z] G d` dae3          Z^ G db dce3          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          ZfdS )r    N)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_keyreturnc                    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      X/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/x509/extensions.py_key_identifier_from_public_keyr4   1   s     *l++ 4&&"&&,
 
 
J 6	7	7 4&&"'&8
 
  ,,"&&;
 

 '
33<$$&&&    
field_namec                 <     dt           f fd} fd} fd}|||fS )Nr!   c                 >    t          t          |                     S r#   )lengetattrselfr6   s    r3   
len_methodz*_make_sequence_methods.<locals>.len_methodJ   s    74,,---r5   c                 >    t          t          |                     S r#   )iterr:   r;   s    r3   iter_methodz+_make_sequence_methods.<locals>.iter_methodM   s    GD*--...r5   c                 0    t          |           |         S r#   )r:   )r<   idxr6   s     r3   getitem_methodz._make_sequence_methods.<locals>.getitem_methodP   s    tZ((--r5   )int)r6   r=   r@   rC   s   `   r3   _make_sequence_methodsrE   I   si    .C . . . . . ./ / / / /. . . . . {N22r5   c                   ,     e Zd Zdededdf fdZ xZS )DuplicateExtensionmsgoidr!   Nc                 X    t                                          |           || _        d S r#   super__init__rI   r<   rH   rI   	__class__s      r3   rM   zDuplicateExtension.__init__W   &    r5   __name__
__module____qualname__strr   rM   __classcell__rO   s   @r3   rG   rG   V   S        C &6 4          r5   rG   c                   ,     e Zd Zdededdf fdZ xZS )ExtensionNotFoundrH   rI   r!   Nc                 X    t                                          |           || _        d S r#   rK   rN   s      r3   rM   zExtensionNotFound.__init__]   rP   r5   rQ   rW   s   @r3   rZ   rZ   \   rX   r5   rZ   c                   <    e Zd ZU ej        e         ed<   defdZdS )r   rI   r!   c                 F    t          d                    |                     )z7
        Serializes the extension type to DER.
        z7public_bytes is not implemented for extension type {!r})NotImplementedErrorformatr<   s    r3   r%   zExtensionType.public_bytese   s,     "ELL 
 
 	
r5   N)	rR   rS   rT   typingClassVarr   __annotations__bytesr%    r5   r3   r   r   b   sE         	)	****
e 
 
 
 
 
 
r5   )	metaclassc                       e Zd Zdej        d         ddfdZdeddfdZdej        e	         dd	fd
Z
 ed          \  ZZZdefdZdS )
Extensions
extensionszExtension[ExtensionType]r!   Nc                 .    t          |          | _        d S r#   )list_extensions)r<   ri   s     r3   rM   zExtensions.__init__q   s      
++r5   rI   c                 R    | D ]}|j         |k    r|c S t          d| d|          )NNo  extension was found)rI   rZ   )r<   rI   exts      r3   get_extension_for_oidz Extensions.get_extension_for_oidv   sJ      	 	Cw#~~


    ?c ? ? ?EEEr5   extclassz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.rn   ro   )UnrecognizedExtension	TypeErrorr$   valuerZ   rI   )r<   rr   rp   s      r3   get_extension_for_classz"Extensions.get_extension_for_class   s     ,,,)    	 	C#)X.. 


  0(000(,
 
 	
r5   rl   c                     d| j          dS )Nz<Extensions()>)rl   r`   s    r3   __repr__zExtensions.__repr__   s    2d.2222r5   )rR   rS   rT   ra   IterablerM   r   rq   Typer   rw   rE   __len____iter____getitem__rU   rz   re   r5   r3   rh   rh   p   s        , /*DE,	, , , ,
F#F	#F F F F
$45
	&
 
 
 
$ &<%;M%J%J"GX{3# 3 3 3 3 3 3r5   rh   c                   |    e Zd Zej        ZdeddfdZdede	fdZ
defdZdefdZedefd	            Zdefd
ZdS )	CRLNumber
crl_numberr!   Nc                 \    t          |t                    st          d          || _        d S Nzcrl_number must be an integerr$   rD   ru   _crl_numberr<   r   s     r3   rM   zCRLNumber.__init__   1    *c** 	=;<<<%r5   otherc                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r   NotImplementedr   r<   r   s     r3   __eq__zCRLNumber.__eq__   s*    %++ 	"!!%"222r5   c                 *    t          | j                  S r#   hashr   r`   s    r3   __hash__zCRLNumber.__hash__       DO$$$r5   c                     d| j          dS )Nz<CRLNumber(ry   r   r`   s    r3   rz   zCRLNumber.__repr__   s    0T_0000r5   c                     | j         S r#   r   r`   s    r3   r   zCRLNumber.crl_number       r5   c                 *    t          j        |           S r#   	rust_x509encode_extension_valuer`   s    r3   r%   zCRLNumber.public_bytes       /555r5   )rR   rS   rT   r   
CRL_NUMBERrI   rD   rM   objectboolr   r   rU   rz   propertyr   rd   r%   re   r5   r3   r   r      s        

!C&3 &4 & & & &3F 3t 3 3 3 3%# % % % %1# 1 1 1 1  C       X 6e 6 6 6 6 6 6r5   r   c                      e Zd Zej        Zdej        e         dej        ej	        e
                  dej        e         ddfdZededd fd            Ze	 	 	 	 dd            ZdefdZdedefdZdefdZedej        e         fd            Zedej        ej        e
                  fd            Zedej        e         fd            ZdefdZdS )AuthorityKeyIdentifierkey_identifierauthority_cert_issuerauthority_cert_serial_numberr!   Nc                     |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     r3   	<genexpr>z2AuthorityKeyIdentifier.__init__.<locals>.<genexpr>   s=        /0
1k**     r5   z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer)	
ValueErrorrk   allru   r$   rD   _key_identifier_authority_cert_issuer_authority_cert_serial_number)r<   r   r   r   s       r3   rM   zAuthorityKeyIdentifier.__init__   s     "T)(D0
 
 4  
 !,$()>$?$?!  4I         
 (3J(#=
 =
3 MNNN-&;#-I***r5   r    c                 <    t          |          } | |d d           S N)r   r   r   r4   )clsr    r0   s      r3   from_issuer_public_keyz-AuthorityKeyIdentifier.from_issuer_public_key   s3     1<<s!"&)-
 
 
 	
r5   skiSubjectKeyIdentifierc                 (     | |j         d d           S r   r0   )r   r   s     r3   "from_issuer_subject_key_identifierz9AuthorityKeyIdentifier.from_issuer_subject_key_identifier   s(     s:"&)-
 
 
 	
r5   c                 ,    d                     |           S )Nz<AuthorityKeyIdentifier(key_identifier={0.key_identifier!r}, authority_cert_issuer={0.authority_cert_issuer}, authority_cert_serial_number={0.authority_cert_serial_number})>r_   r`   s    r3   rz   zAuthorityKeyIdentifier.__repr__   s     		
r5   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     r3   r   zAuthorityKeyIdentifier.__eq__   sY    %!788 	"!! 5#77 2*e.II2112	
r5   c                 v    | j         d }nt          | j                   }t          | j        || j        f          S r#   )r   tupler   r   r   )r<   acis     r3   r   zAuthorityKeyIdentifier.__hash__  sD    %-CC233C #t'HI
 
 	
r5   c                     | j         S r#   )r   r`   s    r3   r   z%AuthorityKeyIdentifier.key_identifier      ##r5   c                     | j         S r#   )r   r`   s    r3   r   z,AuthorityKeyIdentifier.authority_cert_issuer  s     **r5   c                     | j         S r#   )r   r`   s    r3   r   z3AuthorityKeyIdentifier.authority_cert_serial_number  s    11r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z#AuthorityKeyIdentifier.public_bytes  r   r5   )r   r   r!   r   )rR   rS   rT   r   AUTHORITY_KEY_IDENTIFIERrI   ra   Optionalrd   r{   r   rD   rM   classmethodr
   r   r   rU   rz   r   r   r   r   r   r   Listr   r   r%   re   r5   r3   r   r      s       

/CJ.J  &v{/KLJ '-oc&:	J
 
J J J JL 
8
	!
 
 
 [
 
(
	!
 
 
 [

# 
 
 
 
	
F 	
t 	
 	
 	
 	

# 
 
 
 
 $ 6 $ $ $ X$ +	[1	2+ + + X+
 2foc.B 2 2 2 X26e 6 6 6 6 6 6r5   r   c                       e Zd Zej        ZdeddfdZede	dd fd            Z
edefd            Zedefd            Zdefd	Zd
edefdZdefdZdefdZdS )r   r0   r!   Nc                     || _         d S r#   _digest)r<   r0   s     r3   rM   zSubjectKeyIdentifier.__init__#  s    r5   r    c                 2     | t          |                    S r#   r   )r   r    s     r3   from_public_keyz$SubjectKeyIdentifier.from_public_key&  s     s2:>>???r5   c                     | j         S r#   r   r`   s    r3   r0   zSubjectKeyIdentifier.digest,  
    |r5   c                     | j         S r#   r   r`   s    r3   r   z#SubjectKeyIdentifier.key_identifier0  r   r5   c                     d| j         dS )Nz<SubjectKeyIdentifier(digest=ry   r   r`   s    r3   rz   zSubjectKeyIdentifier.__repr__4  s    @t{@@@@r5   r   c                 x    t          |t                    st          S t          j        | j        |j                  S r#   )r$   r   r   r   bytes_eqr0   r   s     r3   r   zSubjectKeyIdentifier.__eq__7  s2    %!566 	"!!%dk5<@@@r5   c                 *    t          | j                  S r#   )r   r0   r`   s    r3   r   zSubjectKeyIdentifier.__hash__=      DK   r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z!SubjectKeyIdentifier.public_bytes@  r   r5   )rR   rS   rT   r   SUBJECT_KEY_IDENTIFIERrI   rd   rM   r   r   r   r   r0   r   rU   rz   r   r   r   rD   r   r%   re   r5   r3   r   r      s@       

-Cu      @2@	@ @ @ [@
     X     XA# A A A AAF At A A A A!# ! ! ! !6e 6 6 6 6 6 6r5   r   c                       e Zd Zej        Zdej        d         ddfdZ e	d          \  Z
ZZdefdZdedefd	Zdefd
ZdefdZdS )AuthorityInformationAccessdescriptionsAccessDescriptionr!   Nc                     t          |          }t          d |D                       st          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   r$   r   r   s     r3   r   z6AuthorityInformationAccess.__init__.<locals>.<genexpr>K  -      JJ:a!233JJJJJJr5   @Every item in the descriptions list must be an AccessDescriptionrk   r   ru   _descriptionsr<   r   s     r3   rM   z#AuthorityInformationAccess.__init__G  W     L))JJ\JJJJJ 	$  
 *r5   r   c                     d| j          dS )Nz<AuthorityInformationAccess(ry   r   r`   s    r3   rz   z#AuthorityInformationAccess.__repr__U  s    Dd.@DDDDr5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r   r   r   r   s     r3   r   z!AuthorityInformationAccess.__eq__X  s,    %!;<< 	"!!!U%888r5   c                 D    t          t          | j                            S r#   r   r   r   r`   s    r3   r   z#AuthorityInformationAccess.__hash__^      E$,--...r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z'AuthorityInformationAccess.public_bytesa  r   r5   )rR   rS   rT   r   AUTHORITY_INFORMATION_ACCESSrI   ra   r{   rM   rE   r}   r~   r   rU   rz   r   r   r   rD   r   rd   r%   re   r5   r3   r   r   D  s        

3C
*"O,?@
*	
* 
* 
* 
* &<%;O%L%L"GX{E# E E E E9F 9t 9 9 9 9/# / / / /6e 6 6 6 6 6 6r5   r   c                       e Zd Zej        Zdej        d         ddfdZ e	d          \  Z
ZZdefdZdedefd	Zdefd
ZdefdZdS )SubjectInformationAccessr   r   r!   Nc                     t          |          }t          d |D                       st          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   r   r   s     r3   r   z4SubjectInformationAccess.__init__.<locals>.<genexpr>l  r   r5   r   r   r   s     r3   rM   z!SubjectInformationAccess.__init__h  r   r5   r   c                     d| j          dS )Nz<SubjectInformationAccess(ry   r   r`   s    r3   rz   z!SubjectInformationAccess.__repr__v  s    BD,>BBBBr5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r   r   r   r   s     r3   r   zSubjectInformationAccess.__eq__y  s,    %!9:: 	"!!!U%888r5   c                 D    t          t          | j                            S r#   r   r`   s    r3   r   z!SubjectInformationAccess.__hash__  r   r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z%SubjectInformationAccess.public_bytes  r   r5   )rR   rS   rT   r   SUBJECT_INFORMATION_ACCESSrI   ra   r{   rM   rE   r}   r~   r   rU   rz   r   r   r   rD   r   rd   r%   re   r5   r3   r   r   e  s        

1C
*"O,?@
*	
* 
* 
* 
* &<%;O%L%L"GX{C# C C C C9F 9t 9 9 9 9/# / / / /6e 6 6 6 6 6 6r5   r   c                       e Zd ZdededdfdZdefdZdede	fdZ
defd	Zedefd
            Zedefd            ZdS )r   access_methodaccess_locationr!   Nc                     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   ru   r   _access_method_access_location)r<   r   r   s      r3   rM   zAccessDescription.__init__  s_     -)9:: 	IGHHH/;77 	ECDDD+ /r5   c                 ,    d                     |           S )NzY<AccessDescription(access_method={0.access_method}, access_location={0.access_location})>r   r`   s    r3   rz   zAccessDescription.__repr__  s    ''-vd||	
r5   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r#   )r$   r   r   r   r   r   s     r3   r   zAccessDescription.__eq__  sC    %!233 	"!! %"55 >$(==	
r5   c                 8    t          | j        | j        f          S r#   )r   r   r   r`   s    r3   r   zAccessDescription.__hash__  s    T')=>???r5   c                     | j         S r#   )r   r`   s    r3   r   zAccessDescription.access_method      ""r5   c                     | j         S r#   )r   r`   s    r3   r   z!AccessDescription.access_location      $$r5   )rR   rS   rT   r   r   rM   rU   rz   r   r   r   rD   r   r   r   r   re   r5   r3   r   r     s        
0-
0@K
0	
0 
0 
0 
0
# 
 
 
 

F 
t 
 
 
 
@# @ @ @ @ #/ # # # X# % % % % X% % %r5   r   c                       e Zd Zej        Zdedej        e	         ddfdZ
edefd            Zedej        e	         fd            ZdefdZd	edefd
Zde	fdZdefdZdS )BasicConstraintscapath_lengthr!   Nc                     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   ru   r   rD   _ca_path_length)r<   r  r	  s      r3   rM   zBasicConstraints.__init__  s    "d## 	:8999"2"HIII";,, #0;aD   'r5   c                     | j         S r#   )r  r`   s    r3   r  zBasicConstraints.ca  s	    xr5   c                     | j         S r#   )r  r`   s    r3   r	  zBasicConstraints.path_length  s      r5   c                 ,    d                     |           S )Nz:<BasicConstraints(ca={0.ca}, path_length={0.path_length})>r   r`   s    r3   rz   zBasicConstraints.__repr__  s    K
&,,	r5   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r#   )r$   r  r   r  r	  r   s     r3   r   zBasicConstraints.__eq__  s:    %!122 	"!!w%("Lt'75;L'LLr5   c                 8    t          | j        | j        f          S r#   )r   r  r	  r`   s    r3   r   zBasicConstraints.__hash__  s    TWd./000r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zBasicConstraints.public_bytes  r   r5   )rR   rS   rT   r   BASIC_CONSTRAINTSrI   r   ra   r   rD   rM   r   r  r	  rU   rz   r   r   r   rd   r%   re   r5   r3   r  r    s       

(C(4 (foc.B (t ( ( ( (" D    X !V_S1 ! ! ! X!#    
MF Mt M M M M1# 1 1 1 16e 6 6 6 6 6 6r5   r  c                   |    e Zd Zej        ZdeddfdZedefd            Z	de
defdZdefdZdefd	Zdefd
ZdS )DeltaCRLIndicatorr   r!   Nc                 \    t          |t                    st          d          || _        d S r   r   r   s     r3   rM   zDeltaCRLIndicator.__init__  r   r5   c                     | j         S r#   r   r`   s    r3   r   zDeltaCRLIndicator.crl_number  r   r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r   r   s     r3   r   zDeltaCRLIndicator.__eq__  s+    %!233 	"!!%"222r5   c                 *    t          | j                  S r#   r   r`   s    r3   r   zDeltaCRLIndicator.__hash__  r   r5   c                     d| j          dS )Nz<DeltaCRLIndicator(crl_number=ry   r   r`   s    r3   rz   zDeltaCRLIndicator.__repr__  s    CCCCCr5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zDeltaCRLIndicator.public_bytes  r   r5   )rR   rS   rT   r   DELTA_CRL_INDICATORrI   rD   rM   r   r   r   r   r   r   rU   rz   rd   r%   re   r5   r3   r  r    s        

*C&3 &4 & & & &  C       X 3F 3t 3 3 3 3%# % % % %D# D D D D6e 6 6 6 6 6 6r5   r  c                       e Zd Zej        Zdej        d         ddfdZ e	d          \  Z
ZZdefdZdedefd	Zdefd
ZdefdZdS )CRLDistributionPointsdistribution_pointsDistributionPointr!   Nc                     t          |          }t          d |D                       st          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   r$   r   r   s     r3   r   z1CRLDistributionPoints.__init__.<locals>.<genexpr>   >       
 
12Jq+,,
 
 
 
 
 
r5   ?distribution_points must be a list of DistributionPoint objectsrk   r   ru   _distribution_pointsr<   r  s     r3   rM   zCRLDistributionPoints.__init__  j     ##677 
 
6I
 
 
 
 
 	   
 %8!!!r5   r'  c                     d| j          dS )Nz<CRLDistributionPoints(ry   r'  r`   s    r3   rz   zCRLDistributionPoints.__repr__  s    F)BFFFFr5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r'  r   s     r3   r   zCRLDistributionPoints.__eq__  s,    %!677 	"!!(E,FFFr5   c                 D    t          t          | j                            S r#   r   r   r'  r`   s    r3   r   zCRLDistributionPoints.__hash__      E$344555r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z"CRLDistributionPoints.public_bytes  r   r5   )rR   rS   rT   r   CRL_DISTRIBUTION_POINTSrI   ra   r{   rM   rE   r}   r~   r   rU   rz   r   r   r   rD   r   rd   r%   re   r5   r3   r  r    s        

.C8#)?3F#G8	8 8 8 8 &<%;& &"GX{G# G G G GGF Gt G G G G6# 6 6 6 66e 6 6 6 6 6 6r5   r  c                       e Zd Zej        Zdej        d         ddfdZ e	d          \  Z
ZZdefdZdedefd	Zdefd
ZdefdZdS )FreshestCRLr  r   r!   Nc                     t          |          }t          d |D                       st          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   r#  r   s     r3   r   z'FreshestCRL.__init__.<locals>.<genexpr>%  r$  r5   r%  r&  r(  s     r3   rM   zFreshestCRL.__init__!  r)  r5   r'  c                     d| j          dS )Nz<FreshestCRL(ry   r+  r`   s    r3   rz   zFreshestCRL.__repr__3  s    <t8<<<<r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r3  r   r'  r   s     r3   r   zFreshestCRL.__eq__6  s+    %-- 	"!!(E,FFFr5   c                 D    t          t          | j                            S r#   r.  r`   s    r3   r   zFreshestCRL.__hash__<  r/  r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zFreshestCRL.public_bytes?  r   r5   )rR   rS   rT   r   FRESHEST_CRLrI   ra   r{   rM   rE   r}   r~   r   rU   rz   r   r   r   rD   r   rd   r%   re   r5   r3   r3  r3    s        

#C8#)?3F#G8	8 8 8 8 &<%;& &"GX{=# = = = =GF Gt G G G G6# 6 6 6 66e 6 6 6 6 6 6r5   r3  c            
          e Zd Zdej        ej        e                  dej        e         dej        ej        d                  dej        ej        e                  ddf
dZ	de
fd	Zd
edefdZdefdZedej        ej        e                  fd            Zedej        e         fd            Zedej        ej        d                  fd            Zedej        ej        e                  fd            ZdS )r   	full_namerelative_namereasonsReasonFlags
crl_issuerr!   Nc                    |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     r3   r   z-DistributionPoint.__init__.<locals>.<genexpr>X  s,      EEaz![11EEEEEEr5   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     r3   r   z-DistributionPoint.__init__.<locals>.<genexpr>e  s,      FFaz![11FFFFFFr5   z2crl_issuer must be None or a list of general namesc              3   @   K   | ]}t          |t                    V  d S r#   r$   r?  r   s     r3   r   z-DistributionPoint.__init__.<locals>.<genexpr>l  s,      CCaz![11CCCCCCr5   z0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)r   rk   r   ru   r$   r   	frozensetr?  unspecifiedremove_from_crl
_full_name_relative_name_reasons_crl_issuer)r<   r<  r=  r>  r@  s        r3   rM   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$  
 $+%r5   c                 ,    d                     |           S )Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>r   r`   s    r3   rz   zDistributionPoint.__repr__~  s    **0&,,	
r5   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$   r   r   r<  r=  r>  r@  r   s     r3   r   zDistributionPoint.__eq__  sf    %!233 	"!! Neo- 4"e&994-4 5#33		
r5   c                     | j         t          | j                   }nd }| j        t          | j                  }nd }t          || j        | j        |f          S r#   )r<  r   r@  r   r=  r>  )r<   fnr@  s      r3   r   zDistributionPoint.__hash__  sj    >%BGC CBB B?& do&& J JR+T\:FGGGr5   c                     | j         S r#   rI  r`   s    r3   r<  zDistributionPoint.full_name  
    r5   c                     | j         S r#   rJ  r`   s    r3   r=  zDistributionPoint.relative_name  r  r5   c                     | j         S r#   )rK  r`   s    r3   r>  zDistributionPoint.reasons  s
    }r5   c                     | j         S r#   )rL  r`   s    r3   r@  zDistributionPoint.crl_issuer  r   r5   )rR   rS   rT   ra   r   r{   r   r   	FrozenSetrM   rU   rz   r   r   r   rD   r   r   r   r<  r=  r>  r@  re   r5   r3   r   r   C  s       8&?6?;#?@8& '@A8& !1-!@A	8&
 OFOK$@A8& 
8& 8& 8& 8&t
# 
 
 
 
	
F 	
t 	
 	
 	
 	
H# H H H H" 6?6;{+CD    X #v/HI # # # X# )9-)HI    X  FOFK,DE       X     r5   r   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 )r?  rG  keyCompromisecACompromiseaffiliationChanged
supersededcessationOfOperationcertificateHoldprivilegeWithdrawnaACompromiseremoveFromCRLN)rR   rS   rT   rG  key_compromiseca_compromiseaffiliation_changedr]  cessation_of_operationcertificate_holdprivilege_withdrawnaa_compromiserH  re   r5   r3   r?  r?    sD        K$N"M.J3(."M%OOOr5   r?  )                        rj  rk  rl  rm  rn  ro  rp  rq  c                       e Zd Zej        Zdej        e         dej        e         ddfdZ	de
fdZdedefdZdefd	Zedej        e         fd
            Zedej        e         fd            ZdefdZdS )PolicyConstraintsrequire_explicit_policyinhibit_policy_mappingr!   Nc                     |$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$   rD   ru   r   _require_explicit_policy_inhibit_policy_mapping)r<   rt  ru  s      r3   rM   zPolicyConstraints.__init__  s    
 #.z#S8
 8
.   
 "-j"C7
 7
- O   ").E.M:  
 )@%'=$$$r5   c                 ,    d                     |           S )Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>r   r`   s    r3   rz   zPolicyConstraints.__repr__  s    	
r5   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r#   )r$   rs  r   rt  ru  r   s     r3   r   zPolicyConstraints.__eq__	  sD    %!233 	"!! (E,II L+u/KK	
r5   c                 8    t          | j        | j        f          S r#   )r   rt  ru  r`   s    r3   r   zPolicyConstraints.__hash__  s"    )4+FG
 
 	
r5   c                     | j         S r#   )rw  r`   s    r3   rt  z)PolicyConstraints.require_explicit_policy  s    ,,r5   c                     | j         S r#   )rx  r`   s    r3   ru  z(PolicyConstraints.inhibit_policy_mapping      ++r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zPolicyConstraints.public_bytes  r   r5   )rR   rS   rT   r   POLICY_CONSTRAINTSrI   ra   r   rD   rM   rU   rz   r   r   r   r   r   rt  ru  rd   r%   re   r5   r3   rs  rs    s)       

)C>!'!5> !' 4> 
	> > > >:
# 
 
 
 

F 
t 
 
 
 

# 
 
 
 

 -)= - - - X- ,(< , , , X,6e 6 6 6 6 6 6r5   rs  c                       e Zd Zej        Zdej        d         ddfdZ e	d          \  Z
ZZdefdZdedefd	Zdefd
ZdefdZdS )CertificatePoliciespoliciesPolicyInformationr!   Nc                     t          |          }t          d |D                       st          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   )r$   r  r   s     r3   r   z/CertificatePolicies.__init__.<locals>.<genexpr>(  s-      FF:a!233FFFFFFr5   z;Every item in the policies list must be a PolicyInformation)rk   r   ru   	_policies)r<   r  s     r3   rM   zCertificatePolicies.__init__&  sP    >>FFXFFFFF 	$  
 "r5   r  c                     d| j          dS )Nz<CertificatePolicies(ry   )r  r`   s    r3   rz   zCertificatePolicies.__repr__2      9t~9999r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r  r   s     r3   r   zCertificatePolicies.__eq__5  s*    %!455 	"!!~00r5   c                 D    t          t          | j                            S r#   )r   r   r  r`   s    r3   r   zCertificatePolicies.__hash__;      E$.))***r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z CertificatePolicies.public_bytes>  r   r5   )rR   rS   rT   r   CERTIFICATE_POLICIESrI   ra   r{   rM   rE   r}   r~   r   rU   rz   r   r   r   rD   r   rd   r%   re   r5   r3   r  r  #  s        

+C"1D!E "$ " " " " &<%;K%H%H"GX{:# : : : :1F 1t 1 1 1 1+# + + + +6e 6 6 6 6 6 6r5   r  c                      e Zd Zdedej        ej        ej        edf                           ddfdZ	defdZ
dedefd	Zdefd
Zedefd            Zedej        ej        ej        edf                           fd            ZdS )r  policy_identifierpolicy_qualifiers
UserNoticer!   Nc                     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$   rU   r  r   s     r3   r   z-PolicyInformation.__init__.<locals>.<genexpr>Q  sB        56
1sJ/00     r5   zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r$   r   ru   _policy_identifierrk   r   _policy_qualifiers)r<   r  r  s      r3   rM   zPolicyInformation.__init__C  s     +-=>> 	MKLLL"3( $%6 7 7  :K       1  
 #4r5   c                 ,    d                     |           S )Nze<PolicyInformation(policy_identifier={0.policy_identifier}, policy_qualifiers={0.policy_qualifiers})>r   r`   s    r3   rz   zPolicyInformation.__repr__[  s    3396$<<	
r5   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r#   )r$   r  r   r  r  r   s     r3   r   zPolicyInformation.__eq__a  sD    %!233 	"!! "e&== B&%*AA	
r5   c                 j    | j         t          | j                   }nd }t          | j        |f          S r#   )r  r   r   r  )r<   pqs     r3   r   zPolicyInformation.__hash__j  s?    !- d,-- B BT+R0111r5   c                     | j         S r#   )r  r`   s    r3   r  z#PolicyInformation.policy_identifiert      &&r5   c                     | j         S r#   )r  r`   s    r3   r  z#PolicyInformation.policy_qualifiersx       &&r5   )rR   rS   rT   r   ra   r   r{   UnionrU   rM   rz   r   r   r   rD   r   r   r  r   r  re   r5   r3   r  r  B  s#       4+4 "?OFLl):;<
4 
4 4 4 40
# 
 
 
 

F 
t 
 
 
 
2# 2 2 2 2 '#3 ' ' ' X' '	V\#|2C%DE	F' ' ' X' ' 'r5   r  c                       e Zd Zdej        d         dej        e         ddfdZdefdZdede	fd	Z
defd
Zedej        d         fd            Zedej        e         fd            ZdS )r  notice_referenceNoticeReferenceexplicit_textr!   Nc                 n    |r$t          |t                    st          d          || _        || _        d S )Nz2notice_reference must be None or a NoticeReference)r$   r  ru   _notice_reference_explicit_text)r<   r  r  s      r3   rM   zUserNotice.__init__  sQ    
  	Jo%
 %
 	 D   "2+r5   c                 ,    d                     |           S )NzV<UserNotice(notice_reference={0.notice_reference}, explicit_text={0.explicit_text!r})>r   r`   s    r3   rz   zUserNotice.__repr__  s    $$*F4LL	
r5   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r#   )r$   r  r   r  r  r   s     r3   r   zUserNotice.__eq__  sB    %,, 	"!! !U%;; :"e&99	
r5   c                 8    t          | j        | j        f          S r#   )r   r  r  r`   s    r3   r   zUserNotice.__hash__  s    T*D,>?@@@r5   c                     | j         S r#   )r  r`   s    r3   r  zUserNotice.notice_reference      %%r5   c                     | j         S r#   )r  r`   s    r3   r  zUserNotice.explicit_text  r  r5   )rR   rS   rT   ra   r   rU   rM   rz   r   r   r   rD   r   r   r  r  re   r5   r3   r  r    s       , /*;<, s+, 
	, , , ,
# 
 
 
 

F 
t 
 
 
 
A# A A A A &&/2C"D & & & X& #vs3 # # # X# # #r5   r  c                       e Zd Zdej        e         dej        e         ddfdZdefdZ	de
defdZdefd	Zedej        e         fd
            Zedej        e         fd            ZdS )r  organizationnotice_numbersr!   Nc                     || _         t          |          }t          d |D                       st          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   )r$   rD   r   s     r3   r   z+NoticeReference.__init__.<locals>.<genexpr>  s,      >>!:a%%>>>>>>r5   z)notice_numbers must be a list of integers)_organizationrk   r   ru   _notice_numbers)r<   r  r  s      r3   rM   zNoticeReference.__init__  sV    
 *n-->>~>>>>> 	IGHHH-r5   c                 ,    d                     |           S )NzU<NoticeReference(organization={0.organization!r}, notice_numbers={0.notice_numbers})>r   r`   s    r3   rz   zNoticeReference.__repr__  s    ##)6$<<	
r5   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r#   )r$   r  r   r  r  r   s     r3   r   zNoticeReference.__eq__  sB    %11 	"!! !33 <#u';;	
r5   c                 R    t          | j        t          | j                  f          S r#   )r   r  r   r  r`   s    r3   r   zNoticeReference.__hash__  s#    T&d.A(B(BCDDDr5   c                     | j         S r#   )r  r`   s    r3   r  zNoticeReference.organization      !!r5   c                     | j         S r#   )r  r`   s    r3   r  zNoticeReference.notice_numbers  r   r5   )rR   rS   rT   ra   r   rU   r{   rD   rM   rz   r   r   r   r   r   r  r   r  re   r5   r3   r  r    s       
.oc*
. ,
. 
	
. 
. 
. 
.
# 
 
 
 

F 
t 
 
 
 
E# E E E E "foc2 " " " X" $C 0 $ $ $ X$ $ $r5   r  c                       e Zd Zej        Zdej        e         ddfdZ	 e
d          \  ZZZdefdZdedefdZdefd	Zdefd
ZdS )ExtendedKeyUsageusagesr!   Nc                     t          |          }t          d |D                       st          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   )r$   r   r   s     r3   r   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>  s-      CCq:a!122CCCCCCr5   z9Every item in the usages list must be an ObjectIdentifier)rk   r   ru   _usages)r<   r  s     r3   rM   zExtendedKeyUsage.__init__  sN    fCCFCCCCC 	K   r5   r  c                     d| j          dS )Nz<ExtendedKeyUsage(ry   )r  r`   s    r3   rz   zExtendedKeyUsage.__repr__      4DL4444r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r  r   s     r3   r   zExtendedKeyUsage.__eq__  s*    %!122 	"!!|u},,r5   c                 D    t          t          | j                            S r#   )r   r   r  r`   s    r3   r   zExtendedKeyUsage.__hash__  s    E$,''(((r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zExtendedKeyUsage.public_bytes  r   r5   )rR   rS   rT   r   EXTENDED_KEY_USAGErI   ra   r{   r   rM   rE   r}   r~   r   rU   rz   r   r   r   rD   r   rd   r%   re   r5   r3   r  r    s        

)Cv/?@ T     &<%;I%F%F"GX{5# 5 5 5 5-F -t - - - -)# ) ) ) )6e 6 6 6 6 6 6r5   r  c                   P    e Zd Zej        ZdedefdZde	fdZ
defdZdefdZdS )OCSPNoCheckr   r!   c                 >    t          |t                    st          S dS NT)r$   r  r   r   s     r3   r   zOCSPNoCheck.__eq__  s    %-- 	"!!tr5   c                 *    t          t                    S r#   )r   r  r`   s    r3   r   zOCSPNoCheck.__hash__  s    K   r5   c                     dS )Nz<OCSPNoCheck()>re   r`   s    r3   rz   zOCSPNoCheck.__repr__  s      r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zOCSPNoCheck.public_bytes  r   r5   N)rR   rS   rT   r   OCSP_NO_CHECKrI   r   r   r   rD   r   rU   rz   rd   r%   re   r5   r3   r  r    s        

$CF t    !# ! ! ! !!# ! ! ! !6e 6 6 6 6 6 6r5   r  c                   P    e Zd Zej        ZdedefdZde	fdZ
defdZdefdZdS )PrecertPoisonr   r!   c                 >    t          |t                    st          S dS r  )r$   r  r   r   s     r3   r   zPrecertPoison.__eq__  s    %// 	"!!tr5   c                 *    t          t                    S r#   )r   r  r`   s    r3   r   zPrecertPoison.__hash__  s    M"""r5   c                     dS )Nz<PrecertPoison()>re   r`   s    r3   rz   zPrecertPoison.__repr__  s    ""r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zPrecertPoison.public_bytes  r   r5   N)rR   rS   rT   r   PRECERT_POISONrI   r   r   r   rD   r   rU   rz   rd   r%   re   r5   r3   r  r    s        

%CF t    ## # # # ### # # # #6e 6 6 6 6 6 6r5   r  c                       e Zd Zej        Zdej        d         ddfdZ e	d          \  Z
ZZdefdZdedefd	Zdefd
ZdefdZdS )
TLSFeaturefeaturesTLSFeatureTyper!   Nc                     t          |          }t          d |D                       rt          |          dk    rt          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   )r$   r  r   s     r3   r   z&TLSFeature.__init__.<locals>.<genexpr>  s,      DDaJq.11DDDDDDr5   r   z@features must be a list of elements from the TLSFeatureType enum)rk   r   r9   ru   	_features)r<   r  s     r3   rM   zTLSFeature.__init__  sa    >>DD8DDDDD	8}}!!  
 "r5   r  c                     d| j          dS )Nz<TLSFeature(features=ry   )r  r`   s    r3   rz   zTLSFeature.__repr__(  r  r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r  r   s     r3   r   zTLSFeature.__eq__+  s)    %,, 	"!!~00r5   c                 D    t          t          | j                            S r#   )r   r   r  r`   s    r3   r   zTLSFeature.__hash__1  r  r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zTLSFeature.public_bytes4  r   r5   )rR   rS   rT   r   TLS_FEATURErI   ra   r{   rM   rE   r}   r~   r   rU   rz   r   r   r   rD   r   rd   r%   re   r5   r3   r  r    s        

"C"1A!B "t " " " " &<%;K%H%H"GX{:# : : : :1F 1t 1 1 1 1+# + + + +6e 6 6 6 6 6 6r5   r  c                       e Zd ZdZdZdS )r  rn     N)rR   rS   rT   status_requeststatus_request_v2re   r5   r3   r  r  8  s         N r5   r  c                     i | ]
}|j         |S re   rv   r   s     r3   
<dictcomp>r  C  s    @@@AQWa@@@r5   c                   |    e Zd Zej        ZdeddfdZdefdZ	de
defdZdefdZedefd	            Zdefd
ZdS )InhibitAnyPolicy
skip_certsr!   Nc                     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$   rD   ru   r   _skip_certs)r<   r  s     r3   rM   zInhibitAnyPolicy.__init__I  sI    *c** 	=;<<<>>HIII%r5   c                     d| j          dS )Nz<InhibitAnyPolicy(skip_certs=ry   )r  r`   s    r3   rz   zInhibitAnyPolicy.__repr__R  s    BtBBBBr5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r  r   s     r3   r   zInhibitAnyPolicy.__eq__U  s+    %!122 	"!!%"222r5   c                 *    t          | j                  S r#   )r   r  r`   s    r3   r   zInhibitAnyPolicy.__hash__[  r   r5   c                     | j         S r#   )r  r`   s    r3   r  zInhibitAnyPolicy.skip_certs^  r   r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zInhibitAnyPolicy.public_bytesb  r   r5   )rR   rS   rT   r   INHIBIT_ANY_POLICYrI   rD   rM   rU   rz   r   r   r   r   r   r  rd   r%   re   r5   r3   r  r  F  s        

)C&3 &4 & & & &C# C C C C3F 3t 3 3 3 3%# % % % %  C       X 6e 6 6 6 6 6 6r5   r  c                   |   e Zd Zej        Zdedededededededed	ed
dfdZed
efd            Z	ed
efd            Z
ed
efd            Zed
efd            Zed
efd            Zed
efd            Zed
efd            Zed
efd            Zed
efd            Zd
efdZded
efdZd
efdZd
efdZdS )KeyUsagedigital_signaturecontent_commitmentkey_enciphermentdata_enciphermentkey_agreementkey_cert_signcrl_signencipher_onlydecipher_onlyr!   Nc
                     |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
             r3   rM   zKeyUsage.__init__i  s      	- 	= 	(  
 #4#5 !1"3++!++r5   c                     | j         S r#   )r  r`   s    r3   r  zKeyUsage.digital_signature  r  r5   c                     | j         S r#   )r   r`   s    r3   r  zKeyUsage.content_commitment  s    ''r5   c                     | j         S r#   )r  r`   s    r3   r  zKeyUsage.key_encipherment  r  r5   c                     | j         S r#   )r  r`   s    r3   r  zKeyUsage.data_encipherment  r  r5   c                     | j         S r#   )r  r`   s    r3   r  zKeyUsage.key_agreement  r  r5   c                     | j         S r#   )r  r`   s    r3   r  zKeyUsage.key_cert_sign  r  r5   c                     | j         S r#   )r  r`   s    r3   r  zKeyUsage.crl_sign  
    ~r5   c                 <    | j         st          d          | j        S )Nz7encipher_only is undefined unless key_agreement is true)r  r   r  r`   s    r3   r  zKeyUsage.encipher_only  -    ! 	'I   &&r5   c                 <    | j         st          d          | j        S )Nz7decipher_only is undefined unless key_agreement is true)r  r   r  r`   s    r3   r  zKeyUsage.decipher_only  r  r5   c                 x    	 | j         }| j        }n# t          $ r d}d}Y nw xY wd                    | ||          S )NFa-  <KeyUsage(digital_signature={0.digital_signature}, content_commitment={0.content_commitment}, key_encipherment={0.key_encipherment}, data_encipherment={0.data_encipherment}, key_agreement={0.key_agreement}, key_cert_sign={0.key_cert_sign}, crl_sign={0.crl_sign}, encipher_only={1}, decipher_only={2})>)r  r  r   r_   )r<   r  r  s      r3   rz   zKeyUsage.__repr__  sa    	" .M .MM 	" 	" 	" "M!MMM	"5 &}m
4
4	5s    ""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     r3   r   zKeyUsage.__eq__  s    %** 	"!! "e&== <'5+CC<%)??< &%*AA< "e&99	<
 "e&99< /< #u';;< #u';;
	
r5   c                     t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        f	          S r#   )
r   r  r  r  r  r  r  r  r  r  r`   s    r3   r   zKeyUsage.__hash__  sN    &'%&""##

 
 	
r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zKeyUsage.public_bytes  r   r5   )rR   rS   rT   r   	KEY_USAGErI   r   rM   r   r  r  r  r  r  r  r  r  r  rU   rz   r   r   rD   r   rd   r%   re   r5   r3   r  r  f  sd       

 C,, !, 	,
  , , , , , , 
, , , ,8 '4 ' ' ' X' (D ( ( ( X( &$ & & & X& '4 ' ' ' X' #t # # # X# #t # # # X# $    X 't ' ' ' X' 't ' ' ' X'5# 5 5 5 5*
F 
t 
 
 
 
 
# 
 
 
 
6e 6 6 6 6 6 6r5   r  c                      e Zd Zej        Zdej        ej        e	                  dej        ej        e	                  ddfdZ
dedefdZdej        e	         ddfd	Zdej        e	         ddfd
Zdej        e	         ddfdZdefdZdefdZedej        ej        e	                  fd            Zedej        ej        e	                  fd            ZdefdZdS )NameConstraintspermitted_subtreesexcluded_subtreesr!   Nc                    |]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     r3   r   z+NameConstraints.__init__.<locals>.<genexpr>  s,      NNaz![11NNNNNNr5   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     r3   r   z+NameConstraints.__init__.<locals>.<genexpr>  ,      MMaz![11MMMMMMr5   z?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)rk   r   r   ru   _validate_tree_permitted_subtrees_excluded_subtrees)r<   r  r  s      r3   rM   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r5   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r#   )r$   r  r   r  r  r   s     r3   r   zNameConstraints.__eq__  sC    %11 	"!! "e&== D'5+CC	
r5   treec                 Z    |                      |           |                     |           d S r#   )_validate_ip_name_validate_dns_namer<   r$  s     r3   r   zNameConstraints._validate_tree!  s0    t$$$%%%%%r5   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   rv   	ipaddressIPv4NetworkIPv6Networkr   names     r3   r   z4NameConstraints._validate_ip_name.<locals>.<genexpr>&  sk       
 

 	 tY'' 
Y2I4IJ  
 
 
 
 
 
r5   zGIPAddress name constraints must be an IPv4Network or IPv6Network object)anyru   r(  s     r3   r&  z!NameConstraints._validate_ip_name%  sU     
 

 
 
 
 
 
 
	 &  
	 
	r5   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   rv   r.  s     r3   r   z5NameConstraints._validate_dns_name.<locals>.<genexpr>3  sI       
 
@DJtW%%;#*;
 
 
 
 
 
r5   zDDNSName name constraints must not contain the '*' wildcard character)r0  r   r(  s     r3   r'  z"NameConstraints._validate_dns_name2  sS     
 
HL
 
 
 
 
 	   	 	r5   c                 ,    d                     |           S )Nze<NameConstraints(permitted_subtrees={0.permitted_subtrees}, excluded_subtrees={0.excluded_subtrees})>r   r`   s    r3   rz   zNameConstraints.__repr__;  s    88>t	
r5   c                     | j         t          | j                   }nd }| j        t          | j                  }nd }t          ||f          S r#   )r  r   r  r   )r<   psess      r3   r   zNameConstraints.__hash__A  sd    ".BG'C CBB B!-BG&C CBB BRH~~r5   c                     | j         S r#   )r!  r`   s    r3   r  z"NameConstraints.permitted_subtreesR  s     ''r5   c                     | j         S r#   )r"  r`   s    r3   r  z!NameConstraints.excluded_subtreesX  r  r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zNameConstraints.public_bytes^  r   r5   )rR   rS   rT   r   NAME_CONSTRAINTSrI   ra   r   r{   r   rM   r   r   r   r   r&  r'  rU   rz   rD   r   r   r   r  r  rd   r%   re   r5   r3   r  r    s       

'C(4"OFOK,HI(4 "?6?;+GH(4 
	(4 (4 (4 (4T
F 
t 
 
 
 
&6?;#? &D & & & &fok&B t    v{'C     
# 
 
 
 
#    " (	[1	2( ( ( X(
 '	[1	2' ' ' X'
6e 6 6 6 6 6 6r5   r  c                       e Zd ZdedededdfdZedefd            Zedefd            Z	edefd	            Z
defd
ZdedefdZdefdZdS )	ExtensionrI   criticalrv   r!   Nc                     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   ru   r   _oid	_critical_value)r<   rI   r>  rv   s       r3   rM   zExtension.__init__c  si     #/00 	D   (D)) 	@>???	!r5   c                     | j         S r#   r@  r`   s    r3   rI   zExtension.oidr  
    yr5   c                     | j         S r#   )rA  r`   s    r3   r>  zExtension.criticalv  r  r5   c                     | j         S r#   rB  r`   s    r3   rv   zExtension.valuez  
    {r5   c                 ,    d                     |           S )Nz@<Extension(oid={0.oid}, critical={0.critical}, value={0.value})>r   r`   s    r3   rz   zExtension.__repr__~  s     
&,,	r5   r   c                     t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r#   )r$   r=  r   rI   r>  rv   r   s     r3   r   zExtension.__eq__  sO    %++ 	"!! H	! */*
ek)	
r5   c                 D    t          | j        | j        | j        f          S r#   )r   rI   r>  rv   r`   s    r3   r   zExtension.__hash__  s    TXt}dj9:::r5   )rR   rS   rT   r   r   r   rM   r   rI   r>  rv   rU   rz   r   r   rD   r   re   r5   r3   r=  r=  b  s       #/3<L	    %    X $    X '    X#    
F 
t 
 
 
 
;# ; ; ; ; ; ;r5   r=  c            
          e Zd Zdej        e         ddfdZ ed          \  ZZ	Z
ej        dej        ej        e         ej        e         ej        e         f         dej        e         fd            Zej        dej        e         dej        e         fd            Zej        dej        e         dej        e         fd	            Zej        dej        e         dej        e         fd
            Zej        dej        e         dej        e         fd            Zdej        ej        e         ej        e         ej        e         ej        e         ej        e         ej        e         ej        e         f         dej        ej        e         ej        e         ej        e         ej        e         ej        e         f         fdZdefdZdedefdZdefdZ dS )GeneralNamesgeneral_namesr!   Nc                     t          |          }t          d |D                       st          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   r   r   s     r3   r   z(GeneralNames.__init__.<locals>.<genexpr>  s,      EE!:a--EEEEEEr5   z^Every item in the general_names list must be an object conforming to the GeneralName interface)rk   r   ru   _general_namesr<   rO  s     r3   rM   zGeneralNames.__init__  sV    ]++EE}EEEEE 	A  
 ,r5   rR  typec                     d S r#   re   r<   rT  s     r3   get_values_for_typez GeneralNames.get_values_for_type  	     	r5   c                     d S r#   re   rV  s     r3   rW  z GeneralNames.get_values_for_type  	    
 	r5   c                     d S r#   re   rV  s     r3   rW  z GeneralNames.get_values_for_type  rZ  r5   c                     d S r#   re   rV  s     r3   rW  z GeneralNames.get_values_for_type  	     	r5   c                     d S r#   re   rV  s     r3   rW  z GeneralNames.get_values_for_type  r]  r5   c                 l    fd| D             }t           k    rd |D             S t          |          S )Nc              3   <   K   | ]}t          |          |V  d S r#   )r$   )r   irT  s     r3   r   z3GeneralNames.get_values_for_type.<locals>.<genexpr>  s2      77a:a#6#67777777r5   c                     g | ]	}|j         
S re   r  )r   ra  s     r3   
<listcomp>z4GeneralNames.get_values_for_type.<locals>.<listcomp>  s    ***AG***r5   )r   rk   )r<   rT  objss    ` r3   rW  z GeneralNames.get_values_for_type  sI    * 877747779**T****Dzzr5   c                     d| j          dS )Nz<GeneralNames(ry   rR  r`   s    r3   rz   zGeneralNames.__repr__  s    7 37777r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   rN  r   rR  r   s     r3   r   zGeneralNames.__eq__  s+    %.. 	"!!"e&:::r5   c                 D    t          t          | j                            S r#   )r   r   rR  r`   s    r3   r   zGeneralNames.__hash__  s    E$-..///r5   )!rR   rS   rT   ra   r{   r   rM   rE   r}   r~   r   overloadr  r|   r   r   r   r   rU   rW  r   r   r   r   r   r   r   rz   r   r   r   rD   r   re   r5   r3   rN  rN    s       ,fok&B ,t , , , , &<%;<L%M%M"GX{_lK K12K
#%
 
S	   _ _k-( 
T	   _ _k,' 
%	&   _ _K	*	_	%   _
 _K	*	Y	   _
lK K&K	"K	"K
#K%K124
 
O$CID$%		'
   48# 8 8 8 8;F ;t ; ; ; ;0# 0 0 0 0 0 0r5   rN  c            
          e Zd Zej        Zdej        e         ddfdZ	 e
d          \  ZZZej        dej        ej        e         ej        e         ej        e         f         dej        e         fd            Zej        dej        e         dej        e         fd            Zej        dej        e         dej        e         fd	            Zej        dej        e         dej        e         fd
            Zej        dej        e         dej        e         fd            Zdej        ej        e         ej        e         ej        e         ej        e         ej        e         ej        e         ej        e         f         dej        ej        e         ej        e         ej        e         ej        e         ej        e         f         fdZdefdZdede fdZ!de"fdZ#de$fdZ%dS )SubjectAlternativeNamerO  r!   Nc                 .    t          |          | _        d S r#   rN  rR  rS  s     r3   rM   zSubjectAlternativeName.__init__      *=99r5   rR  rT  c                     d S r#   re   rV  s     r3   rW  z*SubjectAlternativeName.get_values_for_type  rX  r5   c                     d S r#   re   rV  s     r3   rW  z*SubjectAlternativeName.get_values_for_type  rZ  r5   c                     d S r#   re   rV  s     r3   rW  z*SubjectAlternativeName.get_values_for_type  rZ  r5   c                     d S r#   re   rV  s     r3   rW  z*SubjectAlternativeName.get_values_for_type  r]  r5   c                     d S r#   re   rV  s     r3   rW  z*SubjectAlternativeName.get_values_for_type  r]  r5   c                 6    | j                             |          S r#   rR  rW  rV  s     r3   rW  z*SubjectAlternativeName.get_values_for_type      $ "66t<<<r5   c                     d| j          dS )Nz<SubjectAlternativeName(ry   rf  r`   s    r3   rz   zSubjectAlternativeName.__repr__,  s    A$*=AAAAr5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   rk  r   rR  r   s     r3   r   zSubjectAlternativeName.__eq__/  s,    %!788 	"!!"e&:::r5   c                 *    t          | j                  S r#   r   rR  r`   s    r3   r   zSubjectAlternativeName.__hash__5      D'(((r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z#SubjectAlternativeName.public_bytes8  r   r5   )&rR   rS   rT   r   SUBJECT_ALTERNATIVE_NAMErI   ra   r{   r   rM   rE   r}   r~   r   ri  r  r|   r   r   r   r   rU   rW  r   r   r   r   r   r   r   rz   r   r   r   rD   r   rd   r%   re   r5   r3   rk  rk    s       

/C:fok&B :t : : : : &<%;<L%M%M"GX{_lK K12K
#%
 
S	   _ _k-( 
T	   _ _k,' 
%	&   _ _K	*	_	%   _
 _K	*	Y	   _
=lK K&K	"K	"K
#K%K124
= 
O$CID$%		'
= = = =(B# B B B B;F ;t ; ; ; ;)# ) ) ) )6e 6 6 6 6 6 6r5   rk  c            
          e Zd Zej        Zdej        e         ddfdZ	 e
d          \  ZZZej        dej        ej        e         ej        e         ej        e         f         dej        e         fd            Zej        dej        e         dej        e         fd            Zej        dej        e         dej        e         fd	            Zej        dej        e         dej        e         fd
            Zej        dej        e         dej        e         fd            Zdej        ej        e         ej        e         ej        e         ej        e         ej        e         ej        e         ej        e         f         dej        ej        e         ej        e         ej        e         ej        e         ej        e         f         fdZdefdZdede fdZ!de"fdZ#de$fdZ%dS )IssuerAlternativeNamerO  r!   Nc                 .    t          |          | _        d S r#   rm  rS  s     r3   rM   zIssuerAlternativeName.__init__?  rn  r5   rR  rT  c                     d S r#   re   rV  s     r3   rW  z)IssuerAlternativeName.get_values_for_typeD  rX  r5   c                     d S r#   re   rV  s     r3   rW  z)IssuerAlternativeName.get_values_for_typeO  rZ  r5   c                     d S r#   re   rV  s     r3   rW  z)IssuerAlternativeName.get_values_for_typeV  rZ  r5   c                     d S r#   re   rV  s     r3   rW  z)IssuerAlternativeName.get_values_for_type]  r]  r5   c                     d S r#   re   rV  s     r3   rW  z)IssuerAlternativeName.get_values_for_typec  r]  r5   c                 6    | j                             |          S r#   ru  rV  s     r3   rW  z)IssuerAlternativeName.get_values_for_typei  rv  r5   c                     d| j          dS )Nz<IssuerAlternativeName(ry   rf  r`   s    r3   rz   zIssuerAlternativeName.__repr__}  s    @)<@@@@r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   rR  r   s     r3   r   zIssuerAlternativeName.__eq__  s,    %!677 	"!!"e&:::r5   c                 *    t          | j                  S r#   rz  r`   s    r3   r   zIssuerAlternativeName.__hash__  r{  r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z"IssuerAlternativeName.public_bytes  r   r5   )&rR   rS   rT   r   ISSUER_ALTERNATIVE_NAMErI   ra   r{   r   rM   rE   r}   r~   r   ri  r  r|   r   r   r   r   rU   rW  r   r   r   r   r   r   r   rz   r   r   r   rD   r   rd   r%   re   r5   r3   r  r  <  s       

.C:fok&B :t : : : : &<%;<L%M%M"GX{_lK K12K
#%
 
S	   _ _k-( 
T	   _ _k,' 
%	&   _ _K	*	_	%   _
 _K	*	Y	   _
=lK K&K	"K	"K
#K%K124
= 
O$CID$%		'
= = = =(A# A A A A;F ;t ; ; ; ;)# ) ) ) )6e 6 6 6 6 6 6r5   r  c            
          e Zd Zej        Zdej        e         ddfdZ	 e
d          \  ZZZej        dej        ej        e         ej        e         ej        e         f         dej        e         fd            Zej        dej        e         dej        e         fd            Zej        dej        e         dej        e         fd	            Zej        dej        e         dej        e         fd
            Zej        dej        e         dej        e         fd            Zdej        ej        e         ej        e         ej        e         ej        e         ej        e         ej        e         ej        e         f         dej        ej        e         ej        e         ej        e         ej        e         ej        e         f         fdZdefdZdede fdZ!de"fdZ#de$fdZ%dS )CertificateIssuerrO  r!   Nc                 .    t          |          | _        d S r#   rm  rS  s     r3   rM   zCertificateIssuer.__init__  rn  r5   rR  rT  c                     d S r#   re   rV  s     r3   rW  z%CertificateIssuer.get_values_for_type  rX  r5   c                     d S r#   re   rV  s     r3   rW  z%CertificateIssuer.get_values_for_type  rZ  r5   c                     d S r#   re   rV  s     r3   rW  z%CertificateIssuer.get_values_for_type  rZ  r5   c                     d S r#   re   rV  s     r3   rW  z%CertificateIssuer.get_values_for_type  r]  r5   c                     d S r#   re   rV  s     r3   rW  z%CertificateIssuer.get_values_for_type  r]  r5   c                 6    | j                             |          S r#   ru  rV  s     r3   rW  z%CertificateIssuer.get_values_for_type  rv  r5   c                     d| j          dS )Nz<CertificateIssuer(ry   rf  r`   s    r3   rz   zCertificateIssuer.__repr__  s    <T%8<<<<r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   rR  r   s     r3   r   zCertificateIssuer.__eq__  s,    %!233 	"!!"e&:::r5   c                 *    t          | j                  S r#   rz  r`   s    r3   r   zCertificateIssuer.__hash__  r{  r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zCertificateIssuer.public_bytes  r   r5   )&rR   rS   rT   r   CERTIFICATE_ISSUERrI   ra   r{   r   rM   rE   r}   r~   r   ri  r  r|   r   r   r   r   rU   rW  r   r   r   r   r   r   r   rz   r   r   r   rD   r   rd   r%   re   r5   r3   r  r    s       

1C:fok&B :t : : : : &<%;<L%M%M"GX{_lK K12K
#%
 
S	   _ _k-( 
T	   _ _k,' 
%	&   _ _K	*	_	%   _
 _K	*	Y	   _
=lK K&K	"K	"K
#K%K124
= 
O$CID$%		'
= = = =(=# = = = =;F ;t ; ; ; ;)# ) ) ) )6e 6 6 6 6 6 6r5   r  c                   |    e Zd Zej        ZdeddfdZdefdZ	de
defdZdefdZedefd	            Zdefd
ZdS )	CRLReasonreasonr!   Nc                 \    t          |t                    st          d          || _        d S )Nz*reason must be an element from ReasonFlags)r$   r?  ru   _reason)r<   r  s     r3   rM   zCRLReason.__init__  s/    &+.. 	JHIIIr5   c                     d| j          dS )Nz<CRLReason(reason=ry   r  r`   s    r3   rz   zCRLReason.__repr__  r  r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r  r   s     r3   r   zCRLReason.__eq__  s)    %++ 	"!!{el**r5   c                 *    t          | j                  S r#   )r   r  r`   s    r3   r   zCRLReason.__hash__  r   r5   c                     | j         S r#   r  r`   s    r3   r  zCRLReason.reason  r   r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zCRLReason.public_bytes  r   r5   )rR   rS   rT   r   
CRL_REASONrI   r?  rM   rU   rz   r   r   r   rD   r   r   r  rd   r%   re   r5   r3   r  r    s        

)C{ t    5# 5 5 5 5+F +t + + + +!# ! ! ! !     X6e 6 6 6 6 6 6r5   r  c                       e Zd Zej        Zdej        ddfdZdefdZ	de
defdZdefdZedej        fd	            Zdefd
ZdS )InvalidityDateinvalidity_dater!   Nc                 f    t          |t          j                  st          d          || _        d S )Nz+invalidity_date must be a datetime.datetime)r$   datetimeru   _invalidity_date)r<   r  s     r3   rM   zInvalidityDate.__init__  s5    /8+<== 	KIJJJ /r5   c                 6    d                     | j                  S )Nz$<InvalidityDate(invalidity_date={})>)r_   r  r`   s    r3   rz   zInvalidityDate.__repr__  s     5<<!
 
 	
r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r  r   s     r3   r   zInvalidityDate.__eq__	  s+    %00 	"!!#u'<<<r5   c                 *    t          | j                  S r#   )r   r  r`   s    r3   r   zInvalidityDate.__hash__  s    D()))r5   c                     | j         S r#   )r  r`   s    r3   r  zInvalidityDate.invalidity_date  r  r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zInvalidityDate.public_bytes  r   r5   )rR   rS   rT   r   INVALIDITY_DATErI   r  rM   rU   rz   r   r   r   rD   r   r   r  rd   r%   re   r5   r3   r  r    s        

.C0(9 0d 0 0 0 0
# 
 
 
 

=F =t = = = =*# * * * * %!2 % % % X%6e 6 6 6 6 6 6r5   r  c                       e Zd Zej        Zdej        e         ddfdZ	 e
d          \  ZZZdefdZdefdZdedefd	Zdefd
ZdS ))PrecertificateSignedCertificateTimestampssigned_certificate_timestampsr!   Nc                     t          |          }t          d |D                       st          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   r$   r   r   scts     r3   r   zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>$  A       
 
 s677
 
 
 
 
 
r5   YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamprk   r   ru   _signed_certificate_timestampsr<   r  s     r3   rM   z2PrecertificateSignedCertificateTimestamps.__init__  k     )--J(K(K% 
 
4
 
 
 
 
 	 /   /L+++r5   r  c                 F    d                     t          |                     S )Nz/<PrecertificateSignedCertificateTimestamps({})>)r_   rk   r`   s    r3   rz   z2PrecertificateSignedCertificateTimestamps.__repr__2  s#    @GGJJ
 
 	
r5   c                 D    t          t          | j                            S r#   r   r   r  r`   s    r3   r   z2PrecertificateSignedCertificateTimestamps.__hash__7      E$=>>???r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r  r   s     r3   r   z0PrecertificateSignedCertificateTimestamps.__eq__:  s3    %!JKK 	"!! /34	
r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z6PrecertificateSignedCertificateTimestamps.public_bytesC  r   r5   )rR   rS   rT   r   %PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrI   ra   r{   r   rM   rE   r}   r~   r   rU   rz   rD   r   r   r   r   rd   r%   re   r5   r3   r  r    s        

<CL'-&(
L
 
L L L L" &<%;(& &"GX{
# 
 
 
 

@# @ @ @ @
F 
t 
 
 
 
6e 6 6 6 6 6 6r5   r  c                       e Zd Zej        Zdej        e         ddfdZ	 e
d          \  ZZZdefdZdefdZdedefd	Zdefd
ZdS )SignedCertificateTimestampsr  r!   Nc                     t          |          }t          d |D                       st          d          || _        d S )Nc              3   @   K   | ]}t          |t                    V  d S r#   r  r  s     r3   r   z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>Q  r  r5   r  r  r  s     r3   rM   z$SignedCertificateTimestamps.__init__J  r  r5   r  c                 (    dt          |            dS )Nz<SignedCertificateTimestamps(ry   )rk   r`   s    r3   rz   z$SignedCertificateTimestamps.__repr___  s    =tDzz====r5   c                 D    t          t          | j                            S r#   r  r`   s    r3   r   z$SignedCertificateTimestamps.__hash__b  r  r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r  r   s     r3   r   z"SignedCertificateTimestamps.__eq__e  s3    %!<== 	"!! /34	
r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z(SignedCertificateTimestamps.public_bytesn  r   r5   )rR   rS   rT   r   SIGNED_CERTIFICATE_TIMESTAMPSrI   ra   r{   r   rM   rE   r}   r~   r   rU   rz   rD   r   r   r   r   rd   r%   re   r5   r3   r  r  G  s        

4CL'-&(
L
 
L L L L" &<%;(& &"GX{># > > > >@# @ @ @ @
F 
t 
 
 
 
6e 6 6 6 6 6 6r5   r  c                   |    e Zd Zej        ZdeddfdZdede	fdZ
defdZdefdZedefd	            Zdefd
ZdS )	OCSPNoncenoncer!   Nc                 \    t          |t                    st          d          || _        d S )Nznonce must be bytes)r$   rd   ru   _nonce)r<   r  s     r3   rM   zOCSPNonce.__init__u  s.    %'' 	31222r5   r   c                 Z    t          |t                    st          S | j        |j        k    S r#   )r$   r  r   r  r   s     r3   r   zOCSPNonce.__eq__{  s)    %++ 	"!!zU[((r5   c                 *    t          | j                  S r#   )r   r  r`   s    r3   r   zOCSPNonce.__hash__  s    DJr5   c                     d| j         dS )Nz<OCSPNonce(nonce=ry   )r  r`   s    r3   rz   zOCSPNonce.__repr__  s    34:3333r5   c                     | j         S r#   )r  r`   s    r3   r  zOCSPNonce.nonce  rI  r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   zOCSPNonce.public_bytes  r   r5   )rR   rS   rT   r   NONCErI   rd   rM   r   r   r   rD   r   rU   rz   r   r  r%   re   r5   r3   r  r  r  s        

 Ce     )F )t ) ) ) ) #        4# 4 4 4 4 u    X6e 6 6 6 6 6 6r5   r  c                      e Zd Zej        Zdej        ej        e	                  dej        e
         dededej        ej        e                  dededd	fd
ZdefdZdedefdZdefdZedej        ej        e	                  fd            Zedej        e
         fd            Zedefd            Zedefd            Zedej        ej        e                  fd            Zedefd            Zedefd            ZdefdZd	S )IssuingDistributionPointr<  r=  only_contains_user_certsonly_contains_ca_certsonly_some_reasonsindirect_crlonly_contains_attribute_certsr!   Nc           	         |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#   rE  r   s     r3   r   z4IssuingDistributionPoint.__init__.<locals>.<genexpr>  r  r5   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 re   re   r   s     r3   rc  z5IssuingDistributionPoint.__init__.<locals>.<listcomp>  s    000aa0000r5   rj  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.)rk   r$   rF  r   ru   r?  rG  rH  r   r   r9   r0  _only_contains_user_certs_only_contains_ca_certs_indirect_crl_only_contains_attribute_certs_only_some_reasonsrI  rJ  )	r<   r<  r=  r  r  r  r  r  crl_constraintss	            r3   rM   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#+r5   c                 ,    d                     |           S )NaG  <IssuingDistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, only_contains_user_certs={0.only_contains_user_certs}, only_contains_ca_certs={0.only_contains_ca_certs}, only_some_reasons={0.only_some_reasons}, indirect_crl={0.indirect_crl}, only_contains_attribute_certs={0.only_contains_attribute_certs})>r   r`   s    r3   rz   z!IssuingDistributionPoint.__repr__  s    2 39&,,		
r5   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$   r  r   r<  r=  r  r  r  r  r  r   s     r3   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		
r5   c           	      t    t          | j        | j        | j        | j        | j        | j        | j        f          S r#   )r   r<  r=  r  r  r  r  r  r`   s    r3   r   z!IssuingDistributionPoint.__hash__   sB    "-+&!2

 

 
	
r5   c                     | j         S r#   rR  r`   s    r3   r<  z"IssuingDistributionPoint.full_name  rS  r5   c                     | j         S r#   rU  r`   s    r3   r=  z&IssuingDistributionPoint.relative_name  r  r5   c                     | j         S r#   )r  r`   s    r3   r  z1IssuingDistributionPoint.only_contains_user_certs  s    --r5   c                     | j         S r#   )r  r`   s    r3   r  z/IssuingDistributionPoint.only_contains_ca_certs  r~  r5   c                     | j         S r#   )r  r`   s    r3   r  z*IssuingDistributionPoint.only_some_reasons  r  r5   c                     | j         S r#   )r  r`   s    r3   r  z%IssuingDistributionPoint.indirect_crl#  r  r5   c                     | j         S r#   )r  r`   s    r3   r  z6IssuingDistributionPoint.only_contains_attribute_certs'  s    22r5   c                 *    t          j        |           S r#   r   r`   s    r3   r%   z%IssuingDistributionPoint.public_bytes+  r   r5   ) rR   rS   rT   r   ISSUING_DISTRIBUTION_POINTrI   ra   r   r{   r   r   r   rX  r?  rM   rU   rz   r   r   rD   r   r   r   r<  r=  r  r  r  r  r  rd   r%   re   r5   r3   r  r    sZ       

1CQ,?6?;#?@Q, '@AQ, #'	Q,
 !%Q, "?6+;K+HIQ, Q, (,Q, 
Q, Q, Q, Q,f

# 

 

 

 


F 
t 
 
 
 

# 
 
 
 
 6?6;{+CD    X #v/HI # # # X# .$ . . . X. , , , , X, '	)+6	7' ' ' X'
 "d " " " X" 3t 3 3 3 X36e 6 6 6 6 6 6r5   r  c                       e Zd ZdededdfdZedefd            Zedefd            Zde	fdZ
d	edefd
ZdefdZdefdZdS )rt   rI   rv   r!   Nc                 j    t          |t                    st          d          || _        || _        d S )Nzoid must be an ObjectIdentifier)r$   r   ru   r@  rB  )r<   rI   rv   s      r3   rM   zUnrecognizedExtension.__init__0  s6    #/00 	?=>>>	r5   c                     | j         S r#   rD  r`   s    r3   rI   zUnrecognizedExtension.oid6  rE  r5   c                     | j         S r#   rH  r`   s    r3   rv   zUnrecognizedExtension.value:  rI  r5   c                 ,    d                     |           S )Nz7<UnrecognizedExtension(oid={0.oid}, value={0.value!r})>r   r`   s    r3   rz   zUnrecognizedExtension.__repr__>  s    ""(&,,	
r5   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r#   )r$   rt   r   rI   rv   r   s     r3   r   zUnrecognizedExtension.__eq__D  s8    %!677 	"!!x59$Bu{)BBr5   c                 8    t          | j        | j        f          S r#   )r   rI   rv   r`   s    r3   r   zUnrecognizedExtension.__hash__J  s    TXtz*+++r5   c                     | j         S r#   r  r`   s    r3   r%   z"UnrecognizedExtension.public_bytesM  s
    zr5   )rR   rS   rT   r   rd   rM   r   rI   rv   rU   rz   r   r   r   rD   r   r%   re   r5   r3   rt   rt   /  s       , U t     %    X u    X
# 
 
 
 
CF Ct C C C C,# , , , ,e      r5   rt   )gabcr  r.   r+  ra   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   rd   r4   rU   rE   	ExceptionrG   rZ   ABCMetar   rh   r   r   r   r   r   r   r  r  r  r3  r   Enumr?  rc  rd  re  r]  rf  rg  rh  ri  _REASON_BIT_MAPPING_CRLREASONFLAGSrs  r  r  r  r  r  r  r  r  r  _TLS_FEATURE_TYPE_TO_ENUMr  r  r  Genericr=  rN  rk  r  r  r  r  r  r  r  r  rt   re   r5   r3   <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
3s 
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l  l  l  l  l  l  l  l ^
& 
& 
& 
& 
&%* 
& 
& 
&4 ! &)#& 	 	  q#QA& !#Qq	>6 >6 >6 >6 >6 >6 >6 >6B6 6 6 6 6- 6 6 6>:' :' :' :' :' :' :' :'z(# (# (# (# (# (# (# (#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t6 t6 t6 t6 t6m t6 t6 t6n-; -; -; -; -;/0 -; -; -;`V0 V0 V0 V0 V0 V0 V0 V0rN6 N6 N6 N6 N6] N6 N6 N6bN6 N6 N6 N6 N6M N6 N6 N6bN6 N6 N6 N6 N6 N6 N6 N6b6 6 6 6 6 6 6 6:6 6 6 6 6] 6 6 6>*6 *6 *6 *6 *6 *6 *6 *6Z(6 (6 (6 (6 (6- (6 (6 (6V6 6 6 6 6 6 6 6:]6 ]6 ]6 ]6 ]6} ]6 ]6 ]6@    M     r5   