
    ¿igs                         d dl mZ ddlmZmZ ddlmZmZmZm	Z	m
Z
mZ ddlmZ dZ ede          Zde	d	Z G d
 de          ZdS )   )IntegerNative    )long_to_bytesbytes_to_long)load_pycryptodome_raw_libcreate_string_bufferget_raw_bufferbackendc_size_tc_ulonglong)getrandbitsa  
int monty_pow(uint8_t       *out,
              const uint8_t *base,
              const uint8_t *exp,
              const uint8_t *modulus,
              size_t        len,
              uint64_t      seed);

int monty_multiply(uint8_t       *out,
                   const uint8_t *term1,
                   const uint8_t *term2,
                   const uint8_t *modulus,
                   size_t        len);
zCryptodome.Math._modexpcustom)libraryapic                   D    e Zd Zedd            ZddZed             ZdS )IntegerCustombigc                     |dk    rn9|dk    r$t          |           } |                                  nt          d          t          t	          |                     S )Nr   littlezIncorrect byteorder)	bytearrayreverse
ValueErrorr   r   )byte_string	byteorders     Z/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/Math/_IntegerCustom.py
from_byteszIntegerCustom.from_bytesA   sb    (""#K00K!!!!2333];77888    Nc                 `   t          |          }|dk     rt          d          |t          | j        |          | _        | S t          |          }|dk     rt          d          |dk    rt	          d          |dz  dk    rt          | j        ||          | _        | S | j        |k    r| xj        |z  c_        t          t          t          | j        ||                              }t          | j        |          }t          ||          }t          ||          }t          |          }	t          
                    |	|||t          |          t          t          d                              }
|
rt          d|
z            t          t          |	                    }|| _        | S )Nr   zExponent must not be negativeModulus must be positiveModulus cannot be zeror   @   zmonty_pow failed with error: %d)intr   pow_valueZeroDivisionErrorlenr   maxr   _raw_montgomery	monty_powr   r   r   r   r	   )selfexponentmodulus	exp_value	mod_valuemax_lenbase_bexp_b	modulus_bouterrorresults               r   inplace_powzIntegerCustom.inplace_powL   s   MM	q==<=== ?dk955DKK LL	q==7888>>#$<=== Madk9i@@DKK ;)##KK9$KKmCY	$J$JKKLLt{G44i11!)W55	"7++))W%%B00   	H>FGGG~c2233r   c           	         t          |          }|dk     rt          d          |dk    rt          d          |dz  dk    rt          d          | |k    s| dk     r| |z  } ||k    s|dk     r||z  }t          |          }t	          |          }t          | |          }t          ||          }t          |          }t                              ||||t          |                    }	|	rt          d|	z            t          |          S )Nr   r   r    r   zOdd modulus is requiredz$monty_multiply failed with error: %d)
r"   r   r%   r   r&   r   r(   monty_multiplyr   r	   )
term1term2r,   r.   r2   numbers_lenterm1_bterm2_br3   r4   s
             r   _mult_modulo_bytesz IntegerCustom._mult_modulo_bytes~   s7    LL	q==7888>>#$<=== Ma6777 IYEIYE!),,	)nn{33{33";//..[))   	MCeKLLLc"""r   )r   )N)__name__
__module____qualname__staticmethodr   r6   r>    r   r   r   r   ?   sb        9 9 9 \90 0 0 0d ## ## \## ## ##r   r   N)_IntegerNativer   Cryptodome.Util.numberr   r   Cryptodome.Util._raw_apir   r   r	   r
   r   r   Cryptodome.Random.randomr   c_defsr(   implementationr   rC   r   r   <module>rJ      s   > * ) ) ) ) ) ? ? ? ? ? ? ? ?9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 0 0 0 0 0
  ,+,EvNN%g66c# c# c# c# c#M c# c# c# c# c#r   