ghq5ddlZddlmZddlmZddlmZddlmZddl m Z m Z m Z ddl mZddlmZGd d ejZGd d ejZGd dejZifdZedkrdZejddSdS)N) unhexlify)list_test_cases)load_test_vectors)ECC)EccPoint_curvesEccKey)Integer)SHAKE128c eZdZdddZdddZdddZeeded d Zeeded d Zeeded d Z d Z d Z dZ dZ dZdZdZdZdZdZdZdS)TestEccPoint_Ed25519UK5J,{$%Xci\-G' lJ[sii!XfL33ffL33ffL33ffL33ff)xyNP8-E:E,g`t!C@'&6#Ur` YTV>D&#!8eHBf`"l\b'!cjI,`!c:5Ps%Q%Ngl4q!!@0dv w=M9 5:5M]XgrrEd25519curvec`t|jd|jddtddd}||jd||jd||jd|j}||jd||jd ||j|j|jf|j}||jd ||jd ||j|j|jftd d d| ttddddS)Nrrrrr)rrrrrr3r]ds Y|CO~ \^K[D_{?kx+SIH,~5a(21f$&Rpc~U?&H_)rrr"#) rGxy assertEqualrrxypointGcopypointG2 assertRaises ValueError)selfpaibpbp2s /builddir/build/BUILD/imunify360-venv-2.6.0/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/SelfTest/PublicKey/test_ECC_25519.py test_init_xyz!TestEccPoint_Ed25519.test_init_xy<s# Y????q!9--- """ """ ((([     lmmm lmmm rt ---l!!  mnnn  mnnn #%000 ``  " " " " *hBiHHHHHctddd}||j||j|jj||j|jjdSNrrrr)rsetr rrrr%pointWs r)test_setzTestEccPoint_Ed25519.test_setYsh!Qi000 4; 4;=111 4;=11111r+c|j}||j|jj||j|jjdSN)r r!rrrr/s r) test_copyzTestEccPoint_Ed25519.test_copy_sS!!## 4;=111 4;=11111r+c|j}|j}||j|||j|dSr3)r r!r"rassertNotEqual)r%pointHpointIs r) test_equalzTestEccPoint_Ed25519.test_equalds^!!##""$$ f--- DK00000r+ctddd}|||||dSr-)r assertTrueis_point_at_infinityrpoint_at_infinity)r%r&s r)test_paizTestEccPoint_Ed25519.test_paijs\q!9--- 0022333 c335566666r+cx|j }|j|z}||dSr3)r r;r<)r%negGsums r) test_negatez TestEccPoint_Ed25519.test_negateos; |kD  002233333r+c||j|jz|j||j|jz|j||j|jz|j||j|jz|j|j|jz}||jd||jddS)Nrr)rr r"pointG3r=rr)r%G5s r) test_additionz"TestEccPoint_Ed25519.test_additionts t|3T\BBB  3T\BBB  (E(E(G(GGVVV 66884<GVVV \DL ( lmmm lmmmmmr+c:|j}||jz }|||j||jz }|||j||jz }|||jdSr3)r r!rr"rDr=)r%r7s r)test_inplace_additionz*TestEccPoint_Ed25519.test_inplace_addition~s!!##$+ ...$+ ...$+//111 .....r+c|j}|||j|jj||j|jj|j}|}||||dSr3)r r!doublerrr"rr=)r%r7r&pointRs r) test_doublingz"TestEccPoint_Ed25519.test_doublings!!##  4<>222 4<>222k++--  %%%%%r+cd}||jz}||jd||jdd}||jz}||j|jj||j|jjd}||jz}||j|jj||j|jjd}||jz}||j|jj||j|jjd}||jz}||jd||jdd}||jz}||jd ||jd d }||jz}||jd ||jd d}||jz}||jd||jdd}||jz}||jd||jdd}||jz}||jd||jddS)Nrrlpx _ItTyd09yAja.2h(~UmT= l/d-y E yLl*up2rtGrr lOy|$DG? w yJ;GTM2 <,`l,{URCT;ZI ^Nn~=S~^lv,p$f }L&*]/O |:U)r rrrr"rD)r%dr7s r)test_scalar_multiplyz)TestEccPoint_Ed25519.test_scalar_multiplys T[ 1%%% 1%%% T[ 4;=111 4;=111 T[ 4<>222 4<>222 T[ 4<>222 4<>222 T[ #pqqq #pqqq T[ #pqqq #pqqq T[ #pqqq #pqqq T[ #pqqq #oppp T[ #pqqq #pqqq T[ #pqqq #opppppr+c||jd||jddS)NrT )rr size_in_bits size_in_bytesr%s r) test_sizeszTestEccPoint_Ed25519.test_sizessP 1133S999 2244b99999r+N)__name__ __module__ __qualname__rG2xyG3xyrr r"rDr*r1r4r9r>rBrFrHrLrWr]r+r)r r -sa]] _ _C_^ ` `D_] _ _DXc#hC : : :FhtCy$s)9===GhtCy$s)9===GIII:222 222 111 777 444 nnn/// & & &1q1q1qf:::::r+r c2eZdZdZdZdZdZdZdZdS)TestEccKey_Ed25519ctd}d}d}td|}||j|||jd||||jj|||jj |t||d}td||}||jd||||j|td|}| ttdd dS) N@9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60En< KBc !5?)& MpUZ0FU8[=t2:ek6RrU@ZQrrseed0| >!Y,$%<0<}Oe|tddS)Nc$tddS)NrmHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrj)r rcr+r)z6TestEccKey_Ed25519.test_invalid_seed..sf99.U.U.Ur+)r#r$r\s r)test_invalid_seedz$TestEccKey_Ed25519.test_invalid_seeds" *&U&UVVVVVr+ctjdd}tjdd}tjdd}|}|}|}|||||||||||||||dS)Nr|r)rkrrms CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)r constructr}rr6)r% private_key private_key2 private_key3r} public_key2 public_key3s r) test_equalityz TestEccKey_Ed25519.test_equalitysm BBB }'CCC }'CCC  ++-- "--// "--//  l333 K666 [111 J 444 J 44444r+ctjd}|dt|||jd||jddS)Nrmrzcurve='Ed25519'r)rgenerateassertInreprrrr})r%rts r)test_name_consistencyz(TestEccKey_Ed25519.test_name_consistencyspl+++ 'c333 I... ))/;;;;;r+N) r^r_r`rurzrrrrrcr+r)rerestDDD0,,, ::: WWW555"<<<<rs>555555444444 ::::::::::'''''' [:[:[:[:[:8,[:[:[:|><><><><><*><><>