
    ;3h1                       d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZ d dl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dZ G d dej                         Z G d d      Ze	j8                  Ze	j:                  Ze	j<                  Z G d d      Z G d d      Z e	jB                  Z!e	jD                  Z"y)    )annotationsN)Iterable)utilsx509)ocsp)hashes) CertificateIssuerPrivateKeyTypes)_reject_duplicate_extensionc                      e Zd ZdZdZy)OCSPResponderEncodingzBy HashzBy NameN)__name__
__module____qualname__HASHNAME     V/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/cryptography/x509/ocsp.pyr   r      s    DDr   r   c                  $    e Zd ZdZdZdZdZdZdZy)OCSPResponseStatusr                  N)	r   r   r   
SUCCESSFULMALFORMED_REQUESTINTERNAL_ERROR	TRY_LATERSIG_REQUIREDUNAUTHORIZEDr   r   r   r   r      s!    JNILLr   r   c                :    t        | t              st        d      y )Nz9Algorithm must be SHA1, SHA224, SHA256, SHA384, or SHA512)
isinstance_ALLOWED_HASHES
ValueError)	algorithms    r   _verify_algorithmr'   *   s!    i1G
 	
 2r   c                      e Zd ZdZdZdZy)OCSPCertStatusr   r   r   N)r   r   r   GOODREVOKEDUNKNOWNr   r   r   r)   r)   1   s    DGGr   r)   c                  4    e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZy)_SingleResponsec	                H   t        |       t        |t        j                        st        d      |%t        |t        j                        st        d      || _        || _        || _        || _        || _        t        |t              st        d      |t        j                  ur|t        d      |Wt        d      t        |t        j                        st        d      |%t        |t        j                        st        d      || _        || _        || _        y )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)   r+   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__z_SingleResponse.__init__8   s3    	)$+x'8'89CDD":**,
 KLL
##''+~6J  n444* !  !, " 
 ox/@/@A KLL ,Z!4#3#36  # 
 ( /"3r   N)r<   z0tuple[x509.Certificate, x509.Certificate] | Noner=   ztuple[bytes, bytes, int] | Noner&   hashes.HashAlgorithmr>   r)   r?   datetime.datetimer@   datetime.datetime | NonerA   rF   rB   x509.ReasonFlags | None)r   r   r   rC   r   r   r   r.   r.   7   sU    64>64 364 (	64
 $64 '64 .64 264 364r   r.   c                  z    e Zd Zddg f	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 d	dZ	 	 	 	 	 	 d
dZddZy)OCSPRequestBuilderNc                .    || _         || _        || _        y N)_request_request_hash_extensions)r;   requestrequest_hash
extensionss       r   rC   zOCSPRequestBuilder.__init__w   s      )%r   c                $   | j                   | j                  t        d      t        |       t	        |t
        j                        rt	        |t
        j                        st        d      t        |||f| j                  | j                        S )N.Only one certificate can be added to a request%cert and issuer must be a Certificate)
rL   rM   r%   r'   r#   r   Certificater1   rI   rN   )r;   certissuerr&   s       r   add_certificatez"OCSPRequestBuilder.add_certificate   s     ==$(:(:(FMNN)$$ 0 01D$$:
 CDD!69%t'9'94;K;K
 	
r   c                   | j                   | j                  t        d      t        |t              st        d      t        |       t        j                  d|       t        j                  d|       |j                  t        |      k7  s|j                  t        |      k7  rt        d      t        | j                   ||||f| j                        S )NrS    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)rL   rM   r%   r#   intr1   r'   r   _check_bytesdigest_sizelenrI   rN   )r;   r[   r\   serial_numberr&   s        r   add_certificate_by_hashz*OCSPRequestBuilder.add_certificate_by_hash   s     ==$(:(:(FMNN-->??)$-/?@,o>  C%
 
""c/&::6 
 "MMyI
 	
r   c                   t        |t        j                        st        d      t        j                  |j
                  ||      }t        || j                         t        | j                  | j                  g | j                  |      S Nz"extension must be an ExtensionType)r#   r   ExtensionTyper1   	Extensionoidr
   rN   rI   rL   rM   r;   extvalcritical	extensions       r   add_extensionz OCSPRequestBuilder.add_extension   su     &$"4"45@AANN6::x@	#It/?/?@!MM4--/M1A1A/M9/M
 	
