3 L]@sVddlmZmZddlmZmZmZmZddlj Z Gddde Z Gddde Z dS))max_byte zero_byte)bbyte_ordbyte_chrlongNc@s eZdZdS) BERExceptionN)__name__ __module__ __qualname__r r 2/tmp/pip-install-wfra5znf/paramiko/paramiko/ber.pyrsrc@sneZdZdZefddZddZddZdd Zd d Z d d Z e ddZ ddZ ddZe ddZdS)BERz7 Robey's tiny little attempt at a BER decoder. cCst||_d|_dS)Nr)rcontentidx)selfrr r r __init__!s z BER.__init__cCs|jS)N)r)rr r r asbytes%sz BER.asbytescCs|jS)N)r)rr r r __str__(sz BER.__str__cCsdt|jdS)NzBER('z'))reprr)rr r r __repr__+sz BER.__repr__cCs|jS)N) decode_next)rr r r decode.sz BER.decodecCs|jt|jkrdSt|j|j}|jd7_|d@dkrd}xL|jt|jkrt|j|j}|jd7_|d>|d@B}|d@sDPqDW|jt|jkrdSt|j|j}|jd7_|d@r|d@}|j|t|jkrdStj|j|j|j|d}|j|7_|j|t|jkr2dS|j|j|j|}|j|7_|dkrj|j|S|d kr~tj|Sd }t|j|dS) NrT0z.Unknown ber encoding type {:d} (robey is lazy)) rlenrrutilZ inflate_longdecode_sequencerformat)ridenttsizedatamsgr r r r1sB      zBER.decode_nextcCs2g}t|}x |j}|dkr P|j|qW|S)N)rrappend)r'outberxr r r r"_szBER.decode_sequencecCst|jt|7_t|dkrLtjt|}|jtdt||7_n|jtt|7_|j|7_dS)Nrr)rrr r! deflate_long)rr$valZlenstrr r r encode_tlvjs   zBER.encode_tlvcCst|tkr,|r|jdtq|jdtnt|tksDt|tkrX|jdtj|nXt|t krr|jd|n>t|t kst|t kr|jd|j |nt djt|dS)NrrrzUnknown type for encoding: {!r})typeboolr/rrintrr!r-strlisttupleencode_sequencerr#)rr,r r r encodets  z BER.encodecCs&t}x|D]}|j|q W|jS)N)rr8r)r'r+itemr r r r7s zBER.encode_sequenceN)r r r __doc__bytesrrrrrr staticmethodr"r/r8r7r r r r rs.  r)Zparamiko.commonrrZparamiko.py3compatrrrrZ paramiko.utilr! Exceptionrobjectrr r r r s