ó
    pÜ§iÙ�  ã            	      ó  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r  S SKJrJr  S SKJrJrJrJrJrJrJrJr  S SKJrJrJr  S SKJrJrJrJ r   S S	K!J"r"J#r#  S S
K$J%r%  \R                  " SSS5      r&\RN                  \RP                  \RR                  \RT                  \RV                  \RX                  \RZ                  \R\                  \R^                  4   r0 " S S\15      r2      S.S jr3      S/S jr4S0S jr5 " S S5      r6 " S S5      r7 " S S\Rp                  5      r9 " S S\15      r: " S S\Rv                  S9r<\<R{                  \Rx                  5         " S S\Rv                  S9r>\>R{                  \R|                  5         " S S \>5      r? " S! S"\Rv                  S9r@\@R{                  \R€                  5         " S# S$\Rv                  S9rA\AR{                  \R‚                  5        \R„                  rB\R†                  rC\Rˆ                  rD\RŠ                  rE\RŒ                  rF\RŽ                  rG\R�                  rH " S% S&5      rI " S' S(5      rJ " S) S*5      rK " S+ S,5      rLS1S- jrMg)2é    )Ú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                  ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )ÚAttributeNotFoundé8   c                ó0   >• [         TU ]  U5        X l        g ©N)ÚsuperÚ__init__Úoid)ÚselfÚmsgr"   Ú	__class__s      €Ú8/usr/lib/python3/dist-packages/cryptography/x509/base.pyr!   ÚAttributeNotFound.__init__9   s   ø€ Ü‰Ñ˜ÔØ�ó    )r"   )r$   Ústrr"   r   ÚreturnÚNone©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r!   Ú__static_attributes__Ú__classcell__©r%   s   @r&   r   r   8   s   ø† ÷õ r(   r   c                ó`   • U H(  nUR                   U R                   :X  d  M  [        S5      e   g )Nz$This extension has already been set.)r"   Ú
ValueError)Ú	extensionÚ
extensionsÚes      r&   Ú_reject_duplicate_extensionr9   >   s*   € ó
 ˆØ�5‰5�I—M‘MÕ!ÜÐCÓDÐDò r(   c                ó>   • U H  u  n  nX :X  d  M  [        S5      e   g )Nz$This attribute has already been set.)r5   )r"   Ú
