B
    à%Q[ù\  ã            8   @   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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
g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!ej"j#eƒ ej$j#eƒ ej%j#eƒ ej&j#eƒ ej'j#eƒ ej(j#eƒ ej)j#eƒ ej*j#eƒ ej+j#eƒ ej,j#eƒ ej-j#eƒ ej.j#e ƒ ej/j#eƒ ej0j#eƒ ej1j#eƒ ej2j#eƒ ej3j#eƒ ej4j#eƒ ej5j#eƒ ej6j#eƒ ej7j#eƒ ej8j#eƒ ej9j#eƒ ej:j#eƒ ej;j#eƒ ej<j#eƒ iZ=ej$j>eƒ ej%j>eƒ ej&j>eƒ ej'j>eƒ ej(j>eƒ ej)j>eƒ ej*j>eƒ ej+j>eƒ ej?j>eƒ ej-j>eƒ ej@j>eƒ ej,j>eƒ ej.j>e ƒ ejAj>e!ƒ ej/j>eƒ ej0j>eƒ ej1j>eƒ ej2j>eƒ ej3j>eƒ ej4j>eƒ ej5j>eƒ ej6j>eƒ ej7j>eƒ ej8j>eƒ ej9j>eƒ ej:j>eƒ ej;j>eƒ ej<j>eƒ iZBG d%d&„ d&eƒZCeCe=eBƒZDd'S )(é    )Údebug)Úerror)Úeoo)Úto_bytes)Úint2octÚoct2intÚ	ints2octsÚnullÚstr2octsÚisOctetsType)Úchar)Útag)Úuniv)ÚusefulÚencodec               @   s>   e Zd ZdZdZeeƒZdd„ Zdd„ Zdd„ Z	dd
d„Z
d	S )ÚAbstractItemEncoderT)r   r   c             C   sz   |\}}}||B }|r |t jO }|dk r2||B fS |d@ f}|dL }x"|rfd|d@ B f| }|dL }qFW |dB f| S d S )Né   é   é   é€   )r   ZtagFormatConstructed)ÚselfÚ	singleTagÚisConstructedZtagClassZ	tagFormatZtagIdZ
encodedTagÚ	substrate© r   ú\C:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6i93dh7p\pyasn1\pyasn1\codec\ber\encoder.pyÚ	encodeTag   s    



zAbstractItemEncoder.encodeTagc             C   sp   |s| j rdS |dk r|fS d}x|r>|d@ f| }|dL }q"W t|ƒ}|dkr^t d| ¡‚d|B f| S d S )N)r   r   r   éÿ   é   é~   zLength octets overflow (%d))ÚsupportIndefLenModeÚlenr   ÚPyAsn1Error)r   ÚlengthÚdefModer   ZsubstrateLenr   r   r   ÚencodeLength,   s    
z AbstractItemEncoder.encodeLengthc             K   s   t  d¡‚d S )NzNot implemented)r   r"   )r   ÚvalueÚasn1SpecÚ	encodeFunÚoptionsr   r   r   ÚencodeValue;   s    zAbstractItemEncoder.encodeValueNc             K   s   |d kr|j }n|j }|s6| j|||f|Ž\}}}|S | dd¡}	x¬t|jƒD ]ž\}
}|	}|
s–| j|||f|Ž\}}}|sŽ|rŽ| dd¡rŽ|S |s–d}|  ||¡}||  t|ƒ|¡7 }|rÖt|ƒ| }|sì|| j	7 }qN|| }|sN|| j
7 }qNW |süt|ƒ}|S )Nr$   TÚ
ifNotEmptyF)ÚtagSetr*   ÚgetÚ	enumerateZ	superTagsr   r%   r!   r   ÚeooOctetsSubstrateÚeooIntegerSubstrate)r   r&   r'   r(   r)   r,   r   r   ZisOctetsr$   Úidxr   ZdefModeOverrideÚheaderr   r   r   r   >   s:    zAbstractItemEncoder.encode)NN)Ú__name__Ú
__module__Ú__qualname__r    r0   r   r/   r   r%   r*   r   r   r   r   r   r      s   r   c               @   s   e Zd Zdd„ ZdS )ÚEndOfOctetsEncoderc             K   s
   t ddfS )NFT)r	   )r   r&   r'   r(   r)   r   r   r   r*   u   s    zEndOfOctetsEncoder.encodeValueN)r3   r4   r5   r*   r   r   r   r   r6   t   s   r6   c               @   s   e Zd ZdZdd„ ZdS )ÚBooleanEncoderFc             K   s   |rdp
