Ë
    ýQµi]‹  ã            	      óî  — d dl mZ d dlZd dlZd dlZd dlZd dl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jL                  ejN                  ejP                  ejR                  ejT                  ejV                  ejX                  ejZ                  ej\                  f   Z/ G d„ de0«      Z1	 	 	 	 	 	 d5d„Z2	 	 	 	 	 	 d6d„Z3d7d„Z4 G d„ d«      Z5 G d„ d«      Z6 G d„ dejn                  «      Z8 G d„ de0«      Z9 G d„ dejt                  ¬«      Z;e;jy                  e
jv                  «        G d„ dejt                  ¬«      Z=e=jy                  e
jz                  «        G d„ d e=«      Z> G d!„ d"ejt                  ¬«      Z?e?jy                  e
j~                  «        G d#„ d$ejt                  ¬«      Z@e@jy                  e
j€                  «       	 d8	 	 	 	 	 d9d%„ZAd:d&„ZB	 d8	 	 	 	 	 d9d'„ZC	 d8	 	 	 	 	 d;d(„ZD	 d8	 	 	 	 	 d;d)„ZE	 d8	 	 	 	 	 d<d*„ZF	 d8	 	 	 	 	 d<d+„ZG G d,„ d-«      ZH G d.„ d/«      ZI G d0„ d1«      ZJ G d2„ d3«      ZKd=d4„ZLy)>é    )Ú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 )ÚAttributeNotFoundc                ó2   •— t         ‰| �  |«       || _        y ©N)ÚsuperÚ__init__Úoid)ÚselfÚmsgr!   Ú	__class__s      €ú8/usr/lib/python3/dist-packages/cryptography/x509/base.pyr    zAttributeNotFound.__init__8   s   ø€ Ü‰Ñ˜ÔØˆ�ó    )r#   Ústrr!   r   ÚreturnÚNone©Ú__name__Ú
__module__Ú__qualname__r    Ú__classcell__©r$   s   @r%   r   r   7   s   ø„ ÷ñ r&   r   c                óZ   — |D ]&  }|j                   | j                   k(  sŒt        d«      ‚ y )Nz$This extension has already been set.)r!   Ú
ValueError)Ú	extensionÚ
extensionsÚes      r%   Ú_reject_duplicate_extensionr5   =   s1   € ð
 ò EˆØ�5‰5�I—M‘MÓ!ÜÐCÓDÐDñEr&   c                ó:   — |D ]  \  }}}|| k(  sŒt        d«      ‚ y )Nz$This attribute has already been set.)r1   )r!   Ú
