§
    ÌtºfÙ�  ã            	      óx  — 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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mZ d dlmZmZmZm Z  d d	l!m"Z"m#Z# d d
l$m%Z%  ej        ddd¦  «        Z&ej'        ej(        ej)        ej*        ej+        ej,        ej-        ej.        ej/        f         Z0 G d„ de1¦  «        Z2d;d„Z3d<d„Z4d=d„Z5 G d„ d¦  «        Z6 G d „ d!¦  «        Z7 G d"„ d#ej8        ¦  «        Z9 G d$„ d%e1¦  «        Z: G d&„ d'ej;        ¬(¦  «        Z<e< =                    ej<        ¦  «          G d)„ d*ej;        ¬(¦  «        Z>e> =                    ej>        ¦  «          G d+„ d,e>¦  «        Z? G d-„ d.ej;        ¬(¦  «        Z@e@ =                    ej@        ¦  «          G d/„ d0ej;        ¬(¦  «        ZAeA =                    ejA        ¦  «         ejB        ZBejC        ZCejD        ZDejE        ZEejF        ZFejG        ZGejH        ZH G d1„ d2¦  «        ZI G d3„ d4¦  «        ZJ G d5„ d6¦  «        ZK G d7„ d8¦  «        ZLd>d:„ZMdS )?é    )ÚannotationsN)Úutils)Úx509)ÚhashesÚserialization)ÚdsaÚecÚed448Úed25519ÚpaddingÚrsaÚx448Úx25519)Ú CertificateIssuerPrivateKeyTypesÚCertificateIssuerPublicKeyTypesÚCertificatePublicKeyTypes)Ú	ExtensionÚ
ExtensionsÚExtensionTypeÚ_make_sequence_methods)ÚNameÚ	_ASN1Type)ÚObjectIdentifieriž  é   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )	ÚAttributeNotFoundÚmsgÚstrÚoidr   ÚreturnÚNonec                óX   •— t          ¦   «                              |¦  «         || _        d S ©N)ÚsuperÚ__init__r   )Úselfr   r   Ú	__class__s      €úU/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/cryptography/x509/base.pyr%   zAttributeNotFound.__init__9   s&   ø€ Ý‰Œ×Ò˜ÑÔÐØˆŒˆˆó    )r   r   r   r   r    r!   ©Ú__name__Ú
__module__Ú__qualname__r%   Ú__classcell__©r'   s   @r(   r   r   8   s=   ø€ € € € € ðð ð ð ð ð ð ð ð ð r)   r   Ú	extensionúExtension[ExtensionType]Ú
extensionsúlist[Extension[ExtensionType]]r    r!   c                óN   — |D ]!}|j         | j         k    rt          d¦  «        ‚Œ"d S )Nz$This extension has already been set.)r   Ú
ValueError)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=   H   sD   € ð
 %ð Eð E‰ˆ�!�QØ�sŠ?ˆ?ÝÐCÑDÔDÐDð ðEð Er)   Útimeúdatetime.datetimec                óœ   — | j         �D|                      ¦   «         }|r|nt          j        ¦   «         }|                      d¬¦  «        |z
  S | S )z’Normalizes a datetime to a naive datetime in UTC.

    time -- datetime to normalize. Assumed to be in UTC if not timezone
            aware.
    N©Útzinfo)rB   Ú	utcoffsetÚdatetimeÚ	timedeltaÚreplace)r>   Úoffsets     r(   Ú_convert_to_naive_utc_timerH   R   sP   € ð „{ÐØ—’Ñ!Ô!ˆØ!Ð;��¥xÔ'9Ñ';Ô';ˆØ�|Š| 4ˆ|Ñ(Ô(¨6Ñ1Ð1àˆr)   c                  óv   — e Zd Zej        j        fdd	„Zedd
„¦   «         Zedd„¦   «         Zdd„Z	dd„Z
dd„ZdS )Ú	Attributer   r   ÚvalueÚbytesÚ_typeÚintr    r!   c                ó0   — || _         || _        || _        d S r#   )Ú_oidÚ_valuerM   )r&   r   rK   rM   s       r(   r%   zAttribute.__init__a   s   € ð ˆŒ	ØˆŒØˆŒ
ˆ
ˆ
r)   c                ó   — | j         S r#   )rP   ©r&   s    r(   r   zAttribute.oidk   s
   € àŒyÐr)   c                ó   — | j         S r#   )rQ   rS   s    r(   rK   zAttribute.valueo   s
   € àŒ{Ðr)   r   c                ó(   — d| j         › d| j        ›d�S )Nz<Attribute(oid=z, value=ú)>)r   rK   rS   s    r(   Ú__repr__zAttribute.__repr__s   s   € ØC ¤ÐCÐC°4´:ÐCÐCÐCÐCr)   ÚotherÚobjectÚboolc                óš   — t          |t          ¦  «        st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r#   )Ú
