o
    àý°j—n  ã                	   @  sð  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 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„ de0ƒZ1d5dd„Z2d6dd„Z3d7d d!„Z4G d"d#„ d#ƒZ5G d$d%„ d%ƒZ6G d&d'„ d'ej7ƒZ8G d(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jAZAejBZBejCZCejDZDG d*d+„ d+ƒZEG d,d-„ d-ƒZFG d.d/„ d/ƒZGG d0d1„ d1ƒZHd8d3d4„ZIdS )9é    )Ú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d„Z‡  ZS )
ÚAttributeNotFoundÚmsgÚstrÚoidr   ÚreturnÚNonec                   ó   t ƒ  |¡ || _d S ©N)ÚsuperÚ__init__r   )Úselfr   r   ©Ú	__class__© ú‰/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/cryptography/x509/base.pyr$   8   ó   
zAttributeNotFound.__init__)r   r   r   r   r   r    ©Ú__name__Ú
__module__Ú__qualname__r$   Ú__classcell__r(   r(   r&   r)   r   7   ó    r   Ú	extensionúExtension[ExtensionType]Ú
extensionsúlist[Extension[ExtensionType]]r   r    c                 C  s"   |D ]}|j | j krtdƒ‚qd S )Nz$This extension has already been set.)r   Ú
ValueError)r1   r3   Úer(   r(   r)   Ú_reject_duplicate_extension=   s
   ÿÿr7   r   r   Ú
attributesú0list[tuple[ObjectIdentifier, bytes, int | None]]c                 C  s$   |D ]\}}}|| krt dƒ‚qd S )Nz$This attribute has already been set.)r5   )r   r8   Úattr_oidÚ_r(   r(   r)   Ú_reject_duplicate_attributeG   s
   ÿÿr<   Útimeúdatetime.datetimec                 C  s6   | j dur|  ¡ }|r|nt ¡ }| jdd�| 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)r=   Úoffsetr(   r(   r)   Ú_convert_to_naive_utc_timeQ   s
   
rE   c                   @  sX   e Zd Zejjfdd	d
„Zeddd„ƒZeddd„ƒZddd„Z	ddd„Z
ddd„ZdS ) Ú	Attributer   r   ÚvalueÚbytesÚ_typeÚintr   r    c                 C  ó   || _ || _|| _d S r"   )Ú_oidÚ_valuerI   )r%   r   rG   rI   r(   r(   r)   r$   `   ó   
zAttribute.__init__c                 C  ó   | j S r"   )rL   ©r%   r(   r(   r)   r   j   ó   zAttribute.oidc                 C  rO   r"   )rM   rP   r(   r(   r)   rG   n   rQ   zAttribute.valuer   c                 C  s   d| j › d| j›d�S )Nz<Attribute(oid=z, value=ú)>)r   rG   rP   r(   r(   r)   Ú__repr__r   ó   zAttribute.__repr__ÚotherÚobjectÚboolc                 C  s2   t |tƒstS | j|jko| j|jko| j|jkS r"   )Ú
isinstancerF   ÚNotImplementedr   rG   rI   )r%   rU   r(   r(   r)   Ú__eq__u   s   

ÿ
ýzAttribute.__eq__c                 C  s   t | j| j| jfƒS r"   )Úhashr   rG   rI   rP   r(   r(   r)   Ú__hash__   s   zAttribute.__hash__N)r   r   rG   rH   rI   rJ   r   r    )r   r   )r   rH   ©r   r   )rU   rV   r   rW   ©r   rJ   )r,   r-   r.   r   Ú
UTF8StringrG   r$   Úpropertyr   rS   rZ   r\   r(   r(   r(   r)   rF   _   s    ü



rF   c                   @  s8   e Zd Zddd„Zedƒ\ZZZdd	d
„Zddd„Z	dS )Ú
Attributesr8   úIterable[Attribute]r   r    c                 C  s   t |ƒ| _d S r"   )ÚlistÚ_attributes)r%   r8   r(   r(   r)   r$   „   s   zAttributes.__init__rd   r   c                 C  s   d| j › d�S )Nz<Attributes(rR   )rd   rP   r(   r(   r)   rS   Œ   s   zAttributes.__repr__r   r   rF   c                 C  s.   | D ]}|j |kr|  S qtd|› d�|ƒ‚)NzNo z attribute was found)r   r   )r%   r   Úattrr(   r(   r)   Úget_attribute_for_oid�   s
   
ÿz Attributes.get_attribute_for_oidN)r8   rb   r   r    r]   )r   r   r   rF   )
r,   r-   r.   r$   r   Ú__len__Ú__iter__Ú__getitem__rS   rf   r(   r(   r(   r)   ra   ƒ   s
    

ra   c                   @  s   e Zd ZdZdZdS )ÚVersionr   é   N)r,   r-   r.   Úv1Úv3r(   r(   r(   r)   rj   —   s    rj   c                      r   )
ÚInvalidVersionr   r   Úparsed_versionrJ   r   r    c                   r!   r"   )r#   r$   ro   )r%   r   ro   r&   r(   r)   r$   �   r*   zInvalidVersion.__init__)r   r   ro   rJ   r   r    r+   r(   r(   r&   r)   rn   œ   r0   rn   c                   @  sX   e Zd Zdg g fd,dd	„Zd-dd„Zd.dd„Zddœd/dd„Z	d0dddœd1d*d+„ZdS )2Ú CertificateSigningRequestBuilderNÚsubject_nameúName | Noner3   r4   r8   r9   c                 C  s   || _ || _|| _dS )zB
        Creates an empty X.509 certificate request (v1).
        N)Ú_subject_nameÚ_extensionsrd   )r%   rq   r3   r8   r(   r(   r)   r$   ·   s   	
z)CertificateSigningRequestBuilder.__init__Únamer   r   c                 C  s4   t |tƒs	tdƒ‚| jdur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.)rX   r   Ú	TypeErrorrs   r5   rp   rt   rd   ©r%   ru   r(   r(   r)   rq   Ä   s   


ÿz-CertificateSigningRequestBuilder.subject_nameÚextvalr   ÚcriticalrW   c                 C  sF   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)
rX   r   rx   r   r   r7   rt   rp   rs   rd   ©r%   rz   r{   r1   r(   r(   r)   Úadd_extensionÐ   s   
ýz.CertificateSigningRequestBuilder.add_extension)Ú_tagr   r   rG   rH   r   ú_ASN1Type | Nonec                C  s~   t |tƒs	tdƒ‚t |tƒstdƒ‚|durt |tƒstdƒ‚t|| jƒ |dur-|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)rX   r   rx   rH   r   r<   rd   rG   rp   rs   rt   )r%   r   rG   r   Útagr(   r(   r)   Úadd_attributeâ   s   


ýz.CertificateSigningRequestBuilder.add_attribute©Úrsa_paddingÚecdsa_deterministicÚprivate_keyr   Ú	algorithmú_AllowedHashTypes | NoneÚbackendú
typing.Anyr„   ú%padding.PSS | padding.PKCS1v15 | Noner…   úbool | NoneÚCertificateSigningRequestc                C  sv   | j du r	tdƒ‚|dur$t|tjtjfƒstdƒ‚t|tjƒs$tdƒ‚|dur2t|t	j
ƒs2tdƒ‚t | ||||¡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)rs   r5   rX   r   ÚPSSÚPKCS1v15rx   r   ÚRSAPrivateKeyr   ÚEllipticCurvePrivateKeyÚ	rust_x509Úcreate_x509_csr©r%   r†   r‡   r‰   r„   r…   r(   r(   r)   Úsign  s&   
ÿûz%CertificateSigningRequestBuilder.sign)rq   rr   r3   r4   r8   r9   )ru   r   r   rp   )rz   r   r{   rW   r   rp   )r   r   rG   rH   r   r€   r   rp   r"   )r†   r   r‡   rˆ   r‰   rŠ   r„   r‹   r…   rŒ   r   r�   )r,   r-   r.   r$   rq   r~   r‚   r˜   r(   r(   r(   r)   rp   ¶   s    ü

