
    ,h                         d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	m
Z
 ddlmZ  G d de      Zd	 Zd
Z G d dej"                        Zi fdZedk(  rd Z ej,                  d       yy)z/Self-test for the custom modular multiplication    N)list_test_cases)long_to_bytesbytes_to_long)create_string_bufferget_raw_bufferc_size_t)_raw_montgomeryc                       e Zd Zy)ExceptionModulusN)__name__
__module____qualname__     c/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Math/test_modmult.pyr   r   1   s    r   r   c           	      4   | |k\  r| |z  } ||k\  r||z  }t        |      }t        |      }t        | |      }t        ||      }t        |      }t        j                  ||||t        |            }|dk(  r
t               |rt        d|z        t        |      S )N   z&monty_multiply() failed with error: %d)	r   lenr   r	   monty_multiplyr   r   
ValueErrorr   )	term1term2modulus	modulus_bnumbers_lenterm1_bterm2_bouterrors	            r   
monty_multr    5   s    g&Ii.KE;/GE;/G
{
+C**%E {  AEIJJ#r   l   uM~Lo[*QvU%=QU)5d_*iRy^in3&y_!oicpJFXQM0,J&[{"s}N,C20\'j7.8aMRMt
CIsD	koCvj']/S<iJvcTr.wFFuZeq9<*M["t,`@T:KZ
'SnkD5xl!Xyy99vM"*^ x+j~oB8s?vj	rK?/jfe@\6d7lH3 c                   $    e Zd Zd Zd Zd Zd Zy)TestModMultiplyc                 >    | j                  dt        ddd             y )N            )assertEqualr    )selfs    r   
test_smallzTestModMultiply.test_smallW   s    *Q2"67r   c                     t         j                         dz   dz  }t         dz  }t         dz
  }d|dz
  z  dz   }| j                  |t        ||t                      y )N         Z             -modulus1
bit_lengthr(   r    )r)   r   t1t2expects        r   
test_largezTestModMultiply.test_largeZ   sX    **,q0Q6]]K!O,w6BH!=>r   c                     t         j                         dz   dz  }d|z  }| j                  |t        ddt                      | j                  |t        ddt                      y )Nr,   r-   r0      r   r3   )r)   r   r8   s      r   test_zero_termzTestModMultiply.test_zero_termb   sV    **,q0Q6;&E1h!?@Auh!?@r   c                 j    ddz  }d}t        t        ||t                    }| j                  ||       y )Nr.   i  l   ]
uz!f(4(8U`&`D6"")qlfP	cj@Np:+ -z=wwL,
G!&L=}Cm;!O:/	} }d	SJVQkBswvY#(He){BH<sU)A>eoO?am{EkG]&\nrT}w/~	6(o?%RNt8M$odB5`98/>A]?'lRW9Iog/8)]W q5v0uqF}61Wq}o )r   r    r4   r(   )r)   r6   
expect_intress       r   test_larger_termz TestModMultiply.test_larger_termh   s6    W X
Jr2x89j)r   N)r   r   r   r*   r9   r<   r@   r   r   r   r"   r"   U   s    8?A*r   r"   c                 .    g }|t        t              z  }|S N)r   r"   )configtestss     r   	get_testsrE   o   s    E	__--ELr   __main__c                  <    t        j                  t                     S rB   )unittest	TestSuiterE   r   r   r   suiterJ   v   s    !!)+..r   rJ   )defaultTest)__doc__rH   Crypto.SelfTest.st_commonr   Crypto.Util.numberr   r   Crypto.Util._raw_apir   r   r   Crypto.Math._IntegerCustomr	   r   r   r    r4   TestCaser"   rE   r   rJ   mainr   r   r   <module>rS      sz   D 6  5 ;, , 7	z 	: N*h'' *4   z/HMMg& r   