Ë
    (üàgÕ'  ã                   ór  — d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZ dd	z  dd
z  z
  dz
  Zddz  dz
  Zdddddddddddddedz   dfgZ G d„ de j$                  «      Z G d„ de j$                  «      Z G d „ d!e j$                  «      Zi fd"„Zed#k(  rd$„ Z e j2                  d%¬&«       yy)'é    N)Ú	unhexlify)Úlist_test_cases)ÚInteger)ÚSHAKE128)ÚECC)ÚEccKeyÚ	EccXPointÚ_curvesé   éÀ  éà   é   i¾  l   ;O)µu9d­
NG\cžIÞo’SDY%	»c‚;Í )r   é   )r   l   ¶<è8ð•i‡ ABV	xt%qÚhG?:óøM‰3;<_®zDÚw«I•W/ì2Fo5)�+¾"r)é   l   Ls§
4EQGCôD>MÎR¬rou1&ýé ,’ñdý0›BDqa’IKAáBá*&,³d÷)é   l   ±b�"yu/màX¦ó~ud¬d#z¢
¡NÿkÄ`{dÙt>'iÚŸEëEuš¼=J4')é   l   ŒX5VÍ'w,P9F•szL¶™,Ç	 †$X1¼i=U& rgk‹1ËSÏ|"åeãPXo)zeQ')é	   l   ®-h_xaJ=?{O d®G¬;
]:ÈXÎaûuXáNIÕƒwrà"YwÛ\|?û©f>7W.)é�   l   Û ¿#ž~ÁmÖp³N"d *[½b@>ÚÍj)©e		ídtiájwP‘JìUªVÌA¢PP[÷)éÿ   l   ž+?'Ð]Á-¨w
qÞD+C‚#z;>XIÃ#±D‚	„ºXà79ÊQmF"Ãz08’8$\D.éC7)é   l   A§À&Ð1úA©VÉ9ª&bu)ó%s*¶ Q·.srñu%ô&F3iZ"(r£ \!ÈKË!s\æ )i  l   °h[˜~=IÂH”Žs']TeV}S”TeIV·"ë tœX”\µ}V˜Iµ.� ·!	p¸)i l   ²AÃ`8QÂKùA°ÖQó„%ÃzY0) �X$™nø2ÙxP>ËB;c‰ZG]ì.f=‹VJqN;')iÌUª l   ˜lIwoÏ¦ÖQáZ×mjØ=Ëk¬î†/�joÇx"lñg‰W}&½Fä Ö?�y,pi…%è)l   g x^rP)l   0SõKŒè>e*a`ÉD˜§V/!?an8a_p.]Û«d¶d·a§¢‚yµØ`°i“­;É{r   c                   óD   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚTestEccPoint_Curve448l   è4!'ÅM¤Ië.ó>æ.<™ OoÀfåÀfY<ú	l   “$+'UfbïCxDóm1,\qt¬<K?:‰!c                 óB   — t        dd«       t        t        dz
  d«       y )Nr   Úcurve448)r	   Ú
