o
    y‡j½î  ã                   @   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dZdZd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 d0d1„ d1e-ƒZ.G d2d3„ d3e-ƒZ/G d4d5„ d5e(ƒZ0G d6d7„ d7eƒZ1G d8d9„ d9e$ƒZ2G d:d;„ d;e$ƒZ3G d<d=„ d=e$ƒZ4G d>d?„ d?e$ƒZ5G d@dA„ dAe$ƒZ6G dBdC„ dCe$ƒZ7G dDdE„ dEe$ƒZ8G dFdG„ dGe$ƒZ9G dHdI„ dIe$ƒZ:G dJdK„ dKe$ƒZ;G dLdM„ dMe$ƒZ<G dNdO„ dOe$ƒZ=G dPdQ„ dQe$ƒZ>G dRdS„ dSe$ƒZ?i ej@jAe!ƒ “ejBjAe"ƒ “ejCjAe#ƒ “ejDjAe$ƒ “ejEjAe%ƒ “ejFjAe&ƒ “ejGjAe!ƒ “ejHjAe'ƒ “ejIjAe*ƒ “ejJjAe-ƒ “ejKjAe0ƒ “ejLjAe2ƒ “ejMjAe3ƒ “ejNjAe4ƒ “ejOjAe5ƒ “ejPjAe6ƒ “ejQjAe7ƒ “ejRjAe8ƒ ejSjAe9ƒ ejTjAe:ƒ ejUjAe;ƒ ejVjAe<ƒ ejWjAe=ƒ ejXjAe>ƒ ejYjAe?ƒ i¥ZZejJj[e.ƒ ej\j[e/ƒ ejIj[e+ƒ ej]j[e,ƒ ejKj[e0ƒ ej^j[e1ƒ iZ_eZ `¡ D ]ZaeajbdTu�r@eajbjcj[Z[e[dTu�r@e[e_v�r@eae_e[< �q%dUdV„ eddWƒD ƒ\
ZeZfZgZhZiZjZkZlZmZnG dXdY„ dYeƒZoeoeZe_ƒZpdTS )Zé    )Ú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   é   éd   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!   ÚsubstrateCollector4   s   z(AbstractSimpleDecoder.substrateCollectorc                 K   s<   |  d¡r|S |d u r| jj||d�S |tu r|S | |¡S )NÚnative©r   )Úgetr)   ÚcloneÚnoValue©r   r   r   Úvaluer   r    r    r!   Ú_createComponent8   s   

z&AbstractSimpleDecoder._createComponentN)r&   r'   r(   Ústaticmethodr/   r7   r    r    r    r!   r,   3   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 )Nr:   zPexplicit tag container carries %d octets of trailing payload (will be lost!): %s)r7   ÚLOGÚlenr   Úhexdump)r   r   r   r   r   r   r   r   r   ÚheadÚtailr6   Ú_r    r    r!   r"   F   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¡‚)Nr:   ÚallowEooTz Missing end-of-octets terminator)r7   r   ÚendOfOctetsr   r   )r   r   r   r   r   r   r   r   r   r6   Ú	eooMarkerr    r    r!   r$   Z   s   þ

z'ExplicitTagDecoder.indefLenValueDecoderr%   ©r&   r'   r(   r   ÚAnyr)   r"   r$   r    r    r    r!   r9   C   s    

þþr9   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)Úsigned)Ú	tagFormatr   ÚtagFormatSimpler   r   r7   r   )r   r   r   r   r   r   r   r   r   r>   r?   r6   r    r    r!   r"   t   s   
zIntegerDecoder.valueDecoderr%   )r&   r'   r(   r   ÚIntegerr)   r"   r    r    r    r!   rG   q   ó
    
þrG   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   )rG   r7   r5   r    r    r!   r7   ‰   s
   ÿÿzBooleanDecoder._createComponentN)r&   r'   r(   r   ÚBooleanr)   r7   r    r    r    r!   rN   †   s    
