a
    _mg                     @   s  d Z ddlZddlZddlZddlmZ dd Zejdk rddlZdd Z	d	d
 Z
ejdk srejdk sre dkrdd Zdd Zdd Zndd Zdd Zdd Zdd Zdd Zdd Zd)ddZn@d d
 Z
d!d Z	d"d Zd#d Zd$d ZejZd%d Zd*d&dZd'd( ZdS )+zD
Common functions for providing cross-python version compatibility.
    N)integer_typesc                 C   s   | | }t |tr|S t|S )z1Take index'th byte from string, return as integer)
isinstancer   ord)stringindexval r   D/var/www/html/idle/venv/lib/python3.9/site-packages/ecdsa/_compat.pystr_idx_as_int
   s    
r
   )   r   c                 C   s   t | S )#Cast the input into array of bytes.)bufferZbuffer_objectr   r   r	   normalise_bytes   s    r   c                 C   s   | S Nr   )retr   r   r	   hmac_compat   s    r   )      )r   r      Javac                 C   s   t dd| S ),Removes all whitespace from passed in string\s+ )resubtextr   r   r	   remove_whitespace#   s    r   c                 C   s   t | S r   )strr   r   r   r	   compat26_str'   s    r!   c                 C   s   | dkrdS t t| d S )Nr   r   )lenbinr    r   r   r	   
bit_length*   s    r$   c                 C   s   t jdd| t jdS r   r   r   )flagsr   r   UNICODEr   r   r   r	   r   1   s    c                 C   s   | S r   r   r    r   r   r	   r!   5   s    c                 C   s   |   S z8Return number of bits necessary to represent an integer.r$   r    r   r   r	   r$   8   s    c                 C   s   t t| S r   )binasciib2a_hexr!   r    r   r   r	   r,   <   s    r,   c              
   C   sF   zt t| W S  ty@ } ztd| W Y d }~n
d }~0 0 d S )Nbase16 error: %s	bytearrayr+   a2b_hex	Exception
ValueErrorr   er   r   r	   r0   ?   s    r0   c                 C   sJ   | sdS |dkrt t| dS |dkr>t t| ddd dS tddS )zConvert bytes to an int.r   big   littleNz(Only 'big' and 'little' endian supported)intr,   r2   )r   	byteorderr   r   r	   bytes_to_intE   s    r;   r5   c                    st   |du rt  }|dkr>t fddttd|d dD S |dkrht fddtd|d dD S td	dS )
z Return number converted to bytesNr5   c                 3   s   | ]} |? d @ V  qdS    Nr   .0ir    r   r	   	<genexpr>T   s   zint_to_bytes.<locals>.<genexpr>r      r7   c                 3   s   | ]} |? d @ V  qdS r<   r   r>   r    r   r	   rA   X   s   z'Only 'big' or 'little' endian supported)byte_lengthr/   reversedranger2   r   lengthr:   r   r    r	   int_to_bytesO   s    rH   c                 C   s   | S r   r   )datar   r   r	   r   _   s    c                 C   s   t | dS )r   B)
memoryviewcastr   r   r   r	   r   b   s    c                 C   s   | S r   r   r    r   r   r	   r!   f   s    c                 C   s   t jdd| t jdS r%   r'   r   r   r   r	   r   i   s    c              
   C   sL   zt tt | dW S  tyF } ztd| W Y d }~n
d }~0 0 d S )Nasciir-   r.   r3   r   r   r	   r0   m   s    c                 C   s   |   S r)   r*   r    r   r   r	   r$   y   s    c                 C   s4   |du rt | }t| ts"t| } t| j||dS )zConvert integer to bytes.N)rG   r:   )rC   r   r9   r/   to_bytesrF   r   r   r	   rH   }   s
    
c                 C   s   t | }|d d S )z9Return number of bytes necessary to represent an integer.r   rB   r*   )r   rG   r   r   r	   rC      s    rC   )Nr5   )Nr5   )__doc__sysr   r+   sixr   r
   version_infoplatformr   r   systemr   r!   r$   r,   r0   r;   rH   r9   
from_bytesrC   r   r   r   r	   <module>   sD   



	

