
    \d
                        d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZ  ee           G d d	                      Z ee           G d
 d                      Z ee           G d d                      Z ee
           G d dej                              Z ee
           G d dej                              Zg dZdS )z*
Credential managers for L{twisted.mail}.
    N)implementer)credentials)IllegalClientResponse)IChallengeResponseIClientAuthentication)nativeStringc                        e Zd Zd Zd Zd ZdS )CramMD5ClientAuthenticatorc                     || _         d S Nuserselfr   s     2lib/python3.11/site-packages/twisted/mail/_cred.py__init__z#CramMD5ClientAuthenticator.__init__       			    c                     dS )Ns   CRAM-MD5 r   s    r   getNamez"CramMD5ClientAuthenticator.getName   s    {r   c                     t          j        ||t          j                                                  }| j        dz   |                    d          z   S )N)	digestmod    ascii)hmacHMAChashlibmd5	hexdigestr   encode)r   secretchalresponses       r   challengeResponsez,CramMD5ClientAuthenticator.challengeResponse   sD    9VTW[AAAKKMMy4(//'":":::r   N__name__
__module____qualname__r   r   r&   r   r   r   r
   r
      sA            ; ; ; ; ;r   r
   c                   &    e Zd Zd Zd Zd Zd ZdS )LOGINAuthenticatorc                 ,    || _         | j        | _        d S r   )r   challengeUsernamer&   r   s     r   r   zLOGINAuthenticator.__init__#   s    	!%!7r   c                     dS )Ns   LOGINr   r   s    r   r   zLOGINAuthenticator.getName'       xr   c                 (    | j         | _        | j        S r   )challengeSecretr&   r   r   r#   r$   s      r   r.   z$LOGINAuthenticator.challengeUsername*   s    !%!5yr   c                     |S r   r   r3   s      r   r2   z"LOGINAuthenticator.challengeSecret/   s    r   N)r(   r)   r*   r   r   r.   r2   r   r   r   r,   r,   !   sP        8 8 8    
    r   r,   c                        e Zd Zd Zd Zd ZdS )PLAINAuthenticatorc                     || _         d S r   r   r   s     r   r   zPLAINAuthenticator.__init__6   r   r   c                     dS )Ns   PLAINr   r   s    r   r   zPLAINAuthenticator.getName9   r0   r   c                 "    d| j         z   dz   |z   S )N    r   r3   s      r   r&   z$PLAINAuthenticator.challengeResponse<   s    ty 5(611r   Nr'   r   r   r   r6   r6   4   sA            2 2 2 2 2r   r6   c                   &    e Zd Zd Zd Zd Zd ZdS )LOGINCredentialsc                 l    ddg| _         ddg| _        t          j                            | d d            d S )Ns	   Password s
   User Name s   passwords   username)
challenges	responsesr   UsernamePasswordr   r   s    r   r   zLOGINCredentials.__init__B   s;    (.9%{3$--dD$?????r   c                 4    | j                                         S r   )r>   popr   s    r   getChallengezLOGINCredentials.getChallengeG   s    ""$$$r   c                 p    t          | t          | j                                                  |           d S r   )setattrr   r?   rB   )r   r%   s     r   setResponsezLOGINCredentials.setResponseJ   s0    l4>#5#5#7#788(CCCCCr   c                 *    t          | j                  S r   )boolr>   r   s    r   moreChallengeszLOGINCredentials.moreChallengesM   s    DO$$$r   Nr(   r)   r*   r   rC   rF   rI   r   r   r   r<   r<   @   sV        @ @ @
% % %D D D% % % % %r   r<   c                   &    e Zd Zd Zd Zd Zd ZdS )PLAINCredentialsc                 H    t           j                            | d d            d S r   )r   r@   r   r   s    r   r   zPLAINCredentials.__init__S   s#    $--dD$?????r   c                     dS )Nr   r   r   s    r   rC   zPLAINCredentials.getChallengeV   s    sr   c                     |                     d          }t          |          dk    rt          d          |\  }| _        | _        d S )Nr:      z*Malformed Response - wrong number of parts)splitlenr   usernamepassword)r   r%   partsuselesss       r   rF   zPLAINCredentials.setResponseY   sE    u%%u::??'(TUUU05-r   c                     dS )NFr   r   s    r   rI   zPLAINCredentials.moreChallenges_   s    ur   NrJ   r   r   r   rL   rL   Q   sS        @ @ @  6 6 6    r   rL   )r
   r<   r,   rL   r6   )__doc__r   r   zope.interfacer   twisted.credr   twisted.mail._exceptr   twisted.mail.interfacesr   r   twisted.python.compatr   r
   r,   r6   r@   r<   rL   __all__r   r   r   <module>r_      s   
   & & & & & & $ $ $ $ $ $ 6 6 6 6 6 6 M M M M M M M M . . . . . . "##	; 	; 	; 	; 	; 	; 	; $#	; "##       $#$ "##2 2 2 2 2 2 2 $#2   % % % % %{3 % % ! %        {3   ! "  r   