Ë
    (üàgF!  ã                   óò   — d Z ddlZddlZddl­ ddlmZ ddlmZ ddlm	Z	  G d„ de
«      Z G d	„ d
ej                  «      Z G d„ dej                  «      Zi fd„Zedk(  rd„ Z ej$                  d¬«       yy)z+Self-tests for (some of) Crypto.Util.numberé    N)Ú*)Úlist_test_cases)Únumber)Úlong_to_bytesc                   ó   — e Zd ZdZy)ÚMyErrorzDummy exception used for testsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/Util/test_number.pyr   r   %   s   „ Ú(r   r   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	MiscTestsc                 ó8	  — | j                  t        t        j                  dd«       | j                  t        t        j                  dd«       | j                  t        t        j                  dd«       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  d	d«      «       | j                  dt        j                  d
d«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  d	d«      «       | j                  dt        j                  d
d«      «       | j                  dt        j                  dd«      «       | j                  dt        j                  dd«      «       y)zUtil.number.ceil_divÚ1é   r   éÿÿÿÿé   é   é   é   é   é   é   é	   N)ÚassertRaisesÚ	TypeErrorr   Úceil_divÚZeroDivisionErrorÚassertEqual©Úselfs    r   Útest_ceil_divzMiscTests.test_ceil_div-   sH  € à×Ñœ)¤V§_¡_°c¸1Ô=Ø×ÑÔ+¬V¯_©_¸aÀÔCØ×ÑÔ+¬V¯_©_¸bÀ!ÔDð 	×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2ð 	×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2ð 	×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2ð 	×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Ô2Ø×Ñ˜œFŸO™O¨A¨qÓ1Õ2r   c                 óT  — | j                  t        t        j                  d«       | j                  t        t        j                  d«       | j                  t        t        j                  d«       d}t	        d«      D ]J  }t        j                  |«      }| j                  |d|dz
  z  k\  d«       | j                  |d|z  k  d«       ŒL d}t        j                  |«      }| j                  |dz  d«       | j                  |d|dz
  z  k\  d«       | j                  |d|z  k  d«       y)	zUtil.number.getPrimeiœÿÿÿr   r   r   éd   é   r   N)r   Ú
ValueErrorr   ÚgetPrimeÚranger"   ÚassertNotEqual)r$   ÚbitsÚiÚxs       r   Útest_getPrimezMiscTests.test_getPrimeW   sý   € à×Ñœ*¤f§o¡o°tÔ<Ø×Ñœ*¤f§o¡o°qÔ9Ø×Ñœ*¤f§o¡o°qÔ9àˆÜ�s“ò 	1ˆAÜ—‘ Ó%ˆAØ×Ñ˜Q 1¨¨q©¡=Ñ1°1Ô5Ø×Ñ˜Q ! t¡)™_¨aÕ0ð	1ð
 ˆÜ�O‰O˜DÓ!ˆØ×Ñ˜A ™E 1Ô%Ø×Ñ˜˜q D¨1¡H™}Ñ-¨qÔ1Ø×Ñ˜˜a 4™i™¨!Õ,r   c                 ó’  — | j                  t        t        j                  d«       | j                  t        t        j                  d«       d}t        j                  |«      }| j	                  |dz  d«       | j                  |d|dz
  z  dz
  kD  d«       | j                  |d|z  k  d«       d}t        j                  ||«      }| j                  t        j                  |dz
  |«      d«       | j	                  |dz  d«       | j                  |d|dz
  z  dz
  kD  d«       | j                  |d|z  k  d«       d}t        j                  ||«      }| j                  t        j                  |dz
  dz	  |«      d«       | j	                  |dz  d«       | j                  |d|dz
  z  dz
  kD  d«       | j                  |d|z  k  d«       y	)