isinstancerJ   ÚNotImplementedr   rK   rM   ©r&   rX   s     r(   Ú__eq__zAttribute.__eq__v   sO   € Ý˜%¥Ñ+Ô+ð 	"Ý!Ð!ð ŒH˜œ	Ò!ð *Ø”
˜eœkÒ)ð*à”
˜eœkÒ)ð	
r)   c                óD   — t          | j        | j        | j        f¦  «        S r#   )Úhashr   rK   rM   rS   s    r(   Ú__hash__zAttribute.__hash__€   s   € Ý�T”X˜tœz¨4¬:Ð6Ñ7Ô7Ð7r)   N)r   r   rK   rL   rM   rN   r    r!   ©r    r   ©r    rL   ©r    r   ©rX   rY   r    rZ   ©r    rN   )r+   r,   r-   r   Ú
UTF8StringrK   r%   Úpropertyr   rW   r_   rb   © r)   r(   rJ   rJ   `   s¸   € € € € € ð
 Ô)Ô/ð	ð ð ð ð ð ðð ð ñ „Xðð ðð ð ñ „XððDð Dð Dð Dð
ð 
ð 
ð 
ð8ð 8ð 8ð 8ð 8ð 8r)   rJ   c                  óD   — e Zd Zdd„Z ed¦  «        \  ZZZdd„Zdd„Z	dS )Ú
Attributesr8   útyping.Iterable[Attribute]r    r!   c                ó.   — t          |¦  «        | _        d S r#   )ÚlistÚ_attributes)r&   r8   s     r(   r%   zAttributes.__init__…   s   € õ   
Ñ+Ô+ˆÔÐÐr)   rp   r   c                ó   — d| j         › d�S )Nz<Attributes(rV   )rp   rS   s    r(   rW   zAttributes.__repr__�   s   € Ø2˜dÔ.Ð2Ð2Ð2Ð2r)   r   r   rJ   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   rm   r    r!   re   )r   r   r    rJ   )
r+   r,   r-   r%   r   Ú__len__Ú__iter__Ú__getitem__rW   rt   rj   r)   r(   rl   rl   „   so   € € € € € ð,ð ,ð ,ð ,ð &<Ð%;¸MÑ%JÔ%JÑ"€GˆX�{ð3ð 3ð 3ð 3ðFð Fð Fð Fð Fð Fr)   rl   c                  ó   — e Zd ZdZdZdS )ÚVersionr   é   N)r+   r,   r-   Úv1Úv3rj   r)   r(   ry   ry   ˜   s   € € € € € Ø	
€BØ	
€B€B€Br)   ry   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )	ÚInvalidVersionr   r   Úparsed_versionrN   r    r!   c                óX   •— t          ¦   «                              |¦  «         || _        d S r#   )r$   r%   r   )r&   r   r   r'   s      €r(   r%   zInvalidVersion.__init__ž   s)   ø€ Ý‰Œ×Ò˜ÑÔÐØ,ˆÔÐÐr)   )r   r   r   rN   r    r!   r*   r/   s   @r(   r~   r~   �   s=   ø€ € € € € ð-ð -ð -ð -ð -ð -ð -ð -ð -ð -r)   r~   c                  óú  — e Zd Zej        d,d„¦   «         Zeej        d-d„¦   «         ¦   «         Zeej        d.d	„¦   «         ¦   «         Zej        d/d„¦   «         Z	eej        d0d„¦   «         ¦   «         Z
eej        d1d„¦   «         ¦   «         Zeej        d1d„¦   «         ¦   «         Zeej        d1d„¦   «         ¦   «         Zeej        d1d„¦   «         ¦   «         Zeej        d2d„¦   «         ¦   «         Zeej        d2d„¦   «         ¦   «         Zeej        d3d„¦   «         ¦   «         Zeej        d0d„¦   «         ¦   «         Zeej        d4d„¦   «         ¦   «         Zeej        d5d„¦   «         ¦   «         Zeej        d6d„¦   «         ¦   «         Zeej        d6d„¦   «         ¦   «         Zeej        d6d„¦   «         ¦   «         Zej        d7d#„¦   «         Zej        d-d$„¦   «         Zej        d8d'„¦   «         Zej        d9d*„¦   «         Zd+S ):ÚCertificateÚ	algorithmúhashes.HashAlgorithmr    rL   c                ó   — dS ©z4
        Returns bytes using digest passed.
        Nrj   ©r&   rƒ   s     r(   ÚfingerprintzCertificate.fingerprint¤   ó   € € € r)   rN   c                ó   — dS )z3
        Returns certificate serial number
        Nrj   rS   s    r(   Úserial_numberzCertificate.serial_numberª   r‰   r)   ry   c                ó   — dS )z1
        Returns the certificate version
        Nrj   rS   s    r(   ÚversionzCertificate.version±   r‰   r)   r   c                ó   — dS ©z(
        Returns the public key
        Nrj   rS   s    r(   Ú
public_keyzCertificate.public_key¸   r‰   r)   r   c                ó   — dS )zA
        Returns the ObjectIdentifier of the public key.
        Nrj   rS   s    r(   Úpublic_key_algorithm_oidz$Certificate.public_key_algorithm_oid¾   r‰   r)   r?   c                ó   — dS )z?
        Not before time (represented as UTC datetime)
        Nrj   rS   s    r(   Únot_valid_beforezCertificate.not_valid_beforeÅ   r‰   r)   c                ó   — dS )zK
        Not before time (represented as a non-naive UTC datetime)
        Nrj   rS   s    r(   Únot_valid_before_utcz Certificate.not_valid_before_utcÌ   r‰   r)   c                ó   — dS )z>
        Not after time (represented as UTC datetime)
        Nrj   rS   s    r(   Únot_valid_afterzCertificate.not_valid_afterÓ   r‰   r)   c                ó   — dS )zJ
        Not after time (represented as a non-naive UTC datetime)
        Nrj   rS   s    r(   Únot_valid_after_utczCertificate.not_valid_after_utcÚ   r‰   r)   r   c                ó   — dS )z1
        Returns the issuer name object.
        Nrj   rS   s    r(   ÚissuerzCertificate.issuerá   r‰   r)   c                ó   — dS ©z2
        Returns the subject name object.
        Nrj   rS   s    r(   ÚsubjectzCertificate.subjectè   r‰   r)   úhashes.HashAlgorithm | Nonec                ó   — dS ©zt
        Returns a HashAlgorithm corresponding to the type of the digest signed
        in the certificate.
        Nrj   rS   s    r(   Úsignature_hash_algorithmz$Certificate.signature_hash_algorithmï   r‰   r)   c                ó   — dS ©zJ
        Returns the ObjectIdentifier of the signature algorithm.
        Nrj   rS   s    r(   Úsignature_algorithm_oidz#Certificate.signature_algorithm_oidù   r‰   r)   ú0None | padding.PSS | padding.PKCS1v15 | ec.ECDSAc                ó   — dS ©z=
        Returns the signature algorithm parameters.
        Nrj   rS   s    r(   Úsignature_algorithm_parametersz*Certificate.signature_algorithm_parameters   r‰   r)   r   c                ó   — dS )z/
        Returns an Extensions object.
        Nrj   rS   s    r(   r2   zCertificate.extensions	  r‰   r)   c                ó   — dS ©z.
        Returns the signature bytes.
        Nrj   rS   s    r(   Ú	signaturezCertificate.signature  r‰   r)   c                ó   — dS )zR
        Returns the tbsCertificate payload bytes as defined in RFC 5280.
        Nrj   rS   s    r(   Útbs_certificate_bytesz!Certificate.tbs_certificate_bytes  r‰   r)   c                ó   — dS )zh
        Returns the tbsCertificate payload bytes with the SCT list extension
        stripped.
        Nrj   rS   s    r(   Útbs_precertificate_bytesz$Certificate.tbs_precertificate_bytes  r‰   r)   rX   rY   rZ   c                ó   — dS ©z"
        Checks equality.
        Nrj   r^   s     r(   r_   zCertificate.__eq__&  r‰   r)   c                ó   — dS ©z"
        Computes a hash.
        Nrj   rS   s    r(   rb   zCertificate.__hash__,  r‰   r)   Úencodingúserialization.Encodingc                ó   — dS )zB
        Serializes the certificate to PEM or DER format.
        Nrj   ©r&   r·   s     r(   Úpublic_byteszCertificate.public_bytes2  r‰   r)   rœ   r!   c                ó   — dS )zÕ
        This method verifies that certificate issuer name matches the
        issuer subject name and that the certificate is signed by the
        issuer's private key. No other validation is performed.
        Nrj   )r&   rœ   s     r(   Úverify_directly_issued_byz%Certificate.verify_directly_issued_by8  r‰   r)   N©rƒ   r„   r    rL   rg   )r    ry   ©r    r   rc   ©r    r?   ©r    r   ©r    r    ©r    r§   ©r    r   rd   rf   ©r·   r¸   r    rL   )rœ   r‚   r    r!   )r+   r,   r-   ÚabcÚabstractmethodrˆ   ri   r‹   r�   r�   r’   r”   r–   r˜   rš   rœ   rŸ   r£   r¦   rª   r2   r®   r°   r²   r_   rb   r»   r½   rj   r)   r(   r‚   r‚   £   sÊ  € € € € € ØÔðð ð ñ Ôðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 	Ôðð ð ñ Ôðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð ð r)   r‚   )Ú	metaclassc                  óÖ   — e Zd Zeej        d
d„¦   «         ¦   «         Zeej        dd„¦   «         ¦   «         Zeej        dd„¦   «         ¦   «         Zeej        dd„¦   «         ¦   «         Z	d	S )ÚRevokedCertificater    rN   c                ó   — dS )zG
        Returns the serial number of the revoked certificate.
        Nrj   rS   s    r(   r‹   z RevokedCertificate.serial_numberF  r‰   r)   r?   c                ó   — dS )zH
        Returns the date of when this certificate was revoked.
        Nrj   rS   s    r(   Úrevocation_datez"RevokedCertificate.revocation_dateM  r‰   r)   c                ó   — dS )zl
        Returns the date of when this certificate was revoked as a non-naive
        UTC datetime.
        Nrj   rS   s    r(   Úrevocation_date_utcz&RevokedCertificate.revocation_date_utcT  r‰   r)   r   c                ó   — dS )zW
        Returns an Extensions object containing a list of Revoked extensions.
        Nrj   rS   s    r(   r2   zRevokedCertificate.extensions\  r‰   r)   Nrg   rÀ   rÄ   )
r+   r,   r-   ri   rÆ   rÇ   r‹   rÍ   rÏ   r2   rj   r)   r(   rÊ   rÊ   E  sÊ   € € € € € ØØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð ð r)   rÊ   c                  óv   — e Zd Zdd„Zedd	„¦   «         Zedd
„¦   «         Zedd„¦   «         Zedd„¦   «         ZdS )Ú_RawRevokedCertificater‹   rN   rÍ   r?   r2   r   c                ó0   — || _         || _        || _        d S r#   ©Ú_serial_numberÚ_revocation_dateÚ_extensions©r&   r‹   rÍ   r2   s       r(   r%   z_RawRevokedCertificate.__init__i  ó"   € ð ,ˆÔØ /ˆÔØ%ˆÔÐÐr)   r    c                ó   — | j         S r#   )rÕ   rS   s    r(   r‹   z$_RawRevokedCertificate.serial_numbers  s   € àÔ"Ð"r)   c                óR   — t          j        dt          j        d¬¦  «         | j        S )Nuk   Properties that return a naÃ¯ve datetime object have been deprecated. Please switch to revocation_date_utc.rz   )Ú
stacklevel)ÚwarningsÚwarnr   ÚDeprecatedIn42rÖ   rS   s    r(   rÍ   z&_RawRevokedCertificate.revocation_datew  s5   € åŒð@åÔ Øð		
ñ 	
ô 	
ð 	
ð Ô$Ð$r)   c                óV   — | j                              t          j        j        ¬¦  «        S )NrA   )rÖ   rF   rD   ÚtimezoneÚutcrS   s    r(   rÏ   z*_RawRevokedCertificate.revocation_date_utc�  s"   € àÔ$×,Ò,µHÔ4EÔ4IÐ,ÑJÔJÐJr)   c                ó   — | j         S r#   )r×   rS   s    r(   r2   z!_RawRevokedCertificate.extensions…  s   € àÔÐr)   N)r‹   rN   rÍ   r?   r2   r   rg   rÀ   rÄ   )	r+   r,   r-   r%   ri   r‹   rÍ   rÏ   r2   rj   r)   r(   rÒ   rÒ   h  s¬   € € € € € ð&ð &ð &ð &ð ð#ð #ð #ñ „Xð#ð ð%ð %ð %ñ „Xð%ð ðKð Kð Kñ „XðKð ð ð  ð  ñ „Xð ð  ð  r)   rÒ   c                  óˆ  — e Zd Zej        d3d„¦   «         Zej        d4d„¦   «         Zej        d5d„¦   «         Zeej        d6d„¦   «         ¦   «         Z	eej        d7d„¦   «         ¦   «         Z
eej        d8d„¦   «         ¦   «         Zeej        d9d„¦   «         ¦   «         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eej        d<d„¦   «         ¦   «         Zeej        d=d„¦   «         ¦   «         Zeej        d=d„¦   «         ¦   «         Zej        d>d"„¦   «         Zej        d?d#„¦   «         Zej        d@d&„¦   «         Zej        dAd)„¦   «         Zej        dBd,„¦   «         Zej        dCd.„¦   «         Zej        dDd1„¦   «         Zd2S )EÚCertificateRevocationListr·   r¸   r    rL   c                ó   — dS )z:
        Serializes the CRL to PEM or DER format.
        Nrj   rº   s     r(   r»   z&CertificateRevocationList.public_bytes‹  r‰   r)   rƒ   r„   c                ó   — dS r†   rj   r‡   s     r(   rˆ   z%CertificateRevocationList.fingerprint‘  r‰   r)   r‹   rN   úRevokedCertificate | Nonec                ó   — dS )zs
        Returns an instance of RevokedCertificate or None if the serial_number
        is not in the CRL.
        Nrj   )r&   r‹   s     r(   Ú(get_revoked_certificate_by_serial_numberzBCertificateRevocationList.get_revoked_certificate_by_serial_number—  r‰   r)   r    c                ó   — dS r¢   rj   rS   s    r(   r£   z2CertificateRevocationList.signature_hash_algorithm   r‰   r)   r   c                ó   — dS r¥   rj   rS   s    r(   r¦   z1CertificateRevocationList.signature_algorithm_oidª  r‰   r)   r§   c                ó   — dS r©   rj   rS   s    r(   rª   z8CertificateRevocationList.signature_algorithm_parameters±  r‰   r)   r   c                ó   — dS )zC
        Returns the X509Name with the issuer of this CRL.
        Nrj   rS   s    r(   rœ   z CertificateRevocationList.issuerº  r‰   r)   údatetime.datetime | Nonec                ó   — dS )z?
        Returns the date of next update for this CRL.
        Nrj   rS   s    r(   Únext_updatez%CertificateRevocationList.next_updateÁ  r‰   r)   c                ó   — dS )zc
        Returns the date of next update for this CRL as a non-naive UTC
        datetime.
        Nrj   rS   s    r(   Únext_update_utcz)CertificateRevocationList.next_update_utcÈ  r‰   r)   r?   c                ó   — dS )z?
        Returns the date of last update for this CRL.
        Nrj   rS   s    r(   Úlast_updatez%CertificateRevocationList.last_updateÐ  r‰   r)   c                ó   — dS )zc
        Returns the date of last update for this CRL as a non-naive UTC
        datetime.
        Nrj   rS   s    r(   Úlast_update_utcz)CertificateRevocationList.last_update_utc×  r‰   r)   r   c                ó   — dS )zS
        Returns an Extensions object containing a list of CRL extensions.
        Nrj   rS   s    r(   r2   z$CertificateRevocationList.extensionsß  r‰   r)   c                ó   — dS r­   rj   rS   s    r(   r®   z#CertificateRevocationList.signatureæ  r‰   r)   c                ó   — dS )zO
        Returns the tbsCertList payload bytes as defined in RFC 5280.
        Nrj   rS   s    r(   Útbs_certlist_bytesz,CertificateRevocationList.tbs_certlist_bytesí  r‰   r)   rX   rY   rZ   c                ó   — dS r´   rj   r^   s     r(   r_   z CertificateRevocationList.__eq__ô  r‰   r)   c                ó   — dS )z<
        Number of revoked certificates in the CRL.
        Nrj   rS   s    r(   ru   z!CertificateRevocationList.__len__ú  r‰   r)   ÚidxrÊ   c                ó   — d S r#   rj   ©r&   rþ   s     r(   rw   z%CertificateRevocationList.__getitem__   s   € Ø;>¸3r)   Úsliceúlist[RevokedCertificate]c                ó   — d S r#   rj   r   s     r(   rw   z%CertificateRevocationList.__getitem__  s   € ØCFÀ3r)   úint | sliceú-RevokedCertificate | list[RevokedCertificate]c                ó   — dS )zS
        Returns a revoked certificate (or slice of revoked certificates).
        Nrj   r   s     r(   rw   z%CertificateRevocationList.__getitem__  r‰   r)   ú#typing.Iterator[RevokedCertificate]c                ó   — dS )z8
        Iterator over the revoked certificates
        Nrj   rS   s    r(   rv   z"CertificateRevocationList.__iter__  r‰   r)   r�   r   c                ó   — dS )zQ
        Verifies signature of revocation list against given public key.
        Nrj   )r&   r�   s     r(   Úis_signature_validz,CertificateRevocationList.is_signature_valid  r‰   r)   NrÅ   r¾   )r‹   rN   r    rè   rÂ   rc   rÃ   rÁ   )r    rï   rÀ   rÄ   rd   rf   rg   )rþ   rN   r    rÊ   )rþ   r  r    r  )rþ   r  r    r  )r    r  )r�   r   r    rZ   )r+   r,   r-   rÆ   rÇ   r»   rˆ   rê   ri   r£   r¦   rª   rœ   rñ   ró   rõ   r÷   r2   r®   rû   r_   ru   ÚtypingÚoverloadrw   rv   r
  rj   r)   r(   rå   rå   Š  s\  € € € € € ØÔðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 „_Ø>Ð>Ð>ñ „_Ø>à„_ØFÐFÐFñ „_ØFàÔðð ð ñ Ôðð 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð ð r)   rå   c                  óz  — e Zd Zej        d d„¦   «         Zej        d!d„¦   «         Zej        d"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eej        d'd„¦   «         ¦   «         Zeej        d(d„¦   «         ¦   «         Zej        d)d„¦   «         Zeej        d*d„¦   «         ¦   «         Zeej        d*d„¦   «         ¦   «         Zeej        d+d„¦   «         ¦   «         Zej        d,d„¦   «         ZdS )-ÚCertificateSigningRequestrX   rY   r    rZ   c                ó   — dS r´   rj   r^   s     r(   r_   z CertificateSigningRequest.__eq__!  r‰   r)   rN   c                ó   — dS r¶   rj   rS   s    r(   rb   z"CertificateSigningRequest.__hash__'  r‰   r)   r   c                ó   — dS r�   rj   rS   s    r(   r�   z$CertificateSigningRequest.public_key-  r‰   r)   r   c                ó   — dS rž   rj   rS   s    r(   rŸ   z!CertificateSigningRequest.subject3  r‰   r)   r    c                ó   — dS r¢   rj   rS   s    r(   r£   z2CertificateSigningRequest.signature_hash_algorithm:  r‰   r)   r   c                ó   — dS r¥   rj   rS   s    r(   r¦   z1CertificateSigningRequest.signature_algorithm_oidD  r‰   r)   r§   c                ó   — dS r©   rj   rS   s    r(   rª   z8CertificateSigningRequest.signature_algorithm_parametersK  r‰   r)   r   c                ó   — dS )z@
        Returns the extensions in the signing request.
        Nrj   rS   s    r(   r2   z$CertificateSigningRequest.extensionsT  r‰   r)   rl   c                ó   — dS )z/
        Returns an Attributes object.
        Nrj   rS   s    r(   r8   z$CertificateSigningRequest.attributes[  r‰   r)   r·   r¸   rL   c                ó   — dS )z;
        Encodes the request to PEM or DER format.
        Nrj   rº   s     r(   r»   z&CertificateSigningRequest.public_bytesb  r‰   r)   c                ó   — dS r­   rj   rS   s    r(   r®   z#CertificateSigningRequest.signatureh  r‰   r)   c                ó   — dS )zd
        Returns the PKCS#10 CertificationRequestInfo bytes as defined in RFC
        2986.
        Nrj   rS   s    r(   Útbs_certrequest_bytesz/CertificateSigningRequest.tbs_certrequest_byteso  r‰   r)   c                ó   — dS )z8
        Verifies signature of signing request.
        Nrj   rS   s    r(   r
  z,CertificateSigningRequest.is_signature_validw  r‰   r)   r   c                ó   — dS )z:
        Get the attribute value for a given OID.
        Nrj   )r&   r   s     r(   rt   z/CertificateSigningRequest.get_attribute_for_oid~  r‰   r)   Nrf   rg   r¿   rÁ   rÂ   rc   rÃ   rÄ   )r    rl   rÅ   rd   )r    rZ   )r   r   r    rL   )r+   r,   r-   rÆ   rÇ   r_   rb   r�   ri   rŸ   r£   r¦   rª   r2   r8   r»   r®   r  r
  rt   rj   r)   r(   r  r     sd  € € € € € ØÔðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 	Ôðð ð ñ Ôðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 	Ôðð ð ñ Ôðð ð r)   r  c                  óN   — 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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_namer×   rp   )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×   rp   ©r&   r$  s     r(   r   z-CertificateSigningRequestBuilder.subject_name£  s\   € õ ˜$¥Ñ%Ô%ð 	;ÝÐ9Ñ:Ô:Ð:ØÔÐ)ÝÐEÑFÔFÐFÝ/Ø�$Ô" DÔ$4ñ
ô 
ð 	
r)   Úextvalr   ÚcriticalrZ   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#  rp   ©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   rK   rL   r0  ú_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(  rL   r   r=   rp   rK   r  r#  r×   )r&   r   rK   r0  Ú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Úprivate_keyr   rƒ   ú_AllowedHashTypes | NoneÚbackendú
typing.Anyr6  ú%padding.PSS | padding.PKCS1v15 | Noner  c               ó  — | j         €t          d¦  «        ‚|�^t          |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.
        Nz/A CertificateSigningRequest must have a subjectúPadding must be PSS or PKCS1v15ú&Padding is only supported for RSA keys)r#  r5   r\   r   ÚPSSÚPKCS1v15r(  r   ÚRSAPrivateKeyÚ	rust_x509Úcreate_x509_csr©r&   r7  rƒ   r9  r6  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åÔ(Ø�+˜y¨+ñ
ô 
ð 	
r)   )r   r!  r2   r3   r8   r9   )r$  r   r    r  )r*  r   r+  rZ   r    r  )r   r   rK   rL   r0  r1  r    r  r#   )
r7  r   rƒ   r8  r9  r:  r6  r;  r    r  )r+   r,   r-   r%   r   r/  r4  rE  rj   r)   r(   r  r  •  s²   € € € € € ð %)Ø57ØGIð	&ð &ð &ð &ð &ð

ð 

ð 

ð 

ð
ð 
ð 
ð 
ð. "&ð
ð 
ð 
ð 
ð 
ð 
ðH #ð	
ð >Bð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r)   r  c                  ó|   — e Zd ZU ded<   ddddddg fd0d„Zd1d„Zd1d„Zd2d„Zd3d„Zd4d„Z	d4d„Z
d5d$„Z	 d6dd%œd7d/„ZdS )8ÚCertificateBuilderr3   r×   NÚissuer_namer!  r   r�   ú CertificatePublicKeyTypes | Noner‹   ú
int | Noner”   rï   r˜   r2   r    r!   c                óŠ   — t           j        | _        || _        || _        || _        || _        || _        || _        || _	        d S r#   )
ry   r|   Ú_versionÚ_issuer_namer#  Ú_public_keyrÕ   Ú_not_valid_beforeÚ_not_valid_afterr×   )r&   rH  r   r�   r‹   r”   r˜   r2   s           r(   r%   zCertificateBuilder.__init__ý  sK   € õ  œ
ˆŒØ'ˆÔØ)ˆÔØ%ˆÔØ+ˆÔØ!1ˆÔØ /ˆÔØ%ˆÔÐÐr)   r$  r   c           	     óÜ   — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          || j        | j        | j        | j	        | j
        | j        ¦  «        S )z3
        Sets the CA's distinguished name.
        r&  Nú%The issuer name may only be set once.)r\   r   r(  rM  r5   rG  r#  rN  rÕ   rO  rP  r×   r)  s     r(   rH  zCertificateBuilder.issuer_name  sv   € õ ˜$¥Ñ%Ô%ð 	;ÝÐ9Ñ:Ô:Ð:ØÔÐ(ÝÐDÑEÔEÐEÝ!ØØÔØÔØÔØÔ"ØÔ!ØÔñ
ô 
ð 	
r)   c           	     óÜ   — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          | j        || j        | j        | j	        | j
        | j        ¦  «        S )z:
        Sets the requestor's distinguished name.
        r&  Nr'  )r\   r   r(  r#  r5   rG  rM  rN  rÕ   rO  rP  r×   r)  s     r(   r   zCertificateBuilder.subject_name"  sv   € õ ˜$¥Ñ%Ô%ð 	;ÝÐ9Ñ:Ô:Ð:ØÔÐ)ÝÐEÑFÔFÐFÝ!ØÔØØÔØÔØÔ"ØÔ!ØÔñ
ô 
ð 	
r)   Úkeyr   c           
     ól  — t          |t          j        t          j        t
          j        t          j        t          j
        t          j        t          j        f¦  «        st          d¦  «        ‚| j        �t#          d¦  «        ‚t%          | j        | j        || j        | j        | j        | j        ¦  «        S )zT
        Sets the requestor's public key (as found in the signing request).
        z‰Expecting one of DSAPublicKey, RSAPublicKey, EllipticCurvePublicKey, Ed25519PublicKey, Ed448PublicKey, X25519PublicKey, or X448PublicKey.Nz$The public key may only be set once.)r\   r   ÚDSAPublicKeyr   ÚRSAPublicKeyr	   ÚEllipticCurvePublicKeyr   ÚEd25519PublicKeyr
   ÚEd448PublicKeyr   ÚX25519PublicKeyr   ÚX448PublicKeyr(  rN  r5   rG  rM  r#  rÕ   rO  rP  r×   )r&   rT  s     r(   r�   zCertificateBuilder.public_key4  s´   € õ ØåÔ ÝÔ ÝÔ)ÝÔ(ÝÔ$ÝÔ&ÝÔ"ðñ
ô 
ð 	õ ð!ñô ð ð ÔÐ'ÝÐCÑDÔDÐDÝ!ØÔØÔØØÔØÔ"ØÔ!ØÔñ
ô 
ð 	
r)   ÚnumberrN   c           	     óT  — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚|dk    rt	          d¦  «        ‚|                     ¦   «         dk    rt	          d¦  «        ‚t          | j        | j        | j	        || j
        | j        | j        ¦  «        S )z5
        Sets the certificate serial number.
        ú'Serial number must be of integral type.Nú'The serial number may only be set once.r   z%The serial number should be positive.é    ú3The serial number should not be more than 159 bits.)r\   rN   r(  rÕ   r5   Ú
bit_lengthrG  rM  r#  rN  rO  rP  r×   ©r&   r]  s     r(   r‹   z CertificateBuilder.serial_numberY  s¿   € õ ˜&¥#Ñ&Ô&ð 	GÝÐEÑFÔFÐFØÔÐ*ÝÐFÑGÔGÐGØ�QŠ;ˆ;ÝÐDÑEÔEÐEð ×ÒÑÔ #Ò%Ð%ÝØEñô ð õ "ØÔØÔØÔØØÔ"ØÔ!ØÔñ
ô 
ð 	
r)   r>   r?   c           	     óz  — t          |t          j        ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          |¦  «        }|t          k     rt	          d¦  «        ‚| j        �|| j        k    rt	          d¦  «        ‚t          | j	        | j
        | j        | j        || j        | j        ¦  «        S )z7
        Sets the certificate activation time.
        úExpecting datetime object.Nz*The not valid before may only be set once.z>The not valid before date must be on or after 1950 January 1).zBThe not valid before date must be before the not valid after date.)r\   rD   r(  rO  r5   rH   Ú_EARLIEST_UTC_TIMErP  rG  rM  r#  rN  rÕ   r×   ©r&   r>   s     r(   r”   z#CertificateBuilder.not_valid_beforet  sÚ   € õ ˜$¥Ô 1Ñ2Ô2ð 	:ÝÐ8Ñ9Ô9Ð9ØÔ!Ð-ÝÐIÑJÔJÐJÝ)¨$Ñ/Ô/ˆØÕ$Ò$Ð$Ýð$ñô ð ð Ô Ð,°¸Ô8MÒ1MÐ1MÝðñô ð õ "ØÔØÔØÔØÔØØÔ!ØÔñ
ô 
ð 	
r)   c           	     óz  — t          |t          j        ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          |¦  «        }|t          k     rt	          d¦  «        ‚| j        �|| j        k     rt	          d¦  «        ‚t          | j	        | j
        | j        | j        | j        || j        ¦  «        S )z7
        Sets the certificate expiration time.
        rf  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\   rD   r(  rP  r5   rH   rg  rO  rG  rM  r#  rN  rÕ   r×   rh  s     r(   r˜   z"CertificateBuilder.not_valid_after‘  sÛ   € õ ˜$¥Ô 1Ñ2Ô2ð 	:ÝÐ8Ñ9Ô9Ð9ØÔ Ð,ÝÐHÑIÔIÐIÝ)¨$Ñ/Ô/ˆØÕ$Ò$Ð$Ýð#ñô ð ð
 Ô"Ð.Ø�tÔ-Ò-Ð-åðñô ð õ "ØÔØÔØÔØÔØÔ"ØØÔñ
ô 
ð 	
r)   r*  r   r+  rZ   c           
     ó  — t          |t          ¦  «        st          d¦  «        ‚t          |j        ||¦  «        }t          || j        ¦  «         t          | j        | j	        | j
        | j        | j        | j        g | j        ¢|‘¦  «        S )z=
        Adds an X.509 extension to the certificate.
        r-  )r\   r   r(  r   r   r7   r×   rG  rM  r#  rN  rÕ   rO  rP  r.  s       r(   r/  z CertificateBuilder.add_extension±  s’   € õ ˜&¥-Ñ0Ô0ð 	BÝÐ@ÑAÔAÐAå˜fœj¨(°FÑ;Ô;ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@å!ØÔØÔØÔØÔØÔ"ØÔ!Ø*ˆdÔÐ* 	Ð*ñ
ô 
ð 	
r)   r5  r7  r   rƒ   r8  r9  r:  r6  r;  r‚   c               óø  — | j         €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚| j        €t          d¦  «        ‚|�^t          |t          j	        t          j
        f¦  «        st          d¦  «        ‚t          |t          j        ¦  «        st          d	¦  «        ‚t          j        | |||¦  «        S )
zC
        Signs the certificate using the CA's private key.
        Nz&A certificate must have a subject namez&A certificate must have an issuer namez'A certificate must have a serial numberz/A certificate must have a not valid before timez.A certificate must have a not valid after timez$A certificate must have a public keyr=  r>  )r#  r5   rM  rÕ   rO  rP  rN  r\   r   r?  r@  r(  r   rA  rB  Úcreate_x509_certificaterD  s        r(   rE  zCertificateBuilder.signÇ  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àÐ"Ý˜k­G¬K½Ô9IÐ+JÑKÔKð CÝÐ AÑBÔBÐBÝ˜k­3Ô+<Ñ=Ô=ð JÝÐ HÑIÔIÐIåÔ0Ø�+˜y¨+ñ
ô 
ð 	
r)   )rH  r!  r   r!  r�   rI  r‹   rJ  r”   rï   r˜   rï   r2   r3   r    r!   )r$  r   r    rG  )rT  r   r    rG  )r]  rN   r    rG  )r>   r?   r    rG  )r*  r   r+  rZ   r    rG  r#   )
r7  r   rƒ   r8  r9  r:  r6  r;  r    r‚   )r+   r,   r-   Ú__annotations__r%   rH  r   r�   r‹   r”   r˜   r/  rE  rj   r)   r(   rG  rG  ú  s  € € € € € € Ø/Ð/Ð/Ñ/ð $(Ø$(Ø7;Ø$(Ø59Ø48Ø57ð&ð &ð &ð &ð &ð&
ð 
ð 
ð 
ð$
ð 
ð 
ð 
ð$#
ð #
ð #
ð #
ðJ
ð 
ð 
ð 
ð6
ð 
ð 
ð 
ð:
ð 
ð 
ð 
ð@
ð 
ð 
ð 
ð4 #ð	%
ð >Bð%
ð %
ð %
ð %
ð %
ð %
ð %
ð %
r)   rG  c                  ór   — 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
dS )/Ú CertificateRevocationListBuilderr3   r×   r  Ú_revoked_certificatesNrH  r!  rõ   rï   rñ   r2   Úrevoked_certificatesc                óL   — || _         || _        || _        || _        || _        d S r#   )rM  Ú_last_updateÚ_next_updater×   rp  )r&   rH  rõ   rñ   r2   rq  s         r(   r%   z)CertificateRevocationListBuilder.__init__ó  s2   € ð (ˆÔØ'ˆÔØ'ˆÔØ%ˆÔØ%9ˆÔ"Ð"Ð"r)   r   r    c                óÄ   — t          |t          ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          || j        | j        | j        | j	        ¦  «        S )Nr&  rR  )
r\   r   r(  rM  r5   ro  rs  rt  r×   rp  )r&   rH  s     r(   rH  z,CertificateRevocationListBuilder.issuer_name  sj   € õ ˜+¥tÑ,Ô,ð 	;ÝÐ9Ñ:Ô:Ð:ØÔÐ(ÝÐDÑEÔEÐEÝ/ØØÔØÔØÔØÔ&ñ
ô 
ð 	
r)   r?   c                ób  — t          |t          j        ¦  «        st          d¦  «        ‚| j        �t	          d¦  «        ‚t          |¦  «        }|t          k     rt	          d¦  «        ‚| j        �|| j        k    rt	          d¦  «        ‚t          | j	        || j        | j
        | j        ¦  «        S )Nrf  ú!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\   rD   r(  rs  r5   rH   rg  rt  ro  rM  r×   rp  )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 )Nrf  rw  rx  z8The next update date must be after the last update date.)r\   rD   r(  rt  r5   rH   rg  rs  ro  rM  r×   rp  )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+  rZ   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×   ro  rM  rs  rt  rp  r.  s       r(   r/  z.CertificateRevocationListBuilder.add_extension@  s†   € õ ˜&¥-Ñ0Ô0ð 	BÝÐ@ÑAÔAÐAå˜fœj¨(°FÑ;Ô;ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@Ý/ØÔØÔØÔØ*ˆdÔÐ* 	Ð*ØÔ&ñ
ô 
ð 	
r)   Úrevoked_certificaterÊ   c                óª   — t          |t          ¦  «        st          d¦  «        ‚t          | j        | j        | j        | j        g | j        ¢|‘¦  «        S )z8
        Adds a revoked certificate to the CRL.
        z)Must be an instance of RevokedCertificate)	r\   rÊ   r(  ro  rM  rs  rt  r×   rp  )r&   r{  s     r(   Úadd_revoked_certificatez8CertificateRevocationListBuilder.add_revoked_certificateS  sc   € õ Ð-Õ/AÑBÔBð 	IÝÐGÑHÔHÐHå/ØÔØÔØÔØÔØ>ˆdÔ(Ð>Ð*=Ð>ñ
ô 
ð 	
r)   r5  r7  r   rƒ   r8  r9  r:  r6  r;  rå   c               ót  — | 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          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>  )rM  r5   rs  rt  r\   r   r?  r@  r(  r   rA  rB  Úcreate_x509_crlrD  s        r(   rE  z%CertificateRevocationListBuilder.signd  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åÔ(Ø�+˜y¨+ñ
ô 
ð 	
r)   )
rH  r!  rõ   rï   rñ   rï   r2   r3   rq  r  )rH  r   r    ro  )rõ   r?   r    ro  )rñ   r?   r    ro  )r*  r   r+  rZ   r    ro  )r{  rÊ   r    ro  r#   )
r7  r   rƒ   r8  r9  r:  r6  r;  r    rå   )r+   r,   r-   rm  r%   rH  rõ   rñ   r/  r}  rE  rj   r)   r(   ro  ro  ï  sê   € € € € € € Ø/Ð/Ð/Ñ/Ø3Ð3Ð3Ñ3ð $(Ø04Ø04Ø57Ø9;ð:ð :ð :ð :ð :ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð0
ð 
ð 
ð 
ð0
ð 
ð 
ð 
ð&
ð 
ð 
ð 
ð* #ð	
ð >Bð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r)   ro  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‹   rJ  rÍ   rï   r2   r3   c                ó0   — || _         || _        || _        d S r#   rÔ   rØ   s       r(   r%   z"RevokedCertificateBuilder.__init__�  rÙ   r)   r]  rN   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 positivera  rb  )	r\   rN   r(  rÕ   r5   rc  r�  rÖ   r×   rd  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 )Nrf  z)The revocation date may only be set once.z7The revocation date must be on or after 1950 January 1.)
r\   rD   r(  rÖ   r5   rH   rg  r�  rÕ   r×   rh  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+  rZ   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)   r9  r:  rÊ   c                ó´   — | j         €t          d¦  «        ‚| j        €t          d¦  «        ‚t          | j         | j        t	          | j        ¦  «        ¦  «        S )Nz/A revoked certificate must have a serial numberz1A revoked certificate must have a revocation date)rÕ   r5   rÖ   rÒ   r   r×   )r&   r9  s     r(   ÚbuildzRevokedCertificateBuilder.build»  sf   € ØÔÐ&ÝÐNÑOÔOÐOØÔ Ð(ÝØCñô ð õ &ØÔØÔ!Ý�tÔ'Ñ(Ô(ñ
ô 
ð 	
r)   )r‹   rJ  rÍ   rï   r2   r3   )r]  rN   r    r�  )r>   r?   r    r�  )r*  r   r+  rZ   r    r�  r#   )r9  r:  r    rÊ   )r+   r,   r-   r%   r‹   rÍ   r/  r‡  rj   r)   r(   r�  r�  €  s�   € € € € € ð %)Ø48Ø57ð	&ð &ð &ð &ð &ð
ð 
ð 
ð 
ð$
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
r)   r�  rN   c                 ób   — t                                t          j        d¦  «        d¦  «        dz	  S )Né   Úbigr   )rN   Ú
from_bytesÚosÚurandomrj   r)   r(   Úrandom_serial_numberrŽ  É  s#   € Ý�>Š>�"œ* R™.œ.¨%Ñ0Ô0°AÑ5Ð5r)   )r0   r1   r2   r3   r    r!   )r   r   r8   r9   r    r!   )r>   r?   r    r?   rg   )NÚ
__future__r   rÆ   rD   rŒ  r  rÝ   Úcryptographyr   Ú"cryptography.hazmat.bindings._rustr   rB  Úcryptography.hazmat.primitivesr   r   Ú)cryptography.hazmat.primitives.asymmetricr   r	   r
   r   r   r   r   r   Ú/cryptography.hazmat.primitives.asymmetric.typesr   r   r   Úcryptography.x509.extensionsr   r   r   r   Úcryptography.x509.namer   r   Úcryptography.x509.oidr   rg  ÚUnionÚSHA224ÚSHA256ÚSHA384ÚSHA512ÚSHA3_224ÚSHA3_256ÚSHA3_384ÚSHA3_512Ú_AllowedHashTypesÚ	Exceptionr   r7   r=   rH   rJ   rl   ÚEnumry   r~   ÚABCMetar‚   ÚregisterrÊ   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  rG  ro  r�  rŽ  rj   r)   r(   ú<module>r­     s†  ðð
 #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø €€€Ø 	€	€	€	Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð 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ñ -ô -ð -ð[ð [ð [ð [ð [˜CœKð [ñ [ô [ð [ð~ × Ò �YÔ*Ñ +Ô +Ð +ðð ð ð ð  3¤;ð ñ ô ð ð@ × Ò ˜IÔ8Ñ 9Ô 9Ð 9ð ð  ð  ð  ð  Ð/ñ  ô  ð  ðDPð Pð Pð Pð P¨#¬+ð Pñ Pô Pð Pðf × "Ò " 9Ô#FÑ GÔ GÐ Gðbð bð bð bð b¨#¬+ð bñ bô bð bðL × "Ò " 9Ô#FÑ GÔ GÐ Gð &Ô?Ð Ø%Ô?Ð à&ÔAÐ àÔ/Ð ØÔ/Ð àÔ/Ð ØÔ/Ð ðb
ð b
ð b
ð b
ð b
ñ b
ô b
ð b
ðJr
ð r
ð r
ð r
ð r
ñ r
ô r
ð r
ðjN
ð N
ð N
ð N
ð N
ñ N
ô N
ð N
ðbF
ð F
ð F
ð F
ð F
ñ F
ô F
ð F
ðR6ð 6ð 6ð 6ð 6ð 6r)   