
    ^#a]l                     &   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	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 ej        eej                  Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z! G d de          Z" G d d e          Z# G d! d"e          Z$ G d# d$e          Z% G 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j0        j(         e"            ej1        j(         e$            ej2        j(         e$            ej3        j(         e%            ej4        j(         e            ej5        j(         e            ej6        j(         e            ej7        j(         e            ej8        j(         e            ej9        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jA        j(         e            i	ZBi ej)        jC         e            ej*        jC         e            ej+        jC         e            ej,        jC         e            ej-        jC         e             ej.        jC         e!            ej/        jC         e            ej0        jC         e"            ejD        jC         e#            ej2        jC         e$            ejE        jC         e#            ej1        jC         e$            ej3        jC         e%            ejF        jC         e&            ej4        jC         e            ej5        jC         e            ej6        jC         e            ej7        jC         e            ej8        jC         e            ej9        jC         e            ej:        jC         e            ej;        jC         e            ej<        jC         e            ej=        jC         e            ej>        jC         e            ej?        jC         e            ej@        jC         e            ejA        jC         e            iZG G d' d(e          ZH eHeBeG          ZIdS ))    N)debug)error)eoo)to_bytes)int2octoct2int	ints2octsnullstr2octsisOctetsType)char)tag)univ)usefulencode)flagsc                   F    e Zd ZdZdZ ee          Zd Zd Zd Z	ddZ
dS )	AbstractItemEncoderT)r   r   c                     |\  }}}||z  }|r|t           j        z  }|dk     r||z  fS |dz  f}|dz  }|rd|dz  z  f|z   }|dz  }||dz  f|z   S )N            )r   tagFormatConstructed)self	singleTagisConstructedtagClass	tagFormattagId
encodedTag	substrates           8lib/python3.11/site-packages/pyasn1/codec/ber/encoder.py	encodeTagzAbstractItemEncoder.encodeTag!   s    %.")U	)
 	3#22J2::%&& IaKE !UT\24y@	!   %')33    c                     |s	| j         rdS |dk     r|fS d}|r|dz  f|z   }|dz  }|t          |          }|dk    rt          j        d|z            d|z  f|z   S )N)r   r          ~   zLength octets overflow (%d))supportIndefLenModelenr   PyAsn1Error)r   lengthdefModer"   substrateLens        r#   encodeLengthz AbstractItemEncoder.encodeLength5   s     	43 	7D==7N I #d],y8	1   y>>Lc!!'(E(TUUU<')I55r%   c                 *    t          j        d          )NzNot implemented)r   r-   r   valueasn1Spec	encodeFunoptionss        r#   encodeValuezAbstractItemEncoder.encodeValueI   s     1222r%   Nc                 T   ||j         }n|j         }|s | j        |||fi |\  }}}|S |                    dd          }	t          }t	          |j                  D ]\  }
}|	}|
s	  | j        |||fi |\  }}}nF# t          j        $ r4 t          j	                    }t          j        d|d|d                   w xY wt          rt          d|rdpdd	|d
|           |s|r|                    dd          r|c S |sd}t          rt          d           |                     ||          }t          r;t          d|rdpdd|d
t          j        t          |                               ||                     t!          |          |          z  }t          rAt          dt!          |          dt          j        t          |                               |r t          |          |z   }|s
|| j        z  }||z   }|s
|| j        z  }|st          |          }|S )Nr/   TzError encoding z:    zencoded zconstructed  zvalue z into 
ifNotEmptyFz;overridden encoding mode into definitive for primitive typeztag z octets (tag + payload) into )tagSetr8   getr
   	enumerate	superTagsr   r-   sysexc_infoLOGr$   r   hexdumpr	   r1   r,   eooOctetsSubstrateeooIntegerSubstrate)r   r4   r5   r6   r7   r=   r"   r   isOctetsr/   idxr   defModeOverrideexcheaders                  r#   r   zAbstractItemEncoder.encodeL   s   \FF_F  	1A1Ax2 2.52 2.I}h ++i..	'(899 5	: 5	:NC%O  [C9I9Ix: :6=: :6I}hh ( C C C,..C++3855#a&&AC C CC
  C%8.>B>>yy    ! %] %w{{<QV7W7W %$$$$$ [&*O [YZZZ^^I}==F B!4n:::IIu}Yv->->???A B B B d''IHHHF G	NNNNEM)F2C2C$D$D$DF G G G  
:%f--	9	& 9!88I #Y.	& :!99I 	-!),,Is   &A;;AB>)NN)__name__
__module____qualname__r+   rF   r	   rE   r$   r1   r8   r   r'   r%   r#   r   r      sz         !"#6774 4 4(6 6 6(3 3 3L L L L L Lr%   r   c                       e Zd Zd ZdS )EndOfOctetsEncoderc                     t           ddfS NFTr
   r3   s        r#   r8   zEndOfOctetsEncoder.encodeValue       UD  r%   NrL   rM   rN   r8   r'   r%   r#   rP   rP      s#        ! ! ! ! !r%   rP   c                       e Zd ZdZd ZdS )BooleanEncoderFc                     |rdpdddfS )N)r:   r   Fr'   r3   s        r#   r8   zBooleanEncoder.encodeValue   s    ~%ue33r%   NrL   rM   rN   r+   r8   r'   r%   r#   rW   rW      s)        4 4 4 4 4r%   rW   c                       e Zd ZdZdZd ZdS )IntegerEncoderFc                     |dk    r-t           rt          d| j        rdpdz             | j        rdS dS t          t          |          d          d	dfS )
Nr   z#encoding %spayload for zero INTEGERzno r;   )r'   FF)rY   FFT)signedF)rC   supportCompactZeror   intr3   s        r#   r8   zIntegerEncoder.encodeValue   sv    A:: 9+5;   
 & *''))E