zUtil.number.getStrongPrimeé   i  r(   r   r   r   i  i  N)r   r)   r   ÚgetStrongPrimer,   r"   ÚGCD)r$   r-   r/   Úes       r   Útest_getStrongPrimezMiscTests.test_getStrongPrimei   sž  € à×Ñœ*¤f×&;Ñ&;¸SÔAØ×Ñœ*¤f×&;Ñ&;¸SÔAØˆÜ×!Ñ! $Ó'ˆØ×Ñ˜A ™E 1Ô%Ø×Ñ˜˜a 4¨¡6™k¨1™_Ñ,¨aÔ0Ø×Ñ˜˜a 4™i™¨!Ô,ØˆÜ×!Ñ! $¨Ó*ˆØ×ÑœŸ™ A a¡C¨Ó+¨QÔ/Ø×Ñ˜A ™E 1Ô%Ø×Ñ˜˜a 4¨¡6™k¨1™_Ñ,¨aÔ0Ø×Ñ˜˜a 4™i™¨!Ô,ØˆÜ×!Ñ! $¨Ó*ˆØ×ÑœŸ™ Q q¡S¨1¡H¨aÓ0°!Ô4Ø×Ñ˜A ™E 1Ô%Ø×Ñ˜˜a 4¨¡6™k¨1™_Ñ,¨aÔ0Ø×Ñ˜˜a 4™i™¨!Õ,r   c                 óØ  — | j                  t        j                  d«      d«       | j                  t        j                  d«      d«       | j                  t        j                  d«      d«       | j                  t        j                  d«      d«       | j                  t        j                  d«      d«       | j                  t        j                  d«      d«       | j                  t        j                  dd	z  dz
  «      d«       | j                  t        j                  dd	z  dz
   «      d«       d
D ]0  }| j                  t        j                  t        |«      «      d«       Œ2 y)zUtil.number.isPrimeéýÿÿÿFéþÿÿÿr   r   Tr   r   iÿ  )i• iá§ idÁl   u^¾ß l   ³+%!al   MnÔz¾]l   —g‹4Ð+ l   ›I>6l   S{AˆKWl   ÃbÊ\\QN l   ãz—Ilv3 l   _V„B;.( N)r"   r   ÚisPrimeÚint)r$   Ú	composites     r   Útest_isPrimezMiscTests.test_isPrime   s  € à×ÑœŸ™¨Ó+¨UÔ3Ø×ÑœŸ™¨Ó+¨UÔ3Ø×ÑœŸ™¨Ó*¨EÔ2Ø×ÑœŸ™¨Ó*¨DÔ1Ø×ÑœŸ™¨Ó*¨DÔ1Ø×ÑœŸ™¨Ó*¨EÔ2Ø×ÑœŸ™¨¨4©°©	Ó2°DÔ9Ø×ÑœŸ™¨!¨T©'°!©)¨Ó5°uÔ=ðLò 	DˆIð
 ×ÑœVŸ^™^¬C°	«NÓ;¸UÕCñ	Dr   c                 óÀ  — | j                  t        j                  d«      d«       | j                  t        j                  d«      d«       | j                  t        j                  d«      d«       | j                  t        j                  d«      d«       | j                  t        j                  d«      d«       | j                  t        t        j                  d	«       y )
