§
    ZøÁi]m  ã            	      ó’  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ d dl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  d d
l!m"Z"m#Z# d dl$m%Z%  ej        ddd¦  «        Z&ej'        ej(        ej)        ej*        ej+        ej,        ej-        ej.        ej/        f         Z0 G d„ de1¦  «        Z2d6d„Z3d7d„Z4d8d„Z5 G d„ d ¦  «        Z6 G d!„ d"¦  «        Z7 G d#„ d$e
j8        ¦  «        Z9 G d%„ d&e1¦  «        Z:ej;        Z; G d'„ d(ej<        ¬)¦  «        Z=e= >                    ej=        ¦  «          G d*„ d+e=¦  «        Z?ej@        Z@ejA        ZAejB        ZBejC        ZCejD        ZDejE        ZEejF        ZFejG        ZGejH        ZH G d,„ d-¦  «        ZI G d.„ d/¦  «        ZJ G d0„ d1¦  «        ZK G d2„ d3¦  «        ZLd9d5„ZMdS ):é    )ÚannotationsN)ÚIterable)Úutils)Úx509)Úhashes)ÚdsaÚecÚed448Úed25519ÚpaddingÚrsaÚx448Úx25519)Ú CertificateIssuerPrivateKeyTypesÚCertificatePublicKeyTypes)Ú	ExtensionÚ
ExtensionsÚExtensionTypeÚ_make_sequence_methods)ÚNameÚ	_ASN1Type)ÚObjectIdentifieriž  é   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )	ÚAttributeNotFoundÚmsgÚstrÚoidr   ÚreturnÚNonec                óX   •— t          ¦   «                              |¦  «         || _        d S ©N)ÚsuperÚ__init__r   )Úselfr   r   Ú	__class__s      €ú`/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/cryptography/x509/base.pyr$   zAttributeNotFound.__init__9   s&   ø€ Ý‰Œ×Ò˜ÑÔÐØˆŒˆˆó    )r   r   r   r   r   r    ©Ú__name__Ú
__module__Ú__qualname__r$   Ú__classcell__©r&   s   @r'   r   r   8   s=   ø€ € € € € ðð ð ð ð ð ð ð ð ð r(   r   Ú	extensionúExtension[ExtensionType]Ú
extensionsúlist[Extension[ExtensionType]]r   r    c                óN   — |D ]!}|j         | j         k    rt          d¦  «        ‚Œ"d S )Nz$This extension has already been set.)r   Ú
ValueError)r/   r1   Úes      r'   Ú_reject_duplicate_extensionr6   >   sD   € ð
 ð Eð EˆØŒ5�I”MÒ!Ð!ÝÐCÑDÔDÐDð "ðEð Er(   r   r   Ú
attributesú0list[tuple[ObjectIdentifier, bytes, int | None]]c                óB   — |D ]\  }}}|| k    rt          d¦  «        ‚Œd S )Nz$This attribute has already been set.)r4   )r   r7   Úattr_oidÚ_s       r'   Ú_reject_duplicate_attributer<   H   sD   € ð
 %ð Eð E‰ˆ�!�QØ�sŠ?ˆ?ÝÐCÑDÔDÐDð ðEð Er(   Útimeúdatetime.datetimec                óœ   — | j         �D|                      ¦   «         }|r|nt          j        ¦   «         }|                      d¬¦  «        |z
  S | S )z’Normalizes a datetime to a naive datetime in UTC.

    time -- datetime to normalize. Assumed to be in UTC if not timezone
            aware.
    N©Útzinfo)rA   Ú	utcoffsetÚdatetimeÚ	timedeltaÚreplace)r=   Úoffsets     r'   Ú_convert_to_naive_utc_timerG   R   sP   € ð „{ÐØ—’Ñ!Ô!ˆØ!Ð;��¥xÔ'9Ñ';Ô';ˆØ�|Š| 4ˆ|Ñ(Ô(¨6Ñ1Ð1àˆr(   c                  óv   — e Zd Zej        j        fdd	„Zedd
„¦   «         Zedd„¦   «         Zdd„Z	dd„Z
dd„ZdS )Ú	Attributer   r   ÚvalueÚbytesÚ_typeÚintr   r    c                ó0   — || _         || _        || _        d S r"   )Ú_oidÚ_valuerL   )r%   r   rJ   rL   s       r'   r$   zAttribute.__init__a   s   € ð ˆŒ	ØˆŒØˆŒ
ˆ
ˆ
r(   c                ó   — | j         S r"   )rO   ©r%   s    r'   r   zAttribute.oidk   s
   € àŒyÐr(   c                ó   — | j         S r"   )rP   rR   s    r'   rJ   zAttribute.valueo   s
   € àŒ{Ðr(   r   c                ó(   — d| j         › d| j        ›d�S )Nz<Attribute(oid=z, value=ú)>)r   rJ   rR   s    r'   Ú__repr__zAttribute.__repr__s   s   € ØC ¤ÐCÐC°4´:ÐCÐCÐCÐCr(   ÚotherÚobjectÚboolc                óš   — t          |t          ¦  «        st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r"   )Ú
isinstancerI   ÚNotImplementedr   rJ   rL   )r%   rW   s     r'   Ú__eq__zAttribute.__eq__v   sO   € Ý˜%¥Ñ+Ô+ð 	"Ý!Ð!ð ŒH˜œ	Ò!ð *Ø”
˜eœkÒ)ð*à”
˜eœkÒ)ð	
r(   c                óD   — t          | j        | j        | j        f¦  «        S r"   )Úhashr   rJ   rL   rR   s    r'   Ú__hash__zAttribute.__hash__€   s   € Ý�T”X˜tœz¨4¬:Ð6Ñ7Ô7Ð7r(   N)r   r   rJ   rK   rL   rM   r   r    )r   r   )r   rK   ©r   r   )rW   rX   r   rY   ©r   rM   )r*   r+   r,   r   Ú
UTF8StringrJ   r$   Úpropertyr   rV   r]   r`   © r(   r'   rI   rI   `   s¸   € € € € € ð
 Ô)Ô/ð	ð ð ð ð ð ðð ð ñ „Xðð ðð ð ñ „XððDð Dð Dð Dð
