ó
    pÜ§i#N  ã                  óî  • S SK Jr  S SKrS SKrS SKrS SKJrJr  S SKJ	r	  S SK
JrJr  S SKJr  S SKJrJrJr   " S S	\R&                  5      r " S
 S\R&                  5      r\R,                  \R.                  \R0                  \R2                  \R4                  4rSS jr " S S\R&                  5      r " S S5      r " S S\R>                  S9r  " S S\R>                  S9r! " S S\R>                  S9r"\ RG                  \	R@                  5        \"RG                  \	RD                  5        \!RG                  \	RB                  5         " S S5      r$ " S S5      r%\	RL                  r&\	RN                  r'g)é    )ÚannotationsN)ÚutilsÚx509)Úocsp)ÚhashesÚserialization)Ú CertificateIssuerPrivateKeyTypes)Ú_EARLIEST_UTC_TIMEÚ_convert_to_naive_utc_timeÚ_reject_duplicate_extensionc                  ó   • \ rS rSrSrSrSrg)ÚOCSPResponderEncodingé   zBy HashzBy Name© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚHASHÚNAMEÚ__static_attributes__r   ó    Ú8/usr/lib/python3/dist-packages/cryptography/x509/ocsp.pyr   r      s   † Ø€DØƒDr   r   c                  ó,   • \ rS rSrSrSrSrSrSrSr	Sr
