
    .Ph/                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-  ej.        ddd          Z/ddZ0ddZ1 G d de2          Z3 G d de2          Z4 G d dej5                   Z6 G d! d"          Z7 G d# d$e6          Z8 G d% d&e6          Z9 G d' d(e6          Z: G d) d*e6          Z; G d+ d,e6          Z< G d- d.          Z= G d/ d0e6          Z> G d1 d2e6          Z? G d3 d4e6          Z@ G d5 d6e6          ZA G d7 d8          ZB G d9 d:ejC                  ZDeDjE        eDjF        eDjG        eDjH        eDjI        eDjJ        eDjK        eDjL        d;ZMeDjE        d<eDjF        d=eDjG        d>eDjH        d?eDjI        d@eDjJ        dAeDjK        dBeDjL        dCiZNeDjO        d eDjE        d<eDjF        d=eDjG        d>eDjH        d?eDjI        d@eDjJ        dAeDjP        dCeDjK        dDeDjL        dEi
ZQ G dF dGe6          ZR G dH dIe6          ZS G dJ dK          ZT G dL dM          ZU G dN dO          ZV G dP dQe6          ZW G dR dSe6          ZX G dT dUe6          ZY G dV dWe6          ZZ G dX dYejC                  Z[dZ e[D             Z\ G d[ d\e6          Z] G d] d^e6          Z^ G d_ d`e6          Z_ G da dbe6          Z` G dc ddeja        e/                   Zb G de df          Zc G dg dhe6          Zd G di dje6          Ze G dk dle6          Zf G dm dne6          Zg G do dpe6          Zh G dq dre6          Zi G ds dte6          Zj G du dve6          Zk G dw dxe6          Zl G dy dze6          Zm G d{ d|e6          Zn G d} d~          Zo G d d          Zp G d d          Zq G d de6          Zr G d de6          ZsdS )    )annotationsN)IterableIterator)utils)asn1)x509)constant_timeserialization)EllipticCurvePublicKey)RSAPublicKey)CertificateIssuerPublicKeyTypesCertificatePublicKeyTypes)SignedCertificateTimestamp)	DirectoryNameDNSNameGeneralName	IPAddress	OtherNameRegisteredID
RFC822NameUniformResourceIdentifier_IPAddressTypes)NameRelativeDistinguishedName)CRLEntryExtensionOIDExtensionOIDObjectIdentifierOCSPExtensionOIDExtensionTypeVarExtensionTypeT)bound	covariant
public_keyr   returnbytesc                   t          | t                    r5|                     t          j        j        t          j        j                  }nt          | t                    r5|                     t          j        j	        t          j        j
                  }nH|                     t          j        j        t          j        j                  }t          j        |          }t          j        |                                          S N)
isinstancer   public_bytesr
   EncodingDERPublicFormatPKCS1r   X962UncompressedPointSubjectPublicKeyInfor   parse_spki_for_datahashlibsha1digest)r#   data
serializeds      \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/cryptography/x509/extensions.py_key_identifier_from_public_keyr8   3   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selfr:   s    r7   
len_methodz*_make_sequence_methods.<locals>.len_methodL   s    74,,---r9   c                >    t          t          |                     S r'   )iterr@   rA   s    r7   iter_methodz+_make_sequence_methods.<locals>.iter_methodO   s    GD*--...r9   c                0    t          |           |         S r'   )r@   )rB   idxr:   s     r7   getitem_methodz._make_sequence_methods.<locals>.getitem_methodR   s    tZ((--r9   r$   r=    )r:   rC   rF   rI   s   `   r7   _make_sequence_methodsrL   K   sb    . . . . . ./ / / / /. . . . . {N22r9   c                        e Zd Zd fdZ xZS )	DuplicateExtensionmsgr;   oidr   r$   Nonec                X    t                                          |           || _        d S r'   super__init__rP   rB   rO   rP   	__class__s      r7   rU   zDuplicateExtension.__init__Y   &    r9   rO   r;   rP   r   r$   rQ   __name__
__module____qualname__rU   __classcell__rW   s   @r7   rN   rN   X   =                 r9   rN   c                        e Zd Zd fdZ xZS )	ExtensionNotFoundrO   r;   rP   r   r$   rQ   c                X    t                                          |           || _        d S r'   rS   rV   s      r7   rU   zExtensionNotFound.__init___   rX   r9   rY   rZ   r_   s   @r7   rb   rb   ^   r`   r9   rb   c                  "    e Zd ZU ded<   ddZdS )r    z!typing.ClassVar[ObjectIdentifier]rP   r$   r%   c                &    t          d|           )z7
        Serializes the extension type to DER.
        z3public_bytes is not implemented for extension type )NotImplementedErrorrB   s    r7   r)   zExtensionType.public_bytesg   s!     "J$JJ
 
 	
r9   Nr$   r%   )r[   r\   r]   __annotations__r)   rK   r9   r7   r    r    d   s6         ****
 
 
 
 
 
r9   )	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"Iterable[Extension[ExtensionType]]r$   rQ   c                .    t          |          | _        d S r'   )list_extensions)rB   rm   s     r7   rU   zExtensions.__init__q   s    
++r9   rP   r   Extension[ExtensionType]c                R    | D ]}|j         |k    r|c S t          d| d|          )NNo  extension was found)rP   rb   )rB   rP   exts      r7   get_extension_for_oidz Extensions.get_extension_for_oidt   sJ      	 	Cw#~~


    ?c ? ? ?EEEr9   extclasstype[ExtensionTypeVar]Extension[ExtensionTypeVar]c                    |t           u rt          d          | D ]}t          |j        |          r|c S t	          d| d|j                  )Nz|UnrecognizedExtension can't be used with get_extension_for_class because more than one instance of the class may be present.rt   ru   )UnrecognizedExtension	TypeErrorr(   valuerb   rP   )rB   rx   rv   s      r7   get_extension_for_classz"Extensions.get_extension_for_class}   s     ,,,)    	 	C#)X.. 


  0(000(,
 
 	
r9   rq   r;   c                    d| j          dS )Nz<Extensions()>)rq   rg   s    r7   __repr__zExtensions.__repr__   s    2d.2222r9   N)rm   rn   r$   rQ   )rP   r   r$   rr   )rx   ry   r$   rz   r$   r;   )r[   r\   r]   rU   rw   r   rL   __len____iter____getitem__r   rK   r9   r7   rl   rl   p   s        , , , ,F F F F
 
 
 
$ &<%;M%J%J"GX{3 3 3 3 3 3r9   rl   c                  \    e Zd Zej        ZddZdd	Zdd
ZddZ	e
dd            ZddZdS )	CRLNumber
crl_numberr=   r$   rQ   c                \    t          |t                    st          d          || _        d S Nzcrl_number must be an integerr(   r=   r}   _crl_numberrB   r   s     r7   rU   zCRLNumber.__init__   1    *c** 	=;<<<%r9   otherobjectboolc                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r   NotImplementedr   rB   r   s     r7   __eq__zCRLNumber.__eq__   s*    %++ 	"!!%"222r9   c                *    t          | j                  S r'   hashr   rg   s    r7   __hash__zCRLNumber.__hash__       DO$$$r9   r;   c                    d| j          dS )Nz<CRLNumber(r   r   rg   s    r7   r   zCRLNumber.__repr__   s    0T_0000r9   c                    | j         S r'   r   rg   s    r7   r   zCRLNumber.crl_number       r9   r%   c                *    t          j        |           S r'   	rust_x509encode_extension_valuerg   s    r7   r)   zCRLNumber.public_bytes       /555r9   Nr   r=   r$   rQ   r   r   r$   r   rJ   r   rh   )r[   r\   r]   r   
CRL_NUMBERrP   rU   r   r   r   propertyr   r)   rK   r9   r7   r   r      s        

!C& & & &3 3 3 3% % % %1 1 1 1       X 6 6 6 6 6 6r9   r   c                      e Zd Zej        Zdd	Zed d            Zed!d            Z	d"dZ
d#dZd$dZed%d            Zed&d            Zed'd            Zd(dZdS ))AuthorityKeyIdentifierkey_identifierbytes | Noneauthority_cert_issuerIterable[GeneralName] | Noneauthority_cert_serial_number
int | Noner$   rQ   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     r7   	<genexpr>z2AuthorityKeyIdentifier.__init__.<locals>.<genexpr>   s=        /0
1k**     r9   z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer)	
ValueErrorrp   allr}   r(   r=   _key_identifier_authority_cert_issuer_authority_cert_serial_number)rB   r   r   r   s       r7   rU   zAuthorityKeyIdentifier.__init__   s     "T)(D0
 
 4  
 !,$()>$?$?!  4I         
 (3J(#=
 =
3 MNNN-&;#-I***r9   r#   r   c                <    t          |          } | |d d           S Nr   r   r   r8   )clsr#   r4   s      r7   from_issuer_public_keyz-AuthorityKeyIdentifier.from_issuer_public_key   s3     1<<s!"&)-
 
 
 	
r9   skiSubjectKeyIdentifierc                (     | |j         d d           S r   r4   )r   r   s     r7   "from_issuer_subject_key_identifierz9AuthorityKeyIdentifier.from_issuer_subject_key_identifier   s(     s:"&)-
 
 
 	
r9   r;   c                8    d| j         d| j         d| j         dS )Nz'<AuthorityKeyIdentifier(key_identifier=z, authority_cert_issuer=z, authority_cert_serial_number=r   r   rg   s    r7   r   zAuthorityKeyIdentifier.__repr__   s@    d6I  %)%? ,0,M  	
r9   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     r7   r   zAuthorityKeyIdentifier.__eq__   sY    %!788 	"!! 5#77 2*e.II2112	
r9   r=   c                v    | j         d }nt          | j                   }t          | j        || j        f          S r'   )r   tupler   r   r   )rB   acis     r7   r   zAuthorityKeyIdentifier.__hash__  sD    %-CC233C #t'HI
 
 	
r9   c                    | j         S r'   )r   rg   s    r7   r   z%AuthorityKeyIdentifier.key_identifier      ##r9   list[GeneralName] | Nonec                    | j         S r'   )r   rg   s    r7   r   z,AuthorityKeyIdentifier.authority_cert_issuer  s     **r9   c                    | j         S r'   )r   rg   s    r7   r   z3AuthorityKeyIdentifier.authority_cert_serial_number  s    11r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z#AuthorityKeyIdentifier.public_bytes  r   r9   N)r   r   r   r   r   r   r$   rQ   )r#   r   r$   r   )r   r   r$   r   r   r   rJ   r$   r   r$   r   r$   r   rh   )r[   r\   r]   r   AUTHORITY_KEY_IDENTIFIERrP   rU   classmethodr   r   r   r   r   r   r   r   r   r)   rK   r9   r7   r   r      s%       