attributesÚattr_oidÚ_s       r%   Ú_reject_duplicate_attributer:   G   s.   € ð %ò E‰ˆ�!�QØ�s‹?ÜÐCÓDÐDñEr&   c                ó˜   — | j                   �=| j                  «       }|r|nt        j                  «       }| j	                  d¬«      |z
  S | S )z’Normalizes a datetime to a naive datetime in UTC.

    time -- datetime to normalize. Assumed to be in UTC if not timezone
            aware.
    N)Útzinfo)r<   Ú	utcoffsetÚdatetimeÚ	timedeltaÚreplace)ÚtimeÚoffsets     r%   Ú_convert_to_naive_utc_timerC   S   sG   € ð ‡{�{ÐØ—‘Ó!ˆÙ!‘¤x×'9Ñ'9Ó';ˆØ�|‰| 4ˆ|Ó(¨6Ñ1Ð1àˆr&   c                  óŠ   — e Zd Zej                  j
                  f	 	 	 	 	 	 	 dd„Zed	d„«       Zed
d„«       Zdd„Z	dd„Z
dd„Zy)Ú	Attributec                ó.   — || _         || _        || _        y r   )Ú_oidÚ_valueÚ_type)r"   r!   ÚvaluerI   s       r%   r    zAttribute.__init__b   s   € ð ˆŒ	ØˆŒØˆ�
r&   c                ó   — | j                   S r   )rG   ©r"   s    r%   r!   zAttribute.oidl   s   € à�y‰yÐr&   c                ó   — | j                   S r   )rH   rL   s    r%   rJ   zAttribute.valuep   s   € à�{‰{Ðr&   c                ó<   — d| j                   › d| j                  ›d�S )Nz<Attribute(oid=z, value=ú)>)r!   rJ   rL   s    r%   Ú__repr__zAttribute.__repr__t   s   € Ø  §¡ 
¨(°4·:±:°.ÀÐCÐCr&   c                óÌ   — t        |t        «      st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r   )Ú
isinstancerE   ÚNotImplementedr!   rJ   rI   ©r"   Úothers     r%   Ú__eq__zAttribute.__eq__w   sS   € Ü˜%¤Ô+Ü!Ð!ð �H‰H˜Ÿ	™	Ñ!ò *Ø—
‘
˜eŸk™kÑ)ò*à—
‘
˜eŸk™kÑ)ð	
r&   c                óZ   — t        | j                  | j                  | j                  f«      S r   )Úhashr!   rJ   rI   rL   s    r%   Ú__hash__zAttribute.__hash__�   s    € Ü�T—X‘X˜tŸz™z¨4¯:©:Ð6Ó7Ð7r&   N)r!   r   rJ   ÚbytesrI   Úintr(   r)   ©r(   r   ©r(   rZ   ©r(   r'   ©rU   Úobjectr(   Úbool©r(   r[   )r+   r,   r-   r   Ú
UTF8StringrJ   r    Úpropertyr!   rP   rV   rY   © r&   r%   rE   rE   a   sv   „ ð
 ×)Ñ)×/Ñ/ð	àðð ðð ð	ð
 
óð òó ðð òó ðóDó
ô8r&   rE   c                  óD   — e Zd Z	 	 	 	 dd„Z ed«      \  ZZZdd„Zdd„Z	y)	Ú
Attributesc                ó$   — t        |«      | _        y r   )ÚlistÚ_attributes)r"   r7   s     r%   r    zAttributes.__init__†   s   € ô   
Ó+ˆÕr&   rj   c                ó"   — d| j                   › d�S )Nz<Attributes(rO   )rj   rL   s    r%   rP   zAttributes.__repr__Ž   s   € Ø˜d×.Ñ.Ð/¨rÐ2Ð2r&   c                óV   — | D ]  }|j                   |k(  sŒ|c S  t        d|› d�|«      ‚)NzNo z attribute was found)r!   r   )r"   r!   Úattrs      r%   Úget_attribute_for_oidz Attributes.get_attribute_for_oid‘   s:   € Øò 	ˆDØ�x‰x˜3‹Ø’ð	ô   # c UÐ*>Ð ?ÀÓEÐEr&   N)r7   ztyping.Iterable[Attribute]r(   r)   r^   )r!   r   r(   rE   )
r+   r,   r-   r    r   Ú__len__Ú__iter__Ú__getitem__rP   rn   re   r&   r%   rg   rg   …   s7   „ ð,à.ð,ð 
ó,ñ &<¸MÓ%JÑ"€GˆX�{ó3ôFr&   rg   c                  ó   — e Zd ZdZdZy)ÚVersionr   é   N)r+   r,   r-   Úv1Úv3re   r&   r%   rs   rs   ™   s   „ Ø	
€BØ	
�Br&   rs   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚInvalidVersionc                ó2   •— t         ‰| �  |«       || _        y r   )r   r    Úparsed_version)r"   r#   rz   r$   s      €r%   r    zInvalidVersion.__init__Ÿ   s   ø€ Ü‰Ñ˜ÔØ,ˆÕr&   )r#   r'   rz   r[   r(   r)   r*   r/   s   @r%   rx   rx   ž   s   ø„ ÷-ñ -r&   rx   c                  óh  — 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                  	 	 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                  d"d„«       Zy)#ÚCertificatec                 ó   — y©z4
        Returns bytes using digest passed.
        Nre   ©r"   Ú	algorithms     r%   ÚfingerprintzCertificate.fingerprint¥   ó   � r&   c                 ó   — y)z3
        Returns certificate serial number
        Nre   rL   s    r%   Úserial_numberzCertificate.serial_number«   r‚   r&   c                 ó   — y)z1
        Returns the certificate version
        Nre   rL   s    r%   ÚversionzCertificate.version²   r‚   r&   c                 ó   — y©z(
        Returns the public key
        Nre   rL   s    r%   Ú
public_keyzCertificate.public_key¹   r‚   r&   c                 ó   — y)z?
        Not before time (represented as UTC datetime)
        Nre   rL   s    r%   Únot_valid_beforezCertificate.not_valid_before¿   r‚   r&   c                 ó   — y)z>
        Not after time (represented as UTC datetime)
        Nre   rL   s    r%   Únot_valid_afterzCertificate.not_valid_afterÆ   r‚   r&   c                 ó   — y)z1
        Returns the issuer name object.
        Nre   rL   s    r%   ÚissuerzCertificate.issuerÍ   r‚   r&   c                 ó   — y©z2
        Returns the subject name object.
        Nre   rL   s    r%   ÚsubjectzCertificate.subjectÔ   r‚   r&   c                 ó   — y©zt
        Returns a HashAlgorithm corresponding to the type of the digest signed
        in the certificate.
        Nre   rL   s    r%   Úsignature_hash_algorithmz$Certificate.signature_hash_algorithmÛ   r‚   r&   c                 ó   — y©zJ
        Returns the ObjectIdentifier of the signature algorithm.
        Nre   rL   s    r%   Úsignature_algorithm_oidz#Certificate.signature_algorithm_oidå   r‚   r&   c                 ó   — y)z=
        Returns the signature algorithm parameters.
        Nre   rL   s    r%   Úsignature_algorithm_parametersz*Certificate.signature_algorithm_parametersì   r‚   r&   c                 ó   — y)z/
        Returns an Extensions object.
        Nre   rL   s    r%   r3   zCertificate.extensionsõ   r‚   r&   c                 ó   — y©z.
        Returns the signature bytes.
        Nre   rL   s    r%   Ú	signaturezCertificate.signatureü   r‚   r&   c                 ó   — y)zR
        Returns the tbsCertificate payload bytes as defined in RFC 5280.
        Nre   rL   s    r%   Útbs_certificate_bytesz!Certificate.tbs_certificate_bytes  r‚   r&   c                 ó   — y)zh
        Returns the tbsCertificate payload bytes with the SCT list extension
        stripped.
        Nre   rL   s    r%   Útbs_precertificate_bytesz$Certificate.tbs_precertificate_bytes
  r‚   r&   c                 ó   — y©z"
        Checks equality.
        Nre   rT   s     r%   rV   zCertificate.__eq__  r‚   r&   c                 ó   — y©z"
        Computes a hash.
        Nre   rL   s    r%   rY   zCertificate.__hash__  r‚   r&   c                 ó   — y)zB
        Serializes the certificate to PEM or DER format.
        Nre   ©r"   Úencodings     r%   Úpublic_byteszCertificate.public_bytes  r‚   r&   c                 ó   — y)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.
        Nre   )r"   r�   s     r%   Úverify_directly_issued_byz%Certificate.verify_directly_issued_by$  r‚   r&   N©r€   zhashes.HashAlgorithmr(   rZ   rb   )r(   rs   ©r(   r   ©r(   údatetime.datetime©r(   r   ©r(   z%typing.Optional[hashes.HashAlgorithm]r\   )r(   z;typing.Union[None, padding.PSS, padding.PKCS1v15, ec.ECDSA]©r(   r   r]   r_   ©r©   zserialization.Encodingr(   rZ   )r�   r|   r(   r)   )r+   r,   r-   ÚabcÚabstractmethodr�   rd   r„   r†   r‰   r‹   r�   r�   r’   r•   r˜   rš   r3   rž   r    r¢   rV   rY   rª   r¬   re   r&   r%   r|   r|   ¤   sf  „ Ø×Ñòó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 	×Ñòó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñðà	.òó ó ðð Ø×Ñòó ó ðð
 Ø×Ñðà	Dòó ó ðð Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð 	×Ñòó ðð
 	×Ñòó ðð
 	×Ñòó ðð
 	×Ñòó ñ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y)ÚRevokedCertificatec                 ó   — y)zG
        Returns the serial number of the revoked certificate.
        Nre   rL   s    r%   r„   z RevokedCertificate.serial_number2  r‚   r&   c                 ó   — y)zH
        Returns the date of when this certificate was revoked.
        Nre   rL   s    r%   Úrevocation_datez"RevokedCertificate.revocation_date9  r‚   r&   c                 ó   — y)zW
        Returns an Extensions object containing a list of Revoked extensions.
        Nre   rL   s    r%   r3   zRevokedCertificate.extensions@  r‚   r&   Nrb   r¯   r³   )	r+   r,   r-   rd   rµ   r¶   r„   r¼   r3   re   r&   r%   r¹   r¹   1  sf   „ ØØ×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ñr&   r¹   c                  óV   — e Zd Z	 	 	 	 	 	 dd„Zedd„«       Zedd„«       Zed	d„«       Zy)