4000%==r%   N)rL   rM   rN   r+   r_   r8   r'   r%   r#   r\   r\      s/        > > > > >r%   r\   c                       e Zd Zd ZdS )BitStringEncoderc                    ||                     |          }t          |          }|dz  r|d|dz  z
  z  }n|}|                    dd          }|rt          |          |dz  k    r<|                                }t	          t          |          dz  |z
            |z   ddfS t
          rt          d|z             |j        j        }	|	rt          j	        |	|	          }
nt          j	                    }
|                     |
          }d}t          }||k     r3|}t          ||dz  z   |          }| ||||         |fi |z  }||k     3|ddfS )Nr)   maxChunkSizer   FT#encoding into up to %s-octet chunksr=   )cloner,   r>   asOctetsr   rC   r=   baseTagr   TagSetr
   min)r   r4   r5   r6   r7   valueLengthalignedValuerd   r"   ri   r=   stopstarts                r#   r8   zBitStringEncoder.encodeValue   s   NN5))E%jj? 	! Qq%89LL L{{>155 	Vs<00L14DDD$--//I3y>>A-;<<yH%QUUU 	F5DEEE,&  	"Z11FF Z\\F#)))88	[  Eu|a//==D<d
#;XQQQQQI [  
 $$$r%   NrU   r'   r%   r#   rb   rb      s#        %% %% %% %% %%r%   rb   c                       e Zd Zd ZdS )OctetStringEncoderc                    ||                                 }n9t          |          s(|                    |                                           }n|}|                    dd          }|rt	          |          |k    r|ddfS t
          rt          d|z             |N|j        j        }|rt          j	        ||          }nt          j	                    }|                    |          }n\t          |          sM|j        j        }|rt          j	        ||          }nt          j	                    }|                    |          }d}	t          }	 ||	|	|z            }
