
    E#i                         S SK Jr  S SKrS SKr " S S\5      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S rS rS rS rg)    )divisionNc                       \ rS rSrSrg)UnexpectedDER    N)__name__
__module____qualname____firstlineno____static_attributes__r       \/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/static_dependencies/ecdsa/der.pyr   r      s    r   r   c                 f    [         R                  SU -   SS5      [        [        U5      5      -   U-   $ )N      big)intto_bytesencode_lengthlen)tagvalues     r   encode_constructedr      s,    <<S!U+mCJ.GG%OOr   c                    U S:  d   eSU -  R                  5       n[        U5      S-  (       a  SU-   n[        R                  " U5      n[	        US   [
        5      (       a  US   O[        US   5      nUS::  a&  S[
        R                  [        U5      SS5      -   U-   $ S[
        R                  [        U5      S-   SS5      -   S	-   U-   $ )
Nr   %x      0      r   r       )encoder   binascii	unhexlify
isinstancer   ordr   )rhsnums       r   encode_integerr*      s    6M6	A
1vz1H1AQqT3''!A$S1YC
d{c!fa77!;;
 c!fQh599GCaGGr   c                 6    S[        [        U 5      5      -   U -   $ )N   r   r   r(   s    r   encode_bitstringr/          ]3q6**Q..r   c                 6    S[        [        U 5      5      -   U -   $ )N   r-   r.   s    r   encode_octet_stringr3   #   r0   r   c                     U S::  d   eUS::  d   e[         R                  SU -  U-   SS5      /U Vs/ s H  n[        U5      PM     sn-   nSR                  U5      nS[	        [        U5      5      -   U-   $ s  snf )Nr   '   (   r   r   r      )r   r   encode_numberjoinr   r   )firstsecondpiecespencoded_piecesbodys         r   
encode_oidr@   '   s    A::R<<ll2e8F?Au=>=CBE=C CPPQBR=CBE EN88N#D]3t9--44BEs   A7c                      [        U  Vs/ s H  n[        U5      PM     sn5      nS[        U5      -   SR                  U 5      -   $ s  snf )Nr   r   )sumr   r   r9   )r>   r=   	total_lens      r   encode_sequencerD   0   sB    ^4^SV^45I]9--0HHH 5s   Ac           
      "   / nU (       a&  UR                  SU S-  S-  5        U S-	  n U (       a  M&  U(       d  UR                  S5        US==   S-  ss'   SR                  U Vs/ s H  n[        R	                  USS5      PM     sn5      $ s  snf )	Nr   r      r   r   r   r   )insertappendr9   r   r   )nb128_digitsds      r   r8   r8   5   s    K
1q4x4/0F ! 1OtO88D1S\\!Q.DEEDs   $!Bc                     [        U S   [        5      (       a  U S   O[        U S   5      nUS-  S:w  a  [        SU-  5      eUS-  n[	        U SS  5      u  p4U SU-   SU-   U-    nU SU-   U-   S  nX%U4$ )Nr      r   z.wanted constructed tag (0xa0-0xbf), got 0x%02x   r   )r$   r   r%   r   read_length)strings0r   lengthllenr?   rests          r   remove_constructedrV   @   s     C00c&)nB
T	dL ! " 	"
t)Cvabz*LF!D&4'D!D&-.!Dd?r   c                     U R                  S5      (       d9  [        U S   [        5      (       a  U S   O[        U S   5      n[	        SU-  5      e[        U SS  5      u  p#SU-   U-   nU SU-   U XS  4$ )Nr   r   z"wanted sequence (0x30), got 0x%02xr   
startswithr$   r   r%   r   rP   )rQ   rJ   rS   lengthlengthendseqs        r   remove_sequencer\   L   s    W%%#F1Is33F1IVAY@1DEE&vabz2F|^F"F!L.(&/99r   c                     U R                  S5      (       d9  [        U S   [        5      (       a  U S   O[        U S   5      n[	        SU-  5      e[        U SS  5      u  p#U SU-   SU-   U-    nU SU-   U-   S  nXE4$ )Nr2   r   z%wanted octetstring (0x04), got 0x%02xr   rX   )rQ   rJ   rS   rT   r?   rU   s         r   remove_octet_stringr^   U   s    W%%#F1Is33F1IVAYCaGHHvabz*LF!D&4'D!D&-.!D:r   c                    U R                  S5      (       d9  [        U S   [        5      (       a  U S   O[        U S   5      n[	        SU-  5      e[        U SS  5      u  p#U SU-   SU-   U-    nU SU-   U-   S  n/ nU(       a+  [        U5      u  pUR                  U5        XGS  nU(       a  M+  UR                  S5      nUS-  n	USU	-  -
  n
UR                  SU	5        UR                  SU
5        [        U5      U4$ )Nr7   r   z wanted object (0x06), got 0x%02xr   r6   )rY   r$   r   r%   r   rP   read_numberrI   poprH   tuple)rQ   rJ   rS   rZ   r?   rU   numberslln0r:   r;   s              r   remove_objectrf   _   s	   W%%#F1Is33F1IVAY>BCC&vabz2F!L.<!67D!L.'()DG
D!qCy $ 
QBFEE]FNN1eNN1f>4r   c                    U R                  S5      (       d9  [        U S   [        5      (       a  U S   O[        U S   5      n[	        SU-  5      e[        U SS  5      u  p#U SU-   SU-   U-    nU SU-   U-   S  n[        US   [        5      (       a  US   O[        US   5      nUS:  d   e[        [        R                  " U5      S5      U4$ )Nr   r   z!wanted integer (0x02), got 0x%02xr   rF      )rY   r$   r   r%   r   rP   r"   hexlify)rQ   rJ   rS   rT   numberbytesrU   nbytess          r   remove_integerrl   s   s    W%%#F1Is33F1IVAY?!CDDvabz*LF4$v.K!D&-.!D)+a.#>>[^CTUDWFD==x,b1477r   c                     SnSn U[        U 5      :  a  [        S5      eUS-  n[        X   [        5      (       a  X   O[	        X   5      nXS-  -  nUS-  nUS-  (       d   X4$ Mc  )Nr   ran out of length bytesr   r   r   rF   )r   r   r$   r   r%   )rQ   numberrT   rL   s       r   r`   r`      sz    FD
#f+ 9::1&v|S99FLs6<?Pt8	4x< r   c                    U S:  d   eU S:  a  [         R                  U SS5      $ SU -  R                  5       n[        U5      S-  (       a  SU-   n[        R
                  " U5      n[        U5      n[         R                  SU-  SS5      U-   $ )Nr   rF   r   r   r   r   r   )r   r   r!   r   r"   r#   )lr(   rT   s      r   r   r      s    6M64x||Aq%((	A
1vz1H1Aq6D<<tQ.22r   c                    [        U S   [        5      (       a  U S   O[        U S   5      nUS-  (       d  US-  S4$ US-  nU[        U 5      S-
  :  a  [	        S5      e[        [
        R                  " U SSU-    5      S5      SU-   4$ )Nr   rF   r   r   rn   rh   )r$   r   r%   r   r   r"   ri   )rQ   r)   rT   s      r   rP   rP      s    !&)S11&)s6!9~C$Jd
Q :Dc&k!m566xq4 0126$>>r   c                     [        U S   [        5      (       a  U S   O[        U S   5      nU R                  S5      (       d  [	        SU-  5      e[        U SS  5      u  p#U SU-   SU-   U-    nU SU-   U-   S  nXE4$ )Nr   r,   z#wanted bitstring (0x03), got 0x%02xr   )r$   r   r%   rY   r   rP   )rQ   r)   rS   rT   r?   rU   s         r   remove_bitstringrt      s    !&)S11&)s6!9~CW%%ACGHHvabz*LF!D&4'D!D&-.!D:r   c                 B   [        U [        5      (       a  U R                  5       n SR                  U R	                  S5       Vs/ s H4  nU(       d  M  UR                  S5      (       a  M$  UR                  5       PM6     sn5      n[        R                  " U5      $ s  snf )Nr      
s   -----)	r$   strr!   r9   splitrY   stripbase64	b64decode)pemrq   rL   s      r   unpemr}      s}    #sjjlSYYu%5 9%5 !"h!7 !'')%5 9 	:AA9s   BB+Bc           	      B   [         R                  " U 5      nSU-  R                  5       /nUR                  [	        S[        U5      S5       Vs/ s H  nX$US-    S-   PM     sn5        UR                  SU-  R                  5       5        SR                  U5      $ s  snf )Nz-----BEGIN %s-----
r   @   rv   z-----END %s-----
r   )rz   	b64encoder!   extendranger   rI   r9   )dernameb64linesstarts        r   topemr      s    


3
C$t+3356E	LL$QC"575e E"H%e+57 8	LL&-557888E?7s   B)
__future__r   r"   rz   	Exceptionr   r   r*   r/   r3   r@   rD   r8   rV   r\   r^   rf   rl   r`   r   rP   rt   r}   r   r   r   r   <module>r      sy      	I 	PH //5I
F	: (	8 	3
?Lr   