o
    �õ±j:  ã                   @   sˆ   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ G dd„ deƒZG d	d
„ d
eƒZG dd„ dƒZG dd„ dƒZdS )é    )Úlogger)ÚKerberosResponse)ÚKerberosTarget)ÚUniProto)Ú	UniClient)Ú
Packetizerc                   @   ó.   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
S )ÚKerberosPacketizeréÿÿ  c                 C   ó   t  | |¡ || _d| _d S ©Nó    ©r   Ú__init__Úbuffer_sizeÚ	in_buffer©Úselfr   © r   ú—/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minikerberos/network/aioclientsocket.pyr   
   ó   
zKerberosPacketizer.__init__c                 c   óp   � t | jƒdkr4tj| jd d… ddd�}t | jƒ|kr6| jdd| … }| j|d d … | _|V  d S d S d S ©Né   ÚbigF©Ú	byteorderÚsigned©Úlenr   ÚintÚ
from_bytes©r   ÚlengthÚdatar   r   r   Úprocess_buffer   ó   €
ûz!KerberosPacketizer.process_bufferc                 C  ó   �|V  d S ©Nr   ©r   r$   r   r   r   Údata_out   ó   €
zKerberosPacketizer.data_outc                 C  ó6   �|d u r|V  |  j |7  _ |  ¡ D ]}|V  qd S r(   ©r   r%   ©r   r$   Úpacketr   r   r   Údata_in   ó   €ÿzKerberosPacketizer.data_inN©r
   ©Ú__name__Ú
__module__Ú__qualname__r   r%   r*   r0   r   r   r   r   r	   	   ó
    
r	   c                   @   r   )ÚKerberosPWChangePacketizerr
   c                 C   r   r   r   r   r   r   r   r   #   r   z#KerberosPWChangePacketizer.__init__c                 c   r   r   r   r"   r   r   r   r%   (   r&   z)KerberosPWChangePacketizer.process_bufferc                 C  r'   r(   r   r)   r   r   r   r*   0   r+   z#KerberosPWChangePacketizer.data_outc                 C  r,   r(   r-   r.   r   r   r   r0   3   r1   z"KerberosPWChangePacketizer.data_inNr2   r3   r   r   r   r   r8   "   r7   r8   c                   @   ó2   e Zd Zdefdd„Zdd„ Zddefdd	„Zd
S )ÚAIOKerberosPWChangeClientSocketÚtargetc                 C   ó
   || _ d S r(   ©r;   ©r   r;   r   r   r   r   ;   ó   
z(AIOKerberosPWChangeClientSocket.__init__c                 C   ó   d| j  ¡ | j jf S ©Nz%s:%d©r;   Úget_hostname_or_ipÚport©r   r   r   r   Úget_addr_str>   ó   z,AIOKerberosPWChangeClientSocket.get_addr_strFÚthrowc           	      Ã   sÐ   �d }d }zUt ƒ }t| j|ƒ}| ¡ I d H }| jjtjkrAt|ƒjdddd�}| 	|| ¡I d H  | 
¡ 2 z	3 d H W }|} n6 n| jjtjkrLtdƒ‚|W |d urZ| ¡ I d H  S S |d urg| ¡ I d H  w w ©Nr   r   Fr   zNot implemented!)r8   r   r;   ÚconnectÚprotocolr   Ú
CLIENT_TCPr   Úto_bytesÚwriteÚreadÚ
CLIENT_UDPÚ	ExceptionÚclose©	r   r$   rH   ÚclientÚ
connectionÚ
packetizerr#   r/   Úkrb_messager   r   r   ÚsendrecvA   s.   €þ€
ÿÿz(AIOKerberosPWChangeClientSocket.sendrecvN©F©r4   r5   r6   r   r   rF   ÚboolrX   r   r   r   r   r:   :   ó    r:   c                   @   r9   )ÚAIOKerberosClientSocketr;   c                 C   r<   r(   r=   r>   r   r   r   r   Y   r?   z AIOKerberosClientSocket.__init__c                 C   r@   rA   rB   rE   r   r   r   rF   \   rG   z$AIOKerberosClientSocket.get_addr_strFrH   c           	      Ã   sÖ   �d }d }zXt ƒ }t| j|ƒ}| ¡ I d H }| jjtjkrDt|ƒjdddd�}| 	|| ¡I d H  | 
¡ 2 z3 d H W }t |¡} n6 n| jjtjkrOtdƒ‚|W |d ur]| ¡ I d H  S S |d urj| ¡ I d H  w w rI   )r	   r   r;   rJ   rK   r   rL   r   rM   rN   rO   r   ÚloadrP   rQ   rR   rS   r   r   r   rX   _   s.   €
þ€
ÿÿz AIOKerberosClientSocket.sendrecvNrY   rZ   r   r   r   r   r]   X   r\   r]   N)Úminikerberosr   Ú"minikerberos.protocol.asn1_structsr   Úminikerberos.common.targetr   Úasysocks.unicomm.common.targetr   Úasysocks.unicomm.clientr   Ú#asysocks.unicomm.common.packetizersr   r	   r8   r:   r]   r   r   r   r   Ú<module>   s    