+
    '(j!                         R t Rt^ RIt^ RIHtHtHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RI5  ! R R	]P                  4      t/ 3R
 lt]R8X  d   R t]P&                  ! RR7       R# R# )z,Self-test suite for Crypto.PublicKey.ElGamalz$Id$N)list_test_casesa2b_hexb2a_hex)Random)ElGamal)bytes_to_long)*c                     a  ] tR t^"t o RRRRRRRRR	R
RRRRRR/RRRRRRRRR	RRRRRRR/.tRRRRRRRRR	RRRRRRR /RR!RR"RR#RR$R	R%RRRR&RR'/.tR( tR) tR* tR+ t	R, t
R- tR. tR7R/ ltR0 tR1 tR2 tR3 tR4 tR5tV tR6# )8ElGamalTestp@BA4CAEAAED8CBE952AFD2126C63EB3B345D65C2A0A73D2A3AD4138B6D09BD933g05y@60D063600ECED7C7C55146020E7A31C4476E9793BEAED420FEC9E77604CAE4EFx.1D391BA2EE3C37FE1BA175A69B2C73A11238AD77675932k.F5893C5BAB4131264066F57AB3D8AD89E391A0B68A68A1pt48656C6C6F207468657265ct1@32BFD5F487966CEA9E9356715788C491EC515E4ED48B58F0F00971E93AAA5EC7ct2@7BE8FBFF317C93E82FCEF9BD515284BA506603FEA25D01C0CB874A31F315EE68ڀF1B18AE9F7B4E08FDA9A04832F4E919D89462FD31BF12F92791A93519F75076D6CE3942689CDFF2F344CAFF0F82D01864F69F3AECF566C774CBACF728B81A22707ڀ688628C676E4F05D630E1BE39D0066178CA7AA83836B645DE5ADD359B4825A12B02EF4252E4E6FA9BEC1DB0BE90F6D7C8629CABB6E531F472B2664868156E20C.14E60B1BDFD33436C0DA8A22FDC14A2CCDBBED0627CE68.38DBF14E1F319BDA9BAB33EEEADCAF6B2EA5250577ACE7ڀ290F8530C2CC312EC46178724F196F308AD4C523CEABB001FACB0506BFED676083FE0F27AC688B5C749AB3CB8A80CD6F7094DBA421FB19442F5A413E06A9772Bڀ1D69AAAD1DC50493FB1B8E8721D621D683F3BF1321BE21BC4A43E11B40C9D4D9C80DE3AAC2AB60D31782B16B61112E68220889D53C4C3136EE6F6CE61F8A23A0@D2F3C41EA66530838A704A48FFAC9334F4701ECE3A97CEE4C69DD01AE7129DD7@C3F9417DC0DAFEA6A05C1D2333B7A95E63B3F4F28CC962254B3256984D1012E7.165E4A39BE44D5A2D8B1332D416BC559616F536BC735BB@C7F0C794A7EAD726E25A47FF8928013680E73C51DD3D7D99BFDA8F492585928Fhsig1@35CA98133779E2073EF31165AFCDEB764DD54E96ADE851715495F9C635E1E7C2sig2@0135B88B1151279FE5D8078D4FC685EE81177EE9802AB123A73925FC1CB059A7ڀE24CF3A4B8A6AF749DCA6D714282FE4AABEEE44A53BB6ED15FBE32B5D3C3EF9CC4124A2ECA331F3C1C1B667ACA3766825217E7B5F9856648D95F05330C6A19CF0Bڀ2AD3A1049CA5D4ED207B2431C79A8719BB4073D4A94E450EA6CEE8A760EB07ADB67C0D52C275EE85D7B52789061EE45F2F37D9B2AE522A51C28329766BFE68AC.16CBB4F46D9ECCF24FF9F7E63CAA3BD8936341555062ABڀ8A3D89A4E429FD2476D7D717251FB79BF900FFE77444E6BB8299DC3F84D0DD57ABAB50732AE158EA52F5B9E7D8813E81FD9F79470AE22F8F1CF9AEC820A78C69ڀBE001AABAFFF976EC9016198FBFEA14CBEF96B000CCC0063D3324016F9E91FE80D8F9325812ED24DDB2B4D4CF4430B169880B3CE88313B53255BD4EC0378586Fڀ5E266F3F837BA204E3BBB6DBECC0611429D96F8C7CE8F4EFDF9D4CB681C2A954468A357BF4242CEC7418B51DFC081BCD21299EF5B5A0DDEF3A139A1817503DDEc                (    V P                  ^4       R# )   N)_test_random_key)selfs   &[/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/SelfTest/PublicKey/test_ElGamal.pytest_generate_180ElGamalTest.test_generate_180`   s    c"    c                J   V P                    F  pV P                  VR 4      p\        P                  ! VR,          4      pVP	                  VR,          VR,          4      pV P                  V^ ,          VR,          4       V P                  V^,          VR,          4       K  	  R# )Tkeyr   r   r   r   N)tve
convert_tvr   	construct_encryptassertEqual)r5   tvdr;   cts   &    r6   test_encryptionElGamalTest.test_encryptionc   s|    ((BD)A##AeH-Cagqv.BRUAeH-RUAeH- r9   c                    V P                    Fk  pV P                  VR 4      p\        P                  ! VR,          4      pVP	                  VR,          VR,          34      pV P                  WBR,          4       Km  	  R# )Tr;   r   r   r   N)r<   r=   r   r>   _decryptr@   )r5   rA   rB   r;   r   s   &    r6   test_decryptionElGamalTest.test_decryptionk   sa    ((BD)A##AeH-Cqx523BR4)	 r9   c                .   V P                    F  pV P                  VR 4      p\        P                  ! VR,          4      pVP	                  VR,          VR,          4      w  rEV P                  WBR,          4       V P                  WRR,          4       K  	  R# )Tr;   r&   r   r'   r)   N)tvsr=   r   r>   _signr@   )r5   rA   rB   r;   r'   r)   s   &     r6   test_signingElGamalTest.test_signingr   sr    ((BD)A##AeH-C1S61S62JDTV9-TV9- r9   c                   V P                    F  pV P                  VR 4      p\        P                  ! VR,          4      pVP	                  VR,          VR,          VR,          34      pV P                  V4       VP	                  VR,          VR,          ^,           VR,          34      pV P                  V4       K  	  R# )Tr;   r&   r'   r)   N)rK   r=   r   r>   _verify
assertTrueassertFalse)r5   rA   rB   r;   ress   &    r6   test_verificationElGamalTest.test_verificationz   s    ((BD)A##AeH-C++qv&	!F)'<>COOC ++qv&	!AfI'>@CS! r9   c                   \        V P                  V P                  ^ ,          ^4      R,          4      R,          ;rV^ ;;,          ^,          uu&   V P                  \        \
        P                  V4       Tp^V^&   V P                  \        \
        P                  V4       TpV^ ,          ^,          V^&   V P                  \        \
        P                  V4       R# )    r;   :N   NNlistr=   rK   assertRaises
ValueErrorr   r>   r5   tuptup0s   &  r6   test_bad_key3ElGamalTest.test_bad_key3   s    $//$((1+q9%@A"EEA!*g&7&7=A*g&7&7=QA*g&7&7=r9   c                    \        V P                  V P                  ^ ,          ^4      R,          4      ;rV^;;,          ^,          uu&   V P                  \        \
        P                  V4       R# )rW   r;   NrY   r]   s   &  r6   test_bad_key4ElGamalTest.test_bad_key4   sL    $//$((1+q9%@AAA!*g&7&7=r9   c                   Rp/ pVP                  4        F@  p\        W,          4      WE&   V'       g   WS9   g
   VR9   g   K-  \        WE,          4      WE&   KB  	  . VR&   V F!  pVR;;,          WE,          .,          uu&   WE K#  	  V# )z^Convert a test vector from textual form (hexadecimal ascii
to either integers or byte strings.r;   )r   r   r   r   )r'   r)   )keysr   r   )r5   rA   as_longs	key_compstv2cs   &&&   r6   r=   ElGamalTest.convert_tv   sz     $	ARU^CF1>Q/-A&sv.  E
AJ36("J  
r9   c                   \         P                  ! V\        P                  ! 4       P                  4      pV P                  V4       V P                  V4       VP                  4       pV P                  V4       V P                  V4       R # N)
r   generater   newread_check_private_key_exercise_primitive	publickey_check_public_key_exercise_public_primitive)r5   bitselgObjpubs   &&  r6   r4   ElGamalTest._test_random_key   sf    !!$