dddfS )N)é   )r   Fr   )r   r&   r'   r(   r)   r   r   r   r*   |   s    zBooleanEncoder.encodeValueN)r3   r4   r5   r    r*   r   r   r   r   r7   y   s   r7   c               @   s   e Zd ZdZdZdd„ ZdS )ÚIntegerEncoderFc             K   s,   |dkr| j rdS dS tt|ƒdd�ddfS )Nr   )r   FF))r   FFT)ÚsignedF)ÚsupportCompactZeror   Úint)r   r&   r'   r(   r)   r   r   r   r*   „   s
    zIntegerEncoder.encodeValueN)r3   r4   r5   r    r;   r*   r   r   r   r   r9   €   s   r9   c               @   s   e Zd Zdd„ ZdS )ÚBitStringEncoderc             K   sü   |d k	r|  |¡}t|ƒ}|d r4|d|d  > }n|}| dd¡}|rXt|ƒ|d kr~| ¡ }tt|ƒd | ƒ| ddfS |jj}	|	r˜t |	|	¡}
nt ¡ }
|j |
d�}d}t	}x<||k rð|}t
||d  |ƒ}|||||… |f|Ž7 }q¶W |ddfS )Nr   ÚmaxChunkSizer   FT)r,   )Úcloner!   r-   ÚasOctetsr   r,   ÚbaseTagr   ÚTagSetr	   Úmin)r   r&   r'   r(   r)   ZvalueLengthZalignedValuer>   r   rA   r,   ÚstopÚstartr   r   r   r*   �   s,    

zBitStringEncoder.encodeValueN)r3   r4   r5   r*   r   r   r   r   r=   �   s   r=   c               @   s   e Zd Zdd„ ZdS )ÚOctetStringEncoderc             K   s  |d kr|  ¡ }nt|ƒs*| |¡  ¡ }n|}| dd¡}|rJt|ƒ|krT|ddfS |d krŒ|jj}|rvt ||¡}nt ¡ }|j|d�}n6t|ƒsÂ|jj}|r®t ||¡}nt ¡ }|j|d�}d}	t	}x4||	|	| … }
|
sâP |||
|f|Ž7 }|	|7 }	qÌW |ddfS d S )Nr>   r   FT)r,   )
r@   r   r?   r-   r!   r,   rA   r   rB   r	   )r   r&   r'   r(   r)   r   r>   rA   r,   ÚposÚchunkr   r   r   r*   ¶   s:    

zOctetStringEncoder.encodeValueN)r3   r4   r5   r*   r   r   r   r   rF   ´   s   rF   c               @   s   e Zd ZdZdd„ ZdS )ÚNullEncoderFc             K   s
   t ddfS )NFT)r	   )r   r&   r'   r(   r)   r   r   r   r*   ñ   s    zNullEncoder.encodeValueN)r3   r4   r5   r    r*   r   r   r   r   rI   î   s   rI   c               @   s   e Zd ZdZdd„ ZdS )ÚObjectIdentifierEncoderFc             K   s°  |d k	r|  |¡}| ¡ }y|d }|d }W n$ tk
rR   t d|f ¡‚Y nX d|  krhdkrÚn nn|dkrŒ|d f|dd …  }nL|dkr¨|f|dd …  }n0|dkrÈ|d f|dd …  }nt d|f ¡‚n0|dkrú|d f|dd …  }nt d|f ¡‚d	}x–|D ]Ž}	d|	  k�r0d
k�r@n n||	f7 }n`|	d
k�rŽ|	d
@ f}
|	dL }	x&|	�r‚d|	d
@ B f|
 }
|	dL }	�q^W ||
7 }nt d|	|f ¡‚�qW |ddfS )Nr   r8   zShort OID %sé'   é(   é   éP   z"Impossible first/second arcs at %sr   r   r   r   zNegative OID arc %s at %sF)r?   ZasTupleÚ
IndexErrorr   r"   )r   r&   r'   r(   r)   ÚoidÚfirstÚsecondÚoctetsZsubOidÚresr   r   r   r*   ø   s@    




z#ObjectIdentifierEncoder.encodeValueN)r3   r4   r5   r    r*   r   r   r   r   rJ   õ   s   rJ   c               @   s0   e Zd ZdZdZedd„ ƒZdd„ Zdd„ Zd	S )
ÚRealEncoderr   rM   c             C   sÀ   d\}}| dk rd}|dk r d}| |9 } |dkrZ| dt |ƒd |  9 } t |ƒd | }n0|dkrŠ| dt |ƒd |  9 } t |ƒd | }x$t| ƒ| krª| |9 } |d	8 }qŒP qŒW |t| ƒ||fS )
N)r8   r8   r   éÿÿÿÿr   rM   é   é   é   r8   )Úabsr<   )ÚmÚencbaseÚeÚmsÚesr   r   r   Ú_dropFloatingPoint.  s&    zRealEncoder._dropFloatingPointc             C   s  |\}}}dddg}|j |kr.|  ||j |¡S | j |krH|  || j |¡S |||g}|||g}d}d}	tdƒ}xŽtdƒD ]‚}
|  ||
 ||
 ||
 ¡\}||
< ||
< ||
< t||
 ƒt|ƒk sÜt||
 ƒt|ƒkrv||
 |k rv||
 }t||
 ƒ}||
 }	qvW |||	|fS )NrM   r   rX   r8   ÚinfrW   )Ú
binEncBaser`   ÚfloatÚrangerZ   r<   )r   r&   r[   Úbr]   ZencBaseZmantissaZ	exponentaÚsignr\   Úir   r   r   Ú_chooseEncBaseE  s$    





