
    Ii                        S SK J r   SSKJrJr  SSKJrJrJrJr   " S S5      r	\	R                  \	R                  \	R                  \	R                  \	R                  \	R                  \	R                   \	R"                  \	R$                  \	R&                  \	R(                  S.r\R-                  5        V Vs0 s H  u  pX_M	     snn rS rS	 rS
 rS rS rS rS rS rS r S r!S r"S r#S r$gs  snn f )    )datetime   )oidToHex
oidFromHex)
hexFromInt
intFromHexbyteStringFromHexbitsFromHexc                   @    \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrg)DerFieldType   integer	bitStringoctetStringnullobjectprintableStringutcTimesequencesetoidContainerpublicKeyPointContainer N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r       =/venv/lib/python3.13/site-packages/ellipticcurve/utils/der.pyr   r      s:    GIKDF'OGH
C!L7r   r   )020304050613173031a0a1c                  T    [        [        R                  SR                  U 5      5      $ )N )encodePrimitiver   r   join)encodedValuess    r    encodeConstructedr1   %   s    <00"''-2HIIr   c                     U [         R                  :X  a  [        U5      nU [         R                  :X  a  [	        U5      nSR                  [        U    [        U5      US9$ )Nz{tag}{size}{value})tagsizevalue)r   r   _encodeIntegerr   r   format_typeToHexTag_generateLengthBytes)tagTyper5   s     r    r.   r.   )   sV    ,&&&u%,%%%&&=+AH\]bHckp&qqr   c           
         U (       d  / $ U S S U SS  p[        U 5      u  p#XX2-    XU-   S  p[        U5      U:  a  [        S5      e[        U5      nUS   (       a  [	        U5      n[
        R                  [        [
        R                  [        [
        R                  [        [
        R                  [        [
        R                  [        0R!                  US   ["        5      nU" U5      /[	        U 5      -   $ )N   zmissing bytes in DER parseisConstructedtype)_readLengthByteslen	Exception_getTagDataparser   r   
_parseNullr   	_parseOidr   
_parseTimer   _parseIntegerr   _parseStringget	_parseAny)hexadecimaltypeBytelengthlengthBytescontenttagDatavalueParsers          r    rC   rC   1   s    	'O[_k*;7F&K4HI;ekWkWlKm[
7|f455(#G. 	:Yjm$$l 
c'&/9%   !E+$666r   c                     U $ Nr   rK   s    r    rJ   rJ   H   s    r   c                 *    [        [        U 5      5      $ rS   )tupler   rT   s    r    rE   rE   L   s    K())r   c                 F    [        U 5      n[        R                  " US5      $ )Nz%y%m%d%H%M%SZ)rH   r   strptime)rK   strings     r    rF   rF   P   s    +&FV_55r   c                 4    [        U 5      R                  5       $ rS   )r	   decoderT   s    r    rH   rH   U   s    [)0022r   c                     g rS   r   )_contents    r    rD   rD   Y   s    r   c                 v    [        U 5      n[        U S   5      nUS   S:X  a  U$ S[        U 5      -  nUSU-  -
  $ )Nr   0   r<   )r   r
   r@   )rK   r   bitsbitCounts       r    rG   rG   ]   sH    %G{1~&DAw#~3{##Ha8m$$r   c                     [        [        U 5      5      nU S:  a!  S[        U5      -  nSU-  U -   n[        U5      $ [        US   5      nUS   S:X  a  SU-   nU$ )Nr   r`   r<   100)r   absr@   r
   )numberrK   rb   twosComplementra   s        r    r6   r6   f   sh    S[)Kzs;''x-61.)){1~&DAw#~[(r   c                     Sn[        U SU 5      nUS:  nU(       a  US-  nXA4$ US-
  nUS:X  a  [        S5      eUSU-  -  n[        U SU 5      S-  nXA4$ )Nr<   r      z)indefinite length encoding located in DER)r   rA   )rK   rN   lengthIndicatorisShortFormrM   lengthLengths         r    r?   r?   r   s    K Q{!;<O!C'K 1$"""S(LqCDD1|##KAk23a7Fr   c                     [        U 5      S-  n[        U5      nUS:  a  UR                  S5      $ S[        U5      S-  -   n[        U5      U-   $ )Nr<   rj   )r@   r   zfill)rK   r4   rM   rm   s       r    r9   r9      sS    {q DFcz||AV))Ll#f,,r   c                     [        U 5      nUS S u  p#nSSS.SSS.S.U   U   nUS:H  nUU[        R                  U 5      S.$ )	N   	universalapplication)r_   rd   zcontext-specificprivaterd   )classr=   r>   )r
   _hexTagToTyperI   )r3   ra   bit8bit7bit6tagClassr=   s          r    rB   rB      s|    sDBQxD 

 $
	 	 	H CKM &!!#& r   N)%r   oidr   r   binaryr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   rv   itemsr8   r1   r.   rC   rJ   rE   rF   rH   rD   rG   r6   r?   r9   rB   )kvs   00r    <module>r      s     % J J8 8  



 
 

"
"







&
&










#
#

.
. #0"5"5"78"7$!"78Jr7.*6
3%	 -S 9s   4C.