|
sn| ||
|fi |z  }|	|z  }	#|ddfS )Nrd   r   FTre   rf   )rh   r   rg   r>   r,   rC   r=   ri   r   rj   r
   )r   r4   r5   r6   r7   r"   rd   ri   r=   poschunks              r#   r8   zOctetStringEncoder.encodeValue   s   ((IIe$$ 	 u--6688II I{{>155 	*s9~~==eT)) 	F5DEEE l*G  &GW55 {{&{11HHe$$ 
	5o-G  &GW55 ~~V~44H		 #cL001E 5(>>g>>>I<C	  $$$r%   NrU   r'   r%   r#   rq   rq      s#        8% 8% 8% 8% 8%r%   rq   c                       e Zd ZdZd ZdS )NullEncoderFc                     t           ddfS rR   rS   r3   s        r#   r8   zNullEncoder.encodeValue$  rT   r%   NrZ   r'   r%   r#   rv   rv   !  s)        ! ! ! ! !r%   rv   c                       e Zd ZdZd ZdS )ObjectIdentifierEncoderFc                    ||                     |          }|                                }	 |d         }|d         }n%# t          $ r t          j        d|          w xY wd|cxk    rdk    r_n n\|dk    r|dz   f|dd          z   }ns|dk    r|f|dd          z   }n^|dk    r|dz   f|dd          z   }nFt          j        d|          |dk    r|dz   f|dd          z   }nt          j        d|          d	}|D ]^}	d|	cxk    rd
k    r
n n||	fz  }|	d
k    r&|	d
z  f}
|	dz  }	|	rd|	d
z  z  f|
z   }
|	dz  }	|	||
z  }Et          j        d|	d|          |ddfS )Nr   r:   z
Short OID '   (      P   z Impossible first/second arcs at r'   r   r   r   zNegative OID arc z at F)rg   asTuple
IndexErrorr   r-   )r   r4   r5   r6   r7   oidfirstsecondoctetssubOidress              r#   r8   z#ObjectIdentifierEncoder.encodeValue+  s'   NN5))Emmoo	?FEVFF 	? 	? 	?##ee$=>>>	? "zz{ns122w.!i#abb')!{ns122w.''PUPU(WXXXaZZB;.3qrr7*CC ##EE$STTT  	W 	WFF!!!!c!!!!!6)##}&1 !6D=13c9CqLF  !
 # ''vvvuu(UVVVue##s	   > "A NrZ   r'   r%   r#   ry   ry   (  s)        5$ 5$ 5$ 5$ 5$r%   ry   c                   8    e Zd ZdZdZed             Zd Zd ZdS )RealEncoderr   r}   c                 v   d\  }}| dk     rd}|dk     rd}| |z  } |dk    r1| dt          |          dz  |z  z  z  } t          |          dz  |z  }n6|dk    r0| dt          |          dz  |z  z  z  } t          |          dz  |z  }	 t          |           | k    r| |z  } |d
z  }	 |t          |           ||fS )N)r:   r:   r   r)   r}            Tr:   )absr`   )mencbaseemsess        r#   _dropFloatingPointzRealEncoder._dropFloatingPointg  s    Bq55Bq55B	Ra<<s1vvzB''AA!b AA]]s1vvzB''AA!b A	1vv{{WQ3q667A%%r%   c           
         |\  }}}g d}|j         |v r|                     ||j         |          S | j         |v r|                     || j         |          S |||g}|||g}d}d}	t          d          }t          d          D ]}
|                     ||
         ||
         ||
                   \  }||
<   ||
<   ||
<   t	          ||
                   t	          |          k     s2t	          ||
                   t	          |          k    r1||
         |k     r%||
         }t          ||
                   }||
         }	t          rt          d|	d|d|d	|           |||	|fS )
N)r}   r)   r   r:   r}   infr   z(automatically chosen REAL encoding base z, sign z, mantissa z, exponent )
binEncBaser   floatranger   r`   rC   )r   r4   r   br   encBasemantissaexponentsignr   is              r#   _chooseEncBasezRealEncoder._chooseEncBase  s   1a**w&&**1e.>BBB_''**1doqAAA q!9q!9%LLq 		% 		%A !33HQKXVW[YYTa[QZa[8A;#a&&((S!-=-=Q-G-GHUVKZ[OOQK$$!!* 	7C!($$$116 7 7 7 Q""r%   c                 l   ||                     |          }|j        rdS |j        rdS |\  }}}|s
t          ddfS |dk    r6t          rt	          d           t          d||dk    rd	pd
|fz            ddfS |dk    r d}|                     |          \  }	}}
}|	dk     r|dz  }|
dk    r|dz  dk    r|dz  }|dz  }|dz  dk    nI|
dk    r"|dz  dk    r|dz  }|dz  }|dz  dk    |dz  }n!|dz  dk    r|dz  }|dz  }|dz  dk    |dz  }d}|dz  dk    r|dz  }|dz  }|dz  dk    |dk    rt          j        d          ||dz  z  }t          }|dk    s|dk    rt          |dz            }n|dvrt          |dz            |z   }|dz  }|dv|dk    r,|r*t          |d                   dz  rt          d          |z   }|dk    r,|r*t          |d                   dz  st          d          |z   }t          |          }|dk    rt          j        d          |dk    rn2|dk    r|dz  }n&|dk    r|dz  }n|dz  }t          |dz            |z   }t          }|rt          |dz            |z   }|dz  }|t          |          |z   |z   }|ddfS t          j        d|z            )N))@   FF))A   FFFT
   z!encoding REAL into character formz%dE%s%dr   +r;   r}   r   r   r:   r)   r   r   r      r       zScale factor overflowr   r(   )r   r   zReal exponent overflowzProhibited Real base %s)rg   	isPlusInf