Nr   r   é¢   r   i@º¢ é   lE   ¥)ýï8^n,š ¾´n:ˆzb´|˜DELU"êN79YÁ– ªS¾h"¶*f8›<>k®tkŠÂ26"z ¼BT6û	íV�´ ÏRNc”cË\�Ä¢Õ]ð]rX"Sw~oÝ Ë8I(jæOˆ3�½2Ç¸Ò
 i   r   )r"   r   Úsizer   r)   r#   s    r   Ú	test_sizezMiscTests.test_size’   s¢   € Ø×ÑœŸ™ Q›¨Ô*Ø×ÑœŸ™ Q›¨Ô*Ø×ÑœŸ™ TÓ*¨1Ô-Ø×ÑœŸ™ XÓ.¨sÔ3Ø×ÑœŸ™ð  &hó  ið  koô  	pØ×Ñœ*¤f§k¡k°2Õ6r   N)r	   r
   r   r%   r0   r6   r=   rB   r   r   r   r   r   +   s   „ ò(3òT-ò$-ò,Dó&7r   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Ú	LongTestsc                 ó~  — | j                  t        d«      d«       | j                  t        d«      d«       | j                  t        d«      d«       | j                  t        d«      d«       | j                  t        d«      d«       | j                  t        d	«      d
«       | j                  t        d«      d«       y )Nr   ó    r   ó   r2   ó    l       üs   ÿ    l   ˆwÌ*M	 s   "3DUfwˆl   ™ïLUšs	   "3DUfwˆ™©r"   r   r#   s    r   Útest1zLongTests.test1�   s›   € Ø×Ñœ qÓ)¨7Ô3Ø×Ñœ qÓ)¨7Ô3Ø×Ñœ uÓ-¨{Ô;Ø×Ñœ |Ó4Ð6MÔNØ×Ñœ |Ó4Ð6MÔNØ×ÑœÐ'9Ó:Ð<_Ô`Ø×ÑœÐ';Ó<Ð>eÕfr   c                 ó4  — | j                  t        dd«      d«       | j                  t        dd«      d«       | j                  t        dd«      d«       | j                  t        dd«      d	«       | j                  t        d
d«      d«       | j                  t        dd«      d«       | j                  t        dd«      d«       | j                  t        dd«      d«       | j                  t        dd«      d«       | j                  t        dd«      d«       y )Nr   r   rF   r   s     r   s     iÿÿ  s   ÿÿi   s      r2   rH   l      ür   s    ÿ   r   s      ÿ   é
   s
        ÿ   é   s         ÿ   rI   r#   s    r   Útest2zLongTests.test2¦   sí   € Ø×Ñœ q¨!Ó,¨gÔ6Ø×Ñœ q¨!Ó,¨kÔ:Ø×Ñœ q¨!Ó,¨oÔ>Ø×Ñœ u¨aÓ0°+Ô>Ø×Ñœ u¨aÓ0Ð2EÔFØ×Ñœ u¨aÓ0°+Ô>Ø×Ñœ |°QÓ7Ð9TÔUØ×Ñœ |°QÓ7Ð9\Ô]Ø×Ñœ |°RÓ8Ð:eÔfØ×Ñœ |°RÓ8Ð:iÕjr   c                 ó:   — | j                  t        t        d«       y )Nr   )r   r)   r   r#   s    r   Ú	test_err1zLongTests.test_err1²   s   € Ø×Ñœ*¤m°RÕ8r   N)r	   r
   r   rJ   rN   rP   r   r   r   rD   rD   ›   s   „ ògò
kó9r   rD   c                 óR   — g }|t        t        «      z  }|t        t        «      z  }|S ©N)r   r   rD   )ÚconfigÚtestss     r   Ú	get_testsrU   ¶   s*   € Ø€EØ	Œ_œYÓ'Ñ'€EØ	Œ_œYÓ'Ñ'€EØ€Lr   Ú__main__c                  ó<   — t        j                  t        «       «      S rR   )ÚunittestÚ	TestSuiterU   r   r   r   ú<lambda>rZ   ½   s   € ”H×&Ñ&¤y£{Ó3€ r   Úsuite)ÚdefaultTest)r   ÚmathrX   ÚCrypto.Util.py3compatÚCrypto.SelfTest.st_commonr   ÚCrypto.Utilr   ÚCrypto.Util.numberr   Ú	Exceptionr   ÚTestCaser   rD   rU   r	   r[   Úmainr   r   r   ú<module>re      s{   ðñ2 2ã Û ä #Ý 5å Ý ,ô)ˆiô )ôm7�×!Ñ!ô m7ô`9�×!Ñ!ô 9ð6 ó ð ˆzÒÙ3€EØ€H‡M�M˜gÖ&ð r   