(9(9:'  ( s#''/r9   c                R   V P                  VP                  4       4       T P                  ^VP                  u;8  ;'       d    VP                  ^,
          8  Mu 4       V P	                  \        VP                  VP                  ^,
          VP                  4      ^4       T P                  ^VP                  u;8  ;'       d    VP                  ^,
          8  Mu 4       V P	                  \        VP                  VP                  VP                  4      VP                  4       R#    N)rQ   has_privater   r   r@   powr   r   r5   rw   s   &&r6   rq   ElGamalTest._check_private_key   s     	**,- 	&((//FHHQJ/0VXXvxxz688<a@&((//FHHQJ/0VXXvxx:FHHEr9   c                H   V P                  VP                  4       4       T P                  ^VP                  u;8  ;'       d    VP                  ^,
          8  Mu 4       V P                  \        VP                  VP                  ^,
          VP                  4      ^4       R# r{   )rR   r}   rQ   r   r   r@   r~   r   s   &&r6   rt   ElGamalTest._check_public_key   sk     	++-. 	&((//FHHQJ/0VXXvxxz688<a@r9   c                    R pVP                  VR4      pVP                  V4      pV P                  W$4       VP                  VR4      pVP	                  W%4       R# )i [ih:N)r?   rG   r@   rL   rP   )r5   rw   	plaintext
ciphertext
plaintextP	signatures   &&    r6   rr   ElGamalTest._exercise_primitive   sQ    	__Y	:
__Z0
/ LLI6	y,r9   c                .    R pVP                  VR4      pR# )iߊr   N)r?   )r5   rw   r   r   s   &&  r6   ru   &ElGamalTest._exercise_public_primitive   s    	__Y	:
r9    N)rW   )__name__
__module____qualname____firstlineno__r<   rK   r7   rD   rH   rM   rT   r`   rc   r=   r4   rq   rt   rr   ru   __static_attributes____classdictcell__)__classdict__s   @r6   r
   r
   "   sN     	PdP>>&PP
	
 	  Qd  Q>>&  Q  Q
	
	C< 	PdP>P&QQ
	
 	  Qd  Q>  Q&  R  R
	
	C2#.*.	">>
0	FA	-; ;r9   r
   c                 6    . pV\        \        4      ,          pV# rm   )r   r
   )configtestss   & r6   	get_testsr      s    E	_[))ELr9   __main__c                  >    \         P                  ! \        4       4      # rm   )unittest	TestSuiter   r   r9   r6   <lambda>r      s    H&&y{3r9   suite)defaultTest)__doc____revision__r   Crypto.SelfTest.st_commonr   r   r   Cryptor   Crypto.PublicKeyr   Crypto.Util.numberr   Crypto.Util.py3compatTestCaser
   r   r   r   mainr   r9   r6   <module>r      sc   . 3  G G  $ , #m;(## m;^  
 z3EMMg& r9   