/CJ J J JL 
 
 
 [
 
 
 
 [

 
 
 
	
 	
 	
 	

 
 
 
 $ $ $ X$ + + + X+
 2 2 2 X26 6 6 6 6 6r9   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   r4   r%   r$   rQ   c                    || _         d S r'   _digest)rB   r4   s     r7   rU   zSubjectKeyIdentifier.__init__!  s    r9   r#   r   c                2     | t          |                    S r'   r   )r   r#   s     r7   from_public_keyz$SubjectKeyIdentifier.from_public_key$  s     s2:>>???r9   c                    | j         S r'   r   rg   s    r7   r4   zSubjectKeyIdentifier.digest*  
    |r9   c                    | j         S r'   r   rg   s    r7   r   z#SubjectKeyIdentifier.key_identifier.  r   r9   r;   c                    d| j         dS )Nz<SubjectKeyIdentifier(digest=r   r   rg   s    r7   r   zSubjectKeyIdentifier.__repr__2  s    @t{@@@@r9   r   r   r   c                x    t          |t                    st          S t          j        | j        |j                  S r'   )r(   r   r   r	   bytes_eqr4   r   s     r7   r   zSubjectKeyIdentifier.__eq__5  s2    %!566 	"!!%dk5<@@@r9   r=   c                *    t          | j                  S r'   )r   r4   rg   s    r7   r   zSubjectKeyIdentifier.__hash__;      DK   r9   c                *    t          j        |           S r'   r   rg   s    r7   r)   z!SubjectKeyIdentifier.public_bytes>  r   r9   N)r4   r%   r$   rQ   )r#   r   r$   r   rh   r   r   rJ   )r[   r\   r]   r   SUBJECT_KEY_IDENTIFIERrP   rU   r   r   r   r4   r   r   r   r   r)   rK   r9   r7   r   r     s        

-C    @ @ @ [@
    X    XA A A AA A A A! ! ! !6 6 6 6 6 6r9   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Iterable[AccessDescription]r$   rQ   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r'   r(   AccessDescriptionr   s     r7   r   z6AuthorityInformationAccess.__init__.<locals>.<genexpr>G  -      JJ:a!233JJJJJJr9   @Every item in the descriptions list must be an AccessDescriptionrp   r   r}   _descriptionsrB   r   s     r7   rU   z#AuthorityInformationAccess.__init__E  U    L))JJ\JJJJJ 	$  
 *r9   r   r;   c                    d| j          dS )Nz<AuthorityInformationAccess(r   r   rg   s    r7   r   z#AuthorityInformationAccess.__repr__Q  s    Dd.@DDDDr9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r   r   r   r   s     r7   r   z!AuthorityInformationAccess.__eq__T  s,    %!;<< 	"!!!U%888r9   r=   c                D    t          t          | j                            S r'   r   r   r   rg   s    r7   r   z#AuthorityInformationAccess.__hash__Z      E$,--...r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z'AuthorityInformationAccess.public_bytes]  r   r9   Nr   r   r$   rQ   r   r   rJ   rh   )r[   r\   r]   r   AUTHORITY_INFORMATION_ACCESSrP   rU   rL   r   r   r   r   r   r   r)   rK   r9   r7   r   r   B  s        

3C* * * * &<%;O%L%L"GX{E E E E9 9 9 9/ / / /6 6 6 6 6 6r9   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$   rQ   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r'   r   r   s     r7   r   z4SubjectInformationAccess.__init__.<locals>.<genexpr>f  r   r9   r   r   r   s     r7   rU   z!SubjectInformationAccess.__init__d  r   r9   r   r;   c                    d| j          dS )Nz<SubjectInformationAccess(r   r   rg   s    r7   r   z!SubjectInformationAccess.__repr__p  s    BD,>BBBBr9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r   r   s     r7   r   zSubjectInformationAccess.__eq__s  s,    %!9:: 	"!!!U%888r9   r=   c                D    t          t          | j                            S r'   r   rg   s    r7   r   z!SubjectInformationAccess.__hash__y  r   r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z%SubjectInformationAccess.public_bytes|  r   r9   Nr   r   r   rJ   rh   )r[   r\   r]   r   SUBJECT_INFORMATION_ACCESSrP   rU   rL   r   r   r   r   r   r   r)   rK   r9   r7   r  r  a  s        

1C* * * * &<%;O%L%L"GX{C C C C9 9 9 9/ / / /6 6 6 6 6 6r9   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$   rQ   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)rB   r
  r  s      r7   rU   zAccessDescription.__init__  s_     -)9:: 	IGHHH/;77 	ECDDD+ /r9   r;   c                (    d| j          d| j         dS )Nz!<AccessDescription(access_method=z, access_location=r   )r
  r  rg   s    r7   r   zAccessDescription.__repr__  s0    80B 8 8#38 8 8	
r9   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     r7   r   zAccessDescription.__eq__  sC    %!233 	"!! %"55 >$(==	
r9   r=   c                8    t          | j        | j        f          S r'   )r   r
  r  rg   s    r7   r   zAccessDescription.__hash__  s    T')=>???r9   c                    | j         S r'   )r  rg   s    r7   r
  zAccessDescription.access_method      ""r9   c                    | j         S r'   )r  rg   s    r7   r  z!AccessDescription.access_location      $$r9   N)r
  r   r  r   r$   rQ   r   r   rJ   r$   r   )r$   r   )
r[   r\   r]   rU   r   r   r   r   r
  r  rK   r9   r7   r   r     s        
0 
0 
0 
0
 
 
 

 
 
 
@ @ @ @ # # # X# % % % X% % %r9   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$   rQ   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)rB   r  r  s      r7   rU   zBasicConstraints.__init__  s    "d## 	:8999"2"HIII";,, #0;aD   'r9   c                    | j         S r'   )r  rg   s    r7   r  zBasicConstraints.ca  	    xr9   c                    | j         S r'   )r  rg   s    r7   r  zBasicConstraints.path_length        r9   r;   c                (    d| j          d| j         dS )Nz<BasicConstraints(ca=z, path_length=r   )r  r  rg   s    r7   r   zBasicConstraints.__repr__  s"    ODGOO4;KOOO	
r9   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     r7   r   zBasicConstraints.__eq__  s:    %!122 	"!!w%("Lt'75;L'LLr9   r=   c                8    t          | j        | j        f          S r'   )r   r  r  rg   s    r7   r   zBasicConstraints.__hash__  s    TWd./000r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zBasicConstraints.public_bytes  r   r9   N)r  r   r  r   r$   rQ   r$   r   r   r   r   rJ   rh   )r[   r\   r]   r   BASIC_CONSTRAINTSrP   rU   r   r  r  r   r   r   r)   rK   r9   r7   r  r    s        

(C( ( ( ("    X ! ! ! X!
 
 
 

M M M M1 1 1 16 6 6 6 6 6r9   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$   rQ   c                \    t          |t                    st          d          || _        d S r   r   r   s     r7   rU   zDeltaCRLIndicator.__init__  r   r9   c                    | j         S r'   r   rg   s    r7   r   zDeltaCRLIndicator.crl_number  r   r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r)  r   r   r   s     r7   r   zDeltaCRLIndicator.__eq__  s+    %!233 	"!!%"222r9   c                *    t          | j                  S r'   r   rg   s    r7   r   zDeltaCRLIndicator.__hash__  r   r9   r;   c                    d| j          dS )Nz<DeltaCRLIndicator(crl_number=r   r   rg   s    r7   r   zDeltaCRLIndicator.__repr__  s    CCCCCr9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zDeltaCRLIndicator.public_bytes  r   r9   Nr   rJ   r   r   rh   )r[   r\   r]   r   DELTA_CRL_INDICATORrP   rU   r   r   r   r   r   r)   rK   r9   r7   r)  r)    s        

*C& & & &       X 3 3 3 3% % % %D D D D6 6 6 6 6 6r9   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Iterable[DistributionPoint]r$   rQ   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r'   r(   DistributionPointr   s     r7   r   z1CRLDistributionPoints.__init__.<locals>.<genexpr>  >       
 
12Jq+,,
 
 
 
 
 
r9   ?distribution_points must be a list of DistributionPoint objectsrp   r   r}   _distribution_pointsrB   r3  s     r7   rU   zCRLDistributionPoints.__init__  j     ##677 
 
6I
 
 
 
 
 	   
 %8!!!r9   r<  r;   c                    d| j          dS )Nz<CRLDistributionPoints(r   r<  rg   s    r7   r   zCRLDistributionPoints.__repr__  s    F)BFFFFr9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r2  r   r<  r   s     r7   r   zCRLDistributionPoints.__eq__  s,    %!677 	"!!(E,FFFr9   r=   c                D    t          t          | j                            S r'   r   r   r<  rg   s    r7   r   zCRLDistributionPoints.__hash__      E$344555r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z"CRLDistributionPoints.public_bytes  r   r9   Nr3  r4  r$   rQ   r   r   rJ   rh   )r[   r\   r]   r   CRL_DISTRIBUTION_POINTSrP   rU   rL   r   r   r   r   r   r   r)   rK   r9   r7   r2  r2    s        