CURVE448_P©Úselfs    úi/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/PublicKey/test_ECC_Curve448.pyÚ	test_initzTestEccPoint_Curve448.test_init*   s   € Ü�!�ZÔ Ü”*˜q‘. *Õ-ó    c                 óT   — t        dd«      }| j                  |j                  d«       y )Nr   r   ÚCurve448)r	   ÚassertEqualÚcurve©r   Úpoints     r   Útest_curve_attributez*TestEccPoint_Curve448.test_curve_attribute.   s"   € Ü˜!˜ZÓ(ˆØ×Ñ˜Ÿ™ jÕ1r    c                 ó‚   — | j                  t        t        dt        z  d«       | j                  t        t        dd«       y )Nr   r   Úcurve449)ÚassertRaisesÚ
ValueErrorr	   r   r   s    r   Útest_init_failz$TestEccPoint_Curve448.test_init_fail2   s.   € Ø×Ñœ*¤i°´:±¸zÔJØ×Ñœ*¤i°°JÕ?r    c                 ó  — t        | j                  d«      }t        | j                  d«      }| j                  ||«       | j	                  ||«       |j                  |«       | j                  |j                  |j                  «       y ©Nr   )r	   Úv1Úv2r#   ÚassertNotEqualÚsetÚx©r   Úpoint1Úpoint2s      r   Útest_equal_setz$TestEccPoint_Curve448.test_equal_set6   sf   € Ü˜4Ÿ7™7 JÓ/ˆÜ˜4Ÿ7™7 JÓ/ˆà×Ñ˜ Ô(Ø×Ñ˜F FÔ+à�
‰
�6ÔØ×Ñ˜Ÿ™ 6§8¡8Õ,r    c                 óœ   — t        | j                  d«      }|j                  «       }| j                  |j                  |j                  «       y r.   )r	   r/   Úcopyr#   r3   r4   s      r   Ú	test_copyzTestEccPoint_Curve448.test_copy@   s5   € Ü˜4Ÿ7™7 JÓ/ˆØ—‘“ˆØ×Ñ˜Ÿ™ 6§8¡8Õ,r    c                 óä   — t        | j                  d«      }|j                  «       }| j                  |j                  «       «       t        d d«      }| j                  |j                  «       «       y r.   )r	   r/   Úpoint_at_infinityÚ
assertTrue)r   r5   Úpair6   s       r   Útest_paizTestEccPoint_Curve448.test_paiE   sV   € Ü˜4Ÿ7™7 JÓ/ˆØ×&Ñ&Ó(ˆØ�‰˜×-Ñ-Ó/Ô0ä˜4 Ó,ˆØ�‰˜×0Ñ0Ó2Õ3r    c                 óT  — t        dd«      }d|z  }| j                  |j                  «       «       t        |z  }| j                  |j                  «       «       |dz  }| j	                  |j
                  d«       t        D ]&  \  }}||z  }| j	                  |j
                  |«       Œ( y )Nr   r   r   r   )r	   r=   r<   ÚCURVE448_ORDERr#   r3   Úscalar_base5_test)r   ÚbaseÚpointHÚdÚresults        r   Útest_scalar_multiplyz*TestEccPoint_Curve448.test_scalar_multiplyM   s˜   € Ü˜˜JÓ'ˆà�T‘ˆØ�‰˜×0Ñ0Ó2Ô3ä $Ñ&ˆØ�‰˜×0Ñ0Ó2Ô3à˜‘ˆØ×Ñ˜Ÿ™ 1Ô%ä*ò 	/‰IˆAˆvØ˜‘XˆFØ×Ñ˜VŸX™X vÕ.ñ	/r    c                 óœ   — t        dd«      }| j                  |j                  «       d«       | j                  |j                  «       d«       y )Nr   r   r   é8   )r	   r#   Úsize_in_bitsÚsize_in_bytesr%   s     r   Ú
test_sizesz TestEccPoint_Curve448.test_sizes]   s@   € Ü˜!˜ZÓ(ˆØ×Ñ˜×+Ñ+Ó-¨sÔ3Ø×Ñ˜×,Ñ,Ó.°Õ3r    N)Ú__name__Ú
__module__Ú__qualname__r/   r0   r   r'   r,   r7   r:   r?   rG   rL   © r    r   r   r   %   s5   „ à	K€BØ	K€Bò.ò2ò@ò-ò-ò
4ò/ó 4r    r   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestEccKey_Curve448c                 óÄ  — t        d«      }t        d«      }t        j                  |d¬«      }t        d|¬«      }| j	                  |j
                  |«       | j                  |j                  «       «       | j	                  |j                  j                  |«       t        d«      }t        d«      }t        j                  |d¬«      }t        d|¬«      }| j	                  |j
                  |«       | j                  |j                  «       «       | j	                  |j                  j                  |«       t        d	|¬«      }| j                  t        t        d	d
