
    ,d                      d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dl	mZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*  ej+        ddd          Z,dzdZ-d{dZ. G d de/          Z0 G d de/          Z1 G d dej2                  Z3 G d  d!          Z4 G d" d#e3          Z5 G d$ d%e3          Z6 G d& d'e3          Z7 G d( d)e3          Z8 G d* d+e3          Z9 G d, d-          Z: G d. d/e3          Z; G d0 d1e3          Z< G d2 d3e3          Z= G d4 d5e3          Z> G d6 d7          Z? G d8 d9ej@                  ZAeAjB        eAjC        eAjD        eAjE        eAjF        eAjG        eAjH        eAjI        d:ZJeAjB        d;eAjC        d<eAjD        d=eAjE        d>eAjF        d?eAjG        d@eAjH        dAeAjI        dBiZK G dC dDe3          ZL G dE dFe3          ZM G dG dH          ZN G dI dJ          ZO G dK dL          ZP G dM dNe3          ZQ G dO dPe3          ZR G dQ dRe3          ZS G dS dTe3          ZT G dU dVej@                  ZUdW eUD             ZV G dX dYe3          ZW G dZ d[e3          ZX G d\ d]e3          ZY G d^ d_ejZ        e,                   Z[ G d` da          Z\ G db dce3          Z] G dd dee3          Z^ G df dge3          Z_ G dh die3          Z` G dj dke3          Za G dl dme3          Zb G dn doe3          Zc G dp dqe3          Zd G dr dse3          Ze G dt due3          Zf G dv dwe3          Zg G dx dye3          ZhdS )|    )annotationsN)utils)asn1)x509)constant_timeserialization)EllipticCurvePublicKey)RSAPublicKey)CertificateIssuerPublicKeyTypesCertificatePublicKeyTypes)SignedCertificateTimestamp)	DirectoryNameDNSNameGeneralName	IPAddress	OtherNameRegisteredID
RFC822NameUniformResourceIdentifier_IPAddressTypes)NameRelativeDistinguishedName)CRLEntryExtensionOIDExtensionOIDObjectIdentifierOCSPExtensionOIDExtensionTypeVarExtensionTypeT)bound	covariant
public_keyr   returnbytesc                   t          | t                    r5|                     t          j        j        t          j        j                  }nt          | t                    r5|                     t          j        j	        t          j        j
                  }nH|                     t          j        j        t          j        j                  }t          j        |          }t          j        |                                          S N)
isinstancer
   public_bytesr   EncodingDERPublicFormatPKCS1r	   X962UncompressedPointSubjectPublicKeyInfor   parse_spki_for_datahashlibsha1digest)r!   data
serializeds      <lib/python3.11/site-packages/cryptography/x509/extensions.py_key_identifier_from_public_keyr6   2   s     *l++ 4&&"&&,
 
 
J 6	7	7 4&&"'&8
 
  ,,"&&;
 

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


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


  0(000(,
 
 	
r7   rp   r9   c                    d| j          dS )Nz<Extensions()>)rp   rf   s    r5   __repr__zExtensions.__repr__   s    2d.2222r7   N)rl   rm   r"   rO   )rN   r   r"   rq   )rw   rx   r"   ry   r"   r9   )rY   rZ   r[   rS   rv   r~   rJ   __len____iter____getitem__r   rI   r7   r5   rk   rk   q   s        , , , ,
F F F F
 
 
 
$ &<%;M%J%J"GX{3 3 3 3 3 3r7   rk   c                  \    e Zd Zej        ZddZdd	Zdd
ZddZ	e
dd            ZddZdS )	CRLNumber
crl_numberr;   r"   rO   c                \    t          |t                    st          d          || _        d S Nzcrl_number must be an integerr&   r;   r|   _crl_numberr@   r   s     r5   rS   zCRLNumber.__init__   1    *c** 	=;<<<%r7   otherobjectboolc                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r   NotImplementedr   r@   r   s     r5   __eq__zCRLNumber.__eq__   s*    %++ 	"!!%"222r7   c                *    t          | j                  S r%   hashr   rf   s    r5   __hash__zCRLNumber.__hash__       DO$$$r7   r9   c                    d| j          dS )Nz<CRLNumber(r   r   rf   s    r5   r   zCRLNumber.__repr__   s    0T_0000r7   c                    | j         S r%   r   rf   s    r5   r   zCRLNumber.crl_number       r7   r#   c                *    t          j        |           S r%   	rust_x509encode_extension_valuerf   s    r5   r'   zCRLNumber.public_bytes       /555r7   Nr   r;   r"   rO   r   r   r"   r   rH   r   rg   )rY   rZ   r[   r   
CRL_NUMBERrN   rS   r   r   r   propertyr   r'   rI   r7   r5   r   r      s        

!C& & & &3 3 3 3% % % %1 1 1 1       X 6 6 6 6 6 6r7   r   c                      e Zd Zej        Zdd	Zed d            Zed!d            Z	d"dZ
d#dZd$dZed%d            Zed&d            Zed'd            Zd(dZdS ))AuthorityKeyIdentifierkey_identifiertyping.Optional[bytes]authority_cert_issuer-typing.Optional[typing.Iterable[GeneralName]]authority_cert_serial_numbertyping.Optional[int]r"   rO   c                    |d u |d u k    rt          d          |7t          |          }t          d |D                       st          d          |$t	          |t
                    st          d          || _        || _        || _        d S )NzXauthority_cert_issuer and authority_cert_serial_number must both be present or both Nonec              3  @   K   | ]}t          |t                    V  d S r%   r&   r   .0xs     r5   	<genexpr>z2AuthorityKeyIdentifier.__init__.<locals>.<genexpr>   s=        /0
1k**     r7   z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer)	
ValueErrorro   allr|   r&   r;   _key_identifier_authority_cert_issuer_authority_cert_serial_number)r@   r   r   r   s       r5   rS   zAuthorityKeyIdentifier.__init__   s     "T)(D0
 
 4  
 !,$()>$?$?!  4I         
 (3J(#=
 =
3 MNNN-&;#-I***r7   r!   r   c                <    t          |          } | |d d           S N)r   r   r   r6   )clsr!   r2   s      r5   from_issuer_public_keyz-AuthorityKeyIdentifier.from_issuer_public_key   s3     1<<s!"&)-
 
 
 	
r7   skiSubjectKeyIdentifierc                (     | |j         d d           S r   r2   )r   r   s     r5   "from_issuer_subject_key_identifierz9AuthorityKeyIdentifier.from_issuer_subject_key_identifier   s(     s:"&)-
 
 
 	
r7   r9   c                ,    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})>re   rf   s    r5   r   zAuthorityKeyIdentifier.__repr__   s     		
r7   r   r   r   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )r&   r   r   r   r   r   r   s     r5   r   zAuthorityKeyIdentifier.__eq__   sY    %!788 	"!! 5#77 2*e.II2112	
r7   r;   c                v    | j         d }nt          | j                   }t          | j        || j        f          S r%   )r   tupler   r   r   )r@   acis     r5   r   zAuthorityKeyIdentifier.__hash__  sD    %-CC233C #t'HI
 
 	
r7   c                    | j         S r%   )r   rf   s    r5   r   z%AuthorityKeyIdentifier.key_identifier      ##r7   )typing.Optional[typing.List[GeneralName]]c                    | j         S r%   )r   rf   s    r5   r   z,AuthorityKeyIdentifier.authority_cert_issuer  s     **r7   c                    | j         S r%   )r   rf   s    r5   r   z3AuthorityKeyIdentifier.authority_cert_serial_number  s    11r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z#AuthorityKeyIdentifier.public_bytes  r   r7   N)r   r   r   r   r   r   r"   rO   )r!   r   r"   r   )r   r   r"   r   r   r   rH   )r"   r   r"   r   r"   r   rg   )rY   rZ   r[   r   AUTHORITY_KEY_IDENTIFIERrN   rS   classmethodr   r   r   r   r   r   r   r   r   r'   rI   r7   r5   r   r      s%       

