§
    pïg3A  ã                   ó$  — 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 d dlm	Z	m
Z
 d dlmZ d dlmZmZmZ  G d„ d	ej        ¦  «        Z G d
„ dej        ¦  «        Ze	j        e	j        e	j        e	j        e	j        fZde	j        ddfd„Z G d„ dej        ¦  «        Z G d„ d¦  «        Z G d„ de j        ¬¦  «        Z G d„ de j        ¬¦  «        Z  G d„ de j        ¬¦  «        Z! G d„ d¦  «        Z" G d„ d¦  «        Z#de$defd„Z%de$de!fd „Z&dS )!é    N)Úutils)Úx509)Úocsp)ÚhashesÚserialization)ÚCERTIFICATE_PRIVATE_KEY_TYPES)Ú_EARLIEST_UTC_TIMEÚ_convert_to_naive_utc_timeÚ_reject_duplicate_extensionc                   ó   — e Zd ZdZdZdS )ÚOCSPResponderEncodingzBy HashzBy NameN)Ú__name__Ú
__module__Ú__qualname__ÚHASHÚNAME© ó    ú8/usr/lib/python3/dist-packages/cryptography/x509/ocsp.pyr   r      s   € € € € € Ø€DØ€D€D€Dr   r   c                   ó&   — e Zd ZdZdZdZdZdZdZdS )ÚOCSPResponseStatusr   é   é   é   é   é   N)	r   r   r   Ú
SUCCESSFULÚMALFORMED_REQUESTÚINTERNAL_ERRORÚ	TRY_LATERÚSIG_REQUIREDÚUNAUTHORIZEDr   r   r   r   r      s-   € € € € € Ø€JØÐØ€NØ€IØ€LØ€L€L€Lr   r   Ú	algorithmÚreturnc                 óN   — t          | t          ¦  «        st          d¦  «        ‚d S )Nz9Algorithm must be SHA1, SHA224, SHA256, SHA384, or SHA512)Ú
isinstanceÚ_ALLOWED_HASHESÚ
ValueError)r#   s    r   Ú_verify_algorithmr)   /   s3   € Ý�i¥Ñ1Ô1ð 
ÝØGñ
ô 
ð 	
ð
ð 
r   c                   ó   — e Zd ZdZdZdZdS )ÚOCSPCertStatusr   r   r   N)r   r   r   ÚGOODÚREVOKEDÚUNKNOWNr   r   r   r+   r+   6   s   € € € € € Ø€DØ€GØ€G€G€Gr   r+   c                   ó¾   — e Zd Zdej        dej        dej        dedej        de	j
        ej                 de	j
        ej                 de	j
        ej                 fd	„Zd
S )Ú_SingleResponseÚcertÚissuerr#   Úcert_statusÚthis_updateÚnext_updateÚrevocation_timeÚrevocation_reasonc	                 óf  — t          |t          j        ¦  «        rt          |t          j        ¦  «        st          d¦  «        ‚t	          |¦  «         t          |t
          j        ¦  «        st          d¦  «        ‚|�)t          |t
          j        ¦  «        st          d¦  «        ‚|| _        || _        || _        || _	        || _
        t          |t          ¦  «        st          d¦  «        ‚|t          j        ur#|�t          d¦  «        ‚|�t          d¦  «        ‚n}t          |t
          j        ¦  «        st          d¦  «        ‚t          |¦  «        }|t          k     rt          d¦  «        ‚|�)t          |t          j        ¦  «        st          d	¦  «        ‚|| _        || _        || _        d S )
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+   r-   r(   r
   r	   ÚReasonFlagsÚ_cert_statusÚ_revocation_timeÚ_revocation_reason)	Úselfr1   r2   r#   r3   r4   r5   r6   r7   s	            r   Ú__init__z_SingleResponse.__init__=   sò  € õ ˜$¥Ô 0Ñ1Ô1ð 	E½Ø•DÔ$ñ:
