Ë
    oj½
  ã                   ó^  — 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y)z*
Credential managers for L{twisted.mail}.
é    N)Úimplementer)Úcredentials)ÚIllegalClientResponse)ÚIChallengeResponseÚIClientAuthentication)ÚnativeStringc                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚCramMD5ClientAuthenticatorc                 ó   — || _         y ©N©Úuser©Úselfr   s     ú4/usr/lib/python3/dist-packages/twisted/mail/_cred.pyÚ__init__z#CramMD5ClientAuthenticator.__init__   ó	   € Øˆ�	ó    c                  ó   — y)Ns   CRAM-MD5© ©r   s    r   ÚgetNamez"CramMD5ClientAuthenticator.getName   s   € Ør   c                 ó¬   — t        j                  ||t        j                  ¬«      j	                  «       }| j
                  dz   |j                  d«      z   S )N)Ú	digestmodó    Úascii)ÚhmacÚHMACÚhashlibÚmd5Ú	hexdigestr   Úencode)r   ÚsecretÚchalÚresponses       r   ÚchallengeResponsez,CramMD5ClientAuthenticator.challengeResponse   s>   € Ü—9‘9˜V T´W·[±[ÔA×KÑKÓMˆØ�y‰y˜4Ñ (§/¡/°'Ó":Ñ:Ð:r   N©Ú__name__Ú
__module__Ú__qualname__r   r   r&   r   r   r   r
   r
      s   „ òòó;r   r
   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚLOGINAuthenticatorc                 ó4   — || _         | j                  | _        y r   )r   ÚchallengeUsernamer&   r   s     r   r   zLOGINAuthenticator.__init__#   s   € ØˆŒ	Ø!%×!7Ñ!7ˆÕr   c                  ó   — y)Ns   LOGINr   r   s    r   r   zLOGINAuthenticator.getName'   ó   € Ør   c                 ó<   — | j                   | _        | j                  S r   )ÚchallengeSecretr&   r   ©r   r#   r$   s      r   r.   z$LOGINAuthenticator.challengeUsername*   s   € à!%×!5Ñ!5ˆÔØ�y‰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,   !   s   „ ò8òòó
r   r,   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚPLAINAuthenticatorc                 ó   — || _         y r   r   r   s     r   r   zPLAINAuthenticator.__init__6   r   r   c                  ó   — y)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   € Ø�t—y‘yÑ  5Ñ(¨6Ñ1Ð1r   Nr'   r   r   r   r6   r6   4   s   „ òòó2r   r6   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚLOGINCredentialsc                 ój   — ddg| _         ddg| _        t        j                  j	                  | d d «       y )Ns	   Password s
   User Name s   passwords   username)Ú
challengesÚ	responsesr   ÚUsernamePasswordr   r   s    r   r   zLOGINCredentials.__init__B   s2   € Ø(¨.Ð9ˆŒØ% {Ð3ˆŒÜ×$Ñ$×-Ñ-¨d°D¸$Õ?r   c                 ó6   — | j                   j                  «       S r   )r>   Úpopr   s    r   ÚgetChallengezLOGINCredentials.getChallengeG   s   € Ø�‰×"Ñ"Ó$Ð$r   c                 ó`   — t        | t        | j                  j                  «       «      |«       y r   )Úsetattrr   r?   rB   )r   r%   s     r   ÚsetResponsezLOGINCredentials.setResponseJ   s    € Ü�”l 4§>¡>×#5Ñ#5Ó#7Ó8¸(ÕCr   c                 ó,   — t        | j                  «      S r   )Úboolr>   r   s    r   ÚmoreChallengeszLOGINCredentials.moreChallengesM   s   € Ü�D—O‘OÓ$Ð$r   N©r(   r)   r*   r   rC   rF   rI   r   r   r   r<   r<   @   s   „ ò@ò
%òDó%r   r<   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚPLAINCredentialsc                 óF   — t         j                  j                  | d d «       y r   )r   r@   r   r   s    r   r   zPLAINCredentials.__init__S   s   € Ü×$Ñ$×-Ñ-¨d°D¸$Õ?r   c                  ó   — y)Nr   r   r   s    r   rC   zPLAINCredentials.getChallengeV   s   € Ør   c                 óx   — |j                  d«      }t        |«      dk7  rt        d«      ‚|\  }| _        | _        y )Nr:   é   z*Malformed Response - wrong number of parts)ÚsplitÚlenr   ÚusernameÚpassword)r   r%   ÚpartsÚuselesss       r   rF   zPLAINCredentials.setResponseY   s7   € Ø—‘˜uÓ%ˆÜˆu‹:˜Š?Ü'Ð(TÓUÐUØ05Ñ-ˆ�” ¥r   c                  ó   — y)NFr   r   s    r   rI   zPLAINCredentials.moreChallenges_   s   € Ør   NrJ   r   r   r   rL   rL   Q   s   „ ò@òò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ß MÝ .ñ Ð"Ó#÷	;ð 	;ó $ð	;ñ Ð"Ó#÷ð ó $ðñ$ Ð"Ó#÷2ð 2ó $ð2ñ ÐÓ ô%�{×3Ñ3ó %ó !ð%ñ  ÐÓ ô�{×3Ñ3ó ó !ðò"�r   