o
    ÒèFhòs  ã                   @   sB  d dl 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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dgZejeejd�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)i 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!ƒ ej=j+e!ƒ 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!ƒ i
¥ZFi ej,jGeƒ “ej-jGeƒ “ej.jGe ƒ “ej/jGe!ƒ “ej0jGe"ƒ “ej1jGe#ƒ “ej2jGe$ƒ “ej3jGeƒ “ej4jGe%ƒ “ejHjGe&ƒ “ej6jGe'ƒ “ejIjGe&ƒ “ej5jGe'ƒ “ej7jGe(ƒ “ejJjGe)ƒ “ej8jGe!ƒ “ej9jGe!ƒ “ej:jGe!ƒ ej;jGe!ƒ ej<jGe!ƒ ej=jGe!ƒ ej>jGe!ƒ ej?jGe!ƒ ej@jGe!ƒ ejAjGe!ƒ ejBjGe!ƒ ejCjGe!ƒ ejDjGe!ƒ ejEjGe!ƒ i¥ZKeFZLeKZMG d+d,„ d,eƒZNG d-d„ deƒZOeOƒ ZPdS ).é    N)Údebug)Úerror)Úeoo)Ú_MISSING)Úto_bytes)Úint2octÚoct2intÚ	ints2octsÚnullÚstr2octsÚisOctetsType)Úchar)Útag)Úuniv)ÚusefulÚEncoderÚencode)Úflagsc                   @   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   st   |\}}}||B }|r|t jO }|dk r||B fS |d@ f}|dL }|r3d|d@ B f| }|dL }|s$|dB f| S )Né   é   é   é€   )r   ÚtagFormatConstructed)ÚselfÚ	singleTagÚisConstructedÚtagClassÚ	tagFormatÚtagIdÚ
encodedTagÚ	substrate© r"   úQ/var/www/html/loop/nvenv/lib/python3.10/site-packages/pyasn1/codec/ber/encoder.pyÚ	encodeTag"   s   



þzAbstractItemEncoder.encodeTagc                 C   sj   |s| j rdS |dk r|fS d}|r|d@ f| }|dL }|st|ƒ}|dkr.t d| ¡‚d|B f| S )N)r   r   r"   éÿ   é   é~   zLength octets overflow (%d))ÚsupportIndefLenModeÚlenr   ÚPyAsn1Error)r   ÚlengthÚdefModer!   ÚsubstrateLenr"   r"   r#   ÚencodeLength6   s   
þz AbstractItemEncoder.encodeLengthc                 K   s
   t  d¡‚)NzNot implemented)r   r*   ©r   ÚvalueÚasn1SpecÚ	encodeFunÚoptionsr"   r"   r#   ÚencodeValueJ   ó   
zAbstractItemEncoder.encodeValueNc              
   K   s´  |d u r|j }n|j }|s| j|||fi |¤Ž\}}}|S | dd¡}	t}t|jƒD ]§\}
}|	}|
s�z| j|||fi |¤Ž\}}}W n tjyY   t 	¡ }t d||d f ¡‚w t
rit
d|rbdpcd||f ƒ |sw|rw| dd	¡rw|  S |s�d}t
r�t
d
ƒ |  ||¡}t
r›t
d|r�dp�d|t t|ƒ¡f ƒ ||  t|ƒ|¡7 }t
r¶t
dt|ƒt t|ƒ¡f ƒ |rÆt|ƒ| }|sÅ|| j7 }q*|| }|sÑ|| j7 }q*|sØt|ƒ}|S )Nr,   TzError encoding %r: %sé   zencoded %svalue %s into %szconstructed Ú Ú
ifNotEmptyFz;overridden encoding mode into definitive for primitive typezencoded %stag %s into %sz)encoded %s octets (tag + payload) into %s)ÚtagSetr4   Úgetr
   Ú	enumerateÚ	superTagsr   r*   ÚsysÚexc_infoÚLOGr$   r   Úhexdumpr	   r.   r)   ÚeooOctetsSubstrateÚeooIntegerSubstrate)r   r0   r1   r2   r3   r9   r!   r   ÚisOctetsr,   Úidxr   ÚdefModeOverrideÚexcÚheaderr"   r"   r#   r   M   sx   ÿÿÿÿÿþÿ