Ú_RawRevokedCertificatec                ó.   — || _         || _        || _        y r   ©Ú_serial_numberÚ_revocation_dateÚ_extensions©r"   r„   r¼   r3   s       r%   r    z_RawRevokedCertificate.__init__M  ó   € ð ,ˆÔØ /ˆÔØ%ˆÕr&   c                ó   — | j                   S r   )rÂ   rL   s    r%   r„   z$_RawRevokedCertificate.serial_numberW  s   € à×"Ñ"Ð"r&   c                ó   — | j                   S r   )rÃ   rL   s    r%   r¼   z&_RawRevokedCertificate.revocation_date[  s   € à×$Ñ$Ð$r&   c                ó   — | j                   S r   )rÄ   rL   s    r%   r3   z!_RawRevokedCertificate.extensions_  s   € à×ÑÐr&   N)r„   r[   r¼   r°   r3   r   rb   r¯   r³   )r+   r,   r-   r    rd   r„   r¼   r3   re   r&   r%   r¿   r¿   L  s_   „ ð&àð&ð +ð&ð ó	&ð ò#ó ð#ð ò%ó ð%ð ò ó ñ r&   r¿   c                  ó$  — 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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(                  d!d„«       Zej                  	 	 	 	 d"d„«       Zej                  d#d„«       Zej                  	 	 	 	 d$d„«       Zy)%ÚCertificateRevocationListc                 ó   — y)z:
        Serializes the CRL to PEM or DER format.
        Nre   r¨   s     r%   rª   z&CertificateRevocationList.public_bytese  r‚   r&   c                 ó   — yr~   re   r   s     r%   r�   z%CertificateRevocationList.fingerprintk  r‚   r&   c                 ó   — y)zs
        Returns an instance of RevokedCertificate or None if the serial_number
        is not in the CRL.
        Nre   )r"   r„   s     r%   Ú(get_revoked_certificate_by_serial_numberzBCertificateRevocationList.get_revoked_certificate_by_serial_numberq  r‚   r&   c                 ó   — yr”   re   rL   s    r%   r•   z2CertificateRevocationList.signature_hash_algorithmz  r‚   r&   c                 ó   — yr—   re   rL   s    r%   r˜   z1CertificateRevocationList.signature_algorithm_oid„  r‚   r&   c                 ó   — y)zC
        Returns the X509Name with the issuer of this CRL.
        Nre   rL   s    r%   r�   z CertificateRevocationList.issuer‹  r‚   r&   c                 ó   — y)z?
        Returns the date of next update for this CRL.
        Nre   rL   s    r%   Únext_updatez%CertificateRevocationList.next_update’  r‚   r&   c                 ó   — y)z?
        Returns the date of last update for this CRL.
        Nre   rL   s    r%   Úlast_updatez%CertificateRevocationList.last_update™  r‚   r&   c                 ó   — y)zS
        Returns an Extensions object containing a list of CRL extensions.
        Nre   rL   s    r%   r3   z$CertificateRevocationList.extensions   r‚   r&   c                 ó   — yr�   re   rL   s    r%   rž   z#CertificateRevocationList.signature§  r‚   r&   c                 ó   — y)zO
        Returns the tbsCertList payload bytes as defined in RFC 5280.
        Nre   rL   s    r%   Útbs_certlist_bytesz,CertificateRevocationList.tbs_certlist_bytes®  r‚   r&   c                 ó   — yr¤   re   rT   s     r%   rV   z CertificateRevocationList.__eq__µ  r‚   r&   c                 ó   — y)z<
        Number of revoked certificates in the CRL.
        Nre   rL   s    r%   ro   z!CertificateRevocationList.__len__»  r‚   r&   c                 ó   — y r   re   ©r"   Úidxs     r%   rq   z%CertificateRevocationList.__getitem__Á  ó   € àr&   c                 ó   — y r   re   rÞ   s     r%   rq   z%CertificateRevocationList.__getitem__Å  rà   r&   c                 ó   — y)zS
        Returns a revoked certificate (or slice of revoked certificates).
        Nre   rÞ   s     r%   rq   z%CertificateRevocationList.__getitem__É  r‚   r&   c                 ó   — y)z8
        Iterator over the revoked certificates
        Nre   rL   s    r%   rp   z"CertificateRevocationList.__iter__Ñ  r‚   r&   c                 ó   — y)zQ
        Verifies signature of revocation list against given public key.
        Nre   )r"   r‰   s     r%   Úis_signature_validz,CertificateRevocationList.is_signature_valid×  r‚   r&   Nr´   r­   )r„   r[   r(   z#typing.Optional[RevokedCertificate]r²   r\   r±   )r(   ú"typing.Optional[datetime.datetime]r¯   r³   r]   r_   rb   )rß   r[   r(   r¹   )rß   Úslicer(   útyping.List[RevokedCertificate])rß   ztyping.Union[int, slice]r(   zAtyping.Union[RevokedCertificate, typing.List[RevokedCertificate]])r(   z#typing.Iterator[RevokedCertificate])r‰   r   r(   ra   )r+   r,   r-   rµ   r¶   rª   r�   rÏ   rd   r•   r˜   r�   rÔ   rÖ   r3   rž   rÚ   rV   ro   ÚtypingÚoverloadrq   rp   rå   re   r&   r%   rË   rË   d  sH  „ Ø×Ñòó ðð
 	×Ñòó ðð
 	×ÑðØ ðà	,òó ðð Ø×Ñðà	.òó ó ðð Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 	×Ñòó ðð
 	×Ñòó ðð
 ‡_�_òó ðð ‡_�_òó ðð 	×ÑðØ+ðà	Jòó ðð 	×Ñòó ðð
 	×ÑðØ9ðà	òó ñr&   rË   c                  óN  — 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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y)ÚCertificateSigningRequestc                 ó   — yr¤   re   rT   s     r%   rV   z CertificateSigningRequest.__eq__ä  r‚   r&   c                 ó   — yr¦   re   rL   s    r%   rY   z"CertificateSigningRequest.__hash__ê  r‚   r&   c                 ó   — yrˆ   re   rL   s    r%   r‰   z$CertificateSigningRequest.public_keyð  r‚   r&   c                 ó   — yr‘   re   rL   s    r%   r’   z!CertificateSigningRequest.subjectö  r‚   r&   c                 ó   — yr”   re   rL   s    r%   r•   z2CertificateSigningRequest.signature_hash_algorithmý  r‚   r&   c                 ó   — yr—   re   rL   s    r%   r˜   z1CertificateSigningRequest.signature_algorithm_oid  r‚   r&   c                 ó   — y)z@
        Returns the extensions in the signing request.
        Nre   rL   s    r%   r3   z$CertificateSigningRequest.extensions  r‚   r&   c                 ó   — y)z/
        Returns an Attributes object.
        Nre   rL   s    r%   r7   z$CertificateSigningRequest.attributes  r‚   r&   c                 ó   — y)z;
        Encodes the request to PEM or DER format.
        Nre   r¨   s     r%   rª   z&CertificateSigningRequest.public_bytes  r‚   r&   c                 ó   — yr�   re   rL   s    r%   rž   z#CertificateSigningRequest.signature"  r‚   r&   c                 ó   — y)zd
        Returns the PKCS#10 CertificationRequestInfo bytes as defined in RFC
        2986.
        Nre   rL   s    r%   Útbs_certrequest_bytesz/CertificateSigningRequest.tbs_certrequest_bytes)  r‚   r&   c                 ó   — y)z8
        Verifies signature of signing request.
        Nre   rL   s    r%   rå   z,CertificateSigningRequest.is_signature_valid1  r‚   r&   c                 ó   — y)z:
        Get the attribute value for a given OID.
        Nre   )r"   r!   s     r%   rn   z/CertificateSigningRequest.get_attribute_for_oid8  r‚   r&   Nr_   rb   r®   r±   r²   r\   r³   )r(   rg   r´   r]   )r(   ra   )r!   r   r(   rZ   )r+   r,   r-   rµ   r¶   rV   rY   r‰   rd   r’   r•   r˜   r3   r7   rª   rž   rø   rå   rn   re   r&   r%   rì   rì   ã  sš  „ Ø×Ñòó ðð
 	×Ñòó ðð
 	×Ñòó ðð
 Ø×Ñòó ó ðð
 Ø×Ñðà	.òó ó ðð Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð
 	×Ñòó ðð
 Ø×Ñòó ó ðð
 Ø×Ñòó ó ðð Ø×Ñòó ó ðð
 	×Ñòó ñr&   rì   c                ó,   — t        j                  | «      S r   )Ú	rust_x509Úload_pem_x509_certificate©ÚdataÚbackends     r%   rý   rý   D  ó   € ô ×.Ñ.¨tÓ4Ð4r&   c                ó,   — t        j                  | «      S r   )rü   Úload_pem_x509_certificates)rÿ   s    r%   r  r  J  s   € Ü×/Ñ/°Ó5Ð5r&   c                ó,   — t        j                  | «      S r   )rü   Úload_der_x509_certificaterþ   s     r%   r  r  O  r  r&   c                ó,   — t        j                  | «      S r   )rü   Úload_pem_x509_csrrþ   s     r%   r  r  V  ó   € ô ×&Ñ& tÓ,Ð,r&   c                ó,   — t        j                  | «      S r   )rü   Úload_der_x509_csrrþ   s     r%   r
  r
  ]  r  r&   c                ó,   — t        j                  | «      S r   )rü   Úload_pem_x509_crlrþ   s     r%   r  r  d  r  r&   c                ó,   — t        j                  | «      S r   )rü   Úload_der_x509_crlrþ   s     r%   r  r  k  r  r&   c                  óx   — 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„Zy)Ú CertificateSigningRequestBuilderNc                ó.   — || _         || _        || _        y)zB
        Creates an empty X.509 certificate request (v1).
        N)Ú_subject_namerÄ   rj   )r"   Úsubject_namer3   r7   s       r%   r    z)CertificateSigningRequestBuilder.__init__r  s   € ð *ˆÔØ%ˆÔØ%ˆÕr&   c                ó¨   — t        |t        «      st        d«      ‚| j                  �t	        d«      ‚t        || j                  | j                  «      S )zF
        Sets the certificate requestor's distinguished name.
        úExpecting x509.Name object.ú&The subject name may only be set once.)rR   r   Ú	TypeErrorr  r1   r  rÄ   rj   ©r"   Únames     r%   r  z-CertificateSigningRequestBuilder.subject_name�  sR   € ô ˜$¤Ô%ÜÐ9Ó:Ð:Ø×ÑÐ)ÜÐEÓFÐFÜ/Ø�$×"Ñ" D×$4Ñ$4ó
