c]]l ddlZddlmZddlmZddlmZddlmZddlm Z m Z m Z m Z m Z mZddlmZddlmZdd lmZdd lmZd gZej*eej. ZGd deZGddeZGddeZGddeZGddeZGddeZGddeZ GddeZ!GddeZ"Gdd eZ#Gd!d"eZ$Gd#d$eZ%Gd%d&eZ&iejNjPeejRjPeejTjPeejVjPeejXjPeejZjPe ej\jPe!ej^jPeej`jPe"ejbjPe$ejdjPe$ejfjPe%ejhjPeejjjPeejljPeejnjPeejpjPeejrjPeejtjPeejvjPeejxjPeejzjPeej|jPeej~jPeejjPeejjPei ZBiejRjeejTjeejVjeejXjeejZje ej\je!ej^jeej`je"ejje#ejdje$ejje#ejbje$ejfje%ejje&ejhjeejjjeejljeejnjeejpjeejrjeejtjeejvjeejxjeejzjeej|jeej~jeejjeejjei ZGGd'd(eZHeHeBeGZIy))N)debug)error)eoo)to_bytes)int2octoct2int ints2octsnullstr2octs isOctetsType)char)tag)univ)usefulencode)flagsc>eZdZdZdZeeZdZdZdZ ddZ y) AbstractItemEncoderT)rrc|\}}}||z}|r|tjz}|dkr||zfS|dzf}|dz}|rd|dzzf|z}|dz}|r|dzf|zS)N)rtagFormatConstructed)self singleTag isConstructedtagClass tagFormattagId encodedTag substrates :/usr/lib/python3/dist-packages/pyasn1/codec/ber/encoder.py encodeTagzAbstractItemEncoder.encodeTag!s%.")U )  #22 2J 2:%& & I aKE!UT\24y@ ! %')3 3c|s |jry|dkr|fSd}|r|dzf|z}|dz}|rt|}|dkDrtjd|zd|zf|zS)N)rr~zLength octets overflow (%d))supportIndefLenModelenr PyAsn1Error)rlengthdefModer" substrateLens r# encodeLengthz AbstractItemEncoder.encodeLength5s433 D=7NI#d],y8 1 y>Lc!''(E (TUU<')I5 5r%c ,tjd)NzNot implemented)rr-rvalueasn1Spec encodeFunoptionss r# encodeValuezAbstractItemEncoder.encodeValueIs 122r%Nc <| |j}n |j}|s|j|||fi|\}}}|S|jdd} t}t |j D]\\} } | } | sk |j|||fi|\}}}trtd|xrdxsdd |d ||s|r|jd d r|cS|sd} tr td |j| }tr8td|xrdxsdd| d tjt|||jt!|| z }tr6tdt!|dtjt|r#t||z}| r4||j"z }E||z}| rN||j$z }_s t|}|S#t j$r3tj} t jd|d| dwxYw)Nr/TzError encoding z: zencoded z constructed zvalue z into ifNotEmptyFz;overridden encoding mode into definitive for primitive typeztag z octets (tag + payload) into )tagSetr8getr enumerate superTagsrr-sysexc_infoLOGr$rhexdumpr r1r,eooOctetsSubstrateeooIntegerSubstrate)rr4r5r6r7r=r"risOctetsr/idxrdefModeOverrideexcheaders r#rzAbstractItemEncoder.encodeLs=  \\F__F1A1A1Ax2.52 .I}h ++i. '(8(895 :NC%OC9I9I9Ix:6=:6I}h%8.>B>y!]w{{?AB d''IH HF NEMM)F2C$DFG%f- 9 &!8!88I#Y. &!9!99Ik5 :n!),I_((C,,.C++38#a&ACCCs 2GAH)NN) __name__ __module__ __qualname__r+rFr rEr$r1r8rr'r%r#rrs1!"#674(6(3Lr%rceZdZdZy)EndOfOctetsEncoderc tddfSNFTr r3s r#r8zEndOfOctetsEncoder.encodeValueUD  r%NrLrMrNr8r'r%r#rPrPs!r%rPceZdZdZdZy)BooleanEncoderFc |xrdxsdddfS)N)r:rFr'r3s r#r8zBooleanEncoder.encodeValues~%ue33r%NrLrMrNr+r8r'r%r#rWrWs 4r%rWceZdZdZdZdZy)IntegerEncoderFc |dk(r4tr td|jxrdxsdz|jryytt|dd dfS) Nrz#encoding %spayload for zero INTEGERzno r;)r'FF)rYFFT)signedF)rCsupportCompactZerorintr3s r#r8zIntegerEncoder.encodeValuesX A:9++5; &&')E 40%==r%N)rLrMrNr+r_r8r'r%r#r\r\s >r%r\ceZdZdZy)BitStringEncoderc X||j|}t|}|dzr |d|dzz z}n|}|jdd}|rt||dzkr0|j}t t|dz|z |zddfSt rt d|z|j j} | rtj| | } ntj} |j| }d} t}| |kr*| } t| |dzz|} |||| | |fi|z }| |kr*|ddfS)Nr) maxChunkSizerFT#encoding into up to %s-octet chunksr=) cloner,r>asOctetsrrCr=baseTagrTagSetr min) rr4r5r6r7 valueLength alignedValuerdr"rir=stopstarts r#r8zBitStringEncoder.encodeValuesN  NN5)E%j ? Qq%89L L{{>15 s<0L14DD$--/I3y>A- ;r,rCr=rirrjr ) rr4r5r6r7r"rdrir=poschunks r#r8zOctetStringEncoder.encodeValues`  (Ie$ u-668II{{>15 s9~=eT) )  5 D E  ll**GGW5{{&{1He$oo--GGW5~~V~4H #cL01E 5(>g> >I < C $$$r%NrUr'r%r#rqrqs8%r%rqceZdZdZdZy) NullEncoderFc tddfSrRrSr3s r#r8zNullEncoder.encodeValue$rTr%NrZr'r%r#rvrv!s !r%rvceZdZdZdZy)ObjectIdentifierEncoderFc ||j|}|j} |d}|d}d|cxkrdkrNnnK|dk(r |dzf|ddz}nc|dk(r |f|ddz}nT|dk(r |dzf|ddz}nBtjd||dk(r |dzf|ddz}ntjd|d }|D]]} d| cxkrd kr nn|| fz }| d kDr'| d zf} | d z} | rd | d zzf| z} | d z} | r|| z }Dtjd | d||ddfS#t$rtjd|wxYw)Nrr:z Short OID '(Pz Impossible first/second arcs at r'rrrzNegative OID arc z at F)rgasTuple IndexErrorrr-) rr4r5r6r7oidfirstsecondoctetssubOidress r#r8z#ObjectIdentifierEncoder.encodeValue+s  NN5)Emmo ?FEVF  " z{ns12w.!i#ab')!{ns12w.''PU(WXX aZB;.3qr7*C##E$ST T WFF!c!6)##}&1 6D=13c9CqLF # ''vu(UVV% W(ue##U ?##e$=> > ?s D"D=NrZr'r%r#ryry(s 5$r%ryc0eZdZdZdZedZdZdZy) RealEncoderrr}c<d\}}|dkrd}|dkrd}||z}|dk(r)|dt|dz|zzz}t|dz|z}n-|dk(r(|dt|dz|zzz}t|dz|z} t||k7r ||z}|d z} |t|||fS) N)r:r:rr)r}r:)absr`)mencbaseemsess r#_dropFloatingPointzRealEncoder._dropFloatingPointgsB q5B q5B R a< s1vzB' 'AA! b A ] s1vzB' 'AA! b A1v{W Q 3q67A%%r%c Z|\}}}gd}|j|vr|j||j|S|j|vr|j||j|S|||g}|||g}d}d} td}tdD]} |j|| || || \}|| <|| <|| <t || t |ks$t || t |k(sb|| |ksk|| }t || }|| } t rt d| d|d|d |||| |fS) N)r}r)rr:r}infrz(automatically chosen REAL encoding base z, sign z , mantissa z , exponent ) binEncBaserfloatrangerr`rC) rr4rbrencBasemantissaexponentsignris r#_chooseEncBasezRealEncoder._chooseEncBases\1a   w &**1e.>.>B B __ '**1dooqA Aq!9q!9 %Lq %A!33HQKXVW[Y T a[ QZ a[8A;#a&(S!-=Q-GHUVKZ[OQK $!!* %  !($16 7Q""r%c ||j|}|jry|jry|\}}}|s tddfS|dk(r0tr t dt d||dk(xrd xsd |fzddfS|d k(rd }|j |\} }} }| dkr|d z}| d k(r|dzdk(rZ|dz}|dz }|dzdk(rnF| dk(r!|dzdk(r|dz}|dz }|dzdk(r|dz}n |dzdk(r|dz}|dz }|dzdk(r|dz}d} |dzdk(r|dz}| dz } |dzdk(r| dkDrtjd|| d zz}t} |dk(s|dk(rt|dz} nk|dvrt|dz| z} |dz}|dvr|dk(r!| rt| dd zrtd| z} |dk(r!| rt| dd zstd| z} t| } | dkDrtjd| dk(rn,| d k(r|dz}n!| dk(r|d z}n|dz}t| dz| z} t}|rt|dz|z}|dz}|rt|| z|z}|ddfStjd|z)N))@FF))AFFFT z!encoding REAL into character formz%dE%s%dr+r;r}rrr:r)rrrr zScale factor overflowrr()rrzReal exponent overflowzProhibited Real base %s) rg isPlusInf isMinusInfr rCr rrr-rrr,)rr4r5r6r7rrrforrsfeonpor"s r#r8zRealEncoder.encodeValues%  NN5)E ??(   (1a$ $ 778MQQ30D"a,HHI5RVV V !VB $ 3 3E : B7AAvd !|#gl!GAFA#glA#gl!GAFA#gld #gl!GAFA#gld Bc'Q,aac'Q,Av''(?@@ "'MBBAvbQX&w& T*R/B!GAw&6bWRU^d%: bB7r72a5>D+@ +BBA4x''(@AAAvaaaaaQX&+BQX&+a  b(2-IeT) )##$=$AB Br%N) rLrMrNr+r staticmethodrrr8r'r%r#rrcs,J&&6#BcCr%rceZdZdZdZy)SequenceEncoderFc (t}|jd|j}trtd|xrdxsdz||j}|r||j }t |jD]Z\} } |r|| } | jr!| jstrtd| ;| jr$| | jk(rtrtd| k|r|j| j|r jr| j} | jtj jtj"jfvr$||| |fit%|| j z }|| |fi|} | j'| r|| z })||| | fi|z }ts>td | N||| |fi|z }]nt |j j(D]c\} } || j*} | jr#| j*|vrtrtd| F| jr$| | jk(rtrtd| v|r|j| j| j}| jr|jtj jtj"jfvr$||| |fit%||j z }|| |fi|} |j'| r|| z }2||| |fi|z }tsGtd |W||| |fi|z }f|d d fS#t,$r&t/j0d | j*d |wxYw) NomitEmptyOptionalsz$%sencoding empty OPTIONAL componentsznot r;z not encoding OPTIONAL component znot encoding DEFAULT component )r<)wrapTypewrapped with wrap type zComponent name "z" not found in T)r r>rrCisInconsistent componentTyper?values isOptionalisValue isDefaulted asn1ObjectupdateopenTypetypeIdrSetOf SequenceOfdictisSameTypeWith namedTypesnameKeyErrorrr-)rr4r5r6r7r"r inconsistencyrrH component namedTyperrt componentSpecs r#r8zSequenceEncoder.encodeValues $[[ $"9"9;  6&167R9 :  !00M##,,J"+ELLN";* KY *3I ++I4E4E ST  ,,i>R>R1Ry RS ))2F2FG)"4"4(33H JJ--t/E/E+GG"Y )8&R"&w9O9O"P&RR !*)X I I#229=%.I&5()Ng)NNI" #8$M N9h!J'!JJIU* K\#,H,B,B,M,M"N/ PY0 %inn 5I ''INN%,GIOP((Y):N:N-N9NO%NNi.B.BNC ) 4 4 %%$++ JJ--t/E/E0GG"Y )=&W"&w9T9T"U&WW !*)] Ng N(77 B%.I&5-)S7)SSI" #=$R S9m!Ow!OOI_/ Pb$$$Y 0++!-/000s >M""/NN)rLrMrNrr8r'r%r#rr sr%r%rceZdZdZdZy)SequenceOfEncoderc (||j}|r||j}g}|jdd}t|D]Q\}} || |fi|} |/|j | s|| |fi|} t rt d||j | S|S)Nrr)rrpopr?rrCappend) rr4r5r6r7rchunksrrHrrts r#_encodeComponentsz#SequenceOfEncoder._encodeComponentss  !00M## --H;;z40'. !NCi=W=E$ // :!%=W=xAB MM%  ! r%c \|j|||fi|}tj|ddfS)NT)rr join)rr4r5r6r7rs r#r8zSequenceOfEncoder.encodeValues;''' 8Y3*13yy $,,r%N)rLrMrNrr8r'r%r#rrs :-r%rceZdZdZy) ChoiceEncoderc R||j}n|jjDcgc]}|j|vr |j}}t |dk7r+t j t |xrdxsdd||d}||}||}|||fi|ddfScc}w)Nr:z Multiple zNone z components for Choice at rT) getComponentrrrr,rr-) rr4r5r6r7rrnamesrs r#r8zChoiceEncoder.encodeValues  **,I5=5K5K5V5V1 !%/^^1E15zQ''CPUJLf[fLqjqLqsx(yzz8Dd I~HH88$DD1s!B$NrUr'r%r#rrsEr%rceZdZdZy) AnyEncoderc ||j}n*t|s|j|j}||jdd dfS)Nr/T)rhr rgr>r3s r#r8zAnyEncoder.encodeValuesN  NN$Ee$NN5)224E'++i66<prettyPrintTypefixedDefLengthModerfixedChunkSizer __class__rLrr=rrjrirrr,rrD) rr4r5r7rconcreteEncoderr= baseTagSetr"s r#__call__zEncoder.__call__ss K!  07 It0L,L,UQU,[Y[,[]d]h]hiwyz]{~FJN~N~jSXShShSj~HnvnFnFnH~HJOP Q  " " . NN4#:#:N ;    * NN(;(;N < o"nnV4O?C\C\CeCegmno(+O**5(DLGL  RacfgpcqsxtAtABKtLM NY K##BG%JK K K* o!FNNFNNCJ T"&-- "; T''E6(RSS T/B[B[BdBdflmn! os6E":F"#FAH?G'&H?'&H  .H?>H?r)rLrMrNrrrrr'r%r#rr sN(*!3r%r)JrApyasn1rrpyasn1.codec.berrpyasn1.compat.integerrpyasn1.compat.octetsrrr r r r pyasn1.typer rrr__all__registerLoggeerL DEBUG_ENCODERrCobjectrrPrWr\rbrqrvryrrrrr endOfOctetsr=BooleanInteger BitString OctetStringNullObjectIdentifier EnumeratedRealrrChoice UTF8String NumericStringPrintableString TeletexStringVideotexString IA5String GraphicString VisibleString GeneralStringUniversalString BMPStringObjectDescriptorGeneralizedTimeUTCTimerrSetSequenceAnyrrrr'r%r#rs=  *:: *e85+>+>?&D!,! 4(4>(>(&%*&%R:%,:%z!%!8$18$vdC%dCNw%)w%t"-+"-JE'E$=#= OO.0 LL)  LL)  NN+-    /1    IIkm     "9";  OON,  IIkm  OO-/  JJ(*  KK   OO.0   13! " !3!5# $ 13% &  2 4' ( NN-/131313!3!5NN-/ ""$6$8 !!#5#7 NN-/; B LL) LL)  NN+-  /1   IIkm     "9";  OON,  IIkm  HHOO_&  JJ(*  MM/+  OO-/  KK   HHOOZ\ " OO.0# $ 13% & !3!5' ( 13 2 4NN-/131313!3!5NN-/ ""$6$8 !!#5#7 NN-/? F<f<b  !r%