
    (ph1                       S SK Jr  S SKrS SKJr  S SKJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr   " S	 S
\R                   5      r " S S\R                   5      r\R&                  \R(                  \R*                  \R,                  \R.                  4rSS jr " S S\R                   5      r " S S5      r\	R8                  r\	R:                  r\	R<                  r " S S5      r " S S5      r \	RB                  r!\	RD                  r"g)    )annotationsN)Iterable)utilsx509)ocsp)hashes) CertificateIssuerPrivateKeyTypes)_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       I/var/www/html/venv/lib/python3.13/site-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)OCSPCertStatus1   r   r   r   r   N)r   r   r   r   GOODREVOKEDUNKNOWNr   r   r   r   r-   r-   1   s    DGGr   r-   c                  >    \ rS rSr                SS jrSrg)_SingleResponse7   c	                v   [        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b*  [        U[        R                  5      (       d  [        S5      eX@l        Xpl        Xl        g )Nz%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 objectzCrevocation_reason must be an item from the ReasonFlags enum or None)r+   r'   datetime	TypeError_resp
_resp_hash
_algorithm_this_update_next_updater-   r0   r)   r   ReasonFlags_cert_status_revocation_time_revocation_reason)	selfresp	resp_hashr*   cert_statusthis_updatenext_updaterevocation_timerevocation_reasons	            r   __init___SingleResponse.__init__8   s;    	)$+x'8'899CDD":**,
 ,
 KLL
