Ë
    ±éägi  ã            	      ó,  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z d dlmZ d dlmZmZ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jJ                  ejL                  ejN                  ejP                  ejR                  ejT                  ejV                  ejX                  ejZ                  f   Z. G d„ de/«      Z0	 	 	 	 	 	 d(d„Z1	 	 	 	 	 	 d)d„Z2d*d„Z3 G d„ d«      Z4 G d„ d«      Z5 G d„ dejl                  «      Z7 G d„ de/«      Z8ejr                  Z9 G d„ dejt                  ¬«      Z;e;jy                  ejv                  «        G d„ de;«      Z=ej|                  Z>ej~                  Z?ej€                  Z@ej‚                  ZAej„                  ZBej†                  ZCejˆ                  ZDejŠ                  ZEejŒ                  ZF G d„ d «      ZG G d!„ d"«      ZH G d#„ d$«      ZI G d%„ d&«      ZJd+d'„ZKy),é    )ÚannotationsN)Ú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      €úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/cryptography/x509/base.pyr   zAttributeNotFound.__init__8   s   ø€ Ü‰Ñ˜ÔØˆ�ó    )r!   Ústrr   r   ÚreturnÚNone©Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__©r"   s   @r#   r   r   7   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_extensionr3   =   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.)r/   )r   Ú
attributesÚattr_oidÚ_s       r#   Ú_reject_duplicate_attributer8   G   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_timerB   Q   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   ÚvaluerH   s       r#   r   zAttribute.__init__`   s   € ð ˆŒ	ØˆŒØˆ�
r$   c                ó   — | j                   S r   )rF   ©r    s    r#   r   zAttribute.oidj   s   € à�y‰yÐr$   c                ó   — | j                   S r   )rG   rK   s    r#   rI   zAttribute.valuen   s   € à�{‰{Ðr$   c                ó<   — d| j                   › d| j                  ›d�S )Nz<Attribute(oid=z, value=ú)>)r   rI   rK   s    r#   Ú__repr__zAttribute.__repr__r   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   )Ú
isinstancerD   ÚNotImplementedr   rI   rH   )r    Úothers     r#   Ú__eq__zAttribute.__eq__u   sS   € Ü˜%¤Ô+Ü!Ð!ð �H‰H˜Ÿ	™	Ñ!ò *Ø—
‘
˜eŸk™kÑ)ò*à—
‘
˜eŸk™kÑ)ð	
r$   c                óZ   — t        | j                  | j                  | j                  f«      S r   )Úhashr   rI   rH   rK   s    r#   Ú__hash__zAttribute.__hash__   s    € Ü�T—X‘X˜tŸz™z¨4¯:©:Ð6Ó7Ð7r$   N)r   r   rI   ÚbytesrH   Úintr&   r'   )r&   r   )r&   rX   ©r&   r%   )rS   Úobjectr&   Úbool©r&   rY   )r)   r*   r+   r   Ú
UTF8StringrI   r   Úpropertyr   rO   rT   rW   © r$   r#   rD   rD   _   sv   „ ð
 ×)Ñ)×/Ñ/ð	àðð ðð ð	ð
 
