o
    c]<                     @   s  d dl mZ d dl mZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ dgZejeejdZejZG dd deZG dd deZG dd deZe ZG dd deZG dd deZG dd deZ G dd deZ!G dd deZ"G dd deZ#G d d! d!eZ$G d"d# d#eZ%G d$d% d%e%Z&G d&d' d'e&Z'G d(d) d)e'Z(G d*d+ d+e'Z)G d,d- d-e&Z*G d.d/ d/e*Z+G d0d1 d1e*Z,G d2d3 d3e%Z-G d4d5 d5eZ.G d6d7 d7e!Z/G d8d9 d9e!Z0G d:d; d;e!Z1G d<d= d=e!Z2G d>d? d?e!Z3G d@dA dAe!Z4G dBdC dCe!Z5G dDdE dEe!Z6G dFdG dGe!Z7G dHdI dIe!Z8G dJdK dKe!Z9G dLdM dMe!Z:G dNdO dOe!Z;G dPdQ dQe!Z<i ej=j>e ej?j>e ej@j>e  ejAj>e! ejBj>e" ejCj>e# ejDj>e ejEj>e$ ejFj>e' ejGj>e* ejHj>e- ejIj>e/ ejJj>e0 ejKj>e1 ejLj>e2 ejMj>e3 ejNj>e4 ejOj>e5 ejPj>e6 ejQj>e7 ejRj>e8 ejSj>e9 ejTj>e: ejUj>e; ejVj>e< iZWejGjXe+ ejYjXe, ejFjXe( ejZjXe) ejHjXe- ej[jXe. iZ\eW] D ]Z^e^j_dRur:e^j_j`jXZXeXdRur:eXe\vr:e^e\eX< qdSdT eadUD \
ZbZcZdZeZfZgZhZiZjZkG dVdW dWeZleleWe\ZmdRS )X    )debug)error)eoo)
from_bytes)oct2int	octs2ints	ints2octsnull)base)char)tag)tagmap)univ)usefuldecode)flagsc                   @   s,   e Zd ZdZ		dddZ		dddZdS )AbstractDecoderNc           	      K      t d|f )NzDecoder not implemented for %sr   PyAsn1Error	self	substrateasn1SpectagSetlengthstate	decodeFunsubstrateFunoptions r    :/usr/lib/python3/dist-packages/pyasn1/codec/ber/decoder.pyvalueDecoder      zAbstractDecoder.valueDecoderc           	      K   r   )Nz5Indefinite length mode decoder not implemented for %sr   r   r    r    r!   indefLenValueDecoder#   r#   z$AbstractDecoder.indefLenValueDecoderNNNNN)__name__
__module____qualname__protoComponentr"   r$   r    r    r    r!   r      s    
r   c                   @   s    e Zd Zedd Zdd ZdS )AbstractSimpleDecoderc                 C   s   |d | ||d  fS Nr    )
asn1Objectr   r   r    r    r!   substrateCollector+   s   z(AbstractSimpleDecoder.substrateCollectorc                 K   s<   | dr|S |d u r| jj||dS |tu r|S ||S )NZnativer   )getr)   clonenoValuer   r   r   valuer   r    r    r!   _createComponent/   s   

z&AbstractSimpleDecoder._createComponentN)r&   r'   r(   staticmethodr-   r4   r    r    r    r!   r*   *   s    
r*   c                   @   s2   e Zd ZedZ		dddZ		dddZdS )ExplicitTagDecoder Nc                 K   s|   |r|| j ||dfi |||S |d | ||d  }	}
||	|||fi |\}}tr:tdt|t|f  ||
fS )Nr7   zPexplicit tag container carries %d octets of trailing payload (will be lost!): %s)r4   LOGlenr   hexdump)r   r   r   r   r   r   r   r   r   headtailr3   _r    r    r!   r"   =   s   zExplicitTagDecoder.valueDecoderc                 K   sp   |r|| j ||dfi |||S |||||fi |\}	}||fddi|\}
}|
tju r3|	|fS td)Nr7   allowEooTz Missing end-of-octets terminator)r4   r   endOfOctetsr   r   )r   r   r   r   r   r   r   r   r   r3   	eooMarkerr    r    r!   r$   Q   s   