ô :
ð 	Eõ ÐCÑDÔDÐDå˜)Ñ$Ô$Ð$Ý˜+¥xÔ'8Ñ9Ô9ð 	EÝÐCÑDÔDÐDØÐ"­:Ø�Ô*ñ,
ô ,
Ð"õ ÐKÑLÔLÐLàˆŒ
ØˆŒØ#ˆŒØ'ˆÔØ'ˆÔå˜+¥~Ñ6Ô6ð 	ÝØJñô ð ð �nÔ4Ð4Ð4ØÐ*Ý ð!ñô ð ð !Ð,Ý ð"ñô ð ð -õ ˜o­xÔ/@ÑAÔAð MÝÐ KÑLÔLÐLå8¸ÑIÔIˆOØÕ!3Ò3Ð3Ý ð'ñô ð ð
 !Ð,µZØ!¥4Ô#3ñ6ô 6Ð,õ  ð#ñô ð ð
 (ˆÔØ /ˆÔØ"3ˆÔÐÐr   N)r   r   r   r   r:   r   ÚHashAlgorithmr+   r<   ÚtypingÚOptionalrB   rG   r   r   r   r0   r0   <   s®   € € € € € ðB4àÔðB4ð Ô ðB4ð Ô'ð	B4ð
 $ðB4ð Ô&ðB4ð ”_ XÔ%6Ô7ðB4ð  œ¨Ô):Ô;ðB4ð "œ?¨4Ô+;Ô<ðB4ð B4ð B4ð B4ð B4ð B4r   r0   c                   ó  — e Zd Zej        defd„¦   «         Zej        defd„¦   «         Zej        dej	        fd„¦   «         Z
ej        defd„¦   «         Zej        dej        defd„¦   «         Zej        dej        fd„¦   «         Zd	S )
ÚOCSPRequestr$   c                 ó   — dS ©z3
        The hash of the issuer public key
        Nr   ©rF   s    r   Úissuer_key_hashzOCSPRequest.issuer_key_hashƒ   ó   € € € r   c                 ó   — dS ©z-
        The hash of the issuer name
        Nr   rO   s    r   Úissuer_name_hashzOCSPRequest.issuer_name_hash‰   rQ   r   c                 ó   — dS ©zK
        The hash algorithm used in the issuer name and key hashes
        Nr   rO   s    r   Úhash_algorithmzOCSPRequest.hash_algorithm�   rQ   r   c                 ó   — dS ©zM
        The serial number of the cert whose status is being checked
        Nr   rO   s    r   Úserial_numberzOCSPRequest.serial_number•   rQ   r   Úencodingc                 ó   — dS )z/
        Serializes the request to DER
        Nr   ©rF   r[   s     r   Úpublic_byteszOCSPRequest.public_bytes›   rQ   r   c                 ó   — dS )zP
        The list of request extensions. Not single request extensions.
        Nr   rO   s    r   Ú
