
    ,h                         d Z ddlZddlmZ ddl ddlmZ ddlmZm	Z	m
Z
mZmZmZm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 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                       e Zd Zddddddddd	d
ddz  dz
  dfZdddddddddddddddddz  dz
  z  dfZd Zd Zd  Zd! Zd" Z	d# Z
y$)%TestPrimality                                 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                     | j                   D ]"  }| j                  t        |d      t               $ | j                  D ]"  }| j                  t        |d      t
               $ | j                  t        t        dd       y )Nr   )primesassertEqualr   r   
compositesr   assertRaises
ValueError)selfprime	composites      e/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Math/test_Primality.pytest_miller_rabinzTestPrimality.test_miller_rabin9   sq    [[ 	JE.ua8.I	J 	II.y!<iH	I*&7Q?    c                    | j                   D ]#  }t        |      }| j                  |t               % | j                  D ]#  }t        |      }| j                  |t
               % | j                  t        t        d       y )Nr)   )r*   r	   r+   r   r,   r   r-   r.   )r/   r0   resr1   s       r2   
test_lucaszTestPrimality.test_lucas@   sr    [[ 	2EU#CS.1	2  	-IY'CS),	- 	*j"5r4   c                    dddddz  dz
  f}|D ]!  }| j                  t        |      t               # d}|D ]!  }| j                  t        |      t               # dd	lm} |d d
 D ]#  }t        |      }| j                  |t               % y )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.numberr9   )r/   r*   p
not_primesnpr9   r6   s          r2   test_is_primezTestPrimality.test_is_primeI   s    9)Ls(Q,   	EA03^D	E

  	AB04i@	A 	2DS! 	2A%a(CS.1	2r4   c                 \    t        d      }| j                  |j                         d       y )Ni   
exact_bits)r   r+   size_in_bitsr/   r<   s     r2   test_generate_prime_bit_sizez*TestPrimality.test_generate_prime_bit_size^   s#    #s3)3/r4   c                 n    d }t        d      D ]$  }t        d|      }| j                  |dz  d       & y )Nc                     | dz  dk(  S )Nr   r    )numbers    r2   ending_with_onezATestPrimality.test_generate_prime_filter.<locals>.ending_with_onec   s    B;!##r4   r$      )rB   prime_filterr   r   )ranger   r+   )r/   rJ   xqs       r2   test_generate_prime_filterz(TestPrimality.test_generate_prime_filterb   s?    	$ r 	(A'3!02AQVQ'	(r4   c                 \    t        d      }| j                  |j                         d       y )Nr&   rA   )r   r+   rC   rD   s     r2   test_generate_safe_primez&TestPrimality.test_generate_safe_primek   s#    (C8)3/r4   N)__name__
__module____qualname__r*   r,   r3   r7   r?   rE   rP   rR   rH   r4   r2   r   r   4   s    Aq!RRRC  <q  rFQ1aRRRRRSUWRWXYRYGZ\ikJ@62*0(0r4   r   c                 .    g }|t        t              z  }|S N)r   r   )configtestss     r2   	get_testsrZ   o   s    E	_]++ELr4   __main__c                  <    t        j                  t                     S rW   )unittest	TestSuiterZ   rH   r4   r2   <lambda>r_   u   s    H&&y{3 r4   suite)defaultTest)__doc__r]   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatCrypto.Math.Numbersr   Crypto.Math.Primalityr   r   r   r	   r
   r   r   TestCaser   rZ   rS   r`   mainrH   r4   r2   <module>ri      se   D !  5 # '
 
 
90H%% 90v  
 z3EHMMg& r4   