.C8 8 8 8 &<%;& &"GX{G G G GG G G G6 6 6 66 6 6 6 6 6r9   r2  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 )FreshestCRLr3  r4  r$   rQ   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r'   r7  r   s     r7   r   z'FreshestCRL.__init__.<locals>.<genexpr>  r9  r9   r:  r;  r=  s     r7   rU   zFreshestCRL.__init__  r>  r9   r<  r;   c                    d| j          dS )Nz<FreshestCRL(r   r@  rg   s    r7   r   zFreshestCRL.__repr__-  s    <t8<<<<r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   rI  r   r<  r   s     r7   r   zFreshestCRL.__eq__0  s+    %-- 	"!!(E,FFFr9   r=   c                D    t          t          | j                            S r'   rC  rg   s    r7   r   zFreshestCRL.__hash__6  rD  r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zFreshestCRL.public_bytes9  r   r9   NrF  r   r   rJ   rh   )r[   r\   r]   r   FRESHEST_CRLrP   rU   rL   r   r   r   r   r   r   r)   rK   r9   r7   rI  rI    s        

#C8 8 8 8 &<%;& &"GX{= = = =G G G G6 6 6 66 6 6 6 6 6r9   rI  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 ) r8  	full_namer   relative_name RelativeDistinguishedName | Nonereasonsfrozenset[ReasonFlags] | None
crl_issuerr$   rQ   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     r7   r   z-DistributionPoint.__init__.<locals>.<genexpr>R  s,      EEaz![11EEEEEEr9   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     r7   r   z-DistributionPoint.__init__.<locals>.<genexpr>_  s,      FFaz![11FFFFFFr9   z2crl_issuer must be None or a list of general namesc              3  @   K   | ]}t          |t                    V  d S r'   r(   ReasonFlagsr   s     r7   r   z-DistributionPoint.__init__.<locals>.<genexpr>f  s,      CCaz![11CCCCCCr9   z0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)r   rp   r   r}   r(   r   	frozensetr]  unspecifiedremove_from_crl
_full_name_relative_name_reasons_crl_issuer)rB   rR  rS  rU  rW  s        r7   rU   zDistributionPoint.__init__>  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$  
 $+%r9   r;   c                ,    d                     |           S )Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>formatrg   s    r7   r   zDistributionPoint.__repr__x  s    **0&,,	
r9   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(   r8  r   rR  rS  rU  rW  r   s     r7   r   zDistributionPoint.__eq__  sf    %!233 	"!! Neo- 4"e&994-4 5#33		
r9   r=   c                    | j         t          | j                   }nd }| j        t          | j                  }nd }t          || j        | j        |f          S r'   )rR  r   rW  r   rS  rU  )rB   fnrW  s      r7   r   zDistributionPoint.__hash__  sZ    >%16t~1F1FBBB?&9>t9O9OJJJR+T\:FGGGr9   r   c                    | j         S r'   ra  rg   s    r7   rR  zDistributionPoint.full_name  
    r9   c                    | j         S r'   rb  rg   s    r7   rS  zDistributionPoint.relative_name  r  r9   c                    | j         S r'   )rc  rg   s    r7   rU  zDistributionPoint.reasons  s
    }r9   c                    | j         S r'   )rd  rg   s    r7   rW  zDistributionPoint.crl_issuer  r   r9   N)
rR  r   rS  rT  rU  rV  rW  r   r$   rQ   r   r   rJ   r   r$   rT  r$   rV  )r[   r\   r]   rU   r   r   r   r   rR  rS  rU  rW  rK   r9   r7   r8  r8  =  s        8& 8& 8& 8&t
 
 
 
	
 	
 	
 	
