Ë
    (üàg  ã                   óÂ   — 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-þ*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                 ó   — | 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      úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/Math/test_Primality.pyÚtest_miller_rabinzTestPrimality.test_miller_rabin9   sq   € Ø—[‘[ò 	JˆEØ×ÑÔ.¨u°aÓ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   € Ø—[‘[ò 	2ˆEÜ˜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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   Ú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°Ó4´iÕ@ð	Aõ 	2Ø˜D˜SÐ!ò 	2ˆAÜ% 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ô2ˆAà×Ñ˜Q ™V QÕ'ñ	(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‡   „ à��A�q˜!˜R  R¨¨R°°C±¸±ð  <qð  r€FØ�Q˜˜1˜a  R¨¨R°°R¸¸RÀÈÐRSÐUWÑRWÐXYÑRYÑGZÐ\iÐk€Jò@ò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0�H×%Ñ%ô 90ðv ó ð
 ˆzÒÙ3€EØ€H‡M�M˜gÖ&ð r4   