óð òó ðð òó ðóDó
ô8r$   rD   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    r5   s     r#   r   zAttributes.__init__„   s   € ô   
Ó+ˆÕr$   re   c                ó"   — d| j                   › d�S )Nz<Attributes(rN   )re   rK   s    r#   rO   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)r5   ztyping.Iterable[Attribute]r&   r'   rZ   )r   r   r&   rD   )
r)   r*   r+   r   r   Ú__len__Ú__iter__Ú__getitem__rO   ri   r`   r$   r#   rb   rb   ƒ   s7   „ ð,à.ð,ð 
ó,ñ &<¸MÓ%JÑ"€GˆX�{ó3ôFr$   rb   c                  ó   — e Zd ZdZdZy)ÚVersionr   é   N)r)   r*   r+   Úv1Úv3r`   r$   r#   rn   rn   —   s   „ Ø	
€BØ	
�Br$   rn   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚInvalidVersionc                ó2   •— t         ‰| �  |«       || _        y r   )r   r   Úparsed_version)r    r!   ru   r"   s      €r#   r   zInvalidVersion.__init__�   s   ø€ Ü‰Ñ˜ÔØ,ˆÕr$   )r!   r%   ru   rY   r&   r'   r(   r-   s   @r#   rs   rs   œ   s   ø„ ÷-ñ -r$   rs   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.
        Nr`   rK   s    r#   Úserial_numberz RevokedCertificate.serial_number¦   ó   � r$   c                 ó   — y)zH
        Returns the date of when this certificate was revoked.
        Nr`   rK   s    r#   Úrevocation_datez"RevokedCertificate.revocation_date­   rz   r$   c                 ó   — y)zl
        Returns the date of when this certificate was revoked as a non-naive
        UTC datetime.
        Nr`   rK   s    r#   Úrevocation_date_utcz&RevokedCertificate.revocation_date_utc´   rz   r$   c                 ó   — y)zW
        Returns an Extensions object containing a list of Revoked extensions.
        Nr`   rK   s    r#   r1   zRevokedCertificate.extensions¼   rz   r$   Nr]   ©r&   údatetime.datetime©r&   r   )
r)   r*   r+   r_   ÚabcÚabstractmethodry   r|   r~   r1   r`   r$   r#   rw   rw   ¥   sˆ   „ ØØ×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð Ø×Ñòó ó ñr$   rw   )Ú	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    ry   r|   r1   s       r#   r   z_RawRevokedCertificate.__init__É   ó   € ð ,ˆÔØ /ˆÔØ%ˆÕr$   c                ó   — | j                   S r   )rŠ   rK   s    r#   ry   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.ro   )Ú
stacklevel)ÚwarningsÚwarnr   ÚDeprecatedIn42r‹   rK   s    r#   r|   z&_RawRevokedCertificate.revocation_date×   s.   € ä�‰ð@ä× Ñ Øõ		
ð ×$Ñ$Ð$r$   c                ój   — | j                   j                  t        j                  j                  ¬«      S )Nr:   )r‹   r?   r=   ÚtimezoneÚutcrK   s    r#   r~   z*_RawRevokedCertificate.revocation_date_utcá   s(   € à×$Ñ$×,Ñ,´H×4EÑ4E×4IÑ4IÐ,ÓJÐJr$   c                ó   — | j                   S r   )rŒ   rK   s    r#   r1   z!_RawRevokedCertificate.extensionså   s   € à×ÑÐr$   N)ry   rY   r|   r�   r1   r   r]   r€   r‚   )	r)   r*   r+   r   r_   ry   r|   r~   r1   r`   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„Zy)Ú CertificateSigningRequestBuilderNc                ó.   — || _         || _        || _        y)zB
        Creates an empty X.509 certificate request (v1).
        N)Ú_subject_namerŒ   re   )r    Úsubject_namer1   r5   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.)rQ   r   Ú	TypeErrorrœ   r/   rš   rŒ   re   ©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)
rQ   r   r¡   r   r   r3   rŒ   rš   rœ   re   ©r    ÚextvalÚcriticalr0   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)rQ   r   r¡   rX   r   r8   re   rI   rš   rœ   rŒ   )r    r   rI   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_paddingc               ó  — | j                   €t        d«      ‚|�Zt        |t        j                  t        j
                  f«      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)rœ   r/   rQ   r   ÚPSSÚPKCS1v15r¡   r   ÚRSAPrivateKeyÚ	rust_x509Úcreate_x509_csr©r    Úprivate_keyÚ	algorithmÚbackendr¯   s        r#   Úsignz%CertificateSigningRequestBuilder.signF  s   € ð ×ÑÐ%ÜÐNÓOÐOàÐ"Ü˜k¬G¯K©K¼×9IÑ9IÐ+JÔKÜÐ AÓBÐBÜ˜k¬3×+<Ñ+<Ô=ÜÐ HÓIÐIä×(Ñ(Ø�+˜y¨+ó