extensionszOCSPRequest.extensions¡   rQ   r   N)r   r   r   ÚabcÚabstractpropertyÚbytesrP   rT   r   rH   rW   ÚintrZ   Úabstractmethodr   ÚEncodingr^   r   Ú
Extensionsr`   r   r   r   rL   rL   ‚   s#  € € € € € ØÔð ð ð ð ñ Ôðð
 	Ôð %ð ð ð ñ Ôðð
 	Ôð Ô 4ð ð ð ñ Ôðð
 	Ôð˜sð ð ð ñ Ôðð
 	Ôð ]Ô%;ð Àð ð ð ñ Ôðð
 	Ôð˜DœOð ð ð ñ Ôðð ð r   rL   )Ú	metaclassc                   óØ  — e Zd Zej        defd„¦   «         Zej        dej        e	j	                 fd„¦   «         Z
ej        dej        ej                 fd„¦   «         Zej        de	j	        fd„¦   «         Zej        dej        e	j	                 fd„¦   «         Zej        defd„¦   «         Zej        defd„¦   «         Zej        dej        fd	„¦   «         Zej        defd
„¦   «         ZdS )ÚOCSPSingleResponser$   c                 ó   — dS ©zY
        The status of the certificate (an element from the OCSPCertStatus enum)
        Nr   rO   s    r   Úcertificate_statusz%OCSPSingleResponse.certificate_status©   rQ   r   c                 ó   — dS ©z^
        The date of when the certificate was revoked or None if not
        revoked.
        Nr   rO   s    r   r6   z"OCSPSingleResponse.revocation_time¯   rQ   r   c                 ó   — dS ©zi
        The reason the certificate was revoked or None if not specified or
        not revoked.
        Nr   rO   s    r   r7   z$OCSPSingleResponse.revocation_reason¶   rQ   r   c                 ó   — dS ©z�
        The most recent time at which the status being indicated is known by
        the responder to have been correct
        Nr   rO   s    r   r4   zOCSPSingleResponse.this_update½   rQ   r   c                 ó   — dS ©zC
        The time when newer information will be available
        Nr   rO   s    r   r5   zOCSPSingleResponse.next_updateÄ   rQ   r   c                 ó   — dS rN   r   rO   s    r   rP   z"OCSPSingleResponse.issuer_key_hashÊ   rQ   r   c                 ó   — dS rS   r   rO   s    r   rT   z#OCSPSingleResponse.issuer_name_hashÐ   rQ   r   c                 ó   — dS rV   r   rO   s    r   rW   z!OCSPSingleResponse.hash_algorithmÖ   rQ   r   c                 ó   — dS rY   r   rO   s    r   rZ   z OCSPSingleResponse.serial_numberÜ   rQ   r   N)r   r   r   ra   rb   r+   rm   rI   rJ   r<   r6   r   rB   r7   r4   r5   rc   rP   rT   r   rH   rW   rd   rZ   r   r   r   rj   rj   ¨   s¹  € € € € € ØÔð Nð ð ð ñ Ôðð
 	Ôð ¤°Ô1BÔ!Cð ð ð ñ Ôðð 	Ôð 6¤?°4Ô3CÔ#Dð ð ð ñ Ôðð 	Ôð˜XÔ.ð ð ð ñ Ôðð 	Ôð˜Vœ_¨XÔ->Ô?ð ð ð ñ Ôðð
 	Ôð ð ð ð ñ Ôðð
 	Ôð %ð ð ð ñ Ôðð
 	Ôð Ô 4ð ð ð ñ Ôðð
 	Ôð˜sð ð ð ñ Ôðð ð r   rj   c                   óˆ  — e Zd Zej        dej        e         fd„¦   «         Zej        de	fd„¦   «         Z
ej        dej        fd„¦   «         Zej        dej        ej                 fd„¦   «         Zej        defd„¦   «         Zej        defd„¦   «         Zej        dej        ej                 fd„¦   «         Zej        dej        e         fd	„¦   «         Zej        dej        ej                 fd
„¦   «         Zej        dej        fd„¦   «         Zej        defd„¦   «         Zej        dej        ej                 fd„¦   «         Zej        dej        ej                  fd„¦   «         Z!ej        dej        fd„¦   «         Z"ej        dej        ej                 fd„¦   «         Z#ej        defd„¦   «         Z$ej        defd„¦   «         Z%ej        dej        fd„¦   «         Z&ej        de'fd„¦   «         Z(ej        dej)        fd„¦   «         Z*ej        dej)        fd„¦   «         Z+ej,        de-j.        defd„¦   «         Z/dS )ÚOCSPResponser$   c                 ó   — dS )z_
        An iterator over the individual SINGLERESP structures in the
        response
        Nr   rO   s    r   Ú	responseszOCSPResponse.responsesä   rQ   r   c                 ó   — dS )zm
        The status of the response. This is a value from the OCSPResponseStatus
        enumeration
        Nr   rO   s    r   Úresponse_statuszOCSPResponse.response_statusë   rQ   r   c                 ó   — dS )zA
        The ObjectIdentifier of the signature algorithm
        Nr   rO   s    r   Úsignature_algorithm_oidz$OCSPResponse.signature_algorithm_oidò   rQ   r   c                 ó   — dS )zX
        Returns a HashAlgorithm corresponding to the type of the digest signed
        Nr   rO   s    r   Úsignature_hash_algorithmz%OCSPResponse.signature_hash_algorithmø   rQ   r   c                 ó   — dS )z%
        The signature bytes
        Nr   rO   s    r   Ú	signaturezOCSPResponse.signature   rQ   r   c                 ó   — dS )z+
        The tbsResponseData bytes
        Nr   rO   s    r   Útbs_response_byteszOCSPResponse.tbs_response_bytes  rQ   r   c                 ó   — dS )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   rO   s    r   ÚcertificateszOCSPResponse.certificates  rQ   r   c                 ó   — dS )z2
        The responder's key hash or None
        Nr   rO   s    r   Úresponder_key_hashzOCSPResponse.responder_key_hash  rQ   r   c                 ó   — dS )z.
        The responder's Name or None
        Nr   rO   s    r   Úresponder_namezOCSPResponse.responder_name  rQ   r   c                 ó   — dS )z4
        The time the response was produced
        Nr   rO   s    r   Úproduced_atzOCSPResponse.produced_at   rQ   r   c                 ó   — dS rl   r   rO   s    r   rm   zOCSPResponse.certificate_status&  rQ   r   c                 ó   — dS ro   r   rO   s    r   r6   zOCSPResponse.revocation_time,  rQ   r   c                 ó   — dS rq   r   rO   s    r   r7   zOCSPResponse.revocation_reason3  rQ   r   c                 ó   — dS rs   r   rO   s    r   r4   zOCSPResponse.this_update:  rQ   r   c                 ó   — dS ru   r   rO   s    r   r5   zOCSPResponse.next_updateA  rQ   r   c                 ó   — dS rN   r   rO   s    r   rP   zOCSPResponse.issuer_key_hashG  rQ   r   c                 ó   — dS rS   r   rO   s    r   rT   zOCSPResponse.issuer_name_hashM  rQ   r   c                 ó   — dS rV   r   rO   s    r   rW   zOCSPResponse.hash_algorithmS  rQ   r   c                 ó   — dS rY   r   rO   s    r   rZ   zOCSPResponse.serial_numberY  rQ   r   c                 ó   — dS )zR
        The list of response extensions. Not single response extensions.
        Nr   rO   s    r   r`   zOCSPResponse.extensions_  rQ   r   c                 ó   — dS )zR
        The list of single response extensions. Not response extensions.
        Nr   rO   s    r   Úsingle_extensionszOCSPResponse.single_extensionse  rQ   r   r[   c                 ó   — dS )z0
        Serializes the response to DER
        Nr   r]   s     r   r^   zOCSPResponse.public_bytesk  rQ   r   N)0r   r   r   ra   rb   rI   ÚIteratorrj   r}   r   r   r   ÚObjectIdentifierr�   rJ   r   rH   rƒ   rc   r…   r‡   ÚListr:   r‰   r‹   ÚNamer�   r<   r�   r+   rm   r6   rB   r7   r4   r5   rP   rT   rW   rd   rZ   rg   r`   r›   re   r   rf   r^   r   r   r   r{   r{   ã   s*  € € € € € ØÔð˜6œ?Ð+=Ô>ð ð ð ñ Ôðð 	ÔðÐ!3ð ð ð ñ Ôðð 	Ôð¨Ô)>ð ð ð ñ Ôðð
 	Ôðà	Œ˜Ô-Ô	.ðð ð ñ Ôðð 	Ôð˜5ð ð ð ñ Ôðð
 	Ôð Eð ð ð ñ Ôðð
 	Ôð˜fœk¨$Ô*:Ô;ð ð ð ñ Ôðð 	Ôð F¤O°EÔ$:ð ð ð ñ Ôðð
 	Ôð ¤°´	Ô :ð ð ð ñ Ôðð
 	Ôð˜XÔ.ð ð ð ñ Ôðð
 	Ôð Nð ð ð ñ Ôðð
 	Ôð ¤°Ô1BÔ!Cð ð ð ñ Ôðð 	Ôð 6¤?°4Ô3CÔ#Dð ð ð ñ Ôðð 	Ôð˜XÔ.ð ð ð ñ Ôðð 	Ôð˜Vœ_¨XÔ->Ô?ð ð ð ñ Ôðð
 	Ôð ð ð ð ñ Ôðð
 	Ôð %ð ð ð ñ Ôðð
 	Ôð Ô 4ð ð ð ñ Ôðð
 	Ôð˜sð ð ð ñ Ôðð
 	Ôð˜DœOð ð ð ñ Ôðð
 	Ôð 4¤?ð ð ð ñ Ôðð
 	Ôð ]Ô%;ð Àð ð ð ñ Ôðð ð r   r{   c                   ó  — e Zd Zdg fdej        ej        ej        ej        ej	        f                  dej
        ej        ej                          ddfd„Zdej        dej        dej	        dd fd	„Zd
ej        dedd fd„Zdefd„ZdS )ÚOCSPRequestBuilderNÚrequestr`   r$   c                 ó"   — || _         || _        d S ©N)Ú_requestÚ_extensions)rF   r£   r`   s      r   rG   zOCSPRequestBuilder.__init__s  s   € ð  ˆŒØ%ˆÔÐÐr   r1   r2   r#   c                 ó  — | j         �t          d¦  «        ‚t          |¦  «         t          |t          j        ¦  «        rt          |t          j        ¦  «        st          d¦  «        ‚t          |||f| j        ¦  «        S )Nz.Only one certificate can be added to a requestr9   )	r¦   r(   r)   r&   r   r:   r;   r¢   r§   )rF   r1   r2   r#   s       r   Úadd_certificatez"OCSPRequestBuilder.add_certificate  s„   € ð Œ=Ð$ÝÐMÑNÔNÐNå˜)Ñ$Ô$Ð$Ý˜$¥Ô 0Ñ1Ô1ð 	E½Ø•DÔ$ñ:
ô :
ð 	Eõ ÐCÑDÔDÐDå! 4¨°Ð";¸TÔ=MÑNÔNÐNr   ÚextvalÚcriticalc                 óð   — t          |t          j        ¦  «        st          d¦  «        ‚t          j        |j        ||¦  «        }t          || j        ¦  «         t          | j	        | j        |gz   ¦  «        S ©Nz"extension must be an ExtensionType)
r&   r   ÚExtensionTyper;   Ú	ExtensionÚoidr   r§   r¢   r¦   ©rF   rª   r«   Ú	extensions       r   Úadd_extensionz OCSPRequestBuilder.add_extension�  st   € õ ˜&¥$Ô"4Ñ5Ô5ð 	BÝÐ@ÑAÔAÐAå”N 6¤:¨x¸Ñ@Ô@ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@å!ØŒM˜4Ô+¨y¨kÑ9ñ
ô 
ð 	
r   c                 óV   — | j         €t          d¦  «        ‚t          j        | ¦  «        S )Nz*You must add a certificate before building)r¦   r(   r   Úcreate_ocsp_requestrO   s    r   ÚbuildzOCSPRequestBuilder.build�  s*   € ØŒ=Ð ÝÐIÑJÔJÐJåÔ'¨Ñ-Ô-Ð-r   )r   r   r   rI   rJ   ÚTupler   r:   r   rH   rŸ   r¯   r®   rG   r©   Úboolr³   rL   r¶   r   r   r   r¢   r¢   r  s  € € € € € ð ØFHð
&ð 
&à”ØŒLØÔ  $Ô"2°FÔ4HÐHôô
ð
&ð ”K ¤¨tÔ/AÔ BÔCð
&ð 
ð
&ð 
&ð 
&ð 
&ðOàÔðOð Ô ðOð Ô'ð	Oð
 
ðOð Oð Oð Oð"
ØÔ(ð
Ø48ð
à	ð
ð 
ð 
ð 
ð.�{ð .ð .ð .ð .ð .ð .r   r¢   c                   ó`  — e Zd Zdddg fdej        e         dej        ej        ej        e	f                  dej        ej
        ej                          dej
        ej        ej                          fd„Zdej        dej        d	ej        d
edej        dej        ej                 dej        ej                 dej        ej                 dd fd„Zde	dej        dd fd„Zdej        ej                 dd fd„Zdej        dedd fd„Zded	ej        ej                 defd„Zededefd„¦   «         ZdS )ÚOCSPResponseBuilderNÚresponseÚresponder_idÚcertsr`   c                 ó>   — || _         || _        || _        || _        d S r¥   )Ú	_responseÚ_responder_idÚ_certsr§   )rF   r»   r¼   r½   r`   s        r   rG   zOCSPResponseBuilder.__init__¥  s(   € ð "ˆŒØ)ˆÔØˆŒØ%ˆÔÐÐr   r1   r2   r#   r3   r4   r5   r6   r7   r$   c	           
      óœ   — | j         �t          d¦  «        ‚t          ||||||||¦  «        }	t          |	| j        | j        | j        ¦  «        S )Nz#Only one response per OCSPResponse.)r¿   r(   r0   rº   rÀ   rÁ   r§   )
rF   r1   r2   r#   r3   r4   r5   r6   r7   Ú
singleresps
             r   Úadd_responsez OCSPResponseBuilder.add_response³  sj   € ð Œ>Ð%ÝÐBÑCÔCÐCå$ØØØØØØØØñ	
ô 	
ˆ
õ #ØØÔØŒKØÔñ	
ô 
ð 	
r   r[   Úresponder_certc                 ó  — | j         �t          d¦  «        ‚t          |t          j        ¦  «        st          d¦  «        ‚t          |t          ¦  «        st          d¦  «        ‚t          | j        ||f| j	        | j
        ¦  «        S )Nz!responder_id can only be set oncez$responder_cert must be a Certificatez6encoding must be an element from OCSPResponderEncoding)rÀ   r(   r&   r   r:   r;   r   rº   r¿   rÁ   r§   )rF   r[   rÅ   s      r   r¼   z OCSPResponseBuilder.responder_idÒ  s•   € ð ÔÐ)ÝÐ@ÑAÔAÐAÝ˜.­$Ô*:Ñ;Ô;ð 	DÝÐBÑCÔCÐCÝ˜(Õ$9Ñ:Ô:ð 	ÝØHñô ð õ #ØŒNØ˜XÐ&ØŒKØÔñ	
ô 
ð 	
r   c                 ó"  — | j         �t          d¦  «        ‚t          |¦  «        }t          |¦  «        dk    rt          d¦  «        ‚t	          d„ |D ¦   «         ¦  «        st          d¦  «        ‚t          | j        | j        || j	        ¦  «        S )Nz!certificates may only be set oncer   zcerts must not be an empty listc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r¥   )r&   r   r:   )Ú.0Úxs     r   ú	<genexpr>z3OCSPResponseBuilder.certificates.<locals>.<genexpr>í  s/   è è € ÐBÐB°q•:˜a¥Ô!1Ñ2Ô2ÐBÐBÐBÐBÐBÐBr   z$certs must be a list of Certificates)
rÁ   r(   ÚlistÚlenÚallr;   rº   r¿   rÀ   r§   )rF   r½   s     r   r‰   z OCSPResponseBuilder.certificateså  s™   € ð Œ;Ð"ÝÐ@ÑAÔAÐAÝ�U‘”ˆÝˆu‰:Œ:˜Š?ˆ?ÝÐ>Ñ?Ô?Ð?ÝÐBÐB¸EÐBÑBÔBÑBÔBð 	DÝÐBÑCÔCÐCÝ"ØŒNØÔØØÔñ	
ô 
ð 	
r   rª   r«   c                 ó  — t          |t          j        ¦  «        st          d¦  «        ‚t          j        |j        ||¦  «        }t          || j        ¦  «         t          | j	        | j
        | j        | j        |gz   ¦  «        S r­   )r&   r   r®   r;   r¯   r°   r   r§   rº   r¿   rÀ   rÁ   r±   s       r   r³   z!OCSPResponseBuilder.add_extensionö  s€   € õ ˜&¥$Ô"4Ñ5Ô5ð 	BÝÐ@ÑAÔAÐAå”N 6¤:¨x¸Ñ@Ô@ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@å"ØŒNØÔØŒKØÔ 	˜{Ñ*ñ	
ô 
ð 	
r   Úprivate_keyc                 óœ   — | j         €t          d¦  «        ‚| j        €t          d¦  «        ‚t          j        t
          j        | ||¦  «        S )Nz&You must add a response before signingz*You must add a responder_id before signing)r¿   r(   rÀ   r   Úcreate_ocsp_responser   r   )rF   rÐ   r#   s      r   ÚsignzOCSPResponseBuilder.sign  sT   € ð
 Œ>Ð!ÝÐEÑFÔFÐFØÔÐ%ÝÐIÑJÔJÐJåÔ(ÝÔ)¨4°¸iñ
ô 
ð 	
r   r   c                 ó²   — t          |t          ¦  «        st          d¦  «        ‚|t          j        u rt	          d¦  «        ‚t          j        |d d d ¦  «        S )Nz7response_status must be an item from OCSPResponseStatusz$response_status cannot be SUCCESSFUL)r&   r   r;   r   r(   r   rÒ   )Úclsr   s     r   Úbuild_unsuccessfulz&OCSPResponseBuilder.build_unsuccessful  sc   € õ ˜/Õ+=Ñ>Ô>ð 	ÝØIñô ð ð Õ0Ô;Ð;Ð;ÝÐCÑDÔDÐDåÔ(¨¸$ÀÀdÑKÔKÐKr   )r   r   r   rI   rJ   r0   r·   r   r:   r   rŸ   r¯   r®   rG   r   rH   r+   r<   rB   rÄ   r¼   ÚIterabler‰   r¸   r³   r   r{   rÓ   Úclassmethodr   rÖ   r   r   r   rº   rº   ¤  s:  € € € € € ð 6:ð Ø@DØFHð&ð &à”/ /Ô2ð&ð ”oØŒL˜Ô)Ð+@Ð@ÔAô
ð&ð Œ˜vœ{¨4Ô+;Ô<Ô=ð&ð ”K ¤¨tÔ/AÔ BÔCð&ð &ð &ð &ð
àÔð
ð Ô ð
ð Ô'ð	
ð
 $ð
ð Ô&ð
ð ”_ XÔ%6Ô7ð
ð  œ¨Ô):Ô;ð
ð "œ?¨4Ô+;Ô<ð
ð 
ð
ð 
ð 
ð 
ð>
Ø-ð
Ø?CÔ?Oð
à	ð
ð 
ð 
ð 
ð&
Ø”_ TÔ%5Ô6ð
à	ð
ð 
ð 
ð 
ð"
ØÔ(ð
Ø48ð
à	ð
ð 
ð 
ð 
ð 
à2ð
ð ”? 6Ô#7Ô8ð
ð 
ð	
ð 
ð 
ð 
ð ð
LØ0ð
Là	ð
Lð 
Lð 
Lñ „[ð
Lð 
Lð 
Lr   rº   Údatac                 ó*   — t          j        | ¦  «        S r¥   )r   Úload_der_ocsp_request©rÙ   s    r   rÛ   rÛ   "  s   € ÝÔ% dÑ+Ô+Ð+r   c                 ó*   — t          j        | ¦  «        S r¥   )r   Úload_der_ocsp_responserÜ   s    r   rÞ   rÞ   &  s   € ÝÔ& tÑ,Ô,Ð,r   )'ra   r<   rI   Ú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'   rH   r)   r+   r0   ÚABCMetarL   rj   r{   r¢   rº   rc   rÛ   rÞ   r   r   r   ú<module>rë      s  ðð €
€
€
Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ðð ð ð ð ð ðð ð ð ð ð ð ð ð ð ðð ð ð ð ˜EœJñ ô ð ð
ð ð ð ð ˜œñ ô ð ð „KØ
„MØ
„MØ
„MØ
„Mð€ð
 Ô!5ð 
¸$ð 
ð 
ð 
ð 
ðð ð ð ð �U”Zñ ô ð ðC4ð C4ð C4ð C4ð C4ñ C4ô C4ð C4ðL#ð #ð #ð #ð #˜CœKð #ñ #ô #ð #ðL8ð 8ð 8ð 8ð 8 3¤;ð 8ñ 8ô 8ð 8ðvLð Lð Lð Lð L˜Sœ[ð Lñ Lô Lð Lð^/.ð /.ð /.ð /.ð /.ñ /.ô /.ð /.ðd{Lð {Lð {Lð {Lð {Lñ {Lô {Lð {Lð|, ð ,¨+ð ,ð ,ð ,ð ,ð- ð -¨<ð -ð -ð -ð -ð -ð -r   