Ë
    "V.jb  ã                   ó°   — d Z ddlZddlZddlmZ ddlmZ  G d„ d«      Z G d„ de«      Z G d	„ d
e«      Z	d„ Z
 e
«       Z G d„ de«      Z G d„ de«      Zy)z(SASL mechanisms for AMQP authentication.é    N)ÚBytesIO)Ú_write_tablec                   ó&   — e Zd ZdZed„ «       Zd„ Zy)ÚSASLz�The base class for all amqp SASL authentication mechanisms.

    You should sub-class this if you're implementing your own authentication.
    c                 ó   — t         ‚)z2Return a bytes containing the SASL mechanism name.©ÚNotImplementedError©Úselfs    úKC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\amqp/sasl.pyÚ	mechanismzSASL.mechanism   s
   € ô "Ð!ó    c                 ó   — t         ‚)z@Return the first response to a SASL challenge as a bytes object.r   ©r   Ú
connections     r   Ústartz
SASL.start   s   € ä!Ð!r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r   © r   r   r   r   
   s    „ ñð
 ñ"ó ð"ó"r   r   c                   ó$   — e Zd ZdZdZd„ ZdZd„ Zy)ÚPLAINzbPLAIN SASL authentication mechanism.

    See https://tools.ietf.org/html/rfc4616 for details
    s   PLAINc                 ó"   — ||c| _         | _        y ©N©ÚusernameÚpassword©r   r   r   s      r   Ú__init__zPLAIN.__init__"   ó   € Ø'/°Ð$ˆŒ�t•}r   r   c                 ó^  — | j                   �| j                  €t        S t        «       }|j	                  d«       |j	                  | j                   j                  d«      «       |j	                  d«       |j	                  | j                  j                  d«      «       |j                  «       S )Nó    zutf-8)r   r   ÚNotImplementedr   ÚwriteÚencodeÚgetvalue©r   r   Úlogin_responses      r   r   zPLAIN.start*   s‡   € Ø�=‰=Ð  D§M¡MÐ$9Ü!Ð!Ü ›ˆØ×Ñ˜UÔ#Ø×Ñ˜TŸ]™]×1Ñ1°'Ó:Ô;Ø×Ñ˜UÔ#Ø×Ñ˜TŸ]™]×1Ñ1°'Ó:Ô;Ø×&Ñ&Ó(Ð(r   N©r   r   r   r   r   r!   Ú	__slots__r   r   r   r   r   r      s   „ ñð
 €Iò:ð
€Ió
)r   r   c                   ó$   — e Zd ZdZdZd„ ZdZd„ Zy)ÚAMQPLAINzhAMQPLAIN SASL authentication mechanism.

    This is a non-standard mechanism used by AMQP servers.
    s   AMQPLAINc                 ó"   — ||c| _         | _        y r   r   r    s      r   r!   zAMQPLAIN.__init__=   r"   r   r   c                 óÔ   — | j                   �| j                  €t        S t        «       }t	        | j                   | j                  dœ|j
                  g «       |j                  «       dd  S )N)s   LOGINs   PASSWORDé   )r   r   r%   r   r   r&   r(   r)   s      r   r   zAMQPLAIN.startE   s\   € Ø�=‰=Ð  D§M¡MÐ$9Ü!Ð!Ü ›ˆÜ §¡¸D¿M¹MÑJØ#×)Ñ)¨2ô	/ð ×&Ñ&Ó(¨¨Ð,Ð,r   Nr+   r   r   r   r.   r.   5   s   „ ñð
 €Iò:ð
€Ió
-r   r.   c                  ó|   ‡— 	 dd l Šdd lŠ G ˆfd„dt        «      } | S # t        $ r  G d„ dt        «      }|cY S w xY w)Nr   c                   ó6   •— e Zd ZdZdZ	 	 dd„ZdZd„ Zˆ fd„Zy)	ú%_get_gssapi_mechanism.<locals>.GSSAPIzsGSSAPI SASL authentication mechanism.

            See https://tools.ietf.org/html/rfc4752 for details
            s   GSSAPINc                 ó‚   — |r!t        |t        «      s|j                  d«      }|| _        || _        || _        || _        y )NÚascii)Ú