ð 	
r&   c                óð   — t        |t        «      st        d«      ‚t        |j                  ||«      }t        || j                  «       t        | j                  | j                  |gz   | j                  «      S )zE
        Adds an X.509 extension to the certificate request.
        ú"extension must be an ExtensionType)
rR   r   r  r   r!   r5   rÄ   r  r  rj   ©r"   ÚextvalÚcriticalr2   s       r%   Úadd_extensionz.CertificateSigningRequestBuilder.add_extension�  sk   € ô ˜&¤-Ô0ÜÐ@ÓAÐAä˜fŸj™j¨(°FÓ;ˆ	Ü# I¨t×/?Ñ/?Ô@ä/Ø×ÑØ×Ñ 	˜{Ñ*Ø×Ñó
ð 	
r&   )Ú_tagc               óZ  — t        |t        «      st        d«      ‚t        |t        «      st        d«      ‚|�t        |t        «      st        d«      ‚t        || j                  «       |�|j                  }nd}t        | j                  | j                  | j                  |||fgz   «      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)rR   r   r  rZ   r   r:   rj   rJ   r  r  rÄ   )r"   r!   rJ   r   Útags        r%   Úadd_attributez.CertificateSigningRequestBuilder.add_attributeŸ  s§   € ô ˜#Ô/Ô0ÜÐ=Ó>Ð>ä˜%¤Ô'ÜÐ1Ó2Ð2àÐ¤J¨t´YÔ$?ÜÐ3Ó4Ð4ä# C¨×)9Ñ)9Ô:àÐØ—*‘*‰CàˆCä/Ø×ÑØ×ÑØ×Ñ  e¨SÐ 1Ð2Ñ2ó
ð 	
r&   c                ó^   — | j                   €t        d«      ‚t        j                  | ||«      S )zF
        Signs the request using the requestor's private key.
        z/A CertificateSigningRequest must have a subject)r  r1   rü   Úcreate_x509_csr©r"   Úprivate_keyr€   r   s       r%   Úsignz%CertificateSigningRequestBuilder.sign¿  s1   € ð ×ÑÐ%ÜÐNÓOÐOÜ×(Ñ(¨¨{¸IÓFÐFr&   )r  útyping.Optional[Name]r3   ú%typing.List[Extension[ExtensionType]]r7   úHtyping.List[typing.Tuple[ObjectIdentifier, bytes, typing.Optional[int]]])r  r   r(   r  )r  r   r  ra   r(   r  )r!   r   rJ   rZ   r   ztyping.Optional[_ASN1Type]r(   r  r   )r'  r   r€   ú"typing.Optional[_AllowedHashTypes]r   ú
