Ë
    ùmxi]m  ã            	      ó8  — 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jN                  ejP                  ejR                  ejT                  ejV                  ejX                  ejZ                  ej\                  ej^                  f   Z0 G d„ de1«      Z2	 	 	 	 	 	 d)d„Z3	 	 	 	 	 	 d*d„Z4d+d„Z5 G d„ d«      Z6 G d„ d«      Z7 G d„ de
jp                  «      Z9 G d„ de1«      Z:ejv                  Z; G d„ dejx                  ¬«      Z=e=j}                  ejz                  «        G d„ de=«      Z?ej€                  Z@ej‚                  ZAej„                  ZBej†                  ZCejˆ                  ZDejŠ                  ZEejŒ                  ZFejŽ                  ZGej�                  ZH G d „ d!«      ZI G d"„ d#«      ZJ G d$„ d%«      ZK G d&„ d'«      ZLd,d(„ZMy)-é    )Ú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 )ÚAttributeNotFoundc                ó2   •— t         ‰| �  |«       || _        y ©N)ÚsuperÚ__init__Úoid)ÚselfÚmsgr    Ú	__class__s      €úM/home/htdocs/ttos/venv/lib/python3.12/site-packages/cryptography/x509/base.pyr   zAttributeNotFound.__init__9   s   ø€ Ü‰Ñ˜ÔØˆ�ó    )r"   Ústrr    r   ÚreturnÚNone©Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__©r#   s   @r$   r   r   8   s   ø„ ÷ñ r%   r   c                óZ   — |D ]&  }|j                   | j                   k(  sŒt        d«      ‚ y )Nz$This extension has already been set.)r    Ú
ValueError)Ú	extensionÚ
extensionsÚes      r$   Ú_reject_duplicate_extensionr4   >   s1   € ð
 ò EˆØ�5‰5�I—M‘MÓ!ÜÐCÓDÐDñEr%   c                ó:   — |D ]  \  }}}|| k(  sŒt        d«      ‚ y )Nz$This attribute has already been set.)r0   )r    Ú
