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

  	A 	AB044i@@@@555555DSD! 	2 	2A%a((CS.1111	2 	2r4   c                 v    t          d          }|                     |                                d           d S )Ni   
exact_bits)r   r+   size_in_bitsr/   r<   s     r2   test_generate_prime_bit_sizez*TestPrimality.test_generate_prime_bit_size^   s8    #s333))3/////r4   c                     d }t          d          D ],}t          d|          }|                     |dz  d           -d S )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   sh    	$ 	$ 	$ r 	( 	(A'3!02 2 2AQVQ''''	( 	(r4   c                 v    t          d          }|                     |                                d           d S )Nr&   rA   )r   r+   rC   rD   s     r2   test_generate_safe_primez&TestPrimality.test_generate_safe_primek   s8    (C88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 6 62 2 2*0 0 0( ( (0 0 0 0 0r4   r   c                 8    g }|t          t                    z  }|S N)r   r   )configtestss     r2   	get_testsrZ   o   s    E	_]+++ELr4   __main__c                  B    t          j        t                                S rW   )unittest	TestSuiterZ   rH   r4   r2   <lambda>r_   u   s    H&y{{33 r4   suite)defaultTest)__doc__r]   Cryptodome.SelfTest.st_commonr   Cryptodome.Util.py3compatCryptodome.Math.Numbersr   Cryptodome.Math.Primalityr   r   r   r	   r
   r   r   TestCaser   rZ   rS   r`   mainrH   r4   r2   <module>ri      s   D !    9 9 9 9 9 9 ' ' ' ' + + + + + +
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90 90 90 90 90H% 90 90 90v     
 z33EHMg&&&&&& r4   