§
    Æ‡tj—n  ã            	      ó  — d dl m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mZmZ d dlmZmZ d d	l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         Z/ G d„ de0¦  «        Z1d1d„Z2d2d„Z3d3d„Z4 G d„ d ¦  «        Z5 G d!„ d"¦  «        Z6 G d#„ d$ej7        ¦  «        Z8 G d%„ d&e0¦  «        Z9ej:        Z:ej;        Z;ej<        Z<ej=        Z=ej>        Z>ej?        Z?ej@        Z@ejA        ZAejB        ZBejC        ZCejD        ZD G d'„ d(¦  «        ZE G d)„ d*¦  «        ZF G d+„ d,¦  «        ZG G d-„ d.¦  «        ZHd4d0„ZIdS )5é    )ÚannotationsN)ÚIterable)Úutils)Úx509)Úhashes)
ÚdsaÚecÚed448Úed25519ÚmldsaÚmlkemÚpaddingÚrsaÚx448Úx25519)Ú CertificateIssuerPrivateKeyTypesÚCertificatePublicKeyTypes)Ú	ExtensionÚ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      €úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/cryptography/x509/base.pyr%   zAttributeNotFound.__init__8   s&   ø€ Ý‰Œ×Ò˜ÑÔÐØˆŒˆˆó    )r   r   r   r   r    r!   ©Ú__name__Ú
__module__Ú__qualname__r%   Ú__classcell__©r'   s   @r(   r   r   7   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)r0   r2   Úes      r(   Ú_reject_duplicate_extensionr7   =   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.)r5   )r   r8   Úattr_oidÚ_s       r(   Ú_reject_duplicate_attributer=   G   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   Q   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__`   s   € ð ˆŒ	ØˆŒØˆŒ
ˆ
ˆ
r)   c                ó   — | j         S r#   )rO   ©r&   s    r(   r   zAttribute.oidj   s
   € àŒyÐr)   c                ó   — | j         S r#   )rP   rR   s    r(   rJ   zAttribute.valuen   s
   € àŒ{Ðr)   r   c                ó(   — d| j         › d| j        ›d�S )Nz<Attribute(oid=z, value=ú)>)r   rJ   rR   s    r(   Ú__repr__zAttribute.__repr__r   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__u   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 )Ú
Attributesr8   úIterable[Attribute]r    r!   c                ó.   — t          |¦  «        | _        d S r#   )ÚlistÚ_attributes)r&   r8   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)r8   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                  ó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 | Noner2   r3   r8   r9   c                ó0   — || _         || _        || _        dS )zB
        Creates an empty X.509 certificate request (v1).
        N)Ú_subject_nameÚ_extensionsrk   )r&   r~   r2   r8   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�   r5   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   r7   r‚   r}   r�   rk   ©r&   r‰   rŠ   r0   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�   r5   r[   r   ÚPSSÚPKCS1v15r‡   r   ÚRSAPrivateKeyr	   ÚEllipticCurvePrivateKeyÚ	rust_x509Úcreate_x509_csr©r&   r—   r˜   rš   r•   r–   s         r(   Úsignz%CertificateSigningRequestBuilder.sign  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   r2   r3   r8   r9   )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 dfd6d„Zd7d„Zd7d„Zddœd8d„Zd9d„Zd:d"„Z	d:d#„Z
d;d(„Z	 d<ddd)œd=d4„Zd>d5„ZdS )?ÚCertificateBuilderr3   r‚   NÚissuer_namer   r~   Ú
public_keyú CertificatePublicKeyTypes | NoneÚserial_numberú
int | NoneÚnot_valid_beforeúdatetime.datetime | NoneÚnot_valid_afterr2   Úpublic_key_rsa_paddingútype[padding.PSS] | Noner    r!   c	                ó˜   — t           j        | _        || _        || _        || _        || _        || _        || _        || _	        || _
        d S r#   )rt   rw   Ú_versionÚ_issuer_namer�   Ú_public_keyÚ_serial_numberÚ_not_valid_beforeÚ_not_valid_afterr‚   Ú_public_key_rsa_padding)	r&   r­   r~   r®   r°   r²   r´   r2   rµ   s	            r(   r%   zCertificateBuilder.__init__)  sS   € õ  œ