typing.Anyr(   rì   )r+   r,   r-   r    r  r  r#  r(  re   r&   r%   r  r  q  s¸   „ ð /3Ø<>ð ð&à+ð&ð :ð&ð
ó	&ó

ð
Ø#ð
Ø/3ð
à	)ó
ð. ,0ñ
àð
ð ð
ð
 )ð
ð 
*ó
ðH #ð	Gà5ðGð 6ðGð ð	Gð
 
#ôGr&   r  c                  ó¾   — e Zd ZU ded<   ddddddg f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Z	 	 	 	 dd„Zdd„Zdd	„Z	dd
„Z
	 	 	 	 	 	 dd„Z	 dddœ	 	 	 	 	 	 	 	 	 dd„Zy)ÚCertificateBuilderr*  rÄ   Nc                ó�   — t         j                  | _        || _        || _        || _        || _        || _        || _        || _	        y r   )
rs   rv   Ú_versionÚ_issuer_namer  Ú_public_keyrÂ   Ú_not_valid_beforeÚ_not_valid_afterrÄ   )r"   Úissuer_namer  r‰   r„   r‹   r�   r3   s           r%   r    zCertificateBuilder.__init__Ð  sG   € ô  Ÿ
™
ˆŒØ'ˆÔØ)ˆÔØ%ˆÔØ+ˆÔØ!1ˆÔØ /ˆÔØ%ˆÕr&   c           	     ó   — t        |t        «      st        d«      ‚| j                  �t	        d«      ‚t        || j                  | j                  | j                  | j                  | j                  | j                  «      S )z3
        Sets the CA's distinguished name.
        r  ú%The issuer name may only be set once.)rR   r   r  r2  r1   r/  r  r3  rÂ   r4  r5  rÄ   r  s     r%   r6  zCertificateBuilder.issuer_nameã  sx   € ô ˜$¤Ô%ÜÐ9Ó:Ð:Ø×ÑÐ(ÜÐDÓEÐEÜ!ØØ×ÑØ×ÑØ×ÑØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r&   c           	     ó   — t        |t        «      st        d«      ‚| j                  �t	        d«      ‚t        | j                  || j                  | j                  | j                  | j                  | j                  «      S )z:
        Sets the requestor's distinguished name.
        r  r  )rR   r   r  r  r1   r/  r2  r3  rÂ   r4  r5  rÄ   r  s     r%   r  zCertificateBuilder.subject_nameõ  sx   € ô ˜$¤Ô%ÜÐ9Ó:Ð:Ø×ÑÐ)ÜÐEÓFÐFÜ!Ø×ÑØØ×ÑØ×ÑØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r&   c           
     óÊ  — t        |t        j                  t        j                  t
        j                  t        j                  t        j                  t        j                  t        j                  f«      st        d«      ‚| j                   �t#        d«      ‚t%        | j&                  | j(                  || j*                  | j,                  | j.                  | j0                  «      S )zT
        Sets the requestor's public key (as found in the signing request).
        z‰Expecting one of DSAPublicKey, RSAPublicKey, EllipticCurvePublicKey, Ed25519PublicKey, Ed448PublicKey, X25519PublicKey, or X448PublicKey.z$The public key may only be set once.)rR   r   ÚDSAPublicKeyr   ÚRSAPublicKeyr	   ÚEllipticCurvePublicKeyr   ÚEd25519PublicKeyr
   ÚEd448PublicKeyr   ÚX25519PublicKeyr   ÚX448PublicKeyr  r3  r1   r/  r2  r  rÂ   r4  r5  rÄ   )r"   Úkeys     r%   r‰   zCertificateBuilder.public_key  sÇ   € ô Øä× Ñ Ü× Ñ Ü×)Ñ)Ü×(Ñ(Ü×$Ñ$Ü×&Ñ&Ü×"Ñ"ðô
