ghX5 ddlZddlZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl m Z ddl m Z dd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZgdZejeejZejZejZGdde Z!Gdde!Z"Gdde"Z#e#Z$Gdde"Z%Gdde%Z&Gdde"Z'Gdd e"Z(Gd!d"e"Z)Gd#d$e"Z*Gd%d&e"Z+Gd'd(e"Z,Gd)d*e!Z-Gd+d,e-Z.Gd-d.e.Z/Gd/d0e/Z0Gd1d2e/Z1Gd3d4e.Z2Gd5d6e2Z3Gd7d8e2Z4Gd9d:e.Z5Gd;de(Z7Gd?d@e(Z8GdAdBe(Z9GdCdDe(Z:GdEdFe(Z;GdGdHe(Z<GdIdJe(Z=GdKdLe(Z>GdMdNe(Z?GdOdPe(Z@GdQdRe(ZAGdSdTe(ZBGdUdVe(ZCGdWdXe(ZDiejEjFe%ejGjFe&ejHjFe'ejIjFe(ejJjFe)ejKjFe*ejLjFe+ejMjFe%ejNjFe,ejOjFe/ejPjFe2ejQjFe5ejRjFe7ejSjFe8ejTjFe9ejUjFe:ejVjFe;ejWjFe<ejXjFe=ejYjFe>ejZjFe?ej[jFe@ej\jFeAej]jFeBej^jFeCej_jFeDi Z`ejPjae3ejbjae4ejOjae0ejcjae1ejQjae5ejdjae6iZee`fD]%ZgegjhegjhjijaZaea eaeevregeeea<&dYejdZD\ ZkZlZmZnZoZpZqZrZsZteud[ZvGd\d]e ZwGd^d_e ZxGd`dae ZyeyZzdbe{fdcZ|dS)dN)debug)error)eoo)asSeekableStream) isEndOfStream)peekIntoStreamreadFromStream)_MISSING) PyAsn1Error)base)char)tag)tagmap)univ)useful)StreamingDecoderDecoderdecode)flagsc@eZdZdZ ddZ ddZedZdS)AbstractPayloadDecoderNc 0tjd|)ztDecode value with fixed byte length. The decoder is allowed to consume as many bytes as necessary. z&SingleItemDecoder not implemented for rr self substrateasn1SpectagSetlengthstate decodeFun substrateFunoptionss x/builddir/build/BUILD/imunify360-venv-2.6.0/opt/imunify360/venv/lib/python3.11/site-packages/pyasn1/codec/ber/decoder.py valueDecoderz#AbstractPayloadDecoder.valueDecoder(sff VWWWc 0tjd|)zsDecode value with undefined length. The decoder is allowed to consume as many bytes as necessary. z3Indefinite length mode decoder not implemented for rrs r%indefLenValueDecoderz+AbstractPayloadDecoder.indefLenValueDecoder2s[a[a cdddr'cd|vr||d<|S)N asn1Object)r+r$s r%_passAsn1Objectz&AbstractPayloadDecoder._passAsn1Object<s w & &$.GL !r'NNNNN)__name__ __module__ __qualname__protoComponentr&r) staticmethodr-r,r'r%rr%suN6:26XXXX>B:>eeee\r'rc*eZdZedZdZdS)AbstractSimplePayloadDecoderc#:Kt|||D]}|VdSNr )r+rr r$chunks r%substrateCollectorz/AbstractSimplePayloadDecoder.substrateCollectorEs6#Ivw??  EKKKK  r'c |dr|S||j||S|tur|S||S)Nnativer)getr2clonenoValuerrrvaluer$s r%_createComponentz-AbstractSimplePayloadDecoder._createComponentJs_ ;;x  )L  &,,U6,BB B g  O>>%(( (r'N)r/r0r1r3r9rBr,r'r%r5r5Ds<\)))))r'r5cFeZdZejdZ ddZ ddZdS)RawPayloadDecoderNc+K|r'|j||dfi|} || |||D]} | VdS|||||fi|D]} | VdS)NrE)rB rrrrr r!r"r#r$r+r8rAs r%r&zRawPayloadDecoder.valueDecoderXs  ..xOOwOOJ%j)VWMM   FYy(FFNNgNN  EKKKK  r'c+K|r'|j||dfi|} || |||D]} | VdS |||||fddi|D]} | tjurdS| V')NrETallowEoo)rBr endOfOctetsrGs r%r)z&RawPayloadDecoder.indefLenValueDecodergs  ..xOOwOOJ%j)VWMM   F "x..!.%,..  CO++FF  r'r.r/r0r1rAnyr2r&r)r,r'r%rDrDUs\TXb\\N6:26     >B:>r'rDc:eZdZejdZ ddZdS)IntegerPayloadDecoderrNc+DK|djtjkrtjdt |||D]} t | tr| V| r+t t| dd} nd} |j ||| fi|VdS)NrSimple tag format expectedbigT)signed) tagFormatrtagFormatSimplerr r isinstanceSubstrateUnderrunErrorint from_bytesbytesrB) rrrrr r!r"r#r$r8rAs r%r&z"IntegerPayloadDecoder.valueDecoders !9 #"5 5 5#$@AA A#Ivw??  E%!788   NN5<<tNDDEEE#d#HfeGGwGGGGGGGr'r.)r/r0r1rIntegerr2r&r,r'r%rNrNsE!T\!__N6:26HHHHHHr'rNc4eZdZejdZdZdS)BooleanPayloadDecoderrc 4tj||||rdpdfi|S)Nr)rNrBr@s r%rBz&BooleanPayloadDecoder._createComponents;$5 (FEKa$41AA8?AA Ar'N)r/r0r1rBooleanr2rBr,r'r%r\r\s7!T\!__NAAAAAr'r\cJeZdZejdZdZ ddZ ddZdS)BitStringPayloadDecoderr,TNc+(K|r,|j||tfi|} || |||D]} | VdS|stjdt |D]} t | t r| V| rtjd|djtj krt|d|D]} t | t r| Vt| } | dkrtjd| zt||dz |D]} t | t r| V|j | d| } |j||| fi|VdS|js!tjd|jjzt"rt#d |j}|j d d } |}||z |kr|||j fd |i|D]}t |t r|V|d} | dkrtjd| z|j |ddd| | } ||z |k|j||| fi|VdS)NzEmpty BIT STRING substraterr^Trailing bits overflow %sT)internalFormatpadding*Constructed encoding form prohibited at %s$assembling constructed serializationr'rer#reprependrf)rBr?rr rrUrVrSrrTr ordr2fromOctetStringsupportConstructedForm __class__r/LOGr9tell)rrrrr r!r"r#r$r+r8 trailingBitsrA bitStringcurrent_position components r%r&z$BitStringPayloadDecoder.valueDecoders  ..xTTGTTJ%j)VWMM   F B#$@AA A"9--  E%!788   B#$@AA A !9 #"5 5 5 .y!W E E ' ' l,BCC'&&&&|,,La'/,>( 6A:wGG  e%;<< KKK'77dL8BBE($'&%KK7KK K K K F* G#%,.2n.E%FGG G  8 6 7 7 7. '77D7QQ $>>++nn!11F::&Yt2AM $ $ i)?@@$#OOO$Q+;;!"" d!<<Inn!11F::$$d#HfiKK7KKKKKKKr'c+K|r,|j||tfi|} || |||D]} | VdS|j}|jdd} |||jf|dd|D]+} | t jurnt| tr| V,| t jurnL| d} | dkrtj d| z|j| ddd| | } |j||| fi|VdS) Nr'Trir#rIrrcrdr^rj) rBr?r9r2rmrrJrUrVrr )rrrrr r!r"r#r$r+r8rsrurrs r%r)z,BitStringPayloadDecoder.indefLenValueDecoders  ..xTTGTTJ%j)VWMM   F. '77D7QQ  &Yt2.AM!..%,.. $ $ //Ei)?@@$#OOOCO++$Q+;;!"" d!<<I+ 4$d#HfiKK7KKKKKKKr'r.) r/r0r1r BitStringr2rnr&r)r,r'r%rarass#T^B''N!6:26NLNLNLNLb>B:>,L,L,L,L,L,Lr'racJeZdZejdZdZ ddZ ddZdS)OctetStringPayloadDecoderrETNc+K|r,|j||tfi|} || |||D]} | VdS|djtjkrAt |||D]} t | tr| V|j||| fi|VdS|js!tj d|j j ztrtd|j}d} |} || z |krM|||jfd|i|D]} t | tr| V| | z } || z |kM|j||| fi|VdS)Nrrgrhr'r#)rBr?rSrrTr rUrVrnrr ror/rpr9rqr2)rrrrr r!r"r#r$r+r8headeroriginal_positionrus r%r&z&OctetStringPayloadDecoder.valueDecoder(s  ..xTTGTTJ%j)VWMM   F !9 #"5 5 5' 67CC  e%;<< KKK'$'&%KK7KK K K K F* l#$PSWSaSj$jkk k  8 6 7 7 7. %NN,,nn!22V;;&Yt2AM $ $ i)?@@$#OOO i Fnn!22V;;$d#HffHHHHHHHHHr'c+VK|r5||jur,|j||tfi|} || |||D]} | VdS|j}d} |||jf|dd|D]+} t | t r| V| t jurn,| t jurn| | z } S|j||| fi|VdS)Nr'Trw)r9rBr?r2rUrVrrJ) rrrrr r!r"r#r$r+r8r|rus r%r)z.OctetStringPayloadDecoder.indefLenValueDecoderUs<  L0GGG..xTTGTTJ%j)VWMM   F.  &Yt2.AM!..%,..   i)?@@$#OOO//E0CO++ i F "$d#HffHHHHHHHHHr'r.) r/r0r1r OctetStringr2rnr&r)r,r'r%rzrz$sp%T%b))N!6:26+I+I+I+I\>B:>"I"I"I"I"I"Ir'rzc:eZdZejdZ ddZdS)NullPayloadDecoderrENc+K|djtjkrtjdt |||D]} t | tr| V|j||dfi|} | rtjd|z| VdS)NrrPrEz&Unexpected %d-octet substrate for Null) rSrrTrr r rUrVrB) rrrrr r!r"r#r$r8rus r%r&zNullPayloadDecoder.valueDecoder}s !9 #"5 5 5#$@AA A#Ivw??  E%!788  )D)(FBJJ'JJ  W#$Lv$UVV Vr'r.)r/r0r1rNullr2r&r,r'r%rrzs?TYr]]N6:26r'rc:eZdZejdZ ddZdS)ObjectIdentifierPayloadDecoderr,Nc+K|djtjkrtjdt |||D]} t | tr| V| stjdd} d} t| } | | kr| | } | dz } | dkr| | fz } nr| dkrR| }d} |dkr;| dz|dzz} | | krtjd | | | }| dz } |dk;| | dz|zfz } n| dkrtjd | | kd| dcxkrd kr nnd | z} nqd | dcxkrdkrnnd| dd z f| ddz} nB| ddkrd| ddz f| ddz} ntjd| dz|j ||| fi|VdS)NrrPEmpty substrater,r^rc!Short substrate for sub-OID past z"Invalid octet 0x80 in OID encoding')r(OPzMalformed first OID octet: %s rSrrTrr r rUrVlenrB)rrrrr r!r"r#r$r8oidindex substrateLensubId nextSubIds r%r&z+ObjectIdentifierPayloadDecoder.valueDecodersx !9 #"5 5 5#$@AA A#Ivw??  E%!788   7#$566 65zz l""%LE QJEs{{x! 3&&"aZI,<=E ,,#::EHSJ!&e IQJE 3&&!y022# '(LMMM/l""4 A    "     *CC 3q6    R     c!frk"SW,CC Vr\\c!frk"SW,CC#$CeAh$NOO O#d#HfcEEWEEEEEEEr'r.)r/r0r1rObjectIdentifierr2r&r,r'r%rrsH*T*2..N6:264F4F4F4F4F4Fr'rc:eZdZejdZ ddZdS)RelativeOIDPayloadDecoderr,Nc+hK|djtjkrtjdt |||D]} t | tr| V| stjdd} d} t| } | | kr| | } | dz } | dkr| | fz } nr| dkrR| }d} |dkr;| dz|dzz} | | krtjd | | | }| dz } |dk;| | dz|zfz } n| dkrtjd | | k|j ||| fi|VdS) NrrPrr,r^rrcrrz+Invalid octet 0x80 in RELATIVE-OID encodingr)rrrrr r!r"r#r$r8reloidrrrrs r%r&z&RelativeOIDPayloadDecoder.valueDecoders !9 #"5 5 5#$@AA A#Ivw??  E%!788   7#$566 65zz l""%LE QJEs{{5("! 3&&"aZI,<=E ,,#::EKVM!&e IQJE 3&&EQJ)355# '(UVVV/l""2$d#HffHHHHHHHHHr'r.)r/r0r1r RelativeOIDr2r&r,r'r%rrsH%T%b))N6:26*I*I*I*I*I*Ir'rc8eZdZejZ ddZdS)RealPayloadDecoderNc+nK|djtjkrtjdt |||D]} t | tr| V| s|j||dfi|VdS| d} | dd} | dzr| stjdtrtd| dzdz} | d kr| d} | dd} | d| | | d} } | r| stjd | ddzrd pd} | r| d z} | | dz} | dd} | | d z dz}|d krtjd|dkr| dz} n |d kr| d z} d}| r|d z}|| dz}| dd} | | dzr| }| d z dz}|d |zz}|d | f}n| dzr trtd| dzrdpd}n| dzdkr| stjdtrtd | dzdkrt| ddf}nI| dzd krt| }n0| dzdkrt| }ntjd| zn9#t$rtjdwxYwtjd| z|j|||fi|VdS)NrrPgr^rzIncomplete floating-point valuezdecoding binary encoded REALzReal exponent screwedrzIllegal Real base@zdecoding infinite REALz-infinfzdecoding character encoded REAL zUnknown NR (tag %s)zBad character Real syntaxzUnknown encoding (tag %s)) rSrrTrr r rUrVrBrprWfloat ValueError)rrrrr r!r"r#r$r8foneoebpsfrAs r%r&zRealPayloadDecoder.valueDecoders !9 #"5 5 5#$@AA A#Ivw??  E%!788   '$'&#IIII I I I F 1Xabb  9U  K'(IJJJ 42333daAAvv!Habb bqb 59B AU A'(?@@@1 #(qA aRU V  a$A1uu'(;<<<AvvQaQA "aU1X abb  " Dy Bq4B bLA1IEE $Y$  .,---I(&1EEE $Y!^^ K'(IJJJ 75666 8s?? ZZQ/EE#X__!%LLEE#X__!%LLEE 6-2   2/  .+b0 $d#HfeGGwGGGGGGGs A%I**J r.)r/r0r1rRealr2r&r,r'r%rrsITY[[N6:26hHhHhHhHhHhHr'rceZdZdZdS)!AbstractConstructedPayloadDecoderN)r/r0r1r2r,r'r%rrisNNNr'rcFeZdZdZdZdZdZ ddZ ddZ ddZ dS) ConstructedPayloadDecoderBaseNctr7NotImplementedError)rr+idxs r%_getComponentTagMapz1ConstructedPayloadDecoderBase._getComponentTagMapq!!r'ctr7r)rr+rrs r%_getComponentPositionByTypez9ConstructedPayloadDecoderBase._getComponentPositionByTypetrr'c+Kd}g}t}|} |dks|| |zkr||fi|D]} t| tr| V|dkr| tjurn|| || jt|dkr|j } n|j } | tj| jjg|jR}|dk|| |zkt"rt#d|zt%|D]\} } || | ddd |VdS)Nrr^r<z@guessed %r container type (pass `asn1Spec` to guide the decoder)FverifyConstraints matchTagsmatchConstraints)setrqrUrVrrJappendaddrrprotoRecordComponentprotoSequenceComponentr>rTagSetbaseTag superTagsrp enumeratesetComponentByPosition) rrrr"r r$r+ componentscomponentTypesr}rur2rs r%_decodeComponentsSchemalessz9ConstructedPayloadDecoderBase._decodeComponentsSchemalessws  %NN,,llinn..1BV1KKK&Yy<""Q&&!%!:"&!<'--z."7"?S&BRSSS.J+llinn..1BV1KKK6  ) '( ) ) )( 33  NC  - -Y"'% .     r'c +@K|djtjkrtjd|} |r_||} n1|j|j|} n|j|j f} || |||D]} | VdS||j |f|||d|D]} t| tr| V|| |zkrgtr`t||D]} t| tr| Vtdt| t!j| fz| VdS|} | || |}|jt*jjt*jjfvr6|j} |jt*jjk}| o| j }tr"td| rdpd d |rd pd d |d t5}d}|| z |krO| sd}n~|r| j}nt |r| |j}n=| |js | |jr| |}n | |j}n%#t@$rtjd|wxYw|||fi|D]}t|tr|V|sT| rR|r| !|j"}n5| |js | |jr| #|j"|}| $||ddd|%||dz }|| z |kOtrtd|z| r| j&'|s!tjd| j(j)z| j*r|+di}tr=td|,D]\}}t|d||s|+ddrgt[| j.D]Q\}}|j/s|jr| 0|j1s0| 2|j/j3} ||}n#th$rtrrtd| j(j)d|j3d| j(j)d|j/j3d |j/,D]\}}t|d| |j/|}n+#th$rtrtd|YYwxYwYnwxYwtrtd|d|| 0|}|jt*j5jt*j6jfvrjt[|D]X\}}to||8}||fd|i|D]}t|tr|V|||<Yto| 0|8}||fd|i|D]}t|tr|V| $||Sn| j9}|r"tjd | j(j)d!n|j}trtd"|zd}|| z |kr`|||fi|D]}t|tr|V| $||ddd|dz }|| z |k`| VdS)#NrConstructed tag format expectedr<rr"r )contextz)Unused trailing %d octets encountered: %s decoding non-rEdeterministic SET type  chosen by type ID Excessive components decoded at Frr^seen component indices %s,ASN.1 object %s has uninitialized components openTypesuser-specified open types map: -> decodeOpenTypes%default open types map of component "." governed by component "":/failed to resolve open type by governing value resolved open type  by governing value r ASN.1 object  is inconsistent+decoding type %r chosen by given `asn1Spec`):rSrtagFormatConstructedrr rqr>r2rrrrUrVrpr rrhexdumpclearr-typeIdrSequenceSet componentTypehasOptionalOrDefaultr tagMapUniquer+ isOptional isDefaultedgetTagMapNearPosition IndexErrorgetPositionByTypeeffectiveTagSetgetPositionNearTyperrrequiredComponentsissubsetror/ hasOpenTypesr=itemsr namedTypesopenTypegetComponentByPositionisValuegetComponentByNamenameKeyErrorSetOf SequenceOfrasOctetsisInconsistent)rrrrr r!r"r#r$r}r+r8trailingr isSetTypeisDeterministic seenIndicesrrrurkv namedTypegoverningValuercontainerValueposcontainerElementstream inconsistencys r%r&z*ConstructedPayloadDecoderBase.valueDecoders  !9 #": : :#$EFF F%NN,,  #%^^-- $0!066f6EE "68SS %j)VWMM   F  >d>.&, !..%,.. % % j*@AA%$$$$~~"3f"<<<A$29g$N$N$N++%h0FGG+"*NNNCH u}X'>'>G@@AAA    F^^%% &&z7;; ?t}3TX_E E E!/J 48?:I"+mSJ4S0SO ''2F8b88):M:SQS:S:SHH%%KC..""%66??!$(MM$.$;MM *G,6sO,FMM'_7G:c?;VG,6,L,LS,Q,QMM-7sO,FM%#//DLHN "+9m!O!Ow!O!O((I!)-CDD('&]:] ](::9;TUU#C3]z#7R](<>>W Y!4==kJJF+%'1';'DEFFF+KR ' K < G(6>8>8 !D !D$9C)9.>nS>Q>Z>Z>\>\-]-]F5>Yv5d5dPX5d\c5d5d%<%< +5iAW+X+X)<2;OOO:CN3$7$7 !D*:*:[:[\_:`:`:i:i:k:k)l)l1:61`1`H1`X_1`1`!8!8I'1)=S'T'T%8.7 * A A#y Q Q Q Q!+ 9  Y+W (<(EWWWYYYY %2M SAMQRRRC..""%66??!*9m!O!Ow!O!O((I!)-CDD('11&+#e2 q..""%66??sDA J&&"K SBV U('V(#V VVVVc +K|djtjkrtjd|_||} n1|j|j|} n|j|jf} || |||D]} | VdS|C|j |f|||dt|dD]} t| tr| V| VdS|} | || |}|jt jjt jjfvrq| j} | jt jjk} | o| j } t*r"t+d| rdpd d | rd pd d |d t-}d} t/| |krd}n~| r| j}nt | r| |j}n=| |js | |jr| |}n | |j}n%#t:$rtjd| wxYw|||fddi|D]+}t|tr|V|t<jurn,|t<jurn| sT| rR| r| |j!}n5| |js | |jr| "|j!|}| #||ddd|$||dz }gt*rt+d|z| r| j%&|s!tjd| j'j(z| j)r|*di}t*r=t+d|+D]\}}t+|d||s|*ddrtY| j-D]\}}|j.s|jr| /|j0s0| 1|j.j2} ||}n#tf$rt*rrt+d| j'j(d|j2d| j'j(d|j.j2d |j.+D]\}}t+|d| |j.|}n+#tf$rt*rt+d|YYwxYwYnwxYwt*rt+d|d|| /|}|jt j4jt j5jfvrtY|D]w\}}tm||7}||fd |it|dD]+}t|tr|V|t<jurn,|||<xtm| /|7}||fd |it|dD]A}t|tr|V|t<jurn| #||Bn| j8}|r"tjd!| j'j(d"n|j}t*rt+d#|zd} |||fddi|D]+}t|tr|V|t<jurn,|t<jurn | #||ddd|dz }g| VdS)$Nrrr<rTrIrrrErrrrrrIFrr^rrrrrrrrrrrrrrrrr)9rSrrrr r>r2rrrdictrUrVrr-rrrrrrrprrrr+rrrrrrJrrrrrrrror/rr=rrrrrrrrrrrrrr )rrrrr r!r"r#r$r+r8rr r r rrurrrrrrrrrrrrs r%r)z2ConstructedPayloadDecoderBase.indefLenValueDecoders  !9 #": : :#$EFF F  ##%^^-- $0!066f6EE "68SS %j)VWMM   F  >d>C&, !CC%)'D%A%A%ACC % % j*@AA%$$$$    F^^%% &&z7;; ?t}3TX_E E E#1J")TX_>>^ ]!4==kJJF+%'1';'DEFFF*X] ' K < G(6>8>8 !D !D$9C)9.>nS>Q>Z>Z>\>\-]-]F5>Yv6_6_PX6_AEgX\A]A]A]6_6_%2%2 +5iAW+X+X)<2;OOO+4+G+G,1E,H;DN3$7$7 !D *:*:[:[\_:`:`:i:i:k:k)l)l1:62[2[H2[=A'TX=Y=Y=Y2[2[!V!VI'1)=S'T'T%8.7'0CO'C'C(-$.$E$Ec9$U$U$U$U%/$=M$]#/[J,@,I[[[]]]%2M SAMQRRRC !*!="L"L;?"LCJ"L"LI")-CDD(' CO334//11&+#e2 q) ,sDA H"H7Q  BT  ST #TT TT  T )NNNr.) r/r0r1rrrrrr&r)r,r'r%rrms!""""""591111h6:26[[[[|>B:>iiiiiir'rcJeZdZejZejZdS)"SequenceOrSequenceOfPayloadDecoderN)r/r0r1rrrrrr,r'r%rrss.(4=??,T_..r'rc,eZdZejZdS)SequencePayloadDecoderN)r/r0r1rrr2r,r'r%rrxs"T]__NNNr'rc,eZdZejZdS)SequenceOfPayloadDecoderN)r/r0r1rrr2r,r'r%rr|$T_&&NNNr'rcJeZdZejZejZdS)SetOrSetOfPayloadDecoderN)r/r0r1rrrrrr,r'r%r"r"s,#48::'TZ\\r'r"c,eZdZejZdS)SetPayloadDecoderN)r/r0r1rrr2r,r'r%r$r$sTXZZNNNr'r$c,eZdZejZdS)SetOfPayloadDecoderN)r/r0r1rrr2r,r'r%r&r&sTZ\\NNNr'r&cDeZdZejZ ddZ ddZdS)ChoicePayloadDecoderNc+K||j|} n|} |r|| |||D]} | VdS|| |}| j|krFtrt d|d||| jfi|D]} t | tr| VnHtrt d|d||| j|||fi|D]} t | tr| V| j} trt d| d| | | | dddd| VdS) Nr<rz as explicitly tagged CHOICEz as untagged CHOICEdecoded component , effective tag set Frrr innerFlag) r2r>r-rrpcomponentTagMaprUrVrsetComponentByType) rrrrr r!r"r#r$r+r8rurs r%r&z!ChoicePayloadDecoder.valueDecoders  ,22&2AAJJ"))J  %j)VWMM   F&&z7;;   & & KIJJJ&Yz9FF=DFF $ $ i)?@@$#OOO $  B@AAA&Yz966&&$&& $ $ i)?@@$#OOO#3  ] C ??[ \ \ \%% Y#e &   r'c +K||j|} n|} |r|| |||D]} | VdS|| |}| j|k} trt d|d| rdpdd | r$||| jjfit|d} n&||| jj|||fit|d} | D]m} t| tr| V| tj urnC| j }trt d | d || || d d d d | snn| r| tj urn| VdS) Nr<rz as z explicitly unz tagged CHOICETrr*r+Fr,)r2r>r-rrprrrrUrVrrJrr/)rrrrr r!r"r#r$r+r8isTaggediteratorrurs r%r)z)ChoicePayloadDecoder.indefLenValueDecoders@  ,22&2AAJJ"))J  %j)VWMM   F&&z7;;$.  = C2]:d::< = = =%  K$9z7D447T22244 %9z7DFEKK-1'D-I-I-IKK&   i)?@@$#OOO//E"+";=C ) ??<===--#Y&+#e# . E yCO;;K% Nr'r.)r/r0r1rChoicer2r&r)r,r'r%r(r(s[ T[]]N6:261111h>B:>??????r'r(cDeZdZejZ ddZ ddZdS)AnyPayloadDecoderNc+rK|d} n(|jtjur ||jv} n ||jk} | r|j} |} || tj || | z z }trPt||D]} t| tr| Vtdtj| z|r*||j||t"fi||||D]} | VdSt%|||D]} t| tr| V|j||| fi|VdS)NTz&decoding as untagged ANY, substrate %s)rorTagMaptagMaprmarkedPositionrqseekosSEEK_SETrprrUrVrrrBr?r ) rrrrr r!r"r#r$ isUntagged fullPositioncurrentPositionr8s r%r&zAnyPayloadDecoder.valueDecoders  JJ  6= 0 0x6JJ 8?2J  1$3L'nn..O NN< 5 5 5 o 4 4F 1+Iv>>$$E!%)?@@$#  =//0111  %)D)(FGOOwOOvw00   F#Ivw??  E%!788  #d#HfeGGwGGGGGGGr'c+tK|d} n(|jtjur ||jv} n ||jk} | rd} t rt dn|j} |} || tj t|| | z |D]} t| tr| Vt r$t dtj| z|j}|rH||jur?|j||t&fi|} || | |z|t)| z|D]} | VdSt rt d|j} |||f|dd|D]+}t|tr|V|t*jurn,|t*jurn| |z } N|r| VdS|j||| fi|VdS)NFr'zdecoding as tagged ANYz-decoding as untagged ANY, header substrate %srhTrw)rorr8r9rrpr:rqr;r<r=r rUrVrrr2r9rBr?rrrJ)rrrrr r!r"r#r$r2r8r?r@r+rus r%r)z&AnyPayloadDecoder.indefLenValueDecoder1s  HH  6= 0 00HH0H  \E .,---%3L'nn..O NN< 5 5 5' ?\3QSZ[[  e%;<< KKK \CemTYFZFZZ[[[&  L0GGG..&'66-466J& 16CJJ3FQQ   F  8 6 7 7 7.  &Yx.6B!..%,..   i)?@@$#OOO//E0CO++ Y E "  LKKKKK($'&%KK7KK K K K K Kr'r.rKr,r'r%r6r6skTXZZN6:26'H'H'H'HT>B:>ILILILILILILr'r6c,eZdZejZdS)UTF8StringPayloadDecoderN)r/r0r1r UTF8Stringr2r,r'r%rCrC~r r'rCc,eZdZejZdS)NumericStringPayloadDecoderN)r/r0r1r NumericStringr2r,r'r%rFrF'T'))NNNr'rFc,eZdZejZdS)PrintableStringPayloadDecoderN)r/r0r1rPrintableStringr2r,r'r%rJrJ)T)++NNNr'rJc,eZdZejZdS)TeletexStringPayloadDecoderN)r/r0r1r TeletexStringr2r,r'r%rNrNrHr'rNc,eZdZejZdS)VideotexStringPayloadDecoderN)r/r0r1rVideotexStringr2r,r'r%rQrQs(T(**NNNr'rQc,eZdZejZdS)IA5StringPayloadDecoderN)r/r0r1r IA5Stringr2r,r'r%rTrT#T^%%NNNr'rTc,eZdZejZdS)GraphicStringPayloadDecoderN)r/r0r1r GraphicStringr2r,r'r%rXrXrHr'rXc,eZdZejZdS)VisibleStringPayloadDecoderN)r/r0r1r VisibleStringr2r,r'r%r[r[rHr'r[c,eZdZejZdS)GeneralStringPayloadDecoderN)r/r0r1r GeneralStringr2r,r'r%r^r^rHr'r^c,eZdZejZdS)UniversalStringPayloadDecoderN)r/r0r1rUniversalStringr2r,r'r%rararLr'rac,eZdZejZdS)BMPStringPayloadDecoderN)r/r0r1r BMPStringr2r,r'r%rdrdrVr'rdc,eZdZejZdS)ObjectDescriptorPayloadDecoderN)r/r0r1rObjectDescriptorr2r,r'r%rgrgs,V,..NNNr'rgc,eZdZejZdS)GeneralizedTimePayloadDecoderN)r/r0r1rGeneralizedTimer2r,r'r%rjrjs+V+--NNNr'rjc,eZdZejZdS)UTCTimePayloadDecoderN)r/r0r1rUTCTimer2r,r'r%rmrms#V^%%NNNr'rmcg|]}|Sr,r,).0xs r% rrs ! ! !!A ! ! !r'r)rrcReZdZeZeZdZeZe Z e e fdZ ddde ddfdZ dS)SingleItemDecoderTc ~|tur|n|j|_|tur|n|j|_i|_i|_dSr7)r TAG_MAP_tagMapTYPE_MAP_typeMap _tagCache _tagSetCache)rr9typeMapignoreds r%__init__zSingleItemDecoder.__init__sG!'x!7!7vvT\ #*(#:#:  r'Nc +\K|dd} tr tdtj|||fz| r|jr~t |d|D]} t | tr| V| tkr&trtdtj VdS| dtj |j} |j} |j} |j}t$}||_|t*urZ|t,urrd}t |d|D]}t |tr|Vt/|} | |}n#t0$r|}|d z}|d z}|d z}|d krrd}d }d } t |d|D]}t |tr|V|st3jd t/|}|dz }|dz}||dzz}|dzsnkt5j|||}|r|| |<YnwxYw|L|r4 ||}nE#t0$rt5jd|}|||<YnwxYwt5jd|}n||z}t:}trtd|z|t:ur"t |d|D]}t |tr|Vt/|}|dkr|}n|dkr|dz}t |||D]}t |tr|Vt=|}t?||kr)t3j|dt?|d|d }|D] }|dz}||z} |dz }nd}|dkr|jst3j dtB}trtd|z|tBur|tD}ntF}|tDur | |}n#t0$rd}YnwxYw|rtH}n5 | |dd}n#t0$rd}YnwxYw|rtH}ntJ}trbtd|r |j&j'pdd|tHurdpdtj(|durdp|j)j&j'|tFurf|j&tTj+ur ||}n#t0$rd}YnwxYwtrtd |j,-D]$\}}td!|d"|j&j'%|j.rMtd#|j.-D]$\}}td!|d"|j&j'%td$|durdp|/d%|n<||j0ks ||j1vr&|}trtd&|j&j'znd}| | |j2}trtd'|j2nn#t0$rat5j|j0j3|j0j3} | | }trtd(| n#t0$rd}YnwxYwYnwxYw|r |}tH}ntJ}n d}tJ}trdtd|tHur |j&j'pdd)|tHurdpdtj(|durdp |j&j'|tHur]|4d*ds|sd+}|}!|dkr6|j5||||tB||fi|D]}t |tr|Vn|j6||||tB||fi|D]}t |tr|V||!z }"|s|"|krtAd,|"d-|d.|r|"|krtAd,|"d/|d.tr[td|j&j'd0|j&j'd1t |tnj8r|9p|d2t*}n|tJur|rE|d j:t4j;kr*|d j<t4j=krt|}tH}n d}|j?}tr.td|r |j&j'pdd3|tHurdpd4|tur1|jA}trtd5|j&j'ztH}|turt3j |d6||t*uZtr:tjtd7tjz|VdS)8NrIFzWdecoder called at scope %s with state %d, working with up to %s octets of substrate: %srzend-of-octets sentinel foundTr^r rz'Short octet stream on long tag decodingrcrr)tagClassrStagIdr,z$tag decoded into %s, decoding lengthz% chosen by a built-in type, decoding rAzas explicit tag?z!candidate ASN.1 spec is a map of:z rzbut neither of: znew candidate ASN.1 spec is z , chosen by zcandidate ASN.1 spec is %sz6value decoder chosen for an ambiguous type by type ID zvalue decoder chosen by base z chosen by ASN.1 spec, decoding recursiveFlagc3K|VdS)aeLegacy hack to keep the recursiveFlag=False option supported. The decode(..., substrateFun=userCallback) option was introduced in 0.1.4 as a generalization of the old recursiveFlag=False option. Users should pass their callback instead of using recursiveFlag. Nr,)r+ _substrate_length_optionss r%r#z0SingleItemDecoder.__call__..substrateFuns)(((((r'zRead z bytes instead of expected rz bytes are more than expected z yields type z , value: z ...z chosen, decoding z as failurezcodec %s chosen, decoding valuez not in asn1Spec: z%decoder left scope %s, call completed)CpoprprscopesupportIndefLengthr rUrV EOO_SENTINELrrJr;r<SEEK_CURrwryrzr{r?rqr:stStop stDecodeTagrlrrrTagrstDecodeLengthlistrr stGetValueDecoderstGetValueDecoderByTagstGetValueDecoderByAsn1Spec stDecodeValuestTryAsExplicitTagror/pushr2rr8 presentTypesr skipTypesprettyPrintTyperr9rrr=r)r&r Asn1Item prettyPrintrSrrtagClassUniversalrawPayloadDecoderdefaultErrorStatestDumpRawValuedefaultRawDecoderstErrorCondition)#rrrrr r!r"r#r$rI eoo_candidater9r|tagCache tagSetCacherA isShortTag firstByte firstOctetlastTag integerTagrrSrlengthOctetIdx integerBytesize encodedLength lengthOctetconcreteDecoder chosenSpecr baseTagSetr} bytesReads# r%__call__zSingleItemDecoder.__call__ s ;;z511  @  UFI>? @ @ @  0/ 0!/ 1g!F!F ( ( m-CDD('''' ,,86777o%%%r2;///->' #,>>#3#3  6!! ##! !/ 1g!F!F((I!)-CDD(' ^^ &7&z2GG#7#7#7!+J)D0H *T 1I&-E}}%* )* !&/=iG/T/T66 #-k;Q#R#R!6*5$5$5$5#."&+&B$M'"'"!"*-[)9)9J*a/N!aKE!j4&78E#-#4& %!&$"g!)YeG"7/6,G#7J>! 9=%0%GHHH&&"0Aw"G"G))J!*.DEE)(((( __ ##'FF#%%%,D)7 4)Q)Q00 %m5KLL0"////$($7$7M=))T11#:-1TT3}3E3E3E3EvvNF'4.. 1 +-AIDD FR<<(?<+,deee)A6?@@@)))#2EE8E"...+&,VnOO+++&*OOO+# 3)EE/*0*<#///*./'3 - 2{C_NDapazbDNPHPNPNPRW[hRhRtmtRIxIRIJKKKK$$_%<%D%yHfHpHyzzz333%66*%-f%5 #***%) * X?@@@-5-B-H-H-J-JSSMJC AK!=%x"F,= ,";";3:";";((&e-CDD("'KKK ) 0 03D DI'^I,?,?)kGPyyRXRXRXY[[[%^)f*<*<)kJS))U[U[U[\^^^[3&09995?;S;S;S!%77OE>> stream = io.BytesIO( ... b'0 ') >>> >>> for asn1Object in StreamingDecoder(stream): ... print(asn1Object) >>> SequenceOf: 1 2 3 Decode BER serialisation with ASN.1 schema .. code-block:: pycon >>> stream = io.BytesIO( ... b'0 ') >>> >>> schema = SequenceOf(componentType=Integer()) >>> >>> decoder = StreamingDecoder(stream, asn1Spec=schema) >>> for asn1Object in decoder: ... print(asn1Object) >>> SequenceOf: 1 2 3 Nc n|jdi||_t||_||_||_dS)Nr,)SINGLE_ITEM_DECODER_singleItemDecoderrr _asn1Specr)rrrr$s r%r~zStreamingDecoder.__init__s>":$":"E"EW"E"E*955! r'c#K |j|j|jfi|jD]}|Vt |jD]}t |t rdV|rdSZr7)rrrrrrUrV)rr+r8s r%__iter__zStreamingDecoder.__iter__s 5d5OT^FF7;}FF ! !      &t77  e%;<<EEE  r'r7)r/r0r1__doc__rtrr~rr,r'r%rrbsLHHT,        r'rcDeZdZdZeZeddZedZ dS)rznCreate a BER decoder object. Parse BER/CER/DER octet-stream into one, possibly nested, ASN.1 object. Nc Bt|}d|vr|ddfd }||d<|j||fi|}|D]e}t|trt jd t t |}n#tj$rd}YnwxYw||fcSdS)a. Turns BER/CER/DER octet stream into an ASN.1 object. Takes BER/CER/DER octet-stream in form of :py:class:`bytes` and decode it into an ASN.1 object (e.g. :py:class:`~pyasn1.type.base.PyAsn1Item` derivative) which may be a scalar or an arbitrary nested structure. Parameters ---------- substrate: :py:class:`bytes` BER/CER/DER octet-stream to parse Keyword Args ------------ asn1Spec: :py:class:`~pyasn1.type.base.PyAsn1Item` A pyasn1 type object (:py:class:`~pyasn1.type.base.PyAsn1Item` derivative) to act as a template guiding the decoder. Depending on the ASN.1 structure being decoded, `asn1Spec` may or may not be required. Most common reason for it to require is that ASN.1 structure is encoded in *IMPLICIT* tagging mode. substrateFun: :py:class:`Union[ Callable[[pyasn1.type.base.PyAsn1Item, bytes, int], Tuple[pyasn1.type.base.PyAsn1Item, bytes]], Callable[[pyasn1.type.base.PyAsn1Item, io.BytesIO, int, dict], Generator[Union[pyasn1.type.base.PyAsn1Item, pyasn1.error.SubstrateUnderrunError], None, None]] ]` User callback meant to generalize special use cases like non-recursive or partial decoding. A 3-arg non-streaming variant is supported for backwards compatiblilty in addition to the newer 4-arg streaming variant. The callback will receive the uninitialized object recovered from substrate as 1st argument, the uninterpreted payload as 2nd argument, and the length of the uninterpreted payload as 3rd argument. The streaming variant will additionally receive the decode(..., **options) kwargs as 4th argument. The non-streaming variant shall return an object that will be propagated as decode() return value as 1st item, and the remainig payload for further decode passes as 2nd item. The streaming variant shall yield an object that will be propagated as decode() return value, and leave the remaining payload in the stream. Returns ------- : :py:class:`tuple` A tuple of :py:class:`~pyasn1.type.base.PyAsn1Item` object recovered from BER/CER/DER substrate and the unprocessed trailing portion of the `substrate` (may be empty) Raises ------ : :py:class:`~pyasn1.error.PyAsn1Error` :py:class:`~pyasn1.error.SubstrateUnderrunError` on insufficient input or :py:class:`~pyasn1.error.PyAsn1Error` on decoding error. Examples -------- Decode BER/CER/DER serialisation without ASN.1 schema .. code-block:: pycon >>> s, unprocessed = decode(b'0 ') >>> str(s) SequenceOf: 1 2 3 Decode BER/CER/DER serialisation with ASN.1 schema .. code-block:: pycon >>> seq = SequenceOf(componentType=Integer()) >>> s, unprocessed = decode( b'0 ', asn1Spec=seq) >>> str(s) SequenceOf: 1 2 3 r#Nc3K ||||}n]#t$rP}|jjrt|tjsJt |||}Yd}~nd}~wwxYw|D]}|VdS)arSupport both 0.4 and 0.5 style APIs. substrateFun API has changed in 0.5 for use with streaming decoders. To stay backwards compatible, we first try if we received a streaming user callback. If that fails,we assume we've received a non-streaming v0.4 user callback and convert it for streaming on the fly N) TypeError __traceback__tb_nextrUioBytesIOr_callSubstrateFunV4asV5)r+rr r$ substrate_gen_valuerAorigSubstrateFuns r%substrateFunWrapperz-Decoder.__call__..substrateFunWrapper!su$4$4ZFT[$\$\MM uuu+3%i<<<<<$+$C$CDTV`bkms$t$tMMMMMM u+  EKKKK  s A.AA))A.zShort substrate on inputr'r7)rSTREAMING_DECODERrUrVrnextr EndOfStreamError) clsrrr$rstreamingDecoderr+tailrs @r%rzDecoder.__call__s`%Y// W $ $&~6       &':GN #030 x,,#*,,+ $ $J*&<== O23MNNN N95566)    t# # # # $ $s%BBBc#K|}|dkrt|}||||\}}||}||| t j|VdS)Nr)readrwritetruncater;r<r)substrateFunV4r+rr substrate_bytesrA nextSubstratenbytess r%rzDecoder._callSubstrateFunV4asV5Es#..** R<<))F-~j/6RR}//w ,,, r'r7) r/r0r1rrr classmethodrr3rr,r'r%rrsd)v$v$v$[v$p\r'rattrcddd|x}r4tj|d|dtt |St |)Nrvrx)r9r|z is deprecated. Please use z instead.)r=warningswarnDeprecationWarningglobalsAttributeError)rnewAttrs r% __getattr__rsf&:>>BB4HHHw" LL'LLLN`aaayy!!   r')}rr<sysrpyasn1rrpyasn1.codec.berrpyasn1.codec.streamingrrrr pyasn1.compatr pyasn1.errorr pyasn1.typer rrrrr__all__registerLoggeer/ DEBUG_DECODERrpr?rVobjectrr5rDrrNr\rarzrrrrrrrrrr"r$r&r(r6rCrFrJrNrQrTrXr[r^rardrgrjrmrZrr_rxrrrr Enumeratedrrrr4rDrGrKrOrRrUrYr\r_rbrerhrkrnrvrrrrLrxvalues typeDecoderr2rorangerrrrrrrrrrrYrrtrrrstrrr,r'r%rsV   333333000000111111111111""""""$$$$$$ 3 3 3e85+>??? ,5V>)))))#9)))"&&&&&4&&&R&%''HHHHH8HHH0AAAAA1AAA@L@L@L@L@L:@L@L@LFSISISISISI <SISISIl5.7F7F7F7F7F%A7F7F7Ft-I-I-I-I-I <-I-I-I`kHkHkHkHkH5kHkHkH\(>CCCCC$ECCCL/////)F/// %%%%%?%%%'''''A'''*****<***      0   """""2"""uuuuu8uuupuLuLuLuLuL4uLuLuLr'''''8'''*****";***,,,,,$=,,,*****";***+++++#<+++&&&&&7&&&*****";********";********";***,,,,,$=,,,&&&&&7&&& /////%>///.....$=...&&&&&5&&& L..00 L..00  N2244  6688    I((**     "@"@"B"B   6688  O1133  I((**  M<<>>  HO--//  K,,..  O4466  ::<<   !>!>!@!@! " ::<<# $  < < > >% & N2244::<<::<<::<<!>!>!@!@N2244 "$B$B$D$D !#@#@#B#B N00229  B HO&&((J**,,M0022O4466K,,..HO&&((  >>##++K!-+5<  &"8"8*HV  " !uuRyy ! ! !  uV}} hhhhhhhhV `````v```FIIIIIfIIID cr'