û$üùrp   c                   @  sž   e Zd ZU ded< ddddddg dfd@dd„ZdAdd„ZdAdd„ZddœdBdd „ZdCd#d$„ZdDd'd(„Z	dDd)d*„Z
dEd/d0„Z	dFddd1œdGd<d=„ZdHd>d?„ZdS )IÚCertificateBuilderr4   rt   NÚissuer_namerr   rq   Ú
public_keyú CertificatePublicKeyTypes | NoneÚserial_numberú
int | NoneÚnot_valid_beforeúdatetime.datetime | NoneÚnot_valid_afterr3   Úpublic_key_rsa_paddingútype[padding.PSS] | Noner   r    c	           	      C  s<   t j| _|| _|| _|| _|| _|| _|| _|| _	|| _
d S r"   )rj   rm   Ú_versionÚ_issuer_namers   Ú_public_keyÚ_serial_numberÚ_not_valid_beforeÚ_not_valid_afterrt   Ú_public_key_rsa_padding)	r%   rš   rq   r›   r�   rŸ   r¡   r3   r¢   r(   r(   r)   r$   )  s   
zCertificateBuilder.__init__ru   r   c              	   C  sH   t |tƒs	tdƒ‚| jdurtdƒ‚t|| j| j| j| j	| j
| j| jƒS )z3
        Sets the CA's distinguished name.
        rv   Nú%The issuer name may only be set once.)rX   r   rx   r¥   r5   r™   rs   r¦   r§   r¨   r©   rt   rª   ry   r(   r(   r)   rš   >  s   

øzCertificateBuilder.issuer_namec              	   C  sH   t |tƒs	tdƒ‚| jdurtdƒ‚t| j|| j| j| j	| j
| j| jƒS )z:
        Sets the requestor's distinguished name.
        rv   Nrw   )rX   r   rx   rs   r5   r™   r¥   r¦   r§   r¨   r©   rt   rª   ry   r(   r(   r)   rq   Q  s   

øzCertificateBuilder.subject_name)r„   Úkeyr   r„   c                C  s¤   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ƒ‚|dur8|tjur.tdƒ‚t |tjƒs8tdƒ‚| jdurAtdƒ‚t| j| j|| j| j| j | j!|ƒS )zT
        Sets the requestor's public key (as found in the signing request).
        zåExpecting one of DSAPublicKey, RSAPublicKey, EllipticCurvePublicKey, Ed25519PublicKey, Ed448PublicKey, 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.)"rX   r   ÚDSAPublicKeyr   ÚRSAPublicKeyr   ÚEllipticCurvePublicKeyr
   ÚEd25519PublicKeyr	   ÚEd448PublicKeyr   ÚMLDSA44PublicKeyÚMLDSA65PublicKeyÚMLDSA87PublicKeyr   ÚMLKEM768PublicKeyÚMLKEM1024PublicKeyr   ÚX25519PublicKeyr   ÚX448PublicKeyrx   r   r‘   r¦   r5   r™   r¥   rs   r§   r¨   r©   rt   )r%   r¬   r„   r(   r(   r)   r›   d  sP   	ôþÿ
ÿÿ
øzCertificateBuilder.public_keyÚnumberrJ   c              	   C  sl   t |tƒs	tdƒ‚| jdur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.)rX   rJ   rx   r§   r5   Ú
bit_lengthr™   r¥   rs   r¦   r¨   r©   rt   rª   ©r%   r¹   r(   r(   r)   r�   ›  s(   

ÿøz CertificateBuilder.serial_numberr=   r>   c              	   C  s~   t |tjƒs
tdƒ‚| jdurtdƒ‚t|ƒ}|tk rtdƒ‚| jdur-|| 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.)rX   rA   rx   r¨   r5   rE   Ú_EARLIEST_UTC_TIMEr©   r™   r¥   rs   r¦   r§   rt   rª   ©r%   r=   r(   r(   r)   rŸ   ·  s.   
ÿÿøz#CertificateBuilder.not_valid_beforec              	   C  s~   t |tjƒs
tdƒ‚| jdurtdƒ‚t|ƒ}|tk rtdƒ‚| jdur-|| 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.)rX   rA   rx   r©   r5   rE   rÁ   r¨   r™   r¥   rs   r¦   r§   rt   rª   rÂ   r(   r(   r)   r¡   Õ  s0   
ÿ

ÿøz"CertificateBuilder.not_valid_afterrz   r   r{   rW   c              	   C  sZ   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|   )rX   r   rx   r   r   r7   rt   r™   r¥   rs   r¦   r§   r¨   r©   rª   r}   r(   r(   r)   r~   õ  s   
øz CertificateBuilder.add_extensionrƒ   r†   r   r‡   rˆ   r‰   rŠ   r‹   r…   rŒ   ÚCertificatec                C  sà   | j du r	tdƒ‚| jdu rtdƒ‚| jdu rtdƒ‚| jdu r$tdƒ‚| jdu r-tdƒ‚| jdu r6tdƒ‚|du r>tdƒ‚|durYt|t	j
t	jfƒsOtd	ƒ‚t|tjƒsYtd
ƒ‚|durgt|tjƒsgtdƒ‚t | ||||¡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�   )rs   r5   r¥   r§   r¨   r©   r¦   rx   rX   r   r‘   r’   r   r“   r   r”   r•   Úcreate_x509_certificater—   r(   r(   r)   r˜     s>   





ÿûzCertificateBuilder.signc                 C  s€   | j du r	tdƒ‚| jdu rtdƒ‚| jdu rtdƒ‚| jdu r$tdƒ‚| jdu r-tdƒ‚| jdu r6tdƒ‚tj| ddddd�S )	z@
        Creates an unsigned certificate, per RFC 9925.
        NrÄ   rÅ   rÆ   rÇ   rÈ   rÉ   )r†   Úhash_algorithmr„   r…   )	rs   r5   r¥   r§   r¨   r©   r¦   r•   rÊ   rP   r(   r(   r)   Úcreate_unsignedA  s&   





ûz"CertificateBuilder.create_unsigned)rš   rr   rq   rr   r›   rœ   r�   rž   rŸ   r    r¡   r    r3   r4   r¢   r£   r   r    )ru   r   r   r™   )r¬   r   r„   r£   r   r™   )r¹   rJ   r   r™   )r=   r>   r   r™   )rz   r   r{   rW   r   r™   r"   )r†   r   r‡   rˆ   r‰   rŠ   r„   r‹   r…   rŒ   r   rÃ   )r   rÃ   )r,   r-   r.   Ú__annotations__r$   rš   rq   r›   r�   rŸ   r¡   r~   r˜   rÌ   r(   r(   r(   r)   r™   &  s2   
 ÷

ü
7


 üù5r™   c                   @  s|   e Zd ZU ded< ded< dddg g fd0dd„Zd1dd„Zd2dd„Zd3dd„Zd4dd„Zd5d d!„Z		d6ddd"œd7d.d/„Z
dS )8Ú CertificateRevocationListBuilderr4   rt   úlist[RevokedCertificate]Ú_revoked_certificatesNrš   rr   Úlast_updater    Únext_updater3   Úrevoked_certificatesc                 C  s"   || _ || _|| _|| _|| _d S r"   )r¥   Ú_last_updateÚ_next_updatert   rÐ   )r%   rš   rÑ   rÒ   r3   rÓ   r(   r(   r)   r$   d  s
   
z)CertificateRevocationListBuilder.__init__r   r   c                 C  s<   t |tƒs	tdƒ‚| jd urtdƒ‚t|| j| j| j| j	ƒS )Nrv   r«   )
rX   r   rx   r¥   r5   rÎ   rÔ   rÕ   rt   rÐ   )r%   rš   r(   r(   r)   rš   r  s   

ûz,CertificateRevocationListBuilder.issuer_namer>   c                 C  sr   t |tjƒs
tdƒ‚| jd urtdƒ‚t|ƒ}|tk rtdƒ‚| jd ur-|| 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.)rX   rA   rx   rÔ   r5   rE   rÁ   rÕ   rÎ   r¥   rt   rÐ   )r%   rÑ   r(   r(   r)   rÑ   �  s(   
ÿÿûz,CertificateRevocationListBuilder.last_updatec                 C  sr   t |tjƒs
tdƒ‚| jd urtdƒ‚t|ƒ}|tk rtdƒ‚| jd ur-|| 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.)rX   rA   rx   rÕ   r5   rE   rÁ   rÔ   rÎ   r¥   rt   rÐ   )r%   rÒ   r(   r(   r)   rÒ   ™  s(   
ÿÿûz,CertificateRevocationListBuilder.next_updaterz   r   r{   rW   c                 C  sN   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|   )rX   r   rx   r   r   r7   rt   rÎ   r¥   rÔ   rÕ   rÐ   r}   r(   r(   r)   r~   ±  s   
ûz.CertificateRevocationListBuilder.add_extensionÚrevoked_certificateÚRevokedCertificatec                 C  s4   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)	rX   rÙ   rx   rÎ   r¥   rÔ   rÕ   rt   rÐ   )r%   rØ   r(   r(   r)   Úadd_revoked_certificateÄ  s   
ûz8CertificateRevocationListBuilder.add_revoked_certificaterƒ   r†   r   r‡   rˆ   r‰   rŠ   r„   r‹   r…   rŒ   ÚCertificateRevocationListc                C  sš   | j d u r	tdƒ‚| jd u rtdƒ‚| jd u rtdƒ‚|d ur6t|tjtjfƒs,tdƒ‚t|t	j
ƒs6tdƒ‚|d urDt|tjƒsDtdƒ‚t | ||||¡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Õ   rX   r   r‘   r’   rx   r   r“   r   r”   r•   Úcreate_x509_crlr—   r(   r(   r)   r˜   Õ  s.   
	

ÿûz%CertificateRevocationListBuilder.sign)
rš   rr   rÑ   r    rÒ   r    r3   r4   rÓ   rÏ   )rš   r   r   rÎ   )rÑ   r>   r   rÎ   )rÒ   r>   r   rÎ   )rz   r   r{   rW   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˜   r(   r(   r(   r)   rÎ   `  s&   
 ú




üùrÎ   c                   @  sH   e Zd Zddg fddd	„Zddd„Zd dd„Zd!dd„Zd"d#dd„ZdS )$ÚRevokedCertificateBuilderNr�   rž   Úrevocation_dater    r3   r4   c                 C  rK   r"   )r§   Ú_revocation_datert   )r%   r�   rÞ   r3   r(   r(   r)   r$   ý  rN   z"RevokedCertificateBuilder.__init__r¹   rJ   r   c                 C  sX   t |tƒs	tdƒ‚| jd ur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½   )	rX   rJ   rx   r§   r5   r¾   rÝ   rß   rt   r¿   r(   r(   r)   r�     s   

ÿ
ÿz'RevokedCertificateBuilder.serial_numberr=   r>   c                 C  sN   t |tjƒs
tdƒ‚| jd ur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.)
rX   rA   rx   rß   r5   rE   rÁ   rÝ   r§   rt   rÂ   r(   r(   r)   rÞ     s   
ÿ
ÿz)RevokedCertificateBuilder.revocation_daterz   r   r{   rW   c                 C  sF   t |tƒs	tdƒ‚t|j||ƒ}t|| jƒ t| j| j	g | j¢|‘ƒS )Nr|   )
rX   r   rx   r   r   r7   rt   rÝ   r§   rß   r}   r(   r(   r)   r~   )  s   
ýz'RevokedCertificateBuilder.add_extensionr‰   rŠ   rÙ   c                 C  s.   | j d u r	tdƒ‚| jd u rtdƒ‚t | ¡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‰   r(   r(   r)   Úbuild7  s   

ÿ
zRevokedCertificateBuilder.build)r�   rž   rÞ   r    r3   r4   )r¹   rJ   r   rÝ   )r=   r>   r   rÝ   )rz   r   r{   rW   r   rÝ   r"   )r‰   rŠ   r   rÙ   )r,   r-   r.   r$   r�   rÞ   r~   rá   r(   r(   r(   r)   rÝ   ü  s    ü



rÝ   rJ   c                   C  s   t  t d¡d¡d? S )Né   Úbigr   )rJ   Ú
from_bytesÚosÚurandomr(   r(   r(   r)   Úrandom_serial_numberA  rT   rç   )r1   r2   r3   r4   r   r    )r   r   r8   r9   r   r    )r=   r>   r   r>   r^   )JÚ
__future__r   rA   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<   rE   rF   ra   ÚEnumrj   rn   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_crlrp   r™   rÎ   rÝ   rç   r(   r(   r(   r)   Ú<module>   sh   0ùÿ




$p  < E