o
    ¢ØÆh¢  ã                   @   sœ   d dl mZmZ d dlmZmZmZ eeƒdededee fdd„ƒZ	dedeeef fd	d
„Z
eeƒdedee fdd„ƒZdedeeef fdd„ZdS )é    )ÚIteratorÚTuple)Úapply_to_return_valueÚbig_endian_to_intÚint_to_big_endianÚsignature_rÚsignature_sÚreturnc                 c   sB   � dV  t | ƒ}t |ƒ}t|ƒt|ƒ V  |E dH  |E dH  dS )a…  
    Encode two integers using DER, defined as:

    ::

        ECDSASpec DEFINITIONS ::= BEGIN
              ECDSASignature ::= SEQUENCE {
                 r   INTEGER,
                 s   INTEGER
             }
        END

    Only a subset of integers are supported: positive, 32-byte ints.

    See: https://docs.microsoft.com/en-us/windows/desktop/seccertenroll/about-sequence
    é0   N)Ú_encode_intÚlen)r   r   Úencoded1Úencoded2© r   ú_/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/eth_keys/utils/der.pyÚtwo_int_sequence_encoder   s   €
r   Úencodedc                 C   sd   | d dkrt d| d › �ƒ‚t| dd… ƒ\}}t|ƒ\}}t|ƒdkr.t dt|ƒ› �ƒ‚||fS )aÁ  
    Decode bytes to two integers using DER, defined as:

    ::

        ECDSASpec DEFINITIONS ::= BEGIN
              ECDSASignature ::= SEQUENCE {
                 r   INTEGER,
                 s   INTEGER
             }
        END

    Only a subset of integers are supported: positive, 32-byte ints.

    r is returned first, and s is returned second

    See: https://docs.microsoft.com/en-us/windows/desktop/seccertenroll/about-sequence
    r   r
   z4Encoded sequence must start with 0x30 byte, but got é   Nz=Encoded sequence must not contain any trailing data, but had )Ú
ValueErrorÚ_decode_intr   Úrepr)r   Úint1ÚrestÚint2Úemptyr   r   r   Útwo_int_sequence_decoder9   s   ÿÿÿr   Ú	primitivec                 c   sJ   � dV  t | ƒ}|d dkrt|ƒd V  dV  nt|ƒV  |E d H  d S )Nr   r   é€   é   )r   r   )r   r   r   r   r   r   ^   s   €
r   c                 C   sN   | d dkrt d| d › �ƒ‚| d }t| dd| … ƒ}|| d| d … fS )Nr   r   zFEncoded value must be an integer, starting with on 0x02 byte, but got r   )r   r   )r   ÚlengthÚdecoded_intr   r   r   r   q   s   ÿÿr   N)Útypingr   r   Ú	eth_utilsr   r   r   ÚbytesÚintr   r   r   r   r   r   r   r   Ú<module>   s   %