U
    #FZh                     @   s8   d Z ddlmZ ddlmZ dd Zdd Zdd	 Zd
S )zUtilites for mutual TLS.    )
exceptions)_mtls_helperc                   C   s,   t t jdk	rdS t t jdk	r(dS dS )zCheck if default client SSL credentials exists on the device.

    Returns:
        bool: indicating if the default client cert source exists.
    NTF)r   Z_check_config_pathZCONTEXT_AWARE_METADATA_PATHZ&CERTIFICATE_CONFIGURATION_DEFAULT_PATH r   r   a/home/aprabhat/apps/x.techxrdev.in/venv/lib/python3.8/site-packages/google/auth/transport/mtls.pyhas_default_client_cert_source   s    
r   c                  C   s   t  stddd } | S )a  Get a callback which returns the default client SSL credentials.

    Returns:
        Callable[[], [bytes, bytes]]: A callback which returns the default
            client certificate bytes and private key bytes, both in PEM format.

    Raises:
        google.auth.exceptions.DefaultClientCertSourceError: If the default
            client SSL credentials don't exist or are malformed.
    z(Default client cert source doesn't existc               
   S   sT   zt  \} }}W n8 tttfk
rJ } zt|}||W 5 d }~X Y nX ||fS )N)r   Zget_client_cert_and_keyOSErrorRuntimeError
ValueErrorr   MutualTLSChannelError)_
cert_bytes	key_bytes
caught_excnew_excr   r   r   callback:   s    
z,default_client_cert_source.<locals>.callbackr   r   r
   )r   r   r   r   default_client_cert_source*   s    	r   c                    s"   t  std fdd}|S )at  Get a callback which returns the default encrpyted client SSL credentials.

    Args:
        cert_path (str): The cert file path. The default client certificate will
            be written to this file when the returned callback is called.
        key_path (str): The key file path. The default encrypted client key will
            be written to this file when the returned callback is called.

    Returns:
        Callable[[], [str, str, bytes]]: A callback which generates the default
            client certificate, encrpyted private key and passphrase. It writes
            the certificate and private key into the cert_path and key_path, and
            returns the cert_path, key_path and passphrase bytes.

    Raises:
        google.auth.exceptions.DefaultClientCertSourceError: If any problem
            occurs when loading or saving the client certificate and key.
    z2Default client encrypted cert source doesn't existc               
      s   zXt jdd\} }}}t d}|| W 5 Q R X td}|| W 5 Q R X W n8 tjtfk
r } zt|}||W 5 d }~X Y nX  |fS )NT)Zgenerate_encrypted_keywb)r   Zget_client_ssl_credentialsopenwriter   ZClientCertErrorr   r
   )r   r   r   Zpassphrase_bytes	cert_filekey_filer   r   	cert_pathkey_pathr   r   r   ^   s    

z6default_client_encrypted_cert_source.<locals>.callbackr   )r   r   r   r   r   r   $default_client_encrypted_cert_sourceF   s    r   N)__doc__Zgoogle.authr   Zgoogle.auth.transportr   r   r   r   r   r   r   r   <module>   s
   