ˆŒØ'ˆÔØ)ˆÔØ%ˆÔØ+ˆÔØ!1ˆÔØ /ˆÔØ%ˆÔØ'=ˆÔ$Ð$Ð$r)   rƒ   r   c           
     óè   — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          || j        | 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¹   r5   r¬   r�   rº   r»   r¼   r½   r‚   r¾   rˆ   s     r(   r­   zCertificateBuilder.issuer_name>  s|   € õ ˜$¥Ñ%Ô%ð 	;ÝÐ9Ñ:Ô:Ð:ØÔÐ(ÝÐDÑEÔEÐEÝ!ØØÔØÔØÔØÔ"ØÔ!ØÔØÔ(ñ	
ô 	
ð 		
r)   c           
     óè   — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          | j        || j        | j        | j	        | j
        | j        | j        ¦  «        S )z:
        Sets the requestor's distinguished name.
        r…   Nr†   )r[   r   r‡   r�   r5   r¬   r¹   rº   r»   r¼   r½   r‚   r¾   rˆ   s     r(   r~   zCertificateBuilder.subject_nameQ  s|   € õ ˜$¥Ñ%Ô%ð 	;ÝÐ9Ñ:Ô:Ð:ØÔÐ)ÝÐEÑFÔFÐFÝ!ØÔØØÔØÔØÔ"ØÔ!ØÔØÔ(ñ	
ô 	
ð 		
r)   )r•   Úkeyr   r•   c               ól  — t          |t          j        t          j        t
          j        t          j        t          j
        t          j        t          j        t          j        t          j        t          j        t$          j        t(          j        f¦  «        st-          d¦  «        ‚|�F|t.          j        urt-          d¦  «        ‚t          |t          j        ¦  «        st-          d¦  «        ‚| j        �t5          d¦  «        ‚t7          | 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, MLDSA44PublicKey, MLDSA65PublicKey, MLDSA87PublicKey, MLKEM768PublicKey, MLKEM1024PublicKey, X25519PublicKey or X448PublicKey.Nz2rsa_padding must be the PSS class, not an instancez2rsa_padding is only supported with RSA public keysz$The public key may only be set once.)"r[   r   ÚDSAPublicKeyr   ÚRSAPublicKeyr	   ÚEllipticCurvePublicKeyr   ÚEd25519PublicKeyr
   ÚEd448PublicKeyr   ÚMLDSA44PublicKeyÚMLDSA65PublicKeyÚMLDSA87PublicKeyr   ÚMLKEM768PublicKeyÚMLKEM1024PublicKeyr   ÚX25519PublicKeyr   ÚX448PublicKeyr‡   r   r£   rº   r5   r¬   r¹   r�   r»   r¼   r½   r‚   )r&   rÂ   r•   s      r(   r®   zCertificateBuilder.public_keyd  s+  € õ ØåÔ ÝÔ ÝÔ)ÝÔ(ÝÔ$ÝÔ&ÝÔ&ÝÔ&ÝÔ'ÝÔ(ÝÔ&ÝÔ"ðñ
ô 
ð 	õ" ð5ñô ð ð Ð"Ø¥'¤+Ð-Ð-ÝØHñô ð õ ˜c¥3Ô#3Ñ4Ô4ð ÝØHñô ð ð ÔÐ'ÝÐCÑDÔDÐDÝ!ØÔØÔØØÔØÔ"ØÔ!ØÔØñ	
ô 	
ð 		
r)   ÚnumberrM   c           
     ó`  — 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        | 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»   r5   Ú
bit_lengthr¬   r¹   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           
     ó†  — 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        | 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¼   r5   rG   Ú_EARLIEST_UTC_TIMEr½   r¬   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           
     ó†  — 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        | 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½   r5   rG   rÚ   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        ¢|‘| j        ¦  «        S )z=
        Adds an X.509 extension to the certificate.
        rŒ   )r[   r   r‡   r   r   r7   r‚   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�   ÚCertificatec               ór  — | j         €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚|€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.
        Nú&A certificate must have a subject nameú&A certificate must have an issuer nameú'A certificate must have a serial numberú/A certificate must have a not valid before timeú.A certificate must have a not valid after timeú$A certificate must have a public keyz$Need private key to sign certificater    r¡   r¢   )r�   r5   r¹   r»   r¼   r½   rº   r‡   r[   r   r£   r¤   r   r¥   r	   r¦   r§   Úcreate_x509_certificater©   s         r(   rª   zCertificateBuilder.sign  sV  € ð ÔÐ%ÝÐEÑFÔFÐFàÔÐ$ÝÐEÑFÔFÐFàÔÐ&ÝÐFÑGÔGÐGàÔ!Ð)ÝÐNÑOÔOÐOàÔ Ð(ÝÐMÑNÔNÐNàÔÐ#ÝÐCÑDÔDÐDàÐÝÐBÑCÔCÐCàÐ"Ý˜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)   c                ó<  — | j         €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚t          j        | dddd¬¦  «        S )	z@
        Creates an unsigned certificate, per RFC 9925.
        Nrà   rá   râ   rã   rä   rå   )r—   Úhash_algorithmr•   r–   )	r�   r5   r¹   r»   r¼   r½   rº   r§   ræ   rR   s    r(   Úcreate_unsignedz"CertificateBuilder.create_unsignedA  s½   € ð ÔÐ%ÝÐEÑFÔFÐFàÔÐ$ÝÐEÑFÔFÐFàÔÐ&ÝÐFÑGÔGÐGàÔ!Ð)ÝÐNÑOÔOÐOàÔ Ð(ÝÐMÑNÔNÐNàÔÐ#ÝÐCÑDÔDÐDåÔ0ØØØØØ $ð
ñ 
ô 
ð 	
r)   )r­   r   r~   r   r®   r¯   r°   r±   r²   r³   r´   r³   r2   r3   rµ   r¶   r    r!   )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+   r,   r-   Ú__annotations__r%   r­   r~   r®   r°   r²   r´   rŽ   rª   ré   re   r)   r(   r¬   r¬   &  s8  € € € € € € Ø/Ð/Ð/Ñ/ð $(Ø$(Ø7;Ø$(Ø59Ø48Ø57Ø;?ð>ð >ð >ð >ð >ð*
ð 
ð 
ð 
ð&
ð 
ð 
ð 
ð. 15ð	5
ð 5
ð 5
ð 5
ð 5
ð 5
ðn
ð 
ð 
ð 
ð8
ð 
ð 
ð 
ð<
ð 
ð 
ð 
ð@
ð 
ð 
ð 
ð6 #ð	3
ð >BØ+/ð3
ð 3
ð 3
ð 3
ð 3
ð 3
ðj
ð 
ð 
ð 
ð 
ð 
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Ú CertificateRevocationListBuilderr3   r‚   úlist[RevokedCertificate]Ú_revoked_certificatesNr­   r   Úlast_updater³   Únext_updater2   Úrevoked_certificatesc                óL   — || _         || _        || _        || _        || _        d S r#   )r¹   Ú_last_updateÚ_next_updater‚   rî   )r&   r­   rï   rð   r2   rñ   s         r(   r%   z)CertificateRevocationListBuilder.__init__d  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¹   r5   rì   ró   rô   r‚   rî   )r&   r­   s     r(   r­   z,CertificateRevocationListBuilder.issuer_namer  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ó   r5   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ô   r5   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   r7   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_certificateÚRevokedCertificatec                óª   — 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¹   r5   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³   r2   r3   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ì   `  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±   Úrevocation_dater³   r2   r3   c                ó0   — || _         || _        || _        d S r#   )r»   Ú_revocation_dater‚   )r&   r°   r  r2   s       r(   r%   z"RevokedCertificateBuilder.__init__ý  s"   € ð ,ˆÔØ /ˆÔØ%ˆÔÐÐ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»   r5   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  r5   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   r7   r‚   r  r»   r  r�   s       r(   rŽ   z'RevokedCertificateBuilder.add_extension)  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        | ¦  «        S )Nz/A revoked certificate must have a serial numberz1A revoked certificate must have a revocation date)r»   r5   r  r§   Úcreate_revoked_certificate)r&   rš   s     r(   ÚbuildzRevokedCertificateBuilder.build7  sK   € ØÔÐ&ÝÐNÑOÔOÐOØÔ Ð(ÝØCñô ð õ Ô3°DÑ9Ô9Ð9r)   )r°   r±   r  r³   r2   r3   )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  A  s#   € Ý�>Š>�"œ* R™.œ.¨%Ñ0Ô0°AÑ5Ð5r)   )r0   r1   r2   r3   r    r!   )r   r   r8   r9   r    r!   )r>   r?   r    r?   rb   )JÚ
__future__r   rC   r  ÚtypingÚcollections.abcr   Úcryptographyr   Ú"cryptography.hazmat.bindings._rustr   r§   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr   r	   r
   r   r   r   r   r   r   r   Ú/cryptography.hazmat.primitives.asymmetric.typesr   r   Úcryptography.x509.extensionsr   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   r7   r=   rG   rI   rg   ÚEnumrt   ry   rÞ   rü   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>r2     s4  ðð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ø 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ñ -ô -ð -ð Ô#€ØÔ1Ð ð &Ô?Ð Ø%Ô?Ð ð &Ô?Ð Ø%Ô?Ð à&ÔAÐ àÔ/Ð ØÔ/Ð àÔ/Ð ØÔ/Ð ðm
ð m
ð m
ð m
ð m
ñ m
ô m
ð m
ð`w
ð w
ð w
ð w
ð w
ñ w
ô w
ð w
ðt	Y
ð Y
ð Y
ð Y
ð Y
ñ Y
ô Y
ð Y
ðxB:ð B:ð B:ð B:ð B:ñ B:ô B:ð B:ðJ6ð 6ð 6ð 6ð 6ð 6r)   