o
    =jrt  ã                   @   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   ZtagFormatConstructed)ÚselfÚ	singleTagÚisConstructedZtagClassZ	tagFormatZtagIdZ
encodedTagÚ	substrate© r   úbC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\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   Z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Ú	enumerateZ	superTagsr   r   ÚLOGr   r   ÚhexdumpÚbytesr"   r   ÚeooOctetsSubstrateÚeooIntegerSubstrate)r   r$   r%   r&   r'   r,   r   r   ZisOctetsr!   Úidxr   ZdefModeOverrideÚexcÚheaderr   r   r   r   L   sx   ÿÿÿÿ
ÿ€ÿÿ
þÿ
€
€zAbstractItemEncoder.encode)NN)Ú__name__Ú
__module__Ú__qualname__r   r3   r1   r2   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©r7   r8   r9   r(   r   r   r   r   r;   š   ó    r;   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©r7   r8   r9   r   r(   r   r   r   r   rC   Ÿ   ó    rC   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 r*   )r   FF)rE   FFT)ÚsignedF)r/   ÚsupportCompactZeror   Úintr#   r   r   r   r(   ª   s   ÿzIntegerEncoder.encodeValueN)r7   r8   r9   r   rJ   r(   r   r   r   r   rH   ¦   s    rH   c                   @   r:   )Ú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©r,   r)   )Úcloner   r-   ÚasOctetsr1   r/   r,   ÚbaseTagr   ÚTagSetÚmin)r   r$   r%   r&   r'   ZvalueLengthZalignedValuerM   r   rR   r,   ÚstopÚstartr   r   r   r(   »   s2   
 ý
zBitStringEncoder.encodeValueNr@   r   r   r   r   rL   º   rA   rL   c                   @   r:   )Ú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{q‹|||
|fi |¤Ž7 }|	|7 }	qp|ddfS )NrM   r   FTrN   rO   r)   )rQ   Ú
isinstancer1   rP   r-   r   r/   r,   rR   r   rS   )r   r$   r%   r&   r'   r   rM   rR   r,   ÚposÚchunkr   r   r   r(   å   s@   



ú
zOctetStringEncoder.encodeValueNr@   r   r   r   r   rW   ã   s    rW   c                   @   rB   )ÚNullEncoderFc                 K   r<   r=   r   r#   r   r   r   r(   #  r?   zNullEncoder.encodeValueNrF   r   r   r   r   r[      rG   r[   c                   @   rB   )Ú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   rD   zShort OID %sé'   é(   é   éP   z"Impossible first/second arcs at %sr   r   r   r   zNegative OID arc %s at %sF)rP   ÚasTupleÚ
IndexErrorr   r   )r   r$   r%   r&   r'   ÚoidÚfirstÚsecondÚoctetsÚsubOidÚresr   r   r   r(   *  sD   
ÿ
þ

z#ObjectIdentifierEncoder.encodeValueNrF   r   r   r   r   r\   '  rG   r\   c                   @   rB   )Ú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)rP   ra   r   r   )r   r$   r%   r&   r'   rf   rg   rh   r   r   r   r(   e  s    

þ

zRelativeOIDEncoder.encodeValueNrF   r   r   r   r   ri   b  rG   ri   c                   @   s0   e Zd ZdZdZedd„ ƒZdd„ Zdd„ Zd	S )
ÚRealEncoderFr_   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)rD   rD   r   éÿÿÿÿr   r_   é   é   é   TrD   )ÚabsrK   )Ú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)r_   r   rm   rD   r_   Úinfrl   zMautomatically chosen REAL encoding base %s, sign %s, mantissa %s, exponent %s)Ú
binEncBaseru   ÚfloatÚrangero   rK   r/   )r   r$   rp   Úbrr   ZencBaseZmantissaÚexponentÚsignrq   Ú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   FFr>   é
   z!encoding REAL into character forms   %dE%s%dr   ó   +r)   FTr_   r   r   rD   r   r   rl   rm   é   rn   é    zScale factor overflowrk   r   )r   rk   rE   )r   zReal exponent overflowzProhibited Real base %s)	rP   Z	isPlusInfZ
isMinusInfr/   r~   r   r   r1   r   )r   r$   r%   r&   r'   rp   rz   rr   Úfors   rq   ZsfÚeoÚnZpor   r   r   r   r(   Ä  s’   

 
þ€þ
þþ
þ