attributesÚattr_oidÚ_s       r$   Ú_reject_duplicate_attributer9   H   s.   € ð
 %ò E‰ˆ�!�QØ�s‹?ÜÐCÓDÐDñEr%   c                ó˜   — | j                   �=| j                  «       }|r|nt        j                  «       }| 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)r<   Ú	utcoffsetÚdatetimeÚ	timedeltaÚreplace)ÚtimeÚoffsets     r$   Ú_convert_to_naive_utc_timerC   R   sG   € ð ‡{�{ÐØ—‘Ó!ˆÙ!‘¤x×'9Ñ'9Ó';ˆØ�|‰| 4ˆ|Ó(¨6Ñ1Ð1àˆr%   c                  óŠ   — 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y)Ú	Attributec                ó.   — || _         || _        || _        y r   )Ú_oidÚ_valueÚ_type)r!   r    ÚvaluerI   s       r$   r   zAttribute.__init__a   s   € ð ˆŒ	ØˆŒØˆ�
r%   c                ó   — | j                   S r   )rG   ©r!   s    r$   r    zAttribute.oidk   s   € à�y‰yÐr%   c                ó   — | j                   S r   )rH   rL   s    r$   rJ   zAttribute.valueo   s   € à�{‰{Ðr%   c                ó<   — d| j                   › d| j                  ›d�S )Nz<Attribute(oid=z, value=ú)>)r    rJ   rL   s    r$   Ú__repr__zAttribute.__repr__s   s   € Ø  §¡ 
¨(°4·:±:°.ÀÐCÐCr%   c                óÌ   — t        |t        «      st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r   )Ú
isinstancerE   ÚNotImplementedr    rJ   rI   )r!   Úothers     r$   Ú__eq__zAttribute.__eq__v   sS   € Ü˜%¤Ô+Ü!Ð!ð �H‰H˜Ÿ	™	Ñ!ò *Ø—
‘
˜eŸk™kÑ)ò*à—
‘
˜eŸk™kÑ)ð	
r%   c                óZ   — t        | j                  | j                  | j                  f«      S r   )Úhashr    rJ   rI   rL   s    r$   Ú__hash__zAttribute.__hash__€   s    € Ü�T—X‘X˜tŸz™z¨4¯:©:Ð6Ó7Ð7r%   N)r    r   rJ   ÚbytesrI   Úintr'   r(   )r'   r   )r'   rY   ©r'   r&   )rT   Úobjectr'   Úbool©r'   rZ   )r*   r+   r,   r   Ú
UTF8StringrJ   r   Úpropertyr    rP   rU   rX   © r%   r$   rE   rE   `   sv   „ ð
 ×)Ñ)×/Ñ/ð	àðð ðð ð	ð
 
óð òó ðð òó ðóDó
ô8r%   rE   c                  óD   — e Zd Z	 	 	 	 dd„Z ed«      \  ZZZdd„Zdd„Z	y)	Ú
Attributesc                ó$   — t        |«      | _        y r   )ÚlistÚ_attributes)r!   r6   s     r$   r   zAttributes.__init__…   s   € ô   
Ó+ˆÕr%   rf   c                ó"   — d| j                   › d�S )Nz<Attributes(rO   )rf   rL   s    r$   rP   zAttributes.__repr__�   s   € Ø˜d×.Ñ.Ð/¨rÐ2Ð2r%   c                óV   — | D ]  }|j                   |k(  sŒ|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�   s:   € Øò 	ˆDØ�x‰x˜3‹Ø’ð	ô   # c UÐ*>Ð ?ÀÓEÐEr%   N)r6   zIterable[Attribute]r'   r(   r[   )r    r   r'   rE   )
r*   r+   r,   r   r   Ú__len__Ú__iter__Ú__getitem__rP   rj   ra   r%   r$   rc   rc   „   s7   „ ð,à'ð,ð 
ó,ñ &<¸MÓ%JÑ"€GˆX�{ó3ôFr%   rc   c                  ó   — e Zd ZdZdZy)ÚVersionr   é   N)r*   r+   r,   Úv1Úv3ra   r%   r$   ro   ro   ˜   s   „ Ø	
€BØ	
�Br%   ro   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚInvalidVersionc                ó2   •— t         ‰| �  |«       || _        y r   )r   r   Úparsed_version)r!   r"   rv   r#   s      €r$   r   zInvalidVersion.__init__ž   s   ø€ Ü‰Ñ˜ÔØ,ˆÕr%   )r"   r&   rv   rZ   r'   r(   r)   r.   s   @r$   rt   rt   �   s   ø„ ÷-ñ -r%   rt   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	y)	ÚRevokedCertificatec                 ó   — y)zG
        Returns the serial number of the revoked certificate.
        Nra   rL   s    r$   Úserial_numberz RevokedCertificate.serial_number§   ó   � r%   c                 ó   — y)zH
        Returns the date of when this certificate was revoked.
        Nra   rL   s    r$   Úrevocation_datez"RevokedCertificate.revocation_date®   r{   r%   c                 ó   — y)zl
        Returns the date of when this certificate was revoked as a non-naive
        UTC datetime.
        Nra   rL   s    r$   Úrevocation_date_utcz&RevokedCertificate.revocation_date_utcµ   r{   r%   c                 ó   — y)zW
        Returns an Extensions object containing a list of Revoked extensions.
        Nra   rL   s    r$   r2   zRevokedCertificate.extensions½   r{   r%   Nr^   ©r'   údatetime.datetime©r'   r   )
r*   r+   r,   r`   ÚabcÚabstractmethodrz   r}   r   r2   ra   r%   r$   rx   rx   ¦   sˆ   „ ØØ×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð Ø×Ñòó ó ñr%   rx   )Ú	metaclassc                  óh   — e Zd Z	 	 	 	 	 	 dd„Zedd„«       Zed	d„«       Zed	d„«       Zed
d„«       Zy)Ú_RawRevokedCertificatec                ó.   — || _         || _        || _        y r   ©Ú_serial_numberÚ_revocation_dateÚ_extensions©r!   rz   r}   r2   s       r$   r   z_RawRevokedCertificate.__init__Ê   ó   € ð ,ˆÔØ /ˆÔØ%ˆÕr%   c                ó   — | j                   S r   )r‹   rL   s    r$   rz   z$_RawRevokedCertificate.serial_numberÔ   s   € à×"Ñ"Ð"r%   c                óf   — 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.rp   )Ú
stacklevel)ÚwarningsÚwarnr   ÚDeprecatedIn42rŒ   rL   s    r$   r}   z&_RawRevokedCertificate.revocation_dateØ   s.   € ä�‰ð@ä× Ñ Øõ		
ð ×$Ñ$Ð$r%   c                ój   — | j                   j                  t        j                  j                  ¬«      S )Nr;   )rŒ   r@   r>   ÚtimezoneÚutcrL   s    r$   r   z*_RawRevokedCertificate.revocation_date_utcâ   s(   € à×$Ñ$×,Ñ,´H×4EÑ4E×4IÑ4IÐ,ÓJÐJr%   c                ó   — | j                   S r   )r�   rL   s    r$   r2   z!_RawRevokedCertificate.extensionsæ   s   € à×ÑÐr%   N)rz   rZ   r}   r‚   r2   r   r^   r�   rƒ   )	r*   r+   r,   r   r`   rz   r}   r   r2   ra   r%   r$   rˆ   rˆ   É   su   „ ð&àð&ð +ð&ð ó	&ð ò#ó ð#ð ò%ó ð%ð òKó ðKð ò ó ñ r%   rˆ   c                  óˆ   — 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y)Ú CertificateSigningRequestBuilderNc                ó.   — || _         || _        || _        y)zB
        Creates an empty X.509 certificate request (v1).
        N)Ú_subject_namer�   rf   )r!   Úsubject_namer2   r6   s       r$   r   z)CertificateSigningRequestBuilder.__init__ü   s   € ð *ˆÔØ%ˆÔØ%ˆÕ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.ú&The subject name may only be set once.)rR   r   Ú	TypeErrorr�   r0   r›   r�   rf   ©r!   Únames     r$   rž   z-CertificateSigningRequestBuilder.subject_name	  sR   € ô ˜$¤Ô%ÜÐ9Ó:Ð:Ø×ÑÐ)ÜÐEÓFÐFÜ/Ø�$×"Ñ" D×$4Ñ$4ó
ð 	
r%   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)
rR   r   r¢   r   r    r4   r�   r›   r�   rf   ©r!   ÚextvalÚcriticalr1   s       r$   Úadd_extensionz.CertificateSigningRequestBuilder.add_extension  sn   € ô ˜&¤-Ô0ÜÐ@ÓAÐAä˜fŸj™j¨(°FÓ;ˆ	Ü# I¨t×/?Ñ/?Ô@ä/Ø×ÑØ*ˆd×ÑÐ* 	Ð*Ø×Ñó
ð 	
r%   )Ú_tagc               óZ  — 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)rR   r   r¢   rY   r   r9   rf   rJ   r›   r�   r�   )r!   r    rJ   r«   Útags        r$   Úadd_attributez.CertificateSigningRequestBuilder.add_attribute'  s©   € ô ˜#Ô/Ô0ÜÐ=Ó>Ð>ä˜%¤Ô'ÜÐ1Ó2Ð2àÐ¤J¨t´YÔ$?ÜÐ3Ó4Ð4ä# C¨×)9Ñ)9Ô:àÐØ—*‘*‰CàˆCä/Ø×ÑØ×ÑØ2ˆd×ÑÐ2  e¨SÐ 1Ð2ó
ð 	
r%   ©Úrsa_paddingÚecdsa_deterministicc               óh  — | j                   €t        d«      ‚|�Zt        |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.
        z/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�   r0   rR   r   ÚPSSÚPKCS1v15r¢   r   ÚRSAPrivateKeyr	   ÚEllipticCurvePrivateKeyÚ	rust_x509Úcreate_x509_csr©r!   Úprivate_keyÚ	algorithmÚbackendr°   r±   s         r$   Úsignz%CertificateSigningRequestBuilder.signG  s­   € ð ×ÑÐ%ÜÐNÓOÐOàÐ"Ü˜k¬G¯K©K¼×9IÑ9IÐ+JÔKÜÐ AÓBÐBÜ˜k¬3×+<Ñ+<Ô=ÜÐ HÓIÐIàÐ*Ü˜k¬2×+EÑ+EÔFÜØGóð ô ×(Ñ(ØØØØØó
ð 	
r%   )rž   úName | Noner2   úlist[Extension[ExtensionType]]r6   ú0list[tuple[ObjectIdentifier, bytes, int | None]])r¤   r   r'   r›   )r¨   r   r©   r]   r'   r›   )r    r   rJ   rY   r«   z_ASN1Type | Noner'   r›   r   )r½   r   r¾   ú_AllowedHashTypes | Noner¿   ú
typing.Anyr°   ú%padding.PSS | padding.PKCS1v15 | Noner±   úbool | Noner'   ÚCertificateSigningRequest)r*   r+   r,   r   rž   rª   r®   rÀ   ra   r%   r$   r›   r›   û   sÔ   „ ð %)Ø57ØGIð	&à!ð&ð 3ð&ð Eó	&ó

ð
Ø#ð
Ø/3ð
à	)ó
ð. "&ñ
àð
ð ð
ð
 ð
ð 
*ó
ðH #ð	!
ð >BØ+/ñ!
à5ð!
ð ,ð!
ð ð	!
ð ;ð!
ð )ð!
ð 
#ô!
r%   r›   c                  óÄ   — e Zd ZU ded<   ddddddg f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Z	 	 	 	 dd„Zdd„Zdd	„Z	dd
„Z
	 	 	 	 	 	 dd„Z	 ddddœ	 	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚCertificateBuilderrÂ   r�   Nc                ó�   — t         j                  | _        || _        || _        || _        || _        || _        || _        || _	        y r   )
ro   rr   Ú_versionÚ_issuer_namer�   Ú_public_keyr‹   Ú_not_valid_beforeÚ_not_valid_afterr�   )r!   Úissuer_namerž   Ú
public_keyrz   Únot_valid_beforeÚnot_valid_afterr2   s           r$   r   zCertificateBuilder.__init__n  sG   € ô  Ÿ
™
ˆŒØ'ˆÔØ)ˆÔØ%ˆÔØ+ˆÔØ!1ˆÔØ /ˆÔØ%ˆÕ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    ú%The issuer name may only be set once.)rR   r   r¢   rÍ   r0   rÊ   r�   rÎ   r‹   rÏ   rÐ   r�   r£   s     r$   rÑ   zCertificateBuilder.issuer_name�  sx   € ô ˜$¤Ô%ÜÐ9Ó:Ð:Ø×ÑÐ(ÜÐDÓ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    r¡   )rR   r   r¢   r�   r0   rÊ   rÍ   rÎ   r‹   rÏ   rÐ   r�   r£   s     r$   rž   zCertificateBuilder.subject_name“  sx   € ô ˜$¤Ô%ÜÐ9Ó:Ð:Ø×ÑÐ)ÜÐEÓFÐFÜ!Ø×ÑØØ×ÑØ×ÑØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r%   c           
     óÊ  — 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.                  | j0                  «      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.z$The public key may only be set once.)rR   r   ÚDSAPublicKeyr   ÚRSAPublicKeyr	   ÚEllipticCurvePublicKeyr   ÚEd25519PublicKeyr
   ÚEd448PublicKeyr   ÚX25519PublicKeyr   ÚX448PublicKeyr¢   rÎ   r0   rÊ   rÍ   r�   r‹   rÏ   rÐ   r�   )r!   Úkeys     r$   rÒ   zCertificateBuilder.public_key¥  sÇ   € ô Øä× Ñ Ü× Ñ Ü×)Ñ)Ü×(Ñ(Ü×$Ñ$Ü×&Ñ&Ü×"Ñ"ðô
ô ð!óð ð ×ÑÐ'ÜÐCÓDÐDÜ!Ø×ÑØ×ÑØØ×ÑØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r%   c           	     ó\  — t        |t        «      st        d«      ‚| j                  �t	        d«      ‚|dk  rt	        d«      ‚|j                  «       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.ú'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.)rR   rZ   r¢   r‹   r0   Ú
bit_lengthrÊ   rÍ   r�   rÎ   rÏ   rÐ   r�   ©r!   Únumbers     r$   rz   z CertificateBuilder.serial_numberÊ  s°   € ô ˜&¤#Ô&ÜÐEÓFÐFØ×ÑÐ*ÜÐFÓGÐGØ�QŠ;ÜÐDÓEÐEð ×ÑÓ #Ò%ÜØEóð ô "Ø×ÑØ×ÑØ×ÑØØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r%   c           	     óž  — t        |t        j                  «      st        d«      ‚| j                  �t	        d«      ‚t        |«      }|t        k  rt	        d«      ‚| j                  �|| j                  kD  rt	        d«      ‚t        | j                  | j                  | j                  | j                  || j                  | j                  «      S )z7
        Sets the certificate activation time.
        úExpecting datetime object.z*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.)rR   r>   r¢   rÏ   r0   rC   Ú_EARLIEST_UTC_TIMErÐ   rÊ   rÍ   r�   rÎ   r‹   r�   ©r!   rA   s     r$   rÓ   z#CertificateBuilder.not_valid_beforeå  sÒ   € ô ˜$¤× 1Ñ 1Ô2ÜÐ8Ó9Ð9Ø×!Ñ!Ð-ÜÐIÓJÐJÜ)¨$Ó/ˆØÔ$Ò$Üð$óð ð × Ñ Ð,°¸×8MÑ8MÒ1MÜðóð ô "Ø×ÑØ×ÑØ×ÑØ×ÑØØ×!Ñ!Ø×Ñó
ð 	
r%   c           	     óž  — 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ê   z)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.)rR   r>   r¢   rÐ   r0   rC   rë   rÏ   rÊ   rÍ   r�   rÎ   r‹   r�   rì   s     r$   rÔ   z"CertificateBuilder.not_valid_after  sÑ   € ô ˜$¤× 1Ñ 1Ô2ÜÐ8Ó9Ð9Ø× Ñ Ð,ÜÐHÓIÐIÜ)¨$Ó/ˆØÔ$Ò$ÜØNóð ð ×"Ñ"Ð.Ø�t×-Ñ-Ò-äðóð ô "Ø×ÑØ×ÑØ×ÑØ×ÑØ×"Ñ"ØØ×Ñó
ð 	
r%   c           
     óH  — 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¦   )rR   r   r¢   r   r    r4   r�   rÊ   rÍ   r�   rÎ   r‹   rÏ   rÐ   r§   s       r$   rª   z CertificateBuilder.add_extension!  s’   € ô ˜&¤-Ô0ÜÐ@ÓAÐAä˜fŸj™j¨(°FÓ;ˆ	Ü# I¨t×/?Ñ/?Ô@ä!Ø×ÑØ×ÑØ×ÑØ×ÑØ×"Ñ"Ø×!Ñ!Ø*ˆd×ÑÐ* 	Ð*ó
ð 	
r%   r¯   c               óN  — | j                   €t        d«      ‚| j                  €t        d«      ‚| j                  €t        d«      ‚| j                  €t        d«      ‚| j
                  €t        d«      ‚| j                  €t        d«      ‚|�Zt        |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.
        z&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�   r0   rÍ   r‹   rÏ   rÐ   rÎ   rR   r   r¶   r·   r¢   r   r¸   r	   r¹   rº   Úcreate_x509_certificater¼   s         r$   rÀ   zCertificateBuilder.sign7  s%  € ð ×ÑÐ%ÜÐEÓFÐFà×ÑÐ$ÜÐEÓFÐFà×ÑÐ&ÜÐFÓGÐGà×!Ñ!Ð)ÜÐNÓOÐOà× Ñ Ð(ÜÐMÓNÐNà×ÑÐ#ÜÐCÓDÐDàÐ"Ü˜k¬G¯K©K¼×9IÑ9IÐ+JÔKÜÐ AÓBÐBÜ˜k¬3×+<Ñ+<Ô=ÜÐ HÓIÐIàÐ*Ü˜k¬2×+EÑ+EÔFÜØGóð ô ×0Ñ0ØØØØØó
ð 	
r%   )rÑ   rÁ   rž   rÁ   rÒ   z CertificatePublicKeyTypes | Nonerz   ú
int | NonerÓ   údatetime.datetime | NonerÔ   rò   r2   rÂ   r'   r(   )r¤   r   r'   rÊ   )rà   r   r'   rÊ   )rè   rZ   r'   rÊ   )rA   r‚   r'   rÊ   )r¨   r   r©   r]   r'   rÊ   r   )r½   r   r¾   rÄ   r¿   rÅ   r°   rÆ   r±   rÇ   r'   ÚCertificate)r*   r+   r,   Ú__annotations__r   rÑ   rž   rÒ   rz   rÓ   rÔ   rª   rÀ   ra   r%   r$   rÊ   rÊ   k  s  … Ø/Ó/ð $(Ø$(Ø7;Ø$(Ø59Ø48Ø57ð&à ð&ð "ð&ð 5ð	&ð
 "ð&ð 3ð&ð 2ð&ð 3ð&ð 
ó&ó&
ó$
ð$#
à&ð#
ð 
ó#
óJ
ó6
ó:
ð>
Ø#ð
Ø/3ð
à	ó
ð4 #ð	0
ð >BØ+/ñ0
à5ð0
ð ,ð0
ð ð	0
ð ;ð0
ð )ð0
ð 
ô0
r%   rÊ   c                  óÆ   — 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œ	 	 	 	 	 	 	 	 	 	 	 dd„Z
y)Ú CertificateRevocationListBuilderrÂ   r�   úlist[RevokedCertificate]Ú_revoked_certificatesNc                óJ   — || _         || _        || _        || _        || _        y r   )rÍ   Ú_last_updateÚ_next_updater�   rø   )r!   rÑ   Úlast_updateÚnext_updater2   Úrevoked_certificatess         r$   r   z)CertificateRevocationListBuilder.__init__n  s,   € ð (ˆÔØ'ˆÔØ'ˆÔØ%ˆÔØ%9ˆÕ"r%   c                óÔ   — t        |t        «      st        d«      ‚| j                  �t	        d«      ‚t        || j                  | j                  | j                  | j                  «      S )Nr    rÖ   )
rR   r   r¢   rÍ   r0   rö   rú   rû   r�   rø   )r!   rÑ   s     r$   rÑ   z,CertificateRevocationListBuilder.issuer_name|  sf   € ô ˜+¤tÔ,ÜÐ9Ó:Ð:Ø×ÑÐ(ÜÐDÓEÐEÜ/ØØ×ÑØ×ÑØ×ÑØ×&Ñ&ó
ð 	
r%   c                ór  — t        |t        j                  «      st        d«      ‚| j                  �t	        d«      ‚t        |«      }|t        k  rt	        d«      ‚| j                  �|| j                  kD  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.)rR   r>   r¢   rú   r0   rC   rë   rû   rö   rÍ   r�   rø   )r!   rü   s     r$   rü   z,CertificateRevocationListBuilder.last_update‹  s¼   € ô ˜+¤x×'8Ñ'8Ô9ÜÐ8Ó9Ð9Ø×ÑÐ(ÜÐ@ÓAÐAÜ0°Ó=ˆØÔ+Ò+ÜØJóð ð ×ÑÐ(¨[¸4×;LÑ;LÒ-LÜØKóð ô 0Ø×ÑØØ×ÑØ×ÑØ×&Ñ&ó
ð 	
r%   c                ór  — 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.)rR   r>   r¢   rû   r0   rC   rë   rú   rö   rÍ   r�   rø   )r!   rý   s     r$   rý   z,CertificateRevocationListBuilder.next_update£  s¼   € ô ˜+¤x×'8Ñ'8Ô9ÜÐ8Ó9Ð9Ø×ÑÐ(ÜÐ@ÓAÐAÜ0°Ó=ˆØÔ+Ò+ÜØJóð ð ×ÑÐ(¨[¸4×;LÑ;LÒ-LÜØJóð ô 0Ø×ÑØ×ÑØØ×ÑØ×&Ñ&ó
ð 	
r%   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¦   )rR   r   r¢   r   r    r4   r�   rö   rÍ   rú   rû   rø   r§   s       r$   rª   z.CertificateRevocationListBuilder.add_extension»  s€   € ô ˜&¤-Ô0ÜÐ@ÓAÐAä˜fŸj™j¨(°FÓ;ˆ	Ü# I¨t×/?Ñ/?Ô@Ü/Ø×ÑØ×ÑØ×ÑØ*ˆd×ÑÐ* 	Ð*Ø×&Ñ&ó
ð 	
r%   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)	rR   rx   r¢   rö   rÍ   rú   rû   r�   rø   )r!   Úrevoked_certificates     r$   Úadd_revoked_certificatez8CertificateRevocationListBuilder.add_revoked_certificateÎ  sa   € ô Ð-Ô/AÔBÜÐGÓHÐHä/Ø×ÑØ×ÑØ×ÑØ×ÑØ>ˆd×(Ñ(Ð>Ð*=Ð>ó
ð 	
r%   r¯   c               óÄ  — | j                   €t        d«      ‚| j                  €t        d«      ‚| j                  €t        d«      ‚|�Zt	        |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Í   r0   rú   rû   rR   r   r¶   r·   r¢   r   r¸   r	   r¹   rº   Úcreate_x509_crlr¼   s         r$   rÀ   z%CertificateRevocationListBuilder.signß  sÝ   € ð ×ÑÐ$ÜÐ=Ó>Ð>à×ÑÐ$ÜÐAÓBÐBà×ÑÐ$ÜÐAÓBÐBàÐ"Ü˜k¬G¯K©K¼×9IÑ9IÐ+JÔKÜÐ AÓBÐBÜ˜k¬3×+<Ñ+<Ô=ÜÐ HÓIÐIàÐ*Ü˜k¬2×+EÑ+EÔFÜØGóð ô ×(Ñ(ØØØØØó
ð 	
r%   )
rÑ   rÁ   rü   rò   rý   rò   r2   rÂ   rþ   r÷   )rÑ   r   r'   rö   )rü   r‚   r'   rö   )rý   r‚   r'   rö   )r¨   r   r©   r]   r'   rö   )r  rx   r'   rö   r   )r½   r   r¾   rÄ   r¿   rÅ   r°   rÆ   r±   rÇ   r'   ÚCertificateRevocationList)r*   r+   r,   rô   r   rÑ   rü   rý   rª   r  rÀ   ra   r%   r$   rö   rö   j  s  … Ø/Ó/Ø3Ó3ð $(Ø04Ø04Ø57Ø9;ð:à ð:ð .ð:ð .ð	:ð
 3ð:ð 7ó:ð
Øð
à	)ó
ð
Ø,ð
à	)ó
ð0
Ø,ð
à	)ó
ð0
Ø#ð
Ø/3ð
à	)ó
ð&
Ø#5ð
à	)ó
ð* #ð	$
ð >BØ+/ñ$
à5ð$
ð ,ð$
ð ð	$
ð ;ð$
ð )ð$
ð 
#ô$
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y)ÚRevokedCertificateBuilderNc                ó.   — || _         || _        || _        y r   rŠ   rŽ   s       r$   r   z"RevokedCertificateBuilder.__init__  r�   r%   c                ó  — t        |t        «      st        d«      ‚| j                  �t	        d«      ‚|dk  rt	        d«      ‚|j                  «       dk\  rt	        d«      ‚t        || j                  | j                  «      S )Nrâ   rã   r   z$The serial number should be positiverä   rå   )	rR   rZ   r¢   r‹   r0   ræ   r  rŒ   r�   rç   s     r$   rz   z'RevokedCertificateBuilder.serial_number  sˆ   € Ü˜&¤#Ô&ÜÐEÓFÐFØ×ÑÐ*ÜÐFÓGÐGØ�QŠ;ÜÐCÓDÐDð ×ÑÓ #Ò%ÜØEóð ô )Ø�D×)Ñ)¨4×+;Ñ+;ó
ð 	
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.)
rR   r>   r¢   rŒ   r0   rC   rë   r  r‹   r�   rì   s     r$   r}   z)RevokedCertificateBuilder.revocation_date#  s}   € ô ˜$¤× 1Ñ 1Ô2ÜÐ8Ó9Ð9Ø× Ñ Ð,ÜÐHÓIÐIÜ)¨$Ó/ˆØÔ$Ò$ÜØIóð ô )Ø×Ñ  t×'7Ñ'7ó
ð 	
r%   c                óð   — t        |t        «      st        d«      ‚t        |j                  ||«      }t        || j                  «       t        | j                  | j                  g | j                  ¢|‘«      S )Nr¦   )
rR   r   r¢   r   r    r4   r�   r  r‹   rŒ   r§   s       r$   rª   z'RevokedCertificateBuilder.add_extension3  sn   € ô ˜&¤-Ô0ÜÐ@ÓAÐAä˜fŸj™j¨(°FÓ;ˆ	Ü# I¨t×/?Ñ/?Ô@Ü(Ø×ÑØ×!Ñ!Ø*ˆd×ÑÐ* 	Ð*ó
ð 	
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‹   r0   rŒ   rˆ   r   r�   )r!   r¿   s     r$   ÚbuildzRevokedCertificateBuilder.buildA  se   € Ø×ÑÐ&ÜÐNÓOÐOØ× Ñ Ð(ÜØCóð ô &Ø×ÑØ×!Ñ!Ü�t×'Ñ'Ó(ó
ð 	
r%   )rz   rñ   r}   rò   r2   rÂ   )rè   rZ   r'   r  )rA   r‚   r'   r  )r¨   r   r©   r]   r'   r  r   )r¿   rÅ   r'   rx   )r*   r+   r,   r   rz   r}   rª   r  ra   r%   r$   r  r    sj   „ ð %)Ø48Ø57ð	&à!ð&ð 2ð&ð 3ó	&ó
ð$
Ø%ð
à	"ó
ð 
Ø#ð
Ø/3ð
à	"ó
õ
r%   r  c                 óZ   — t         j                  t        j                  d«      d«      dz	  S )Né   Úbigr   )rZ   Ú
from_bytesÚosÚurandomra   r%   r$   Úrandom_serial_numberr  O  s    € Ü�>‰>œ"Ÿ*™* R›.¨%Ó0°AÑ5Ð5r%   )r1   zExtension[ExtensionType]r2   rÂ   r'   r(   )r    r   r6   rÃ   r'   r(   )rA   r‚   r'   r‚   r^   )NÚ
__future__r   r„   r>   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   r4   r9   rC   rE   rc   ÚEnumro   rt   ró   ÚABCMetarx   Ú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  ra   r%   r$   ú<module>r:     s%  ðõ
 #ã 
Û Û 	Û Û Ý $å Ý @Ý 1÷	÷ 	ó 	÷÷ó ÷ 3Ý 2à&�X×&Ñ& t¨Q°Ó2Ð ð —L‘LØ
‡M�MØ
‡M�MØ
‡M�MØ
‡M�MØ
‡O�OØ
‡O�OØ
‡O�OØ
‡O�Oðñ	Ð ô˜	ô ðEØ'ðEà.ðEð 
óEðEØ	ðEà@ðEð 
óEó÷!8ñ !8÷HFñ Fô(ˆe�j‰jô ô
-�Yô -ð ×#Ñ#€ô 3§;¡;õ ð@ × Ñ ˜I×8Ñ8Ô 9ô Ð/ô  ðD &×?Ñ?Ð Ø%×?Ñ?Ð ð &×?Ñ?Ð Ø%×?Ñ?Ð à&×AÑAÐ à×/Ñ/Ð Ø×/Ñ/Ð à×/Ñ/Ð Ø×/Ñ/Ð ÷m
ñ m
÷`|
ñ |
÷~Y
ñ Y
÷xF
ñ F
ôR6r%   