ô ð!óð ð ×ÑÐ'ÜÐCÓDÐDÜ!Ø×ÑØ×ÑØØ×ÑØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r&   c           	     ó\  — t        |t        «      st        d«      ‚| j                  �t	        d«      ‚|dk  rt	        d«      ‚|j                  «       dk\  rt	        d«      ‚t        | j                  | j                  | j                  || j                  | j                  | j                  «      S )z5
        Sets the certificate serial number.
        ú'Serial number must be of integral type.ú'The serial number may only be set once.r   z%The serial number should be positive.é    ú3The serial number should not be more than 159 bits.)rR   r[   r  rÂ   r1   Ú
bit_lengthr/  r2  r  r3  r4  r5  rÄ   ©r"   Únumbers     r%   r„   z CertificateBuilder.serial_number,  s°   € ô ˜&¤#Ô&ÜÐEÓFÐFØ×ÑÐ*ÜÐFÓGÐGØ�QŠ;ÜÐDÓEÐEð ×ÑÓ #Ò%ÜØHóð ô "Ø×ÑØ×ÑØ×ÑØØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r&   c           	     óž  — t        |t        j                  «      st        d«      ‚| j                  �t	        d«      ‚t        |«      }|t        k  rt	        d«      ‚| j                  �|| j                  kD  rt	        d«      ‚t        | j                  | j                  | j                  | j                  || j                  | j                  «      S )z7
        Sets the certificate activation time.
        úExpecting datetime object.z*The not valid before may only be set once.z>The not valid before date must be on or after 1950 January 1).zBThe not valid before date must be before the not valid after date.)rR   r>   r  r4  r1   rC   Ú_EARLIEST_UTC_TIMEr5  r/  r2  r  r3  rÂ   rÄ   ©r"   rA   s     r%   r‹   z#CertificateBuilder.not_valid_beforeG  sÒ   € ô ˜$¤× 1Ñ 1Ô2ÜÐ8Ó9Ð9Ø×!Ñ!Ð-ÜÐIÓJÐJÜ)¨$Ó/ˆØÔ$Ò$Üð$óð ð × Ñ Ð,°¸×8MÑ8MÒ1MÜðóð ô "Ø×ÑØ×ÑØ×ÑØ×ÑØØ×!Ñ!Ø×Ñó
ð 	
r&   c           	     óž  — t        |t        j                  «      st        d«      ‚| j                  �t	        d«      ‚t        |«      }|t        k  rt	        d«      ‚| j                  �|| j                  k  rt	        d«      ‚t        | j                  | j                  | j                  | j                  | j                  || j                  «      S )z7
        Sets the certificate expiration time.
        rL  z)The not valid after may only be set once.z<The not valid after date must be on or after 1950 January 1.zAThe not valid after date must be after the not valid before date.)rR   r>   r  r5  r1   rC   rM  r4  r/  r2  r  r3  rÂ   rÄ   rN  s     r%   r�   z"CertificateBuilder.not_valid_afterd  sÓ   € ô ˜$¤× 1Ñ 1Ô2ÜÐ8Ó9Ð9Ø× Ñ Ð,ÜÐHÓIÐIÜ)¨$Ó/ˆØÔ$Ò$Üð#óð ð
 ×"Ñ"Ð.Ø�t×-Ñ-Ò-äðóð ô "Ø×ÑØ×ÑØ×ÑØ×ÑØ×"Ñ"ØØ×Ñó
