
    Zj	                         d Z ddlZddlZdZdeez  defdZdeez  deez  d	eez  defd
Zdeez  deez  defdZdeez  deez  de	eef         fdZ
deez  deez  defdZdS )z!
Authentication related methods.
    N)auth_crammd5_verifyauth_login_encodeauth_plain_encodeauth_xoauth2_encodevaluereturnc                 t    t          | t          t          t          f          r| S |                     d          S )Nzutf-8)
isinstancebytes	bytearray
memoryviewencode)r   s    S/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/aiosmtplib/auth.py_ensure_bytesr      s2    %%J788 <<       usernamepassword	challengec                   t          |           }t          |          }t          j        |          }t          j        ||d          }|dz   |                                                    d          z   }t          j        |          }|S )z
    CRAM-MD5 auth uses the password as a shared secret to MD5 the server's
    response, and sends the username combined with that (base64 encoded).
    md5)msg	digestmod    ascii)r   base64	b64decodehmacnew	hexdigestr   	b64encode)	r   r   r   username_bytespassword_bytesdecoded_challenge
md5_digestverificationencoded_verifications	            r   r   r      s     #8,,N"8,,N(33..?5QQQJ!D(:+?+?+A+A+H+H+Q+QQL!+L99r   c                    t          |           }t          |          }d|z   dz   |z   }t          j        |          }|S )zG
    PLAIN auth base64 encodes the username and password together.
        r   r   r    )r   r   r!   r"   username_and_passwordencodeds         r   r   r   ,   sI     #8,,N"8,,N!N2U:^K455GNr   c                    t          |           }t          |          }t          j        |          }t          j        |          }||fS )z]
    LOGIN auth base64 encodes the username and password and sends them
    in sequence.
    r)   )r   r   r!   r"   encoded_usernameencoded_passwords         r   r   r   =   sL     #8,,N"8,,N'77'77---r   access_tokenc                    t          |           }t          |          }d|z   dz   |z   dz   }t          j        |          }|S )z
    XOAUTH2 auth encodes the username and OAuth2 access token per
    https://developers.google.com/gmail/imap/xoauth2-protocol

    Format: base64("user=" + username + "\x01auth=Bearer " + token + "\x01\x01")
    s   user=s   auth=Bearer s   r)   )r   r/   r!   token_bytesauth_stringr+   s         r   r   r   O   sT     #8,,N--K 	>!$77+ES  {++GNr   )__doc__r   r   __all__strr   r   r   r   tupler   r    r   r   <module>r8      sI     !u ! ! ! ! ! Ek Ek  U{ 
        *EkEk 	   ".Ek.Ek. 5%<	. . . .$Ek+ 	     r   