H H H H    X # # # X#    X       X     r9   r8  c                  6    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS )r]  r_  keyCompromisecACompromiseaffiliationChanged
supersededcessationOfOperationcertificateHoldprivilegeWithdrawnaACompromiseremoveFromCRLN)r[   r\   r]   r_  key_compromiseca_compromiseaffiliation_changedrx  cessation_of_operationcertificate_holdprivilege_withdrawnaa_compromiser`  rK   r9   r7   r]  r]    sD        K$N"M.J3(."M%OOOr9   r]  )                        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$   rQ   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)rB   r  r  s      r7   rU   zPolicyConstraints.__init__  s    
 #.z#S8
 8
.   
 "-j"C7
 7
- O   ").E.M:  
 )@%'=$$$r9   r;   c                ,    d                     |           S )Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>rf  rg   s    r7   r   zPolicyConstraints.__repr__  s    	
r9   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     r7   r   zPolicyConstraints.__eq__  sD    %!233 	"!! (E,II L+u/KK	
r9   r=   c                8    t          | j        | j        f          S r'   )r   r  r  rg   s    r7   r   zPolicyConstraints.__hash__!  s"    )4+FG
 
 	
r9   c                    | j         S r'   )r  rg   s    r7   r  z)PolicyConstraints.require_explicit_policy&  s    ,,r9   c                    | j         S r'   )r  rg   s    r7   r  z(PolicyConstraints.inhibit_policy_mapping*      ++r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zPolicyConstraints.public_bytes.  r   r9   N)r  r   r  r   r$   rQ   r   r   rJ   r   rh   )r[   r\   r]   r   POLICY_CONSTRAINTSrP   rU   r   r   r   r   r  r  r)   rK   r9   r7   r  r    s        

)C> > > >:
 
 
 

 
 
 

 
 
 

 - - - X- , , , X,6 6 6 6 6 6r9   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Iterable[PolicyInformation]r$   rQ   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r'   )r(   PolicyInformationr   s     r7   r   z/CertificatePolicies.__init__.<locals>.<genexpr>7  s-      FF:a!233FFFFFFr9   z;Every item in the policies list must be a PolicyInformation)rp   r   r}   	_policies)rB   r  s     r7   rU   zCertificatePolicies.__init__5  sN    >>FFXFFFFF 	M   "r9   r  r;   c                    d| j          dS )Nz<CertificatePolicies(r   )r  rg   s    r7   r   zCertificatePolicies.__repr__@      9t~9999r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   zCertificatePolicies.__eq__C  s*    %!455 	"!!~00r9   r=   c                D    t          t          | j                            S r'   )r   r   r  rg   s    r7   r   zCertificatePolicies.__hash__I      E$.))***r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z CertificatePolicies.public_bytesL  r   r9   N)r  r  r$   rQ   r   r   rJ   rh   )r[   r\   r]   r   CERTIFICATE_POLICIESrP   rU   rL   r   r   r   r   r   r   r)   rK   r9   r7   r  r  2  s        

+C" " " " &<%;K%H%H"GX{: : : :1 1 1 1+ + + +6 6 6 6 6 6r9   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!Iterable[str | UserNotice] | Noner$   rQ   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(   r;   
UserNoticer   s     r7   r   z-PolicyInformation.__init__.<locals>.<genexpr>]  sB        56
1sJ/00     r9   zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r(   r   r}   _policy_identifierrp   r   _policy_qualifiers)rB   r  r  s      r7   rU   zPolicyInformation.__init__Q  s    
 +-=>> 	MKLLL"3( $%6 7 7  :K       1  
 #4r9   r;   c                (    d| j          d| j         dS )Nz%<PolicyInformation(policy_identifier=z, policy_qualifiers=r   )r  r  rg   s    r7   r   zPolicyInformation.__repr__g  s0    <D4J < <!%!7< < <	
r9   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     r7   r   zPolicyInformation.__eq__m  sD    %!233 	"!! "e&== B&%*AA	
r9   r=   c                j    | j         t          | j                   }nd }t          | j        |f          S r'   )r  r   r   r  )rB   pqs     r7   r   zPolicyInformation.__hash__v  s8    !-t-..BBBT+R0111r9   c                    | j         S r'   )r  rg   s    r7   r  z#PolicyInformation.policy_identifier~      &&r9   list[str | UserNotice] | Nonec                    | j         S r'   )r  rg   s    r7   r  z#PolicyInformation.policy_qualifiers       &&r9   N)r  r   r  r  r$   rQ   r   r   rJ   r  )r$   r  )
r[   r\   r]   rU   r   r   r   r   r  r  rK   r9   r7   r  r  P  s        4 4 4 4,
 
 
 

 
 
 
2 2 2 2 ' ' ' X' ' ' ' X' ' 'r9   r  c                  ^    e Zd ZddZdd	ZddZddZedd            Zedd            Z	dS )r  notice_referenceNoticeReference | Noneexplicit_text
str | Noner$   rQ   c                n    |r$t          |t                    st          d          || _        || _        d S )Nz2notice_reference must be None or a NoticeReference)r(   NoticeReferencer}   _notice_reference_explicit_text)rB   r  r  s      r7   rU   zUserNotice.__init__  sQ    
  	Jo%
 %
 	 D   "2+r9   r;   c                (    d| j          d| j        dS )Nz<UserNotice(notice_reference=z, explicit_text=r   )r  r  rg   s    r7   r   zUserNotice.__repr__  s0    6D,A 6 6!/6 6 6	
r9   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     r7   r   zUserNotice.__eq__  sB    %,, 	"!! !U%;; :"e&99	
r9   r=   c                8    t          | j        | j        f          S r'   )r   r  r  rg   s    r7   r   zUserNotice.__hash__  s    T*D,>?@@@r9   c                    | j         S r'   )r  rg   s    r7   r  zUserNotice.notice_reference      %%r9   c                    | j         S r'   )r  rg   s    r7   r  zUserNotice.explicit_text  r  r9   N)r  r  r  r  r$   rQ   r   r   rJ   )r$   r  r$   r  )
r[   r\   r]   rU   r   r   r   r   r  r  rK   r9   r7   r  r    s        , , , ,
 
 
 

 
 
 
A A A A & & & X& # # # X# # #r9   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Iterable[int]r$   rQ   c                    || _         t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r'   )r(   r=   r   s     r7   r   z+NoticeReference.__init__.<locals>.<genexpr>  s,      >>!:a%%>>>>>>r9   z)notice_numbers must be a list of integers)_organizationrp   r   r}   _notice_numbers)rB   r  r  s      r7   rU   zNoticeReference.__init__  sV    
 *n-->>~>>>>> 	IGHHH-r9   r;   c                (    d| j         d| j         dS )Nz<NoticeReference(organization=z, notice_numbers=r   )r  r  rg   s    r7   r   zNoticeReference.__repr__  s0    6T-> 6 6"16 6 6	
r9   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     r7   r   zNoticeReference.__eq__  sB    %11 	"!! !33 <#u';;	
r9   r=   c                R    t          | j        t          | j                  f          S r'   )r   r  r   r  rg   s    r7   r   zNoticeReference.__hash__  s#    T&d.A(B(BCDDDr9   c                    | j         S r'   )r  rg   s    r7   r  zNoticeReference.organization      !!r9   	list[int]c                    | j         S r'   )r  rg   s    r7   r  zNoticeReference.notice_numbers  r   r9   N)r  r  r  r  r$   rQ   r   r   rJ   r  )r$   r  )
r[   r\   r]   rU   r   r   r   r   r  r  rK   r9   r7   r  r    s        
. 
. 
. 
.
 
 
 

 
 
 
E E E E " " " X" $ $ $ X$ $ $r9   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Iterable[ObjectIdentifier]r$   rQ   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r'   r(   r   r   s     r7   r   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>  s-      CCq:a!122CCCCCCr9   z9Every item in the usages list must be an ObjectIdentifier)rp   r   r}   _usages)rB   r  s     r7   rU   zExtendedKeyUsage.__init__  sN    fCCFCCCCC 	K   r9   r  r;   c                    d| j          dS )Nz<ExtendedKeyUsage(r   )r  rg   s    r7   r   zExtendedKeyUsage.__repr__      4DL4444r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   zExtendedKeyUsage.__eq__  s*    %!122 	"!!|u},,r9   r=   c                D    t          t          | j                            S r'   )r   r   r  rg   s    r7   r   zExtendedKeyUsage.__hash__  s    E$,''(((r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zExtendedKeyUsage.public_bytes  r   r9   N)r  r  r$   rQ   r   r   rJ   rh   )r[   r\   r]   r   EXTENDED_KEY_USAGErP   rU   rL   r   r   r   r   r   r   r)   rK   r9   r7   r  r    s        

)C    &<%;I%F%F"GX{5 5 5 5- - - -) ) ) )6 6 6 6 6 6r9   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     r7   r   zOCSPNoCheck.__eq__  s    %-- 	"!!tr9   r=   c                *    t          t                    S r'   )r   r  rg   s    r7   r   zOCSPNoCheck.__hash__  s    K   r9   r;   c                    dS )Nz<OCSPNoCheck()>rK   rg   s    r7   r   zOCSPNoCheck.__repr__  s      r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zOCSPNoCheck.public_bytes	  r   r9   Nr   rJ   r   rh   )
r[   r\   r]   r   OCSP_NO_CHECKrP   r   r   r   r)   rK   r9   r7   r  r    sl        

$C   ! ! ! !! ! ! !6 6 6 6 6 6r9   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     r7   r   zPrecertPoison.__eq__  s    %// 	"!!tr9   r=   c                *    t          t                    S r'   )r   r  rg   s    r7   r   zPrecertPoison.__hash__  s    M"""r9   r;   c                    dS )Nz<PrecertPoison()>rK   rg   s    r7   r   zPrecertPoison.__repr__  s    ""r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zPrecertPoison.public_bytes  r   r9   Nr   rJ   r   rh   )
r[   r\   r]   r   PRECERT_POISONrP   r   r   r   r)   rK   r9   r7   r  r    sl        

%C   # # # ## # # #6 6 6 6 6 6r9   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Iterable[TLSFeatureType]r$   rQ   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     r7   r   z&TLSFeature.__init__.<locals>.<genexpr>&  s,      DDaJq.11DDDDDDr9   r   z@features must be a list of elements from the TLSFeatureType enum)rp   r   r?   r}   	_features)rB   r  s     r7   rU   zTLSFeature.__init__#  sa    >>DD8DDDDD	8}}!!  
 "r9   r  r;   c                    d| j          dS )Nz<TLSFeature(features=r   )r  rg   s    r7   r   zTLSFeature.__repr__2  r  r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   zTLSFeature.__eq__5  s)    %,, 	"!!~00r9   r=   c                D    t          t          | j                            S r'   )r   r   r  rg   s    r7   r   zTLSFeature.__hash__;  r  r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zTLSFeature.public_bytes>  r   r9   N)r  r  r$   rQ   r   r   rJ   rh   )r[   r\   r]   r   TLS_FEATURErP   rU   rL   r   r   r   r   r   r   r)   rK   r9   r7   r  r     s        

"C" " " " &<%;K%H%H"GX{: : : :1 1 1 1+ + + +6 6 6 6 6 6r9   r  c                      e Zd ZdZdZdS )r  r     N)r[   r\   r]   status_requeststatus_request_v2rK   r9   r7   r  r  B  s         N r9   r  c                    i | ]
}|j         |S rK   r~   r   s     r7   
<dictcomp>r  M  s    @@@AQWa@@@r9   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$   rQ   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)rB   r  s     r7   rU   zInhibitAnyPolicy.__init__S  sI    *c** 	=;<<<>>HIII%r9   r;   c                    d| j          dS )Nz<InhibitAnyPolicy(skip_certs=r   )r  rg   s    r7   r   zInhibitAnyPolicy.__repr__\  s    BtBBBBr9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   zInhibitAnyPolicy.__eq___  s+    %!122 	"!!%"222r9   c                *    t          | j                  S r'   )r   r  rg   s    r7   r   zInhibitAnyPolicy.__hash__e  r   r9   c                    | j         S r'   )r  rg   s    r7   r  zInhibitAnyPolicy.skip_certsh  r   r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zInhibitAnyPolicy.public_bytesl  r   r9   N)r  r=   r$   rQ   r   r   rJ   rh   )r[   r\   r]   r   INHIBIT_ANY_POLICYrP   rU   r   r   r   r   r  r)   rK   r9   r7   r  r  P  s        

)C& & & &C C C C3 3 3 3% % % %       X 6 6 6 6 6 6r9   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$   rQ   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)
rB   r  r  r  r  r   r!  r"  r#  r$  s
             r7   rU   zKeyUsage.__init__s  s      	- 	= 	(  
 #4#5 !1"3++!++r9   c                    | j         S r'   )r&  rg   s    r7   r  zKeyUsage.digital_signature  r  r9   c                    | j         S r'   )r'  rg   s    r7   r  zKeyUsage.content_commitment  s    ''r9   c                    | j         S r'   )r(  rg   s    r7   r  zKeyUsage.key_encipherment  r  r9   c                    | j         S r'   )r)  rg   s    r7   r  zKeyUsage.data_encipherment  r  r9   c                    | j         S r'   )r*  rg   s    r7   r   zKeyUsage.key_agreement  r  r9   c                    | j         S r'   )r+  rg   s    r7   r!  zKeyUsage.key_cert_sign  r  r9   c                    | j         S r'   )r,  rg   s    r7   r"  zKeyUsage.crl_sign  
    ~r9   c                <    | j         st          d          | j        S )Nz7encipher_only is undefined unless key_agreement is true)r   r   r-  rg   s    r7   r#  zKeyUsage.encipher_only  -    ! 	'I   &&r9   c                <    | j         st          d          | j        S )Nz7decipher_only is undefined unless key_agreement is true)r   r   r.  rg   s    r7   r$  zKeyUsage.decipher_only  r8  r9   r;   c                    	 | j         }| j        }n# t          $ r d}d}Y nw xY wd| j         d| j         d| j         d| j         d| j         d| j         d| j	         d	| d
| dS )NFz<KeyUsage(digital_signature=z, content_commitment=z, key_encipherment=z, data_encipherment=z, key_agreement=z, key_cert_sign=z, crl_sign=z, encipher_only=z, decipher_only=r   )
r#  r$  r   r  r  r  r  r   r!  r"  )rB   r#  r$  s      r7   r   zKeyUsage.__repr__  s    	" .M .MM 	" 	" 	" "M!MMM	"N4+A N N"&"9N N $ 5N N "&!7N N "/	N N
 "/N N
 =AMN N +N N =JN N N	
s    ""r   r   c                Z   t          |t                    st          S | j        |j        k    o| j        |j        k    oo| j        |j        k    o_| j        |j        k    oO| j        |j        k    o?| j        |j        k    o/| j	        |j	        k    o| j
        |j
        k    o| j        |j        k    S r'   )r(   r  r   r  r  r  r  r   r!  r"  r-  r.  r   s     r7   r   zKeyUsage.__eq__  s    %** 	"!! "e&== <'5+CC<%)??< &%*AA< "e&99	<
 "e&99< /< #u';;< #u';;
	
r9   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.  rg   s    r7   r   zKeyUsage.__hash__  sN    &'%&""##

 
 	
r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zKeyUsage.public_bytes  r   r9   N)r  r   r  r   r  r   r  r   r   r   r!  r   r"  r   r#  r   r$  r   r$   rQ   r&  r   r   rJ   rh   )r[   r\   r]   r   	KEY_USAGErP   rU   r   r  r  r  r  r   r!  r"  r#  r$  r   r   r   r)   rK   r9   r7   r  r  p  s       

 C, , , ,8 ' ' ' X' ( ( ( X( & & & X& ' ' ' X' # # # X# # # # X#    X ' ' ' X' ' ' ' X'
 
 
 
*
 
 
 
 
 
 
 
6 6 6 6 6 6r9   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 )PrivateKeyUsagePeriod
not_beforedatetime.datetime | None	not_afterr$   rQ   c                &   t          |t          j                  s|t          d          t          |t          j                  s|t          d          ||t          d          ||||k    rt          d          || _        || _        d S )Nz.not_before must be a datetime.datetime or Nonez-not_after must be a datetime.datetime or Nonez9At least one of not_before and not_after must not be Nonez#not_before must be before not_after)r(   datetimer}   r   _not_before
_not_after)rB   rA  rC  s      r7   rU   zPrivateKeyUsagePeriod.__init__  s     :x'899	N&LMMM 9h&788	M%KLLL)"3K  
 "%Y&&BCCC%#r9   c                    | j         S r'   )rF  rg   s    r7   rA  z PrivateKeyUsagePeriod.not_before  r   r9   c                    | j         S r'   )rG  rg   s    r7   rC  zPrivateKeyUsagePeriod.not_after  rm  r9   r;   c                (    d| j          d| j         dS )Nz"<PrivateKeyUsagePeriod(not_before=z, not_after=r   )rA  rC  rg   s    r7   r   zPrivateKeyUsagePeriod.__repr__   s.    , , ,, , ,	
r9   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r'   )r(   r@  r   rA  rC  r   s     r7   r   zPrivateKeyUsagePeriod.__eq__&  s@    %!677 	"!! Ou// 2%/1	
r9   r=   c                8    t          | j        | j        f          S r'   )r   rA  rC  rg   s    r7   r   zPrivateKeyUsagePeriod.__hash__/  s    T_dn5666r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z"PrivateKeyUsagePeriod.public_bytes2  r   r9   N)rA  rB  rC  rB  r$   rQ   )r$   rB  r   r   rJ   rh   )r[   r\   r]   r   PRIVATE_KEY_USAGE_PERIODrP   rU   r   rA  rC  r   r   r   r)   rK   r9   r7   r@  r@    s        

/C$ $ $ $@       X     X
 
 
 

 
 
 
7 7 7 76 6 6 6 6 6r9   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$   rQ   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     r7   r   z+NameConstraints.__init__.<locals>.<genexpr>D  s,      NNaz![11NNNNNNr9   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     r7   r   z+NameConstraints.__init__.<locals>.<genexpr>R  ,      MMaz![11MMMMMMr9   z?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)rp   r   r   r}   _validate_tree_permitted_subtrees_excluded_subtrees)rB   rQ  rR  s      r7   rU   zNameConstraints.__init__9  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r9   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r'   )r(   rP  r   rR  rQ  r   s     r7   r   zNameConstraints.__eq__c  sC    %11 	"!! "e&== D'5+CC	
r9   treeIterable[GeneralName]c                Z    |                      |           |                     |           d S r'   )_validate_ip_name_validate_dns_namerB   r[  s     r7   rW  zNameConstraints._validate_treel  s0    t$$$%%%%%r9   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     r7   r   z4NameConstraints._validate_ip_name.<locals>.<genexpr>q  sk       
 

 	 tY'' 
Y2I4IJ  
 
 
 
 
 
r9   zGIPAddress name constraints must be an IPv4Network or IPv6Network object)anyr}   r`  s     r7   r^  z!NameConstraints._validate_ip_namep  sU     
 

 
 
 
 
 
 
	 &  
	 
	r9   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~   rf  s     r7   r   z5NameConstraints._validate_dns_name.<locals>.<genexpr>~  sI       
 