isMinusInfr
   rC   r   r   r   r-   r   r   r,   )r   r4   r5   r6   r7   r   r   r   for   r   sfeonpor"   s                   r#   r8   zRealEncoder.encodeValue  s   NN5))E? 	)(( 	)((1a 	%$$77 97888MQQ30D"a,HHII5RVVV!VVB $ 3 3E : :B7AAvvd
 !||#gll!GAFA #gll A#gll!GAFA #gll d
 #gll!GAFA #gll d
Bc'Q,,aa c'Q,, Avv'(?@@@"'MBBAvvbQX&& w&& T**R/B!GA w&& 66b6WRU^^d%:6 bB77r772a5>>D+@7 +BBA4xx'(@AAAAvvaaaa aQX&&+B QX&&+a    b(2-IeT)) #$=$ABBBr%   N)	rL   rM   rN   r+   r   staticmethodr   r   r8   r'   r%   r#   r   r   c  sa        J& & \&6# # #BcC cC cC cC cCr%   r   c                       e Zd ZdZd ZdS )SequenceEncoderFc           
      v   t           }|                    d| j                  }t          rt          d|rdpdz             |n|j        }|r||j        }t          |                                          D ]7\  }	}
|ry||	         }|j        r!|
j	        st          rt          d|           8|j
        r%|
|j        k    rt          rt          d|           d|r|                    |j                   |r|j        r|j        }|j        t          j        j        t          j        j        fv r"| ||
|fi t%          ||j                  z  } ||
|fi |}|                    |
          r||z  }| |||fi |z  }t          rt          d	|           *| ||
|fi |z  }9nt          |j        j                  D ]j\  }	}	 ||j                 }
n-# t,          $ r  t/          j        d
|j        d|          w xY w|j        r#|j        |vrt          rt          d|           l|j
        r%|
|j        k    rt          rt          d|           |r|                    |j                   |j        }|j        r|j        t          j        j        t          j        j        fv r#| ||
|fi t%          ||j                  z  } ||
|fi |}|                    |
          r||z  }5| |||fi |z  }t          rt          d	|           ]| ||
|fi |z  }l|ddfS )NomitEmptyOptionalsz$%sencoding empty OPTIONAL componentsznot r;   z not encoding OPTIONAL component znot encoding DEFAULT component )r<   )wrapTypewrapped with wrap type zComponent name "z" not found in T)r
   r>   r   rC   isInconsistentcomponentTyper?   values