.4zRealEncoder._chooseEncBasec             K   sÜ  |d k	r|  |¡}|jrdS |jr&dS |\}}}|s>tddfS |dkrjtd||dkrXdpZd	|f ƒddfS |d
k�rÊd}|  |¡\}	}}
}|	dk rš|dO }|
d
krÆx„|d@ dkrÂ|dL }|d7 }q¤W nb|
dkrúx |d@ dkrî|dL }|d7 }qÐW |dO }n.x$|d@ dk�r|dL }|d7 }� qüW |dO }d}x$|d@ dk�rP|dL }|d7 }�q.W |dk�rft d¡‚||d
> O }t}|dk�sŠ|dk�r˜t|d@ ƒ}n†x(|dk�rÀt|d@ ƒ| }|dL }�qšW |dk�rð|�rðt	|d ƒd@ �rðtdƒ| }|dk�r|�rt	|d ƒd@ �stdƒ| }t
|ƒ}|dk�r:t d¡‚|dk�rFn@|d
k�rZ|dO }n,|dk�rn|d
O }n|dO }t|d@ ƒ| }t}x$|�r®t|d@ ƒ| }|dL }�qŒW t|ƒ| | }|ddfS t d| ¡‚d S )N))é@   FF))éA   FFFTé
   z%dE%s%dr   ú+Ú rM   r   ri   r8   r   r   rW   rX   é   rY   é    zScale factor overflowrV   r   )r   rV   zReal exponent overflowzProhibited Real base %s)r?   Z	isPlusInfZ
isMinusInfr	   r
   rh   r   r"   r   r   r!   )r   r&   r'   r(   r)   r[   re   r]   Úfor^   r\   ZsfÚeoÚnZpor   r   r   r   r*   ]  s€    


$



""