¬«       y )NÚp9a8f4925d1519f5775cf46b04b5800d4ee9ee8bae8bc5565d498c28dd9c9baf574a9419744897391006382a6f127ab1d9ac2d8c0a598726bÚp9b08f7cc31b7e3e67d22d5aea121074a273bd2b83de09c63faa73d2c22c5d9bbc836647241d953d40c5b12da88120d53177f80e532c41fa0Úlittle©Ú	byteorderr"   ©r$   ÚseedÚp1c306a7ac2a0e2e0990b294470cba339e6453772b075811d8fad0d1d6927c120bb5ee8972b0d3e21374c9c921b09d1b0366f10b65173992dÚp3eb7a829b0cd20f5bcfc0b599b6feccf6da4627107bdb0d4f345b43027d8b972fc3e34fb4232a13ca706dcb57aec3dae07bdc1c67bf33609r   r   ©r$   rE   )r   r   Ú
from_bytesr   r#   rZ   r=   Úhas_privateÚpointQr3   r*   r+   )r   Ú
alice_privÚ	alice_pubÚalice_pub_xÚkeyÚbob_privÚbob_pubÚ	bob_pub_xs           r   Útest_private_keyz$TestEccKey_Curve448.test_private_keye   s)  € äð   Ró  Sˆ
Üð  Qó  Rˆ	Ü×(Ñ(¨¸hÔGˆä˜:¨JÔ7ˆØ×Ñ˜Ÿ™ :Ô.Ø�‰˜Ÿ™Ó)Ô*Ø×Ñ˜Ÿ™Ÿ™ {Ô3ô ð  Pó  QˆÜð  Oó  PˆÜ×&Ñ& w¸(ÔCˆ	ä˜:¨HÔ5ˆØ×Ñ˜Ÿ™ 8Ô,Ø�‰˜Ÿ™Ó)Ô*Ø×Ñ˜Ÿ™Ÿ™ yÔ1ô ˜:¨JÔ7ˆð 	×Ñœ*¤f°JÀ!ÐÕDr    c                 óÐ   — t        t        d   j                  d¬«      }t        d|¬«      }| j	                  |j                  «       «       | j                  |j                  |«       y )Nr   ©r$   )r$   r&   )r	   r
   ÚGxr   ÚassertFalser_   r#   r`   )r   r&   rd   s      r   Útest_public_keyz#TestEccKey_Curve448.test_public_key€   sQ   € Üœ' *Ñ-×0Ñ0Ø *ô,ˆä˜:¨UÔ3ˆØ×Ñ˜Ÿ™Ó*Ô+Ø×Ñ˜Ÿ™ UÕ+r    c                 óÈ   — t        dd¬«      }|j                  «       }| j                  |j                  «       «       | j	                  |j
                  |j
                  «       y )Nr   ó8   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrY   )r   Ú