ð 
ð 
ð 
ð8ð 8ð 8ð 8ð 8ð 8r(   rI   c                  óD   — e Zd Zdd„Z ed¦  «        \  ZZZdd„Zdd„Z	dS )Ú
Attributesr7   úIterable[Attribute]r   r    c                ó.   — t          |¦  «        | _        d S r"   )ÚlistÚ_attributes)r%   r7   s     r'   r$   zAttributes.__init__…   s   € õ   
Ñ+Ô+ˆÔÐÐr(   rk   r   c                ó   — d| j         › d�S )Nz<Attributes(rU   )rk   rR   s    r'   rV   zAttributes.__repr__�   s   € Ø2˜dÔ.Ð2Ð2Ð2Ð2r(   r   r   rI   c                óR   — | D ]}|j         |k    r|c S Œt          d|› d�|¦  «        ‚)NzNo z attribute was found)r   r   )r%   r   Úattrs      r'   Úget_attribute_for_oidz Attributes.get_attribute_for_oid�   sH   € Øð 	ð 	ˆDØŒx˜3ŠˆØ���ð õ  Ð ? cÐ ?Ð ?Ð ?ÀÑEÔEÐEr(   N)r7   rh   r   r    ra   )r   r   r   rI   )
r*   r+   r,   r$   r   Ú__len__Ú__iter__Ú__getitem__rV   ro   re   r(   r'   rg   rg   „   so   € € € € € ð,ð ,ð ,ð ,ð &<Ð%;¸MÑ%JÔ%JÑ"€GˆX�{ð3ð 3ð 3ð 3ðFð Fð Fð Fð Fð Fr(   rg   c                  ó   — e Zd ZdZdZdS )ÚVersionr   é   N)r*   r+   r,   Úv1Úv3re   r(   r'   rt   rt   ˜   s   € € € € € Ø	
€BØ	
€B€B€Br(   rt   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )	ÚInvalidVersionr   r   Úparsed_versionrM   r   r    c                óX   •— t          ¦   «                              |¦  «         || _        d S r"   )r#   r$   rz   )r%   r   rz   r&   s      €r'   r$   zInvalidVersion.__init__ž   s)   ø€ Ý‰Œ×Ò˜ÑÔÐØ,ˆÔÐÐr(   )r   r   rz   rM   r   r    r)   r.   s   @r'   ry   ry   �   s=   ø€ € € € € ð-ð -ð -ð -ð -ð -ð -ð -ð -ð -r(   ry   c                  óÖ   — e Zd Zeej        d
d„¦   «         ¦   «         Zeej        dd„¦   «         ¦   «         Zeej        dd„¦   «         ¦   «         Zeej        dd„¦   «         ¦   «         Z	d	S )ÚRevokedCertificater   rM   c                ó   — dS )zG
        Returns the serial number of the revoked certificate.
        Nre   rR   s    r'   Úserial_numberz RevokedCertificate.serial_number§   ó   € € € r(   r>   c                ó   — dS )zH
        Returns the date of when this certificate was revoked.
        Nre   rR   s    r'   Úrevocation_datez"RevokedCertificate.revocation_date®   r€   r(   c                ó   — dS )zl
        Returns the date of when this certificate was revoked as a non-naive
        UTC datetime.
        Nre   rR   s    r'   Úrevocation_date_utcz&RevokedCertificate.revocation_date_utcµ   r€   r(   r   c                ó   — dS )zW
        Returns an Extensions object containing a list of Revoked extensions.
        Nre   rR   s    r'   r1   zRevokedCertificate.extensions½   r€   r(   Nrb   ©r   r>   ©r   r   )
