
    ei}              	          d dl Z d dl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mZmZ dd	lmZ dd
z  dz
  ZdZdedefdZdedefdZ	 ddededee         defdZddededefdZdee         defdZdedefdZdS )    N)ListOptionalSequence   )keccak   )int_from_bytes)EC_ORDER)ECSignatureprivate_to_stark_keysign)pedersen_hash      0xdatareturnc                 T    t          t          j        |                     t          z  S )z^
    A variant of eth-keccak that computes a value that fits in a Starknet field element.
    )r	   r   SHA3MASK_250r   s    j/var/www/html/volatility/venv/lib/python3.11/site-packages/ccxt/static_dependencies/starknet/hash/utils.py_starknet_keccakr      s!     &+d++,,x77    c                 Z    t          j        t          g | t          |           d          S )aY  
    Computes a hash chain over the data, in the following order:
        h(h(h(h(0, data[0]), data[1]), ...), data[n-1]), n).

    The hash is initialized with 0 and ends with the data length appended.
    The length is appended in order to avoid collisions of the following kind:
    H([x,y,z]) = h(h(x,y),z) = H([w, z]) where w = h(x,y).
    r   )	functoolsreducer   lenr   s    r   compute_hash_on_elementsr   $   s*     M+=T+=3t99+=qAAAr       msg_hashpriv_keyseedc                 $    t          | ||          S )z-
    Signs the message with private key.
    )r   )r!   r"   r#   s      r   message_signaturer%   0   s     (D)))r   valuebytes_lengthc                 0    |                      |d          S )Nbig)	byteorder)to_bytes)r&   r'   s     r   encode_uintr,   E   s    >>,%>888r   c                 @    d                     d | D                       S )Nr   c              3   4   K   | ]}t          |          V  d S )N)r,   ).0xs     r   	<genexpr>z#encode_uint_list.<locals>.<genexpr>J   s(      11qKNN111111r   )joinr   s    r   encode_uint_listr3   I   s#    8811D111111r   c                 6    |                                  dz   dz  S )N      )
bit_length)r&   s    r   get_bytes_lengthr8   M   s    "q((r   )r    )r   typingr   r   r    r   commonr	   	constantsr
   starkware.crypto.signaturer   r   r   #starkware.crypto.fast_pedersen_hashr   r   
HEX_PREFIXbytesintr   r   r%   r,   r3   r8    r   r   <module>rC      s       + + + + + + + + + +       # # # # # #                           c6A:
85 8S 8 8 8 8	B8 	B 	B 	B 	B 	B 9;* ** *(0** * * **9 9s 9# 9u 9 9 9 9249 2 2 2 2 2)C )C ) ) ) ) ) )r   