o
    Þý°jšt  ã                   @   s0  d dl Z 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 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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ƒ ej=j%eƒ ej>j%eƒ ej?j%eƒ i
¥Z@i ej&jAeƒ “ej'jAeƒ “ej(jAeƒ “ej)jAeƒ “ej*jAeƒ “ej+jAeƒ “ej,jAeƒ “ej-jAeƒ “ej.jAeƒ “ejBjAe ƒ “ej0jAe!ƒ “ejCjAe ƒ “ej/jAe!ƒ “ej1jAe"ƒ “ejDjAe#ƒ “ej2jAeƒ “ej3jAeƒ “ej4jAeƒ ej5jAeƒ ej6jAeƒ ej7jAeƒ ej8jAeƒ ej9jAeƒ ej:jAeƒ ej;jAeƒ ej<jAeƒ ej=jAeƒ ej>jAeƒ ej?jAeƒ i¥ZEG d*d+„ d+eƒZFG d,d„ deƒZGeGƒ ZHd-eIfd.d/„ZJdS )0é    N)Údebug)Úerror)Úeoo)Ú_MISSING)Úto_bytes)Ú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   ú‹/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/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   ÚencodeLength5   s   
þz AbstractItemEncoder.encodeLengthc                 K   s
   t  d¡‚)NzNot implemented)r   r$   ©r   ÚvalueÚasn1SpecÚ	encodeFunÚoptionsr   r   r   ÚencodeValueI   s   
zAbstractItemEncoder.encodeValueNc                 K   s²  |d u r|j }n|j }|s| j|||fi |¤Ž\}}}|S | dd¡}	d}t|jƒD ]¦\}
}|	}|
s€z| j|||fi |¤Ž\}}}W n tjyX } z	t d||f ¡‚d }~ww trhtd|radpbd||f ƒ |sv|rv| dd	¡rv|  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&   Tó    zError encoding %r: %sz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)ÚtagSetr.   ÚgetÚ	enumerateÚ	superTagsr   r$   ÚLOGr   r   ÚhexdumpÚbytesr(   r#   ÚeooOctetsSubstrateÚeooIntegerSubstrate)r   r*   r+   r,   r-   r2   r   r   ÚisOctetsr&   Úidxr   ÚdefModeOverrideÚexcÚheaderr   r   r   r   L   sx   ÿÿÿÿ
ÿ€ÿÿ
þÿ
€
€zAbstractItemEncoder.encode)NN)Ú__name__Ú
__module__Ú__qualname__r"   r:   r8   r9   r   r(   r.   r   r   r   r   r   r      s    r   c                   @   ó   e Zd Zdd„ ZdS )ÚEndOfOctetsEncoderc                 K   ó   dS ©N©r/   FTr   r)   r   r   r   r.   ›   ó   zEndOfOctetsEncoder.encodeValueN©r@   rA   rB   r.   r   r   r   r   rD   š   ó    rD   c                   @   ó   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.   ¢   s   zBooleanEncoder.encodeValueN©r@   rA   rB   r"   r.   r   r   r   r   rL   Ÿ   ó    rL   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 r0   )r   FF)rN   FFT)ÚsignedF)r6   ÚsupportCompactZeror   Úintr)   r   r   r   r.   ª   s   ÿzIntegerEncoder.encodeValueN)r@   rA   rB   r"   rS   r.   r   r   r   r   rQ   ¦   s    rQ   c                   @   rC   )ÚBitStringEncoderc                 K   s  |d ur	|  |¡}t|ƒ}|d r|d|d  > }n|}| dd¡}|r,t|ƒ|d kr@| ¡ }tt|ƒd | fƒ| ddfS trHtd| ƒ |jj}	|	rUt 	|	|	¡}
nt 	¡ }
|j |
d�}d}d}||k r…|}t
||d  |ƒ}|||||… |fi |¤Ž7 }||k sg|ddfS )	Nr    ÚmaxChunkSizer   FTú#encoding into up to %s-octet chunks©r2   r/   )Úcloner#   r3   ÚasOctetsr8   r6   r2   ÚbaseTagr   ÚTagSetÚmin)r   r*   r+   r,   r-   ÚvalueLengthÚalignedValuerV   r   r[   r2   ÚstopÚstartr   r   r   r.   »   s2   
 ý
zBitStringEncoder.encodeValueNrI   r   r   r   r   rU   º   rJ   rU   c                   @   rC   )ÚOctetStringEncoderc                 K   s   |d u r	|  ¡ }nt|tƒs| |¡  ¡ }n|}| dd¡}|r&t|ƒ|kr+|ddfS tr3td| ƒ |d u rO|jj}|rDt	 
||¡}nt	 
¡ }|j|d�}nt|tƒsk|jj}|rat	 
||¡}nt	 
¡ }|j|d�}d}	d}	 ||	|	| … }
|
s{n|||
|fi |¤Ž7 }|	|7 }	qp|ddfS )NrV   r   FTrW   rX   r/   )rZ   Ú
isinstancer8   rY   r3   r#   r6   r2   r[   r   r\   )r   r*   r+   r,   r-   r   rV   r[   r2   ÚposÚchunkr   r   r   r.   å   s@   