ð 	
r&   c           
     óH  — t        |t        «      st        d«      ‚t        |j                  ||«      }t        || j                  «       t        | j                  | j                  | j                  | j                  | j                  | j                  | j                  |gz   «      S )z=
        Adds an X.509 extension to the certificate.
        r  )rR   r   r  r   r!   r5   rÄ   r/  r2  r  r3  rÂ   r4  r5  r  s       r%   r  z CertificateBuilder.add_extension„  s�   € ô ˜&¤-Ô0ÜÐ@ÓAÐAä˜fŸj™j¨(°FÓ;ˆ	Ü# I¨t×/?Ñ/?Ô@ä!Ø×ÑØ×ÑØ×ÑØ×ÑØ×"Ñ"Ø×!Ñ!Ø×Ñ 	˜{Ñ*ó
ð 	
r&   )Úrsa_paddingc               óþ  — | j                   €t        d«      ‚| j                  €t        d«      ‚| j                  €t        d«      ‚| j                  €t        d«      ‚| j
                  €t        d«      ‚| j                  €t        d«      ‚|�Zt        |t        j                  t        j                  f«      st        d«      ‚t        |t        j                  «      st        d«      ‚t        j                  | |||«      S )	zC
        Signs the certificate using the CA's private key.
        z&A certificate must have a subject namez&A certificate must have an issuer namez'A certificate must have a serial numberz/A certificate must have a not valid before timez.A certificate must have a not valid after timez$A certificate must have a public keyzPadding must be PSS or PKCS1v15z&Padding is only supported for RSA keys)r  r1   r2  rÂ   r4  r5  r3  rR   r   ÚPSSÚPKCS1v15r  r   ÚRSAPrivateKeyrü   Úcreate_x509_certificate)r"   r'  r€   r   rQ  s        r%   r(  zCertificateBuilder.signš  s÷   € ð ×ÑÐ%ÜÐEÓFÐFà×ÑÐ$ÜÐEÓFÐFà×ÑÐ&ÜÐFÓGÐGà×!Ñ!Ð)ÜÐNÓOÐOà× Ñ Ð(ÜÐMÓNÐNà×ÑÐ#ÜÐCÓDÐDàÐ"Ü˜k¬G¯K©K¼×9IÑ9IÐ+JÔKÜÐ AÓBÐBÜ˜k¬3×+<Ñ+<Ô=ÜÐ HÓIÐIä×0Ñ0Ø�+˜y¨+ó
ð 	
r&   )r6  r)  r  r)  r‰   z*typing.Optional[CertificatePublicKeyTypes]r„   útyping.Optional[int]r‹   ræ   r�   ræ   r3   r*  r(   r)   )r  r   r(   r/  )rB  r   r(   r/  )rJ  r[   r(   r/  )rA   r°   r(   r/  )r  r   r  ra   r(   r/  r   )
r'  r   r€   r,  r   r-  rQ  z<typing.Optional[typing.Union[padding.PSS, padding.PKCS1v15]]r(   r|   )r+   r,   r-   Ú__annotations__r    r6  r  r‰   r„   r‹   r�   r  r(  re   r&   r%   r/  r/  Í  s  … Ø6Ó6ð .2Ø.2ØAEØ.2Ø?CØ>BØ<>ð&à*ð&ð ,ð&ð ?ð	&ð
 ,ð&ð =ð&ð <ð&ð :ð&ð 
ó&ó&
ó$
ð$#
à&ð#
ð 
ó#
óJ
ó6
ó:
ð@
Ø#ð
Ø/3ð
à	ó
ð4 #ð	'
ð ñ'
à5ð'
ð 6ð'
ð ð	'
ð
ð'
ð 
ô'
r&   r/  c                  ó¶   — e Zd ZU ded<   ded<   dddg g f	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 dd„Z	 	 	 	 dd„Z	 	 	 	 dd	„Z	 	 	 	 	 	 dd
„Z	 	 	 	 dd„Z		 d	 	 	 	 	 	 	 dd„Z
y)Ú CertificateRevocationListBuilderr*  rÄ   rè   Ú_revoked_certificatesNc                óJ   — || _         || _        || _        || _        || _        y r   )r2  Ú_last_updateÚ_next_updaterÄ   r[  )r"   r6  rÖ   rÔ   r3   Úrevoked_certificatess         r%   r    z)CertificateRevocationListBuilder.__init__È  s,   € ð (ˆÔØ'ˆÔØ'ˆÔØ%ˆÔØ%9ˆÕ"r&   c                óÔ   — t        |t        «      st        d«      ‚| j                  �t	        d«      ‚t        || j                  | j                  | j                  | j                  «      S )Nr  r8  )
rR   r   r  r2  r1   rZ  r]  r^  rÄ   r[  )r"   r6  s     r%   r6  z,CertificateRevocationListBuilder.issuer_nameÖ  sf   € ô ˜+¤tÔ,ÜÐ9Ó:Ð:Ø×ÑÐ(ÜÐDÓEÐEÜ/ØØ×ÑØ×ÑØ×ÑØ×&Ñ&ó
ð 	
r&   c                ór  — t        |t        j                  «      st        d«      ‚| j                  �t	        d«      ‚t        |«      }|t        k  rt	        d«      ‚| j                  �|| j                  kD  rt	        d«      ‚t        | j                  || j                  | j                  | j                  «      S )NrL  ú!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.)rR   r>   r  r]  r1   rC   rM  r^  rZ  r2  rÄ   r[  )r"   rÖ   s     r%   rÖ   z,CertificateRevocationListBuilder.last_updateå  s¼   € ô ˜+¤x×'8Ñ'8Ô9ÜÐ8Ó9Ð9Ø×ÑÐ(ÜÐ@ÓAÐAÜ0°Ó=ˆØÔ+Ò+ÜØMóð ð ×ÑÐ(¨[¸4×;LÑ;LÒ-LÜØKóð ô 0Ø×ÑØØ×ÑØ×ÑØ×&Ñ&ó
ð 	
r&   c                ór  — t        |t        j                  «      st        d«      ‚| j                  �t	        d«      ‚t        |«      }|t        k  rt	        d«      ‚| j                  �|| j                  k  rt	        d«      ‚t        | j                  | j                  || j                  | j                  «      S )NrL  rb  rc  z8The next update date must be after the last update date.)rR   r>   r  r^  r1   rC   rM  r]  rZ  r2  rÄ   r[  )r"   rÔ   s     r%   rÔ   z,CertificateRevocationListBuilder.next_updateý  s¼   € ô ˜+¤x×'8Ñ'8Ô9ÜÐ8Ó9Ð9Ø×ÑÐ(ÜÐ@ÓAÐAÜ0°Ó=ˆØÔ+Ò+ÜØMóð ð ×ÑÐ(¨[¸4×;LÑ;LÒ-LÜØJóð ô 0Ø×ÑØ×ÑØØ×ÑØ×&Ñ&ó
ð 	
r&   c                ó  — t        |t        «      st        d«      ‚t        |j                  ||«      }t        || j                  «       t        | j                  | j                  | j                  | j                  |gz   | j                  «      S )zM
        Adds an X.509 extension to the certificate revocation list.
        r  )rR   r   r  r   r!   r5   rÄ   rZ  r2  r]  r^  r[  r  s       r%   r  z.CertificateRevocationListBuilder.add_extension  s}   € ô ˜&¤-Ô0ÜÐ@ÓAÐAä˜fŸj™j¨(°FÓ;ˆ	Ü# I¨t×/?Ñ/?Ô@Ü/Ø×ÑØ×ÑØ×ÑØ×Ñ 	˜{Ñ*Ø×&Ñ&ó
ð 	
r&   c                óÂ   — t        |t        «      st        d«      ‚t        | j                  | j
                  | j                  | j                  | j                  |gz   «      S )z8
        Adds a revoked certificate to the CRL.
        z)Must be an instance of RevokedCertificate)	rR   r¹   r  rZ  r2  r]  r^  rÄ   r[  )r"   Úrevoked_certificates     r%   Úadd_revoked_certificatez8CertificateRevocationListBuilder.add_revoked_certificate(  s_   € ô Ð-Ô/AÔBÜÐGÓHÐHä/Ø×ÑØ×ÑØ×ÑØ×ÑØ×&Ñ&Ð*=Ð)>Ñ>ó
ð 	
r&   c                óº   — | j                   €t        d«      ‚| j                  €t        d«      ‚| j                  €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 time)r2  r1   r]  r^  rü   Úcreate_x509_crlr&  s       r%   r(  z%CertificateRevocationListBuilder.sign9  sa   € ð ×ÑÐ$ÜÐ=Ó>Ð>à×ÑÐ$ÜÐAÓBÐBà×ÑÐ$ÜÐAÓBÐBä×(Ñ(¨¨{¸IÓFÐFr&   )
r6  r)  rÖ   ræ   rÔ   ræ   r3   r*  r_  rè   )r6  r   r(   rZ  )rÖ   r°   r(   rZ  )rÔ   r°   r(   rZ  )r  r   r  ra   r(   rZ  )rg  r¹   r(   rZ  r   )r'  r   r€   r,  r   r-  r(   rË   )r+   r,   r-   rX  r    r6  rÖ   rÔ   r  rh  r(  re   r&   r%   rZ  rZ  Ä  sú   … Ø6Ó6Ø:Ó:ð .2Ø:>Ø:>Ø<>Ø@Bð:à*ð:ð 8ð:ð 8ð	:ð
 :ð:ð >ó:ð
Øð
à	)ó
ð
Ø,ð
à	)ó
ð0
Ø,ð
à	)ó
ð0
Ø#ð
Ø/3ð
à	)ó
ð&
Ø#5ð
à	)ó
ð* #ð	Gà5ðGð 6ðGð ð	Gð
 