r   c                r    | j                   | j                  t        d      t        j                  |       S )Nz*You must add a certificate before building)rL   rM   r%   r   create_ocsp_request)r;   s    r   buildzOCSPRequestBuilder.build   s4    == T%7%7%?IJJ''--r   )rO   zFtuple[x509.Certificate, x509.Certificate, hashes.HashAlgorithm] | NonerP   z5tuple[bytes, bytes, int, hashes.HashAlgorithm] | NonerQ   (list[x509.Extension[x509.ExtensionType]]returnNone)rV   x509.CertificaterW   rt   r&   rD   rr   rI   )
r[   bytesr\   ru   rb   r^   r&   rD   rr   rI   )rj   x509.ExtensionTyperk   boolrr   rI   )rr   OCSPRequest)r   r   r   rC   rX   rc   rm   rp   r   r   r   rI   rI   v   s     ?A&&& =& 
&

 !
 (	

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

 (
 

<
(
48
	
.r   rI   c                      e Zd Zdddg f	 	 	 	 	 	 	 d
dZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZ	 	 	 	 ddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZ	e
	 	 	 	 dd	       Zy)OCSPResponseBuilderNc                <    || _         || _        || _        || _        y rK   )	_response_responder_id_certsrN   )r;   responseresponder_idcertsrQ   s        r   rC   zOCSPResponseBuilder.__init__   s"     ")%r   c	           
     .   | j                   t        d      t        |t        j                        rt        |t        j                        st        d      t        ||fd ||||||      }	t        |	| j                  | j                  | j                        S )N#Only one response per OCSPResponse.rT   )r|   r%   r#   r   rU   r1   r.   rz   r}   r~   rN   )
r;   rV   rW   r&   r>   r?   r@   rA   rB   
singleresps
             r   add_responsez OCSPResponseBuilder.add_response   s     >>%BCC$ 0 01D$$:
 CDD$6N	

 #KK	
 	
r   c
           
        | j                   t        d      t        |t              st	        d      t        j                  d|       t        j                  d|       t        |       |j                  t        |      k7  s|j                  t        |      k7  rt        d      t        d |||f||||||	      }
t        |
| j                  | j                  | j                        S )Nr   rZ   r[   r\   r]   )r|   r%   r#   r^   r1   r   r_   r'   r`   ra   r.   rz   r}   r~   rN   )r;   r[   r\   rb   r&   r>   r?   r@   rA   rB   r   s              r   add_response_by_hashz(OCSPResponseBuilder.add_response_by_hash   s     >>%BCC-->??-/?@,o>)$  C%
 
""c/&::6 
 %>	

 #KK	
 	
r   c                   | 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   rU   r1   r   rz   r|   r~   rN   )r;   encodingresponder_certs      r   r   z OCSPResponseBuilder.responder_id*  s     )@AA.$*:*:;BCC($9:H  #NNX&KK	
 	
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  P   K   | ]  }t        |t        j                           y wrK   )r#   r   rU   ).0xs     r   	<genexpr>z3OCSPResponseBuilder.certificates.<locals>.<genexpr>E  s     Bq:a!1!12Bs   $&z$certs must be a list of Certificates)
r~   r%   listra   allr1   rz   r|   r}   rN   )r;   r   s     r   certificatesz OCSPResponseBuilder.certificates=  s}     ;;"@AAUu:?>??BEBBBCC"NN	
 	
r   c                .   t        |t        j                        st        d      t        j                  |j
                  ||      }t        || j                         t        | j                  | j                  | j                  g | j                  |      S re   )r#   r   rf   r1   rg   rh   r
   rN   rz   r|   r}   r~   ri   s       r   rm   z!OCSPResponseBuilder.add_extensionN  s}     &$"4"45@AANN6::x@	#It/?/?@"NNKK*d*	*	
 	
r   c                    | 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   )r;   private_keyr&   s      r   signzOCSPResponseBuilder.sign^  sT    
 >>!EFF%IJJ(())4i
 	
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   r1   r   r%   r   r   )clsresponse_statuss     r   build_unsuccessfulz&OCSPResponseBuilder.build_unsuccessfull  sS     /+=>I  0;;;CDD(($dKKr   )r   z_SingleResponse | Noner   z5tuple[x509.Certificate, OCSPResponderEncoding] | Noner   zlist[x509.Certificate] | NonerQ   rq   )rV   rt   rW   rt   r&   rD   r>   r)   r?   rE   r@   rF   rA   rF   rB   rG   rr   rz   )r[   ru   r\   ru   rb   r^   r&   rD   r>   r)   r?   rE   r@   rF   rA   rF   rB   rG   rr   rz   )r   r   r   rt   rr   rz   )r   zIterable[x509.Certificate]rr   rz   )rj   rv   rk   rw   rr   rz   )r   r	   r&   zhashes.HashAlgorithm | Nonerr   OCSPResponse)r   r   rr   r   )r   r   r   rC   r   r   r   r   rm   r   classmethodr   r   r   r   rz   rz      s    ,0/3?A&(&&
 -& =&"
"
 !"
 (	"

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

 (,
 $,
 ',
 .,
 2,
 3,
 
,
\
-
?O
	
&
/
	
"
(
48
	
 
5
 /
 
	
 
L0
L	
L 
Lr   rz   )r&   rD   rr   rs   )#
__future__r   r0   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)   r.   rx   r   OCSPSingleResponserI   rz   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   