z'ExplicitTagDecoder.indefLenValueDecoderr%   r&   r'   r(   r   Anyr)   r"   r$   r    r    r    r!   r6   :   s    

r6   c                   @   $   e Zd ZedZ		dddZdS )IntegerDecoderr   Nc                 K   sx   |d j tjkrtd|d | ||d  }	}
|	s)| j||dfi ||
fS t|	dd}| j|||fi ||
fS )Nr   Simple tag format expectedT)Zsigned)	tagFormatr   tagFormatSimpler   r   r4   r   )r   r   r   r   r   r   r   r   r   r;   r<   r3   r    r    r!   r"   k   s   
zIntegerDecoder.valueDecoderr%   )r&   r'   r(   r   Integerr)   r"   r    r    r    r!   rD   h   
    
rD   c                   @   s   e Zd ZedZdd ZdS )BooleanDecoderr   c                 K   s    t j| |||r	dp
dfi |S )N   r   )rD   r4   r2   r    r    r!   r4      s
   zBooleanDecoder._createComponentN)r&   r'   r(   r   Booleanr)   r4   r    r    r    r!   rJ   }   s    
rJ   c                   @   6   e Zd ZedZdZ		dddZ		dddZdS )	BitStringDecoderr    TNc                 K   sf  |d | ||d  }	}
|r|| j ||tfi |||S |	s%td|d jtjkrXt|	d }|dkr>td| | jj	|	dd  d|d}| j |||fi ||
fS | j
sdtd| jj trjtd	 | j}| jj	tdd
}|	r||	| jfd|i|\}}	t|d }|dkrtd| | jj	|dd  d||d}|	sw| j |||fi ||
fS )NzEmpty BIT STRING substrater      Trailing bits overflow %srK   T)internalFormatpadding*Constructed encoding form prohibited at %s$assembling constructed serializationrQ   r   rQ   ZprependrR   )r4   r1   r   r   rF   r   rG   r   r)   fromOctetStringsupportConstructedForm	__class__r&   r8   r-   r	   )r   r   r   r   r   r   r   r   r   r;   r<   trailingBitsr3   	bitString	componentr    r    r!   r"      s\   

zBitStringDecoder.valueDecoderc                 K   s   |r|| j ||tfi |||S | j}| jjtdd}	|rT||| jf|dd|\}
}|
tju r3n&t|
d }|dkrDt	
d| | jj|
dd  d|	|d}	|st	d	| j |||	fi ||fS )
NTrU   r   r>   r   rO   rP   rK   rV   !No EOO seen before substrate ends)r4   r1   r-   r)   rW   r	   r   r?   r   r   r   SubstrateUnderrunError)r   r   r   r   r   r   r   r   r   r[   r\   rZ   r    r    r!   r$      s2   



z%BitStringDecoder.indefLenValueDecoderr%   )	r&   r'   r(   r   	BitStringr)   rX   r"   r$   r    r    r    r!   rN      s    