#ôGr&   rZ  c                  ó\   — e Zd Zddg f	 	 	 	 	 dd„Zdd„Z	 	 	 	 d	d„Z	 	 	 	 	 	 d
d„Zddd„Zy)ÚRevokedCertificateBuilderNc                ó.   — || _         || _        || _        y r   rÁ   rÅ   s       r%   r    z"RevokedCertificateBuilder.__init__L  rÆ   r&   c                ó  — t        |t        «      st        d«      ‚| j                  �t	        d«      ‚|dk  rt	        d«      ‚|j                  «       dk\  rt	        d«      ‚t        || j                  | j                  «      S )NrD  rE  r   z$The serial number should be positiverF  rG  )	rR   r[   r  rÂ   r1   rH  rl  rÃ   rÄ   rI  s     r%   r„   z'RevokedCertificateBuilder.serial_numberV  sˆ   € Ü˜&¤#Ô&ÜÐEÓFÐFØ×ÑÐ*ÜÐFÓGÐGØ�QŠ;ÜÐCÓDÐDð ×ÑÓ #Ò%ÜØHóð ô )Ø�D×)Ñ)¨4×+;Ñ+;ó
ð 	
r&   c                óú   — t        |t        j                  «      st        d«      ‚| j                  �t	        d«      ‚t        |«      }|t        k  rt	        d«      ‚t        | j                  || j                  «      S )NrL  z)The revocation date may only be set once.z7The revocation date must be on or after 1950 January 1.)
rR   r>   r  rÃ   r1   rC   rM  rl  rÂ   rÄ   rN  s     r%   r¼   z)RevokedCertificateBuilder.revocation_dateh  s}   € ô ˜$¤× 1Ñ 1Ô2ÜÐ8Ó9Ð9Ø× Ñ Ð,ÜÐHÓIÐIÜ)¨$Ó/ˆØÔ$Ò$ÜØLóð ô )Ø×Ñ  t×'7Ñ'7ó
ð 	
r&   c                óð   — t        |t        «      st        d«      ‚t        |j                  ||«      }t        || j                  «       t        | j                  | j                  | j                  |gz   «      S )Nr  )
rR   r   r  r   r!   r5   rÄ   rl  rÂ   rÃ   r  s       r%   r  z'RevokedCertificateBuilder.add_extensionx  sk   € ô ˜&¤-Ô0ÜÐ@ÓAÐAä˜fŸj™j¨(°FÓ;ˆ	Ü# I¨t×/?Ñ/?Ô@Ü(Ø×ÑØ×!Ñ!Ø×Ñ 	˜{Ñ*ó
ð 	
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Â   r1   rÃ   r¿   r   rÄ   )r"   r   s     r%   ÚbuildzRevokedCertificateBuilder.build†  se   € Ø×ÑÐ&ÜÐNÓOÐOØ× Ñ Ð(ÜØCóð ô &Ø×ÑØ×!Ñ!Ü�t×'Ñ'Ó(ó
ð 	
r&   )r„   rW  r¼   ræ   r3   r*  )rJ  r[   r(   rl  )rA   r°   r(   rl  )r  r   r  ra   r(   rl  r   )r   r-  r(   r¹   )r+   r,   r-   r    r„   r¼   r  rr  re   r&   r%   rl  rl  K  sj   „ ð /3Ø>BØ<>ð	&à+ð&ð <ð&ð :ó	&ó
ð$
Ø%ð
à	"ó
ð 
Ø#ð
Ø/3ð
à	"ó
õ
r&   rl  c                 óZ   — t         j                  t        j                  d«      d«      dz	  S )Né   Úbigr   )r[   Ú
from_bytesÚosÚurandomre   r&   r%   Úrandom_serial_numberry  ”  s    € Ü�>‰>œ"Ÿ*™* R›.¨%Ó0°AÑ5Ð5r&   )r2   zExtension[ExtensionType]r3   r*  r(   r)   )r!   r   r7   r+  r(   r)   )rA   r°   r(   r°   r   )rÿ   rZ   r   r-  r(   r|   )rÿ   rZ   r(   ztyping.List[Certificate])rÿ   rZ   r   r-  r(   rì   )rÿ   rZ   r   r-  r(   rË   rb   )MÚ
__future__r   rµ   r>   rw  ré   Úcryptographyr   Ú"cryptography.hazmat.bindings._rustr   rü   Ú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   rM  ÚUnionÚSHA224ÚSHA256ÚSHA384ÚSHA512ÚSHA3_224ÚSHA3_256ÚSHA3_384ÚSHA3_512Ú_AllowedHashTypesÚ	Exceptionr   r5   r:   rC   rE   rg   ÚEnumrs   rx   ÚABCMetar|   Úregisterr¹   r¿   rË   rì   rý   r  r  r  r
  r  r  r  r/  rZ  rl  ry  re   r&   r%   ú<module>r‘     s÷  ðõ
 #ã 
Û Û 	Û å Ý @ß @÷	÷ 	ó 	÷ñ ÷
ó ÷ 3Ý 2à&�X×&Ñ& t¨Q°Ó2Ð ð —L‘LØ
‡M�MØ
‡M�MØ
‡M�MØ
‡M�MØ
‡O�OØ
‡O�OØ
‡O�OØ
‡O�Oðñ	Ð ô˜	ô ðEØ'ðEà5ðEð 
óEð	EØ	ð	Eðð	Eð
 
ó	Eó÷!8ñ !8÷HFñ Fô(ˆe�j‰jô ô
-�Yô -ôF˜CŸK™Kõ FðT × Ñ �Y×*Ñ*Ô +ô 3§;¡;õ ð0 × Ñ ˜I×8Ñ8Ô 9ô Ð/ô  ô0y¨#¯+©+õ yðx × "Ñ " 9×#FÑ#FÔ GôY¨#¯+©+õ Yðz × "Ñ " 9×#FÑ#FÔ Gð
 (,ð5Ø
ð5Ø$ð5àó5ó6ð (,ð5Ø
ð5Ø$ð5àó5ð (,ð-Ø
ð-Ø$ð-àó-ð (,ð-Ø
ð-Ø$ð-àó-ð (,ð-Ø
ð-Ø$ð-àó-ð (,ð-Ø
ð-Ø$ð-àó-÷YGñ YG÷xt
ñ t
÷nDGñ DG÷NF
ñ F
ôR6r&   