/CJ J J JL 
 
 
 [
 
 
 
 [

 
 
 
	
 	
 	
 	

 
 
 
 $ $ $ X$ + + + X+
 2 2 2 X26 6 6 6 6 6r7   r   c                      e Zd Zej        ZddZedd            Ze	dd	            Z
e	dd
            ZddZddZddZddZdS )r   r2   r#   r"   rO   c                    || _         d S r%   _digest)r@   r2   s     r5   rS   zSubjectKeyIdentifier.__init__$  s    r7   r!   r   c                2     | t          |                    S r%   r   )r   r!   s     r5   from_public_keyz$SubjectKeyIdentifier.from_public_key'  s     s2:>>???r7   c                    | j         S r%   r   rf   s    r5   r2   zSubjectKeyIdentifier.digest-  
    |r7   c                    | j         S r%   r   rf   s    r5   r   z#SubjectKeyIdentifier.key_identifier1  r   r7   r9   c                    d| j         dS )Nz<SubjectKeyIdentifier(digest=r   r   rf   s    r5   r   zSubjectKeyIdentifier.__repr__5  s    @t{@@@@r7   r   r   r   c                x    t          |t                    st          S t          j        | j        |j                  S r%   )r&   r   r   r   bytes_eqr2   r   s     r5   r   zSubjectKeyIdentifier.__eq__8  s2    %!566 	"!!%dk5<@@@r7   r;   c                *    t          | j                  S r%   )r   r2   rf   s    r5   r   zSubjectKeyIdentifier.__hash__>      DK   r7   c                *    t          j        |           S r%   r   rf   s    r5   r'   z!SubjectKeyIdentifier.public_bytesA  r   r7   N)r2   r#   r"   rO   )r!   r   r"   r   rg   r   r   rH   )rY   rZ   r[   r   SUBJECT_KEY_IDENTIFIERrN   rS   r   r   r   r2   r   r   r   r   r'   rI   r7   r5   r   r   !  s        

-C    @ @ @ [@
    X    XA A A AA A A A! ! ! !6 6 6 6 6 6r7   r   c                  b    e Zd Zej        ZddZ ed          \  ZZ	Z
ddZddZddZddZdS )AuthorityInformationAccessdescriptions"typing.Iterable[AccessDescription]r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r&   AccessDescriptionr   s     r5   r   z6AuthorityInformationAccess.__init__.<locals>.<genexpr>L  -      JJ:a!233JJJJJJr7   @Every item in the descriptions list must be an AccessDescriptionro   r   r|   _descriptionsr@   r   s     r5   rS   z#AuthorityInformationAccess.__init__H  W     L))JJ\JJJJJ 	$  
 *r7   r   r9   c                    d| j          dS )Nz<AuthorityInformationAccess(r   r   rf   s    r5   r   z#AuthorityInformationAccess.__repr__V  s    Dd.@DDDDr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r   r   r   r   s     r5   r   z!AuthorityInformationAccess.__eq__Y  s,    %!;<< 	"!!!U%888r7   r;   c                D    t          t          | j                            S r%   r   r   r   rf   s    r5   r   z#AuthorityInformationAccess.__hash___      E$,--...r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z'AuthorityInformationAccess.public_bytesb  r   r7   Nr   r   r"   rO   r   r   rH   rg   )rY   rZ   r[   r   AUTHORITY_INFORMATION_ACCESSrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r   r   E  s        

3C
* 
* 
* 
* &<%;O%L%L"GX{E E E E9 9 9 9/ / / /6 6 6 6 6 6r7   r   c                  b    e Zd Zej        ZddZ ed          \  ZZ	Z
ddZddZddZddZdS )SubjectInformationAccessr   r   r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r   r   s     r5   r   z4SubjectInformationAccess.__init__.<locals>.<genexpr>m  r   r7   r   r   r   s     r5   rS   z!SubjectInformationAccess.__init__i  r   r7   r   r9   c                    d| j          dS )Nz<SubjectInformationAccess(r   r   rf   s    r5   r   z!SubjectInformationAccess.__repr__w  s    BD,>BBBBr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r   r   r   r   s     r5   r   zSubjectInformationAccess.__eq__z  s,    %!9:: 	"!!!U%888r7   r;   c                D    t          t          | j                            S r%   r   rf   s    r5   r   z!SubjectInformationAccess.__hash__  r   r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z%SubjectInformationAccess.public_bytes  r   r7   Nr   r   r   rH   rg   )rY   rZ   r[   r   SUBJECT_INFORMATION_ACCESSrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r   r   f  s        

1C
* 
* 
* 
* &<%;O%L%L"GX{C C C C9 9 9 9/ / / /6 6 6 6 6 6r7   r   c                  ^    e Zd ZddZdd	ZddZddZedd            Zedd            Z	dS )r   access_methodr   access_locationr   r"   rO   c                    t          |t                    st          d          t          |t                    st          d          || _        || _        d S )Nz)access_method must be an ObjectIdentifierz%access_location must be a GeneralName)r&   r   r|   r   _access_method_access_location)r@   r  r	  s      r5   rS   zAccessDescription.__init__  s_     -)9:: 	IGHHH/;77 	ECDDD+ /r7   r9   c                ,    d                     |           S )NzY<AccessDescription(access_method={0.access_method}, access_location={0.access_location})>r   rf   s    r5   r   zAccessDescription.__repr__  s    ''-vd||	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r   r   r  r	  r   s     r5   r   zAccessDescription.__eq__  sC    %!233 	"!! %"55 >$(==	
r7   r;   c                8    t          | j        | j        f          S r%   )r   r  r	  rf   s    r5   r   zAccessDescription.__hash__  s    T')=>???r7   c                    | j         S r%   )r  rf   s    r5   r  zAccessDescription.access_method      ""r7   c                    | j         S r%   )r  rf   s    r5   r	  z!AccessDescription.access_location      $$r7   N)r  r   r	  r   r"   rO   r   r   rH   r"   r   )r"   r   )
rY   rZ   r[   rS   r   r   r   r   r  r	  rI   r7   r5   r   r     s        
0 
0 
0 
0
 
 
 

 
 
 
@ @ @ @ # # # X# % % % X% % %r7   r   c                  t    e Zd Zej        ZddZedd            Zedd	            Z	ddZ
ddZddZddZdS )BasicConstraintscar   path_lengthr   r"   rO   c                    t          |t                    st          d          ||st          d          |*t          |t                    r|dk     rt          d          || _        || _        d S )Nzca must be a boolean valuez)path_length must be None when ca is Falser   z2path_length must be a non-negative integer or None)r&   r   r|   r   r;   _ca_path_length)r@   r  r  s      r5   rS   zBasicConstraints.__init__  s    "d## 	:8999"2"HIII";,, #0;aD   'r7   c                    | j         S r%   )r  rf   s    r5   r  zBasicConstraints.ca  s	    xr7   c                    | j         S r%   )r  rf   s    r5   r  zBasicConstraints.path_length        r7   r9   c                ,    d                     |           S )Nz:<BasicConstraints(ca={0.ca}, path_length={0.path_length})>r   rf   s    r5   r   zBasicConstraints.__repr__  s    K
&,,	r7   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r  r   r  r  r   s     r5   r   zBasicConstraints.__eq__  s:    %!122 	"!!w%("Lt'75;L'LLr7   r;   c                8    t          | j        | j        f          S r%   )r   r  r  rf   s    r5   r   zBasicConstraints.__hash__  s    TWd./000r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zBasicConstraints.public_bytes  r   r7   N)r  r   r  r   r"   rO   r"   r   r   r   r   rH   rg   )rY   rZ   r[   r   BASIC_CONSTRAINTSrN   rS   r   r  r  r   r   r   r'   rI   r7   r5   r  r    s        

(C( ( ( ("    X ! ! ! X!   
M M M M1 1 1 16 6 6 6 6 6r7   r  c                  \    e Zd Zej        ZddZedd            Zdd
Z	ddZ
ddZddZdS )DeltaCRLIndicatorr   r;   r"   rO   c                \    t          |t                    st          d          || _        d S r   r   r   s     r5   rS   zDeltaCRLIndicator.__init__  r   r7   c                    | j         S r%   r   rf   s    r5   r   zDeltaCRLIndicator.crl_number  r   r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r&  r   r   r   s     r5   r   zDeltaCRLIndicator.__eq__  s+    %!233 	"!!%"222r7   c                *    t          | j                  S r%   r   rf   s    r5   r   zDeltaCRLIndicator.__hash__  r   r7   r9   c                    d| j          dS )Nz<DeltaCRLIndicator(crl_number=r   r   rf   s    r5   r   zDeltaCRLIndicator.__repr__  s    CCCCCr7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zDeltaCRLIndicator.public_bytes  r   r7   Nr   rH   r   r   rg   )rY   rZ   r[   r   DELTA_CRL_INDICATORrN   rS   r   r   r   r   r   r'   rI   r7   r5   r&  r&    s        

*C& & & &       X 3 3 3 3% % % %D D D D6 6 6 6 6 6r7   r&  c                  b    e Zd Zej        ZddZ ed          \  ZZ	Z
ddZddZddZddZdS )CRLDistributionPointsdistribution_points"typing.Iterable[DistributionPoint]r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r&   DistributionPointr   s     r5   r   z1CRLDistributionPoints.__init__.<locals>.<genexpr>  >       
 
12Jq+,,
 
 
 
 
 
r7   ?distribution_points must be a list of DistributionPoint objectsro   r   r|   _distribution_pointsr@   r0  s     r5   rS   zCRLDistributionPoints.__init__  j     ##677 
 
6I
 
 
 
 
 	   
 %8!!!r7   r9  r9   c                    d| j          dS )Nz<CRLDistributionPoints(r   r9  rf   s    r5   r   zCRLDistributionPoints.__repr__  s    F)BFFFFr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r/  r   r9  r   s     r5   r   zCRLDistributionPoints.__eq__  s,    %!677 	"!!(E,FFFr7   r;   c                D    t          t          | j                            S r%   r   r   r9  rf   s    r5   r   zCRLDistributionPoints.__hash__      E$344555r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z"CRLDistributionPoints.public_bytes  r   r7   Nr0  r1  r"   rO   r   r   rH   rg   )rY   rZ   r[   r   CRL_DISTRIBUTION_POINTSrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r/  r/    s        

.C8 8 8 8 &<%;& &"GX{G G G GG G G G6 6 6 66 6 6 6 6 6r7   r/  c                  b    e Zd Zej        ZddZ ed          \  ZZ	Z
ddZddZddZddZdS )FreshestCRLr0  r1  r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r4  r   s     r5   r   z'FreshestCRL.__init__.<locals>.<genexpr>&  r6  r7   r7  r8  r:  s     r5   rS   zFreshestCRL.__init__"  r;  r7   r9  r9   c                    d| j          dS )Nz<FreshestCRL(r   r=  rf   s    r5   r   zFreshestCRL.__repr__4  s    <t8<<<<r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   rF  r   r9  r   s     r5   r   zFreshestCRL.__eq__7  s+    %-- 	"!!(E,FFFr7   r;   c                D    t          t          | j                            S r%   r@  rf   s    r5   r   zFreshestCRL.__hash__=  rA  r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zFreshestCRL.public_bytes@  r   r7   NrC  r   r   rH   rg   )rY   rZ   r[   r   FRESHEST_CRLrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   rF  rF    s        

#C8 8 8 8 &<%;& &"GX{= = = =G G G G6 6 6 66 6 6 6 6 6r7   rF  c                      e Zd Zdd
ZddZddZddZedd            Zedd            Z	edd            Z
edd            ZdS ) r5  	full_namer   relative_name*typing.Optional[RelativeDistinguishedName]reasons.typing.Optional[typing.FrozenSet[ReasonFlags]]
crl_issuerr"   rO   c                   |r|rt          d          |s|s|st          d          |7t          |          }t          d |D                       st          d          |r$t	          |t
                    st          d          |7t          |          }t          d |D                       st          d          |r=t	          |t                    rt          d |D                       st          d	          |r+t          j        |v st          j	        |v rt          d
          || _
        || _        || _        || _        d S )NzOYou cannot provide both full_name and relative_name, at least one must be None.z?Either full_name, relative_name or crl_issuer must be provided.c              3  @   K   | ]}t          |t                    V  d S r%   r   r   s     r5   r   z-DistributionPoint.__init__.<locals>.<genexpr>Y  s,      EEaz![11EEEEEEr7   z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamec              3  @   K   | ]}t          |t                    V  d S r%   r   r   s     r5   r   z-DistributionPoint.__init__.<locals>.<genexpr>f  s,      FFaz![11FFFFFFr7   z2crl_issuer must be None or a list of general namesc              3  @   K   | ]}t          |t                    V  d S r%   r&   ReasonFlagsr   s     r5   r   z-DistributionPoint.__init__.<locals>.<genexpr>m  s,      CCaz![11CCCCCCr7   z0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)r   ro   r   r|   r&   r   	frozensetrZ  unspecifiedremove_from_crl