@DJtW%%;#*;
 
 
 
 
 
r9   zDDNSName name constraints must not contain the '*' wildcard character)rh  r   r`  s     r7   r_  z"NameConstraints._validate_dns_name}  sS     
 
HL
 
 
 
 
 	   	 	r9   r;   c                (    d| j          d| j         dS )Nz$<NameConstraints(permitted_subtrees=z, excluded_subtrees=r   )rQ  rR  rg   s    r7   r   zNameConstraints.__repr__  s0    <43J < <!%!7< < <	
r9   r=   c                    | j         t          | j                   }nd }| j        t          | j                  }nd }t          ||f          S r'   )rQ  r   rR  r   )rB   psess      r7   r   zNameConstraints.__hash__  sR    ".16t7N1O1OBBB!-16t7M1N1NBBBRH~~r9   r   c                    | j         S r'   )rX  rg   s    r7   rQ  z"NameConstraints.permitted_subtrees  s     ''r9   c                    | j         S r'   )rY  rg   s    r7   rR  z!NameConstraints.excluded_subtrees  r  r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zNameConstraints.public_bytes  r   r9   N)rQ  r   rR  r   r$   rQ   r   )r[  r\  r$   rQ   r   rJ   r   rh   )r[   r\   r]   r   NAME_CONSTRAINTSrP   rU   r   rW  r^  r_  r   r   r   rQ  rR  r)   rK   r9   r7   rP  rP  6  s        

'C(4 (4 (4 (4T
 
 
 
& & & &      
 
 
 
    ( ( ( X(
 ' ' ' X'
6 6 6 6 6 6r9   rP  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 )	ExtensionrP   r   criticalr   r~   r   r$   rQ   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)rB   rP   rv  r~   s       r7   rU   zExtension.__init__  si     #/00 	D   (D)) 	@>???	!r9   c                    | j         S r'   rx  rg   s    r7   rP   zExtension.oid  
    yr9   c                    | j         S r'   )ry  rg   s    r7   rv  zExtension.critical  r6  r9   c                    | j         S r'   rz  rg   s    r7   r~   zExtension.value  
    {r9   r;   c                8    d| j          d| j         d| j         dS )Nz<Extension(oid=z, critical=, value=r   )rP   rv  r~   rg   s    r7   r   zExtension.__repr__  s<    $dh $ $4= $ $Z$ $ $	
r9   r   r   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r'   )r(   ru  r   rP   rv  r~   r   s     r7   r   zExtension.__eq__  sO    %++ 	"!! H	! */*
ek)	
r9   r=   c                D    t          | j        | j        | j        f          S r'   )r   rP   rv  r~   rg   s    r7   r   zExtension.__hash__  s    TXt}dj9:::r9   N)rP   r   rv  r   r~   r   r$   rQ   r  r&  )r$   r   r   r   rJ   )r[   r\   r]   rU   r   rP   rv  r~   r   r   r   rK   r9   r7   ru  ru    s               X    X    X
 
 
 

 
 
 
; ; ; ; ; ;r9   ru  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_namesr\  r$   rQ   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r'   r   r   s     r7   r   z(GeneralNames.__init__.<locals>.<genexpr>  s,      EE!:a--EEEEEEr9   z^Every item in the general_names list must be an object conforming to the GeneralName interface)rp   r   r}   _general_namesrB   r  s     r7   rU   zGeneralNames.__init__  sV    ]++EE}EEEEE 	A  
 ,r9   r  typeBtype[DNSName] | type[UniformResourceIdentifier] | type[RFC822Name]	list[str]c                    d S r'   rK   rB   r  s     r7   get_values_for_typez GeneralNames.get_values_for_type  	     Cr9   type[DirectoryName]
list[Name]c                    d S r'   rK   r  s     r7   r  z GeneralNames.get_values_for_type  	     Sr9   type[RegisteredID]list[ObjectIdentifier]c                    d S r'   rK   r  s     r7   r  z GeneralNames.get_values_for_type  	     "%r9   type[IPAddress]list[_IPAddressTypes]c                    d S r'   rK   r  s     r7   r  z GeneralNames.get_values_for_type  	     !$r9   type[OtherName]list[OtherName]c                    d S r'   rK   r  s     r7   r  z GeneralNames.get_values_for_type  	     #r9   type[DNSName] | type[DirectoryName] | type[IPAddress] | type[OtherName] | type[RFC822Name] | type[RegisteredID] | type[UniformResourceIdentifier]Ylist[_IPAddressTypes] | list[str] | list[OtherName] | list[Name] | list[ObjectIdentifier]c                l    fd| D             }t           k    rd |D             S t          |          S )Nc              3  <   K   | ]}t          |          |V  d S r'   )r(   )r   ir  s     r7   r   z3GeneralNames.get_values_for_type.<locals>.<genexpr>  s2      77a:a#6#67777777r9   c                    g | ]	}|j         
S rK   r  )r   r  s     r7   
<listcomp>z4GeneralNames.get_values_for_type.<locals>.<listcomp>  s    ***AG***r9   )r   rp   )rB   r  objss    ` r7   r  z GeneralNames.get_values_for_type  sI    & 877747779**T****Dzzr9   r;   c                    d| j          dS )Nz<GeneralNames(r   r  rg   s    r7   r   zGeneralNames.__repr__  s    7 37777r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   zGeneralNames.__eq__  s+    %.. 	"!!"e&:::r9   r=   c                D    t          t          | j                            S r'   )r   r   r  rg   s    r7   r   zGeneralNames.__hash__%  s    E$-..///r9   Nr  r\  r$   rQ   r  r  r$   r  r  r  r$   r  r  r  r$   r  r  r  r$   r  r  r  r$   r  r  r  r$   r  r   r   rJ   )r[   r\   r]   rU   rL   r   r   r   typingoverloadr  r   r   r   rK   r9   r7   r  r    s:       , , , , &<%;<L%M%M"GX{_   _ _   _
 _% % % _%
 _$ $ $ _$ _   _   08 8 8 8; ; ; ;0 0 0 0 0 0r9   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SubjectAlternativeNamer  r\  r$   rQ   c                .    t          |          | _        d S r'   r  r  r  s     r7   rU   zSubjectAlternativeName.__init__,      *=99r9   r  r  r  r  c                    d S r'   rK   r  s     r7   r  z*SubjectAlternativeName.get_values_for_type1  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z*SubjectAlternativeName.get_values_for_type9  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z*SubjectAlternativeName.get_values_for_type?  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z*SubjectAlternativeName.get_values_for_typeE  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z*SubjectAlternativeName.get_values_for_typeJ  r  r9   r  r  c                6    | j                             |          S r'   r  r  r  s     r7   r  z*SubjectAlternativeName.get_values_for_typeO        "66t<<<r9   r;   c                    d| j          dS )Nz<SubjectAlternativeName(r   r  rg   s    r7   r   zSubjectAlternativeName.__repr__a  s    A$*=AAAAr9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   zSubjectAlternativeName.__eq__d  s,    %!788 	"!!"e&:::r9   r=   c                *    t          | j                  S r'   r   r  rg   s    r7   r   zSubjectAlternativeName.__hash__j      D'(((r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z#SubjectAlternativeName.public_bytesm  r   r9   Nr  r  r  r  r  r  r  r   r   rJ   rh   )r[   r\   r]   r   SUBJECT_ALTERNATIVE_NAMErP   rU   rL   r   r   r   r  r  r  r   r   r   r)   rK   r9   r7   r  r  )  sZ       

/C: : : : &<%;<L%M%M"GX{_   _ _   _
 _% % % _%
 _$ $ $ _$ _   _= = = =$B B B B; ; ; ;) ) ) )6 6 6 6 6 6r9   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IssuerAlternativeNamer  r\  r$   rQ   c                .    t          |          | _        d S r'   r  r  s     r7   rU   zIssuerAlternativeName.__init__t  r  r9   r  r  r  r  c                    d S r'   rK   r  s     r7   r  z)IssuerAlternativeName.get_values_for_typey  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z)IssuerAlternativeName.get_values_for_type  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z)IssuerAlternativeName.get_values_for_type  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z)IssuerAlternativeName.get_values_for_type  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z)IssuerAlternativeName.get_values_for_type  r  r9   r  r  c                6    | j                             |          S r'   r  r  s     r7   r  z)IssuerAlternativeName.get_values_for_type  r  r9   r;   c                    d| j          dS )Nz<IssuerAlternativeName(r   r  rg   s    r7   r   zIssuerAlternativeName.__repr__  s    @)<@@@@r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   zIssuerAlternativeName.__eq__  s,    %!677 	"!!"e&:::r9   r=   c                *    t          | j                  S r'   r  rg   s    r7   r   zIssuerAlternativeName.__hash__  r  r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z"IssuerAlternativeName.public_bytes  r   r9   Nr  r  r  r  r  r  r  r   r   rJ   rh   )r[   r\   r]   r   ISSUER_ALTERNATIVE_NAMErP   rU   rL   r   r   r   r  r  r  r   r   r   r)   rK   r9   r7   r  r  q  sZ       