attributesÚattr_oidÚ_s       r&   Ú_reject_duplicate_attributer>   H   s%   € ó
 %‰ˆ�!�QØ�?ÜÐCÓDÐDò %r(   c                ó    • U R                   b@  U R                  5       nU(       a  UO[        R                  " 5       nU R	                  SS9U-
  $ U $ )z†Normalizes a datetime to a naive datetime in UTC.

time -- datetime to normalize. Assumed to be in UTC if not timezone
        aware.
N©Útzinfo)rA   Ú	utcoffsetÚdatetimeÚ	timedeltaÚreplace)ÚtimeÚoffsets     r&   Ú_convert_to_naive_utc_timerH   R   sG   € ð ‡{�{ÑØ—‘Ó!ˆÞ!‘¤x×'9Ò'9Ó';ˆØ�|‰| 4ˆ|Ð(¨6Ñ1Ð1àˆr(   c                  ó    • \ rS rSr\R
                  R                  4       S
S jjr\SS j5       r	\SS j5       rSS jr
SS jrSS jrSrg	)Ú	Attributeé`   c                ó(   • Xl         X l        X0l        g r   )Ú_oidÚ_valueÚ_type)r#   r"   ÚvaluerO   s       r&   r!   ÚAttribute.__init__a   s   € ð Œ	ØŒØ�
r(   c                ó   • U R                   $ r   )rM   ©r#   s    r&   r"   ÚAttribute.oidk   s   € à�y‰yÐr(   c                ó   • U R                   $ r   )rN   rS   s    r&   rP   ÚAttribute.valueo   s   € à�{‰{Ðr(   c                ó>   • SU R                    SU R                  < S3$ )Nz<Attribute(oid=z, value=ú)>)r"   rP   rS   s    r&   Ú__repr__ÚAttribute.__repr__s   s   € Ø  §¡ 
¨(°4·:±:±.ÀÐCÐCr(   c                óê   • [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r   )Ú
isinstancerJ   ÚNotImplementedr"   rP   rO   ©r#   Úothers     r&   Ú__eq__ÚAttribute.__eq__v   sV   € Ü˜%¤×+Ñ+Ü!Ð!ð �H‰H˜Ÿ	™	Ñ!÷ *Ø—
‘
˜eŸk™kÑ)÷*à—
‘
˜eŸk™kÑ)ð	
r(   c                óZ   • [        U R                  U R                  U R                  45      $ r   )Úhashr"   rP   rO   rS   s    r&   Ú__hash__ÚAttribute.__hash__€   s    € Ü�T—X‘X˜tŸz™z¨4¯:©:Ð6Ó7Ð7r(   )rM   rO   rN   N)r"   r   rP   ÚbytesrO   Úintr*   r+   ©r*   r   ©r*   rf   ©r*   r)   ©r_   Úobjectr*   Úbool©r*   rg   )r-   r.   r/   r0   r   Ú
UTF8StringrP   r!   Úpropertyr"   rY   r`   rd   r1   © r(   r&   rJ   rJ   `   sv   † ð
 ×)Ñ)×/Ñ/ð	àðð ðð ð	ð
 
õð óó ðð óó ðôDô
÷8r(   rJ   c                  óR   • \ rS rSr    SS jr\" S5      u  rrrS	S jr	S
S jr
Srg)Ú
Attributesé„   c                ó$   • [        U5      U l        g r   )ÚlistÚ_attributes)r#   r;   s     r&   r!   ÚAttributes.__init__…   s   € ô   
Ó+ˆÕr(   rw   c                ó"   • SU R                    S3$ )Nz<Attributes(rX   ©rw   rS   s    r&   rY   ÚAttributes.__repr__�   s   € Ø˜d×.Ñ.Ð/¨rÐ2Ð2r(   c                ó\   • U  H  nUR                   U:X  d  M  Us  $    [        SU S3U5      e)NzNo z attribute was found)r"   r   )r#   r"   Úattrs      r&   Úget_attribute_for_oidÚ Attributes.get_attribute_for_oid�   s5   € ÛˆDØ�x‰x˜3�Ø’ñ ô   # c UÐ*>Ð ?ÀÓEÐEr(   rz   N)r;   ztyping.Iterable[Attribute]r*   r+   rj   )r"   r   r*   rJ   )r-   r.   r/   r0   r!   r   Ú__len__Ú__iter__Ú__getitem__rY   r~   r1   rq   r(   r&   rs   rs   „   s7   † ð,à.ð,ð 
ô,ñ &<¸MÓ%JÑ"€GˆX�{ô3÷Fr(   rs   c                  ó   • \ rS rSrSrSrSrg)ÚVersioné˜   r   é   rq   N)r-   r.   r/   r0   Úv1Úv3r1   rq   r(   r&   r„   r„   ˜   s   † Ø	
€BØ	
ƒBr(   r„   c                  ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )ÚInvalidVersioné�   c                ó0   >• [         TU ]  U5        X l        g r   )r    r!   Úparsed_version)r#   r$   r�   r%   s      €r&   r!   ÚInvalidVersion.__init__ž   s   ø€ Ü‰Ñ˜ÔØ,Õr(   )r�   )r$   r)   r�   rg   r*   r+   r,   r3   s   @r&   rŠ   rŠ   �   s   ø† ÷-õ -r(   rŠ   c                  ó,  • \ rS rSr\R
                  SS j5       r\\R
                  SS j5       5       r\\R
                  SS j5       5       r	\R
                  SS j5       r
\\R
                  SS j5       5       r\\R
                  SS j5       5       r\\R
                  SS j5       5       r\\R
                  SS	 j5       5       r\\R
                  SS
 j5       5       r\\R
                  S S j5       5       r\\R
                  S S j5       5       r\\R
                    S!S j5       5       r\\R
                  SS j5       5       r\\R
                    S"S j5       5       r\\R
                  S#S j5       5       r\\R
                  S$S j5       5       r\\R
                  S$S j5       5       r\\R
                  S$S j5       5       r\R
                  S%S j5       r\R
                  SS j5       r\R
                  S&S j5       r\R
                  S'S j5       rSrg)(ÚCertificateé£   c                ó   • g©z$
Returns bytes using digest passed.
Nrq   ©r#   Ú	algorithms     r&   ÚfingerprintÚCertificate.fingerprint¤   ó   � r(   c                ó   • g)z#
Returns certificate serial number
Nrq   rS   s    r&   Úserial_numberÚCertificate.serial_numberª   r˜   r(   c                ó   • g)z!
Returns the certificate version
Nrq   rS   s    r&   ÚversionÚCertificate.version±   r˜   r(   c                ó   • g©z
Returns the public key
Nrq   rS   s    r&   Ú
public_keyÚCertificate.public_key¸   r˜   r(   c                ó   • g)z1
Returns the ObjectIdentifier of the public key.
Nrq   rS   s    r&   Úpublic_key_algorithm_oidÚ$Certificate.public_key_algorithm_oid¾   r˜   r(   c                ó   • g)z/
Not before time (represented as UTC datetime)
Nrq   rS   s    r&   Únot_valid_beforeÚCertificate.not_valid_beforeÅ   r˜   r(   c                ó   • g)z;
Not before time (represented as a non-naive UTC datetime)
Nrq   rS   s    r&   Únot_valid_before_utcÚ Certificate.not_valid_before_utcÌ   r˜   r(   c                ó   • g)z.
Not after time (represented as UTC datetime)
Nrq   rS   s    r&   Únot_valid_afterÚCertificate.not_valid_afterÓ   r˜   r(   c                ó   • g)z:
Not after time (represented as a non-naive UTC datetime)
Nrq   rS   s    r&   Únot_valid_after_utcÚCertificate.not_valid_after_utcÚ   r˜   r(   c                ó   • g)z!
Returns the issuer name object.
Nrq   rS   s    r&   ÚissuerÚCertificate.issuerá   r˜   r(   c                ó   • g©z"
Returns the subject name object.
Nrq   rS   s    r&   ÚsubjectÚCertificate.subjectè   r˜   r(   c                ó   • g©z\
Returns a HashAlgorithm corresponding to the type of the digest signed
in the certificate.
Nrq   rS   s    r&   Úsignature_hash_algorithmÚ$Certificate.signature_hash_algorithmï   r˜   r(   c                ó   • g©z:
Returns the ObjectIdentifier of the signature algorithm.
Nrq   rS   s    r&   Úsignature_algorithm_oidÚ#Certificate.signature_algorithm_oidù   r˜   r(   c                ó   • g©z-
Returns the signature algorithm parameters.
Nrq   rS   s    r&   Úsignature_algorithm_parametersÚ*Certificate.signature_algorithm_parameters   r˜   r(   c                ó   • g)z
Returns an Extensions object.
Nrq   rS   s    r&   r7   ÚCertificate.extensions	  r˜   r(   c                ó   • g©z
Returns the signature bytes.
Nrq   rS   s    r&   Ú	signatureÚCertificate.signature  r˜   r(   c                ó   • g)zB
Returns the tbsCertificate payload bytes as defined in RFC 5280.
Nrq   rS   s    r&   Útbs_certificate_bytesÚ!Certificate.tbs_certificate_bytes  r˜   r(   c                ó   • g)zP
Returns the tbsCertificate payload bytes with the SCT list extension
stripped.
Nrq   rS   s    r&   Útbs_precertificate_bytesÚ$Certificate.tbs_precertificate_bytes  r˜   r(   c                ó   • g©z
Checks equality.
Nrq   r^   s     r&   r`   ÚCertificate.__eq__&  r˜   r(   c                ó   • g©z
Computes a hash.
Nrq   rS   s    r&   rd   ÚCertificate.__hash__,  r˜   r(   c                ó   • g)z2
Serializes the certificate to PEM or DER format.
Nrq   ©r#   Úencodings     r&   Úpublic_bytesÚCertificate.public_bytes2  r˜   r(   c                ó   • g)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.
Nrq   )r#   r³   s     r&   Úverify_directly_issued_byÚ%Certificate.verify_directly_issued_by8  r˜   r(   rq   N©r•   zhashes.HashAlgorithmr*   rf   rn   )r*   r„   ©r*   r   rh   ©r*   údatetime.datetime©r*   r   ©r*   zhashes.HashAlgorithm | None©r*   z0None | padding.PSS | padding.PKCS1v15 | ec.ECDSA©r*   r   ri   rk   ©rÙ   zserialization.Encodingr*   rf   )r³   r�   r*   r+   )r-   r.   r/   r0   ÚabcÚabstractmethodr–   rp   rš   r�   r¡   r¤   r§   rª   r­   r°   r³   r·   r»   r¿   rÃ   r7   rÉ   rÌ   rÏ   r`   rd   rÚ   rÝ   r1   rq   r(   r&   r�   r�   £   sÌ  † Ø×Ñóó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 	×Ñóó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñðà	$óó ó ðð Ø×Ñóó ó ðð
 Ø×Ñðà	9óó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð 	×Ñóó ðð
 	×Ñóó ðð
 	×Ñóó ðð
 	×Ñóó ór(   r�   )Ú	metaclassc                  óÜ   • \ rS rSr\\R                  SS j5       5       r\\R                  S	S j5       5       r\\R                  S	S j5       5       r	\\R                  S
S j5       5       r
Srg)ÚRevokedCertificateiE  c                ó   • g)z7
Returns the serial number of the revoked certificate.
Nrq   rS   s    r&   rš   Ú RevokedCertificate.serial_numberF  r˜   r(   c                ó   • g)z8
Returns the date of when this certificate was revoked.
Nrq   rS   s    r&   Úrevocation_dateÚ"RevokedCertificate.revocation_dateM  r˜   r(   c                ó   • g)zT
Returns the date of when this certificate was revoked as a non-naive
UTC datetime.
Nrq   rS   s    r&   Úrevocation_date_utcÚ&RevokedCertificate.revocation_date_utcT  r˜   r(   c                ó   • g)zG
Returns an Extensions object containing a list of Revoked extensions.
Nrq   rS   s    r&   r7   ÚRevokedCertificate.extensions\  r˜   r(   rq   Nrn   rá   ræ   )r-   r.   r/   r0   rp   rè   ré   rš   rð   ró   r7   r1   rq   r(   r&   rì   rì   E  sˆ   † ØØ×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð Ø×Ñóó ó ór(   rì   c                  óz   • \ rS rSr      S	S jr\S
S j5       r\SS j5       r\SS j5       r\SS j5       r	Sr
g)Ú_RawRevokedCertificateih  c                ó(   • Xl         X l        X0l        g r   ©Ú_serial_numberÚ_revocation_dateÚ_extensions©r#   rš   rð   r7   s       r&   r!   Ú_RawRevokedCertificate.__init__i  ó   € ð ,ÔØ /ÔØ%Õr(   c                ó   • U R                   $ r   )rû   rS   s    r&   rš   Ú$_RawRevokedCertificate.serial_numbers  s   € à×"Ñ"Ð"r(   c                ób   • [         R                  " S[        R                  SS9  U R                  $ )Nuk   Properties that return a naÃ¯ve datetime object have been deprecated. Please switch to revocation_date_utc.r†   )Ú
stacklevel)ÚwarningsÚwarnr   ÚDeprecatedIn42rü   rS   s    r&   rð   Ú&_RawRevokedCertificate.revocation_datew  s.   € ä�Šð@ä× Ñ Øò		
ð ×$Ñ$Ð$r(   c                ód   • U R                   R                  [        R                  R                  S9$ )Nr@   )rü   rE   rC   ÚtimezoneÚutcrS   s    r&   ró   Ú*_RawRevokedCertificate.revocation_date_utc�  s(   € à×$Ñ$×,Ñ,´H×4EÑ4E×4IÑ4IÐ,ÐJÐJr(   c                ó   • U R                   $ r   )rý   rS   s    r&   r7   Ú!_RawRevokedCertificate.extensions…  s   € à×ÑÐr(   ©rý   rü   rû   N)rš   rg   rð   râ   r7   r   rn   rá   ræ   )r-   r.   r/   r0   r!   rp   rš   rð   ró   r7   r1   rq   r(   r&   rø   rø   h  su   † ð&àð&ð +ð&ð ô	&ð ó#ó ð#ð ó%ó ð%ð óKó ðKð ó ó ó r(   rø   c                  óê  • \ rS rSr\R
                  SS j5       r\R
                  SS j5       r\R
                      SS j5       r\	\R
                    SS j5       5       r
\	\R
                  SS j5       5       r\	\R
                    SS j5       5       r\	\R
                  SS j5       5       r\	\R
                  S S	 j5       5       r\	\R
                  S S
 j5       5       r\	\R
                  S!S j5       5       r\	\R
                  S!S j5       5       r\	\R
                  S"S j5       5       r\	\R
                  S#S j5       5       r\	\R
                  S#S j5       5       r\R
                  S$S j5       r\R
                  S%S j5       r\R0                  S&S j5       r\R0                  S'S j5       r\R
                      S(S j5       r\R
                  S)S j5       r\R
                      S*S j5       rSrg)+ÚCertificateRevocationListiŠ  c                ó   • g)z*