##''+~66J  n444* !  !, "  - ox/@/@AA KLL ,Z!4#3#36 6  # 
 ( /"3r   )r:   r>   r<   r8   r9   r@   r?   r;   N)rB   z0tuple[x509.Certificate, x509.Certificate] | NonerC   ztuple[bytes, bytes, int] | Noner*   hashes.HashAlgorithmrD   r-   rE   datetime.datetimerF   datetime.datetime | NonerG   rM   rH   x509.ReasonFlags | None)r   r   r   r   rI   r   r   r   r   r3   r3   7   sU    64>64 364 (	64
 $64 '64 .64 264 364r   r3   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)OCSPRequestBuilderv   Nc                (    Xl         X l        X0l        g N)_request_request_hash_extensions)rA   requestrequest_hash
extensionss       r   rI   OCSPRequestBuilder.__init__w   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 request%cert and issuer must be a Certificate)
rT   rU   r)   r+   r'   r   Certificater7   rP   rV   )rA   certissuerr*   s       r   add_certificate"OCSPRequestBuilder.add_certificate   s     ==$(:(:(FMNN)$$ 0 011D$$:
 :
 CDD!9%t'9'94;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\    serial_number must be an integerissuer_name_hashissuer_key_hash`issuer_name_hash and issuer_key_hash must be the same length as the digest size of the algorithm)rT   rU   r)   r'   intr7   r+   r   _check_bytesdigest_sizelenrP   rV   )rA   re   rf   serial_numberr*   s        r   add_certificate_by_hash*OCSPRequestBuilder.add_certificate_by_hash   s     ==$(:(:(FMNN--->??)$-/?@,o>  C%
 
""c/&::6 
 "MM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   ExtensionTyper7   	Extensionoidr
   rV   rP   rT   rU   rA   extvalcritical	extensions       r   add_extension OCSPRequestBuilder.add_extension   st     &$"4"455@AANN6::x@	#I/?/?@!MM4--/M1A1A/M9/M
 	
r   c                x    U R                   c  U R                  c  [        S5      e[        R                  " U 5      $ )Nz*You must add a certificate before building)rT   rU   r)   r   create_ocsp_request)rA   s    r   buildOCSPRequestBuilder.build   s4    == T%7%7%?IJJ''--r   )rV   rT   rU   )rW   zFtuple[x509.Certificate, x509.Certificate, hashes.HashAlgorithm] | NonerX   z5tuple[bytes, bytes, int, hashes.HashAlgorithm] | NonerY   (list[x509.Extension[x509.ExtensionType]]returnNone)r_   x509.Certificater`   r   r*   rK   r   rP   )
re   bytesrf   r   rl   rh   r*   rK   r   rP   )ru   x509.ExtensionTyperv   boolr   rP   )r   OCSPRequest)
r   r   r   r   rI   ra   rm   rx   r|   r   r   r   r   rP   rP   v   s     ?A&&& =& 
&

 !
 (	

 

&

 
 	

 (
 

<
(
48
	
.r   rP   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r
\    SS
 j5       rSrg)OCSPResponseBuilder   Nc                4    Xl         X l        X0l        X@l        g rS   )	_response_responder_id_certsrV   )rA   responseresponder_idcertsrY   s        r   rI   OCSPResponseBuilder.__init__   s     ")%r   c	           
     B   U R                   b  [        S5      e[        U[        R                  5      (       a  [        U[        R                  5      (       d  [        S5      e[        X4S UUUUUU5      n	[        U	U R                  U R                  U R                  5      $ )N#Only one response per OCSPResponse.r]   )r   r)   r'   r   r^   r7   r3   r   r   r   rV   )
rA   r_   r`   r*   rD   rE   rF   rG   rH   
singleresps
             r   add_response OCSPResponseBuilder.add_response   s     >>%BCC$ 0 011D$$:
 :
 CDD$N	

 #KK	
 	
r   c
           
        U R                   b  [        S5      e[        U[        5      (       d  [	        S5      e[
        R                  " SU5        [
        R                  " SU5        [        U5        UR                  [        U5      :w  d  UR                  [        U5      :w  a  [        S5      e[        S XU4UUUUUU	5      n
[        U
U R                  U R                  U R                  5      $ )Nr   rd   re   rf   rg   )r   r)   r'   rh   r7   r   ri   r+   rj   rk   r3   r   r   r   rV   )rA   re   rf   rl   r*   rD   rE   rF   rG   rH   r   s              r   add_response_by_hash(OCSPResponseBuilder.add_response_by_hash   s     >>%BCC--->??-/?@,o>)$  C%
 
""c/&::6 
 %>	

 #KK	
 	
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   r^   r7   r   r   r   r   rV   )rA   encodingresponder_certs      r   r    OCSPResponseBuilder.responder_id*  s     )@AA.$*:*:;;BCC($9::H  #NN&KK	
 	
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rS   )r'   r   r^   ).0xs     r   	<genexpr>3OCSPResponseBuilder.certificates.<locals>.<genexpr>E  s      BEq:a!1!122Es   ')z$certs must be a list of Certificates)
r   r)   listrk   allr7   r   r   r   rV   )rA   r   s     r   certificates OCSPResponseBuilder.certificates=  s     ;;"@AAUu:?>??BEBBBBCC"NN	
 	
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      $ rp   )r'   r   rq   r7   rr   rs   r
   rV   r   r   r   r   rt   s       r   rx   !OCSPResponseBuilder.add_extensionN  s|     &$"4"455@AANN6::x@	#I/?/?@"NNKK*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    )rA   private_keyr*   s      r   signOCSPResponseBuilder.sign^  sR    
 >>!EFF%IJJ(())4i
 	
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   r7   r    r)   r   r   )clsresponse_statuss     r   build_unsuccessful&OCSPResponseBuilder.build_unsuccessfull  sV     /+=>>I  0;;;CDD(($dKKr   )r   rV   r   r   )r   z_SingleResponse | Noner   z5tuple[x509.Certificate, OCSPResponderEncoding] | Noner   zlist[x509.Certificate] | NonerY   r~   )r_   r   r`   r   r*   rK   rD   r-   rE   rL   rF   rM   rG   rM   rH   rN   r   r   )re   r   rf   r   rl   rh   r*   rK   rD   r-   rE   rL   rF   rM   rG   rM   rH   rN   r   r   )r   r   r   r   r   r   )r   zIterable[x509.Certificate]r   r   )ru   r   rv   r   r   r   )r   r	   r*   zhashes.HashAlgorithm | Noner   OCSPResponse)r   r   r   r   )r   r   r   r   rI   r   r   r   r   rx   r   classmethodr   r   r   r   r   r   r      s    ,0/3?A&(&&
 -& =&"
"
 !"
 (	"

 $"
 '"
 ."
 2"
 3"
 
"
H,
,
 ,
 	,

 (,
 $,
 ',
 .,
 2,
 3,
 
,
\
-
?O
	
&
/
	
"
(
48
	
 
5
 /
 
	
 
L0
L	
L 
Lr   r   )r*   rK   r   r   )#
__future__r   r6   collections.abcr   cryptographyr   r   "cryptography.hazmat.bindings._rustr   cryptography.hazmat.primitivesr   /cryptography.hazmat.primitives.asymmetric.typesr	   cryptography.x509.baser
   Enumr   r   SHA1SHA224SHA256SHA384SHA512r(   r+   r-   r3   r   r   OCSPSingleResponserP   r   load_der_ocsp_requestload_der_ocsp_responser   r   r   <module>r      s   
 #  $ $ 3 1 ?EJJ 
  KK
MM
MM
MM
MM
UZZ 74 74t   ,, Q. Q.hmL mL` 22 44 r   