§
    (ê[fE�  ã            	      ó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      €úJ/var/www/piapp/venv/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        d/d„¦   «         ¦   «         Z
eej        d/d„¦   «         ¦   «         Zeej        d/d„¦   «         ¦   «         Zeej        d/d„¦   «         ¦   «         Zeej        d0d„¦   «         ¦   «         Zeej        d0d„¦   «         ¦   «         Zeej        d1d„¦   «         ¦   «         Zeej        d2d„¦   «         ¦   «         Zeej        d3d„¦   «         ¦   «         Zeej        d4d„¦   «         ¦   «         Zeej        d5d„¦   «         ¦   «         Zeej        d5d„¦   «         ¦   «         Zeej        d5d„¦   «         ¦   «         Zej        d6d"„¦   «         Zej        d,d#„¦   «         Zej        d7d&„¦   «         Zej        d8d)„¦   «         Zd*S )9Ú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 )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)   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_bytes+  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_by1  r‰   r)   N©rƒ   r„   r    rL   rg   )r    ry   ©r    r   ©r    r?   ©r    r   ©r    rž   rc   ©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¨   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ðð 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð ð 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_number?  r‰   r)   r?   c                ó   — dS )zH
        Returns the date of when this certificate was revoked.
        Nrj   rS   s    r(   Úrevocation_datez"RevokedCertificate.revocation_dateF  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_utcM  r‰   r)   r   c                ó   — dS )zW
        Returns an Extensions object containing a list of Revoked extensions.
        Nrj   rS   s    r(   r2   zRevokedCertificate.extensionsU  r‰   r)   Nrg   r¾   rÂ   )
r+   r,   r-   ri   rÄ   rÅ   r‹   rË   rÍ   r2   rj   r)   r(   rÈ   rÈ   >  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__b  ó"   € ð ,ˆÔØ /ˆÔØ%ˆÔÐÐr)   r    c                ó   — | j         S r#   )rÓ   rS   s    r(   r‹   z$_RawRevokedCertificate.serial_numberl  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_datep  s5   € åŒð@åÔ Øð		
ñ 	
ô 	
ð 	
ð Ô$Ð$r)   c                óV   — | j                              t          j        j        ¬¦  «        S )NrA   )rÔ   rF   rD   ÚtimezoneÚutcrS   s    r(   rÍ   z*_RawRevokedCertificate.revocation_date_utcz  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Ð   a  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__ù  ó   € àˆr)   Úsliceúlist[RevokedCertificate]c                ó   — d S r#   rj   rþ   s     r(   rw   z%CertificateRevocationList.__getitem__ý  rÿ   r)   ú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ã   ƒ  sp  € € € € € ØÔðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 ØÔðð ð ñ Ôñ „Xðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 „_ðð ð ñ „_ðð „_ðð ð ñ „_ðð 	Ôðð ð ñ Ôðð 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð ð 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.subject.  r‰   r)   rž   c                ó   — dS r    rj   rS   s    r(   r¡   z2CertificateSigningRequest.signature_hash_algorithm5  r‰   r)   r   c                ó   — dS r£   rj   rS   s    r(   r¤   z1CertificateSigningRequest.signature_algorithm_oid?  r‰   r)   r¥   c                ó   — dS r§   rj   rS   s    r(   r¨   z8CertificateSigningRequest.signature_algorithm_parametersF  r‰   r)   r   c                ó   — dS )z@
        Returns the extensions in the signing request.
        Nrj   rS   s    r(   r2   z$CertificateSigningRequest.extensionsO  r‰   r)   rl   c                ó   — dS )z/
        Returns an Attributes object.
        Nrj   rS   s    r(   r8   z$CertificateSigningRequest.attributesV  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_bytes]  r‰   r)   c                ó   — dS r«   rj   rS   s    r(   r¬   z#CertificateSigningRequest.signaturec  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_bytesj  r‰   r)   c                ó   — dS )z8
        Verifies signature of signing request.
        Nrj   rS   s    r(   r	  z,CertificateSigningRequest.is_signature_validr  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_oidy  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   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'  rL   r   r=   rp   rK   r  r"  rÕ   )r&   r   rK   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Úprivate_keyr   rƒ   ú_AllowedHashTypes | NoneÚbackendú
typing.Anyr5  ú%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&   r6  rƒ   r8  r5  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   r/  r0  r    r  r#   )
r6  r   rƒ   r7  r8  r9  r5  r:  r    r  )r+   r,   r-   r%   r  r.  r3  rD  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&   rG  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'  rL  r5   rF  r"  rM  rÓ   rN  rO  rÕ   r(  s     r(   rG  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   rF  rL  rM  rÓ   rN  rO  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'  rM  r5   rF  rL  r"  rÓ   rN  rO  rÕ   )r&   rS  s     r(   r�   zCertificateBuilder.public_key/  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_lengthrF  rL  r"  rM  rN  rO  rÕ   ©r&   r\  s     r(   r‹   z CertificateBuilder.serial_numberT  s¿   € õ ˜&¥#Ñ&Ô&ð 	GÝÐEÑFÔFÐFØÔÐ*ÝÐFÑGÔGÐGØ�QŠ;ˆ;ÝÐDÑEÔEÐEð ×ÒÑÔ #Ò%Ð%ÝØHñô ð õ "ØÔØÔØÔØØÔ"ØÔ!ØÔñ
ô 
ð 	
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'  rN  r5   rH   Ú_EARLIEST_UTC_TIMErO  rF  rL  r"  rM  rÓ   rÕ   ©r&   r>   s     r(   r’   z#CertificateBuilder.not_valid_beforeo  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.
        re  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'  rO  r5   rH   rf  rN  rF  rL  r"  rM  rÓ   rÕ   rg  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Õ   rF  rL  r"  rM  rÓ   rN  rO  r-  s       r(   r.  z CertificateBuilder.add_extension¬  s’   € õ ˜&¥-Ñ0Ô0ð 	BÝÐ@ÑAÔAÐAå˜fœj¨(°FÑ;Ô;ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@å!ØÔØÔØÔØÔØÔ"ØÔ!Ø*ˆdÔÐ* 	Ð*ñ
ô 
ð 	
r)   r4  r6  r   rƒ   r7  r8  r9  r5  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   rL  rÓ   rN  rO  rM  r\   r   r>  r?  r'  r   r@  rA  Úcreate_x509_certificaterC  s        r(   rD  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)   )rG  r   r  r   r�   rH  r‹   rI  r’   rí   r–   rí   r2   r3   r    r!   )r#  r   r    rF  )rS  r   r    rF  )r\  rN   r    rF  )r>   r?   r    rF  )r)  r   r*  rZ   r    rF  r#   )
r6  r   rƒ   r7  r8  r9  r5  r:  r    r‚   )r+   r,   r-   Ú__annotations__r%   rG  r  r�   r‹   r’   r–   r.  rD  rj   r)   r(   rF  rF  õ  s  € € € € € € Ø/Ð/Ð/Ñ/ð $(Ø$(Ø7;Ø$(Ø59Ø48Ø57ð&ð &ð &ð &ð &ð&
ð 
ð 
ð 
ð$
ð 
ð 
ð 
ð$#
ð #
ð #
ð #
ðJ
ð 
ð 
ð 
ð6
ð 
ð 
ð 
ð:
ð 
ð 
ð 
ð@
ð 
ð 
ð 
ð4 #ð	%
ð >Bð%
ð %
ð %
ð %
ð %
ð %
ð %
ð %
r)   rF  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_certificatesNrG  r   ró   rí   rï   r2   Úrevoked_certificatesc                óL   — || _         || _        || _        || _        || _        d S r#   )rL  Ú_last_updateÚ_next_updaterÕ   ro  )r&   rG  ró   rï   r2   rp  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%  rQ  )
r\   r   r'  rL  r5   rn  rr  rs  rÕ   ro  )r&   rG  s     r(   rG  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 )Nre  ú!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'  rr  r5   rH   rf  rs  rn  rL  rÕ   ro  )r&   ró   s     r(   ró   z,CertificateRevocationListBuilder.last_update  sÊ   € õ ˜+¥xÔ'8Ñ9Ô9ð 	:ÝÐ8Ñ9Ô9Ð9ØÔÐ(ÝÐ@ÑAÔAÐAÝ0°Ñ=Ô=ˆØÕ+Ò+Ð+ÝØMñô ð ð ÔÐ(¨[¸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 )Nre  rv  rw  z8The next update date must be after the last update date.)r\   rD   r'  rs  r5   rH   rf  rr  rn  rL  rÕ   ro  )r&   rï   s     r(   rï   z,CertificateRevocationListBuilder.next_update#  sÊ   € õ ˜+¥xÔ'8Ñ9Ô9ð 	:ÝÐ8Ñ9Ô9Ð9ØÔÐ(ÝÐ@ÑAÔAÐAÝ0°Ñ=Ô=ˆØÕ+Ò+Ð+ÝØMñô ð ð ÔÐ(¨[¸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Õ   rn  rL  rr  rs  ro  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'  rn  rL  rr  rs  rÕ   ro  )r&   rz  s     r(   Úadd_revoked_certificatez8CertificateRevocationListBuilder.add_revoked_certificateN  sc   € õ Ð-Õ/AÑBÔBð 	IÝÐGÑHÔHÐHå/ØÔØÔØÔØÔØ>ˆdÔ(Ð>Ð*=Ð>ñ
ô 
ð 	
r)   r4  r6  r   rƒ   r7  r8  r9  r5  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=  )rL  r5   rr  rs  r\   r   r>  r?  r'  r   r@  rA  Úcreate_x509_crlrC  s        r(   rD  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åÔ(Ø�+˜y¨+ñ
ô 
ð 	
r)   )
rG  r   ró   rí   rï   rí   r2   r3   rp  r  )rG  r   r    rn  )ró   r?   r    rn  )rï   r?   r    rn  )r)  r   r*  rZ   r    rn  )rz  rÈ   r    rn  r#   )
r6  r   rƒ   r7  r8  r9  r5  r:  r    rã   )r+   r,   r-   rl  r%   rG  ró   rï   r.  r|  rD  rj   r)   r(   rn  rn  ê  sê   € € € € € € Ø/Ð/Ð/Ñ/Ø3Ð3Ð3Ñ3ð $(Ø04Ø04Ø57Ø9;ð:ð :ð :ð :ð :ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð0
ð 
ð 
ð 
ð0
ð 
ð 
ð 
ð&
ð 
ð 
ð 
ð* #ð	
ð >Bð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r)   rn  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‹   rI  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 positiver`  ra  )	r\   rN   r'  rÓ   r5   rb  r€  rÔ   rÕ   rc  s     r(   r‹   z'RevokedCertificateBuilder.serial_number†  s£   € Ý˜&¥#Ñ&Ô&ð 	GÝÐEÑFÔFÐFØÔÐ*ÝÐFÑGÔGÐGØ�QŠ;ˆ;ÝÐCÑDÔDÐDð ×ÒÑÔ #Ò%Ð%ÝØHñô ð õ )Ø�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 )Nre  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   rf  r€  rÓ   rÕ   rg  s     r(   rË   z)RevokedCertificateBuilder.revocation_date˜  s�   € õ ˜$¥Ô 1Ñ2Ô2ð 	:ÝÐ8Ñ9Ô9Ð9ØÔ Ð,ÝÐHÑIÔIÐIÝ)¨$Ñ/Ô/ˆØÕ$Ò$Ð$ÝØLñô ð õ )ØÔ  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)   r8  r9  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&   r8  s     r(   ÚbuildzRevokedCertificateBuilder.build¶  sf   € ØÔÐ&ÝÐNÑOÔOÐOØÔ Ð(ÝØCñô ð õ &ØÔØÔ!Ý�tÔ'Ñ(Ô(ñ
ô 
ð 	
r)   )r‹   rI  rË   rí   r2   r3   )r\  rN   r    r€  )r>   r?   r    r€  )r)  r   r*  rZ   r    r€  r#   )r8  r9  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   rA  Ú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   rf  Ú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  rF  rn  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ñ -ô -ð -ðTð Tð Tð Tð T˜CœKð Tñ Tô Tð Tðp × Ò �YÔ*Ñ +Ô +Ð +ðð ð ð ð  3¤;ð ñ ô ð ð@ × Ò ˜IÔ8Ñ 9Ô 9Ð 9ð ð  ð  ð  ð  Ð/ñ  ô  ð  ðDRð Rð Rð Rð R¨#¬+ð Rñ Rô Rð Rðj × "Ò " 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)   