r*   r+   r,   rd   ÚabcÚabstractmethodr   r‚   r„   r1   re   r(   r'   r}   r}   ¦   sÊ   € € € € € ØØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð ð r(   r}   )Ú	metaclassc                  óv   — e Zd Zdd„Zedd	„¦   «         Zedd
„¦   «         Zedd„¦   «         Zedd„¦   «         ZdS )Ú_RawRevokedCertificater   rM   r‚   r>   r1   r   c                ó0   — || _         || _        || _        d S r"   ©Ú_serial_numberÚ_revocation_dateÚ_extensions©r%   r   r‚   r1   s       r'   r$   z_RawRevokedCertificate.__init__Ê   ó"   € ð ,ˆÔØ /ˆÔØ%ˆÔÐÐr(   r   c                ó   — | j         S r"   )r�   rR   s    r'   r   z$_RawRevokedCertificate.serial_numberÔ   s   € àÔ"Ð"r(   c                óR   — t          j        dt          j        d¬¦  «         | j        S )Nuk   Properties that return a naÃ¯ve datetime object have been deprecated. Please switch to revocation_date_utc.ru   )Ú
stacklevel)ÚwarningsÚwarnr   ÚDeprecatedIn42r�   rR   s    r'   r‚   z&_RawRevokedCertificate.revocation_dateØ   s5   € åŒð@åÔ Øð		
ñ 	
ô 	
ð 	
ð Ô$Ð$r(   c                óV   — | j                              t          j        j        ¬¦  «        S )Nr@   )r�   rE   rC   ÚtimezoneÚutcrR   s    r'   r„   z*_RawRevokedCertificate.revocation_date_utcâ   s"   € àÔ$×,Ò,µHÔ4EÔ4IÐ,ÑJÔJÐJr(   c                ó   — | j         S r"   )r‘   rR   s    r'   r1   z!_RawRevokedCertificate.extensionsæ   s   € àÔÐr(   N)r   rM   r‚   r>   r1   r   rb   r†   r‡   )	r*   r+   r,   r$   rd   r   r‚   r„   r1   re   r(   r'   rŒ   rŒ   É   s¬   € € € € € ð&ð &ð &ð &ð ð#ð #ð #ñ „Xð#ð ð%ð %ð %ñ „Xð%ð ðKð Kð Kñ „XðKð ð ð  ð  ñ „Xð ð  ð  r(   rŒ   c                  óP   — e Zd Zdg g fd'd„Zd(d„Zd)d„Zddœd*d„Z	 d+dddœd,d&„ZdS )-Ú CertificateSigningRequestBuilderNÚsubject_nameúName | Noner1   r2   r7   r8   c                ó0   — || _         || _        || _        dS )zB
        Creates an empty X.509 certificate request (v1).
        N)Ú_subject_namer‘   rk   )r%   r    r1   r7   s       r'   r$   z)CertificateSigningRequestBuilder.__init__ü   s"   € ð *ˆÔØ%ˆÔØ%ˆÔÐÐr(   Únamer   r   c                ó¬   — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          || j        | j        ¦  «        S )zF
        Sets the certificate requestor's distinguished name.
        úExpecting x509.Name object.Nú&The subject name may only be set once.)r[   r   Ú	TypeErrorr£   r4   rŸ   r‘   rk   ©r%   r¤   s     r'   r    z-CertificateSigningRequestBuilder.subject_name	  s\   € õ ˜$¥Ñ%Ô%ð 	;ÝÐ9Ñ:Ô:Ð:ØÔÐ)ÝÐEÑFÔFÐFÝ/Ø�$Ô" DÔ$4ñ
ô 
ð 	
r(   Úextvalr   ÚcriticalrY   c                óè   — t          |t          ¦  «        st          d¦  «        ‚t          |j        ||¦  «        }t          || j        ¦  «         t          | j        g | j        ¢|‘| j	        ¦  «        S )zE
        Adds an X.509 extension to the certificate request.
        ú"extension must be an ExtensionType)
r[   r   r¨   r   r   r6   r‘   rŸ   r£   rk   ©r%   rª   r«   r/   s       r'   Úadd_extensionz.CertificateSigningRequestBuilder.add_extension  sz   € õ ˜&¥-Ñ0Ô0ð 	BÝÐ@ÑAÔAÐAå˜fœj¨(°FÑ;Ô;ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@å/ØÔØ*ˆdÔÐ* 	Ð*ØÔñ
ô 
ð 	
r(   )Ú_tagr   r   rJ   rK   r°   ú_ASN1Type | Nonec               ón  — t          |t          ¦  «        st          d¦  «        ‚t          |t          ¦  «        st          d¦  «        ‚|�$t          |t          ¦  «        st          d¦  «        ‚t          || j        ¦  «         |�|j        }nd}t          | j	        | j
        g | j        ¢|||f‘¦  «        S )zK
        Adds an X.509 attribute with an OID and associated value.
        zoid must be an ObjectIdentifierzvalue must be bytesNztag must be _ASN1Type)r[   r   r¨   rK   r   r<   rk   rJ   rŸ   r£   r‘   )r%   r   rJ   r°   Útags        r'   Úadd_attributez.CertificateSigningRequestBuilder.add_attribute'  sÇ   € õ ˜#Õ/Ñ0Ô0ð 	?ÝÐ=Ñ>Ô>Ð>å˜%¥Ñ'Ô'ð 	3ÝÐ1Ñ2Ô2Ð2àÐ¥J¨tµYÑ$?Ô$?ÐÝÐ3Ñ4Ô4Ð4å# C¨Ô)9Ñ:Ô:Ð:àÐØ”*ˆCˆCàˆCå/ØÔØÔØ2ˆdÔÐ2  e¨SÐ 1Ð2ñ