Serializes the CRL to PEM or DER format.
Nrq   rØ   s     r&   rÚ   Ú&CertificateRevocationList.public_bytes‹  r˜   r(   c                ó   • gr“   rq   r”   s     r&   r–   Ú%CertificateRevocationList.fingerprint‘  r˜   r(   c                ó   • g)z[
Returns an instance of RevokedCertificate or None if the serial_number
is not in the CRL.
Nrq   )r#   rš   s     r&   Ú(get_revoked_certificate_by_serial_numberÚBCertificateRevocationList.get_revoked_certificate_by_serial_number—  r˜   r(   c                ó   • grº   rq   rS   s    r&   r»   Ú2CertificateRevocationList.signature_hash_algorithm   r˜   r(   c                ó   • gr¾   rq   rS   s    r&   r¿   Ú1CertificateRevocationList.signature_algorithm_oidª  r˜   r(   c                ó   • grÂ   rq   rS   s    r&   rÃ   Ú8CertificateRevocationList.signature_algorithm_parameters±  r˜   r(   c                ó   • g)z3
Returns the X509Name with the issuer of this CRL.
Nrq   rS   s    r&   r³   Ú CertificateRevocationList.issuerº  r˜   r(   c                ó   • g)z/
Returns the date of next update for this CRL.
Nrq   rS   s    r&   Únext_updateÚ%CertificateRevocationList.next_updateÁ  r˜   r(   c                ó   • g)zK
Returns the date of next update for this CRL as a non-naive UTC
datetime.
Nrq   rS   s    r&   Únext_update_utcÚ)CertificateRevocationList.next_update_utcÈ  r˜   r(   c                ó   • g)z/
Returns the date of last update for this CRL.
Nrq   rS   s    r&   Úlast_updateÚ%CertificateRevocationList.last_updateÐ  r˜   r(   c                ó   • g)zK
Returns the date of last update for this CRL as a non-naive UTC
datetime.
Nrq   rS   s    r&   Úlast_update_utcÚ)CertificateRevocationList.last_update_utc×  r˜   r(   c                ó   • g)zC
Returns an Extensions object containing a list of CRL extensions.
Nrq   rS   s    r&   r7   Ú$CertificateRevocationList.extensionsß  r˜   r(   c                ó   • grÈ   rq   rS   s    r&   rÉ   Ú#CertificateRevocationList.signatureæ  r˜   r(   c                ó   • g)z?
Returns the tbsCertList payload bytes as defined in RFC 5280.
Nrq   rS   s    r&   Útbs_certlist_bytesÚ,CertificateRevocationList.tbs_certlist_bytesí  r˜   r(   c                ó   • grÒ   rq   r^   s     r&   r`   Ú CertificateRevocationList.__eq__ô  r˜   r(   c                ó   • g)z,
Number of revoked certificates in the CRL.
Nrq   rS   s    r&   r€   Ú!CertificateRevocationList.__len__ú  r˜   r(   c                ó   • g r   rq   ©r#   Úidxs     r&   r‚   Ú%CertificateRevocationList.__getitem__   s   € Ø;>r(   c                ó   • g r   rq   r9  s     r&   r‚   r;    s   € ØCFr(   c                ó   • g)zC
Returns a revoked certificate (or slice of revoked certificates).
Nrq   r9  s     r&   r‚   r;    r˜   r(   c                ó   • g)z(
Iterator over the revoked certificates
Nrq   rS   s    r&   r�   Ú"CertificateRevocationList.__iter__  r˜   r(   c                ó   • g)zA
Verifies signature of revocation list against given public key.
Nrq   )r#   r¡   s     r&   Úis_signature_validÚ,CertificateRevocationList.is_signature_valid  r˜   r(   rq   Nrç   rß   )rš   rg   r*   zRevokedCertificate | Nonerä   rh   rå   rã   )r*   údatetime.datetime | Nonerá   ræ   ri   rk   rn   )r:  rg   r*   rì   )r:  Úslicer*   úlist[RevokedCertificate])r:  zint | slicer*   z-RevokedCertificate | list[RevokedCertificate])r*   z#typing.Iterator[RevokedCertificate])r¡   r   r*   rm   )r-   r.   r/   r0   rè   ré   rÚ   r–   r  rp   r»   r¿   rÃ   r³   r"  r%  r(  r+  r7   rÉ   r2  r`   r€   ÚtypingÚoverloadr‚   r�   rA  r1   rq   r(   r&   r  r  Š  sª  † Ø×Ñóó ðð
 	×Ñóó ðð
 	×ÑðØ ðà	"óó ðð Ø×Ñðà	$óó ó ðð Ø×Ñóó ó ðð
 Ø×Ñðà	9óó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 	×Ñóó ðð
 	×Ñóó ðð
 ‡_�_Û>ó Ø>à‡_�_ÛFó ØFà×ÑðØðà	6óó ðð 	×Ñóó ðð
 	×ÑðØ9ðà	óó ór(   r  c                  ó¦  • \ rS rSr\R
                  SS j5       r\R
                  SS j5       r\R
                  SS j5       r\	\R
                  SS j5       5       r
\	\R
                    SS j5       5       r\	\R
                  SS j5       5       r\	\R
                    SS j5       5       r\	\R
                  SS	 j5       5       r\	\R
                  SS
 j5       5       r\R
                  SS j5       r\	\R
                  SS j5       5       r\	\R
                  SS j5       5       r\	\R
                  SS j5       5       r\R
                  SS j5       rSrg)ÚCertificateSigningRequesti   c                ó   • grÒ   rq   r^   s     r&   r`   Ú CertificateSigningRequest.__eq__!  r˜   r(   c                ó   • grÕ   rq   rS   s    r&   rd   Ú"CertificateSigningRequest.__hash__'  r˜   r(   c                ó   • gr    rq   rS   s    r&   r¡   Ú$CertificateSigningRequest.public_key-  r˜   r(   c                ó   • gr¶   rq   rS   s    r&   r·   Ú!CertificateSigningRequest.subject3  r˜   r(   c                ó   • grº   rq   rS   s    r&   r»   Ú2CertificateSigningRequest.signature_hash_algorithm:  r˜   r(   c                ó   • gr¾   rq   rS   s    r&   r¿   Ú1CertificateSigningRequest.signature_algorithm_oidD  r˜   r(   c                ó   • grÂ   rq   rS   s    r&   rÃ   Ú8CertificateSigningRequest.signature_algorithm_parametersK  r˜   r(   c                ó   • g)z0
Returns the extensions in the signing request.
Nrq   rS   s    r&   r7   Ú$CertificateSigningRequest.extensionsT  r˜   r(   c                ó   • g)z
Returns an Attributes object.
Nrq   rS   s    r&   r;   Ú$CertificateSigningRequest.attributes[  r˜   r(   c                ó   • g)z+
Encodes the request to PEM or DER format.
Nrq   rØ   s     r&   rÚ   Ú&CertificateSigningRequest.public_bytesb  r˜   r(   c                ó   • grÈ   rq   rS   s    r&   rÉ   Ú#CertificateSigningRequest.signatureh  r˜   r(   c                ó   • g)zL
Returns the PKCS#10 CertificationRequestInfo bytes as defined in RFC
2986.
Nrq   rS   s    r&   Útbs_certrequest_bytesÚ/CertificateSigningRequest.tbs_certrequest_byteso  r˜   r(   c                ó   • g)z(
Verifies signature of signing request.
Nrq   rS   s    r&   rA  Ú,CertificateSigningRequest.is_signature_validw  r˜   r(   c                ó   • g)z*
Get the attribute value for a given OID.
Nrq   )r#   r"   s     r&   r~   Ú/CertificateSigningRequest.get_attribute_for_oid~  r˜   r(   rq   Nrk   rn   rà   rã   rä   rh   rå   ræ   )r*   rs   rç   ri   )r*   rm   )r"   r   r*   rf   )r-   r.   r/   r0   rè   ré   r`   rd   r¡   rp   r·   r»   r¿   rÃ   r7   r;   rÚ   rÉ   ra  rA  r~   r1   rq   r(   r&   rI  rI     sÄ  † Ø×Ñóó ðð
 	×Ñóó ðð
 	×Ñóó ðð
 Ø×Ñóó ó ðð
 Ø×Ñðà	$óó ó ðð Ø×Ñóó ó ðð
 Ø×Ñðà	9óó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 	×Ñóó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð Ø×Ñóó ó ðð
 	×Ñóó ór(   rI  c                  óœ   • \ rS rSrS/ / 4     SS jjrSS jr      SS jrSS.       SS jjr SSS.         SS	 jjjrS
r	g)Ú CertificateSigningRequestBuilderi•  Nc                ó(   • Xl         X l        X0l        g)z2
Creates an empty X.509 certificate request (v1).
N)Ú_subject_namerý   rw   )r#   Úsubject_namer7   r;   s       r&   r!   Ú)CertificateSigningRequestBuilder.__init__–  s   € ð *ÔØ%ÔØ%Õr(   c                ó²   • [        U[        5      (       d  [        S5      eU R                  b  [	        S5      e[        XR                  U R                  5      $ )z6
Sets the certificate requestor's distinguished name.
úExpecting x509.Name object.ú&The subject name may only be set once.)r\   r   Ú	TypeErrorrj  r5   rh  rý   rw   ©r#   Únames     r&   rk  Ú-CertificateSigningRequestBuilder.subject_name£  sS   € ô ˜$¤×%Ñ%ÜÐ9Ó:Ð:Ø×ÑÑ)ÜÐEÓFÐFÜ/Ø×"Ñ" D×$4Ñ$4ó
ð 	
r(   c                óö   • [        U[        5      (       d  [        S5      e[        UR                  X!5      n[        X0R                  5        [        U R                  / U R                  QUPU R                  5      $ )z5
Adds an X.509 extension to the certificate request.
ú"extension must be an ExtensionType)
r\   r   rp  r   r"   r9   rý   rh  rj  rw   ©r#   ÚextvalÚcriticalr6   s       r&   Úadd_extensionÚ.CertificateSigningRequestBuilder.add_extension¯  sm   € ô ˜&¤-×0Ñ0ÜÐ@ÓAÐAä˜fŸj™j¨(Ó;ˆ	Ü# I×/?Ñ/?Ô@ä/Ø×ÑØ*ˆd×ÑÐ* 	Ð*Ø×Ñó
ð 	
r(   )Ú_tagc               óx  • [        U[        5      (       d  [        S5      e[        U[        5      (       d  [        S5      eUb   [        U[        5      (       d  [        S5      e[        XR                  5        Ub  UR                  nOSn[        U R                  U R                  / U R                  QXU4P5      $ )z;
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   rp  rf   r   r>   rw   rP   rh  rj  rý   )r#   r"   rP   r{  Útags        r&   Úadd_attributeÚ.CertificateSigningRequestBuilder.add_attributeÁ  s®   € ô ˜#Ô/×0Ñ0ÜÐ=Ó>Ð>ä˜%¤×'Ñ'ÜÐ1Ó2Ð2àÑ¤J¨t´Y×$?Ñ$?ÜÐ3Ó4Ð4ä# C×)9Ñ)9Ô:àÑØ—*‘*‰CàˆCä/Ø×ÑØ×ÑØ2ˆd×ÑÐ2 ¨SÐ 1Ð2ó
ð 	
r(   ©Úrsa_paddingc               ó.  • U R                   c  [        S5      eUbd  [        U[        R                  [        R
                  45      (       d  [        S5      e[        U[        R                  5      (       d  [        S5      e[        R                  " XX$5      $ )z6
Signs the request using the requestor's private key.
z/A CertificateSigningRequest must have a subjectúPadding must be PSS or PKCS1v15ú&Padding is only supported for RSA keys)rj  r5   r\   r   ÚPSSÚPKCS1v15rp  r   ÚRSAPrivateKeyÚ	rust_x509Úcreate_x509_csr©r#   Úprivate_keyr•   Úbackendr�  s        r&   ÚsignÚ%CertificateSigningRequestBuilder.signá  s�   € ð ×ÑÑ%ÜÐNÓOÐOàÑ"Ü˜k¬G¯K©K¼×9IÑ9IÐ+J×KÑKÜÐ AÓBÐBÜ˜k¬3×+<Ñ+<×=Ñ=ÜÐ HÓIÐIä×(Ò(Ø˜yó
ð 	
r(   )rw   rý   rj  )rk  úName | Noner7   úlist[Extension[ExtensionType]]r;   ú0list[tuple[ObjectIdentifier, bytes, int | None]])rr  r   r*   rh  )rw  r   rx  rm   r*   rh  )r"   r   rP   rf   r{  z_ASN1Type | Noner*   rh  r   )
r‹  r   r•   ú_AllowedHashTypes | NonerŒ  ú
typing.Anyr�  ú%padding.PSS | padding.PKCS1v15 | Noner*   rI  )
r-   r.   r/   r0   r!   rk  ry  r~  r�  r1   rq   r(   r&   rh  rh  •  sÌ   † ð %)Ø57ØGIð	&à!ð&ð 3ð&ð Eõ	&ô

ð
Ø#ð
Ø/3ð
à	)ô
ð. "&ñ
àð
ð ð
ð
 ð
ð 
*õ
ðH #ð	
ð >Bñ
à5ð
ð ,ð
ð ð	
ð ;ð
ð 
#÷
ñ 
r(   rh  c                  óÞ   • \ rS rSr% S\S'   SSSSSS/ 4               SS jjrSS jrSS jr    SS jrSS	 jr	SS
 jr
SS jr      SS jr SSS.         SS jjjrSrg)ÚCertificateBuilderiú  r�  rý   Nc                ó‚   • [         R                  U l        Xl        X l        X0l        X@l        XPl        X`l        Xpl	        g r   )
r„   rˆ   Ú_versionÚ_issuer_namerj  Ú_public_keyrû   Ú_not_valid_beforeÚ_not_valid_afterrý   )r#   Úissuer_namerk  r¡   rš   r§   r­   r7   s           r&   r!   ÚCertificateBuilder.__init__ý  s9   € ô  Ÿ
™
ˆŒØ'ÔØ)ÔØ%ÔØ+ÔØ!1ÔØ /ÔØ%Õr(   c           	     ó  • [        U[        5      (       d  [        S5      eU R                  b  [	        S5      e[        UU R                  U R                  U R                  U R                  U R                  U R                  5      $ )z#
Sets the CA's distinguished name.
rn  ú%The issuer name may only be set once.)r\   r   rp  r™  r5   r–  rj  rš  rû   r›  rœ  rý   rq  s     r&   r�  ÚCertificateBuilder.issuer_name  s{   € ô ˜$¤×%Ñ%ÜÐ9Ó:Ð:Ø×ÑÑ(ÜÐDÓEÐEÜ!ØØ×ÑØ×ÑØ×ÑØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r(   c           	     ó  • [        U[        5      (       d  [        S5      eU R                  b  [	        S5      e[        U R                  UU R                  U R                  U R                  U R                  U R                  5      $ )z*
Sets the requestor's distinguished name.
rn  ro  )r\   r   rp  rj  r5   r–  r™  rš  rû   r›  rœ  rý   rq  s     r&   rk  ÚCertificateBuilder.subject_name"  s{   € ô ˜$¤×%Ñ%ÜÐ9Ó:Ð:Ø×ÑÑ)ÜÐEÓFÐFÜ!Ø×ÑØØ×ÑØ×ÑØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r(   c           
     óÖ  • [        U[        R                  [        R                  [
        R                  [        R                  [        R                  [        R                  [        R                  45      (       d  [        S5      eU R                   b  [#        S5      e[%        U R&                  U R(                  UU R*                  U R,                  U R.                  U R0                  5      $ )zD
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.)r\   r   ÚDSAPublicKeyr   ÚRSAPublicKeyr	   ÚEllipticCurvePublicKeyr   ÚEd25519PublicKeyr
   ÚEd448PublicKeyr   ÚX25519PublicKeyr   ÚX448PublicKeyrp  rš  r5   r–  r™  rj  rû   r›  rœ  rý   )r#   Úkeys     r&   r¡   ÚCertificateBuilder.public_key4  sÌ   € ô Øä× Ñ Ü× Ñ Ü×)Ñ)Ü×(Ñ(Ü×$Ñ$Ü×&Ñ&Ü×"Ñ"ð÷
ñ 
ô ð!óð ð ×ÑÑ'ÜÐCÓDÐDÜ!Ø×ÑØ×ÑØØ×ÑØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r(   c           	     ól  • [        U[        5      (       d  [        S5      eU R                  b  [	        S5      eUS::  a  [	        S5      eUR                  5       S:¼  a  [	        S5      e[        U R                  U R                  U R                  UU R                  U R                  U R                  5      $ )z%
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.)r\   rg   rp  rû   r5   Ú
bit_lengthr–  r™  rj  rš  r›  rœ  rý   ©r#   Únumbers     r&   rš   Ú CertificateBuilder.serial_numberY  s³   € ô ˜&¤#×&Ñ&ÜÐEÓFÐFØ×ÑÑ*ÜÐFÓGÐGØ�Q‹;ÜÐDÓEÐEð ×ÑÓ #Ó%ÜØEóð ô "Ø×ÑØ×ÑØ×ÑØØ×"Ñ"Ø×!Ñ!Ø×Ñó
ð 	
r(   c           	     ó®  • [        U[        R                  5      (       d  [        S5      eU R                  b  [	        S5      e[        U5      nU[        :  a  [	        S5      eU R                  b  XR                  :”  a  [	        S5      e[        U R                  U R                  U R                  U R                  UU R                  U R                  5      $ )z'
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.)r\   rC   rp  r›  r5   rH   Ú_EARLIEST_UTC_TIMErœ  r–  r™  rj  rš  rû   rý   ©r#   rF   s     r&   r§   Ú#CertificateBuilder.not_valid_beforet  sÓ   € ô ˜$¤× 1Ñ 1×2Ñ2ÜÐ8Ó9Ð9Ø×!Ñ!Ñ-ÜÐIÓJÐJÜ)¨$Ó/ˆØÔ$Ó$Üð$óð ð × Ñ Ñ,°×8MÑ8MÓ1MÜðóð ô "Ø×ÑØ×ÑØ×ÑØ×ÑØØ×!Ñ!Ø×Ñó
ð 	
r(   c           	     ó®  • [        U[        R                  5      (       d  [        S5      eU R                  b  [	        S5      e[        U5      nU[        :  a  [	        S5      eU R                  b  XR                  :  a  [	        S5      e[        U R                  U R                  U R                  U R                  U R                  UU R                  5      $ )z'
Sets the certificate expiration time.
r¸  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.)r\   rC   rp  rœ  r5   rH   r¹  r›  r–  r™  rj  rš  rû   rý   rº  s     r&   r­   Ú"CertificateBuilder.not_valid_after‘  sÔ   € ô ˜$¤× 1Ñ 1×2Ñ2ÜÐ8Ó9Ð9Ø× Ñ Ñ,ÜÐHÓIÐIÜ)¨$Ó/ˆØÔ$Ó$Üð#óð ð
 ×"Ñ"Ñ.Ø×-Ñ-Ó-äðóð ô "Ø×ÑØ×ÑØ×ÑØ×ÑØ×"Ñ"ØØ×Ñó
ð 	
r(   c           
     óN  • [        U[        5      (       d  [        S5      e[        UR                  X!5      n[        X0R                  5        [        U R                  U R                  U R                  U R                  U R                  U R                  / U R                  QUP5      $ )z-
Adds an X.509 extension to the certificate.
ru  )r\   r   rp  r   r"   r9   rý   r–  r™  rj  rš  rû   r›  rœ  rv  s       r&   ry  Ú CertificateBuilder.add_extension±  s‘   € ô ˜&¤-×0Ñ0ÜÐ@ÓAÐAä˜fŸj™j¨(Ó;ˆ	Ü# I×/?Ñ/?Ô@ä!Ø×ÑØ×ÑØ×ÑØ×ÑØ×"Ñ"Ø×!Ñ!Ø*ˆd×ÑÐ* 	Ð*ó
ð 	
r(   r€  c               ó  • U R                   c  [        S5      eU R                  c  [        S5      eU R                  c  [        S5      eU R                  c  [        S5      eU R
                  c  [        S5      eU R                  c  [        S5      eUbd  [        U[        R                  [        R                  45      (       d  [        S5      e[        U[        R                  5      (       d  [        S5      e[        R                  " XX$5      $ )	z3
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 keyrƒ  r„  )rj  r5   r™  rû   r›  rœ  rš  r\   r   r…  r†  rp  r   r‡  rˆ  Úcreate_x509_certificaterŠ  s        r&   r�  Ú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ÑKÜÐ AÓBÐBÜ˜k¬3×+<Ñ+<×=Ñ=ÜÐ HÓIÐIä×0Ò0Ø˜yó
ð 	
r(   )rý   r™  rœ  r›  rš  rû   rj  r˜  )r�  r�  rk  r�  r¡   z CertificatePublicKeyTypes | Nonerš   ú
int | Noner§   rC  r­   rC  r7   r�  r*   r+   )rr  r   r*   r–  )r¬  r   r*   r–  )rµ  rg   r*   r–  )rF   râ   r*   r–  )rw  r   rx  rm   r*   r–  r   )
r‹  r   r•   r’  rŒ  r“  r�  r”  r*   r�   )r-   r.   r/   r0   Ú__annotations__r!   r�  rk  r¡   rš   r§   r­   ry  r�  r1   rq   r(   r&   r–  r–  ú  s  ‡ Ø/Ó/ð $(Ø$(Ø7;Ø$(Ø59Ø48Ø57ð&à ð&ð "ð&ð 5ð	&ð
 "ð&ð 3ð&ð 2ð&ð 3ð&ð 
õ&ô&
ô$
ð$#
à&ð#
ð 
ô#
ôJ
ô6
ô:
ð@
Ø#ð
Ø/3ð
à	ô
ð4 #ð	%
ð >Bñ%
à5ð%
ð ,ð%
ð ð	%
ð ;ð%
ð 
÷%
ñ %
r(   r–  c                  óÜ   • \ rS rSr% S\S'   S\S'   SSS/ / 4         SS jjr    SS jr    SS	 jr    SS
 jr      SS jr	    SS jr
 SSS.         SS jjjrSrg)Ú CertificateRevocationListBuilderiï  r�  rý   rE  Ú_revoked_certificatesNc                ó@   • Xl         X l        X0l        X@l        XPl        g r   )r™  Ú_last_updateÚ_next_updaterý   rÇ  )r#   r�  r(  r"  r7   Úrevoked_certificatess         r&   r!   Ú)CertificateRevocationListBuilder.__init__ó  s"   € ð (ÔØ'ÔØ'ÔØ%ÔØ%9Õ"r(   c                óà   • [        U[        5      (       d  [        S5      eU R                  b  [	        S5      e[        UU R                  U R                  U R                  U R                  5      $ )Nrn  r   )
r\   r   rp  r™  r5   rÆ  rÉ  rÊ  rý   rÇ  )r#   r�  s     r&   r�  Ú,CertificateRevocationListBuilder.issuer_name  si   € ô ˜+¤t×,Ñ,ÜÐ9Ó:Ð:Ø×ÑÑ(ÜÐDÓEÐEÜ/ØØ×ÑØ×ÑØ×ÑØ×&Ñ&ó
ð 	
r(   c                ó‚  • [        U[        R                  5      (       d  [        S5      eU R                  b  [	        S5      e[        U5      nU[        :  a  [	        S5      eU R                  b  XR                  :”  a  [	        S5      e[        U R                  UU R                  U R                  U R                  5      $ )Nr¸  ú!Last update may only be set once.ú8The last update date must be on or after 1950 January 1.z9The last update date must be before the next update date.)r\   rC   rp  rÉ  r5   rH   r¹  rÊ  rÆ  r™  rý   rÇ  )r#   r(  s     r&   r(  Ú,CertificateRevocationListBuilder.last_update  s½   € ô ˜+¤x×'8Ñ'8×9Ñ9ÜÐ8Ó9Ð9Ø×ÑÑ(ÜÐ@ÓAÐAÜ0°Ó=ˆØÔ+Ó+ÜØJóð ð ×ÑÑ(¨[×;LÑ;LÓ-LÜØKóð ô 0Ø×ÑØØ×ÑØ×ÑØ×&Ñ&ó
ð 	
r(   c                ó‚  • [        U[        R                  5      (       d  [        S5      eU R                  b  [	        S5      e[        U5      nU[        :  a  [	        S5      eU R                  b  XR                  :  a  [	        S5      e[        U R                  U R                  UU R                  U R                  5      $ )Nr¸  rÐ  rÑ  z8The next update date must be after the last update date.)r\   rC   rp  rÊ  r5   rH   r¹  rÉ  rÆ  r™  rý   rÇ  )r#   r"  s     r&   r"  Ú,CertificateRevocationListBuilder.next_update(  s½   € ô ˜+¤x×'8Ñ'8×9Ñ9ÜÐ8Ó9Ð9Ø×ÑÑ(ÜÐ@ÓAÐAÜ0°Ó=ˆØÔ+Ó+ÜØJóð ð ×ÑÑ(¨[×;LÑ;LÓ-LÜØJóð ô 0Ø×ÑØ×ÑØØ×ÑØ×&Ñ&ó
ð 	
r(   c                ó"  • [        U[        5      (       d  [        S5      e[        UR                  X!5      n[        X0R                  5        [        U R                  U R                  U R                  / U R                  QUPU R                  5      $ )z=
Adds an X.509 extension to the certificate revocation list.
ru  )r\   r   rp  r   r"   r9   rý   rÆ  r™  rÉ  rÊ  rÇ  rv  s       r&   ry  Ú.CertificateRevocationListBuilder.add_extension@  s   € ô ˜&¤-×0Ñ0ÜÐ@ÓAÐAä˜fŸj™j¨(Ó;ˆ	Ü# I×/?Ñ/?Ô@Ü/Ø×ÑØ×ÑØ×ÑØ*ˆd×ÑÐ* 	Ð*Ø×&Ñ&ó
ð 	
r(   c                óÌ   • [        U[        5      (       d  [        S5      e[        U R                  U R
                  U R                  U R                  / U R                  QUP5      $ )z(
Adds a revoked certificate to the CRL.
z)Must be an instance of RevokedCertificate)	r\   rì   rp  rÆ  r™  rÉ  rÊ  rý   rÇ  )r#   Úrevoked_certificates     r&   Úadd_revoked_certificateÚ8CertificateRevocationListBuilder.add_revoked_certificateS  sd   € ô Ð-Ô/A×BÑBÜÐGÓHÐHä/Ø×ÑØ×ÑØ×ÑØ×ÑØ>ˆd×(Ñ(Ð>Ð*=Ð>ó
ð 	
r(   r€  c               óŽ  • U R                   c  [        S5      eU R                  c  [        S5      eU R                  c  [        S5      eUbd  [	        U[
        R                  [
        R                  45      (       d  [        S5      e[	        U[        R                  5      (       d  [        S5      e[        R                  " XX$5      $ )NzA CRL must have an issuer namez"A CRL must have a last update timez"A CRL must have a next update timerƒ  r„  )r™  r5   rÉ  rÊ  r\   r   r…  r†  rp  r   r‡  rˆ  Úcreate_x509_crlrŠ  s        r&   r�  Ú%CertificateRevocationListBuilder.signd  s±   € ð ×ÑÑ$ÜÐ=Ó>Ð>à×ÑÑ$ÜÐAÓBÐBà×ÑÑ$ÜÐAÓBÐBàÑ"Ü˜k¬G¯K©K¼×9IÑ9IÐ+J×KÑKÜÐ AÓBÐBÜ˜k¬3×+<Ñ+<×=Ñ=ÜÐ HÓIÐIä×(Ò(Ø˜yó
ð 	
r(   )rý   r™  rÉ  rÊ  rÇ  )
r�  r�  r(  rC  r"  rC  r7   r�  rË  rE  )r�  r   r*   rÆ  )r(  râ   r*   rÆ  )r"  râ   r*   rÆ  )rw  r   rx  rm   r*   rÆ  )rØ  rì   r*   rÆ  r   )
r‹  r   r•   r’  rŒ  r“  r�  r”  r*   r  )r-   r.   r/   r0   rÄ  r!   r�  r(  r"  ry  rÙ  r�  r1   rq   r(   r&   rÆ  rÆ  ï  s  ‡ Ø/Ó/Ø3Ó3ð $(Ø04Ø04Ø57Ø9;ð:à ð:ð .ð:ð .ð	:ð
 3ð:ð 7õ:ð
Øð
à	)ô
ð
Ø,ð
à	)ô
ð0
Ø,ð
à	)ô
ð0
Ø#ð
Ø/3ð
à	)ô
ð&
Ø#5ð
à	)ô
ð* #ð	
ð >Bñ
à5ð
ð ,ð
ð ð	
ð ;ð
ð 
#÷
ñ 
r(   rÆ  c                  ór   • \ rS rSrSS/ 4     S	S jjrS
S jr    SS jr      SS jrSSS jjrSr	g)ÚRevokedCertificateBuilderi€  Nc                ó(   • Xl         X l        X0l        g r   rú   rþ   s       r&   r!   Ú"RevokedCertificateBuilder.__init__�  r   r(   c                ó  • [        U[        5      (       d  [        S5      eU R                  b  [	        S5      eUS::  a  [	        S5      eUR                  5       S:¼  a  [	        S5      e[        XR                  U R                  5      $ )Nr¯  r°  r   z$The serial number should be positiver±  r²  )	r\   rg   rp  rû   r5   r³  rß  rü   rý   r´  s     r&   rš   Ú'RevokedCertificateBuilder.serial_number‹  s‰   € Ü˜&¤#×&Ñ&ÜÐEÓFÐFØ×ÑÑ*ÜÐFÓGÐGØ�Q‹;ÜÐCÓDÐDð ×ÑÓ #Ó%ÜØEóð ô )Ø×)Ñ)¨4×+;Ñ+;ó
ð 	
r(   c                ó  • [        U[        R                  5      (       d  [        S5      eU R                  b  [	        S5      e[        U5      nU[        :  a  [	        S5      e[        U R                  XR                  5      $ )Nr¸  z)The revocation date may only be set once.z7The revocation date must be on or after 1950 January 1.)
r\   rC   rp  rü   r5   rH   r¹  rß  rû   rý   rº  s     r&   rð   Ú)RevokedCertificateBuilder.revocation_date�  s~   € ô ˜$¤× 1Ñ 1×2Ñ2ÜÐ8Ó9Ð9Ø× Ñ Ñ,ÜÐHÓIÐIÜ)¨$Ó/ˆØÔ$Ó$ÜØIóð ô )Ø×Ñ ×'7Ñ'7ó
ð 	
r(   c                óö   • [        U[        5      (       d  [        S5      e[        UR                  X!5      n[        X0R                  5        [        U R                  U R                  / U R                  QUP5      $ )Nru  )
r\   r   rp  r   r"   r9   rý   rß  rû   rü   rv  s       r&   ry  Ú'RevokedCertificateBuilder.add_extension­  sm   € ô ˜&¤-×0Ñ0ÜÐ@ÓAÐAä˜fŸj™j¨(Ó;ˆ	Ü# I×/?Ñ/?Ô@Ü(Ø×ÑØ×!Ñ!Ø*ˆd×ÑÐ* 	Ð*ó
ð 	
r(   c                óÊ   • U R                   c  [        S5      eU R                  c  [        S5      e[        U R                   U R                  [	        U R
                  5      5      $ )Nz/A revoked certificate must have a serial numberz1A revoked certificate must have a revocation date)rû   r5   rü   rø   r   rý   )r#   rŒ  s     r&   ÚbuildÚRevokedCertificateBuilder.build»  se   € Ø×ÑÑ&ÜÐNÓOÐOØ× Ñ Ñ(ÜØCóð ô &Ø×ÑØ×!Ñ!Ü�t×'Ñ'Ó(ó
ð 	
r(   r  )rš   rÃ  rð   rC  r7   r�  )rµ  rg   r*   rß  )rF   râ   r*   rß  )rw  r   rx  rm   r*   rß  r   )rŒ  r“  r*   rì   )
r-   r.   r/   r0   r!   rš   rð   ry  ré  r1   rq   r(   r&   rß  rß  €  so   † ð %)Ø48Ø57ð	&à!ð&ð 2ð&ð 3õ	&ô
ð$
Ø%ð
à	"ô
ð 
Ø#ð
Ø/3ð
à	"ô
÷
ñ 
r(   rß  c                 ó\   • [         R                  [        R                  " S5      S5      S-	  $ )Né   Úbigr   )rg   Ú
from_bytesÚosÚurandomrq   r(   r&   Úrandom_serial_numberrñ  É  s    € Ü�>‰>œ"Ÿ*š* R›.¨%Ó0°AÑ5Ð5r(   )r6   zExtension[ExtensionType]r7   r�  r*   r+   )r"   r   r;   r‘  r*   r+   )rF   râ   r*   râ   rn   )NÚ
__future__r   rè   rC   rï  rF  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   r¹  ÚUnionÚSHA224ÚSHA256ÚSHA384ÚSHA512ÚSHA3_224ÚSHA3_256ÚSHA3_384ÚSHA3_512Ú_AllowedHashTypesÚ	Exceptionr   r9   r>   rH   rJ   rs   ÚEnumr„   rŠ   ÚABCMetar�   Úregisterrì   rø   r  rI  Ú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_crlrh  r–  rÆ  rß  rñ  rq   r(   r&   Ú<module>r     sy  ðõ
 #ã 
Û Û 	Û Û å Ý @ß @÷	÷ 	ó 	÷ñ ÷
ó ÷ 3Ý 2à×&Ò& t¨Q°Ó2Ð ð —L‘LØ
‡M�MØ
‡M�MØ
‡M�MØ
‡M�MØ
‡O�OØ
‡O�OØ
‡O�OØ
‡O�Oðñ	Ð ô˜	ô ðEØ'ðEà.ðEð 
ôEðEØ	ðEà@ðEð 
ôEô÷!8ñ !8÷HFñ Fô(ˆe�j‰jô ô
-�Yô -ô[˜CŸK™Kò [ð~ × Ñ �Y×*Ñ*Ô +ô 3§;¡;ò ð@ × Ñ ˜I×8Ñ8Ô 9ô Ð/ô  ôDP¨#¯+©+ò Pðf × "Ñ " 9×#FÑ#FÔ Gôb¨#¯+©+ò bðL × "Ñ " 9×#FÑ#FÔ Gð &×?Ñ?Ð Ø%×?Ñ?Ð à&×AÑAÐ à×/Ñ/Ð Ø×/Ñ/Ð à×/Ñ/Ð Ø×/Ñ/Ð ÷b
ñ b
÷Jr
ñ r
÷jN
ñ N
÷bF
ñ F
õR6r(   