o
    1 iM                     @   s4   d dl Z d dlZd dlZdd Zdd Zdd ZdS )    Nc                  C   s  z"ddl m}  ddlm} ddlm}m} ddlm} ddl	m
} W n ty-   tdw |jdd	| d
}|j|jj|jj| d }| | |jdg}ttjtj}	|	d |	 d }
|	  | | tt  | d| |
| dg}t!j!" }| # $|%|j&|dd'|' (| ) *|+|t!j,dd -||. | }|/|jj }||fS )zwCreate self-signed key/cert pair for testing.

    This method requires the library ``cryptography`` be installed.
    r   )x509)default_backend)hashesserialization)rsa)NameOIDz_Using `Security.temporary` requires `cryptography`, please install it using either pip or condai  i   )Zpublic_exponentZkey_sizebackend)encodingformatZencryption_algorithmzray-internal)z8.8.8.8P   z	127.0.0.1	localhostF)criticalim  )days)0Zcryptographyr   Zcryptography.hazmat.backendsr   Zcryptography.hazmat.primitivesr   r   Z)cryptography.hazmat.primitives.asymmetricr   Zcryptography.x509.oidr   ImportErrorZgenerate_private_keyZprivate_bytesZEncodingZPEMZPrivateFormatZPKCS8ZNoEncryptiondecodeNameZNameAttributeZCOMMON_NAMEsocketAF_INET
SOCK_DGRAMconnectgetsocknamecloseZSubjectAlternativeNameZDNSNamegethostbynamegethostnamedatetimeutcnowZCertificateBuilderZsubject_nameZissuer_nameadd_extensionZ
public_keyZserial_numberZrandom_serial_numberZnot_valid_beforeZnot_valid_after	timedeltasignSHA256public_bytes)r   r   r   r   r   r   keyZkey_contentsZray_interalsZprivate_ip_addressZaltnamesnowcertZcert_contents r%   b/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/ray/_private/tls_utils.pygenerate_self_signed_tls_certs   sb   




r'   c                 C   sZ   dd l }tjdd dv r(t \}}}|j||fg||d ud}| ||S | |S )Nr   ZRAY_USE_TLS0)1true)Zroot_certificatesZrequire_client_auth)	grpcosenvirongetlowerload_certs_from_envZssl_server_credentialsZadd_secure_portZadd_insecure_port)serveraddressr+   server_cert_chainprivate_keyca_certcredentialsr%   r%   r&   add_port_to_grpc_serverD   s   
r7   c                  C   s   g d} t dd | D rtdttjd d}| }W d    n1 s(w   Y  ttjd d}| }W d    n1 sDw   Y  ttjd d}| }W d    n1 s`w   Y  |||fS )	N)RAY_TLS_SERVER_CERTRAY_TLS_SERVER_KEYRAY_TLS_CA_CERTc                 s   s    | ]}|t jvV  qd S )N)r,   r-   ).0vr%   r%   r&   	<genexpr>U   s    z&load_certs_from_env.<locals>.<genexpr>zIf the environment variable RAY_USE_TLS is set to true then RAY_TLS_SERVER_CERT, RAY_TLS_SERVER_KEY and RAY_TLS_CA_CERT must also be set.r8   rbr9   r:   )anyRuntimeErroropenr,   r-   read)Ztls_env_varsfr3   r4   r5   r%   r%   r&   r0   S   s   



r0   )r   r,   r   r'   r7   r0   r%   r%   r%   r&   <module>   s    >