rN   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r–t d| ¡‚| jj	|dd … d||d�}|	sw| j |||fi |¤Ž|
fS )NzEmpty BIT STRING substrater   é   úTrailing bits overflow %srO   T)ÚinternalFormatÚpaddingú*Constructed encoding form prohibited at %sú$assembling constructed serialization©rU   r   ©rU   ÚprependrV   )r7   r4   r   r   rJ   r   rK   r   r)   ÚfromOctetStringÚsupportConstructedFormÚ	__class__r&   r;   r/   r	   )r   r   r   r   r   r   r   r   r   r>   r?   ÚtrailingBitsr6   Ú	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 )
NTrY   ©r   rA   r   rS   rT   rO   rZ   ú!No EOO seen before substrate ends)r7   r4   r/   r)   r\   r	   r   rB   r   r   r   ÚSubstrateUnderrunError)r   r   r   r   r   r   r   r   r   r`   ra   r_   r    r    r!   r$   É   s2   
þ
þ
ÿþó
z%BitStringDecoder.indefLenValueDecoderr%   )	r&   r'   r(   r   Ú	BitStringr)   r]   r"   r$   r    r    r    r!   rR   Ž   s    

þ8þrR   c                   @   rQ   )	ÚOctetStringDecoderr:   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   rW   rX   r   )r7   r4   rJ   r   rK   r]   r   r   r^   r&   r;   r/   r	   r)   )r   r   r   r   r   r   r   r   r   r>   r?   Úheaderra   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 )NTrb   rc   )	r/   r7   r4   r	   r)   r   rB   r   rd   )r   r   r   r   r   r   r   r   r   r.   rg   ra   r    r    r!   r$     s,   ÿý
ý
øÿz'OctetStringDecoder.indefLenValueDecoderr%   )	r&   r'   r(   r   ÚOctetStringr)   r]   r"   r$   r    r    r    r!   rf   î   s    

þ!þrf   c                   @   rF   )ÚNullDecoderr:   Nc                 K   sd   |d j tjkrt d¡‚|d |… ||d … }	}
| j||dfi |¤Ž}|	r.t d| ¡‚||
fS )Nr   rH   r:   z&Unexpected %d-octet substrate for Null)rJ   r   rK   r   r   r7   )r   r   r   r   r   r   r   r   r   r>   r?   ra   r    r    r!   r"   4  s   
zNullDecoder.valueDecoderr%   )r&   r'   r(   r   ÚNullr)   r"   r    r    r    r!   ri   1  rM   ri   c                   @   rF   )ÚObjectIdentifierDecoderr    Nc                 K   sô  |d j tjkrt d¡‚|d |… ||d … }	}
|	s!t d¡‚t|	ƒ}	g }d}t|	ƒ}||k r›|	| }|d7 }|dk rC| |¡ nT|dkrŽ|}d}d}|dkr„|d7 }|tkrbt dt|f ¡‚|d> |d@  }||krxt 	d	t
|ƒf ¡‚|	| }|d7 }|dksQ| |d> | ¡ n	|dkr—t d
¡‚||k s1d|d   kr§dkr°n n| dd¡ n;d|d   kr¼dkrÍn n|d  d8  < | dd¡ n|d dkrâ|d  d8  < | dd¡ n	t d|	d  ¡‚| j||t
|ƒfi |¤Ž|
fS )Nr   rH   zEmpty substraterO   é€   zEOID arc exceeds maximum continuation octets limit (%d) at position %drS   é   z#Short substrate for sub-OID past %sz"Invalid octet 0x80 in OID encodingé'   é(   éO   éP   é   zMalformed first OID octet: %s)rJ   r   rK   r   r   r   r<   ÚappendÚMAX_OID_ARC_CONTINUATION_OCTETSrd   ÚtupleÚinsertr7   )r   r   r   r   r   r   r   r   r   r>   r?   ÚoidÚindexÚsubstrateLenÚsubIdÚ	nextSubIdÚcontinuationOctetCountr    r    r!   r"   I  s`   

