
    ei                         d dl mZ d dlZd dlZ G d de          Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )    )divisionNc                       e Zd ZdS )UnexpectedDERN)__name__
__module____qualname__     `/var/www/html/volatility/venv/lib/python3.11/site-packages/ccxt/static_dependencies/ecdsa/der.pyr   r      s        Dr
   r   c                     t                               d| z   dd          t          t          |                    z   |z   S )N      big)intto_bytesencode_lengthlen)tagvalues     r   encode_constructedr      s4    <<S!U++mCJJ.G.GG%OOr
   c                    | dk    sJ d| z                                   }t          |          dz  rd|z   }t          j        |          }t	          |d         t
                    r|d         nt          |d                   }|dk    r/dt
                              t          |          dd          z   |z   S dt
                              t          |          dz   dd          z   d	z   |z   S )
Nr   %x      0      r   r       )encoder   binascii	unhexlify
isinstancer   ordr   )rhsnums       r   encode_integerr'      s    6666	A
1vvz 1H1AQqT3''
6!A$$S1YYC
d{{c!ffa777!;;
 c!ffQh5999GCaGGr
   c                 F    dt          t          |                     z   | z   S )N   r   r   r%   s    r   encode_bitstringr,           ]3q66***Q..r
   c                 F    dt          t          |                     z   | z   S )N   r*   r+   s    r   encode_octet_stringr0   #   r-   r
   c                     | dk    sJ |dk    sJ t                               d| z  |z   dd          gd |D             z   }d                    |          }dt          t	          |                    z   |z   S )	Nr   '   (   r   r   c                 ,    g | ]}t          |          S r	   )encode_number.0ps     r   
<listcomp>zencode_oid.<locals>.<listcomp>*   s?     BE BE BE89 CPPQBRBR BE BE BEr
   r
      )r   r   joinr   r   )firstsecondpiecesencoded_piecesbodys        r   
encode_oidrA   '   s    A::::R<<<<ll2e8F?Au==> BE BE=CBE BE BE EN88N##D]3t99---44r
   c                      t          d | D                       }dt          |          z   d                    |           z   S )Nc                 ,    g | ]}t          |          S r	   )r   r6   s     r   r9   z#encode_sequence.<locals>.<listcomp>1   s    444SVV444r
   r   r
   )sumr   r;   )r?   	total_lens     r   encode_sequencerF   0   sB    44^44455I]9---0H0HHHr
   c                     g }| r#|                     d| dz  dz             | dz	  } | #|s|                    d           |dxx         dz  cc<   d                    d |D                       S )Nr   r         r
   c                 F    g | ]}t                               |d d          S )r   r   )r   r   )r7   ds     r   r9   z!encode_number.<locals>.<listcomp>=   s(    DDD1S\\!Q..DDDr
   )insertappendr;   )nb128_digitss     r   r5   r5   5   s    K
 1q4x4/000F    1OOOtOOO88DDDDDEEEr
   c                 6   t          | d         t                    r| d         nt          | d                   }|dz  dk    rt          d|z            |dz  }t	          | dd                    \  }}| d|z   d|z   |z            }| d|z   |z   d          }|||fS )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_constructedrZ   @   s     C00	Dc&)nnB
T	dL ! " " 	"
t)Cvabbz**LFD!D&4&'D!D&-..!Dd?r
   c                 2   |                      d          sJt          | d         t                    r| d         nt          | d                   }t	          d|z            t          | dd                    \  }}d|z   |z   }| d|z   |         | |d          fS )Nr   r   z"wanted sequence (0x30), got 0x%02xr   
startswithr!   r   r"   r   rT   )rU   rO   rW   lengthlengthendseqs        r   remove_sequencer`   L   s    W%% F#F1Is33GF1IIVAY@1DEEE&vabbz22FL|^F"F!L.'(&/99r
   c                 B   |                      d          sJt          | d         t                    r| d         nt          | d                   }t	          d|z            t          | dd                    \  }}| d|z   d|z   |z            }| d|z   |z   d          }||fS )Nr/   r   z%wanted octetstring (0x04), got 0x%02xr   r\   )rU   rO   rW   rX   r@   rY   s         r   remove_octet_stringrb   U   s    W%% I#F1Is33GF1IIVAYCaGHHHvabbz**LFD!D&4&'D!D&-..!D:r
   c                 f   |                      d          sJt          | d         t                    r| d         nt          | d                   }t	          d|z            t          | dd                    \  }}| d|z   d|z   |z            }| d|z   |z   d          }g }|r3t          |          \  }}|                    |           ||d          }|3|                    d          }|dz  }	|d|	z  z
  }
