
    9i                         S r SSKrSSKJr  SSK7  SSKJr  SSKJrJ	r	J
r
JrJrJrJr   " S S\R                  5      r0 4S	 jr\S
:X  a  S r\R(                  " SS9  gg)zSelf-test for Math.Numbers    N)list_test_cases)*)Integer)PROBABLY_PRIME	COMPOSITEmiller_rabin_test
lucas_testtest_probable_primegenerate_probable_primegenerate_probable_safe_primec                       \ rS rSrSSSSSSSS	S
SSS-  S-
  S4rSSSSSSSSSSSSSSSSS-  S-
  -  S4rS rS  rS! rS" r	S# r
S$ rS%rg&)'TestPrimality4                                    lE   q)8(WRv#%a9AMo-*7wg;02wQX@CkEf
<_fufqsQ$c;Q|n ?|TA)ynE'd.(6W-+O`'2_6$_ot`G<
8P r            	   
                           i C   l   I1t#c                    U R                    H#  nU R                  [        US5      [        5        M%     U R                   H#  nU R                  [        US5      [
        5        M%     U R                  [        [        SS5        g )Nr   )primesassertEqualr   r   
compositesr   assertRaises
ValueError)selfprime	composites      c/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/Crypto/SelfTest/Math/test_Primality.pytest_miller_rabinTestPrimality.test_miller_rabin9   sc    [[E.ua8.I !I.y!<iH )*&7Q?    c                 
   U R                    H$  n[        U5      nU R                  U[        5        M&     U R                   H$  n[        U5      nU R                  U[
        5        M&     U R                  [        [        S5        g )Nr*   )r+   r	   r,   r   r-   r   r.   r/   )r0   r1   resr2   s       r3   
test_lucasTestPrimality.test_lucas@   sh    [[EU#CS.1 ! IY'CS), ) 	*j"5r6   c                 &   SSSSS-  S-
  4nU H"  nU R                  [        U5      [        5        M$     SnU H"  nU R                  [        U5      [        5        M$     SS	KJn  US S
  H$  n[        U5      nU R                  U[        5        M&     g )Nl	    l   W3>Lk{T@l   q4}2zn1dY/`93yr   i	  r   )l   vK
+.QF:yUc,$tcq l   !3eYlmkE	r?-_Ve+l   t#gXvnG;.%yfu&1#93Y2:k r   )
sieve_based   )r,   r
   r   r   Crypto.Util.numberr<   )r0   r+   p
not_primesnpr<   r8   s          r3   test_is_primeTestPrimality.test_is_primeI   s    9)Ls(Q,  A03^D 

 B04i@  	2DS!A%a(CS.1 "r6   c                 V    [        SS9nU R                  UR                  5       S5        g )Ni   
exact_bits)r   r,   size_in_bitsr0   r?   s     r3   test_generate_prime_bit_size*TestPrimality.test_generate_prime_bit_size^   s#    #s3)3/r6   c                 l    S n[        S5       H"  n[        SUS9nU R                  US-  S5        M$     g )Nc                     U S-  S:H  $ )Nr   r    )numbers    r3   ending_with_oneATestPrimality.test_generate_prime_filter.<locals>.ending_with_onec   s    B;!##r6   r%      )rF   prime_filterr   r   )ranger   r,   )r0   rO   xqs       r3   test_generate_prime_filter(TestPrimality.test_generate_prime_filterb   s:    	$ rA'3!02AQVQ' r6   c                 V    [        SS9nU R                  UR                  5       S5        g )Nr'   rE   )r   r,   rG   rH   s     r3   test_generate_safe_prime&TestPrimality.test_generate_safe_primek   s#    (C8)3/r6   rM   N)__name__
__module____qualname____firstlineno__r+   r-   r4   r9   rB   rI   rV   rY   __static_attributes__rM   r6   r3   r   r   4   s    Aq!RRRC  <q  rFQ1aRRRRRSUWRWXYRYGZ\ikJ@62*0(0r6   r   c                 .    / nU[        [        5      -  nU$ N)r   r   )configtestss     r3   	get_testsrd   o   s    E	_]++ELr6   __main__c                  >    [         R                  " [        5       5      $ ra   )unittest	TestSuiterd   rM   r6   r3   <lambda>ri   u   s    H&&y{3r6   suite)defaultTest)__doc__rg   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatCrypto.Math.Numbersr   Crypto.Math.Primalityr   r   r   r	   r
   r   r   TestCaser   rd   r[   rj   mainrM   r6   r3   <module>rs      sc   D !  5 # '
 
 
90H%% 90v  
 z3EMMg& r6   