ÿÿÿó
â!z$ObjectIdentifierDecoder.valueDecoderr%   )r&   r'   r(   r   ÚObjectIdentifierr)   r"   r    r    r    r!   rk   F  rM   rk   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r£t 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@ røtrïtdƒ |d@ rõdpöd}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   rH   g        rO   rl   zIncomplete floating-point valuezdecoding binary encoded REALé   é   zReal exponent screwedéÿÿÿÿé   rr   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))rJ   r   rK   r   r   r7   r   r;   ÚintÚfloatrd   Ú
ValueError)r   r   r   r   r   r   r   r   r   r>   r?   ÚfoÚnÚeoÚeÚbÚpÚsfr6   r    r    r!   r"   ‹  s�   


ý

ý


ÿ€ÿÿÿzRealDecoder.valueDecoderr%   )r&   r'   r(   r   ÚRealr)   r"   r    r    r    r!   r~   ˆ  s
    þr~   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 )NrO   r1   z@guessed %r container type (pass `asn1Spec` to guide the decoder)F©ÚverifyConstraintsÚ	matchTagsÚmatchConstraints)Úsetr   rB   rs   Úaddr   r<   ÚprotoRecordComponentÚprotoSequenceComponentr3   r   ÚTagSetÚbaseTagÚ	superTagsr;   Ú	enumerateÚsetComponentByPosition)r   r   r   r   r   Ú
componentsÚcomponentTypesra   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
r t
d| r•dp–d|ršd	p›d|f ƒ tƒ }d}|	�r$|s­d }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 }|	s¨t
�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
�rÅt
d|j#j$|j.|j#j$|j*j.f ƒ |j* '¡ D ]\}}t
d||f ƒ �q·z|j*| }W n t/�yâ   t
�rÞt
d|f ƒ Y Y �qrw Y nw t
�rñt
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 expectedr1   ©r   r   z)Unused trailing %d octets encountered: %sú5decoding %sdeterministic %s type %r chosen by type IDúnon-r:   ÚSETú"Excessive components decoded at %rFr›   rO   úseen component indices %sú,ASN.1 object %s has uninitialized componentsÚ	openTypesúuser-specified open types map:ú%s -> %rÚdecodeOpenTypesúJdefault 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`)4rJ   r   ÚtagFormatConstructedr   r   r3   r)   r¡   r¢   rª   r;   r<   r   r=   ÚclearÚtypeIdr   ÚSequenceÚSetÚcomponentTypeÚhasOptionalOrDefaultrŸ   ÚtagMapUniquer.   Ú
isOptionalÚisDefaultedÚgetTagMapNearPositionÚ
IndexErrorÚgetPositionByTypeÚeffectiveTagSetÚgetPositionNearTyper§   r    ÚrequiredComponentsÚissubsetr^   r&   ÚhasOpenTypesr2   Úitemsr¦   Ú
namedTypesÚopenTypeÚgetComponentByPositionÚisValueÚgetComponentByNameÚnameÚKeyErrorÚSetOfÚ
SequenceOfÚasOctetsÚisInconsistent)r   r   r   r   r   r   r   r   r   r>   r?   r.   ÚtrailingrÎ   Ú	isSetTypeÚisDeterministicÚseenIndicesr—   rÀ   ra   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r€td| rudpvd	|rzd
p{d	|f ƒ tƒ }d}|�rt|
ƒ|kr‘d }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 rÙn8|s÷|
r÷|ræ|
 |j¡}n|
| jsð|
| jr÷|
 |j|¡}|	j ||dddd� | !|¡ |d7 }|sˆt "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�r²td|	j%j&|j0|	j%j&|j,j0f ƒ |j, )¡ D ]\}}td||f ƒ �q¤z|j,| }W n t1�yÏ   t�rËtd|f ƒ Y Y �q_w Y nw t�rÞt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«   r1   r¬   T)rA   r­   r®   r:   r¯   r°   rA   Fr›   rO   rc   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   r   rº   )6rJ   r   r»   r   r   r3   r)   r¡   r¢   rª   Údictr¼   r½   r   r¾   r¿   rÀ   rÁ   r;   rŸ   r<   rÂ   r.   rÃ   rÄ   rÅ   rÆ   r   rB   rÇ   rÈ   rÉ   r§   r    rd   rÊ   rË   r^   r&   rÌ   r2   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—   ra   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 )Nr1   ú'decoding %s as explicitly tagged CHOICEúdecoding %s as untagged CHOICEú*decoded component %s, effective tag set %sF©rœ   r�   rž   Ú	innerFlag)r)   r3   r   r;   ÚcomponentTagMaprÈ   ÚsetComponentByType)r   r   r   r   r   r   r   r   r   r>   r?   r.   ra   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 )
