U
    ÈZj  ã                   @   sŽ   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„ dejƒZi fd	d
„ZedkrŠdd„ Zejdd� 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                   @   s�   e Zd Zddddddddd	d
dd d dfZddddddddddddddddd d  dfZdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Z	d(d)„ Z
d*S )+ÚTestPrimalityé   é   é   é   é   é   é   é   é   é   é   lE   q)8(WRv#%a�¼9AMo-þ*7w˜gÇ;¿02wQXý@ÁCkEàfÔ
Ø<_’fñuôfðqÎŽsQ$cñ;Q|n ?|¡TÓÅA)y÷nëEÔ'd.(6WÓ-+O`'2 Å_Õë6Ä$Õ_ot`G<
8íP r   é   é   é   é	   é
   é   é   é   é   é   é   é   é¡   iÿÿ éC   l   I1t#c                 C   sP   | j D ]}|  t|dƒt¡ q| jD ]}|  t|dƒt¡ q$|  ttdd¡ d S )Nr   éÿÿÿÿ)ÚprimesÚassertEqualr   r   Ú
compositesr   ÚassertRaisesÚ
ValueError)ÚselfÚprimeÚ	composite© r/   úf/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/Crypto/SelfTest/Math/test_Primality.pyÚtest_miller_rabin9   s
    

zTestPrimality.test_miller_rabinc                 C   sR   | j D ]}t|ƒ}|  |t¡ q| jD ]}t|ƒ}|  |t¡ q&|  ttd¡ d S )Nr&   )r'   r   r(   r   r)   r   r*   r+   )r,   r-   Úresr.   r/   r/   r0   Ú
test_lucas@   s    

zTestPrimality.test_lucasc                 C   s‚   ddddd d f}|D ]}|   t|ƒt¡ qd}|D ]}|   t|ƒt¡ q6dd	lm} |d d
… D ]}t|ƒ}|   |t¡ qdd S )Nl	   ÿÿÿÿÿÿÿÿ l   W3>Lk{ùT÷@l   ‰Þ±q4}2znÊ1‚dY/`9’‰3yr   i	  r   )l   ÁûvK
+.QîF:—yUc,$‹tÂcÞq l   !3eYlmk€E	r?-Œ_VeÝ+l   Át#g¤XvnÇGÒ;¤.%yfu&1Ê#93Yˆ2:k r   )Ú
sieve_baseéd   )r(   r	   r   r   ZCrypto.Util.numberr4   )r,   r'   ÚpZ
not_primesÚnpr4   r2   r/   r/   r0   Útest_is_primeI   s    
ýzTestPrimality.test_is_primec                 C   s   t dd�}|  | ¡ d¡ d S )Ni   ©Ú
exact_bits)r
   r(   Úsize_in_bits©r,   r6   r/   r/   r0   Útest_generate_prime_bit_size^   s    
z*TestPrimality.test_generate_prime_bit_sizec                 C   s6   dd„ }t dƒD ] }td|d�}|  |d d¡ qd S )Nc                 S   s   | d dkS )Nr   r   r/   )Únumberr/   r/   r0   Úending_with_onec   s    zATestPrimality.test_generate_prime_filter.<locals>.ending_with_oner"   é    )r:   Zprime_filterr   r   )Úranger
   r(   )r,   r?   ÚxÚqr/   r/   r0   Útest_generate_prime_filterb   s    ÿz(TestPrimality.test_generate_prime_filterc                 C   s   t dd�}|  | ¡ d¡ d S )Nr$   r9   )r   r(   r;   r<   r/   r/   r0   Útest_generate_safe_primek   s    
z&TestPrimality.test_generate_safe_primeN)Ú__name__Ú
__module__Ú__qualname__r'   r)   r1   r3   r8   r=   rD   rE   r/   r/   r/   r0   r   4   s   $0		r   c                 C   s   g }|t tƒ7 }|S ©N)r   r   )ÚconfigZtestsr/   r/   r0   Ú	get_testso   s    rK   Ú__main__c                   C   s   t  tƒ ¡S rI   )ÚunittestZ	TestSuiterK   r/   r/   r/   r0   Ú<lambda>u   ó    rN   Úsuite)ZdefaultTest)Ú__doc__rM   ZCrypto.SelfTest.st_commonr   ZCrypto.Util.py3compatZCrypto.Math.Numbersr   ZCrypto.Math.Primalityr   r   r   r   r	   r
   r   ZTestCaser   rK   rF   rP   Úmainr/   r/   r/   r0   Ú<module>"   s   $	;