_full_name_relative_name_reasons_crl_issuer)r@   rO  rP  rR  rT  s        r5   rS   zDistributionPoint.__init__E  s     	 	*    	 	z 	  
  YIEE9EEEEE E    	m-FGG G   !j))JFF:FFFFF H    	P7I..	PCC7CCCCC	P NOOO 	#w..*g55$  
 $+%r7   r9   c                ,    d                     |           S )Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>r   rf   s    r5   r   zDistributionPoint.__repr__  s    **0&,,	
r7   r   r   r   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )r&   r5  r   rO  rP  rR  rT  r   s     r5   r   zDistributionPoint.__eq__  sf    %!233 	"!! Neo- 4"e&994-4 5#33		
r7   r;   c                    | j         t          | j                   }nd }| j        t          | j                  }nd }t          || j        | j        |f          S r%   )rO  r   rT  r   rP  rR  )r@   fnrT  s      r5   r   zDistributionPoint.__hash__  sj    >%BGC CBB B?& do&& J JR+T\:FGGGr7   r   c                    | j         S r%   r^  rf   s    r5   rO  zDistributionPoint.full_name  
    r7   c                    | j         S r%   r_  rf   s    r5   rP  zDistributionPoint.relative_name  r  r7   c                    | j         S r%   )r`  rf   s    r5   rR  zDistributionPoint.reasons  s
    }r7   c                    | j         S r%   )ra  rf   s    r5   rT  zDistributionPoint.crl_issuer  r   r7   N)
rO  r   rP  rQ  rR  rS  rT  r   r"   rO   r   r   rH   r   r"   rQ  r"   rS  )rY   rZ   r[   rS   r   r   r   r   rO  rP  rR  rT  rI   r7   r5   r5  r5  D  s        8& 8& 8& 8&t
 
 
 
	
 	
 	
 	
H H H H"    X # # # X#    X       X     r7   r5  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 )rZ  r\  keyCompromisecACompromiseaffiliationChanged
supersededcessationOfOperationcertificateHoldprivilegeWithdrawnaACompromiseremoveFromCRLN)rY   rZ   r[   r\  key_compromiseca_compromiseaffiliation_changedrs  cessation_of_operationcertificate_holdprivilege_withdrawnaa_compromiser]  rI   r7   r5   rZ  rZ    sD        K$N"M.J3(."M%OOOr7   rZ  )                        r  r  r  r  r  r  r  r  c                  t    e Zd Zej        ZddZddZddZddZ	e
dd            Ze
dd            ZddZdS )PolicyConstraintsrequire_explicit_policyr   inhibit_policy_mappingr"   rO   c                    |$t          |t                    st          d          |$t          |t                    st          d          ||t          d          || _        || _        d S )Nz>require_explicit_policy must be a non-negative integer or Nonez=inhibit_policy_mapping must be a non-negative integer or NonezSAt least one of require_explicit_policy and inhibit_policy_mapping must not be None)r&   r;   r|   r   _require_explicit_policy_inhibit_policy_mapping)r@   r  r  s      r5   rS   zPolicyConstraints.__init__  s    
 #.z#S8
 8
.   
 "-j"C7
 7
- O   ").E.M:  
 )@%'=$$$r7   r9   c                ,    d                     |           S )Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>r   rf   s    r5   r   zPolicyConstraints.__repr__  s    	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r  r   r  r  r   s     r5   r   zPolicyConstraints.__eq__
  sD    %!233 	"!! (E,II L+u/KK	
r7   r;   c                8    t          | j        | j        f          S r%   )r   r  r  rf   s    r5   r   zPolicyConstraints.__hash__  s"    )4+FG
 
 	
r7   c                    | j         S r%   )r  rf   s    r5   r  z)PolicyConstraints.require_explicit_policy  s    ,,r7   c                    | j         S r%   )r  rf   s    r5   r  z(PolicyConstraints.inhibit_policy_mapping      ++r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zPolicyConstraints.public_bytes   r   r7   N)r  r   r  r   r"   rO   r   r   rH   r   rg   )rY   rZ   r[   r   POLICY_CONSTRAINTSrN   rS   r   r   r   r   r  r  r'   rI   r7   r5   r  r    s        

)C> > > >:
 
 
 

 
 
 

 
 
 

 - - - X- , , , X,6 6 6 6 6 6r7   r  c                  b    e Zd Zej        ZddZ ed          \  ZZ	Z
ddZddZddZddZdS )CertificatePoliciespolicies"typing.Iterable[PolicyInformation]r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   )r&   PolicyInformationr   s     r5   r   z/CertificatePolicies.__init__.<locals>.<genexpr>)  s-      FF:a!233FFFFFFr7   z;Every item in the policies list must be a PolicyInformation)ro   r   r|   	_policies)r@   r  s     r5   rS   zCertificatePolicies.__init__'  sP    >>FFXFFFFF 	$  
 "r7   r  r9   c                    d| j          dS )Nz<CertificatePolicies(r   )r  rf   s    r5   r   zCertificatePolicies.__repr__3      9t~9999r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zCertificatePolicies.__eq__6  s*    %!455 	"!!~00r7   r;   c                D    t          t          | j                            S r%   )r   r   r  rf   s    r5   r   zCertificatePolicies.__hash__<      E$.))***r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z CertificatePolicies.public_bytes?  r   r7   N)r  r  r"   rO   r   r   rH   rg   )rY   rZ   r[   r   CERTIFICATE_POLICIESrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r  r  $  s        

+C" " " " &<%;K%H%H"GX{: : : :1 1 1 1+ + + +6 6 6 6 6 6r7   r  c                  ^    e Zd ZddZdd	ZddZddZedd            Zedd            Z	dS )r  policy_identifierr   policy_qualifiers?typing.Optional[typing.Iterable[typing.Union[str, UserNotice]]]r"   rO   c                    t          |t                    st          d          || _        |7t	          |          }t          d |D                       st          d          || _        d S )Nz-policy_identifier must be an ObjectIdentifierc              3  N   K   | ] }t          |t          t          f          V  !d S r%   )r&   r9   
UserNoticer   s     r5   r   z-PolicyInformation.__init__.<locals>.<genexpr>R  sB        56
1sJ/00     r7   zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r&   r   r|   _policy_identifierro   r   _policy_qualifiers)r@   r  r  s      r5   rS   zPolicyInformation.__init__D  s     +-=>> 	MKLLL"3( $%6 7 7  :K       1  
 #4r7   r9   c                ,    d                     |           S )Nze<PolicyInformation(policy_identifier={0.policy_identifier}, policy_qualifiers={0.policy_qualifiers})>r   rf   s    r5   r   zPolicyInformation.__repr__\  s    3396$<<	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r  r   r  r  r   s     r5   r   zPolicyInformation.__eq__b  sD    %!233 	"!! "e&== B&%*AA	
r7   r;   c                j    | j         t          | j                   }nd }t          | j        |f          S r%   )r  r   r   r  )r@   pqs     r5   r   zPolicyInformation.__hash__k  s?    !- d,-- B BT+R0111r7   c                    | j         S r%   )r  rf   s    r5   r  z#PolicyInformation.policy_identifieru      &&r7   ;typing.Optional[typing.List[typing.Union[str, UserNotice]]]c                    | j         S r%   )r  rf   s    r5   r  z#PolicyInformation.policy_qualifiersy       &&r7   N)r  r   r  r  r"   rO   r   r   rH   r  )r"   r  )
rY   rZ   r[   rS   r   r   r   r   r  r  rI   r7   r5   r  r  C  s        4 4 4 40
 
 
 

 
 
 
2 2 2 2 ' ' ' X' ' ' ' X' ' 'r7   r  c                  ^    e Zd ZddZdd	ZddZddZedd            Zedd            Z	dS )r  notice_reference typing.Optional[NoticeReference]explicit_texttyping.Optional[str]r"   rO   c                n    |r$t          |t                    st          d          || _        || _        d S )Nz2notice_reference must be None or a NoticeReference)r&   NoticeReferencer|   _notice_reference_explicit_text)r@   r  r  s      r5   rS   zUserNotice.__init__  sQ    
  	Jo%
 %
 	 D   "2+r7   r9   c                ,    d                     |           S )NzV<UserNotice(notice_reference={0.notice_reference}, explicit_text={0.explicit_text!r})>r   rf   s    r5   r   zUserNotice.__repr__  s    $$*F4LL	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r  r   r  r  r   s     r5   r   zUserNotice.__eq__  sB    %,, 	"!! !U%;; :"e&99	
r7   r;   c                8    t          | j        | j        f          S r%   )r   r  r  rf   s    r5   r   zUserNotice.__hash__  s    T*D,>?@@@r7   c                    | j         S r%   )r  rf   s    r5   r  zUserNotice.notice_reference      %%r7   c                    | j         S r%   )r  rf   s    r5   r  zUserNotice.explicit_text  r  r7   N)r  r  r  r  r"   rO   r   r   rH   )r"   r  r"   r  )
rY   rZ   r[   rS   r   r   r   r   r  r  rI   r7   r5   r  r    s        , , , ,
 
 
 

 
 
 
A A A A & & & X& # # # X# # #r7   r  c                  ^    e Zd ZddZdd	ZddZddZedd            Zedd            Z	dS )r  organizationr  notice_numberstyping.Iterable[int]r"   rO   c                    || _         t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   )r&   r;   r   s     r5   r   z+NoticeReference.__init__.<locals>.<genexpr>  s,      >>!:a%%>>>>>>r7   z)notice_numbers must be a list of integers)_organizationro   r   r|   _notice_numbers)r@   r  r  s      r5   rS   zNoticeReference.__init__  sV    
 *n-->>~>>>>> 	IGHHH-r7   r9   c                ,    d                     |           S )NzU<NoticeReference(organization={0.organization!r}, notice_numbers={0.notice_numbers})>r   rf   s    r5   r   zNoticeReference.__repr__  s    ##)6$<<	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r  r   r  r  r   s     r5   r   zNoticeReference.__eq__  sB    %11 	"!! !33 <#u';;	
r7   r;   c                R    t          | j        t          | j                  f          S r%   )r   r  r   r  rf   s    r5   r   zNoticeReference.__hash__  s#    T&d.A(B(BCDDDr7   c                    | j         S r%   )r  rf   s    r5   r  zNoticeReference.organization      !!r7   typing.List[int]c                    | j         S r%   )r  rf   s    r5   r  zNoticeReference.notice_numbers  r   r7   N)r  r  r  r  r"   rO   r   r   rH   r  )r"   r  )
rY   rZ   r[   rS   r   r   r   r   r  r  rI   r7   r5   r  r    s        
. 
. 
. 
.
 
 
 

 
 
 
E E E E " " " X" $ $ $ X$ $ $r7   r  c                  b    e Zd Zej        ZddZ ed          \  ZZ	Z
ddZddZddZddZdS )ExtendedKeyUsageusages!typing.Iterable[ObjectIdentifier]r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r&   r   r   s     r5   r   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>  s-      CCq:a!122CCCCCCr7   z9Every item in the usages list must be an ObjectIdentifier)ro   r   r|   _usages)r@   r  s     r5   rS   zExtendedKeyUsage.__init__  sN    fCCFCCCCC 	K   r7   r  r9   c                    d| j          dS )Nz<ExtendedKeyUsage(r   )r  rf   s    r5   r   zExtendedKeyUsage.__repr__      4DL4444r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zExtendedKeyUsage.__eq__  s*    %!122 	"!!|u},,r7   r;   c                D    t          t          | j                            S r%   )r   r   r  rf   s    r5   r   zExtendedKeyUsage.__hash__  s    E$,''(((r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zExtendedKeyUsage.public_bytes  r   r7   N)r  r  r"   rO   r   r   rH   rg   )rY   rZ   r[   r   EXTENDED_KEY_USAGErN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r  r    s        

)C    &<%;I%F%F"GX{5 5 5 5- - - -) ) ) )6 6 6 6 6 6r7   r  c                  <    e Zd Zej        ZddZddZdd	ZddZ	dS )OCSPNoCheckr   r   r"   r   c                >    t          |t                    st          S dS NT)r&   r  r   r   s     r5   r   zOCSPNoCheck.__eq__  s    %-- 	"!!tr7   r;   c                *    t          t                    S r%   )r   r  rf   s    r5   r   zOCSPNoCheck.__hash__  s    K   r7   r9   c                    dS )Nz<OCSPNoCheck()>rI   rf   s    r5   r   zOCSPNoCheck.__repr__  s      r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zOCSPNoCheck.public_bytes   r   r7   Nr   rH   r   rg   )
rY   rZ   r[   r   OCSP_NO_CHECKrN   r   r   r   r'   rI   r7   r5   r  r    sl        

$C   ! ! ! !! ! ! !6 6 6 6 6 6r7   r  c                  <    e Zd Zej        ZddZddZdd	ZddZ	dS )PrecertPoisonr   r   r"   r   c                >    t          |t                    st          S dS r  )r&   r  r   r   s     r5   r   zPrecertPoison.__eq__  s    %// 	"!!tr7   r;   c                *    t          t                    S r%   )r   r  rf   s    r5   r   zPrecertPoison.__hash__  s    M"""r7   r9   c                    dS )Nz<PrecertPoison()>rI   rf   s    r5   r   zPrecertPoison.__repr__  s    ""r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zPrecertPoison.public_bytes  r   r7   Nr   rH   r   rg   )
rY   rZ   r[   r   PRECERT_POISONrN   r   r   r   r'   rI   r7   r5   r  r    sl        

%C   # # # ## # # #6 6 6 6 6 6r7   r  c                  b    e Zd Zej        ZddZ ed          \  ZZ	Z
ddZddZddZddZdS )
TLSFeaturefeaturestyping.Iterable[TLSFeatureType]r"   rO   c                    t          |          }t          d |D                       rt          |          dk    rt          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   )r&   TLSFeatureTyper   s     r5   r   z&TLSFeature.__init__.<locals>.<genexpr>  s,      DDaJq.11DDDDDDr7   r   z@features must be a list of elements from the TLSFeatureType enum)ro   r   r=   r|   	_features)r@   r  s     r5   rS   zTLSFeature.__init__  sa    >>DD8DDDDD	8}}!!  
 "r7   r  r9   c                    d| j          dS )Nz<TLSFeature(features=r   )r  rf   s    r5   r   zTLSFeature.__repr__)  r  r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zTLSFeature.__eq__,  s)    %,, 	"!!~00r7   r;   c                D    t          t          | j                            S r%   )r   r   r  rf   s    r5   r   zTLSFeature.__hash__2  r  r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zTLSFeature.public_bytes5  r   r7   N)r  r  r"   rO   r   r   rH   rg   )rY   rZ   r[   r   TLS_FEATURErN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r  r    s        

"C" " " " &<%;K%H%H"GX{: : : :1 1 1 1+ + + +6 6 6 6 6 6r7   r  c                      e Zd ZdZdZdS )r  r     N)rY   rZ   r[   status_requeststatus_request_v2rI   r7   r5   r  r  9  s         N r7   r  c                    i | ]
}|j         |S rI   r}   r   s     r5   
<dictcomp>r  D  s    @@@AQWa@@@r7   c                  \    e Zd Zej        ZddZddZddZddZ	e
dd            ZddZdS )InhibitAnyPolicy
skip_certsr;   r"   rO   c                    t          |t                    st          d          |dk     rt          d          || _        d S )Nzskip_certs must be an integerr   z)skip_certs must be a non-negative integer)r&   r;   r|   r   _skip_certs)r@   r
  s     r5   rS   zInhibitAnyPolicy.__init__J  sI    *c** 	=;<<<>>HIII%r7   r9   c                    d| j          dS )Nz<InhibitAnyPolicy(skip_certs=r   )r
  rf   s    r5   r   zInhibitAnyPolicy.__repr__S  s    BtBBBBr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r	  r   r
  r   s     r5   r   zInhibitAnyPolicy.__eq__V  s+    %!122 	"!!%"222r7   c                *    t          | j                  S r%   )r   r
  rf   s    r5   r   zInhibitAnyPolicy.__hash__\  r   r7   c                    | j         S r%   )r  rf   s    r5   r
  zInhibitAnyPolicy.skip_certs_  r   r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zInhibitAnyPolicy.public_bytesc  r   r7   N)r
  r;   r"   rO   r   r   rH   rg   )rY   rZ   r[   r   INHIBIT_ANY_POLICYrN   rS   r   r   r   r   r
  r'   rI   r7   r5   r	  r	  G  s        

)C& & & &C C C C3 3 3 3% % % %       X 6 6 6 6 6 6r7   r	  c                     e Zd Zej        Zd!dZed"d            Zed"d            Z	ed"d            Z
ed"d            Zed"d            Zed"d            Zed"d            Zed"d            Zed"d            Zd#dZd$dZd%dZd&dZd S )'KeyUsagedigital_signaturer   content_commitmentkey_enciphermentdata_enciphermentkey_agreementkey_cert_signcrl_signencipher_onlydecipher_onlyr"   rO   c
                    |s|s|	rt          d          || _        || _        || _        || _        || _        || _        || _        || _        |	| _	        d S )NzKencipher_only and decipher_only can only be true when key_agreement is true)
r   _digital_signature_content_commitment_key_encipherment_data_encipherment_key_agreement_key_cert_sign	_crl_sign_encipher_only_decipher_only)
r@   r  r  r  r  r  r  r  r  r  s
             r5   rS   zKeyUsage.__init__j  s      	- 	= 	(  
 #4#5 !1"3++!++r7   c                    | j         S r%   )r  rf   s    r5   r  zKeyUsage.digital_signature  r  r7   c                    | j         S r%   )r   rf   s    r5   r  zKeyUsage.content_commitment  s    ''r7   c                    | j         S r%   )r!  rf   s    r5   r  zKeyUsage.key_encipherment  r  r7   c                    | j         S r%   )r"  rf   s    r5   r  zKeyUsage.data_encipherment  r  r7   c                    | j         S r%   )r#  rf   s    r5   r  zKeyUsage.key_agreement  r  r7   c                    | j         S r%   )r$  rf   s    r5   r  zKeyUsage.key_cert_sign  r  r7   c                    | j         S r%   )r%  rf   s    r5   r  zKeyUsage.crl_sign  
    ~r7   c                <    | j         st          d          | j        S )Nz7encipher_only is undefined unless key_agreement is true)r  r   r&  rf   s    r5   r  zKeyUsage.encipher_only  -    ! 	'I   &&r7   c                <    | j         st          d          | j        S )Nz7decipher_only is undefined unless key_agreement is true)r  r   r'  rf   s    r5   r  zKeyUsage.decipher_only  r1  r7   r9   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   re   )r@   r  r  s      r5   r   zKeyUsage.__repr__  sa    	" .M .MM 	" 	" 	" "M!MMM	"5 &}m
4
4	5s    ""r   r   c                Z   t          |t                    st          S | j        |j        k    o| j        |j        k    oo| j        |j        k    o_| j        |j        k    oO| j        |j        k    o?| j        |j        k    o/| j	        |j	        k    o| j
        |j
        k    o| j        |j        k    S r%   )r&   r  r   r  r  r  r  r  r  r  r&  r'  r   s     r5   r   zKeyUsage.__eq__  s    %** 	"!! "e&== <'5+CC<%)??< &%*AA< "e&99	<
 "e&99< /< #u';;< #u';;
	
r7   r;   c                    t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        f	          S r%   )
r   r  r  r  r  r  r  r  r&  r'  rf   s    r5   r   zKeyUsage.__hash__  sN    &'%&""##

 
 	
r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zKeyUsage.public_bytes  r   r7   N)r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r   r"   rO   r#  r   r   rH   rg   )rY   rZ   r[   r   	KEY_USAGErN   rS   r   r  r  r  r  r  r  r  r  r  r   r   r   r'   rI   r7   r5   r  r  g  s       

 C, , , ,8 ' ' ' X' ( ( ( X( & & & X& ' ' ' X' # # # X# # # # X#    X ' ' ' X' ' ' ' X'5 5 5 5*
 
 
 
 
 
 
 
6 6 6 6 6 6r7   r  c                      e Zd Zej        ZddZdd
ZddZddZ	ddZ
ddZddZedd            Zedd            Zd dZdS )!NameConstraintspermitted_subtreesr   excluded_subtreesr"   rO   c                   |]t          |          }|st          d          t          d |D                       st          d          |                     |           |]t          |          }|st          d          t          d |D                       st          d          |                     |           ||t          d          || _        || _        d S )Nz3permitted_subtrees must be a non-empty list or Nonec              3  @   K   | ]}t          |t                    V  d S r%   r   r   s     r5   r   z+NameConstraints.__init__.<locals>.<genexpr>  s,      NNaz![11NNNNNNr7   z@permitted_subtrees must be a list of GeneralName objects or Nonez2excluded_subtrees must be a non-empty list or Nonec              3  @   K   | ]}t          |t                    V  d S r%   r   r   s     r5   r   z+NameConstraints.__init__.<locals>.<genexpr>  ,      MMaz![11MMMMMMr7   z?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)ro   r   r   r|   _validate_tree_permitted_subtrees_excluded_subtrees)r@   r:  r;  s      r5   rS   zNameConstraints.__init__  sC   
 )!%&8!9!9%  I   NN;MNNNNN   
  2333( $%6 7 7$  H   MM;LMMMMM   
  1222%*;*C#  
 $6 "3r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r9  r   r;  r:  r   s     r5   r   zNameConstraints.__eq__  sC    %11 	"!! "e&== D'5+CC	
r7   treetyping.Iterable[GeneralName]c                Z    |                      |           |                     |           d S r%   )_validate_ip_name_validate_dns_namer@   rD  s     r5   r@  zNameConstraints._validate_tree"  s0    t$$$%%%%%r7   c                V    t          d |D                       rt          d          d S )Nc              3     K   | ]E}t          |t                    o+t          |j        t          j        t          j        f           V  Fd S r%   )r&   r   r}   	ipaddressIPv4NetworkIPv6Networkr   names     r5   r   z4NameConstraints._validate_ip_name.<locals>.<genexpr>'  sk       
 

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

 
 
 
 
 
 
	 &  
	 
	r7   c                V    t          d |D                       rt          d          d S )Nc              3  R   K   | ]"}t          |t                    od |j        v V  #dS )*N)r&   r   r}   rO  s     r5   r   z5NameConstraints._validate_dns_name.<locals>.<genexpr>4  sI       
 
@DJtW%%;#*;
 
 
 
 
 
r7   zDDNSName name constraints must not contain the '*' wildcard character)rQ  r   rI  s     r5   rH  z"NameConstraints._validate_dns_name3  sS     
 
HL
 
 
 
 
 	   	 	r7   r9   c                ,    d                     |           S )Nze<NameConstraints(permitted_subtrees={0.permitted_subtrees}, excluded_subtrees={0.excluded_subtrees})>r   rf   s    r5   r   zNameConstraints.__repr__<  s    88>t	
r7   r;   c                    | j         t          | j                   }nd }| j        t          | j                  }nd }t          ||f          S r%   )r:  r   r;  r   )r@   psess      r5   r   zNameConstraints.__hash__B  sd    ".BG'C CBB B!-BG&C CBB BRH~~r7   r   c                    | j         S r%   )rA  rf   s    r5   r:  z"NameConstraints.permitted_subtreesS  s     ''r7   c                    | j         S r%   )rB  rf   s    r5   r;  z!NameConstraints.excluded_subtreesY  r  r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zNameConstraints.public_bytes_  r   r7   N)r:  r   r;  r   r"   rO   r   )rD  rE  r"   rO   r   rH   r   rg   )rY   rZ   r[   r   NAME_CONSTRAINTSrN   rS   r   r@  rG  rH  r   r   r   r:  r;  r'   rI   r7   r5   r9  r9    s        

'C(4 (4 (4 (4T
 
 
 
& & & &      
 
 
 
   " ( ( ( X(
 ' ' ' X'
6 6 6 6 6 6r7   r9  c                  v    e Zd Zdd	Zedd
            Zedd            Zedd            ZddZddZ	ddZ
dS )	ExtensionrN   r   criticalr   r}   r   r"   rO   c                    t          |t                    st          d          t          |t                    st          d          || _        || _        || _        d S )Nz2oid argument must be an ObjectIdentifier instance.z critical must be a boolean value)r&   r   r|   r   _oid	_critical_value)r@   rN   r_  r}   s       r5   rS   zExtension.__init__d  si     #/00 	D   (D)) 	@>???	!r7   c                    | j         S r%   ra  rf   s    r5   rN   zExtension.oids  
    yr7   c                    | j         S r%   )rb  rf   s    r5   r_  zExtension.criticalw  r/  r7   c                    | j         S r%   rc  rf   s    r5   r}   zExtension.value{  
    {r7   r9   c                ,    d                     |           S )Nz@<Extension(oid={0.oid}, critical={0.critical}, value={0.value})>r   rf   s    r5   r   zExtension.__repr__  s     
&,,	r7   r   r   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )r&   r^  r   rN   r_  r}   r   s     r5   r   zExtension.__eq__  sO    %++ 	"!! H	! */*
ek)	
r7   r;   c                D    t          | j        | j        | j        f          S r%   )r   rN   r_  r}   rf   s    r5   r   zExtension.__hash__  s    TXt}dj9:::r7   N)rN   r   r_  r   r}   r   r"   rO   r  r#  )r"   r   r   r   rH   )rY   rZ   r[   rS   r   rN   r_  r}   r   r   r   rI   r7   r5   r^  r^  c  s               X    X    X   
 
 
 
; ; ; ; ; ;r7   r^  c                      e Zd Zd#dZ ed          \  ZZZej	        d$d
            Z
ej	        d%d            Z
ej	        d&d            Z
ej	        d'd            Z
ej	        d(d            Z
d)dZ
d*dZd+dZd,d!Zd"S )-GeneralNamesgeneral_namesrE  r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r   r   s     r5   r   z(GeneralNames.__init__.<locals>.<genexpr>  s,      EE!:a--EEEEEEr7   z^Every item in the general_names list must be an object conforming to the GeneralName interface)ro   r   r|   _general_namesr@   rp  s     r5   rS   zGeneralNames.__init__  sV    ]++EE}EEEEE 	A  
 ,r7   rs  typectyping.Union[typing.Type[DNSName], typing.Type[UniformResourceIdentifier], typing.Type[RFC822Name]]typing.List[str]c                    d S r%   rI   r@   ru  s     r5   get_values_for_typez GeneralNames.get_values_for_type  	     	r7   typing.Type[DirectoryName]typing.List[Name]c                    d S r%   rI   ry  s     r5   rz  z GeneralNames.get_values_for_type  	    
 	r7   typing.Type[RegisteredID]typing.List[ObjectIdentifier]c                    d S r%   rI   ry  s     r5   rz  z GeneralNames.get_values_for_type  r  r7   typing.Type[IPAddress]typing.List[_IPAddressTypes]c                    d S r%   rI   ry  s     r5   rz  z GeneralNames.get_values_for_type  	     	r7   typing.Type[OtherName]typing.List[OtherName]c                    d S r%   rI   ry  s     r5   rz  z GeneralNames.get_values_for_type  r  r7   typing.Union[typing.Type[DNSName], typing.Type[DirectoryName], typing.Type[IPAddress], typing.Type[OtherName], typing.Type[RFC822Name], typing.Type[RegisteredID], typing.Type[UniformResourceIdentifier]]typing.Union[typing.List[_IPAddressTypes], typing.List[str], typing.List[OtherName], typing.List[Name], typing.List[ObjectIdentifier]]c                l    fd| D             }t           k    rd |D             S t          |          S )Nc              3  <   K   | ]}t          |          |V  d S r%   )r&   )r   iru  s     r5   r   z3GeneralNames.get_values_for_type.<locals>.<genexpr>  s2      77a:a#6#67777777r7   c                    g | ]	}|j         
S rI   r  )r   r  s     r5   
<listcomp>z4GeneralNames.get_values_for_type.<locals>.<listcomp>  s    ***AG***r7   )r   ro   )r@   ru  objss    ` r5   rz  z GeneralNames.get_values_for_type  sI    * 877747779**T****Dzzr7   r9   c                    d| j          dS )Nz<GeneralNames(r   rs  rf   s    r5   r   zGeneralNames.__repr__  s    7 37777r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   ro  r   rs  r   s     r5   r   zGeneralNames.__eq__  s+    %.. 	"!!"e&:::r7   r;   c                D    t          t          | j                            S r%   )r   r   rs  rf   s    r5   r   zGeneralNames.__hash__  s    E$-..///r7   Nrp  rE  r"   rO   ru  rv  r"   rw  ru  r|  r"   r}  ru  r  r"   r  ru  r  r"   r  ru  r  r"   r  ru  r  r"   r  r   r   rH   )rY   rZ   r[   rS   rJ   r   r   r   typingoverloadrz  r   r   r   rI   r7   r5   ro  ro    s:       , , , , &<%;<L%M%M"GX{_   _ _   _ _   _ _   _
 _   _
   48 8 8 8; ; ; ;0 0 0 0 0 0r7   ro  c                     e Zd Zej        Zd%dZ ed          \  ZZ	Z