public_keyrl   r_   r#   r`   )r   Úpriv_keyÚpub_keys      r   Útest_public_key_derivedz+TestEccKey_Curve448.test_public_key_derived‡   sK   € Ü 
°Ô9ˆØ×%Ñ%Ó'ˆØ×Ñ˜×,Ñ,Ó.Ô/Ø×Ñ˜Ÿ™¨'¯.©.Õ9r    c                 ó2   — | j                  t        d„ «       y )Nc                  ó   — t        dd¬«      S )Nr   ó7   HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrY   )r   rP   r    r   ú<lambda>z7TestEccKey_Curve448.test_invalid_seed.<locals>.<lambda>Ž   s   € ¬f¸:Ø:Cô/E€ r    )r*   r+   r   s    r   Útest_invalid_seedz%TestEccKey_Curve448.test_invalid_seed�   s   € Ø×Ñœ*ñ 'Eõ 	Fr    c                 ó¢  — t        j                  dd¬«      }t        j                  dd¬«      }t        j                  dd¬«      }|j                  «       }|j                  «       }|j                  «       }| j                  ||«       | j	                  ||«       | j                  ||«       | j	                  ||«       | j	                  ||«       y )Nro   r"   )rZ   r$   r   s8   CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r   Ú	constructrp   r#   r1   )r   Úprivate_keyÚprivate_key2Úprivate_key3rp   Úpublic_key2Úpublic_key3s          r   Útest_equalityz!TestEccKey_Curve448.test_equality‘   s¬   € Ü—m‘m¨¸
ÔCˆÜ—}‘}¨'¸ÔDˆÜ—}‘}¨'¸ÔDˆà ×+Ñ+Ó-ˆ
Ø"×-Ñ-Ó/ˆØ"×-Ñ-Ó/ˆà×Ñ˜ lÔ3Ø×Ñ˜K¨Ô6à×Ñ˜ [Ô1Ø×Ñ˜J¨Ô4à×Ñ˜J¨Õ4r    c                 óò   — t        j                  d¬«      }| j                  dt        |«      «       | j	                  |j
                  d«       | j	                  |j                  «       j
                  d«       y )Nr   rj   zcurve='Curve448'r"   )r   ÚgenerateÚassertInÚreprr#   r$   rp   )r   rd   s     r   Útest_name_consistencyz)TestEccKey_Curve448.test_name_consistency¢   sT   € Ü�l‰l Ô,ˆØ�‰Ð(¬$¨s«)Ô4Ø×Ñ˜Ÿ™ JÔ/Ø×Ñ˜Ÿ™Ó)×/Ñ/°Õ<r    N)	rM   rN   rO   rh   rm   rs   rx   r€   r…   rP   r    r   rR   rR   c   s"   „ òEò6,ò:òFò5ó"=r    rR   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestEccModule_Curve448c                 óh  — t        j                  d¬«      }| j                  |j                  «       «       t	        t
        d   j                  d¬«      |j                  z  }| j                  |j                  |«       t        j                  d¬«      }| j                  ||«       t        j                  d¬«       t        j                  dt        j                  «       j                  ¬«      }t        j                  dt        j                  «       j                  ¬«      }| j                  ||«       y )Nr"   rj   r   )r$   Úrandfunc)r   r‚   r=   r_   r	   r
   rk   rE   r#   r`   r1   r   ÚnewÚread)r   rd   r&   Úkey2Úkey1s        r   Útest_generatez$TestEccModule_Curve448.test_generate«   sÏ   € Ü�l‰l Ô,ˆØ�‰˜Ÿ™Ó)Ô*Üœ' *Ñ-×0Ñ0¸
ÔCÀcÇeÁeÑKˆØ×Ñ˜Ÿ™ UÔ+ô �|‰| *Ô-ˆØ×Ñ˜C Ô&ô 	�‰˜:Õ&ô �|‰| *´x·|±|³~×7JÑ7JÔKˆÜ�|‰| *´x·|±|³~×7JÑ7JÔKˆØ×Ñ˜˜tÕ$r    c                 ó”  — t        d«      }t        d«      }t        j                  |d¬«      }t        |d¬«      }t	        j
                  d|¬«      }| j                  |j                  |«       | j                  |j                  «       «       t	        j
                  d|¬«      }| j                  |j                  |«       | j                  |j                  «       «       t	        j
                  d||¬	«      }| j                  |j                  |«       | j                  |j                  «       «       t	        j
                  d
