
    Aah              	           d Z ddlZddlmZmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZmZ ddlmZ erdd	lmZ d
Z G d de          Z edd          	 ddede
e         dee         fd            ZdS )z!Base Authentication Plugin class.    N)ABCabstractmethod)	lru_cache)TYPE_CHECKINGAnyOptionalType   )NotSupportedErrorProgrammingError)logger)MySQLSocketzmysql.connector.pluginsc            	          e Zd ZdZ	 ddedededdfdZedefd	            Zee	defd
                        Z
ee	defd                        Ze	dededee         fd            ZdddededefdZe	dddededefd            ZdS )MySQLAuthPluginzAuthorization plugin interface.Fusernamepasswordssl_enabledreturnNc                 @    |dn|| _         |dn|| _        || _        dS )zConstructor.N )	_username	_password_ssl_enabled)selfr   r   r   s       R/var/www/lms/venv/lib/python3.11/site-packages/mysql/connector/plugins/__init__.py__init__zMySQLAuthPlugin.__init__1   s2     %-$4bb($,$4bb("-    c                     | j         S )z&Signals whether or not SSL is enabled.)r   r   s    r   r   zMySQLAuthPlugin.ssl_enabled<   s       r   c                     dS )z'Signals whether or not SSL is required.N r   s    r   requires_sslzMySQLAuthPlugin.requires_sslA         r   c                     dS )zPlugin official name.Nr!   r   s    r   namezMySQLAuthPlugin.nameF   r#   r   	auth_datakwargsc                     dS )a  Make the client's authorization response.

        Args:
            auth_data: Authorization data.
            kwargs: Custom configuration to be passed to the auth plugin
                    when invoked. The parameters defined here will override the ones
                    defined in the auth plugin itself.

        Returns:
            packet: Client's authorization response.
        Nr!   )r   r&   r'   s      r   auth_responsezMySQLAuthPlugin.auth_responseK   r#   r   sockr   c                     t           )a1  Handles server's `auth more data` response.

        Args:
            sock: Pointer to the socket connection.
            auth_data: Authentication method data (from a packet representing
                       an `auth more data` response).
            kwargs: Custom configuration to be passed to the auth plugin
                    when invoked. The parameters defined here will override the ones
                    defined in the auth plugin itself.

        Returns:
            packet: Last server's response after back-and-forth communication.
        )NotImplementedErrorr   r*   r&   r'   s       r   auth_more_responsez"MySQLAuthPlugin.auth_more_responseY   s
      "!r   c                     dS )a?  Handles server's `auth switch request` response.

        Args:
            sock: Pointer to the socket connection.
            auth_data: Plugin provided data (extracted from a packet
                       representing an `auth switch request` response).
            kwargs: Custom configuration to be passed to the auth plugin
                    when invoked. The parameters defined here will override the ones
                    defined in the auth plugin itself.

        Returns:
            packet: Last server's response after back-and-forth communication.
        Nr!   r-   s       r   auth_switch_responsez$MySQLAuthPlugin.auth_switch_responsek   r#   r   )F)__name__
__module____qualname____doc__strboolr   propertyr   r   r"   r%   bytesr   r   r)   r.   r0   r!   r   r   r   r   .   s       )) "		. 	.	. 	. 		.
 
	. 	. 	. 	. !T ! ! ! X! 6d 6 6 6 ^ X6 $c $ $ $ ^ X$ u      ^"!".3"?B"	" " " "$ !.3?B	   ^  r   r   
   F)maxsizetypedplugin_nameauth_plugin_classr   c                    t           }| r	 t          j        d|           t          j        d|            t          j        d|  |          }|rt          ||          s|j        }t          j        d|           t          ||          S # t          $ r}t          j	        d|           Y d}~n(d}~wt          $ r}t          d|           |d}~ww xY wt          d|  d	          )
a  Return authentication class based on plugin name

    This function returns the class for the authentication plugin plugin_name.
    The returned class is a subclass of BaseAuthPlugin.

    Args:
        plugin_name (str): Authentication plugin name.
        auth_plugin_class (str): Authentication plugin class name.

    Raises:
        NotSupportedError: When plugin_name is not supported.

    Returns:
        Subclass of `MySQLAuthPlugin`.
    zpackage: %szplugin_name: %s.zAUTHENTICATION_PLUGIN_CLASS: %sz"Requested Module was not found: %sNzInvalid module name: zAuthentication plugin 'z' is not supported)DEFAULT_PLUGINS_PKGr   info	importlibimport_modulehasattrAUTHENTICATION_PLUGIN_CLASSgetattrModuleNotFoundErrorwarning
ValueErrorr   r   )r<   r=   packageplugin_moduleerrs        r   get_auth_pluginrM   ~   s3   ( "G K	KKw///K);777%34E4E4EwOOM$ NGMCT,U,U N$1$M!K9;LMMM=*;<<<" 	F 	F 	FN?EEEEEEEE 	K 	K 	K"#@3#@#@AAsJ	K
UkUUU
V
VVs$   A?B 
CB//C<CC)N)r4   rB   abcr   r   	functoolsr   typingr   r   r   r	   errorsr   r   r   networkr   r@   r   r5   rM   r!   r   r   <module>rS      sU  : ( '     # # # # # # # #       5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8       &%%%%%%/ M M M M Mc M M M` 2U### (,!W !W!W}!W 
/!W !W !W $#!W !W !Wr   