ej        d&d
            Zej        d'd            Zej        d(d            Zej        d)d            Zej        d*d            Zd+dZd,dZd-dZd.d!Zd/d#Zd$S )0SubjectAlternativeNamerp  rE  r"   rO   c                .    t          |          | _        d S r%   ro  rs  rt  s     r5   rS   zSubjectAlternativeName.__init__      *=99r7   rs  ru  rv  rw  c                    d S r%   rI   ry  s     r5   rz  z*SubjectAlternativeName.get_values_for_type  r{  r7   r|  r}  c                    d S r%   rI   ry  s     r5   rz  z*SubjectAlternativeName.get_values_for_type  r  r7   r  r  c                    d S r%   rI   ry  s     r5   rz  z*SubjectAlternativeName.get_values_for_type  r  r7   r  r  c                    d S r%   rI   ry  s     r5   rz  z*SubjectAlternativeName.get_values_for_type  r  r7   r  r  c                    d S r%   rI   ry  s     r5   rz  z*SubjectAlternativeName.get_values_for_type  r  r7   r  r  c                6    | j                             |          S r%   rs  rz  ry  s     r5   rz  z*SubjectAlternativeName.get_values_for_type      $ "66t<<<r7   r9   c                    d| j          dS )Nz<SubjectAlternativeName(r   r  rf   s    r5   r   zSubjectAlternativeName.__repr__-  s    A$*=AAAAr7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   rs  r   s     r5   r   zSubjectAlternativeName.__eq__0  s,    %!788 	"!!"e&:::r7   r;   c                *    t          | j                  S r%   r   rs  rf   s    r5   r   zSubjectAlternativeName.__hash__6      D'(((r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z#SubjectAlternativeName.public_bytes9  r   r7   Nr  r  r  r  r  r  r  r   r   rH   rg   )rY   rZ   r[   r   SUBJECT_ALTERNATIVE_NAMErN   rS   rJ   r   r   r   r  r  rz  r   r   r   r'   rI   r7   r5   r  r    sZ       

/C: : : : &<%;<L%M%M"GX{_   _ _   _ _   _ _   _
 _   _
= = = =(B B B B; ; ; ;) ) ) )6 6 6 6 6 6r7   r  c                     e Zd Zej        Zd%dZ ed          \  ZZ	Z
ej        d&d
            Zej        d'd            Zej        d(d            Zej        d)d            Zej        d*d            Zd+dZd,dZd-dZd.d!Zd/d#Zd$S )0IssuerAlternativeNamerp  rE  r"   rO   c                .    t          |          | _        d S r%   r  rt  s     r5   rS   zIssuerAlternativeName.__init__@  r  r7   rs  ru  rv  rw  c                    d S r%   rI   ry  s     r5   rz  z)IssuerAlternativeName.get_values_for_typeE  r{  r7   r|  r}  c                    d S r%   rI   ry  s     r5   rz  z)IssuerAlternativeName.get_values_for_typeP  r  r7   r  r  c                    d S r%   rI   ry  s     r5   rz  z)IssuerAlternativeName.get_values_for_typeW  r  r7   r  r  c                    d S r%   rI   ry  s     r5   rz  z)IssuerAlternativeName.get_values_for_type^  r  r7   r  r  c                    d S r%   rI   ry  s     r5   rz  z)IssuerAlternativeName.get_values_for_typed  r  r7   r  r  c                6    | j                             |          S r%   r  ry  s     r5   rz  z)IssuerAlternativeName.get_values_for_typej  r  r7   r9   c                    d| j          dS )Nz<IssuerAlternativeName(r   r  rf   s    r5   r   zIssuerAlternativeName.__repr__~  s    @)<@@@@r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   rs  r   s     r5   r   zIssuerAlternativeName.__eq__  s,    %!677 	"!!"e&:::r7   r;   c                *    t          | j                  S r%   r  rf   s    r5   r   zIssuerAlternativeName.__hash__  r  r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z"IssuerAlternativeName.public_bytes  r   r7   Nr  r  r  r  r  r  r  r   r   rH   rg   )rY   rZ   r[   r   ISSUER_ALTERNATIVE_NAMErN   rS   rJ   r   r   r   r  r  rz  r   r   r   r'   rI   r7   r5   r  r  =  sZ       