ð 	
r$   )r�   úName | Noner1   úlist[Extension[ExtensionType]]r5   ú0list[tuple[ObjectIdentifier, bytes, int | None]])r£   r   r&   rš   )r§   r   r¨   r\   r&   rš   )r   r   rI   rX   rª   z_ASN1Type | Noner&   rš   r   )
r¹   r   rº   ú_AllowedHashTypes | Noner»   ú
typing.Anyr¯   ú%padding.PSS | padding.PKCS1v15 | Noner&   ÚCertificateSigningRequest)r)   r*   r+   r   r�   r©   r­   r¼   r`   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„Zy)ÚCertificateBuilderr¾   rŒ   Nc                ó�   — t         j                  | _        || _        || _        || _        || _        || _        || _        || _	        y r   )
rn   rq   Ú_versionÚ_issuer_namerœ   Ú_public_keyrŠ   Ú_not_valid_beforeÚ_not_valid_afterrŒ   )r    Úissuer_namer�   Ú
public_keyry   Únot_valid_beforeÚnot_valid_afterr1   s           r#   r   zCertificateBuilder.__init__b  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.)rQ   r   r¡   rÈ   r/   rÅ   rœ   rÉ   rŠ   rÊ   rË   rŒ   r¢   s     r#   rÌ   zCertificateBuilder.issuer_nameu  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    )rQ   r   r¡   rœ   r/   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.)rQ   r   ÚDSAPublicKeyr   ÚRSAPublicKeyr   ÚEllipticCurvePublicKeyr
   ÚEd25519PublicKeyr	   ÚEd448PublicKeyr   ÚX25519PublicKeyr   ÚX448PublicKeyr¡   rÉ   r/   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.)rQ   rY   r¡   rŠ   r/   Ú
bit_lengthrÅ   rÈ   rœ   rÉ   rÊ   rË   rŒ   ©r    Únumbers     r#   ry   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.)rQ   r=   r¡   rÊ   r/   rB   Ú_EARLIEST_UTC_TIMErË   rÅ   rÈ   rœ   rÉ   rŠ   rŒ   ©r    r@   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.)rQ   r=   r¡   rË   r/   rB   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Ü)¨$Ó/ˆØÔ$Ò$Üð#óð ð
 ×"Ñ"Ð.Ø�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¥   )rQ   r   r¡   r   r   r3   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               óþ  — | 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        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/   rÈ   rŠ   rÊ   rË   rÉ   rQ   r   r³   r´   r¡   r   rµ   r¶   Úcreate_x509_certificater¸   s        r#   r¼   zCertificateBuilder.sign,  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ä×0Ñ0Ø�+˜y¨+ó
ð 	
r$   )rÌ   r½   r�   r½   rÍ   z CertificatePublicKeyTypes | Nonery   ú
int | NonerÎ   údatetime.datetime | NonerÏ   rí   r1   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&   ÚCertificate)r)   r*   r+   Ú__annotations__r   rÌ   r�   rÍ   ry   rÎ   rÏ   r©   r¼   r`   r$   r#   rÅ   rÅ   _  s  … Ø/Ó/ð $(Ø$(Ø7;Ø$(Ø59Ø48Ø57ð&à ð&ð "ð&ð 5ð	&ð
 "ð&ð 3ð&ð 2ð&ð 3ð&ð 
