o
    j!                     @   s(   d dl Z d dlmZ G dd deZdS )    N)
Packetizerc                   @   sf   e Zd ZdefddZdd ZdefddZd	d
 Zdd Z	dddZ
defddZdefddZdS )PacketizerSSL
packetizerc                 C   s:   t | d || _|| _d | _d | _d | _g | _d| _d S )Ni @  F)	r   __init__ssl_ctxr   tls_in_bufftls_out_bufftls_obj _PacketizerSSL__plaintext_buffer_PacketizerSSL__deepdebug)selfr   r    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asysocks/unicomm/common/packetizers/ssl.pyr      s   
zPacketizerSSL.__init__c                 C   s
   | j  S N)r   flush_bufferr   r   r   r   r      s   
zPacketizerSSL.flush_bufferbuffer_sizec                 C   s   | j | d S r   )r   set_buffersize)r   r   r   r   r   r      s   zPacketizerSSL.set_buffersizec                 C   s   | j jddS )NT)binary_form)r	   getpeercertr   r   r   r   get_peer_certificate   s   z"PacketizerSSL.get_peer_certificatec                 O   s   | j j|i | d S r   )r   packetizer_control)r   argskwargsr   r   r   r      s   z PacketizerSSL.packetizer_controlFc           
   
      s  t  | _t  | _| jj| j| j|d| _d}	 | jdu r%td|  |dkr-t	d|d7 }z| j
  W n t jy   | jdu rKtd|  td	D ]&}| j }|d
krt| jdu rgtdt|  || | I d H  qO nt	d| jdu rtd|  || jI d H }|d u s|d
krt	d|dkr|d dkr| jdu rtd t	d| jdu rtdt|  | j| Y q t	y } z|d }~ww | jdu rtd|  | j }	| jdu rtd|	  |	d
kr||	 | I d H  	 | jdu rtd d S d S )N)server_sider   TzDST start %s   z"Handshake took too many iterations   zDST want %s
       zDST client_hello %sz$Handshake took too many iterations 2zDST wating server hello %szConnection closed   z0Server did not send a valid TLS handshake packetzDST server_hello %szDST handshake ok %szDST server_fin %s zHandshake done)ssl	MemoryBIOr   r   r   wrap_bior	   r   print	Exceptiondo_handshakeSSLWantReadErrorrangereadlenwritedrainr   )
r   readerwriterr   ctr_client_helloserver_helloe
server_finr   r   r   r%      sl   













zPacketizerSSL.do_handshakedatac                 C  sV   d}| j |2 z
3 d H W }||7 }q	6 | j| 	 | j }|dkr)|V  qd S )Nr   )r   data_outr	   r*   r   r(   )r   r4   outdata	packetrawrawr   r   r   r5   [   s   

zPacketizerSSL.data_outencdatac                 C  s   | j r| j dV  | j s|d u rd V  | j| d}d}	 z| j }|dkr,W n||7 }d}W n
 tjy=   Y nw q |du rf| j	|2 z3 d H W }| j 
| qI6 | j rh| j dV  | j sZd S d S d S )Nr   r   FT)r
   popr   r*   r	   r(   r    r&   r   data_inappend)r   r9   r4   was_datachunkpacketr   r   r   r;   g   s:   

zPacketizerSSL.data_inN)F)__name__
__module____qualname__r   r   r   intr   r   r   r%   bytesr5   r;   r   r   r   r   r      s    

@r   )r    #asysocks.unicomm.common.packetizersr   r   r   r   r   r   <module>   s    