.C: : : : &<%;<L%M%M"GX{_   _ _   _ _   _ _   _
 _   _
= = = =(A A A A; ; ; ;) ) ) )6 6 6 6 6 6r7   r  c                     e Zd Zej        Zd%dZ ed          \  ZZ	Z
ej        d&d
            Zej        d'd            Zej        d(d            Zej        d)d            Zej        d*d            Zd+dZd,dZd-dZd.d!Zd/d#Zd$S )0CertificateIssuerrp  rE  r"   rO   c                .    t          |          | _        d S r%   r  rt  s     r5   rS   zCertificateIssuer.__init__  r  r7   rs  ru  rv  rw  c                    d S r%   rI   ry  s     r5   rz  z%CertificateIssuer.get_values_for_type  r{  r7   r|  r}  c                    d S r%   rI   ry  s     r5   rz  z%CertificateIssuer.get_values_for_type  r  r7   r  r  c                    d S r%   rI   ry  s     r5   rz  z%CertificateIssuer.get_values_for_type  r  r7   r  r  c                    d S r%   rI   ry  s     r5   rz  z%CertificateIssuer.get_values_for_type  r  r7   r  r  c                    d S r%   rI   ry  s     r5   rz  z%CertificateIssuer.get_values_for_type  r  r7   r  r  c                6    | j                             |          S r%   r  ry  s     r5   rz  z%CertificateIssuer.get_values_for_type  r  r7   r9   c                    d| j          dS )Nz<CertificateIssuer(r   r  rf   s    r5   r   zCertificateIssuer.__repr__  s    <T%8<<<<r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   rs  r   s     r5   r   zCertificateIssuer.__eq__  s,    %!233 	"!!"e&:::r7   r;   c                *    t          | j                  S r%   r  rf   s    r5   r   zCertificateIssuer.__hash__  r  r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zCertificateIssuer.public_bytes  r   r7   Nr  r  r  r  r  r  r  r   r   rH   rg   )rY   rZ   r[   r   CERTIFICATE_ISSUERrN   rS   rJ   r   r   r   r  r  rz  r   r   r   r'   rI   r7   r5   r  r    sV       