ó&ó&
ó$
ð$#
à&ð#
ð 
ó#
óJ
ó6
ó:
ð@
Ø#ð
Ø/3ð
à	ó
ð4 #ð	%
ð >Bñ%
à5ð%
ð ,ð%
ð ð	%
ð ;ð%
ð 
ô%
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„Z
y)Ú CertificateRevocationListBuilderr¾   rŒ   úlist[RevokedCertificate]Ú_revoked_certificatesNc                óJ   — || _         || _        || _        || _        || _        y r   )rÈ   Ú_last_updateÚ_next_updaterŒ   ró   )r    rÌ   Úlast_updateÚnext_updater1   Úrevoked_certificatess         r#   r   z)CertificateRevocationListBuilder.__init__X  s,   € ð (ˆÔØ'ˆÔØ'ˆÔØ%ˆÔØ%9ˆÕ"r$   c                óÔ   — t        |t        «      st        d«      ‚| j                  �t	        d«      ‚t        || j                  | j                  | j                  | j                  «      S )NrŸ   rÑ   )
rQ   r   r¡   rÈ   r/   rñ   rõ   rö   rŒ   ró   )r    rÌ   s     r#   rÌ   z,CertificateRevocationListBuilder.issuer_namef  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.)rQ   r=   r¡   rõ   r/   rB   ræ   rö   rñ   rÈ   rŒ   ró   )r    r÷   s     r#   r÷   z,CertificateRevocationListBuilder.last_updateu  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.)rQ   r=   r¡   rö   r/   rB   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¥   )rQ   r   r¡   r   r   r3   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)	rQ   rw   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               ót  — | 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        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/   rõ   rö   rQ   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ä×(Ñ(Ø�+˜y¨+ó
ð 	
r$   )
rÌ   r½   r÷   rí   rø   rí   r1   r¾   rù   rò   )rÌ   r   r&   rñ   )r÷   r�   r&   rñ   )rø   r�   r&   rñ   )r§   r   r¨   r\   r&   rñ   )r  rw   r&   rñ   r   )
r¹   r   rº   rÀ   r»   rÁ   r¯   rÂ   r&   ÚCertificateRevocationList)r)   r*   r+   rï   r   rÌ   r÷   rø   r©   r  r¼   r`   r$   r#   rñ   rñ   T  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à   )	rQ   rY   r¡   rŠ   r/   rá   r  r‹   rŒ   râ   s     r#   ry   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.)
rQ   r=   r¡   r‹   r/   rB   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¥   )
rQ   r   r¡   r   r   r3   rŒ   r  rŠ   r‹   r¦   s       r#   r©   z'RevokedCertificateBuilder.add_extension  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Š   r/   r‹   r‡   r   rŒ   )r    r»   s     r#   ÚbuildzRevokedCertificateBuilder.build   se   € Ø×ÑÐ&ÜÐNÓOÐOØ× Ñ Ð(ÜØCóð ô &Ø×ÑØ×!Ñ!Ü�t×'Ñ'Ó(ó
ð 	
r$   )ry   rì   r|   rí   r1   r¾   )rã   rY   r&   r  )r@   r�   r&   r  )r§   r   r¨   r\   r&   r  r   )r»   rÁ   r&   rw   )r)   r*   r+   r   ry   r|   r©   r  r`   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   )rY   Ú
from_bytesÚosÚurandomr`   r$   r#   Úrandom_serial_numberr  .  s    € Ü�>‰>œ"Ÿ*™* R›.¨%Ó0°AÑ5Ð5r$   )r0   zExtension[ExtensionType]r1   r¾   r&   r'   )r   r   r5   r¿   r&   r'   )r@   r�   r&   r�   r]   )LÚ
__future__r   rƒ   r=   r  Útypingr’   Ú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   r3   r8   rB   rD   rb   ÚEnumrn   rs   rî   ÚABCMetarw   Ú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  r`   r$   r#   ú<module>r4     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Ð à×/Ñ/Ð Ø×/Ñ/Ð à×/Ñ/Ð Ø×/Ñ/Ð ÷b
ñ b
÷Jr
ñ r
÷jN
ñ N
÷bF
ñ F
ôR6r$   