ú
zOctetStringEncoder.encodeValueNrI   r   r   r   r   rb   ã   s    rb   c                   @   rK   )ÚNullEncoderFc                 K   rE   rF   r   r)   r   r   r   r.   #  rH   zNullEncoder.encodeValueNrO   r   r   r   r   rf      rP   rf   c                   @   rK   )Ú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 ¡‚g }|D ]B}	d|	  kr‘d	kr™n n| |	¡ q…|	d	kr¿|	d	@ g}
|	d
L }	|	r·|
 d|	d	@ B ¡ |	d
L }	|	s¨| t|
ƒ¡ q…t d|	|f ¡‚t|ƒddfS )Nr   rM   zShort OID %sé'   é(   é   éP   z"Impossible first/second arcs at %sr   r   r   zNegative OID arc %s at %sF)	rY   ÚasTupleÚ
IndexErrorr   r$   ÚappendÚextendÚreversedÚtuple)r   r*   r+   r,   r-   ÚoidÚfirstÚsecondÚoctetsÚsubOidÚresr   r   r   r.   *  sD   
ÿ
þz#ObjectIdentifierEncoder.encodeValueNrO   r   r   r   r   rg   '  rP   rg   c                   @   rK   )ÚRelativeOIDEncoderFc                 K   s²   |d ur	|  |¡}g }| ¡ D ]B}d|  krdkr#n n| |¡ q|dkrI|d@ g}|dL }|rA| d|d@ B ¡ |dL }|s2| t|ƒ¡ qt d||f ¡‚t|ƒddfS )Nr   r   r   r   z"Negative RELATIVE-OID arc %s at %sF)rY   rl   rn   ro   rp   r   r$   rq   )r   r*   r+   r,   r-   ru   rv   rw   r   r   r   r.   e  s    

þzRelativeOIDEncoder.encodeValueNrO   r   r   r   r   rx   b  rP   rx   c                   @   s0   e Zd ZdZdZedd„ ƒZdd„ Zdd„ Zd	S )
ÚRealEncoderFrj   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)rM   rM   r   éÿÿÿÿr    rj   é   é   é   TrM   )ÚabsrT   )Ú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)rj   r    r|   rM   rj   Úinfr{   zMautomatically chosen REAL encoding base %s, sign %s, mantissa %s, exponent %s)Ú
binEncBaser„   ÚfloatÚranger~   rT   r6   )r   r*   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dS |dkr6tr&tdƒ d||dkr.dp/d	|f d
dfS |dk�rgd}|  |¡\}	}}
}|	dk rN|dO }|
dkrg|d@ dkrf|dL }|d7 }|d@ dksXn5|
dkr„|d@ dkr|dL }|d7 }|d@ dksq|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 }d	}|dksË|dkrÓt|d@ fƒ}n<|dvrèt|d@ fƒ| }|dL }|dvs×|dkrú|rú|d d@ rútdƒ| }|dk�r|�r|d d@ �stdƒ| }t|ƒ}|dk�rt d¡‚|dk�r#n!|dk�r-|dO }n|dk�r7|dO }n|dO }t|d@ fƒ| }d	}|�rYt|d@ fƒ| }|dL }|�sIt|fƒ| | }|d
dfS t d| ¡‚)N))é@   FF))éA   FFrG   é
   z!encoding REAL into character forms   %dE%s%dr   ó   +r/   FTrj   r   r�   rM   r    r   r{   r|   é   r}   é    zScale factor overflowrz   r   )r   rz   rN   )r   zReal exponent overflowzProhibited Real base %s)	rY   Ú	isPlusInfÚ
isMinusInfr6   r�   r   r$   r8   r#   )r   r*   r+   r,   r-   r   r‰   r�   Úfor‚   r€   ÚsfÚeoÚnÚpor   r   r   r   r.   Ä  s’   

 
þ€þ
þþ
þ






þ
zRealEncoder.encodeValueN)	r@   rA   rB   r"   r†   Ústaticmethodr„   r�   r.   r   r   r   r   ry   ƒ  s    
!ry   c                   @   rK   )ÚSequenceEncoderFc              	   K   sæ  d}|  d| j¡}trtd|rdpd ƒ |d u rÀ|j}|r)t d|jj› d�¡‚|j}t	| 
¡ ƒD ]Œ\}	}
|rg||	 }|jrL|
jsLtrKtd|f ƒ q2|jr^|
|jkr^tr]td	|f ƒ q2|rg|j|jd
� |r³|jr³|j}|jtjjtjjfv r‹|||
|fi t||jd�¤Ž7 }q2||
|fi |¤Ž}| |
¡rž||7 }q2||||fi |¤Ž7 }tr²td|f ƒ q2|||
|fi |¤Ž7 }q2n®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�rb|jtjjtjjfv �r8|||
|fi t||jd�¤Ž7 }qÆ||
|fi |¤Ž}| |
¡�rL||7 }qÆ||||fi |¤Ž7 }t�ratd|f ƒ qÆ|||
|fi |¤Ž7 }qÆ|ddfS )Nr/   ÚomitEmptyOptionalsz$%sencoding empty OPTIONAL componentsznot r0   úASN.1 object ú is inconsistentz"not encoding OPTIONAL component %rz!not encoding DEFAULT component %r)r1   )ÚwrapTypeúwrapped with wrap type %rz#Component name "%s" not found in %rT)r3   rŸ   r6   ÚisInconsistentr   r$   Ú	__class__r@   ÚcomponentTyper4   ÚvaluesÚ
isOptionalÚisValueÚisDefaultedÚ
asn1ObjectÚupdateÚopenTypeÚtypeIdr	   ÚSetOfÚ
SequenceOfÚdictÚisSameTypeWithÚ
namedTypesÚnameÚKeyError)r   r*   r+   r,   r-   r   rŸ   Úinconsistencyr³   r<   Ú	componentÚ	namedTyper¢   re   ÚcomponentSpecr   r   r   r.   /  s¨   ÿ
ÿÿ
ÿÿ
þ