isinstanceÚbytesr'   Úclient_nameÚ	fail_softÚserviceÚrdns©r   r9   r;   r<   r:   s        r   r!   z._get_gssapi_mechanism.<locals>.GSSAPI.__init__l   s;   € á¤z°+¼uÔ'EØ"-×"4Ñ"4°WÓ"=�KØ#.�Ô Ø!*�”Ø&�”Ø �•	r   )r9   r:   r;   r<   c                 ój  — |j                   j                  }| j                  rY|j                  t        j
                  t        j                  fv r-|j                  «       }t	        j                  |d   «      \  }}}n|j                   j                  }t        |t        «      s|j                  d«      }|S )Nr   r6   )Ú	transportÚsockr<   ÚfamilyÚsocketÚAF_INETÚAF_INET6ÚgetpeernameÚgethostbyaddrÚhostr7   r8   r'   )r   r   r@   ÚpeerÚhostnameÚ_s         r   Úget_hostnamez2_get_gssapi_mechanism.<locals>.GSSAPI.get_hostname|   s�   € Ø!×+Ñ+×0Ñ0�Ø—9’9 §¡´·±Ü17·±ð1Bñ "Bà×+Ñ+Ó-�DÜ%+×%9Ñ%9¸$¸q¹'Ó%B‘N�H˜a¡à)×3Ñ3×8Ñ8�HÜ! (¬EÔ2Ø'Ÿ™¨wÓ7�HØ�r   c                 óÞ  •— 	 | j                   r,‰j                  ‰j                  | j                   «      ¬«      }nd }| j                  |«      }‰j                  dj	                  | j
                  |g«      ‰j                  j                  «      }‰j                  ||¬«      }|j                  d «      S # ‰j                  j                  j                  $ r | j                  rt        cY S ‚ w xY w)N)Únameó   @)rM   Úcreds)r9   ÚCredentialsÚNamerK   Újoinr;   ÚNameTypeÚhostbased_serviceÚSecurityContextÚstepÚrawÚmiscÚGSSErrorr:   r%   )r   r   rO   rI   rM   ÚcontextÚgssapis         €r   r   z+_get_gssapi_mechanism.<locals>.GSSAPI.startˆ   sÑ   ø€ ðØ×'Ò'Ø &× 2Ñ 2Ø!'§¡¨T×-=Ñ-=Ó!>ð !3ó !@™ð !%˜Ø#×0Ñ0°Ó<�HØ!Ÿ;™; t§y¡y°$·,±,ÀÐ1IÓ'JØ'-§¡×'HÑ'HóJ�Dà$×4Ñ4¸$ÀeÐ4ÓL�GØ"Ÿ<™<¨Ó-Ð-øØ—z‘z—‘×/Ñ/ò Ø—~’~Ü-Ò-àð	ús   ƒB/B3 Â35C,Ã*C,©Ns   amqpFF)	r   r   r   r   r   r!   r,   rK   r   )r[   s   €r   ÚGSSAPIr4   d   s+   ø„ ñð
 "ˆIà9@Ø/4ó!ðˆIò
 õr   r]   c                   ó&   — e Zd ZdZdZ	 	 dd„Zd„ Zy)ú)_get_gssapi_mechanism.<locals>.FakeGSSAPIz7A no-op SASL mechanism for when gssapi isn't available.Nc                 ó   — |st        d«      ‚y )Nz?You need to install the `gssapi` module for GSSAPI SASL supportr   r=   s        r   r!   z2_get_gssapi_mechanism.<locals>.FakeGSSAPI.__init__Y   s   € á Ü-ð'ó(ð (ð !r   c                 ó   — t         S r   )r%   r
   s    r   r   z/_get_gssapi_mechanism.<locals>.FakeGSSAPI.start`   s   € Ü%Ð%r   r\   ©r   r   r   r   r   r!   r   r   r   r   Ú
FakeGSSAPIr_   T   s   „ ÙIàˆIà9@Ø/4ó(ó&r   rc   )r[   Úgssapi.raw.miscr   ÚImportError)r]   rc   r[   s     @r   Ú_get_gssapi_mechanismrf   O   sI   ø€ ðIÛÛö$4	”Tô 4	ðj ˆøôM ò ô	&œô 	&ð Òðús   ƒ ž;º;c                   ó   — e Zd ZdZdZd„ Zy)ÚEXTERNALzËEXTERNAL SASL mechanism.

    Enables external authentication, i.e. not handled through this protocol.
    Only passes 'EXTERNAL' as authentication mechanism, but no further
    authentication data.
    s   EXTERNALc                  ó   — y)Nr   r   r   s     r   r   zEXTERNAL.start©   s   € Ør   N)r   r   r   r   r   r   r   r   r   rh   rh   Ÿ   s   „ ñð €Iór   rh   c                   ó    — e Zd ZdZdZd„ Zd„ Zy)ÚRAWz±A generic custom SASL mechanism.

    This mechanism takes a mechanism name and response to send to the server,
    so can be used for simple custom authentication schemes.
    Nc                 óž   — t        |t        «      sJ ‚t        |t        «      sJ ‚||c| _        | _        t	        j
                  dt        «       y )NznPassing login_method and login_response to Connection is deprecated. Please implement a SASL subclass instead.)r7   r8   r   ÚresponseÚwarningsÚwarnÚDeprecationWarning)r   r   rm   s      r   r!   zRAW.__init__¶   sF   € Ü˜)¤UÔ+Ð+Ð+Ü˜(¤EÔ*Ð*Ð*Ø(1°8Ð%ˆŒ˜œÜ�‰ð !ä"4õ	6r   c                 ó   — | j                   S r   )rm   r   s     r   r   z	RAW.start¾   s   € Ø�}‰}Ðr   rb   r   r   r   rk   rk   ­   s   „ ñð €Iò6ór   rk   )r   rB   rn   Úior   Úamqp.serializationr   r   r   r.   rf   r]   rh   rk   r   r   r   Ú<module>rt      s_   ðÙ .ã Û Ý å +÷"ñ "ô )ˆDô )ô6-ˆtô -ò4JñZ 
Ó	 €ôˆtô ôˆ$õ r   