|	                    d|	           |	                    d|
           t          |          |fS )Nr:   r   z wanted object (0x06), got 0x%02xr   r3   )r]   r!   r   r"   r   rT   read_numberrN   poprM   tuple)rU   rO   rW   r^   r@   rY   numberslln0r<   r=   s              r   remove_objectrj   _   sM   W%% D#F1Is33GF1IIVAY>BCCC&vabbz22FL!L.<!667D!L.'(()DG
 D!!2qBCCy   
QBFEE]FNN1eNN1f>>4r
   c                    |                      d          sJt          | d         t                    r| d         nt          | d                   }t	          d|z            t          | dd                    \  }}| d|z   d|z   |z            }| d|z   |z   d          }t          |d         t                    r|d         nt          |d                   }|dk     sJ t          t          j        |          d          |fS )Nr   r   z!wanted integer (0x02), got 0x%02xr   rH      )r]   r!   r   r"   r   rT   r   hexlify)rU   rO   rW   rX   numberbytesrY   nbytess          r   remove_integerrp   s   s    W%% E#F1Is33GF1IIVAY?!CDDDvabbz**LFD4$v-.K!D&-..!D)+a.#>>W[^^CTUDWDWFD====x,,b11477r
   c                     d}d}	 |t          |           k    rt          d          |dz  }t          | |         t                    r| |         nt	          | |                   }||dz  z  }|dz  }|dz  sns||fS )Nr   Tran out of length bytesrI   r   r   rH   )r   r   r!   r   r"   )rU   numberrX   rL   s       r   rd   rd      s    FD#f++ 9:::1&vd|S99PF4LLs6$<?P?P1t8	4x 	 4<r
   c                 <   | dk    sJ | dk     rt                               | dd          S d| z                                  }t          |          dz  rd|z   }t	          j        |          }t          |          }t                               d|z  dd          |z   S )Nr   rH   r   r   r   r   r   )r   r   r   r   r   r    )lr%   rX   s      r   r   r      s    66664xx||Aq%(((	A
1vvz 1H1Aq66D<<tQ..22r
   c                 B   t          | d         t                    r| d         nt          | d                   }|dz  s|dz  dfS |dz  }|t          |           dz
  k    rt	          d          t          t          j        | dd|z                      d          d|z   fS )Nr   rH   r   r   rr   rl   )r!   r   r"   r   r   r   rm   )rU   r&   rX   s      r   rT   rT      s    !&)S11
E&))s6!9~~C$J d
Q :Dc&kk!m5666xq4x 011266$>>r
   c                 B   t          | d         t                    r| d         nt          | d                   }|                     d          st	          d|z            t          | dd                    \  }}| d|z   d|z   |z            }| d|z   |z   d          }||fS )Nr   r)   z#wanted bitstring (0x03), got 0x%02xr   )r!   r   r"   r]   r   rT   )rU   r&   rW   rX   r@   rY   s         r   remove_bitstringrx      s    !&)S11
E&))s6!9~~CW%% IACGHHHvabbz**LFD!D&4&'D!D&-..!D:r
   c                     t          | t                    r|                                 } d                    d |                     d          D                       }t          j        |          S )Nr
   c                 d    g | ]-}||                     d           |                                .S )s   -----)r]   strip)r7   ru   s     r   r9   zunpem.<locals>.<listcomp>   sH     9 9 99!"h!7!79!'')) 9 9 9r
      
)r!   strr   r;   splitbase64	b64decode)pemrL   s     r   unpemr      sl    #s jjll 9 9SYYu%5%5 9 9 9 	: 	:AAr
   c           	      T   t          j        |           d|z                                  g}|                    fdt	          dt                    d          D                        |                    d|z                                             d                    |          S )Nz-----BEGIN %s-----
c                 0    g | ]}||d z            dz   S )@   r|   r	   )r7   startb64s     r   r9   ztopem.<locals>.<listcomp>   s;     7 7 7 eE"Hn%e+ 7 7 7r
   r   r   z-----END %s-----
r
   )r   	b64encoder   extendranger   rN   r;   )dernamelinesr   s      @r   topemr      s    

3

C$t+33556E	LL 7 7 7 7$QC"557 7 7 8 8 8	LL&-557788888E??r
   )
__future__r   r   r   	Exceptionr   r   r'   r,   r0   rA   rF   r5   rZ   r`   rb   rj   rp   rd   r   rT   rx   r   r   r	   r
   r   <module>r      sx          	 	 	 	 	I 	 	 	P P PH H H / / // / /5 5 5I I I
F F F	 	 	: : :       (	8 	8 	8   	3 	3 	3
? 
? 
?  L      r
   