€Ö.ÿÿÿÿ
þ
€
zSequenceEncoder.encodeValueN)r@   rA   rB   rŸ   r.   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t d|jj› d�¡‚n|j}g }| dd ¡}t|ƒD ]-\}}	||	|fi |¤Ž}
|d urL| |	¡sL||
|fi |¤Ž}
t	rLt	d|f ƒ | 
|
¡ q$|S )Nr    r¡   r¢   r£   )r¤   r   r$   r¥   r@   r¦   Úpopr4   r²   r6   rn   )r   r*   r+   r,   r-   r¶   Úchunksr¢   r<   r·   re   r   r   r   Ú_encodeComponents¦  s(   ÿÿÿz#SequenceOfEncoder._encodeComponentsc                 K   s&   | j |||fi |¤Ž}d |¡ddfS )Nr/   T)r½   Újoin)r   r*   r+   r,   r-   r¼   r   r   r   r.   Ä  s   ÿÿzSequenceOfEncoder.encodeValueN)r@   rA   rB   r½   r.   r   r   r   r   rº   ¥  s    rº   c                   @   rC   )Ú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¸   ©r*   r   r   Ú
<listcomp>Ð  s    
ÿz-ChoiceEncoder.encodeValue.<locals>.<listcomp>rM   z%s components for Choice at %rz	Multiple zNone r   T)ÚgetComponentr¦   r³   r#   r   r$   )r   r*   r+   r,   r-   r·   Únamesr´   r   rÁ   r   r.   Ì  s   
zChoiceEncoder.encodeValueNrI   r   r   r   r   r¿   Ë  rJ   r¿   c                   @   rC   )Ú
AnyEncoderc                 K   s>   |d u r	|  ¡ }nt|tƒs| |¡  ¡ }|| dd¡ dfS )Nr&   T)rZ   rc   r8   rY   r3   r)   r   r   r   r.   Þ  s
   

zAnyEncoder.encodeValueNrI   r   r   r   r   rÅ   Ý  rJ   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__4  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Úinr0   rV   r   )r&   )rV   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$   r6   r3   ÚprettyPrintTypeÚfixedDefLengthModer¬   ÚfixedChunkSizerË   r¥   r@   rµ   r2   r   r\   r[   rÉ   r   r#   r   r7   )	r   r*   r+   r-   r®   ÚconcreteEncoderr2   Ú
baseTagSetr   r   r   r   Ú__call__8  sj   €ÿÿ
ýÿ



ÿ€ÿ
ÿ€ðÿÿzSingleItemEncoder.__call__rÇ   )
r@   rA   rB   rÓ   rÔ   rÈ   rÊ   r   rÏ   r×   r   r   r   r   rÆ   -  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Í   r-   r   r   r   rÏ   w  s
   ÿÿzEncoder.__init__Nc                 K   s   | j |fd|i|¤ŽS )Nr+   )rÚ   )r   ÚpyObjectr+   r-   r   r   r   r×   |  s   ÿÿÿzEncoder.__call__rÇ   )r@   rA   rB   rÆ   rÙ   r   rÏ   r×   r   r   r   r   r   t  s    Úattrc                 C   sB   dddœ  | ¡ }rtj| › d|› d�tdd� tƒ | S t| ƒ‚)NrÈ   rÊ   rØ   z is deprecated. Please use z	 instead.rj   )Ú
stacklevel)r3   ÚwarningsÚwarnÚDeprecationWarningÚglobalsrÑ   )rÜ   ÚnewAttrr   r   r   Ú__getattr__¶  s   
rã   )KÚsysrÞ   Úpyasn1r   r   Úpyasn1.codec.berr   Úpyasn1.compatr   Úpyasn1.compat.integerr   Úpyasn1.typer   r   r	   r
   Ú__all__ÚregisterLoggeer@   ÚDEBUG_ENCODERr6   Úobjectr   rD   rL   rQ   rU   rb   rf   rg   rx   ry   rž   rº   r¿   rÅ   ÚendOfOctetsr2   Ú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   Ústrrã   r   r   r   r   Ú<module>   sþ    )=;! ({&

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

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