ô 
ð 	
r(   ©Úrsa_paddingÚecdsa_deterministicÚprivate_keyr   Ú	algorithmú_AllowedHashTypes | NoneÚbackendú
typing.Anyr¶   ú%padding.PSS | padding.PKCS1v15 | Noner·   úbool | NoneÚCertificateSigningRequestc               ót  — | j         €t          d¦  «        ‚|�^t          |t          j        t          j        f¦  «        st          d¦  «        ‚t          |t          j        ¦  «        st          d¦  «        ‚|�)t          |t          j
        ¦  «        st          d¦  «        ‚t          j        | ||||¦  «        S )zF
        Signs the request using the requestor's private key.
        Nz/A CertificateSigningRequest must have a subjectúPadding must be PSS or PKCS1v15ú&Padding is only supported for RSA keysú1Deterministic ECDSA is only supported for EC keys)r£   r4   r[   r   ÚPSSÚPKCS1v15r¨   r   ÚRSAPrivateKeyr	   ÚEllipticCurvePrivateKeyÚ	rust_x509Úcreate_x509_csr©r%   r¸   r¹   r»   r¶   r·   s         r'   Úsignz%CertificateSigningRequestBuilder.signG  sÉ   € ð ÔÐ%ÝÐNÑOÔOÐOàÐ"Ý˜k­G¬K½Ô9IÐ+JÑKÔKð CÝÐ AÑBÔBÐBÝ˜k­3Ô+<Ñ=Ô=ð JÝÐ HÑIÔIÐIàÐ*Ý˜k­2Ô+EÑFÔFð ÝØGñô ð õ Ô(ØØØØØñ
ô 
ð 	
r(   )r    r¡   r1   r2   r7   r8   )r¤   r   r   rŸ   )rª   r   r«   rY   r   rŸ   )r   r   rJ   rK   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Ë   re   r(   r'   rŸ   rŸ   û   sµ   € € € € € ð %)Ø57ØGIð	&ð &ð &ð &ð &ð

ð 

ð 

ð 

ð
ð 
ð 
ð 
ð. "&ð
ð 
ð 
ð 
ð 
ð 
ðH #ð	!
ð >BØ+/ð!
ð !
ð !
ð !
ð !
ð !
ð !
ð !
r(   rŸ   c                  ó~   — e Zd ZU ded<   ddddddg fd2d„Zd3d„Zd3d„Zd4d„Zd5d„Zd6d„Z	d6d„Z
d7d$„Z	 d8ddd%œd9d1„ZdS ):ÚCertificateBuilderr2   r‘   NÚissuer_namer¡   r    Ú
public_keyú CertificatePublicKeyTypes | Noner   ú
int | NoneÚnot_valid_beforeúdatetime.datetime | NoneÚnot_valid_afterr1   r   r    c                óŠ   — t           j        | _        || _        || _        || _        || _        || _        || _        || _	        d S r"   )
rt   rw   Ú_versionÚ_issuer_namer£   Ú_public_keyr�   Ú_not_valid_beforeÚ_not_valid_afterr‘   )r%   rÎ   r    rÏ   r   rÒ   rÔ   r1   s           r'   r$   zCertificateBuilder.__init__n  sK   € õ  œ
ˆŒØ'ˆÔØ)ˆÔØ%ˆÔØ+ˆÔØ!1ˆÔØ /ˆÔØ%ˆÔÐÐr(   r¤   r   c           	     óÜ   — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          || j        | j        | j        | j	        | j
        | j        ¦  «        S )z3
        Sets the CA's distinguished name.
        r¦   Nú%The issuer name may only be set once.)r[   r   r¨   r×   r4   rÍ   r£   rØ   r�   rÙ   rÚ   r‘   r©   s     r'   rÎ   zCertificateBuilder.issuer_name�  sv   € õ ˜$¥Ñ%Ô%ð 	;ÝÐ9Ñ:Ô:Ð:ØÔÐ(ÝÐDÑEÔEÐEÝ!ØØÔØÔØÔØÔ"ØÔ!ØÔñ
ô 
ð 	
r(   c           	     óÜ   — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          | j        || j        | j        | j	        | j
        | j        ¦  «        S )z:
        Sets the requestor's distinguished name.
        r¦   Nr§   )r[   r   r¨   r£   r4   rÍ   r×   rØ   r�   rÙ   rÚ   r‘   r©   s     r'   r    zCertificateBuilder.subject_name“  sv   € õ ˜$¥Ñ%Ô%ð 	;ÝÐ9Ñ:Ô:Ð:ØÔÐ)ÝÐEÑFÔFÐFÝ!ØÔØØÔØÔØÔ"ØÔ!ØÔñ
ô 
ð 	
r(   Úkeyr   c           
     ól  — t          |t          j        t          j        t
          j        t          j        t          j
        t          j        t          j        f¦  «        st          d¦  «        ‚| j        �t#          d¦  «        ‚t%          | j        | j        || j        | j        | j        | j        ¦  «        S )zT
        Sets the requestor's public key (as found in the signing request).
        z‰Expecting one of DSAPublicKey, RSAPublicKey, EllipticCurvePublicKey, Ed25519PublicKey, Ed448PublicKey, X25519PublicKey, or X448PublicKey.Nz$The public key may only be set once.)r[   r   ÚDSAPublicKeyr   ÚRSAPublicKeyr	   ÚEllipticCurvePublicKeyr   ÚEd25519PublicKeyr
   ÚEd448PublicKeyr   ÚX25519PublicKeyr   ÚX448PublicKeyr¨   rØ   r4   rÍ   r×   r£   r�   rÙ   rÚ   r‘   )r%   rÞ   s     r'   rÏ   zCertificateBuilder.public_key¥  s´   € õ ØåÔ ÝÔ ÝÔ)ÝÔ(ÝÔ$ÝÔ&ÝÔ"ðñ
ô 
ð 	õ ð!ñô ð ð ÔÐ'ÝÐCÑDÔDÐDÝ!ØÔØÔØØÔØÔ"ØÔ!ØÔñ
ô 
ð 	
r(   ÚnumberrM   c           	     óT  — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚|dk    rt	          d¦  «        ‚|                     ¦   «         dk    rt	          d¦  «        ‚t          | j        | j        | j	        || j
        | j        | j        ¦  «        S )z5
        Sets the certificate serial number.
        ú'Serial number must be of integral type.Nú'The serial number may only be set once.r   z%The serial number should be positive.é    ú3The serial number should not be more than 159 bits.)r[   rM   r¨   r�   r4   Ú
bit_lengthrÍ   r×   r£   rØ   rÙ   rÚ   r‘   ©r%   rç   s     r'   r   z CertificateBuilder.serial_numberÊ  s¿   € õ ˜&¥#Ñ&Ô&ð 	GÝÐEÑFÔFÐFØÔÐ*ÝÐFÑGÔGÐGØ�QŠ;ˆ;ÝÐDÑEÔEÐEð ×ÒÑÔ #Ò%Ð%ÝØEñô ð õ "ØÔØÔØÔØØÔ"ØÔ!ØÔñ
ô 
ð 	
r(   r=   r>   c           	     óz  — t          |t          j        ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          |¦  «        }|t          k     rt	          d¦  «        ‚| j        �|| j        k    rt	          d¦  «        ‚t          | j	        | j
        | j        | j        || j        | j        ¦  «        S )z7
        Sets the certificate activation time.
        úExpecting datetime object.Nz*The not valid before may only be set once.z>The not valid before date must be on or after 1950 January 1).zBThe not valid before date must be before the not valid after date.)r[   rC   r¨   rÙ   r4   rG   Ú_EARLIEST_UTC_TIMErÚ   rÍ   r×   r£   rØ   r�   r‘   ©r%   r=   s     r'   rÒ   z#CertificateBuilder.not_valid_beforeå  sÚ   € õ ˜$¥Ô 1Ñ2Ô2ð 	:ÝÐ8Ñ9Ô9Ð9ØÔ!Ð-ÝÐIÑJÔJÐJÝ)¨$Ñ/Ô/ˆØÕ$Ò$Ð$Ýð$ñô ð ð Ô Ð,°¸Ô8MÒ1MÐ1MÝðñô ð õ "ØÔØÔØÔØÔØØÔ!ØÔñ
ô 
ð 	
r(   c           	     óz  — t          |t          j        ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          |¦  «        }|t          k     rt	          d¦  «        ‚| j        �|| j        k     rt	          d¦  «        ‚t          | j	        | j
        | j        | j        | j        || j        ¦  «        S )z7
        Sets the certificate expiration time.
        rð   Nz)The not valid after may only be set once.z<The not valid after date must be on or after 1950 January 1.zAThe not valid after date must be after the not valid before date.)r[   rC   r¨   rÚ   r4   rG   rñ   rÙ   rÍ   r×   r£   rØ   r�   r‘   rò   s     r'   rÔ   z"CertificateBuilder.not_valid_after  sÙ   € õ ˜$¥Ô 1Ñ2Ô2ð 	:ÝÐ8Ñ9Ô9Ð9ØÔ Ð,ÝÐHÑIÔIÐIÝ)¨$Ñ/Ô/ˆØÕ$Ò$Ð$ÝØNñô ð ð Ô"Ð.Ø�tÔ-Ò-Ð-åðñô ð õ "ØÔØÔØÔØÔØÔ"ØØÔñ
ô 
ð 	
r(   rª   r   r«   rY   c           
     ó  — t          |t          ¦  «        st          d¦  «        ‚t          |j        ||¦  «        }t          || j        ¦  «         t          | j        | j	        | j
        | j        | j        | j        g | j        ¢|‘¦  «        S )z=
        Adds an X.509 extension to the certificate.
        r­   )r[   r   r¨   r   r   r6   r‘   rÍ   r×   r£   rØ   r�   rÙ   rÚ   r®   s       r'   r¯   z CertificateBuilder.add_extension!  s’   € õ ˜&¥-Ñ0Ô0ð 	BÝÐ@ÑAÔAÐAå˜fœj¨(°FÑ;Ô;ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@å!ØÔØÔØÔØÔØÔ"ØÔ!Ø*ˆdÔÐ* 	Ð*ñ
ô 
ð 	
r(   rµ   r¸   r   r¹   rº   r»   r¼   r¶   r½   r·   r¾   ÚCertificatec               óP  — | j         €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚|�^t          |t          j	        t          j
        f¦  «        st          d¦  «        ‚t          |t          j        ¦  «        st          d	¦  «        ‚|�)t          |t          j        ¦  «        st          d
¦  «        ‚t!          j        | ||||¦  «        S )zC
        Signs the certificate using the CA's private key.
        Nz&A certificate must have a subject namez&A certificate must have an issuer namez'A certificate must have a serial numberz/A certificate must have a not valid before timez.A certificate must have a not valid after timez$A certificate must have a public keyrÁ   rÂ   rÃ   )r£   r4   r×   r�   rÙ   rÚ   rØ   r[   r   rÄ   rÅ   r¨   r   rÆ   r	   rÇ   rÈ   Úcreate_x509_certificaterÊ   s         r'   rË   zCertificateBuilder.sign7  sA  € ð ÔÐ%ÝÐEÑFÔFÐFàÔÐ$ÝÐEÑFÔFÐFàÔÐ&ÝÐFÑGÔGÐGàÔ!Ð)ÝÐNÑOÔOÐOàÔ Ð(ÝÐMÑNÔNÐNàÔÐ#ÝÐCÑDÔDÐDàÐ"Ý˜k­G¬K½Ô9IÐ+JÑKÔKð CÝÐ AÑBÔBÐBÝ˜k­3Ô+<Ñ=Ô=ð JÝÐ HÑIÔIÐIàÐ*Ý˜k­2Ô+EÑFÔFð ÝØGñô ð õ Ô0ØØØØØñ
ô 
ð 	
r(   )rÎ   r¡   r    r¡   rÏ   rÐ   r   rÑ   rÒ   rÓ   rÔ   rÓ   r1   r2   r   r    )r¤   r   r   rÍ   )rÞ   r   r   rÍ   )rç   rM   r   rÍ   )r=   r>   r   rÍ   )rª   r   r«   rY   r   rÍ   r"   )r¸   r   r¹   rº   r»   r¼   r¶   r½   r·   r¾   r   rõ   )r*   r+   r,   Ú__annotations__r$   rÎ   r    rÏ   r   rÒ   rÔ   r¯   rË   re   r(   r'   rÍ   rÍ   k  s  € € € € € € Ø/Ð/Ð/Ñ/ð $(Ø$(Ø7;Ø$(Ø59Ø48Ø57ð&ð &ð &ð &ð &ð&
ð 
ð 
ð 
ð$
ð 
ð 
ð 
ð$#
ð #
ð #
ð #
ðJ
ð 
ð 
ð 
ð6
ð 
ð 
ð 
ð:
ð 
ð 
ð 
ð>
ð 
ð 
ð 
ð4 #ð	0
ð >BØ+/ð0
ð 0
ð 0
ð 0
ð 0
ð 0
ð 0
ð 0
r(   rÍ   c                  ót   — e Zd ZU ded<   ded<   dddg g fd)d„Zd*d„Zd+d„Zd,d„Zd-d„Zd.d„Z		 d/dddœd0d(„Z
dS )1Ú CertificateRevocationListBuilderr2   r‘   úlist[RevokedCertificate]Ú_revoked_certificatesNrÎ   r¡   Úlast_updaterÓ   Únext_updater1   Úrevoked_certificatesc                óL   — || _         || _        || _        || _        || _        d S r"   )r×   Ú_last_updateÚ_next_updater‘   rü   )r%   rÎ   rý   rþ   r1   rÿ   s         r'   r$   z)CertificateRevocationListBuilder.__init__n  s2   € ð (ˆÔØ'ˆÔØ'ˆÔØ%ˆÔØ%9ˆÔ"Ð"Ð"r(   r   r   c                óÄ   — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          || j        | j        | j        | j	        ¦  «        S )Nr¦   rÜ   )
r[   r   r¨   r×   r4   rú   r  r  r‘   rü   )r%   rÎ   s     r'   rÎ   z,CertificateRevocationListBuilder.issuer_name|  sj   € õ ˜+¥tÑ,Ô,ð 	;ÝÐ9Ñ:Ô:Ð:ØÔÐ(ÝÐDÑEÔEÐEÝ/ØØÔØÔØÔØÔ&ñ
ô 
ð 	
r(   r>   c                ób  — t          |t          j        ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          |¦  «        }|t          k     rt	          d¦  «        ‚| j        �|| j        k    rt	          d¦  «        ‚t          | j	        || j        | j
        | j        ¦  «        S )Nrð   ú!Last update may only be set once.ú8The last update date must be on or after 1950 January 1.z9The last update date must be before the next update date.)r[   rC   r¨   r  r4   rG   rñ   r  rú   r×   r‘   rü   )r%   rý   s     r'   rý   z,CertificateRevocationListBuilder.last_update‹  sÊ   € õ ˜+¥xÔ'8Ñ9Ô9ð 	:ÝÐ8Ñ9Ô9Ð9ØÔÐ(ÝÐ@ÑAÔAÐAÝ0°Ñ=Ô=ˆØÕ+Ò+Ð+ÝØJñô ð ð ÔÐ(¨[¸4Ô;LÒ-LÐ-LÝØKñô ð õ 0ØÔØØÔØÔØÔ&ñ
ô 
ð 	
r(   c                ób  — t          |t          j        ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          |¦  «        }|t          k     rt	          d¦  «        ‚| j        �|| j        k     rt	          d¦  «        ‚t          | j	        | j        || j
        | j        ¦  «        S )Nrð   r  r  z8The next update date must be after the last update date.)r[   rC   r¨   r  r4   rG   rñ   r  rú   r×   r‘   rü   )r%   rþ   s     r'   rþ   z,CertificateRevocationListBuilder.next_update£  sÊ   € õ ˜+¥xÔ'8Ñ9Ô9ð 	:ÝÐ8Ñ9Ô9Ð9ØÔÐ(ÝÐ@ÑAÔAÐAÝ0°Ñ=Ô=ˆØÕ+Ò+Ð+ÝØJñô ð ð ÔÐ(¨[¸4Ô;LÒ-LÐ-LÝØJñô ð õ 0ØÔØÔØØÔØÔ&ñ
ô 
ð 	
r(   rª   r   r«   rY   c                ó   — t          |t          ¦  «        st          d¦  «        ‚t          |j        ||¦  «        }t          || j        ¦  «         t          | j        | j	        | j
        g | j        ¢|‘| j        ¦  «        S )zM
        Adds an X.509 extension to the certificate revocation list.
        r­   )r[   r   r¨   r   r   r6   r‘   rú   r×   r  r  rü   r®   s       r'   r¯   z.CertificateRevocationListBuilder.add_extension»  s†   € õ ˜&¥-Ñ0Ô0ð 	BÝÐ@ÑAÔAÐAå˜fœj¨(°FÑ;Ô;ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@Ý/ØÔØÔØÔØ*ˆdÔÐ* 	Ð*ØÔ&ñ
ô 
ð 	
r(   Úrevoked_certificater}   c                óª   — t          |t          ¦  «        st          d¦  «        ‚t          | j        | j        | j        | j        g | j        ¢|‘¦  «        S )z8
        Adds a revoked certificate to the CRL.
        z)Must be an instance of RevokedCertificate)	r[   r}   r¨   rú   r×   r  r  r‘   rü   )r%   r	  s     r'   Úadd_revoked_certificatez8CertificateRevocationListBuilder.add_revoked_certificateÎ  sc   € õ Ð-Õ/AÑBÔBð 	IÝÐGÑHÔHÐHå/ØÔØÔØÔØÔØ>ˆdÔ(Ð>Ð*=Ð>ñ