1C: : : : &<%;<L%M%M"GX{_   _ _   _ _   _ _   _
 _   _
= = = =(= = = =; ; ; ;) ) ) )6 6 6 6 6 6r7   r  c                  \    e Zd Zej        ZddZddZddZddZ	e
dd            ZddZdS )	CRLReasonreasonrZ  r"   rO   c                \    t          |t                    st          d          || _        d S )Nz*reason must be an element from ReasonFlags)r&   rZ  r|   _reason)r@   r  s     r5   rS   zCRLReason.__init__  s/    &+.. 	JHIIIr7   r9   c                    d| j          dS )Nz<CRLReason(reason=r   r  rf   s    r5   r   zCRLReason.__repr__  r  r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zCRLReason.__eq__  s)    %++ 	"!!{el**r7   r;   c                *    t          | j                  S r%   )r   r  rf   s    r5   r   zCRLReason.__hash__  r   r7   c                    | j         S r%   r  rf   s    r5   r  zCRLReason.reason  r   r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zCRLReason.public_bytes  r   r7   N)r  rZ  r"   rO   r   r   rH   )r"   rZ  rg   )rY   rZ   r[   r   
CRL_REASONrN   rS   r   r   r   r   r  r'   rI   r7   r5   r  r    s        

)C   5 5 5 5+ + + +! ! ! !    X6 6 6 6 6 6r7   r  c                  \    e Zd Zej        ZddZddZddZddZ	e
dd            ZddZdS )InvalidityDateinvalidity_datedatetime.datetimer"   rO   c                f    t          |t          j                  st          d          || _        d S )Nz+invalidity_date must be a datetime.datetime)r&   datetimer|   _invalidity_date)r@   r  s     r5   rS   zInvalidityDate.__init__  s5    /8+<== 	KIJJJ /r7   r9   c                6    d                     | j                  S )Nz$<InvalidityDate(invalidity_date={})>)re   r  rf   s    r5   r   zInvalidityDate.__repr__  s     5<<!
 
 	
r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zInvalidityDate.__eq__
  s+    %00 	"!!#u'<<<r7   r;   c                *    t          | j                  S r%   )r   r  rf   s    r5   r   zInvalidityDate.__hash__  s    D()))r7   c                    | j         S r%   )r  rf   s    r5   r  zInvalidityDate.invalidity_date  r  r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   zInvalidityDate.public_bytes  r   r7   N)r  r  r"   rO   r   r   rH   )r"   r  rg   )rY   rZ   r[   r   INVALIDITY_DATErN   rS   r   r   r   r   r  r'   rI   r7   r5   r  r    s        