þÿ
€
€zAbstractItemEncoder.encode)NN)Ú__name__Ú
__module__Ú__qualname__r(   rB   r	   rA   r$   r.   r4   r   r"   r"   r"   r#   r      s    r   c                   @   ó   e Zd Zdd„ ZdS )ÚEndOfOctetsEncoderc                 K   ó
   t ddfS ©NFT©r
   r/   r"   r"   r#   r4   �   r5   zEndOfOctetsEncoder.encodeValueN©rH   rI   rJ   r4   r"   r"   r"   r#   rL   œ   ó    rL   c                   @   ó   e Zd ZdZdd„ ZdS )ÚBooleanEncoderFc                 K   s   |rdpdddfS )N)r6   ©r   Fr"   r/   r"   r"   r#   r4   ¤   s   zBooleanEncoder.encodeValueN©rH   rI   rJ   r(   r4   r"   r"   r"   r#   rS   ¡   ó    rS   c                   @   s   e Zd ZdZdZdd„ ZdS )ÚIntegerEncoderFc                 K   sF   |dkrt rt d| jrdpd ƒ | jrdS dS tt|ƒdd�d	dfS )
Nr   z#encoding %spayload for zero INTEGERzno r7   )r"   FF)rT   FFT)ÚsignedF)r?   ÚsupportCompactZeror   Úintr/   r"   r"   r#   r4   ¬   s   ÿzIntegerEncoder.encodeValueN)rH   rI   rJ   r(   rY   r4   r"   r"   r"   r#   rW   ¨   s    rW   c                   @   rK   )ÚBitStringEncoderc                 K   s  |d ur	|  |¡}t|ƒ}|d r|d|d  > }n|}| dd¡}|r,t|ƒ|d kr?| ¡ }tt|ƒd | ƒ| ddfS trGtd| ƒ |jj}	|	rTt 	|	|	¡}
nt 	¡ }
|j |
d�}d}t
}||k r„|}t||d  |ƒ}|||||… |fi |¤Ž7 }||k sf|ddfS )Nr&   ÚmaxChunkSizer   FTú#encoding into up to %s-octet chunks©r9   )Úcloner)   r:   ÚasOctetsr   r?   r9   ÚbaseTagr   ÚTagSetr
   Úmin)r   r0   r1   r2   r3   ÚvalueLengthÚalignedValuer\   r!   ra   r9   ÚstopÚstartr"   r"   r#   r4   ½   s2   
