a b@sXddlmZmZddlmZmZmZmZddlm Z Gddde Z Gddde Z dS))max_byte zero_byte)bbyte_ordbyte_chrlongNc@s eZdZdS) BERExceptionN)__name__ __module__ __qualname__r r 3/tmp/pip-target-98j97qn4/lib/python/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|jSN)rrr r r asbytes%sz BER.asbytescCs|Sr)rrr r r __str__(sz BER.__str__cCsdt|jdS)NzBER('z'))reprrrr r r __repr__+sz BER.__repr__cCs|Sr) decode_nextrr r r decode.sz BER.decodecCs|jt|jkrdSt|j|j}|jd7_|d@dkrd}|jt|jkrt|j|j}|jd7_|d>|d@B}|d@sBqqB|jt|jkrdSt|j|j}|jd7_|d@r|d@}|j|t|jkrdSt|j|j|j|d}|j|7_|j|t|jkr.dS|j|j|j|}|j|7_|dkrf||S|d krzt|Sd }t||dS) NrT0z.Unknown ber encoding type {:d} (robey is lazy)) rlenrrutilZ inflate_longdecode_sequencerformat)ridenttsizedatamsgr r r r1sD      zBER.decode_nextcCs.g}t|}|}|durq*||q |Sr)rrappend)r)outberxr r r r$_s zBER.decode_sequencecCst|jt|7_t|dkrLtt|}|jtdt||7_n|jtt|7_|j|7_dS)Nrr)rrr"r# deflate_long)rr&valZlenstrr r r encode_tlvjs   zBER.encode_tlvcCst|tur,|r|dtq|dtnt|tusDt|turX|dt|nXt|t urr|d|n>t|t ust|t ur|d| |nt dt|dS)Nrr!r zUnknown type for encoding: {!r})typeboolr1rrintrr#r/strlisttupleencode_sequencerr%)rr.r r r encodets   z BER.encodecCs"t}|D]}||q |Sr)rr:r)r)r-itemr r r r9s zBER.encode_sequenceN)r r r __doc__bytesrrrrrr staticmethodr$r1r:r9r r r r rs.  r)Zparamiko.commonrrZparamiko.py3compatrrrrZ paramiko.utilr# Exceptionrobjectrr r r r s