o
    {j6hdt                     @   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   g/var/www/html/chefvision.cloud.itp360.com/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 ]\}
}|	}|
sz| 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 |sd}trtd
 | ||}trtd|rdpd|t	
t|f  || t||7 }trtdt|t	
t|f  |rt|| }|s|| j7 }q*|| }|s|| j7 }q*|st|}|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 d	}|D ]?}	d|	  krd
krn n||	f7 }q|	d
kr|	d
@ f}
|	dL }	|	rd|	d
@ B f|
 }
|	dL }	|	s||
7 }qtd|	|f |ddfS )Nr   rM   zShort OID %s'   (      P   z"Impossible first/second arcs at %sr   r   r   r   zNegative OID arc %s at %sF)rY   asTuple
IndexErrorr   r$   )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	| |}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)rY   rl   r   r$   )r   r*   r+   r,   r-   rq   rr   rs   r   r   r   r.   e  s    



zRelativeOIDEncoder.encodeValueNrO   r   r   r   r   rt   b  rP   rt   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rtd|	|||f  |||	|fS )N)rj   r    rx   rM   rj   infrw   zMautomatically chosen REAL encoding base %s, sign %s, mantissa %s, exponent %s)
binEncBaser   floatrangerz   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rtd||d> O }d	}|dks|dkrt|d@ f}n<|dvrt|d@ f| }|dL }|dvs|dkr|r|d d@ rt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   rw   rx      ry       zScale factor overflowrv   r   )r   rv   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   ru     s    
!ru   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rtd|f  q2|||
|fi |7 }q2nt	|jjD ]\}	}z||j }
W n ty   td|j|f w |jr|j|vrtrt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   append)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rtd|jj|f  Y nw |j||| fi |}trt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   s>   ddd |  }rt|  d| dt t | S t| )Nr   r   r   z is deprecated. Please use z	 instead.)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   rt   ru   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@