ý
zBitStringEncoder.encodeValueNrP   r"   r"   r"   r#   r[   ¼   rQ   r[   c                   @   rK   )ÚOctetStringEncoderc                 K   s  |d u r	|  ¡ }nt|ƒs| |¡  ¡ }n|}| dd¡}|r%t|ƒ|kr*|ddfS tr2td| ƒ |d u rN|jj}|rCt 	||¡}nt 	¡ }|j|d�}nt|ƒsi|jj}|r_t 	||¡}nt 	¡ }|j|d�}d}	t
}	 ||	|	| … }
|
syn|||
|fi |¤Ž7 }|	|7 }	qn|ddfS )Nr\   r   FTr]   r^   )r`   r   r_   r:   r)   r?   r9   ra   r   rb   r
   )r   r0   r1   r2   r3   r!   r\   ra   r9   ÚposÚchunkr"   r"   r#   r4   ç   s@   

ú
zOctetStringEncoder.encodeValueNrP   r"   r"   r"   r#   rh   å   s    rh   c                   @   rR   )ÚNullEncoderFc                 K   rM   rN   rO   r/   r"   r"   r#   r4   %  r5   zNullEncoder.encodeValueNrU   r"   r"   r"   r#   rk   "  rV   rk   c                   @   rR   )ÚObjectIdentifierEncoderFc                 K   s”  |d ur	|  |¡}| ¡ }z
|d }|d }W n ty&   t d|f ¡‚w d|  kr1dkrin n6|dkrC|d f|dd …  }n>|dkrQ|f|dd …  }n0|dkra|d f|dd …  }n t d|f ¡‚|dkry|d f|dd …  }nt d|f ¡‚d	}|D ]?}	d|	  kr‘d
kr™n n||	f7 }q…|	d
kr¼|	d
@ f}
|	dL }	|	r·d|	d
@ B f|
 }
|	dL }	|	s¨||
7 }q…t d|	|f ¡‚|ddfS )Nr   r6   zShort OID %sé'   é(   é   éP   z"Impossible first/second arcs at %sr"   r   r   r   zNegative OID arc %s at %sF)r_   ÚasTupleÚ
IndexErrorr   r*   )r   r0   r1   r2   r3   ÚoidÚfirstÚsecondÚoctetsÚsubOidÚresr"   r"   r#   r4   ,  sD   
ÿ
þ

z#ObjectIdentifierEncoder.encodeValueNrU   r"   r"   r"   r#   rl   )  rV   rl   c                   @   rR   )ÚRelativeOIDEncoderFc                 K   s¨   |d ur	|  |¡}d}| ¡ D ]?}d|  krdkr#n n||f7 }q|dkrF|d@ f}|dL }|rAd|d@ B f| }|dL }|s2||7 }qt d||f ¡‚|ddfS )Nr"   r   r   r   r   z"Negative RELATIVE-OID arc %s at %sF)r_   rq   r   r*   )r   r0   r1   r2   r3   rv   rw   rx   r"   r"   r#   r4   g  s    

þ

zRelativeOIDEncoder.encodeValueNrU   r"   r"   r"   r#   ry   d  rV   ry   c                   @   s0   e Zd ZdZdZedd„ ƒZdd„ Zdd„ Zd	S )
ÚRealEncoderFro   c                 C   s¼   d\}}| dk r
d}|dk rd}| |9 } |dkr-| dt |ƒd |  9 } t |ƒd | }n|dkrE| dt |ƒd |  9 } t |ƒd | }	 t| ƒ| krU| |9 } |d
8 }qE	 |t| ƒ||fS )N)r6   r6   r   éÿÿÿÿr&   ro   é   é   é   Tr6   )ÚabsrZ   )ÚmÚencbaseÚeÚmsÚesr"   r"   r#   Ú_dropFloatingPoint‰  s&   zRealEncoder._dropFloatingPointc                 C   s  |\}}}g d¢}|j |v r|  ||j |¡S | j |v r#|  || j |¡S |||g}|||g}d}d}	tdƒ}tdƒD ]A}
|  ||
 ||
 ||
 ¡\}||
< ||
< ||
< t||
 ƒt|ƒk slt||
 ƒt|ƒkrz||
 |k rz||
 }t||
 ƒ}||
 }	q9tr‡td|	|||f ƒ |||	|fS )N)ro   r&   r}   r6   ro   Úinfr|   zMautomatically chosen REAL encoding base %s, sign %s, mantissa %s, exponent %s)Ú
binEncBaser…   ÚfloatÚranger   rZ   r?   )r   r0   r€   Úbr‚   ÚencBaseÚmantissaÚexponentÚsignr�   Úir"   r"   r#   Ú_chooseEncBase¥  s6   




ý4€
ÿzRealEncoder._chooseEncBasec                 K   sä  |d ur	|  |¡}|jrdS |jrdS |\}}}|stddfS |dkr;tr)tdƒ td||dkr2d	p3d
|f ƒddfS |dk�rkd}|  |¡\}	}}
}|	dk rS|dO }|
dkrl|d@ dkrk|dL }|d7 }|d@ dks]n5|
dkr‰|d@ dkr„|dL }|d7 }|d@ dksv|dO }n|d@ dkr�|dL }|d7 }|d@ dks�|dO }d}|d@ dkr·|dL }|d7 }|d@ dks©|dkrÀt d¡‚||d> O }t}|dksÐ|dkr×t	|d@ ƒ}n?|dvrët	|d@ ƒ| }|dL }|dvsÛ|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�r*n |dk�r4|dO }n|dk�r>|dO }n|dO }t	|d@ ƒ| }t}|�r^t	|d@ ƒ| }|dL }|�sOt	|ƒ| | }|ddfS t d| ¡‚)N))é@   FF))éA   FFFTé
   z!encoding REAL into character formz%dE%s%dr   ú+r7   ro   r   r‘   r6   r&   r   r|   r}   é   r~   é    zScale factor overflowr{   r%   )r   r{   zReal exponent overflowzProhibited Real base %s)r_   Ú	isPlusInfÚ
isMinusInfr
   r?   r   r�   r   r*   r   r   r)   )r   r0   r1   r2   r3   r€   rŠ   r‚   Úforƒ   r�   ÚsfÚeoÚnÚpor!   r"   r"   r#   r4   Æ  s’   


$
þ€þ
þþ
þ"






þ
zRealEncoder.encodeValueN)	rH   rI   rJ   r(   r‡   Ústaticmethodr…   r�   r4   r"   r"   r"   r#   rz   …  s    
!rz   c                   @   rR   )ÚSequenceEncoderFc              	   K   sÎ  t }| d| j¡}trtd|rdpd ƒ |d u r·|j}|r |‚|j}t| ¡ ƒD ]Œ\}	}
|r^||	 }|jrC|
j	sCtrBtd|f ƒ q)|j
rU|
|jkrUtrTtd|f ƒ q)|r^|j|jd� |rª|jrª|j}|jtjjtjjfv r‚|||
|fi t||jd�¤Ž7 }q)||
|fi |¤Ž}| |
¡r•||7 }q)||||fi |¤Ž7 }tr©td	|f ƒ q)|||
|fi |¤Ž7 }q)n«t|jjƒD ]¤\}	}z||j }
W n tyÙ   t d
|j|f ¡‚w |jrì|j|vrìtrëtd|f ƒ q½|j
rþ|
|jkrþtrýtd|f ƒ q½|�r|j|jd� |j}|j�rV|jtjjtjjfv �r,|||
|fi t||jd�¤Ž7 }q½||
|fi |¤Ž}| |
¡�r@||7 }q½||||fi |¤Ž7 }t�rUtd	|f ƒ q½|||
|fi |¤Ž7 }q½|ddfS )NÚomitEmptyOptionalsz$%sencoding empty OPTIONAL componentsznot r7   z"not encoding OPTIONAL component %rz!not encoding DEFAULT component %r)r8   )ÚwrapTypeúwrapped with wrap type %rz#Component name "%s" not found in %rT)r
   r:   r    r?   ÚisInconsistentÚcomponentTyper;   ÚvaluesÚ
isOptionalÚisValueÚisDefaultedÚ
asn1ObjectÚupdateÚopenTypeÚtypeIdr   ÚSetOfÚ
SequenceOfÚdictÚisSameTypeWithÚ
namedTypesÚnameÚKeyErrorr   r*   )r   r0   r1   r2   r3   r!   r    Úinconsistencyr±   rD   Ú	componentÚ	namedTyper¡   rj   ÚcomponentSpecr"   r"   r#   r4   1  s¤   ÿ
ÿ
ÿÿ
þ

€Ö.ÿÿÿÿ
þ
€
zSequenceEncoder.encodeValueN)rH   rI   rJ   r    r4   r"   r"   r"   r#   rŸ   ,  s    rŸ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚSequenceOfEncoderc                 K   s–   |d u r|j }|r|‚n|j}g }| dd ¡}t|ƒD ]-\}}	||	|fi |¤Ž}
|d urC| |	¡sC||
|fi |¤Ž}
trCtd|f ƒ | |
¡ q|S )Nr¡   r¢   )r£   r¤   Úpopr;   r°   r?   Úappend)r   r0   r1   r2   r3   r´   Úchunksr¡   rD   rµ   rj   r"   r"   r#   Ú_encodeComponents§  s$   ÿÿz#SequenceOfEncoder._encodeComponentsc                 K   s&   | j |||fi |¤Ž}t |¡ddfS )NT)r¼   r
   Újoin)r   r0   r1   r2   r3   r»   r"   r"   r#   r4   Ä  s   ÿÿzSequenceOfEncoder.encodeValueN)rH   rI   rJ   r¼   r4   r"   r"   r"   r#   r¸   ¦  s    r¸   c                   @   rK   )ÚChoiceEncoderc                    s‚   |d u r	ˆ   ¡ }n,‡ fdd„|jjD ƒ}t|ƒdkr)t dt|ƒr#dp$dˆ f ¡‚|d }ˆ | }|| }|||fi |¤ŽddfS )	Nc                    s   g | ]
}|j ˆ v r|j ‘qS r"   )r²   )Ú.0r¶   ©r0   r"   r#   Ú
<listcomp>Ð  s    
ÿz-ChoiceEncoder.encodeValue.<locals>.<listcomp>r6   z%s components for Choice at %rz	Multiple zNone r   T)ÚgetComponentr¤   r±   r)   r   r*   )r   r0   r1   r2   r3   rµ   Únamesr²   r"   rÀ   r#   r4   Ì  s   
zChoiceEncoder.encodeValueNrP   r"   r"   r"   r#   r¾   Ë  rQ   r¾   c                   @   rK   )Ú
AnyEncoderc                 K   s<   |d u r	|  ¡ }nt|ƒs| |¡  ¡ }|| dd¡ dfS )Nr,   T)r`   r   r_   r:   r/   r"   r"   r#   r4   Þ  s
   