Nr1   ró   rA   Trc   rô   rõ   Frö   )r)   r3   r   r;   rÀ   rÂ   r   rB   r   r   rÈ   rù   )r   r   r   r   r   r   r   r   r   r.   ra   rC   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)r^   r   ÚTagMapÚtagMapr   r<   r;   r   r=   r7   r4   )r   r   r   r   r   r   r   r   r   Ú
isUntaggedrü   r>   r?   r    r    r!   r"   J  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 %srX   Trb   rc   )r^   r   rý   rþ   r   r	   r;   r<   r   r=   r)   r/   r7   r4   r   rB   r   rd   )r   r   r   r   r   r   r   r   r   ÚisTaggedrg   rü   r.   ra   r    r    r!   r$   i  sL   
€þ
þ
ù
ÿzAnyDecoder.indefLenValueDecoderr%   rD   r    r    r    r!   rû   G  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  r†   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   sX  t rt dtj|t|ƒt |¡f ƒ | dd¡}	|	tkr#t dt ¡‚|	d |d< | 	dd¡}
|
rL| j
rL|d d… | jkrLt rCt d	ƒ tj|dd … fS t}| j}| j}| j}| j}|}|tu�r|tu �r&|smt d
¡‚d}|d }|dd … }z|| }W nm tyì   t|ƒ}|d@ }|d@ }|d@ }|dkrÜd}d}d}z/	 t|| ƒ}|d7 }|tkr¸t dtf ¡‚|dK }||d@ O }|d@ sÇnq¢||d … }W n tyÛ   t d¡‚w tj|||d�}|rê|||< Y nw |d u �r|�rz|| }W n t�y   t d|¡}|||< Y nw t d|¡}n|| }t}t �r&t d| ƒ |tu �rÅ|�s3t d¡‚t|d ƒ}|dk �rCd}|}n?|dk�r~|d@ }t|d|d … ƒ}t|ƒ|k�rit d|t|ƒ|f ¡‚d}|D ]}|dK }||O }�qm|d7 }nd}d}||d … }|dk�r—| j
�s–t d¡‚nt|ƒ|k �r©t d|t|ƒ  ¡‚t}t �rÅt d|t |dk�r»|�pÀ|d |… ¡f ƒ |tu �rÔ|d u �rÒt }nt!}|t u �r=z|| }W n t�yë   d }Y nw |�ròt"}nz
||d d…  }W n t�y   d }Y nw |�rt"}nt#}t �r=t d|�r|j$j%�pd|t"u �r'd �p(d!f ƒ tj &|d u �r7d"�p;|j'j$j%¡ |t!u �rI|j$t(j)u �r¨z|| }W n t�y[   d }Y nw t �r§t d#ƒ |j* +¡ D ]\}}t d$||j$j%f ƒ �qh|j,�r•t d%ƒ |j, +¡ D ]\}}t d$||j$j%f ƒ �q…t d&|d u �rŸd�p¢| -¡ |f ƒ n||j.k�s´||j/v �rÂ|}t �rÁt d'|j$j% ƒ nd }|d u�rz||j0 }t �rÚt d(|j0f ƒ W n1 t�y   t |j.j1|j.j1¡}z|| }t �rüt d)|f ƒ W n t�y	   d }Y nw Y nw |�r|}t"}nt#}nd }t#}t �rIt d*|t"u �r+|j$j%�p,d|t"u �r4d �p5d!f ƒ tj &|d u �rDd"�pG|j$j%¡ |t"u �r³| d+d¡�s\|�s\d,d-„ }|j2|d.� |dk�ry|j3||||t| |fi |¤Ž\}}n|j4||||t| |fi |¤Ž\}}t �r°t d/|j$j%|j$j%t5|t6j7ƒ�r¡| 8¡ �p¢||�r«t |¡�p¬df ƒ t}nf|t#u �rò|�rÒ|d j9tj:k�rÒ|d j;tj<k�rÒt=}t"}nd }| j>}t �ròt d0|�rä|j$j%�påd|t"u �ríd �pîd1f ƒ |t?u �r| j@}t �rt d2|j$j% ƒ t"}|tAu �rt d3||f ¡‚|tusat �r(tj 	¡  t d4tj ƒ ||fS )5NzWdecoder called at scope %s with state %d, working with up to %d octets of substrate: %sÚ_nestingLevelr   z0ASN.1 structure nesting depth exceeds limit (%d)rO   rA   Frr   zend-of-octets sentinel foundz"Short octet stream on tag decodingTr…   é    é   z%Tag ID octet count exceeds limit (%d)rS   rm   rl   z'Short octet stream on long tag decoding)ÚtagClassrJ   ÚtagIdr    z$tag decoded into %s, decoding lengthz%Short octet stream on length decodingz%s<%s at %sr‚   r�   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>r6   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 %sÚ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)Br;   r   Úscoper<   r=   r2   ÚMAX_NESTING_DEPTHr   r   ÚpopÚsupportIndefLengthr&  r   rB   r4   r"  r#  r$  r%  ÚstStopÚstDecodeTagrd   rÔ   r   ÚMAX_TAG_OCTETSrÆ   r   ÚTagr£   ÚstDecodeLengthr   ÚstGetValueDecoderÚstGetValueDecoderByTagÚstGetValueDecoderByAsn1SpecÚstDecodeValueÚstTryAsExplicitTagr^   r&   Úpushr)   r   rý   ÚpresentTypesrÍ   Ú	skipTypesÚprettyPrintTyper   rþ   r½   r¤   Úupdater$   r"   Ú
isinstancer
   ÚAsn1ItemÚprettyPrintrJ   r»   r,  ÚtagClassUniversalÚexplicitTagDecoderÚdefaultErrorStateÚstDumpRawValueÚdefaultRawDecoderÚstErrorCondition) r   r   r   r   r   r   r   r   r   r)  rA   r6   rþ   r'  ÚtagCacheÚtagSetCacherü   Ú
