
    7g                     x    d dl mZmZmZmZ d dlmZ d dlmZ d dlm	Z	  G d de
          Z G d d          ZdS )	    )max_byte	zero_bytebyte_ordbyte_chrN)b)int64c                       e Zd ZdS )BERExceptionN)__name__
__module____qualname__     F/var/www/html/syslog/venv/lib/python3.11/site-packages/paramiko/ber.pyr
   r
      s        Dr   r
   c                       e Zd ZdZ e            fdZd Zd Zd Zd Z	d Z
ed             Zd	 Zd
 Zed             ZdS )BERz7
    Robey's tiny little attempt at a BER decoder.
    c                 <    t          |          | _        d| _        d S )Nr   )r   contentidx)selfr   s     r   __init__zBER.__init__"   s    zzr   c                     | j         S N)r   r   s    r   asbyteszBER.asbytes&   s
    |r   c                 *    |                                  S r   )r   r   s    r   __str__zBER.__str__)   s    ||~~r   c                 6    dt          | j                  z   dz   S )NzBER('z'))reprr   r   s    r   __repr__zBER.__repr__,   s    dl+++d22r   c                 *    |                                  S r   )decode_nextr   s    r   decodez
BER.decode/   s    !!!r   c                 h   | j         t          | j                  k    rd S t          | j        | j                            }| xj         dz  c_         |dz  dk    r|d}| j         t          | j                  k     r]t          | j        | j                            }| xj         dz  c_         |dz  |dz  z  }|dz  sn| j         t          | j                  k     ]| j         t          | j                  k    rd S t          | j        | j                            }| xj         dz  c_         |dz  rf|dz  }| j         |z   t          | j                  k    rd S t	          j        | j        | j         | j         |z            d          }| xj         |z  c_         | j         |z   t          | j                  k    rd S | j        | j         | j         |z            }| xj         |z  c_         |dk    r|                     |          S |d	k    rt	          j        |          S d
}t          |                    |                    )N      r            T0      z.Unknown ber encoding type {:d} (robey is lazy))	r   lenr   r   utilinflate_longdecode_sequencer
   format)r   identtsizedatamsgs         r   r"   zBER.decode_next2   s%   8s4<((((4dh/00ABJ2E(S....T\$(344A!D1D  (S.... 8s4<((((4TX.//A$; 		 tAx!|c$,////t$TX145t D HHMHH8d?S....4|DHtx$67DD==''---aZZ$T*** CCszz%00111r   c                     g }t          |           }	 |                                }|n|                    |           -|S r   )r   r"   append)r4   outberxs       r   r/   zBER.decode_sequence`   sI    $ii	!!AyJJqMMM		
 
r   c                 ~   | xj         t          |          z  c_         t          |          dk    rRt          j        t          |                    }| xj         t          dt          |          z             |z   z  c_         n*| xj         t          t          |                    z  c_         | xj         |z  c_         d S )Nr(   r)   )r   r   r,   r-   deflate_long)r   r1   vallenstrs       r   
encode_tlvzBER.encode_tlvk   s    's88d??&s3xx00FLLHTCKK%7886AALLLLLHSXX...LLr   c                    t          |          t          u r<|r|                     dt                     d S |                     dt                     d S t          |          t
          u st          |          t          u r*|                     dt          j        |                     d S t          |          t          u r|                     d|           d S t          |          t          u st          |          t          u r+|                     d|                     |                     d S t          d                    t          |                              )Nr%   r+      r*   zUnknown type for encoding: {!r})typeboolr?   r   r   intr   r-   r<   strlisttupleencode_sequencer
   r0   )r   r:   s     r   encodez
BER.encodeu   s*   77d?? .8,,,,,9-----1ggnn$q''U"2"2OOAt03344444!WW^^OOAq!!!!!1ggoo477e#3#3OOD$"6"6q"9"9:::::188aAA  r   c                 z    t                      }| D ]}|                    |           |                                S r   )r   rI   r   )r4   r9   items      r   rH   zBER.encode_sequence   s=    ee 	 	DJJt{{}}r   N)r   r   r   __doc__bytesr   r   r   r    r#   r"   staticmethodr/   r?   rI   rH   r   r   r   r   r      s           %uww        3 3 3" " ",2 ,2 ,2\   \    "   \  r   r   )paramiko.commonr   r   r   r   paramiko.utilr-   r   paramiko.sftpr   	Exceptionr
   r   r   r   r   <module>rS      s   $ D C C C C C C C C C C C                  	 	 	 	 	9 	 	 	n n n n n n n n n nr   