isOptionalisValueisDefaulted
asn1ObjectupdateopenTypetypeIdr   SetOf
SequenceOfdictisSameTypeWith
namedTypesnameKeyErrorr   r-   )r   r4   r5   r6   r7   r"   r   inconsistencyr   rH   	component	namedTyper   rt   componentSpecs                  r#   r8   zSequenceEncoder.encodeValue  s   	$[[ $"9; ;  	:6&167R9 : : : !0M $##,J"+ELLNN";"; *K *KY H *3I + !I4E ! UC		 STTT  , !i>R1R1R TCyy RSSS ) H)2FGGG  K)"4 K(3H J-t/E+G G G "YY )8&R &R"&w9O"P"P"P&R &R R		
 !*	)X I I I I#229== O%.II &5()N)Ng)N)NNI" O #88$M N N N 9h!J!J'!J!JJIIU*K\ #,H,B,M"N"N /P /PY0 %in 5II 0 0 0++!-/ 0 0 00 ' IN%,G,G QIIOPPP( Y):N-N-N P99NOOO% DNNi.BNCCC ) 4 % P$+ J-t/E0G G G "YY )=&W &W"&w9T"U"U"U&W &W W		
 !*	)] N Ng N N(77	BB T%.II &5-)S)S7)S)SSI" T #==$R S S S 9m!O!Ow!O!OOII$$$s   G*H	N)rL   rM   rN   r   r8   r'   r%   r#   r   r   
  s.        r% r% r% r% r%r%   r   c                       e Zd Zd Zd ZdS )SequenceOfEncoderc                 <   ||j         }|r|n|j        }g }|                    dd           }t          |          D ]^\  }}	 ||	|fi |}
|8|                    |	          s# ||
|fi |}
t
          rt          d|           |                    |
           _|S )Nr   r   )r   r   popr?   r   rC   append)r   r4   r5   r6   r7   r   chunksr   rH   r   rt   s              r#   _encodeComponentsz#SequenceOfEncoder._encodeComponents  s    !0M $##$  -H;;z400'.. 	! 	!NCIi==W==E$ //	:: % "	%==W== CCxxABBBMM%    r%   c                 P     | j         |||fi |}t          j        |          ddfS )NT)r   r
   join)r   r4   r5   r6   r7   r   s         r#   r8   zSequenceOfEncoder.encodeValue  sC    ''8Y3 3*13 3 y  $,,r%   N)rL   rM   rN   r   r8   r'   r%   r#   r   r     s2          :- - - - -r%   r   c                       e Zd Zd ZdS )ChoiceEncoderc                 &   |                                 }nmfd|j        j        D             }t          |          dk    r*t	          j        t          |          rdpdd          |d         }|         }||         } |||fi |ddfS )Nc                 0    g | ]}|j         v |j         S r'   )r   ).0r   r4   s     r#   