zAnyEncoder.encodeValueNrP   r"   r"   r"   r#   rÄ   Ý  rQ   rÄ   c                   @   s4   e Zd ZdZdZeZeZeefdd„Zddd„Z	dS )ÚSingleItemEncoderNc                 K   s2   |t ur|n| j| _|t ur|| _d S | j| _d S ©N)r   ÚTAG_MAPÚ_tagMapÚTYPE_MAPÚ_typeMap)r   ÚtagMapÚtypeMapÚignoredr"   r"   r#   Ú__init__8  s   zSingleItemEncoder.__init__c           	      K   s’  z|d u r	|j }n|j }W n ty   t d|f ¡‚w tr@td| dd¡ r*dp+d| dd¡|d u r8| ¡ p;| ¡ |f ƒ | jd urL|j| jd	� | j	d urX|j| j	d
� z| j
| }trjtd|jj|f ƒ W n@ ty«   |d u rz|j}n|j}t |j|j¡}z| j| }W n tyœ   t d||f ¡‚w tr©td|jj|f ƒ Y nw |j||| fi |¤Ž}trÇt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Úinr7   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)r¬   ÚAttributeErrorr   r*   r?   r:   ÚprettyPrintTypeÚfixedDefLengthModerª   ÚfixedChunkSizerÊ   Ú	__class__rH   r³   r9   r   rb   ra   rÈ   r   r)   r   r@   )	r   r0   r1   r3   r¬   ÚconcreteEncoderr9   Ú
baseTagSetr!   r"   r"   r#   Ú__call__<  sj   €ÿÿ
ýÿ



