U vf@s^ddlmZmZmZmZddlmZddlmZddlm Z Gddde Z GdddZ dS) )max_byte zero_bytebyte_ordbyte_chrN)b)int64c@s eZdZdS) BERExceptionN)__name__ __module__ __qualname__r r =/opt/alt/python38/lib/python3.8/site-packages/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 r2sF      zBER.decode_nextcCs.g}t|}|}|dkrq*||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_tlvks   zBER.encode_tlvcCst|tkr,|r|dtq|dtnt|tksDt|tkrX|dt|nXt|t krr|d|n>t|t kst|t kr|d| |nt dt|dS)Nrr!r zUnknown type for encoding: {!r})typeboolr1rrintrr#r/strlisttupleencode_sequencerr%)rr.r r r encodeus   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.commonrrrrZ paramiko.utilr#rZ paramiko.sftpr Exceptionrrr r r r s