.C0 0 0 0
 
 
 

= = = =* * * * % % % X%6 6 6 6 6 6r7   r  c                  b    e Zd Zej        ZddZ ed          \  ZZ	Z
ddZdd
ZddZddZdS ))PrecertificateSignedCertificateTimestampssigned_certificate_timestamps+typing.Iterable[SignedCertificateTimestamp]r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r&   r   r   scts     r5   r   zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>%  A       
 
 s677
 
 
 
 
 
r7   YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestampro   r   r|   _signed_certificate_timestampsr@   r  s     r5   rS   z2PrecertificateSignedCertificateTimestamps.__init__  k     )--J(K(K% 
 
4
 
 
 
 
 	 /   /L+++r7   r  r9   c                F    d                     t          |                     S )Nz/<PrecertificateSignedCertificateTimestamps({})>)re   ro   rf   s    r5   r   z2PrecertificateSignedCertificateTimestamps.__repr__3  s#    @GGJJ
 
 	
r7   r;   c                D    t          t          | j                            S r%   r   r   r  rf   s    r5   r   z2PrecertificateSignedCertificateTimestamps.__hash__8      E$=>>???r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   z0PrecertificateSignedCertificateTimestamps.__eq__;  s3    %!JKK 	"!! /34	
r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z6PrecertificateSignedCertificateTimestamps.public_bytesD  r   r7   Nr  r  r"   rO   r   rH   r   rg   )rY   rZ   r[   r   %PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r  r    s        

<CL L L L" &<%;(& &"GX{
 
 
 

@ @ @ @
 
 
 
6 6 6 6 6 6r7   r  c                  b    e Zd Zej        ZddZ ed          \  ZZ	Z
ddZdd
ZddZddZdS )SignedCertificateTimestampsr  r  r"   rO   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r%   r  r  s     r5   r   z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>R  r  r7   r  r  r  s     r5   rS   z$SignedCertificateTimestamps.__init__K  r  r7   r  r9   c                (    dt          |            dS )Nz<SignedCertificateTimestamps(r   )ro   rf   s    r5   r   z$SignedCertificateTimestamps.__repr__`  s    =tDzz====r7   r;   c                D    t          t          | j                            S r%   r  rf   s    r5   r   z$SignedCertificateTimestamps.__hash__c  r  r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r   r   r  r   s     r5   r   z"SignedCertificateTimestamps.__eq__f  s3    %!<== 	"!! /34	
r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z(SignedCertificateTimestamps.public_byteso  r   r7   Nr  r   rH   r   rg   )rY   rZ   r[   r   SIGNED_CERTIFICATE_TIMESTAMPSrN   rS   rJ   r   r   r   r   r   r   r'   rI   r7   r5   r   r   H  s        

4CL L L L" &<%;(& &"GX{> > > >@ @ @ @
 
 
 
6 6 6 6 6 6r7   r   c                  \    e Zd Zej        ZddZdd	ZddZddZ	e
dd            ZddZdS )	OCSPNoncenoncer#   r"   rO   c                \    t          |t                    st          d          || _        d S )Nznonce must be bytes)r&   r#   r|   _nonce)r@   r
  s     r5   rS   zOCSPNonce.__init__v  s.    %'' 	31222r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r	  r   r
  r   s     r5   r   zOCSPNonce.__eq__|  s)    %++ 	"!!zU[((r7   r;   c                *    t          | j                  S r%   )r   r
  rf   s    r5   r   zOCSPNonce.__hash__  s    DJr7   r9   c                    d| j         dS )Nz<OCSPNonce(nonce=r   )r
  rf   s    r5   r   zOCSPNonce.__repr__  s    34:3333r7   c                    | j         S r%   )r  rf   s    r5   r
  zOCSPNonce.nonce  rj  r7   c                *    t          j        |           S r%   r   rf   s    r5   r'   zOCSPNonce.public_bytes  r   r7   N)r
  r#   r"   rO   r   rH   r   rg   )rY   rZ   r[   r   NONCErN   rS   r   r   r   r   r
  r'   rI   r7   r5   r	  r	  s  s        

 C   ) ) ) )       4 4 4 4    X6 6 6 6 6 6r7   r	  c                  L    e Zd Zej        ZddZdd	ZddZddZ	ddZ
ddZdS )OCSPAcceptableResponses	responsesr  r"   rO   c                    t          |          }t          d |D                       rt          d          || _        d S )Nc              3  B   K   | ]}t          |t                     V  d S r%   r  )r   rs     r5   r   z3OCSPAcceptableResponses.__init__.<locals>.<genexpr>  s0      FFq:a!1222FFFFFFr7   z'All responses must be ObjectIdentifiers)ro   rQ  r|   
_responses)r@   r  s     r5   rS   z OCSPAcceptableResponses.__init__  sG    OO	FFIFFFFF 	GEFFF#r7   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r%   )r&   r  r   r  r   s     r5   r   zOCSPAcceptableResponses.__eq__  s+    %!899 	"!!%"222r7   r;   c                D    t          t          | j                            S r%   )r   r   r  rf   s    r5   r   z OCSPAcceptableResponses.__hash__  s    E$/**+++r7   r9   c                    d| j          dS )Nz#<OCSPAcceptableResponses(responses=r   )r  rf   s    r5   r   z OCSPAcceptableResponses.__repr__  s    HT_HHHHr7   !typing.Iterator[ObjectIdentifier]c                *    t          | j                  S r%   )rC   r  rf   s    r5   r   z OCSPAcceptableResponses.__iter__  r   r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z$OCSPAcceptableResponses.public_bytes  r   r7   N)r  r  r"   rO   r   rH   r   )r"   r  rg   )rY   rZ   r[   r   ACCEPTABLE_RESPONSESrN   rS   r   r   r   r   r'   rI   r7   r5   r  r    s        