ÿ€ÿ
ÿ€ðÿÿzSingleItemEncoder.__call__rÆ   )
rH   rI   rJ   rÒ   rÓ   rÇ   rÉ   r   rÎ   r×   r"   r"   r"   r#   rÅ   1  s    rÅ   c                   @   s(   e Zd ZeZeefdd„Zddd„ZdS )r   c                 K   s   | j d||dœ|¤Ž| _d S )N)rË   rÌ   r"   )ÚSINGLE_ITEM_ENCODERÚ_singleItemEncoder)r   rË   rÌ   r3   r"   r"   r#   rÎ   {  s
   ÿÿzEncoder.__init__Nc                 K   s   | j |fd|i|¤ŽS )Nr1   )rÙ   )r   ÚpyObjectr1   r3   r"   r"   r#   r×   €  s   ÿÿÿzEncoder.__call__rÆ   )rH   rI   rJ   rÅ   rØ   r   rÎ   r×   r"   r"   r"   r#   r   x  s    )Qr=   Úpyasn1r   r   Úpyasn1.codec.berr   Úpyasn1.compatr   Úpyasn1.compat.integerr   Úpyasn1.compat.octetsr   r   r	   r
   r   r   Úpyasn1.typer   r   r   r   Ú__all__ÚregisterLoggeerH   ÚDEBUG_ENCODERr?   Úobjectr   rL   rS   rW   r[   rh   rk   rl   ry   rz   rŸ   r¸   r¾   rÄ   ÚendOfOctetsr9   ÚBooleanÚIntegerÚ	BitStringÚOctetStringÚNullÚObjectIdentifierÚRelativeOIDÚ
EnumeratedÚRealr®   r­   ÚChoiceÚ
UTF8StringÚNumericStringÚPrintableStringÚTeletexStringÚVideotexStringÚ	IA5StringÚGraphicStringÚVisibleStringÚGeneralStringÚUniversalStringÚ	BMPStringÚObjectDescriptorÚGeneralizedTimeÚUTCTimerÇ   r¬   ÚSetÚSequenceÚAnyrÉ   rË   rÌ   rÅ   r   r   r"   r"   r"   r#   Ú<module>   s     )=;! (z%

ÿ
þ
ý
ü
û
ú
ù
ø
	÷

ö
ô
ó
ò
ð
ï
î
í









â"
ÿ
þ
ý
ü
û
ú
ù
ø
	÷
õ
ô
ó
ò
ñ
ð
î
í











à$G
@