
    ic                         S SK Jr  SSKJrJr  SSKJrJrJrJ	r	J
r
Jr  SSKJr  Sr\" S\5      rS\	S	.r " S
 S\5      rg)   )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Crypto.Math._modexpcustom)libraryapic                   B    \ rS rSr\SS j5       rSS jr\S 5       rSrg)	IntegerCustom?   c                     US:X  a  O-US:X  a  [        U 5      n U R                  5         O[        S5      e[        [	        U 5      5      $ )NbiglittlezIncorrect byteorder)	bytearrayreverse
ValueErrorr   r   )byte_string	byteorders     U/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/Math/_IntegerCustom.py
from_bytesIntegerCustom.from_bytesA   sG    ("#K0K!233];788    Nc                    [        U5      nUS:  a  [        S5      eUc  [        U R                  U5      U l        U $ [        U5      nUS:  a  [        S5      eUS:X  a  [	        S5      eUS-  S:X  a  [        U R                  X45      U l        U $ U R                  U:  a  U =R                  U-  sl        [        [        [        U R                  X45      5      5      n[        U R                  U5      n[        X55      n[        XE5      n[        U5      n	[        R                  U	UUU[        U5      [        [        S5      5      5      n
U
(       a  [        SU
-  5      e[        [        U	5      5      nXl        U $ )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_powIntegerCustom.inplace_powL   sU   M	q=<== ?dkk95DKK L	q=788>#$<== Madkk9@DKK ;;)#KK9$KmCY$JKLt{{G4i1!)5	"7+))W%B0 >FGG~c23r   c           	         [        U5      nUS:  a  [        S5      eUS:X  a  [        S5      eUS-  S:X  a  [        S5      eX:  d  U S:  a  X-  n X:  d  US:  a  X-  n[        U5      n[	        U5      n[        X5      n[        X5      n[        U5      n[        R                  UUUU[        U5      5      n	U	(       a  [        SU	-  5      e[        U5      $ )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.   r0   r4   numbers_lenterm1_bterm2_br5   r6   s
             r   _mult_modulo_bytes IntegerCustom._mult_modulo_bytes~   s     L	q=788>#$<== Ma677 EE!),	)n33";/..[) CeKLLc""r   )r&   )r   )N)	__name__
__module____qualname____firstlineno__staticmethodr   r8   rA   __static_attributes__ r   r   r   r   ?   s.    9 90d ## ##r   r   N)_IntegerNativer   Crypto.Util.numberr   r   Crypto.Util._raw_apir   r   r	   r
   r   r   Crypto.Random.randomr   c_defsr*   implementationr   rI   r   r   <module>rP      sJ   > * ;9 9 -
  ,,A6J%g6c#M c#r   