isShortTagÚ
firstOctetÚlastTagÚ
integerTagr,  rJ   r-  ÚlengthOctetIdxÚsizeÚencodedLengthÚlengthOctetÚconcreteDecoderÚ
chosenSpecrÞ   Ú
baseTagSetr    r    r!   Ú__call__-  sÜ   ÿ


ÿÿÿõÿÿÿ€Ú
(ý
ÿ

ÿ


ÿ.


ÿÿ0"
ÿ$€€

€€ÿ€ö4 

ýüý
üF
0


ÿ � �Ü  (
zDecoder.__call__)r&   r'   r(   rN  rK  rû   rM  r6  r(  r8  r\  r    r    r    r!   r!    s    þr!  )qÚpyasn1r   r   Úpyasn1.codec.berr   Úpyasn1.compat.integerr   Úpyasn1.compat.octetsr   r   r   r	   Úpyasn1.typer
   r   r   r   r   r   Ú__all__ÚregisterLoggeer&   ÚDEBUG_DECODERr;   r4   Úobjectr   rt   r9  r4  r,   r9   rJ  rG   rN   rR   rf   ri   rk   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  rL   r   rP   re   rh   rj   r}   Ú
Enumeratedr‘   r¾   r¿   rú   r  r  r  r  r
  r  r  r  r  r  r  r  r  r  rþ   r½   rÕ   rÖ   rE   r'  ÚvaluesÚtypeDecoderr)   r^   Úranger8  r;  r<  r>  r=  r@  r?  rL  rN  r7  r!  r   r    r    r    r!   Ú<module>   s   +`CBk   Seb
ÿ
þ
ý
ü
û
ú
ù
ø
	÷

ö
õ
ó
ò
ñ
ð
ï
î







å
 




ú

€÷   