<listcomp>z-ChoiceEncoder.encodeValue.<locals>.<listcomp>  s1     1 1 1	!%// ^///r%   r:   z	Multiple zNone z components for Choice at r   T)getComponentr   r   r,   r   r-   )r   r4   r5   r6   r7   r   namesr   s    `      r#   r8   zChoiceEncoder.encodeValue  s    **,,II1 1 1 1X5K5V 1 1 1E5zzQ'CPUJJLf[fLqjqLqLqsxsx(yzzz8DdI~HyH8888$DDr%   NrU   r'   r%   r#   r   r     s(        E E E E Er%   r   c                       e Zd Zd ZdS )
AnyEncoderc                     ||                                 }n6t          |          s'|                    |                                           }||                    dd           dfS )Nr/   T)rh   r   rg   r>   r3   s        r#   r8   zAnyEncoder.encodeValue  sd    NN$$EEe$$ 	5NN5))2244E'++i666<<r%   NrU   r'   r%   r#   r   r     s#        = = = = =r%   r   c                   (    e Zd ZdZdZi fdZddZdS )EncoderNc                 "    || _         || _        d S N)_Encoder__tagMap_Encoder__typeMap)r   tagMaptypeMaps      r#   __init__zEncoder.__init__  s     r%   c           
      6   	 ||j         }n|j         }n&# t          $ r t          j        d|d          w xY wt          rrt	          d|                    dd           rdpdd|                    d	d
          d|d u r|                                p|                                d|           | j        |                    | j                   | j	        |                    | j	                   	 | j
        |         }t          rt	          d|j        j        d|           n# t          $ r ||j        }n|j        }t          j        |j        |j                  }	 | j        |         }n)# t          $ r t          j        d|d|d          w xY wt          rt	          d|j        j        d|           Y nw xY w |j        ||| fi |}t          r8t	          d|dt)          |          dt+          j        |          d           |S )NzValue z4 is not ASN.1 type instance and "asn1Spec" not givenzencoder called in r/   Tinr;   zdef mode, chunk size rd   r   z
 for type z	, value:
)r/   )rd   zusing value codec z chosen by type ID zNo encoder for z ()z chosen by tagSet zcodec z built z octets of substrate: z
encoder completed)r   AttributeErrorr   r-   rC   r>   prettyPrintTypefixedDefLengthModer   fixedChunkSizer   	__class__rL   r   r=   r   rj   ri   r   r   r,   r   rD   )	r   r4   r5   r7   r   concreteEncoderr=   
baseTagSetr"   s	            r#   __call__zEncoder.__call__  s=   	K! 	K 	K 	K##BG%%%J K K K	K  	QC07It0L0L,L,UQU,[Y[,[,[]d]h]hiwyz]{]{]{]{  ~F  JN  ~N  ~j  SX  Sh  Sh  Sj  Sj  ~H  nv  nF  nF  nH  nH  ~H  ~H  JO  JOP Q Q Q ".NN4#:N;;;*NN(;N<<<	o"nV4O p?C\CeCeCegmgmnooo 	o 	o 	o! FNFNCCJT"&-
"; T T T''EEE666(RSSST  o/B[BdBdBdflflmnnn!	o$ +O*5(DLLGLL	 	NCRaRaRacfgpcqcqcqcqsx  tA  BK  tL  tL  tL  tL  M  N  N  Ns2    #783D, ,:G'E54G5&F)GGr   )rL   rM   rN   r   r   r   r   r'   r%   r#   r   r   	  sL        N (* ! ! ! !3 3 3 3 3 3r%   r   )JrA   pyasn1r   r   pyasn1.codec.berr   pyasn1.compat.integerr   pyasn1.compat.octetsr   r   r	   r
   r   r   pyasn1.typer   r   r   r   __all__registerLoggeerL   DEBUG_ENCODERrC   objectr   rP   rW   r\   rb   rq   rv   ry   r   r   r   r   r   endOfOctetsr=   BooleanInteger	BitStringOctetStringNullObjectIdentifier
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#   <module>r     s   


                         * * * * * *: : : : : : : : : : : : : : : :                        *e85+>???    &   D! ! ! ! !, ! ! !
4 4 4 4 4( 4 4 4> > > > >( > > >(&% &% &% &% &%* &% &% &%R:% :% :% :% :%, :% :% :%z! ! ! ! !% ! ! !8$ 8$ 8$ 8$ 8$1 8$ 8$ 8$vdC dC dC dC dC% dC dC dCNw% w% w% w% w%) w% w% w%t"- "- "- "- "-+ "- "- "-JE E E E E' E E E$= = = = =# = = =
O..00
L))
 	L))
 	N++--	

 	//11
 	Ikkmm
 	 "9"9";";
 	ONN,,
 	Ikkmm
 	O--//
 	J((**
 	K
 	O..00
  	1133!
" 	!3!3!5!5#
$ 	1133%
& 	 2 2 4 4'
( 	N--//113311331133!3!3!5!5N--//
"$6$6$8$8
!#5#5#7#7
N--//;
 
B L)) L))  	N++--  	//11	 
 	Ikkmm  	 "9"9";";  	ONN,,  	Ikkmm  	HO__&&  	J((**  	M//++  	O--//  	K  	HOZZ\\ " 	O..00# $ 	1133% & 	!3!3!5!5' ( 	1133 2 2 4 4N--//113311331133!3!3!5!5N--//
"$6$6$8$8
!#5#5#7#7
N--//?   F< < < < <f < < <b 
	!	!r%   