/C$ $ $ $3 3 3 3, , , ,I I I I% % % %6 6 6 6 6 6r7   r  c                      e Zd Zej        Zd!dZd"dZd#dZd$dZ	e
d%d            Ze
d&d            Ze
d'd            Ze
d'd            Ze
d(d            Ze
d'd            Ze
d'd            Zd)dZd S )*IssuingDistributionPointrO  r   rP  rQ  only_contains_user_certsr   only_contains_ca_certsonly_some_reasonsrS  indirect_crlonly_contains_attribute_certsr"   rO   c           	        |t          |          }|r=t          |t                    rt          d |D                       st	          d          |r+t
          j        |v st
          j        |v rt          d          t          |t                    r?t          |t                    r*t          |t                    rt          |t                    st	          d          ||||g}t          d |D                       dk    rt          d          t          |||||||g          st          d          || _        || _        || _        || _        || _        || _        || _        d S )	Nc              3  @   K   | ]}t          |t                    V  d S r%   rY  r   s     r5   r   z4IssuingDistributionPoint.__init__.<locals>.<genexpr>  r?  r7   z:only_some_reasons must be None or frozenset of ReasonFlagszTunspecified and remove_from_crl are not valid reasons in an IssuingDistributionPointzuonly_contains_user_certs, only_contains_ca_certs, indirect_crl and only_contains_attribute_certs must all be boolean.c                    g | ]}||S rI   rI   r   s     r5   r  z5IssuingDistributionPoint.__init__.<locals>.<listcomp>  s    000aa0000r7   r  zOnly one of the following can be set to True: only_contains_user_certs, only_contains_ca_certs, indirect_crl, only_contains_attribute_certszCannot create empty extension: if only_contains_user_certs, only_contains_ca_certs, indirect_crl, and only_contains_attribute_certs are all False, then either full_name, relative_name, or only_some_reasons must have a value.)ro   r&   r[  r   r|   rZ  r\  r]  r   r   r=   rQ  _only_contains_user_certs_only_contains_ca_certs_indirect_crl_only_contains_attribute_certs_only_some_reasonsr^  r_  )	r@   rO  rP  r#  r$  r%  r&  r'  crl_constraintss	            r5   rS   z!IssuingDistributionPoint.__init__  s     YI 	,i88	MM;LMMMMM	 L    	#'888*.???+   /66
	1488
	 <..
	 8$??	
	 '   %")	
 00?00011A55>   (&-!

 

 	 %   *B&'=$).K+"3#+r7   r9   c                ,    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   rf   s    r5   r   z!IssuingDistributionPoint.__repr__  s    2 39&,,		
r7   r   r   c                   t          |t                    st          S | j        |j        k    o_| j        |j        k    oO| j        |j        k    o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j	        |j	        k    S r%   )
r&   r"  r   rO  rP  r#  r$  r%  r&  r'  r   s     r5   r   zIssuingDistributionPoint.__eq__  s    %!9:: 	"!! Neo- 3"e&993-1OO3 +u/KK3 &%*AA	3
 !U%773 223		
r7   r;   c           	     t    t          | j        | j        | j        | j        | j        | j        | j        f          S r%   )r   rO  rP  r#  r$  r%  r&  r'  rf   s    r5   r   z!IssuingDistributionPoint.__hash__  sB    "-+&!2

 

 
	
r7   r   c                    | j         S r%   rg  rf   s    r5   rO  z"IssuingDistributionPoint.full_name+  rh  r7   c                    | j         S r%   rj  rf   s    r5   rP  z&IssuingDistributionPoint.relative_name/  r  r7   c                    | j         S r%   )r+  rf   s    r5   r#  z1IssuingDistributionPoint.only_contains_user_certs3  s    --r7   c                    | j         S r%   )r,  rf   s    r5   r$  z/IssuingDistributionPoint.only_contains_ca_certs7  r  r7   c                    | j         S r%   )r/  rf   s    r5   r%  z*IssuingDistributionPoint.only_some_reasons;  r  r7   c                    | j         S r%   )r-  rf   s    r5   r&  z%IssuingDistributionPoint.indirect_crlA  r  r7   c                    | j         S r%   )r.  rf   s    r5   r'  z6IssuingDistributionPoint.only_contains_attribute_certsE  s    22r7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z%IssuingDistributionPoint.public_bytesI  r   r7   N)rO  r   rP  rQ  r#  r   r$  r   r%  rS  r&  r   r'  r   r"   rO   r   r   rH   r   rm  r#  rn  rg   )rY   rZ   r[   r   ISSUING_DISTRIBUTION_POINTrN   rS   r   r   r   r   rO  rP  r#  r$  r%  r&  r'  r'   rI   r7   r5   r"  r"    se       

1CQ, Q, Q, Q,f

 

 

 


 
 
 

 
 
 
    X # # # X# . . . X. , , , X, ' ' ' X'
 " " " X" 3 3 3 X36 6 6 6 6 6r7   r"  c                      e Zd Zej        ZddZedd	            Zedd
            Z	edd            Z
ddZddZddZddZdS )MSCertificateTemplatetemplate_idr   major_versionr   minor_versionr"   rO   c                    t          |t                    st          d          || _        |t          |t                    r|$t          |t                    st          d          || _        || _        d S )Noid must be an ObjectIdentifierz8major_version and minor_version must be integers or None)r&   r   r|   _template_idr;   _major_version_minor_version)r@   r?  r@  rA  s       r5   rS   zMSCertificateTemplate.__init__P  s     +'788 	?=>>>'%j.L.L%%j.L.L%J   ,+r7   c                    | j         S r%   )rD  rf   s    r5   r?  z!MSCertificateTemplate.template_idd  r  r7   c                    | j         S r%   )rE  rf   s    r5   r@  z#MSCertificateTemplate.major_versionh  r  r7   c                    | j         S r%   )rF  rf   s    r5   rA  z#MSCertificateTemplate.minor_versionl  r  r7   r9   c                8    d| j          d| j         d| j         dS )Nz#<MSCertificateTemplate(template_id=z, major_version=z, minor_version=r   )r?  r@  rA  rf   s    r5   r   zMSCertificateTemplate.__repr__p  s@    4$2B 4 4!/4 4!/4 4 4	
r7   r   r   r   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r%   )r&   r>  r   r?  r@  rA  r   s     r5   r   zMSCertificateTemplate.__eq__w  sV    %!677 	"!!  11 :"e&99:"e&99	
r7   r;   c                D    t          | j        | j        | j        f          S r%   )r   r?  r@  rA  rf   s    r5   r   zMSCertificateTemplate.__hash__  s     T%t'94;MNOOOr7   r#   c                *    t          j        |           S r%   r   rf   s    r5   r'   z"MSCertificateTemplate.public_bytes  r   r7   N)r?  r   r@  r   rA  r   r"   rO   r  r   r   r   rH   rg   )rY   rZ   r[   r   MS_CERTIFICATE_TEMPLATErN   rS   r   r?  r@  rA  r   r   r   r'   rI   r7   r5   r>  r>  M  s        

.C, , , ,( ! ! ! X! # # # X# # # # X#
 
 
 

 
 
 
P P P P6 6 6 6 6 6r7   r>  c                  f    e Zd ZddZedd            Zedd	            ZddZddZddZ	ddZ
dS )r{   rN   r   r}   r#   r"   rO   c                j    t          |t                    st          d          || _        || _        d S )NrC  )r&   r   r|   ra  rc  )r@   rN   r}   s      r5   rS   zUnrecognizedExtension.__init__  s6    #/00 	?=>>>	r7   c                    | j         S r%   re  rf   s    r5   rN   zUnrecognizedExtension.oid  rf  r7   c                    | j         S r%   ri  rf   s    r5   r}   zUnrecognizedExtension.value  rj  r7   r9   c                ,    d                     |           S )Nz7<UnrecognizedExtension(oid={0.oid}, value={0.value!r})>r   rf   s    r5   r   zUnrecognizedExtension.__repr__  s    ""(&,,	
r7   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r&   r{   r   rN   r}   r   s     r5   r   zUnrecognizedExtension.__eq__  s8    %!677 	"!!x59$Bu{)BBr7   r;   c                8    t          | j        | j        f          S r%   )r   rN   r}   rf   s    r5   r   zUnrecognizedExtension.__hash__  s    TXtz*+++r7   c                    | j         S r%   r  rf   s    r5   r'   z"UnrecognizedExtension.public_bytes  s
    zr7   N)rN   r   r}   r#   r"   rO   r  rg   r   r   rH   )rY   rZ   r[   rS   r   rN   r}   r   r   r   r'   rI   r7   r5   r{   r{     s               X    X
 
 
 
C C C C, , , ,     r7   r{   )r!   r   r"   r#   )r8   r9   )i
__future__r   abcr  r0   rL  r  cryptographyr   "cryptography.hazmat.bindings._rustr   r   r   cryptography.hazmat.primitivesr   r   ,cryptography.hazmat.primitives.asymmetric.ecr	   -cryptography.hazmat.primitives.asymmetric.rsar
   /cryptography.hazmat.primitives.asymmetric.typesr   r   *cryptography.x509.certificate_transparencyr   cryptography.x509.general_namer   r   r   r   r   r   r   r   r   cryptography.x509.namer   r   cryptography.x509.oidr   r   r   r   TypeVarr   r6   rJ   	ExceptionrL   r`   ABCMetar   rk   r   r   r   r   r   r   r  r&  r/  rF  r5  EnumrZ  ry  rz  r{  rs  r|  r}  r~  r  _REASON_BIT_MAPPING_CRLREASONFLAGSr  r  r  r  r  r  r  r  r  r  _TLS_FEATURE_TYPE_TO_ENUMr	  r  r9  Genericr^  ro  r  r  r  r  r  r  r   r	  r  r"  r>  r{   rI   r7   r5   <module>rk     s/
  
 # " " " " " 



              3 3 3 3 3 3 @ @ @ @ @ @ G G G G G G G G O O O O O O F F F F F F            
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 C B B B B B B B            "6>o   
' ' ' '0
3 
3 
3 
3           	   
 
 
 
 
ck 
 
 
 
$3 $3 $3 $3 $3 $3 $3 $3N6 6 6 6 6 6 6 6:i6 i6 i6 i6 i6] i6 i6 i6X!6 !6 !6 !6 !6= !6 !6 !6H6 6 6 6 6 6 6 6B6 6 6 6 6} 6 6 6B%% %% %% %% %% %% %% %%P+6 +6 +6 +6 +6} +6 +6 +6\6 6 6 6 6 6 6 6:"6 "6 "6 "6 "6M "6 "6 "6J"6 "6 "6 "6 "6- "6 "6 "6J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 6m 6 6 6:]6 ]6 ]6 ]6 ]6} ]6 ]6 ]6@86 86 86 86 86M 86 86 86v    M     r7   