.C: : : : &<%;<L%M%M"GX{_   _ _   _
 _% % % _%
 _$ $ $ _$ _   _= = = =$A A A A; ; ; ;) ) ) )6 6 6 6 6 6r9   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CertificateIssuerr  r\  r$   rQ   c                .    t          |          | _        d S r'   r  r  s     r7   rU   zCertificateIssuer.__init__  r  r9   r  r  r  r  c                    d S r'   rK   r  s     r7   r  z%CertificateIssuer.get_values_for_type  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z%CertificateIssuer.get_values_for_type  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z%CertificateIssuer.get_values_for_type  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z%CertificateIssuer.get_values_for_type  r  r9   r  r  c                    d S r'   rK   r  s     r7   r  z%CertificateIssuer.get_values_for_type  r  r9   r  r  c                6    | j                             |          S r'   r  r  s     r7   r  z%CertificateIssuer.get_values_for_type  r  r9   r;   c                    d| j          dS )Nz<CertificateIssuer(r   r  rg   s    r7   r   zCertificateIssuer.__repr__  s    <T%8<<<<r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   zCertificateIssuer.__eq__  s,    %!233 	"!!"e&:::r9   r=   c                *    t          | j                  S r'   r  rg   s    r7   r   zCertificateIssuer.__hash__  r  r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zCertificateIssuer.public_bytes  r   r9   Nr  r  r  r  r  r  r  r   r   rJ   rh   )r[   r\   r]   r   CERTIFICATE_ISSUERrP   rU   rL   r   r   r   r  r  r  r   r   r   r)   rK   r9   r7   r  r    sV       

1C: : : : &<%;<L%M%M"GX{_   _ _   _
 _% % % _%
 _$ $ $ _$ _   _= = = =$= = = =; ; ; ;) ) ) )6 6 6 6 6 6r9   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reasonr]  r$   rQ   c                \    t          |t                    st          d          || _        d S )Nz*reason must be an element from ReasonFlags)r(   r]  r}   _reason)rB   r  s     r7   rU   zCRLReason.__init__  s/    &+.. 	JHIIIr9   r;   c                    d| j          dS )Nz<CRLReason(reason=r   r  rg   s    r7   r   zCRLReason.__repr__
  r  r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   zCRLReason.__eq__  s)    %++ 	"!!{el**r9   r=   c                *    t          | j                  S r'   )r   r  rg   s    r7   r   zCRLReason.__hash__  r   r9   c                    | j         S r'   r  rg   s    r7   r  zCRLReason.reason  r   r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zCRLReason.public_bytes  r   r9   N)r  r]  r$   rQ   r   r   rJ   )r$   r]  rh   )r[   r\   r]   r   
CRL_REASONrP   rU   r   r   r   r   r  r)   rK   r9   r7   r  r    s        

)C   5 5 5 5+ + + +! ! ! !    X6 6 6 6 6 6r9   r  c                  t    e Zd Zej        ZddZddZddZddZ	e
dd            Ze
dd            ZddZdS )InvalidityDateinvalidity_datedatetime.datetimer$   rQ   c                f    t          |t          j                  st          d          || _        d S )Nz+invalidity_date must be a datetime.datetime)r(   rE  r}   _invalidity_date)rB   r  s     r7   rU   zInvalidityDate.__init__!  s5    /8+<== 	KIJJJ /r9   r;   c                    d| j          dS )Nz <InvalidityDate(invalidity_date=r   r  rg   s    r7   r   zInvalidityDate.__repr__'  s    K$2GKKKKr9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   zInvalidityDate.__eq__*  s+    %00 	"!!#u'<<<r9   r=   c                *    t          | j                  S r'   )r   r  rg   s    r7   r   zInvalidityDate.__hash__0  s    D()))r9   c                    | j         S r'   r  rg   s    r7   r  zInvalidityDate.invalidity_date3  r  r9   c                    | j         j        *| j                             t          j        j                  S | j                             t          j        j                  S )N)tzinfo)tz)r  r  replacerE  timezoneutc
astimezonerg   s    r7   invalidity_date_utcz"InvalidityDate.invalidity_date_utc7  sN     '/(008I8M0NNN(33x7H7L3MMMr9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zInvalidityDate.public_bytes>  r   r9   N)r  r  r$   rQ   r   r   rJ   )r$   r  rh   )r[   r\   r]   r   INVALIDITY_DATErP   rU   r   r   r   r   r  r  r)   rK   r9   r7   r  r    s        

.C0 0 0 0L L L L= = = =* * * * % % % X% N N N XN6 6 6 6 6 6r9   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$Iterable[SignedCertificateTimestamp]r$   rQ   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r'   r(   r   r   scts     r7   r   zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>J  A       
 
 s677
 
 
 
 
 
r9   YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamprp   r   r}   _signed_certificate_timestampsrB   r  s     r7   rU   z2PrecertificateSignedCertificateTimestamps.__init__E  k     )--J(K(K% 
 
4
 
 
 
 
 	 /   /L+++r9   r  r;   c                (    dt          |            dS )Nz+<PrecertificateSignedCertificateTimestamps(r   rp   rg   s    r7   r   z2PrecertificateSignedCertificateTimestamps.__repr__X  s    KT$ZZKKKKr9   r=   c                D    t          t          | j                            S r'   r   r   r  rg   s    r7   r   z2PrecertificateSignedCertificateTimestamps.__hash__[      E$=>>???r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r  r   r  r   s     r7   r   z0PrecertificateSignedCertificateTimestamps.__eq__^  s3    %!JKK 	"!! /34	
r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z6PrecertificateSignedCertificateTimestamps.public_bytesg  r   r9   Nr  r  r$   rQ   r   rJ   r   rh   )r[   r\   r]   r   %PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrP   rU   rL   r   r   r   r   r   r   r)   rK   r9   r7   r  r  B  s        

<CL L L L &<%;(& &"GX{L L L L@ @ @ @
 
 
 
6 6 6 6 6 6r9   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$   rQ   c                    t          |          }t          d |D                       st          d          || _        d S )Nc              3  @   K   | ]}t          |t                    V  d S r'   r  r  s     r7   r   z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>s  r  r9   r  r  r  s     r7   rU   z$SignedCertificateTimestamps.__init__n  r  r9   r  r;   c                (    dt          |            dS )Nz<SignedCertificateTimestamps(r   r  rg   s    r7   r   z$SignedCertificateTimestamps.__repr__  s    =tDzz====r9   r=   c                D    t          t          | j                            S r'   r  rg   s    r7   r   z$SignedCertificateTimestamps.__hash__  r  r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r#  r   r  r   s     r7   r   z"SignedCertificateTimestamps.__eq__  s3    %!<== 	"!! /34	
r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z(SignedCertificateTimestamps.public_bytes  r   r9   Nr   r   rJ   r   rh   )r[   r\   r]   r   SIGNED_CERTIFICATE_TIMESTAMPSrP   rU   rL   r   r   r   r   r   r   r)   rK   r9   r7   r#  r#  k  s        

4CL L L L &<%;(& &"GX{> > > >@ @ @ @
 
 
 
6 6 6 6 6 6r9   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$   rQ   c                \    t          |t                    st          d          || _        d S )Nznonce must be bytes)r(   r%   r}   _nonce)rB   r-  s     r7   rU   zOCSPNonce.__init__  s.    %'' 	31222r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r,  r   r-  r   s     r7   r   zOCSPNonce.__eq__  s)    %++ 	"!!zU[((r9   r=   c                *    t          | j                  S r'   )r   r-  rg   s    r7   r   zOCSPNonce.__hash__  s    DJr9   r;   c                    d| j         dS )Nz<OCSPNonce(nonce=r   )r-  rg   s    r7   r   zOCSPNonce.__repr__  s    34:3333r9   c                    | j         S r'   )r/  rg   s    r7   r-  zOCSPNonce.nonce  r  r9   c                *    t          j        |           S r'   r   rg   s    r7   r)   zOCSPNonce.public_bytes  r   r9   N)r-  r%   r$   rQ   r   rJ   r   rh   )r[   r\   r]   r   NONCErP   rU   r   r   r   r   r-  r)   rK   r9   r7   r,  r,    s        

 C   ) ) ) )       4 4 4 4    X6 6 6 6 6 6r9   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$   rQ   c                    t          |          }t          d |D                       rt          d          || _        d S )Nc              3  B   K   | ]}t          |t                     V  d S r'   r  )r   rs     r7   r   z3OCSPAcceptableResponses.__init__.<locals>.<genexpr>  s0      FFq:a!1222FFFFFFr9   z'All responses must be ObjectIdentifiers)rp   rh  r}   
_responses)rB   r8  s     r7   rU   z OCSPAcceptableResponses.__init__  sG    OO	FFIFFFFF 	GEFFF#r9   r   r   r   c                Z    t          |t                    st          S | j        |j        k    S r'   )r(   r7  r   r<  r   s     r7   r   zOCSPAcceptableResponses.__eq__  s+    %!899 	"!!%"222r9   r=   c                D    t          t          | j                            S r'   )r   r   r<  rg   s    r7   r   z OCSPAcceptableResponses.__hash__  s    E$/**+++r9   r;   c                    d| j          dS )Nz#<OCSPAcceptableResponses(responses=r   )r<  rg   s    r7   r   z OCSPAcceptableResponses.__repr__  s    HT_HHHHr9   Iterator[ObjectIdentifier]c                *    t          | j                  S r'   )rE   r<  rg   s    r7   r   z OCSPAcceptableResponses.__iter__  r   r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z$OCSPAcceptableResponses.public_bytes  r   r9   N)r8  r  r$   rQ   r   rJ   r   )r$   r@  rh   )r[   r\   r]   r   ACCEPTABLE_RESPONSESrP   rU   r   r   r   r   r)   rK   r9   r7   r7  r7    s        

