3 M(Y2@sZddlmZmZmZmZmZmZddlmZddl m Z m Z m Z m Z ddlmZddlmZmZdgZejZGdddeZGd d d eZGd d d eZeZGd ddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZ GdddeZ!Gddde!Z"Gdd d e"Z#Gd!d"d"e#Z$Gd#d$d$e#Z%Gd%d&d&e"Z&Gd'd(d(e&Z'Gd)d*d*e&Z(Gd+d,d,e!Z)Gd-d.d.eZ*Gd/d0d0eZ+Gd1d2d2eZ,Gd3d4d4eZ-Gd5d6d6eZ.Gd7d8d8eZ/Gd9d:d:eZ0Gd;d<dd>eZ2Gd?d@d@eZ3GdAdBdBeZ4GdCdDdDeZ5GdEdFdFeZ6GdGdHdHeZ7GdIdJdJeZ8ej9j:eej;j:eejj:eej?j:eej@j:eejAj:e ejBj:e#ejCj:e&ejDj:e)ejEj:e+ejFj:e,ejGj:e-ejHj:e.ejIj:e/ejJj:e0ejKj:e1ejLj:e2ejMj:e3ejNj:e4ejOj:e5ejPj:e6ejQj:e7ejRj:e8iZSejCjTe'ejUjTe(ejBjTe$ejVjTe%ejDjTe)ejWjTe*iZXxDeSjYD]8ZZeZj[dKk reZj[j\jTZTeTdKk reTeXkreZeXeT<qWdLdMe]dND\ Z^Z_Z`ZaZbZcZdZeZfZgGdOdPdPeZheheSeXZidKS)Q)basetagunivcharusefultagmap)eoo)oct2int octs2ints ints2octsnull) from_bytes)debugerrordecodec@s$eZdZdZdddZdddZdS)AbstractDecoderNc Kstjd|fdS)NzDecoder not implemented for %s)r PyAsn1Error) self substrateasn1SpectagSetlengthstate decodeFun substrateFunoptionsrB/private/tmp/pip-build-nl73fm5q/pyasn1/pyasn1/codec/ber/decoder.py valueDecoderszAbstractDecoder.valueDecoderc Kstjd|fdS)Nz5Indefinite length mode decoder not implemented for %s)rr) rrrrrrrrrrrrindefLenValueDecodersz$AbstractDecoder.indefLenValueDecoder)NNNNN)NNNNN)__name__ __module__ __qualname__protoComponentrrrrrrrs  rc@s$eZdZeddZefddZdS)AbstractSimpleDecodercCs|d|||dfS)Nr) asn1ObjectrrrrrsubstrateCollector#sz(AbstractSimpleDecoder.substrateCollectorcCs2|dkr|jj||dS|tkr$|S|j|SdS)N)r)r#clonenoValue)rrrvaluerrr_createComponent's z&AbstractSimpleDecoder._createComponentN)r r!r" staticmethodr&r(r*rrrrr$"s r$c@s*eZdZejdZdddZdddZdS) ExplicitTagDecoderNc KsR|r||j||d||S|d|||d} } || |||f|\} } | | fS)Nr-)r*) rrrrrrrrrheadtailr)_rrrr3s zExplicitTagDecoder.valueDecoderc Ksh|r||j||d||S|||||f|\} }||fddi|\} }| tjkrZ| |fStjddS)Nr-allowEooTz Missing end-of-octets terminator)r*r endOfOctetsrr) rrrrrrrrrr) eooMarkerrrrrCs  z'ExplicitTagDecoder.indefLenValueDecoder)NNNNN)NNNNN)r r!r"rAnyr#rrrrrrr,0s   r,c@s eZdZejdZdddZdS)IntegerDecoderrNc Ksh|djtjkrtjd|d|||d} } | sJ|j||d| fSt| dd} |j||| | fS)NrzSimple tag format expectedT)signed) tagFormatrtagFormatSimplerrr*r ) rrrrrrrrrr.r/r)rrrr]s  zIntegerDecoder.valueDecoder)NNNNN)r r!r"rIntegerr#rrrrrr5Zs r5c@s"eZdZejdZefddZdS)BooleanDecoderrcCstj||||rdpdS)Nr)r5r*)rrrr)rrrr*rszBooleanDecoder._createComponentN)r r!r"rBooleanr#r(r*rrrrr:os r:c@s.eZdZejfZdZdddZdddZdS) BitStringDecoderTNcKs|d|||d} } |djtjkr| s8tjdt| d} | dkrZtjd| | dd} |jj| | } |j||| | fS|j stjd|j j |j||} |r|| ||Sx$| r|| |jf|\}} | |7} qW| | fS)NrzEmpty substratezTrailing bits overflow %sr;z*Constructed encoding form prohibited at %s) r7rr8rrr r#ZfromOctetStringr*supportConstructedForm __class__r )rrrrrrrrrr.r/Z trailingBitsr) bitString componentrrrrzs(       zBitStringDecoder.valueDecoderc Ksh|j||} |r|| ||SxB|rT|||jfddi|\} }| tjkrJP| | 7} qWtjd| |fS)Nr1Tz!No EOO seen before substrate ends)r*r#rr2rSubstrateUnderrunError) rrrrrrrrrrArBrrrrs      z%BitStringDecoder.indefLenValueDecoder)NNNNN)NNNNN) r r!r"r BitStringr#r?rrrrrrr=vs   r=c@s.eZdZejdZdZdddZd ddZdS) OctetStringDecoderr-TNc Ks|d|||d} } |r2||j||||S|djtjkrT|j||| | fS|jsltjd|jj|j }t } x,| r|| |j fd|i|\} } | | 7} qxW|j||| | fS)Nrz*Constructed encoding form prohibited at %sr) r*r7rr8r?rrr@r r&r r#) rrrrrrrrrr.r/headerrBrrrrs     zOctetStringDecoder.valueDecoderc Ks|r&||jk r&|j||} || ||S|j}t} xD|rj|||jf|dd|\} }| tjkr`P| | 7} q2Wtjd|j||| |fS)NT)rr1z!No EOO seen before substrate ends)r&r*r r#rr2rrC) rrrrrrrrrr%rFrBrrrrs     z'OctetStringDecoder.indefLenValueDecoder)NNNNN)NNNNN) r r!r"r OctetStringr#r?rrrrrrrEs   rEc@s eZdZejdZdddZdS) NullDecoderr-Nc KsZ|djtjkrtjd|d|||d} } |j||} | rRtjd|| | fS)NrzSimple tag format expectedz&Unexpected %d-octet substrate for Null)r7rr8rrr*) rrrrrrrrrr.r/rBrrrrs  zNullDecoder.valueDecoder)NNNNN)r r!r"rNullr#rrrrrrHs rHc@s eZdZejfZdddZdS)ObjectIdentifierDecoderNcKs|djtjkrtjd|d|||d} } | sBtjdt| } f} d} t| } x| | kr| | }| d7} |dkr| |f7} q\|dkr|}d}xD|dkr|d>|d@}| | krtjd| f| | }| d7} qW| |d>|f7} q\|dkr\tjd q\Wd| dko"d knr4d| } n|d | dkoLd knrrd| dd f| dd} n>| dd krd| dd f| dd} ntjd| d|j||| | fS)NrzSimple tag format expectedzEmpty substrater;r>z#Short substrate for sub-OID past %sz"Invalid octet 0x80 in OID encoding'(OPzMalformed first OID octet: %s)r) r7rr8rrr lenrCr*)rrrrrrrrrr.r/oidindexZ substrateLenZsubIdZ nextSubIdrrrrsF          z$ObjectIdentifierDecoder.valueDecoder)NNNNN)r r!r"rObjectIdentifierr#rrrrrrJs rJc@seZdZejZdddZdS) RealDecoderNc Ks|djtjkrtjd|d|||d} } | sJ|j||d| fSt| d} | dd} | d@r| sztjd| d@d} | dkrt| d} | dd} | d| | | d} } | s| rtjd t| dd@rdpd}x.| r|d K}|t| dO}| dd} qW| d?d@}|d kr>tjd |dkrR|d9}n|d krd|d9}d}x0| r|d K}|t| dO}| dd} qjW| d @r| }| d ?d@}|d |9}|d |f}n| d @r| d@rdpd}n| d@dkr| s tjdy`| d@dkr,t| ddf}n>| d@d krDt| }n&| d@dkr\t| }ntj d| Wn t k rtj dYnXntj d| |j|||| fS)NrzSimple tag format expectedgr;rKzIncomplete floating-point valuezReal exponent screwedrQzIllegal Real base@z-infinf zUnknown NR (tag %s)zBad character Real syntaxzUnknown encoding (tag %s)) r7rr8rrr*r intfloatrC ValueError)rrrrrrrrrr.r/foneoebpZsfr)rrrr?sv                         zRealDecoder.valueDecoder)NNNNN)r r!r"rRealr#rrrrrrV<srVc@seZdZdZdS)AbstractConstructedDecoderN)r r!r"r#rrrrrisric@sBeZdZdZdZddZddZd ddZd dd Zdd d Z dS)UniversalConstructedTypeDecoderNcCs tdS)N)NotImplementedError)rr%idxrrr_getComponentTagMapsz3UniversalConstructedTypeDecoder._getComponentTagMapcCs tdS)N)rk)rr%rrlrrr_getComponentPositionByTypesz;UniversalConstructedTypeDecoder._getComponentPositionByTypec Ksg}t}x:|rD||f|\}}|tjkr,P|j||j|jq Wt|dks^t|dkrf|j}n|j}|j t j |jj f|j d} x(t|D]\} }| j| |ddddqW| |fS)Nr;)rF)verifyConstraints matchTagsmatchConstraints)setrr2appendaddrrRprotoRecordComponentprotoSequenceComponentr'rTagSetbaseTagZ superTags enumeratesetComponentByPosition) rrrrr componentsZcomponentTypesrBr#r%rlrrr_decodeComponentss&  z1UniversalConstructedTypeDecoder._decodeComponentscKs|djtjkrtjd|d|||d} } |dk r|dk rN|j} n&|jdk rh|jj|d} n |j|jf} || ||S|dkr|j | f||d|\} } | rtjdt | | | fS|j} | j t j j t jj fkrX| j} | j t jj k}| o| j }t}d}x| r$| s&d}nz|r4| j}nlyD|rH| |j}n.| |js`| |jrl| j|}n | |j}Wn&tk rtjd| fYnX|| |f|\}} | r| r|r| j|j}n&| |js| |jr| j|j|}| j||dddd|j||d 7}qW| rN| jj|sVtjd | jj n| j!nN| j}d}x:| r|| |f|\}} | j||dddd|d 7}qdW| j!| | fS) NrzConstructed tag format expected)r)rrz%Unused trailing %d octets encounteredz"Excessive components decoded at %rF)rorprqr;z,ASN.1 object %s has uninitialized components)"r7rtagFormatConstructedrrr'r#rurvr|rRtypeIdrSequenceSet componentTypehasOptionalOrDefaultrr tagMapUniquer% isOptional isDefaultedgetTagMapNearPosition IndexErrorgetPositionByTypeeffectiveTagSetgetPositionNearTyperzrtrequiredComponentsissubsetr@r verifySizeSpec)rrrrrrrrrr.r/r%Ztrailing namedTypes isSetTypeisDeterministic seenIndicesrlrBrrrrs            z,UniversalConstructedTypeDecoder.valueDecodercKs|djtjkrtjd|dk rf|dk r4|j} n&|jdk rN|jj|d} n |j|jf} || ||S|dkr|j |f||dd|S|j} | j t j j t j j fkr>| j} | j t j j k} | o| j } t} d}x4|rt| |krd}nx| r| j}nlyD| r| |j}n.| |js(| |jr4| j|}n | |j}Wn&tk rftjd| fYnX|||fddi|\}}|tjkrP| r| r| r| j|j}n&| |js| |jr| j|j|}| j||dddd | j||d 7}qWtjd | r4| j j!| ssrr]c@s<eZdZeZeZdZifddZddde ddfddZ dS)DecoderTcCs&||_||_i|_i|_td|_dS)Nr)rr)_Decoder__tagMap_Decoder__typeMap_Decoder__tagCache_Decoder__tagSetCacher _Decoder__eooSentinel)rtagMaptypeMaprrr__init__s zDecoder.__init__Nc DKsTtjtj@rtj} nd} | r<| dtj|t|tj|f|jdd} | r|jr|dd|jkr| rp| dt j |ddfSt } |j } |j } |j}|j}|}x|tk r,|tkr<|stjdd}|d}|d d}y ||}Wntk rt|}|d @}|d @}|d @}|d krd}d}d}yLx:t||}|d 7}|d K}||d@O}|d@s8Pq8W||d}Wn tk rtjdYnXtj|||d}|r|||<YnX|dkr|ry ||}Wn*tk r tjf|}|||<YnXn tjf|}n||}t}| r<| d||tkr~|sVtjdt|d}|dkrvd }|}n|dkr|d@}t|d |d }t||krtjd|t||fd}x|D]}|dK}||O}qW|d 7}nd }d0}||d}|d1kr"|jsFtjdn$t||krFtjd|t|t}| r~| d|tj|d2krj|pt|d|f|tkr|dkrt}nt}|tkrry | |}Wntk rd}YnX|rt }n@y| |dd }Wntk rd}YnX|rt }nt!}| rr| d|r4|j"j#p6d|t krFdpHdftjj$|dkrfdpn|j%j"j#|tkr|j"t&j'krRy ||}Wntk rd}YnX| r| dx,|j(j)D]\}}| d||j"j#fqW|j*r,| d x,|j*j)D]\}}| d||j"j#fq W| d!|dkr@dpF|j+|fn8||j,ksj||j-kr|}| r| d"|j"j#nd}|dk r6y$| |j.}| r| d#|j.fWnftk rtj|j,j/|j,j/}y | |}| r| d$|fWntk rd}YnXYnX|r0|}t }nt!}nd}t!}| r| d%|t kr\|j"j#p^d|t krndppdftjj$|dkrdp|j"j#|t krh|j0d&d r| rd'd(}|j1|d)|d3kr|j2||||t||f|\} }n|j3||||t||f|\} }| rb| d*|j"j#| j"j#t4| t5j6rD| j7pF| |rXtj|pZdft}P|t!kr|r|dj8tj9kr|dj:tj;krt<}t }n d}|j=}| r| d+|r|j"j#pd|t krdpd,f|t>kr|j?}| r | d-|j"j#t }|t@krtjd.||fqW| rLtjj| d/tj| |fS)4NzWdecoder called at scope %s with state %d, working with up to %d octets of substrate: %sr1FrQzend-of-octets sentinel foundz"Short octet stream on tag decodingTrr;r\ r>rLrKz'Short octet stream on long tag decoding)tagClassr7tagIdz$tag decoded into %s, decoding lengthz%Short octet stream on length decodingz %s<%s at %srYz6Indefinite length encoding not supported by this codecz%d-octet shortz6value length decoded into %d, payload substrate is: %sz/codec %s chosen by a built-in type, decoding %szr)zas explicit tag?z!candidate ASN.1 spec is a map of:z %s -> %szbut neither of: z,new candidate ASN.1 spec is %s, chosen by %szcandidate ASN.1 spec is %sz8value decoder chosen for an ambiguous type by type ID %szvalue decoder chosen by base %sz*codec %s chosen by ASN.1 spec, decoding %sZ recursiveFlagcSs||d|fS)Nr)arfcrrrxsz"Decoder.__call__..)rz@codec %s yields type %s, value: %s ...remaining substrate is: %szcodec %s chosen, decoding %sz as failurezcodec %s chosen, decoding valuez%s not in asn1Spec: %rz%decoder left scope %s, call completedr^r^r^r^)ArloggerZ flagDecoderZscoperRZhexdumppopsupportIndefLengthrrr2r(rrrrstStop stDecodeTagrrCKeyErrorr rrZTagrwstDecodeLengthr rstGetValueDecoderstGetValueDecoderByTagstGetValueDecoderByAsn1Spec stDecodeValuestTryAsExplicitTagr@r pushr#rZTagMapZ presentTypesitemsZ skipTypesZprettyPrintTyperrr~rxgetupdaterr isinstancerZAsn1ItemZ prettyPrintr7r}rZtagClassUniversalexplicitTagDecoderdefaultErrorStatestDumpRawValuedefaultRawDecoderstErrorCondition) rrrrrrrrrrr1r)rrZtagCacheZ tagSetCacherZ isShortTagZ firstOctetZlastTagZ integerTagrr7rZlengthOctetIdxsizeZ encodedLengthZ lengthOctetZconcreteDecoderZ chosenSpecvZ baseTagSetrrr__call__s                          .      0"   &  4      F *0  zDecoder.__call__) r r!r"rrrrrrrrrrrrrs r)jZ pyasn1.typerrrrrrZpyasn1.codec.berrZpyasn1.compat.octetsr r r r Zpyasn1.compat.integerr Zpyasn1rr__all__r(objectrr$r,rr5r:r=rErHrJrVrirjrrrrrrrrrrrrrrrrrrrrrrr9rr<rDrGrIrUZ Enumeratedrhrrrrrrrrrrrrrrrrrrr~rrr4rvaluesZ typeDecoderr#r@rangerrrrrrrrrrrrrrrrs   ':>9LtC?                                &2