8rN   c                   @   rM   )	OctetStringDecoderr7   TNc                 K   s   |d | ||d  }	}
|r|| j ||tfi |||S |d jtjkr3| j |||	fi ||
fS | js?td| jj	 t
rEt
d | j}t}|	r`||	| jfd|i|\}}	||7 }|	sL| j |||fi ||
fS )Nr   rS   rT   r   )r4   r1   rF   r   rG   rX   r   r   rY   r&   r8   r-   r	   r)   )r   r   r   r   r   r   r   r   r   r;   r<   headerr\   r    r    r!   r"      s,   
zOctetStringDecoder.valueDecoderc                 K   s   |r|| j ur| j||tfi |}	||	||S | j }t}
|r:||| jf|dd|\}}|tju r4n|
|7 }
|std| j|||
fi ||fS )NTr]   r^   )	r-   r4   r1   r	   r)   r   r?   r   r_   )r   r   r   r   r   r   r   r   r   r,   rb   r\   r    r    r!   r$   	  s,   

z'OctetStringDecoder.indefLenValueDecoderr%   )	r&   r'   r(   r   OctetStringr)   rX   r"   r$   r    r    r    r!   ra      s    

!ra   c                   @   rC   )NullDecoderr7   Nc                 K   sd   |d j tjkrtd|d | ||d  }	}
| j||dfi |}|	r.td| ||
fS )Nr   rE   r7   z&Unexpected %d-octet substrate for Null)rF   r   rG   r   r   r4   )r   r   r   r   r   r   r   r   r   r;   r<   r\   r    r    r!   r"   +  s   
zNullDecoder.valueDecoderr%   )r&   r'   r(   r   Nullr)   r"   r    r    r    r!   rd   (  rI   rd   c                   @   rC   )ObjectIdentifierDecoderr    Nc                 K   s  |d j tjkrtd|d | ||d  }	}
|	s!tdt|	}	d}d}t|	}||k r|	| }|d7 }|dk rC||f7 }n?|dkry|}d}|dkro|d> |d@  }||krctd	|f |	| }|d7 }|dksO||d> | f7 }n	|dkrtd
||k s1d|d   krdkrn nd| }n;d|d   krdkrn nd|d d f|dd   }n|d dkrd|d d f|dd   }n	td|	d  | j|||fi ||
fS )Nr   rE   zEmpty substrater    rK      rO      z#Short substrate for sub-OID past %sz"Invalid octet 0x80 in OID encoding'   )r   (   O   P      zMalformed first OID octet: %s)	rF   r   rG   r   r   r   r9   r_   r4   )r   r   r   r   r   r   r   r   r   r;   r<   ZoidindexZsubstrateLenZsubIdZ	nextSubIdr    r    r!   r"   @  sL   



z$ObjectIdentifierDecoder.valueDecoderr%   )r&   r'   r(   r   ObjectIdentifierr)   r"   r    r    r    r!   rf   =  rI   rf   c                   @   s"   e Zd Ze Z		dddZdS )RealDecoderNc                 K   s  |d j tjkrtd|d | ||d  }	}
|	s)| j||dfi ||
fS t|	d }|	dd  }	|d@ r|	s@tdtrFtd |d@ d }|d	kr\t|	d }|	dd  }	|	d | |	|d  }}	|rm|	srtd
t|d d@ r|dp}d}|r|dK }|t|d O }|dd  }|s|d	? d@ }|dkrtd|dkr|d9 }n|dkr|d	9 }d}|	r|dK }|t|	d O }|	dd  }	|	s|d@ r| }|d? d@ }|d| 9 }|d|f}nn|d@ rtrtd |d@ rdpd}n[|d@ dkrL|	stdtrtd z0|d@ dkrt|	ddf}n|d@ dkr*t	|	}n|d@ dkr6t	|	}nt
d| W n tyK   t
dw t
d| | j|||fi ||
fS )Nr   rE   g        rK   rg   zIncomplete floating-point valuezdecoding binary encoded REAL      zReal exponent screwed   rm   zIllegal Real base@   zdecoding infinite REALz-infinf   zdecoding character encoded REAL
   zUnknown NR (tag %s)zBad character Real syntaxzUnknown encoding (tag %s))rF   r   rG   r   r   r4   r   r8   intfloatr_   
ValueError)r   r   r   r   r   r   r   r   r   r;   r<   foneoebpZsfr3   r    r    r!   r"   y  s   







zRealDecoder.valueDecoderr%   )r&   r'   r(   r   Realr)   r"   r    r    r    r!   rp   v  s
    rp   c                   @   s   e Zd ZdZdS )AbstractConstructedDecoderN)r&   r'   r(   r)   r    r    r    r!   r     s    r   c                   @   sJ   e Zd ZdZdZdd Zdd ZdddZ		ddd	Z		dd
dZ	dS )UniversalConstructedTypeDecoderNc                 C      t  r+   NotImplementedError)r   r,   idxr    r    r!   _getComponentTagMap     z3UniversalConstructedTypeDecoder._getComponentTagMapc                 C   r   r+   r   )r   r,   r   r   r    r    r!   _getComponentPositionByType  r   z;UniversalConstructedTypeDecoder._getComponentPositionByTypec                 K   s   g }t  }|r$||fi |\}}|tju rn|| ||j |st|dkr.| j}n| j}|j	t
j|jjg|jR  d}	trItd|	  t|D ]\}
}|	j|
|dddd qM|	|fS )NrK   r.   z@guessed %r container type (pass `asn1Spec` to guide the decoder)FverifyConstraints	matchTagsmatchConstraints)setr   r?   appendaddr   r9   protoRecordComponentprotoSequenceComponentr0   r   TagSetbaseTagZ	superTagsr8   	enumeratesetComponentByPosition)r   r   r   r   r   Z
componentsZcomponentTypesr\   r)   r,   r   r    r    r!   _decodeComponents  s4   

z1UniversalConstructedTypeDecoder._decodeComponentsc                 K   s  |d j tjkrtd|d | ||d  }	}
|d ur@|d ur'| }n| jd ur4| jj|d}n| j| jf}||||S |d u rg| j	|	f||d|\}}|rct
rct
dt|t|f  ||
fS | }|  |jtjjtjjfv rK|j}|jtjjk}| o|j }t
rt
d| rdpd|rd	pd|f  t }d}|	r$|sd }n5|r|j}n/z|r|| j}n|| js|| jr||}n|| j}W n ty   td
|f w ||	|fi |\}}	|s|r|r||j}n|| js|| jr||j|}|j||dddd | | |d7 }|	st
r-t
d|  |r?|j!"|s@td|j#j$ |j%r;|&di }t
rct
d |' D ]\}}t
d||f  qU|sm|&ddr;t(|j)D ]\}}|j*s|qr|jr|+|j,sqr|-|j*j.}z|| }W nO t/y   t
rt
d|j#j$|j.|j#j$|j*j.f  |j*' D ]\}}t
d||f  qz|j*| }W n t/y   t
rt
d|f  Y Y qrw Y nw t
rt
d||f  |+|}|jtj0jtj1jfv r"t(|D ]\}}||| 2 fd|i|\}}|||< qqr||+|2 fd|i|\}}||| qr||
fS |j3}|rG|||
fS | }|  |j}t
r_t
d|  d}|	r||	|fi |\}}	|j||dddd |d7 }|	sd||
fS )Nr   Constructed tag format expectedr.   r   r   z)Unused trailing %d octets encountered: %s5decoding %sdeterministic %s type %r chosen by type IDnon-r7   SET"Excessive components decoded at %rFr   rK   seen component indices %s,ASN.1 object %s has uninitialized components	openTypesuser-specified open types map:%s -> %rdecodeOpenTypesJdefault open types map of component "%s.%s" governed by component "%s.%s":1failed to resolve open type by governing value %r+resolved open type %r by governing value %rr   +decoding type %r chosen by given `asn1Spec`)4rF   r   tagFormatConstructedr   r   r0   r)   r   r   r   r8   r9   r   r:   cleartypeIdr   SequenceSetcomponentTypehasOptionalOrDefaultr   tagMapUniquer,   
isOptionalisDefaultedgetTagMapNearPosition
IndexErrorgetPositionByTypeeffectiveTagSetgetPositionNearTyper   r   requiredComponentsissubsetrY   r&   hasOpenTypesr/   itemsr   
namedTypesopenTypegetComponentByPositionisValuegetComponentByNamenameKeyErrorSetOf
SequenceOfasOctetsisInconsistent)r   r   r   r   r   r   r   r   r   r;   r<   r,   Ztrailingr   	isSetTypeisDeterministicseenIndicesr   r   r\   r   kv	namedTypegoverningValuer   containerValueposcontainerElementrestinconsistencyr    r    r!   r"     sJ  





)




z,UniversalConstructedTypeDecoder.valueDecoderc                 K   s  |d j tjkrtd|d ur3|d ur| }	n| jd ur'| jj|d}	n| j| jf}	||	||S |d u rG| j	|f||dt
|ddS | }	|	  |jtjjtjjfv rF|	j}
|	jtjjk}| ok|
j }trtd| rudpvd	|rzd
p{d	|f  t }d}|rt|
|krd }n5|r|
j}n/z|r|
| j}n|
| js|
| jr|
|}n|
| j}W n ty   td|	f w |||fddi|\}}|tju rn8|s|
r|r|
|j}n|
| js|
| jr|
|j|}|	j ||dddd |!| |d7 }|st"dtrtd|  |
rB|
j#$|s-td|	j%j& |
j'r:|(di }trPtd |) D ]\}}td||f  qB|sZ|(ddr6t*|
j+D ]\}}|j,siq_|jrv|	-|j.svq_|	/|j,j0}z|| }W nO t1y   trtd|	j%j&|j0|	j%j&|j,j0f  |j,) D ]\}}td||f  qz|j,| }W n t1y   trtd|f  Y Y q_w Y nw trtd||f  |	-|}|jtj2jtj3jfv rt*|D ]\}}||| 4 fd|it
|dd\}}|||< qq_||	-|4 fd|it
|dd\}}|tjur4|	 || q_|	|fS |	j5}|rB||	|fS | }	|	  |j}trZtd|  d}|r|||fddi|\}}|tju rw	 |	|fS |	j ||dddd |d7 }|s_t"d)Nr   r   r.   r   T)r>   r   r   r7   r   r   r>   Fr   rK   r^   r   r   r   r   r   r   r   r   r   r   r   )6rF   r   r   r   r   r0   r)   r   r   r   dictr   r   r   r   r   r   r   r8   r   r9   r   r,   r   r   r   r   r   r?   r   r   r   r   r   r_   r   r   rY   r&   r   r/   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r,   r   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r    r    r!   r$     sL  






+





% z4UniversalConstructedTypeDecoder.indefLenValueDecoder)NNr%   )
r&   r'   r(   r   r   r   r   r   r"   r$   r    r    r    r!   r     s    
*
 Mr   c                   @      e Zd Ze Ze ZdS )SequenceOrSequenceOfDecoderN)r&   r'   r(   r   r   r   r   r   r    r    r    r!   r         r   c                   @      e Zd Ze ZdS )SequenceDecoderN)r&   r'   r(   r   r   r)   r    r    r    r!   r         r   c                   @   r   )SequenceOfDecoderN)r&   r'   r(   r   r   r)   r    r    r    r!   r     r   r   c                   @   r   )SetOrSetOfDecoderN)r&   r'   r(   r   r   r   r   r   r    r    r    r!   r     r   r   c                   @   r   )
SetDecoderN)r&   r'   r(   r   r   r)   r    r    r    r!   r     r   r   c                   @   r   )SetOfDecoderN)r&   r'   r(   r   r   r)   r    r    r    r!   r     r   r   c                   @   0   e Zd Ze Z		dddZ		dddZdS )ChoiceDecoderNc                 K   s   |d | ||d  }	}
|d u r| j j|d}n| }|r%||||S |j|kr@tr3td|f  ||	|jfi |\}}	ntrItd|f  ||	|j|||fi |\}}	|j}tretd||f  |j||ddddd ||
fS )Nr.   'decoding %s as explicitly tagged CHOICEdecoding %s as untagged CHOICE*decoded component %s, effective tag set %sFr   r   r   Z	innerFlag)r)   r0   r   r8   ZcomponentTagMapr   setComponentByType)r   r   r   r   r   r   r   r   r   r;   r<   r,   r\   r   r    r    r!   r"     s@   

zChoiceDecoder.valueDecoderc                 K   s   |d u r| j j|d}	n| }	|r||	||S |	j|krJtr&td|f  |||	jjfi |\}
}||fddi|\}}|tjurIt	dntrStd|f  |||	jj|||fi |\}
}|
j
}trptd|
|f  |	j||
ddddd	 |	|fS )
Nr.   r   r>   Tr^   r   r   Fr   )r)   r0   r   r8   r   r   r   r?   r   r   r   r   )r   r   r   r   r   r   r   r   r   r,   r\   r@   r   r    r    r!   r$     sR   





z"ChoiceDecoder.indefLenValueDecoderr%   )r&   r'   r(   r   Choicer)   r"   r$   r    r    r    r!   r     s    
/r   c                   @   r   )
AnyDecoderNc                 K   s   |d u rd}	n|j tju r||jv}	n||jk}	|	r5|d }
|t|
t| 7 }|
}tr5tdt|  |rF|| j	||t
fi |||S |d | ||d  }}| j	|||fi ||fS )NTfullSubstratez&decoding as untagged ANY, substrate %s)rY   r   TagMaptagMapr   r9   r8   r   r:   r4   r1   )r   r   r   r   r   r   r   r   r   Z
isUntaggedr   r;   r<   r    r    r!   r"   8  s"   
zAnyDecoder.valueDecoderc                 K   s2  |d u rd}	n|j tju r||jv }	n||jk}	|	r#t}
tr"td n|d }|d t|  }
tr;tdt	|
  | j
}|r\|| jur\| j||tfi |}|||
| |t|
 S trbtd | j}|r|||f|dd|\}}|tju r{n|
|7 }
|sgtd|r|
|fS | j|||
fi ||fS )	NFzdecoding as tagged ANYr   z-decoding as untagged ANY, header substrate %srT   Tr]   r^   )rY   r   r   r   r   r	   r8   r9   r   r:   r)   r-   r4   r1   r   r?   r   r_   )r   r   r   r   r   r   r   r   r   ZisTaggedrb   r   r,   r\   r    r    r!   r$   W  sL   



zAnyDecoder.indefLenValueDecoderr%   rA   r    r    r    r!   r   5  s    
 r   c                   @   r   )UTF8StringDecoderN)r&   r'   r(   r   
UTF8Stringr)   r    r    r    r!   r     r   r   c                   @   r   )NumericStringDecoderN)r&   r'   r(   r   NumericStringr)   r    r    r    r!   r     r   r   c                   @   r   )PrintableStringDecoderN)r&   r'   r(   r   PrintableStringr)   r    r    r    r!   r     r   r   c                   @   r   )TeletexStringDecoderN)r&   r'   r(   r   TeletexStringr)   r    r    r    r!   r     r   r   c                   @   r   )VideotexStringDecoderN)r&   r'   r(   r   VideotexStringr)   r    r    r    r!   r     r   r   c                   @   r   )IA5StringDecoderN)r&   r'   r(   r   	IA5Stringr)   r    r    r    r!   r     r   r   c                   @   r   )GraphicStringDecoderN)r&   r'   r(   r   GraphicStringr)   r    r    r    r!   r     r   r   c                   @   r   )VisibleStringDecoderN)r&   r'   r(   r   VisibleStringr)   r    r    r    r!   r     r   r   c                   @   r   )GeneralStringDecoderN)r&   r'   r(   r   GeneralStringr)   r    r    r    r!   r     r   r   c                   @   r   )UniversalStringDecoderN)r&   r'   r(   r   UniversalStringr)   r    r    r    r!   r     r   r   c                   @   r   )BMPStringDecoderN)r&   r'   r(   r   	BMPStringr)   r    r    r    r!   r     r   r   c                   @   r   )ObjectDescriptorDecoderN)r&   r'   r(   r   ObjectDescriptorr)   r    r    r    r!   r    r   r  c                   @   r   )GeneralizedTimeDecoderN)r&   r'   r(   r   GeneralizedTimer)   r    r    r    r!   r    r   r  c                   @   r   )UTCTimeDecoderN)r&   r'   r(   r   UTCTimer)   r    r    r    r!   r    r   r  Nc                 C   s   g | ]}|qS r    r    ).0xr    r    r!   
<listcomp>	      r	  rx   c                   @   s<   e Zd ZeZe ZdZi fddZddde	ddfddZ
dS )DecoderTc                 C   s&   || _ || _i | _i | _td| _d S )N)r   r   )_Decoder__tagMap_Decoder__typeMap_Decoder__tagCache_Decoder__tagSetCacher   _Decoder__eooSentinel)r   r   typeMapr    r    r!   __init__  s
   zDecoder.__init__Nc                 K   s  t rt dtj|t|t|f  |dd}	|	r5| jr5|d d | jkr5t r,t d tj	|dd  fS t
}
| j}| j}| j}| j}|}|tur|tu r|sUtdd}|d }|d	d  }z|| }W na ty   t|}|d
@ }|d@ }|d@ }|dkrd}d}d}z#	 t|| }|d	7 }|dK }||d@ O }|d@ snq||d  }W n ty   tdw tj|||d}|r|||< Y nw |d u r|rz|| }W n ty   td|}|||< Y nw td|}n|| }t}t rt d|  |tu r|stdt|d }|dk rd	}|}n?|dkrV|d@ }t|d	|d	  }t||krAtd|t||f d}|D ]}|dK }||O }qE|d	7 }nd	}d}||d  }|dkro| jsntdnt||k rtd|t|  t}t rt d|t|dkr|p|d | f  |tu r|d u rt}nt}|tu rz|| }W n ty   d }Y nw |rt}nz
||d d	  }W n ty   d }Y nw |rt}nt }t rt d|r|j!j"pd|tu rdp df  tj#|d u rdp|j$j!j" |tu r!|j!t%j&u rz|| }W n ty3   d }Y nw t rt d  |j'( D ]\}}t d!||j!j"f  q@|j)rmt d" |j)( D ]\}}t d!||j!j"f  q]t d#|d u rwdpz|* |f  n||j+ks||j,v r|}t rt d$|j!j"  nd }|d urz||j- }t rt d%|j-f  W n1 ty   t|j+j.|j+j.}z|| }t rt d&|f  W n ty   d }Y nw Y nw |r|}t}nt }nd }t }t r!t d'|tu r|j!j"pd|tu rdpdf  tj#|d u rdp|j!j" |tu r|/d(ds4|s4d)d* }|j0|d+ |dkrQ|j1||||t| |fi |\}
}n|j2||||t| |fi |\}
}t rt d,|j!j"|
j!j"t3|
t4j5ry|
6 pz|
|rt|pdf  t}nf|t u r|r|d j7tj8kr|d j9tj:krt;}t}nd }| j<}t rt d-|r|j!j"pd|tu rdpd.f  |t=u r| j>}t rt d/|j!j"  t}|t?u rtd0||f |tusJt r tj  t d1tj  |
|fS )2NzWdecoder called at scope %s with state %d, working with up to %d octets of substrate: %sr>   Frm   zend-of-octets sentinel foundz"Short octet stream on tag decodingTr   rK   rw          rO   rh   rg   z'Short octet stream on long tag decoding)tagClassrF   tagIdr    z$tag decoded into %s, decoding lengthz%Short octet stream on length decodingz%s<%s at %srt   rs   z6Indefinite 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 %sz<none>r3   zas explicit tag?z!candidate ASN.1 spec is a map of:z
  %s -> %szbut neither of: z,new candidate ASN.1 spec is %s, chosen by %szcandidate ASN.1 spec is %sz8value decoder chosen for an ambiguous type by type ID %szvalue decoder chosen by base %sz*codec %s chosen by ASN.1 spec, decoding %sZrecursiveFlagc                 S   s   | |d | fS r+   r    )ar   cr    r    r!   <lambda>   r
  z"Decoder.__call__.<locals>.<lambda>)r   z@codec %s yields type %s, value:
%s
...remaining substrate is: %szcodec %s chosen, decoding %sz
as failurezcodec %s chosen, decoding valuez%s not in asn1Spec: %rz%decoder left scope %s, call completed)@r8   r   Zscoper9   r:   popsupportIndefLengthr  r   r?   r1   r  r  r  r  stStopstDecodeTagr   r_   r   r   r   r   ZTagr   stDecodeLengthr   r   stGetValueDecoderstGetValueDecoderByTagstGetValueDecoderByAsn1SpecstDecodeValuestTryAsExplicitTagrY   r&   pushr)   r   r   ZpresentTypesr   Z	skipTypesZprettyPrintTyper   r   r   r   r/   updater$   r"   
isinstancer
   ZAsn1ItemZprettyPrintrF   r   r  ZtagClassUniversalexplicitTagDecoderdefaultErrorStatestDumpRawValuedefaultRawDecoderstErrorCondition)r   r   r   r   r   r   r   r   r   r>   r3   r   r  ZtagCacheZtagSetCacher   Z
isShortTagZ
firstOctetZlastTagZ
integerTagr  rF   r  ZlengthOctetIdxsizeZencodedLengthZlengthOctetZconcreteDecoderZ
chosenSpecr   Z
baseTagSetr    r    r!   __call__  s   

#





.


0"
$

4 


F
0


    #
zDecoder.__call__)r&   r'   r(   r,  r)  r   r+  r  r  r  r.  r    r    r    r!   r    s    r  )nZpyasn1r   r   Zpyasn1.codec.berr   Zpyasn1.compat.integerr   Zpyasn1.compat.octetsr   r   r   r	   Zpyasn1.typer
   r   r   r   r   r   __all__ZregisterLoggeer&   ZDEBUG_DECODERr8   r1   objectr   r*   r6   r(  rD   rJ   rN   ra   rd   rf   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  rH   r   rL   r`   rc   re   ro   Z
Enumeratedr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r   r   rB   r  valuesZtypeDecoderr)   rY   ranger  r  r   r"  r!  r$  r#  r*  r,  r  r  r   r    r    r    r!   <module>   s   +`C9k   Seb








	

















 






   