/C$ $ $ $3 3 3 3, , , ,I I I I% % % %6 6 6 6 6 6r9   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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 )*IssuingDistributionPointrR  r   rS  rT  only_contains_user_certsr   only_contains_ca_certsonly_some_reasonsrV  indirect_crlonly_contains_attribute_certsr$   rQ   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'   r\  r   s     r7   r   z4IssuingDistributionPoint.__init__.<locals>.<genexpr>  rV  r9   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 rK   rK   r   s     r7   r  z5IssuingDistributionPoint.__init__.<locals>.<listcomp>  s    000aa0000r9   r  z}Only one of the following can be set to True: only_contains_user_certs, only_contains_ca_certs, only_contains_attribute_certszCannot create empty extension: if only_contains_user_certs, only_contains_ca_certs, indirect_crl, and only_contains_attribute_certs are all False, then either full_name, relative_name, or only_some_reasons must have a value.)rp   r(   r^  r   r}   r]  r_  r`  r   r   r?   rh  _only_contains_user_certs_only_contains_ca_certs_indirect_crl_only_contains_attribute_certs_only_some_reasonsra  rb  )	rB   rR  rS  rF  rG  rH  rI  rJ  crl_constraintss	            r7   rU   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0   (&-!

 

 	 %   *B&'=$).K+"3#+r9   r;   c                x    d| j          d| j         d| j         d| j         d| j         d| j         d| j         dS )	Nz$<IssuingDistributionPoint(full_name=z, relative_name=z, only_contains_user_certs=z, only_contains_ca_certs=z, only_some_reasons=z, indirect_crl=z , only_contains_attribute_certs=r   )rR  rS  rF  rG  rH  rI  rJ  rg   s    r7   r   z!IssuingDistributionPoint.__repr__&  s    64> 6 6!/6 6(,(E6 6 '+&A6 6 "&!7	6 6
 !-6 6 16 6 6		
r9   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(   rE  r   rR  rS  rF  rG  rH  rI  rJ  r   s     r7   r   zIssuingDistributionPoint.__eq__2  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		
r9   r=   c           	     t    t          | j        | j        | j        | j        | j        | j        | j        f          S r'   )r   rR  rS  rF  rG  rH  rI  rJ  rg   s    r7   r   z!IssuingDistributionPoint.__hash__A  sB    "-+&!2

 

 
	
r9   r   c                    | j         S r'   rl  rg   s    r7   rR  z"IssuingDistributionPoint.full_nameN  rm  r9   c                    | j         S r'   ro  rg   s    r7   rS  z&IssuingDistributionPoint.relative_nameR  r  r9   c                    | j         S r'   )rN  rg   s    r7   rF  z1IssuingDistributionPoint.only_contains_user_certsV  s    --r9   c                    | j         S r'   )rO  rg   s    r7   rG  z/IssuingDistributionPoint.only_contains_ca_certsZ  r  r9   c                    | j         S r'   )rR  rg   s    r7   rH  z*IssuingDistributionPoint.only_some_reasons^  r  r9   c                    | j         S r'   )rP  rg   s    r7   rI  z%IssuingDistributionPoint.indirect_crld  r  r9   c                    | j         S r'   )rQ  rg   s    r7   rJ  z6IssuingDistributionPoint.only_contains_attribute_certsh  s    22r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z%IssuingDistributionPoint.public_bytesl  r   r9   N)rR  r   rS  rT  rF  r   rG  r   rH  rV  rI  r   rJ  r   r$   rQ   r   r   rJ   r   rr  r&  rs  rh   )r[   r\   r]   r   ISSUING_DISTRIBUTION_POINTrP   rU   r   r   r   r   rR  rS  rF  rG  rH  rI  rJ  r)   rK   r9   r7   rE  rE    se       

1CS, S, S, S,j

 

 

 


 
 
 

 
 
 
    X # # # X# . . . X. , , , X, ' ' ' X'
 " " " X" 3 3 3 X36 6 6 6 6 6r9   rE  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$   rQ   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)rB   rb  rc  rd  s       r7   rU   zMSCertificateTemplate.__init__s  s     +'788 	?=>>>'%j.L.L%%j.L.L%J   ,+r9   c                    | j         S r'   )rg  rg   s    r7   rb  z!MSCertificateTemplate.template_id  r!  r9   c                    | j         S r'   )rh  rg   s    r7   rc  z#MSCertificateTemplate.major_version  r  r9   c                    | j         S r'   )ri  rg   s    r7   rd  z#MSCertificateTemplate.minor_version  r  r9   r;   c                8    d| j          d| j         d| j         dS )Nz#<MSCertificateTemplate(template_id=z, major_version=z, minor_version=r   )rb  rc  rd  rg   s    r7   r   zMSCertificateTemplate.__repr__  s@    4$2B 4 4!/4 4!/4 4 4	
r9   r   r   r   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r'   )r(   ra  r   rb  rc  rd  r   s     r7   r   zMSCertificateTemplate.__eq__  sV    %!677 	"!!  11 :"e&99:"e&99	
r9   r=   c                D    t          | j        | j        | j        f          S r'   )r   rb  rc  rd  rg   s    r7   r   zMSCertificateTemplate.__hash__  s     T%t'94;MNOOOr9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   z"MSCertificateTemplate.public_bytes  r   r9   N)rb  r   rc  r   rd  r   r$   rQ   r  r   r   r   rJ   rh   )r[   r\   r]   r   MS_CERTIFICATE_TEMPLATErP   rU   r   rb  rc  rd  r   r   r   r)   rK   r9   r7   ra  ra  p  s        

.C, , , ,( ! ! ! X! # # # X# # # # X#
 
 
 

 
 
 
P P P P6 6 6 6 6 6r9   ra  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 )NamingAuthorityidObjectIdentifier | Noneurlr  textr$   rQ   c                   |$t          |t                    st          d          |$t          |t                    st          d          |$t          |t                    st          d          || _        || _        || _        d S )Nzid must be an ObjectIdentifierzurl must be a strztext must be a str)r(   r   r}   r;   _id_url_text)rB   rt  rv  rw  s       r7   rU   zNamingAuthority.__init__  s     >*R1A"B"B><===?:c3#7#7?/000JtS$9$90111	


r9   c                    | j         S r'   )ry  rg   s    r7   rt  zNamingAuthority.id  r  r9   c                    | j         S r'   )rz  rg   s    r7   rv  zNamingAuthority.url  r}  r9   c                    | j         S r'   )r{  rg   s    r7   rw  zNamingAuthority.text  s
    zr9   r;   c                8    d| j          d| j         d| j         dS )Nz<NamingAuthority(id=z, url=z, text=r   )rt  rv  rw  rg   s    r7   r   zNamingAuthority.__repr__  sF    @'@ @!%@ @26)@ @ @	
r9   r   r   r   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r'   )r(   rs  r   rt  rv  rw  r   s     r7   r   zNamingAuthority.__eq__  sO    %11 	"!! Gux (EI%(	UZ'	
r9   r=   c                D    t          | j        | j        | j        f          S r'   )r   rt  rv  rw  rg   s    r7   r   zNamingAuthority.__hash__  s(    	
 
 	
r9   N)rt  ru  rv  r  rw  r  r$   rQ   )r$   ru  r  r   r   rJ   )r[   r\   r]   rU   r   rt  rv  rw  r   r   r   rK   r9   r7   rs  rs    s           &    X    X    X
 
 
 

 
 
 

 
 
 
 
 
r9   rs  c                      e Zd ZddZedd            Zed d            Zed!d            Zed"d            Zed#d            Z	d$dZ
d%dZd&dZdS )'ProfessionInfonaming_authorityNamingAuthority | Noneprofession_itemsIterable[str]profession_oids!Iterable[ObjectIdentifier] | Noneregistration_numberr  add_profession_infor   r$   rQ   c                   |$t          |t                    st          d          t          |          }t	          d |D                       st          d          |7t          |          }t	          d |D                       st          d          |$t          |t
                    st          d          |$t          |t                    st          d          || _        || _        || _	        || _
        || _        d S )N*naming_authority must be a NamingAuthorityc              3  @   K   | ]}t          |t                    V  d S r'   )r(   r;   )r   items     r7   r   z*ProfessionInfo.__init__.<locals>.<genexpr>  s,      FFT:dC((FFFFFFr9   z5Every item in the profession_items list must be a strc              3  @   K   | ]}t          |t                    V  d S r'   r  )r   rP   s     r7   r   z*ProfessionInfo.__init__.<locals>.<genexpr>  s>        69
3 011     r9   zBEvery item in the profession_oids list must be an ObjectIdentifierz!registration_number must be a strz!add_profession_info must be bytes)r(   rs  r}   rp   r   r;   r%   _naming_authority_profession_items_profession_oids_registration_number_add_profession_info)rB   r  r  r  r  r  s         r7   rU   zProfessionInfo.__init__  sU    '
o1
 1
' HIII 011FF5EFFFFF 	G   &"?33O  =L       '  
 *:4
 4
* ?@@@*:4
 4