þ
zRealEncoder.encodeValueN)	r7   r8   r9   r   rw   Ústaticmethodru   r~   r(   r   r   r   r   rj   ƒ  s    
!rj   c                   @   rB   )Ú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 �]:\}	}
|rh||	 }|jrM|
jsMtrLtd|f ƒ q2|jr_|
|jkr_tr^td	|f ƒ q2|rh|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 }q2t	|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 r*   úASN.1 object ú is inconsistentz"not encoding OPTIONAL component %rz!not encoding DEFAULT component %r)r+   )ÚwrapTypeúwrapped with wrap type %rz#Component name "%s" not found in %rT)r-   rŠ   r/   ÚisInconsistentr   r   Ú	__class__r7   ÚcomponentTyper.   ÚvaluesZ
isOptionalZisValueZisDefaultedZ
asn1ObjectÚupdateZopenTypeÚtypeIdr	   ÚSetOfÚ
SequenceOfÚdictÚisSameTypeWithÚ
namedTypesÚnameÚKeyError)r   r$   r%   r&   r'   r   rŠ   Úinconsistencyr™   r4   Ú	componentÚ	namedTyper�   rZ   ZcomponentSpecr   r   r   r(   /  s¦   ÿ
ÿÿ
ÿÿ
þ

€ÿÿÿÿ
þ
€
zSequenceEncoder.encodeValueN)r7   r8   r9   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�   r7   r‘   Úpopr.   r˜   r/   Úappend)r   r$   r%   r&   r'   rœ   Úchunksr�   r4   r�   rZ   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)r7   r8   r9   r£   r(   r   r   r   r   rŸ   ¥  s    rŸ   c                   @   r:   )Ú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>rD   z%s components for Choice at %rz	Multiple zNone r   T)ZgetComponentr‘   r™   r   r   r   )r   r$   r%   r&   r'   r�   Únamesrš   r   r§   r   r(   Ì  s   
zChoiceEncoder.encodeValueNr@   r   r   r   r   r¥   Ë  rA   r¥   c                   @   r:   )Ú
AnyEncoderc                 K   s>   |d u r	|  ¡ }nt|tƒs| |¡  ¡ }|| dd¡ dfS )Nr!   T)rQ   rX   r1   rP   r-   r#   r   r   r   r(   Þ  s
   

zAnyEncoder.encodeValueNr@   r   r   r   r   rª   Ý  rA   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ÚtypeMapZ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Úinr*   rM   r   )r!   )rM   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-   ZprettyPrintTypeÚfixedDefLengthModer“   ÚfixedChunkSizer°   r�   r7   r›   r,   r   rS   rR   r®   r   r   r   r0   )	r   r$   r%   r'   r”   ZconcreteEncoderr,   Z
baseTagSetr   r   r   r   Ú__call__8  sj   €ÿÿ
ýÿ



ÿ€ÿ
ÿ€ðÿÿzSingleItemEncoder.__call__r¬   )
r7   r8   r9   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   ZpyObjectr%   r'   r   r   r   r¸   |  s   ÿÿÿzEncoder.__call__r¬   )r7   r8   r9   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.r_   )Ú
stacklevel)r-   ÚwarningsÚwarnÚDeprecationWarningÚglobalsrµ   )r¼   ZnewAttrr   r   r   Ú__getattr__¶  s   
rÂ   )KÚsysr¾   Zpyasn1r   r   Zpyasn1.codec.berr   Zpyasn1.compatr   Zpyasn1.compat.integerr   Zpyasn1.typer   r   r	   r
   Ú__all__ZregisterLoggeer7   ZDEBUG_ENCODERr/   Úobjectr   r;   rC   rH   rL   rW   r[   r\   ri   rj   r‰   rŸ   r¥   rª   ZendOfOctetsr,   ÚBooleanZIntegerZ	BitStringZOctetStringZNullZObjectIdentifierZRelativeOIDZ
EnumeratedÚRealr–   r•   ZChoiceZ
UTF8StringZNumericStringZPrintableStringZTeletexStringZVideotexStringZ	IA5StringZGraphicStringZVisibleStringZGeneralStringZUniversalStringZ	BMPStringZObjectDescriptorZGeneralizedTimeZUTCTimer­   r”   ÚSetÚSequenceÚAnyr¯   r«   r   r   ÚstrrÂ   r   r   r   r   Ú<module>   sþ    )=;! ({&

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

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