g	)
ÚOCSPResponseStatusé   r   é   é   é   é   é   r   N)r   r   r   r   Ú
SUCCESSFULÚMALFORMED_REQUESTÚINTERNAL_ERRORÚ	TRY_LATERÚSIG_REQUIREDÚUNAUTHORIZEDr   r   r   r   r   r      s!   † Ø€JØÐØ€NØ€IØ€LØƒLr   r   c                óD   • [        U [        5      (       d  [        S5      eg )Nz9Algorithm must be SHA1, SHA224, SHA256, SHA384, or SHA512)Ú
isinstanceÚ_ALLOWED_HASHESÚ
ValueError)Ú	algorithms    r   Ú_verify_algorithmr-   /   s$   € Ü�i¤×1Ñ1ÜØGó
ð 	
ð 2r   c                  ó    • \ rS rSrSrSrSrSrg)ÚOCSPCertStatusé6   r   r   r   r   N)r   r   r   r   ÚGOODÚREVOKEDÚUNKNOWNr   r   r   r   r/   r/   6   s   † Ø€DØ€GØƒGr   r/   c                  ó>   • \ rS rSr                SS jrSrg)Ú_SingleResponseé<   c	                óH  • [        U[        R                  5      (       a  [        U[        R                  5      (       d  [        S5      e[	        U5        [        U[
        R
                  5      (       d  [        S5      eUb*  [        U[
        R
                  5      (       d  [        S5      eXl        X l        X0l        XPl	        X`l
        [        U[        5      (       d  [        S5      eU[        R                  La  Ub  [        S5      eUb  [        S5      eOw[        U[
        R
                  5      (       d  [        S5      e[        U5      nU[        :  a  [        S5      eUb*  [        U[        R                   5      (       d  [        S	5      eX@l        Xpl        X€l        g )
Nú%cert and issuer must be a Certificatez%this_update must be a datetime objectz-next_update must be a datetime object or Nonez8cert_status must be an item from the OCSPCertStatus enumzBrevocation_time can only be provided if the certificate is revokedzDrevocation_reason can only be provided if the certificate is revokedz)revocation_time must be a datetime objectz7The revocation_time must be on or after 1950 January 1.zCrevocation_reason must be an item from the ReasonFlags enum or None)r)   r   ÚCertificateÚ	TypeErrorr-   ÚdatetimeÚ_certÚ_issuerÚ
_algorithmÚ_this_updateÚ_next_updater/   r2   r+   r   r
   ÚReasonFlagsÚ_cert_statusÚ_revocation_timeÚ_revocation_reason)	ÚselfÚcertÚissuerr,   Úcert_statusÚthis_updateÚnext_updateÚrevocation_timeÚrevocation_reasons	            r   Ú__init__Ú_SingleResponse.__init__=   sš  € ô ˜$¤× 0Ñ 0×1Ñ1¼Ø”D×$Ñ$÷:
ñ :
ô ÐCÓDÐDä˜)Ô$Ü˜+¤x×'8Ñ'8×9Ñ9ÜÐCÓDÐDØÑ"¬:Øœ×*Ñ*÷,
ñ ,
ô ÐKÓLÐLàŒ
ØŒØ#ŒØ'ÔØ'Ôä˜+¤~×6Ñ6ÜØJóð ð œn×4Ñ4Ò4ØÑ*Ü ð!óð ð !Ñ,Ü ð"óð ð -ô ˜o¬x×/@Ñ/@×AÑAÜÐ KÓLÐLä8¸ÓIˆOØÔ!3Ó3Ü ð'óð ð
 !Ñ,´ZØ!¤4×#3Ñ#3÷6ñ 6ô  ð#óð ð
 (ÔØ /ÔØ"3Õr   )r>   r<   rB   r=   r@   rD   rC   r?   N)rF   úx509.CertificaterG   rO   r,   úhashes.HashAlgorithmrH   r/   rI   údatetime.datetimerJ   údatetime.datetime | NonerK   rR   rL   úx509.ReasonFlags | None)r   r   r   r   rM   r   r   r   r   r5   r5   <   s^   † ðB4àðB4ð !ðB4ð (ð	B4ð
 $ðB4ð 'ðB4ð .ðB4ð 2ðB4ð 3÷B4r   r5   c                  ó6  • \ 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
\R                  SS j5       r\\R                  SS j5       5       rSrg	)ÚOCSPRequesté‚   c                ó   • g©z#
The hash of the issuer public key
Nr   ©rE   s    r   Úissuer_key_hashÚOCSPRequest.issuer_key_hashƒ   ó   � r   c                ó   • g©z
The hash of the issuer name
Nr   rY   s    r   Úissuer_name_hashÚOCSPRequest.issuer_name_hashŠ   r\   r   c                ó   • g©z;
The hash algorithm used in the issuer name and key hashes
Nr   rY   s    r   Úhash_algorithmÚOCSPRequest.hash_algorithm‘   r\   r   c                ó   • g©z=
The serial number of the cert whose status is being checked
Nr   rY   s    r   Úserial_numberÚOCSPRequest.serial_number˜   r\   r   c                ó   • g)z
Serializes the request to DER
Nr   ©rE   Úencodings     r   Úpublic_bytesÚOCSPRequest.public_bytesŸ   r\   r   c                ó   • g)z@
The list of request extensions. Not single request extensions.
Nr   rY   s    r   Ú
extensionsÚOCSPRequest.extensions¥   r\   r   r   N©ÚreturnÚbytes©rr   rP   ©rr   Úint©rk   zserialization.Encodingrr   rs   ©rr   zx509.Extensions)r   r   r   r   ÚpropertyÚabcÚabstractmethodrZ   r_   rc   rg   rl   ro   r   r   r   r   rU   rU   ‚   sÄ   † ØØ×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 	×Ñóó ðð
 Ø×Ñóó ó ór   rU   )Ú	metaclassc                  ól  • \ 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
\\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Srg)ÚOCSPSingleResponseé­   c                ó   • g©zI
The status of the certificate (an element from the OCSPCertStatus enum)
Nr   rY   s    r   Úcertificate_statusÚ%OCSPSingleResponse.certificate_status®   r\   r   c                ó   • g©zF
The date of when the certificate was revoked or None if not
revoked.
Nr   rY   s    r   rK   Ú"OCSPSingleResponse.revocation_timeµ   r\   r   c                ó   • g©zo
The date of when the certificate was revoked or None if not
revoked. Represented as a non-naive UTC datetime.
Nr   rY   s    r   Úrevocation_time_utcÚ&OCSPSingleResponse.revocation_time_utc½   r\   r   c                ó   • g©zQ
The reason the certificate was revoked or None if not specified or
not revoked.
Nr   rY   s    r   rL   Ú$OCSPSingleResponse.revocation_reasonÅ   r\   r   c                ó   • g©zi
The most recent time at which the status being indicated is known by
the responder to have been correct
Nr   rY   s    r   rI   ÚOCSPSingleResponse.this_updateÍ   r\   r   c                ó   • g©z“
The most recent time at which the status being indicated is known by
the responder to have been correct. Represented as a non-naive UTC
datetime.
Nr   rY   s    r   Úthis_update_utcÚ"OCSPSingleResponse.this_update_utcÕ   r\   r   c                ó   • g©z3
The time when newer information will be available
Nr   rY   s    r   rJ   ÚOCSPSingleResponse.next_updateÞ   r\   r   c                ó   • g©z]
The time when newer information will be available. Represented as a
non-naive UTC datetime.
Nr   rY   s    r   Únext_update_utcÚ"OCSPSingleResponse.next_update_utcå   r\   r   c                ó   • grX   r   rY   s    r   rZ   Ú"OCSPSingleResponse.issuer_key_hashí   r\   r   c                ó   • gr^   r   rY   s    r   r_   Ú#OCSPSingleResponse.issuer_name_hashô   r\   r   c                ó   • grb   r   rY   s    r   rc   Ú!OCSPSingleResponse.hash_algorithmû   r\   r   c                ó   • grf   r   rY   s    r   rg   Ú OCSPSingleResponse.serial_number  r\   r   r   N©rr   r/   ©rr   rR   ©rr   rS   ©rr   rQ   rq   rt   ru   )r   r   r   r   ry   rz   r{   r‚   rK   r‰   rL   rI   r“   rJ   rš   rZ   r_   rc   rg   r   r   r   r   r~   r~   ­   s˜  † ØØ×Ñóó ó ðð
 Ø×Ñóó ó ðð Ø×Ñóó ó ðð Ø×Ñóó ó ðð Ø×Ñóó ó ðð Ø×Ñóó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ór   r~   c                  ó"  • \ 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
\\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       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 Sr!g).ÚOCSPResponsei
  c                ó   • g)zG
An iterator over the individual SINGLERESP structures in the
response
Nr   rY   s    r   Ú	responsesÚOCSPResponse.responses  r\   r   c                ó   • g)zU
The status of the response. This is a value from the OCSPResponseStatus
enumeration
Nr   rY   s    r   Úresponse_statusÚOCSPResponse.response_status  r\   r   c                ó   • g)z1
The ObjectIdentifier of the signature algorithm
Nr   rY   s    r   Úsignature_algorithm_oidÚ$OCSPResponse.signature_algorithm_oid  r\   r   c                ó   • g)zH
Returns a HashAlgorithm corresponding to the type of the digest signed
Nr   rY   s    r   Úsignature_hash_algorithmÚ%OCSPResponse.signature_hash_algorithm"  r\   r   c                ó   • g)z
The signature bytes
Nr   rY   s    r   Ú	signatureÚOCSPResponse.signature+  r\   r   c                ó   • g)z
The tbsResponseData bytes
Nr   rY   s    r   Útbs_response_bytesÚOCSPResponse.tbs_response_bytes2  r\   r   c                ó   • g)z›
A list of certificates used to help build a chain to verify the OCSP
response. This situation occurs when the OCSP responder uses a delegate
certificate.
Nr   rY   s    r   ÚcertificatesÚOCSPResponse.certificates9  r\   r   c                ó   • g)z"
The responder's key hash or None
Nr   rY   s    r   Úresponder_key_hashÚOCSPResponse.responder_key_hashB  r\   r   c                ó   • g)z
The responder's Name or None
Nr   rY   s    r   Úresponder_nameÚOCSPResponse.responder_nameI  r\   r   c                ó   • g)z$
The time the response was produced
Nr   rY   s    r   Úproduced_atÚOCSPResponse.produced_atP  r\   r   c                ó   • g)zN
The time the response was produced. Represented as a non-naive UTC
datetime.
Nr   rY   s    r   Úproduced_at_utcÚOCSPResponse.produced_at_utcW  r\   r   c                ó   • gr�   r   rY   s    r   r‚   ÚOCSPResponse.certificate_status_  r\   r   c                ó   • gr…   r   rY   s    r   rK   ÚOCSPResponse.revocation_timef  r\   r   c                ó   • grˆ   r   rY   s    r   r‰   Ú OCSPResponse.revocation_time_utcn  r\   r   c                ó   • grŒ   r   rY   s    r   rL   ÚOCSPResponse.revocation_reasonv  r\   r   c                ó   • gr�   r   rY   s    r   rI   ÚOCSPResponse.this_update~  r\   r   c                ó   • gr’   r   rY   s    r   r“   ÚOCSPResponse.this_update_utc†  r\   r   c                ó   • gr–   r   rY   s    r   rJ   ÚOCSPResponse.next_update�  r\   r   c                ó   • gr™   r   rY   s    r   rš   ÚOCSPResponse.next_update_utc–  r\   r   c                ó   • grX   r   rY   s    r   rZ   ÚOCSPResponse.issuer_key_hashž  r\   r   c                ó   • gr^   r   rY   s    r   r_   ÚOCSPResponse.issuer_name_hash¥  r\   r   c                ó   • grb   r   rY   s    r   rc   ÚOCSPResponse.hash_algorithm¬  r\   r   c                ó   • grf   r   rY   s    r   rg   ÚOCSPResponse.serial_number³  r\   r   c                ó   • g)zB
The list of response extensions. Not single response extensions.
Nr   rY   s    r   ro   ÚOCSPResponse.extensionsº  r\   r   c                ó   • g)zB
The list of single response extensions. Not response extensions.
Nr   rY   s    r   Úsingle_extensionsÚOCSPResponse.single_extensionsÁ  r\   r   c                ó   • g)z 
Serializes the response to DER
Nr   rj   s     r   rl   ÚOCSPResponse.public_bytesÈ  r\   r   r   N)rr   z#typing.Iterator[OCSPSingleResponse])rr   r   )rr   zx509.ObjectIdentifier)rr   úhashes.HashAlgorithm | Nonerq   )rr   zlist[x509.Certificate])rr   zbytes | None)rr   zx509.Name | Noner§   r¤   r¥   r¦   rt   ru   rx   rw   )"r   r   r   r   ry   rz   r{   r«   r®   r±   r´   r·   rº   r½   rÀ   rÃ   rÆ   rÉ   r‚   rK   r‰   rL   rI   r“   rJ   rš   rZ   r_   rc   rg   ro   ræ   rl   r   r   r   r   r©   r©   
  st  † ØØ×Ñóó ó ðð Ø×Ñóó ó ðð Ø×Ñóó ó ðð
 Ø×Ñðà	$óó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð Ø×Ñóó ó ðð Ø×Ñóó ó ðð Ø×Ñóó ó ðð Ø×Ñóó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 Ø×Ñóó ó ðð
 	×Ñóó ór   r©   c                  óŽ   • \ 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 jrSr	g)ÚOCSPRequestBuilderiÔ  Nc                ó(   • Xl         X l        X0l        g ©N)Ú_requestÚ_request_hashÚ_extensions)rE   ÚrequestÚrequest_hashro   s       r   rM   ÚOCSPRequestBuilder.__init__Õ  s   € ð  ŒØ)ÔØ%Õr   c                ó:  • U R                   c  U R                  b  [        S5      e[        U5        [	        U[
        R                  5      (       a  [	        U[
        R                  5      (       d  [        S5      e[        XU4U R                  U R                  5      $ )Nú.Only one certificate can be added to a requestr8   )
rï   rð   r+   r-   r)   r   r9   r:   rì   rñ   )rE   rF   rG   r,   s       r   Úadd_certificateÚ"OCSPRequestBuilder.add_certificateã  sŠ   € ð �=‰=Ñ$¨×(:Ñ(:Ñ(FÜÐMÓNÐNä˜)Ô$Ü˜$¤× 0Ñ 0×1Ñ1¼Ø”D×$Ñ$÷:
ñ :
ô ÐCÓDÐDä!Ø˜9Ð% t×'9Ñ'9¸4×;KÑ;Kó
ð 	
r   c                ó¾  • U R                   c  U R                  b  [        S5      e[        U[        5      (       d  [        S5      e[        U5        [        R                  " SU5        [        R                  " SU5        UR                  [        U5      :w  d  UR                  [        U5      :w  a  [        S5      e[        U R                   XX44U R                  5      $ )Nrö   z serial_number must be an integerr_   rZ   z`issuer_name_hash and issuer_key_hash must be the same length as the digest size of the algorithm)rï   rð   r+   r)   rv   r:   r-   r   Ú_check_bytesÚdigest_sizeÚlenrì   rñ   )rE   r_   rZ   rg   r,   s        r   Úadd_certificate_by_hashÚ*OCSPRequestBuilder.add_certificate_by_hashö  sÍ   € ð �=‰=Ñ$¨×(:Ñ(:Ñ(FÜÐMÓNÐNä˜-¬×-Ñ-ÜÐ>Ó?Ð?ä˜)Ô$Ü×ÒÐ-Ð/?Ô@Ü×ÒÐ,¨oÔ>Ø× Ñ ¤CØó%
ó 
à×"Ñ"¤c¨/Ó&:Ó:Üð6óð ô
 "Ø�M‰MØ°ÐIØ×Ñó
ð 	
r   c                ó   • [        U[        R                  5      (       d  [        S5      e[        R                  " UR
                  X!5      n[        X0R                  5        [        U R                  U R                  / U R                  QUP5      $ ©Nz"extension must be an ExtensionType)r)   r   ÚExtensionTyper:   Ú	ExtensionÚoidr   rñ   rì   rï   rð   ©rE   ÚextvalÚcriticalÚ	extensions       r   Úadd_extensionÚ OCSPRequestBuilder.add_extension  st   € ô ˜&¤$×"4Ñ"4×5Ñ5ÜÐ@ÓAÐAä—N’N 6§:¡:¨xÓ@ˆ	Ü# I×/?Ñ/?Ô@ä!Ø�M‰M˜4×-Ñ-Ð/M°×1AÑ1AÐ/MÀ9Ð/Mó
ð 	
r   c                óx   • U R                   c  U R                  c  [        S5      e[        R                  " U 5      $ )Nz*You must add a certificate before building)rï   rð   r+   r   Úcreate_ocsp_requestrY   s    r   ÚbuildÚOCSPRequestBuilder.build!  s4   € Ø�=‰=Ñ  T×%7Ñ%7Ñ%?ÜÐIÓJÐJä×'Ò'¨Ó-Ð-r   )rñ   rï   rð   )rò   zFtuple[x509.Certificate, x509.Certificate, hashes.HashAlgorithm] | Noneró   z5tuple[bytes, bytes, int, hashes.HashAlgorithm] | Nonero   ú(list[x509.Extension[x509.ExtensionType]]rr   ÚNone)rF   rO   rG   rO   r,   rP   rr   rì   )
r_   rs   rZ   rs   rg   rv   r,   rP   rr   rì   )r  úx509.ExtensionTyper  Úboolrr   rì   )rr   rU   )
r   r   r   r   rM   r÷   rý   r  r  r   r   r   r   rì   rì   Ô  s¼   † ð àØ?Að&ðð&ðð&ð =ð&ð 
õ&ð
àð
ð !ð
ð (ð	
ð
 
ô
ð&
àð
ð ð
ð ð	
ð
 (ð
ð 
ô
ð<
Ø(ð
Ø48ð
à	ô
÷.r   rì   c                  óÖ   • \ rS rSr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5       rS
rg)ÚOCSPResponseBuilderi(  Nc                ó4   • Xl         X l        X0l        X@l        g rî   )Ú	_responseÚ_responder_idÚ_certsrñ   )rE   ÚresponseÚresponder_idÚcertsro   s        r   rM   ÚOCSPResponseBuilder.__init__)  s   € ð "ŒØ)ÔØŒØ%Õr   c	           
     ó®   • U R                   b  [        S5      e[        UUUUUUUU5      n	[        U	U R                  U R
                  U R                  5      $ )Nz#Only one response per OCSPResponse.)r  r+   r5   r  r  r  rñ   )
rE   rF   rG   r,   rH   rI   rJ   rK   rL   Ú
singleresps
             r   Úadd_responseÚ OCSPResponseBuilder.add_response6  sg   € ð �>‰>Ñ%ÜÐBÓCÐCä$ØØØØØØØØó	
ˆ
ô #ØØ×ÑØ�K‰KØ×Ñó	
ð 	
r   c                ó   • U R                   b  [        S5      e[        U[        R                  5      (       d  [        S5      e[        U[        5      (       d  [        S5      e[        U R                  X!4U R                  U R                  5      $ )Nz!responder_id can only be set oncez$responder_cert must be a Certificatez6encoding must be an element from OCSPResponderEncoding)r  r+   r)   r   r9   r:   r   r  r  r  rñ   )rE   rk   Úresponder_certs      r   r  Ú OCSPResponseBuilder.responder_idU  s…   € ð ×ÑÑ)ÜÐ@ÓAÐAÜ˜.¬$×*:Ñ*:×;Ñ;ÜÐBÓCÐCÜ˜(Ô$9×:Ñ:ÜØHóð ô #Ø�N‰NØÐ&Ø�K‰KØ×Ñó	
ð 	
r   c                ó  • U R                   b  [        S5      e[        U5      n[        U5      S:X  a  [        S5      e[	        S U 5       5      (       d  [        S5      e[        U R                  U R                  UU R                  5      $ )Nz!certificates may only be set oncer   zcerts must not be an empty listc              3  óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frî   )r)   r   r9   )Ú.0Úxs     r   Ú	<genexpr>Ú3OCSPResponseBuilder.certificates.<locals>.<genexpr>p  s    é € ÐBºE°q”:˜a¤×!1Ñ!1×2Ð2ºEùs   ‚')z$certs must be a list of Certificates)
r  r+   Úlistrü   Úallr:   r  r  r  rñ   )rE   r  s     r   r½   Ú OCSPResponseBuilder.certificatesh  s€   € ð �;‰;Ñ"ÜÐ@ÓAÐAÜ�U“ˆÜˆu‹:˜‹?ÜÐ>Ó?Ð?ÜÑB¹EÓB×BÑBÜÐBÓCÐCÜ"Ø�N‰NØ×ÑØØ×Ñó	
ð 	
r   c                ó6  • [        U[        R                  5      (       d  [        S5      e[        R                  " UR
                  X!5      n[        X0R                  5        [        U R                  U R                  U R                  / U R                  QUP5      $ r   )r)   r   r  r:   r  r  r   rñ   r  r  r  r  r  s       r   r  Ú!OCSPResponseBuilder.add_extensiony  s|   € ô ˜&¤$×"4Ñ"4×5Ñ5ÜÐ@ÓAÐAä—N’N 6§:¡:¨xÓ@ˆ	Ü# I×/?Ñ/?Ô@ä"Ø�N‰NØ×ÑØ�K‰KØ*ˆd×ÑÐ* 	Ð*ó	
ð 	
r   c                ó®   • U R                   c  [        S5      eU R                  c  [        S5      e[        R                  " [
        R                  XU5      $ )Nz&You must add a response before signingz*You must add a responder_id before signing)r  r+   r  r   Úcreate_ocsp_responser   r"   )rE   Úprivate_keyr,   s      r   ÚsignÚOCSPResponseBuilder.sign‰  sR   € ð
 �>‰>Ñ!ÜÐEÓFÐFØ×ÑÑ%ÜÐIÓJÐJä×(Ò(Ü×)Ñ)¨4¸ió
ð 	
r   c                ó°   • [        U[        5      (       d  [        S5      eU[        R                  L a  [	        S5      e[
        R                  " US S S 5      $ )Nz7response_status must be an item from OCSPResponseStatusz$response_status cannot be SUCCESSFUL)r)   r   r:   r"   r+   r   r/  )Úclsr®   s     r   Úbuild_unsuccessfulÚ&OCSPResponseBuilder.build_unsuccessful—  sV   € ô ˜/Ô+=×>Ñ>ÜØIóð ð Ô0×;Ñ;Ò;ÜÐCÓDÐDä×(Ò(¨¸$ÀÀdÓKÐKr   )r  rñ   r  r  )r  z_SingleResponse | Noner  z5tuple[x509.Certificate, OCSPResponderEncoding] | Noner  zlist[x509.Certificate] | Nonero   r  )rF   rO   rG   rO   r,   rP   rH   r/   rI   rQ   rJ   rR   rK   rR   rL   rS   rr   r  )rk   r   r!  rO   rr   r  )r  z!typing.Iterable[x509.Certificate]rr   r  )r  r  r  r  rr   r  )r0  r	   r,   rê   rr   r©   )r®   r   rr   r©   )r   r   r   r   rM   r  r  r½   r  r1  Úclassmethodr5  r   r   r   r   r  r  (  s0  † ð ,0àØ/3Ø?Að&à(ð&ðð&ð
 -ð&ð =õ&ð
àð
ð !ð
ð (ð	
ð
 $ð
ð 'ð
ð .ð
ð 2ð
ð 3ð
ð 
ô
ð>
Ø-ð
Ø?Oð
à	ô
ð&
Ø6ð
à	ô
ð"
Ø(ð
Ø48ð
à	ô
ð 
à5ð
ð /ð
ð 
ô	
ð ð
LØ0ð
Là	ó
Ló ó
Lr   r  )r,   rP   rr   r  )(Ú
__future__r   rz   r;   ÚtypingÚcryptographyr   r   Ú"cryptography.hazmat.bindings._rustr   Úcryptography.hazmat.primitivesr   r   Ú/cryptography.hazmat.primitives.asymmetric.typesr	   Úcryptography.x509.baser
   r   r   ÚEnumr   r   ÚSHA1ÚSHA224ÚSHA256ÚSHA384ÚSHA512r*   r-   r/   r5   ÚABCMetarU   r~   r©   Úregisterrì   r  Úload_der_ocsp_requestÚload_der_ocsp_responser   r   r   Ú<module>rI     sD  ðõ
 #ã 
Û Û ç $Ý 3ß @õ÷ñ ô˜EŸJ™Jô ô
˜Ÿ™ô ð ‡K�KØ
‡M�MØ
‡M�MØ
‡M�MØ
‡M�Mð€ô
ô�U—Z‘Zô ÷C4ñ C4ôL(˜CŸK™Kò (ôVZ 3§;¡;ò ZôzB˜SŸ[™[ò BðJ × Ñ �T×%Ñ%Ô &Ø × Ñ �d×'Ñ'Ô (Ø × Ñ ˜D×3Ñ3Ô 4÷Q.ñ Q.÷hzLñ zLðz ×2Ñ2Ð Ø×4Ñ4Ñ r   