ô 
ð 	
r(   rµ   r¸   r   r¹   rº   r»   r¼   r¶   r½   r·   r¾   ÚCertificateRevocationListc               óÌ  — | j         €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚|�^t	          |t
          j        t
          j        f¦  «        st          d¦  «        ‚t	          |t          j
        ¦  «        st          d¦  «        ‚|�)t	          |t          j        ¦  «        st          d¦  «        ‚t          j        | ||||¦  «        S )NzA CRL must have an issuer namez"A CRL must have a last update timez"A CRL must have a next update timerÁ   rÂ   rÃ   )r×   r4   r  r  r[   r   rÄ   rÅ   r¨   r   rÆ   r	   rÇ   rÈ   Úcreate_x509_crlrÊ   s         r'   rË   z%CertificateRevocationListBuilder.signß  sù   € ð ÔÐ$ÝÐ=Ñ>Ô>Ð>àÔÐ$ÝÐAÑBÔBÐBàÔÐ$ÝÐAÑBÔBÐBàÐ"Ý˜k­G¬K½Ô9IÐ+JÑKÔKð CÝÐ AÑBÔBÐBÝ˜k­3Ô+<Ñ=Ô=ð JÝÐ HÑIÔIÐIàÐ*Ý˜k­2Ô+EÑFÔFð ÝØGñô ð õ Ô(ØØØØØñ
ô 
ð 	
r(   )
rÎ   r¡   rý   rÓ   rþ   rÓ   r1   r2   rÿ   rû   )rÎ   r   r   rú   )rý   r>   r   rú   )rþ   r>   r   rú   )rª   r   r«   rY   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ý   rþ   r¯   r  rË   re   r(   r'   rú   rú   j  sí   € € € € € € Ø/Ð/Ð/Ñ/Ø3Ð3Ð3Ñ3ð $(Ø04Ø04Ø57Ø9;ð:ð :ð :ð :ð :ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð0
ð 
ð 
ð 
ð0
ð 
ð 
ð 
ð&
ð 
ð 
ð 
ð* #ð	$
ð >BØ+/ð$
ð $
ð $
ð $
ð $
ð $
ð $
ð $
r(   rú   c                  ó@   — e Zd Zddg fdd„Zdd„Zdd„Zdd„Zddd„ZdS )ÚRevokedCertificateBuilderNr   rÑ   r‚   rÓ   r1   r2   c                ó0   — || _         || _        || _        d S r"   rŽ   r’   s       r'   r$   z"RevokedCertificateBuilder.__init__  r“   r(   rç   rM   r   c                ó$  — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚|dk    rt	          d¦  «        ‚|                     ¦   «         dk    rt	          d¦  «        ‚t          || j        | j        ¦  «        S )Nré   rê   r   z$The serial number should be positiverë   rì   )	r[   rM   r¨   r�   r4   rí   r  r�   r‘   rî   s     r'   r   z'RevokedCertificateBuilder.serial_number  s£   € Ý˜&¥#Ñ&Ô&ð 	GÝÐEÑFÔFÐFØÔÐ*ÝÐFÑGÔGÐGØ�QŠ;ˆ;ÝÐCÑDÔDÐDð ×ÒÑÔ #Ò%Ð%ÝØEñô ð õ )Ø�DÔ)¨4Ô+;ñ
ô 
ð 	
r(   r=   r>   c                ó  — t          |t          j        ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          |¦  «        }|t          k     rt	          d¦  «        ‚t          | j        || j	        ¦  «        S )Nrð   z)The revocation date may only be set once.z7The revocation date must be on or after 1950 January 1.)
r[   rC   r¨   r�   r4   rG   rñ   r  r�   r‘   rò   s     r'   r‚   z)RevokedCertificateBuilder.revocation_date#  s�   € õ ˜$¥Ô 1Ñ2Ô2ð 	:ÝÐ8Ñ9Ô9Ð9ØÔ Ð,ÝÐHÑIÔIÐIÝ)¨$Ñ/Ô/ˆØÕ$Ò$Ð$ÝØIñô ð õ )ØÔ  tÔ'7ñ
ô 
ð 	
r(   rª   r   r«   rY   c                óè   — t          |t          ¦  «        st          d¦  «        ‚t          |j        ||¦  «        }t          || j        ¦  «         t          | j        | j	        g | j        ¢|‘¦  «        S )Nr­   )
r[   r   r¨   r   r   r6   r‘   r  r�   r�   r®   s       r'   r¯   z'RevokedCertificateBuilder.add_extension3  sz   € õ ˜&¥-Ñ0Ô0ð 	BÝÐ@ÑAÔAÐAå˜fœj¨(°FÑ;Ô;ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@Ý(ØÔØÔ!Ø*ˆdÔÐ* 	Ð*ñ
ô 
ð 	
r(   r»   r¼   r}   c                ó´   — | j         €t          d¦  «        ‚| j        €t          d¦  «        ‚t          | j         | j        t	          | j        ¦  «        ¦  «        S )Nz/A revoked certificate must have a serial numberz1A revoked certificate must have a revocation date)r�   r4   r�   rŒ   r   r‘   )r%   r»   s     r'   ÚbuildzRevokedCertificateBuilder.buildA  sf   € ØÔÐ&ÝÐNÑOÔOÐOØÔ Ð(ÝØCñô ð õ &ØÔØÔ!Ý�tÔ'Ñ(Ô(ñ
ô 
ð 	
r(   )r   rÑ   r‚   rÓ   r1   r2   )rç   rM   r   r  )r=   r>   r   r  )rª   r   r«   rY   r   r  r"   )r»   r¼   r   r}   )r*   r+   r,   r$   r   r‚   r¯   r  re   r(   r'   r  r    s�   € € € € € ð %)Ø48Ø57ð	&ð &ð &ð &ð &ð
ð 
ð 
ð 
ð$
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
r(   r  rM   c                 ób   — t                                t          j        d¦  «        d¦  «        dz	  S )Né   Úbigr   )rM   Ú
from_bytesÚosÚurandomre   r(   r'   Úrandom_serial_numberr  O  s#   € Ý�>Š>�"œ* R™.œ.¨%Ñ0Ô0°AÑ5Ð5r(   )r/   r0   r1   r2   r   r    )r   r   r7   r8   r   r    )r=   r>   r   r>   rb   )NÚ
__future__r   rˆ   rC   r  Útypingr—   Úcollections.abcr   Úcryptographyr   Ú"cryptography.hazmat.bindings._rustr   rÈ   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr   r	   r
   r   r   r   r   r   Ú/cryptography.hazmat.primitives.asymmetric.typesr   r   Úcryptography.x509.extensionsr   r   r   r   Úcryptography.x509.namer   r   Úcryptography.x509.oidr   rñ   ÚUnionÚSHA224ÚSHA256ÚSHA384ÚSHA512ÚSHA3_224ÚSHA3_256ÚSHA3_384ÚSHA3_512Ú_AllowedHashTypesÚ	Exceptionr   r6   r<   rG   rI   rg   ÚEnumrt   ry   rõ   ÚABCMetar}   ÚregisterrŒ   r  r¿   Úload_pem_x509_certificateÚload_der_x509_certificateÚload_pem_x509_certificatesÚload_pem_x509_csrÚload_der_x509_csrÚload_pem_x509_crlÚload_der_x509_crlrŸ   rÍ   rú   r  r  re   r(   r'   ú<module>r>     sª  ðð
 #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2à&�XÔ& t¨Q°Ñ2Ô2Ð ð ”LØ
„MØ
„MØ
„MØ
„MØ
„OØ
„OØ
„OØ
„Oðô	Ð ðð ð ð ð ˜	ñ ô ð ðEð Eð Eð EðEð Eð Eð Eðð ð ð ð!8ð !8ð !8ð !8ð !8ñ !8ô !8ð !8ðHFð Fð Fð Fð Fñ Fô Fð Fð(ð ð ð ð ˆeŒjñ ô ð ð
-ð -ð -ð -ð -�Yñ -ô -ð -ð Ô#€ðð ð ð ð  3¤;ð ñ ô ð ð@ × Ò ˜IÔ8Ñ 9Ô 9Ð 9ð ð  ð  ð  ð  Ð/ñ  ô  ð  ðD &Ô?Ð Ø%Ô?Ð ð &Ô?Ð Ø%Ô?Ð à&ÔAÐ àÔ/Ð ØÔ/Ð àÔ/Ð ØÔ/Ð ðm
ð m
ð m
ð m
ð m
ñ m
ô m
ð m
ð`|
ð |
ð |
ð |
ð |
ñ |
ô |
ð |
ð~Y
ð Y
ð Y
ð Y
ð Y
ñ Y
ô Y
ð Y
ðxF
ð F
ð F
ð F
ð F
ñ F
ô F
ð F
ðR6ð 6ð 6ð 6ð 6ð 6r(   