|¬«      }y )NrT   rU   rV   rW   r"   rj   rY   ©r$   Úpoint_x)r$   rZ   r‘   r   )r   r   r^   r	   r   rz   r#   r`   r=   r_   rl   )r   rZ   Ú	point_hexÚPxr&   rd   s         r   Útest_constructz%TestEccModule_Curve448.test_construct½   s  € Üð  Ló  MˆÜð  Qó  Rˆ	Ü×Ñ 	°XÔ>ˆÜ˜" JÔ/ˆô �m‰m *°4Ô8ˆØ×Ñ˜Ÿ™ UÔ+Ø�‰˜Ÿ™Ó)Ô*ô �m‰m *°bÔ9ˆØ×Ñ˜Ÿ™ UÔ+Ø×Ñ˜Ÿ™Ó*Ô+ô �m‰m *°4ÀÔDˆØ×Ñ˜Ÿ™ UÔ+Ø�‰˜Ÿ™Ó)Ô*ô �m‰m *°4Ô8‰r    c                 óŒ  — t        t        d   j                  ¬«      } | j                  t        t
        j                  fdddœ|¤Ž | j                  t        t
        j                  dd¬«       | j                  t        t
        j                  dd¬	«       | j                  t        t
        j                  dd
¬	«       ddz  ddz  z
  d
z
  }| j                  t        t
        j                  d|d
z
  ¬	«       | j                  t        t
        j                  d|¬	«       | j                  t        t
        j                  d|d
z   ¬	«       y )Nr   )r‘   r"   r   r]   rv   rY   r   r�   r   r   r   )Údictr
   rk   r*   r+   r   rz   )r   ÚcoordGÚps      r   Útest_negative_constructz.TestEccModule_Curve448.test_negative_constructÕ   s!  € Üœg jÑ1×4Ñ4Ô5ˆàˆ×Ñœ*¤c§m¡mð 	)¸:Øñ	)Ø!'ò	)à×Ñœ*¤c§m¡m¸:Ø&ð 	ô 	(ð 	×Ñœ*¤c§m¡m¸:Ø"#ð 	ô 	%à×Ñœ*¤c§m¡m¸:Ø"#ð 	ô 	%àˆs‰F�Q˜‘V‰O˜aÑˆØ×Ñœ*¤c§m¡m¸:Ø"# A¡#ð 	ô 	'à×Ñœ*¤c§m¡m¸:Ø"#ð 	ô 	%à×Ñœ*¤c§m¡m¸:Ø"# A¡#ð 	õ 	'r    N)rM   rN   rO   rŽ   r”   r™   rP   r    r   r‡   r‡   ©   s   „ ò%ò$9ó0'r    r‡   c                 óv   — g }|t        t        «      z  }|t        t        «      z  }|t        t        «      z  }|S ©N)r   r   rR   r‡   )ÚconfigÚtestss     r   Ú	get_testsrž   ë   s<   € Ø€EØ	Œ_Ô2Ó3Ñ3€EØ	Œ_Ô0Ó1Ñ1€EØ	Œ_Ô3Ó4Ñ4€EØ€Lr    Ú__main__c                  ó<   — t        j                  t        «       «      S r›   )ÚunittestÚ	TestSuiterž   rP   r    r   Úsuiter£   ô   s   € Ü×!Ñ!¤)£+Ó.Ð.r    r£   )ÚdefaultTest)r¡   Úbinasciir   ÚCrypto.SelfTest.st_commonr   ÚCrypto.Math.Numbersr   ÚCrypto.Hashr   ÚCrypto.PublicKeyr   ÚCrypto.PublicKey.ECCr   r	   r
   r   rA   rB   ÚTestCaser   rR   r‡   rž   rM   r£   ÚmainrP   r    r   ú<module>r­      sò   ðó Ý å 5Ý 'Ý  å  ß ;Ñ ;à�‰V�a˜‘f‰_˜qÑ €
Ø�C‘ÐTÑT€ð
 Ø{Ø{ØzØ{Ø{Ø}Ø}Ø|Ø}ð Bð Cð PØ�aÑ˜ÐðÐ ô$;4˜H×-Ñ-ô ;4ô|C=˜(×+Ñ+ô C=ôL?'˜X×.Ñ.ô ?'ðD ó ð ˆzÒò/à€H‡M�M˜gÖ&ð r    