zRealEncoder.encodeValueN)	r3   r4   r5   r    rb   Ústaticmethodr`   rh   r*   r   r   r   r   rU   *  s
   rU   c               @   s   e Zd ZdZdd„ ZdS )ÚSequenceEncoderFc          	   K   s¤  t }|d krº| ¡  |j}xœt| ¡ ƒD ]Œ\}}|rp|| }	|	jrJ|jsJq(|	jr\||	jkr\q(| j	rp|j
|	jd� |||f|Ž}
|r¬|	jr¬|	j}|jr¬| |¡s¬||
|f|Ž}
||
7 }q(W nàxÞt|jjƒD ]Î\}}	y||	j }W n* tk
�r   t d|	j|f ¡‚Y nX |	j�r |	j|k�r qÈ|	j�r6||	jk�r6qÈ| j	�rL|j
|	jd� |||| f|Ž}
|	j�rŽ|	j}|j�rŽ| |¡�sŽ||
|f|Ž}
||
7 }qÈW |ddfS )N)r+   z#Component name "%s" not found in %rT)r	   ÚverifySizeSpecÚcomponentTyper.   ÚvaluesZ
isOptionalZisValueZisDefaultedZ
asn1ObjectÚomitEmptyOptionalsÚupdateZopenTyper,   ZisSameTypeWithÚ
namedTypesÚnameÚKeyErrorr   r"   )r   r&   r'   r(   r)   r   rz   r1   Ú	componentÚ	namedTyperH   ZwrapTyper   r   r   r*   «  sJ    
zSequenceEncoder.encodeValueN)r3   r4   r5   rx   r*   r   r   r   r   rt   ¦  s   rt   c               @   s   e Zd Zdd„ ZdS )ÚSequenceOfEncoderc             K   sR   |d kr|  ¡  n|j}t}x*t|ƒD ]\}}|||| |f|Ž7 }q&W |ddfS )NT)ru   rv   r	   r.   )r   r&   r'   r(   r)   r   r1   r}   r   r   r   r*   í  s    
zSequenceOfEncoder.encodeValueN)r3   r4   r5   r*   r   r   r   r   r   ì  s   r   c               @   s   e Zd Zdd„ ZdS )ÚChoiceEncoderc                s~   |d krˆ   ¡ }nX‡ fdd„|jjD ƒ}t|ƒdkrRt dt|ƒrFdpHdˆ f ¡‚|d }ˆ | }|| }|||f|ŽddfS )	Nc                s   g | ]}|j ˆ kr|j ‘qS r   )r{   )Ú.0r~   )r&   r   r   ú
<listcomp>   s    z-ChoiceEncoder.encodeValue.<locals>.<listcomp>r8   z%s components for Choice at %rz	Multiple zNone r   T)ZgetComponentrv   rz   r!   r   r"   )r   r&   r'   r(   r)   r}   Únamesr{   r   )r&   r   r*   ü  s    
zChoiceEncoder.encodeValueN)r3   r4   r5   r*   r   r   r   r   r€   û  s   r€   c               @   s   e Zd Zdd„ ZdS )Ú
AnyEncoderc             K   s<   |d kr|  ¡ }nt|ƒs(| |¡  ¡ }|| dd¡ dfS )Nr$   T)r@   r   r?   r-   )r   r&   r'   r(   r)   r   r   r   r*     s
    
zAnyEncoder.encodeValueN)r3   r4   r5   r*   r   r   r   r   r„     s   r„   c               @   s*   e Zd ZdZdZi fdd„Zddd„ZdS )ÚEncoderNc             C   s   || _ || _d S )N)Ú_Encoder__tagMapÚ_Encoder__typeMap)r   ÚtagMapÚtypeMapr   r   r   Ú__init__`  s    zEncoder.__init__c       
      K   s¾  y|d kr|j }n|j }W n$ tk
r>   t d|f ¡‚Y nX tjtj@ rTtj}nd }|rž|d| dd¡ rrdptd| dd¡|d krŽ| ¡ p”| ¡ |f ƒ | j	d k	r¶|j
| j	d	� | jd k	rÎ|j
| jd
� y&| j| }|rò|d|jj|f ƒ W n� tk
�r„   |d k�r|j}n|j}t |j|j¡}y| j| }W n( tk
�rd   t d||f ¡‚Y nX |�r€|d|jj|f ƒ Y nX |j||| f|Ž}	|�rº|d|t|	ƒt |	¡f ƒ |	S )Nz<Value %r is not ASN.1 type instance and "asn1Spec" not givenzBencoder called in %sdef mode, chunk size %s for type %s, value:
%sr$   TÚinrm   r>   r   )r$   )r>   z)using value codec %s chosen by type ID %szNo encoder for %r (%s)z(using value codec %s chosen by tagSet %sz;codec %s built %s octets of substrate: %s
encoder completed)ÚtypeIdÚAttributeErrorr   r"   r   ÚloggerZflagEncoderr-   ZprettyPrintTypeÚfixedDefLengthModery   ÚfixedChunkSizer‡   Ú	__class__r3   r|   r,   r   rB   rA   r†   r   r!   Zhexdump)
r   r&   r'   r)   rŒ   rŽ   ZconcreteEncoderr,   Z
baseTagSetr   r   r   r   Ú__call__d  sH    
>



zEncoder.__call__)N)r3   r4   r5   r�   r�   rŠ   r’   r   r   r   r   r…   [  s   r…   N)EZpyasn1r   r   Zpyasn1.codec.berr   Zpyasn1.compat.integerr   Zpyasn1.compat.octetsr   r   r   r	   r
   r   Zpyasn1.typer   r   r   r   Ú__all__Úobjectr   r6   r7   r9   r=   rF   rI   rJ   rU   rt   r   r€   r„   ZendOfOctetsr,   ÚBooleanZIntegerZ	BitStringZOctetStringZNullZObjectIdentifierZ
EnumeratedÚRealZ
SequenceOfZSetOfZChoiceZ
UTF8StringZNumericStringZPrintableStringZTeletexStringZVideotexStringZ	IA5StringZGraphicStringZVisibleStringZGeneralStringZUniversalStringZ	BMPStringZObjectDescriptorZGeneralizedTimeZUTCTimerˆ   rŒ   ÚSetÚSequenceZAnyr‰   r…   r   r   r   r   r   Ú<module>   sœ    _%:5|F



















































v