* ?@@@!1!1 /$7!$7!!!r9   c                    | j         S r'   r  rg   s    r7   r  zProfessionInfo.naming_authority	  r  r9   r  c                    | j         S r'   )r  rg   s    r7   r  zProfessionInfo.profession_items	  r  r9   list[ObjectIdentifier] | Nonec                    | j         S r'   )r  rg   s    r7   r  zProfessionInfo.profession_oids	  r  r9   c                    | j         S r'   )r  rg   s    r7   r  z"ProfessionInfo.registration_number	      ((r9   c                    | j         S r'   )r  rg   s    r7   r  z"ProfessionInfo.add_profession_info#	  r  r9   r;   c                X    d| j          d| j         d| j         d| j         d| j        dS )Nz!<ProfessionInfo(naming_authority=z, profession_items=z, profession_oids=z, registration_number=z, add_profession_info=r   )r  r  r  r  r  rg   s    r7   r   zProfessionInfo.__repr__'	  sp    B0E B B $ 5B B#3B B $(#;B B $(#;	B B B	
r9   r   r   r   c                    t          |t                    st          S | 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   s     r7   r   zProfessionInfo.__eq__0	  s    %00 	"!! !U%;; F%)??F$(==F (E,EEF (E,EE	
r9   r=   c                    | j         t          | j                   }nd }t          | j        t          | j                  || j        | j        f          S r'   )r  r   r   r  r  r  r  )rB   r  s     r7   r   zProfessionInfo.__hash__<	  s\    +#D$899OO"O%d+,,((
 
 	
r9   N)r  r  r  r  r  r  r  r  r  r   r$   rQ   r$   r  )r$   r  )r$   r  r  r   r   r   rJ   )r[   r\   r]   rU   r   r  r  r  r  r  r   r   r   rK   r9   r7   r  r    s       +8 +8 +8 +8Z & & & X& & & & X& % % % X% ) ) ) X) ) ) ) X)
 
 
 


 

 

 


 
 
 
 
 
r9   r  c                  v    e Zd Zdd	Zedd
            Zedd            Zedd            ZddZddZ	ddZ
dS )	Admissionadmission_authorityGeneralName | Noner  r  profession_infosIterable[ProfessionInfo]r$   rQ   c                6   |$t          |t                    st          d          |$t          |t                    st          d          t	          |          }t          d |D                       st          d          || _        || _        || _        d S )Nz)admission_authority must be a GeneralNamer  c              3  @   K   | ]}t          |t                    V  d S r'   )r(   r  )r   infos     r7   r   z%Admission.__init__.<locals>.<genexpr>^	  s=       
 
15Jt^,,
 
 
 
 
 
r9   z@Every item in the profession_infos list must be a ProfessionInfo)	r(   r   r}   rs  rp   r   _admission_authorityr  _profession_infos)rB   r  r  r  s       r7   rU   zAdmission.__init__M	  s     *:4
 4
* GHHH'
o1
 1
' HIII 011 
 
9I
 
 
 
 
 	 !  
 %8!!1!1r9   c                    | j         S r'   )r  rg   s    r7   r  zAdmission.admission_authorityj	  r  r9   c                    | j         S r'   r  rg   s    r7   r  zAdmission.naming_authorityn	  r  r9   list[ProfessionInfo]c                    | j         S r'   )r  rg   s    r7   r  zAdmission.profession_infosr	  r  r9   r;   c                8    d| j          d| j         d| j         dS )Nz<Admission(admission_authority=z, naming_authority=z, profession_infos=r   )r  r  r  rg   s    r7   r   zAdmission.__repr__v	  s@    :d.F : : $ 5: : $ 5: : :	
r9   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     r7   r   zAdmission.__eq__}	  sW    %++ 	"!! $(AA @%)??@%)??	
r9   r=   c                ^    t          | j        | j        t          | j                  f          S r'   )r   r  r  r   r  rg   s    r7   r   zAdmission.__hash__	  s3    (%d+,,
 
 	
r9   N)r  r  r  r  r  r  r$   rQ   r$   r  r  )r$   r  r   r   rJ   )r[   r\   r]   rU   r   r  r  r  r   r   r   rK   r9   r7   r  r  L	  s        2 2 2 2: ) ) ) X) & & & X& & & & X&
 
 
 

 
 
 

 
 
 
 
 
r9   r  c                  z    e Zd Zej        ZddZ ed          \  ZZ	Z
edd	            ZddZddZddZddZdS )
Admissions	authorityr  
admissionsIterable[Admission]r$   rQ   c                    |$t          |t                    st          d          t          |          }t	          d |D                       st          d          || _        || _        d S )Nzauthority must be a GeneralNamec              3  @   K   | ]}t          |t                    V  d S r'   )r(   r  )r   	admissions     r7   r   z&Admissions.__init__.<locals>.<genexpr>	  s=       
 
1:Jy),,
 
 
 
 
 
r9   zBEvery item in the contents_of_admissions list must be an Admission)r(   r   r}   rp   r   
_authority_admissions)rB   r  r  s      r7   rU   zAdmissions.__init__	  s    
  I{)K)K =>>>*%%
 
 
>H
 
 
 
 
 	   
 $%r9   r  c                    | j         S r'   )r  rg   s    r7   r  zAdmissions.authority	  rm  r9   r;   c                (    d| j          d| j         dS )Nz<Admissions(authority=z, admissions=r   )r  r  rg   s    r7   r   zAdmissions.__repr__	  s/    /T_ / /*/ / /	
r9   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     r7   r   zAdmissions.__eq__	  s@    %,, 	"!! Neo- 6 E$55	
r9   r=   c                R    t          | j        t          | j                  f          S r'   )r   r  r   r  rg   s    r7   r   zAdmissions.__hash__	  s"    T^U4+;%<%<=>>>r9   r%   c                *    t          j        |           S r'   r   rg   s    r7   r)   zAdmissions.public_bytes	  r   r9   N)r  r  r  r  r$   rQ   r  r   r   rJ   rh   )r[   r\   r]   r   
ADMISSIONSrP   rU   rL   r   r   r   r   r  r   r   r   r)   rK   r9   r7   r  r  	  s        

!C& & & &( &<%;M%J%J"GX{   X
 
 
 

 
 
 
? ? ? ?6 6 6 6 6 6r9   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|   rP   r   r~   r%   r$   rQ   c                j    t          |t                    st          d          || _        || _        d S )Nrf  )r(   r   r}   rx  rz  )rB   rP   r~   s      r7   rU   zUnrecognizedExtension.__init__	  s6    #/00 	?=>>>	r9   c                    | j         S r'   r|  rg   s    r7   rP   zUnrecognizedExtension.oid	  r}  r9   c                    | j         S r'   r  rg   s    r7   r~   zUnrecognizedExtension.value	  r  r9   r;   c                (    d| j          d| j        dS )Nz<UnrecognizedExtension(oid=r  r   )rP   r~   rg   s    r7   r   zUnrecognizedExtension.__repr__	  s    OTXOOtzOOOOr9   r   r   r   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r'   )r(   r|   r   rP   r~   r   s     r7   r   zUnrecognizedExtension.__eq__	  s8    %!677 	"!!x59$Bu{)BBr9   r=   c                8    t          | j        | j        f          S r'   )r   rP   r~   rg   s    r7   r   zUnrecognizedExtension.__hash__	  s    TXtz*+++r9   c                    | j         S r'   r  rg   s    r7   r)   z"UnrecognizedExtension.public_bytes	  s
    zr9   N)rP   r   r~   r%   r$   rQ   r  rh   r   r   rJ   )r[   r\   r]   rU   r   rP   r~   r   r   r   r)   rK   r9   r7   r|   r|   	  s               X    XP P P PC C C C, , , ,     r9   r|   )r#   r   r$   r%   )r:   r;   )t
__future__r   abcrE  r2   rc  r  collections.abcr   r   cryptographyr   "cryptography.hazmat.bindings._rustr   r   r   cryptography.hazmat.primitivesr	   r
   ,cryptography.hazmat.primitives.asymmetric.ecr   -cryptography.hazmat.primitives.asymmetric.rsar   /cryptography.hazmat.primitives.asymmetric.typesr   r   *cryptography.x509.certificate_transparencyr   cryptography.x509.general_namer   r   r   r   r   r   r   r   r   cryptography.x509.namer   r   cryptography.x509.oidr   r   r   r   TypeVarr   r8   rL   	ExceptionrN   rb   ABCMetar    rl   r   r   r   r   r  r   r  r)  r2  rI  r8  Enumr]  r~  r  r  rx  r  r  r  r  _REASON_BIT_MAPPING_CRLREASONFLAGSr_  r`  _CRL_ENTRY_REASON_ENUM_TO_CODEr  r  r  r  r  r  r  r  r  r  _TLS_FEATURE_TYPE_TO_ENUMr  r  r@  rP  Genericru  r  r  r  r  r  r  r  r#  r,  r7  rE  ra  rs  r  r  r  r|   rK   r9   r7   <module>r     s  
 # " " " " " 



        . . . . . . . .       3 3 3 3 3 3 @ @ @ @ @ @ G G G G G G G G O O O O O O F F F F F F            
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 C B B B B B B B            "6>o   
' ' ' '0
3 
3 
3 
3           	   	
 	
 	
 	
 	
ck 	
 	
 	
 	
"3 "3 "3 "3 "3 "3 "3 "3J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 6>6 6 6 6 6} 6 6 6>%% %% %% %% %% %% %% %%P+6 +6 +6 +6 +6} +6 +6 +6\6 6 6 6 6 6 6 6:"6 "6 "6 "6 "6M "6 "6 "6J"6 "6 "6 "6 "6- "6 "6 "6Jh  h  h  h  h  h  h  h V
& 
& 
& 
& 
&%* 
& 
& 
&4 ! &)#& 	 	  q#QA& !#Qq	0 Qq#QA& !#Qr" >6 >6 >6 >6 >6 >6 >6 >6B6 6 6 6 6- 6 6 6<6' 6' 6' 6' 6' 6' 6' 6'r(# (# (# (# (# (# (# (#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>6 >6 >6 >6 >6M >6 >6 >6Bp6 p6 p6 p6 p6m p6 p6 p6f-; -; -; -; -;/0 -; -; -;`M0 M0 M0 M0 M0 M0 M0 M0`E6 E6 E6 E6 E6] E6 E6 E6PE6 E6 E6 E6 E6M E6 E6 E6PE6 E6 E6 E6 E6 E6 E6 E6P6 6 6 6 6 6 6 6:!6 !6 !6 !6 !6] !6 !6 !6H&6 &6 &6 &6 &6 &6 &6 &6R&6 &6 &6 &6 &6- &6 &6 &6R6 6 6 6 6 6 6 6:6 6 6 6 6m 6 6 6:_6 _6 _6 _6 _6} _6 _6 _6D86 86 86 86 86M 86 86 86v7
 7
 7
 7
 7
 7
 7
 7
td
 d
 d
 d
 d
 d
 d
 d
NB
 B
 B
 B
 B
 B
 B
 B
J06 06 06 06 06 06 06 06f    M     r9   