+
    @i<                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt  ^ RIt^RI
HtHtHtHtHtHtHtHt ^RI
H
t
 ^RIHtHtHtHtHt ^RIHtHt ^RIHt R]P<                  9   d   ]].t
]P>                  PA                  R	]
]
 U u. uF  q PB                  NK  	  up R
7      R 4       t"R t#R t$ ! R R]PJ                  4      t&R t'R t(]P>                  PA                  R]PR                  ! ]RRRRR7      ]PR                  ! ]RRRRR7      ]PR                  ! ]RRRRR7      ]PR                  ! ]R R!R"R#R7      ]PR                  ! ]R$R%R&R'R7      ]PR                  ! ]R(R)R*R+R7      ]PR                  ! ]R,R-R.R/R7      ]PR                  ! ]R0R1R2R3R7      ]PR                  ! ]R4R5R6R7R7      ]PR                  ! ]R8R9R:R;R7      ]PR                  ! ]R<R=R>R?R7      ]PR                  ! ]R@RARBRCR7      ]PR                  ! ]RDRERFRGR7      ]PR                  ! ]RHRIRJRKR7      ]PR                  ! ]RLRMRNROR7      .4      RP 4       t*RQt+RRt,RSt-RTt.RUt/RV t0RW t1 ! RX RY]24      t3RZ t4]5! R[ ]4! R\4      Pm                  R]4       4       4      t7]P>                  Pp                  ]P>                  PA                  R	]
]
 U u. uF  q PB                  NK  	  up R
7      R^ 4       4       t9R#   ]	 d	    ^ RIt ELi ; iu up i u up i )_    N)	unhexlify)NIST192pNIST224pNIST256pNIST384pNIST521pBRAINPOOLP160r1	SECP112r2	SECP128r1)curves)ECDHInvalidCurveErrorInvalidSharedSecretError
NoKeyErrorNoCurveError)
SigningKeyVerifyingKey)	CurveEdTwz--fastvcurve)idsc                    \        V P                  \        4      '       d   \        P                  ! R 4       \        V R7      p\        V R7      pVP                  4        VP                  VP                  4       4       VP                  VP                  4       4       VP                  4       pVP                  4       pW48X  g   Q hR# )z(ECDH is not supported for Edwards curvescurveN)

isinstancer   r   pytestskipr   generate_private_keyload_received_public_keyget_public_keygenerate_sharedsecret_bytes)r   ecdh1ecdh2secret1secret2s   &    M/var/www/html/photoedit/myenv/lib/python3.14/site-packages/ecdsa/test_ecdh.pytest_ecdh_eachr&   '   s     &,,	**>?vEvE	 	""5#7#7#9:	""5#=#=#?@//1G//1G    c                     \         P                  ! \        4      p \         P                  ! \        4      p\        \        WP                  4      p\        WP                  R 7      pVP                  4       pVP                  4       pWE8X  g   Q hR# ))private_key
public_keyN)r   generater	   r   verifying_keyr    )key1key2r!   r"   r#   r$   s         r%   test_ecdh_both_keys_presentr/   ;   sl    /D/D$(:(:;ET.@.@AE//1G//1Gr'   c                     \        \        R 7      p \        P                  ! \        4      ;_uu_ 4        V P                  4        RRR4       V P                  4        \        P                  ! \        4      ;_uu_ 4        V P                  4        RRR4       R#   + '       g   i     L]; i  + '       g   i     R# ; ir   N)r   r   r   raisesr   r    r   r!   s    r%   test_ecdh_no_public_keyr4   H   sr    x E	z	"	"))+ 
# 
 	z	"	"))+ 
#	" 
#	"
 
#	"	"s   B>B,B)	,B=	c                   8   a  ] tR t^Tt o R tR tR tR tRtV t	R# )TestECDHc                V   \        4       pVP                  \        4       \        P                  ! \
        4      pV P                  \        4      ;_uu_ 4       pVP                  V4       R R R 4       V P                  R\        XP                  4      4       R #   + '       g   i     L7; i)NzCurve mismatch)r   	set_curver   r   r+   r	   assertRaisesr   load_private_keyassertInstr	exception)selfr!   r-   es   &   r%   test_load_key_from_wrong_curve'TestECDH.test_load_key_from_wrong_curveU   so    !""?3011Q""4( 2 	&AKK(89 21s   BB(	c                    \        4       pV P                  \        4      ;_uu_ 4       pVP                  4        R R R 4       V P	                  R\        XP                  4      4       R #   + '       g   i     L7; i)NCurve must be set)r   r9   r   r   r;   r<   r=   r>   r!   r?   s   &  r%   test_generate_without_curve$TestECDH.test_generate_without_curve`   sP    |,,&&( - 	)3q{{+;< -,s   A((A8	c                    \        4       pV P                  \        4      ;_uu_ 4       pVP                  R4       RRR4       V P	                  R\        XP                  4      4       R#   + '       g   i     L7; i)   NrC   s    )r   r9   r   load_private_key_bytesr;   r<   r=   rD   s   &  r%   !test_load_bytes_without_curve_set*TestECDH.test_load_bytes_without_curve_seth   sR    |,,((6 - 	)3q{{+;< -,s   A))A9	c                    \        4       p\        P                  ! \        4      pVP	                  VP
                  4       V P                  VP                  \        4       R # N)r   r   r+   r	   r   r,   assertEqualr   )r>   r!   r-   s   &  r%   'test_set_curve_from_received_public_key0TestECDH.test_set_curve_from_received_public_keyp   sA    ""?3&&t'9'9:o6r'    N)
__name__
__module____qualname____firstlineno__r@   rE   rJ   rO   __static_attributes____classdictcell__)__classdict__s   @r%   r6   r6   T   s     	:==7 7r'   r6   c                     \        \        R 7      p V P                  4        \        \        R 7      pVP                  4        \        P
                  ! \        4      ;_uu_ 4        V P                  VP                  4       4       RRR4       \        P
                  ! \        4      ;_uu_ 4        VP                  V P                  4       4       RRR4       VP                  4       V n	        V P                  4       Vn	        \        P
                  ! \        4      ;_uu_ 4        V P                  4        RRR4       \        P
                  ! \        4      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Ls; i  + '       g   i     R# ; ir1   )r   r   r   r   r   r2   r   r   r   r*   r    )r!   r"   s     r%    test_ecdh_wrong_public_key_curverZ   z   s   x E	 x E	 	(	)	)&&u';';'=> 
* 
(	)	)&&u';';'=> 
* ++-E++-E	(	)	)))+ 
* 
(	)	)))+ 
*	) 
*	) 
*	) 
*	) 
*	)	)s0   # E7- F
!FF07F	
F	F-	0G	c                     \        \        R 7      p V P                  4        V P                  \        P
                  ! \        4      P                  4       4       V P                  P                  P                  V P                  P                  n        \        P                  ! \        4      ;_uu_ 4        V P                  4        RRR4       R#   + '       g   i     R# ; ir1   )r   r   r   r   r   r+   get_verifying_keyr)   r   orderprivkeysecret_multiplierr   r2   r   r    r3   s    r%   %test_ecdh_invalid_shared_secret_curver`      s    x E	 	""H%779 382C2C2I2I2O2OE/	/	0	0))+ 
1	0	0	0s   3CC	zcurve,privatekey,pubkey,secret0f17d3fea367b74d340851ca4270dcb24c271f445bed9d527`42ea6dd9969dd2a61fea1aac7f8e98edcc896c6e55857cc0dfbe5d7c61fac88b11811bde328e8a0d12bf01a9d204b5230803d8ab2e5b6e6fca715737c3a82f7ce3c783124f6d51cd0z
NIST192p-1)id056e853349d96fe4c442448dacb7cf92bb7a95dcf574a9bd5`deb5712fa027ac8d2f22c455ccb73a91e17b6512b5e030e77e2690a02cc9b28708431a29fb54b87b1f0c14e011ac21250c208847568b98835d7312cef1f97f7aa298283152313c29dz
NIST192p-20c6ef61fe12e80bf56f2d3f7d0bb757394519906d55500949`4edaa8efc5a0f40f843663ec5815e7762dddc008e663c20f0a9f8dc67a3e60ef6d64b522185d03df1fc0adfd42478279087229107047a3b611920d6e3b2c0c89bea4f49412260b8ddz
NIST192p-30e6747b9c23ba7044f38ff7e62c35e4038920f5a0163d3cda`8887c276edeed3e9e866b46d58d895c73fbd80b63e382e8804c5097ba6645e16206cfb70f7052655947dd44a17f1f9d50eec0bed8fc55e1feddc82158fd6dc0d48a4d796aaf47d46cz
NIST192p-40beabedd0154a1afcfc85d52181c10f5eb47adc51f655047d`0d045f30254adc1fcefa8a5b1f31bf4e739dd327cd18d594542c314e41427c08278a08ce8d7305f3b5b849c72d8aff730716e743b1b37a2cd8479f0a3d5a74c10ba2599be18d7e2f4z
NIST192p-50cf70354226667321d6e2baf40999e2fd74c7a0f793fa8699`fb35ca20d2e96665c51b98e8f6eb3d79113508d8bccd4516368eec0d5bfb847721df6aaff0e5d48c444f74bf9cd8a5a70f67053b934459985a315cb017bf0302891798d45d0e19508z
NIST192p-688346a60fc6f293ca5a0d2af68ba71d1dd389e5e40837942df3e43cbdpaf33cd0629bc7e996320a3f40368f74de8704fa37b8fab69abaae280882092ccbba7930f419a8a4f9bb16978bbc3838729992559a6f2e2d787d96f9a3bd3c05cf5cc37feb8b9d5209d5c2597464dec3e9983743e8r   @7d7dc5f71eb29ddaf80d6214632eeae03d9058af1fb6d22ed80badb62bc1a534ڀ700c48f77f56584c5cc632ca65640db91b6bacce3a4df6b42ce7cc838833d287db71e509e3fd9b060ddb20ba5c51dcc5948d46fbf640dfe0441782cab85fa4ac@46fc62106420ff012e54a434fbdd2d25ccc5852060561e68040dd7778997bd7bz
NIST256p-1@38f65d6dce47676044d58ce5139582d568f64bb16098d179dbab07741dd5caf5ڀ809f04289c64348c01515eb03d5ce7ac1a8cb9498f5caa50197e58d43a86a7aeb29d84e811197f25eba8f5194092cb6ff440e26d4421011372461f579271cda3@057d636096cb80b67a8c038c890e887d1adfa4195e9b3ce241c8a778c59cda67z
NIST256p-2@1accfaf1b97712b85a6f54b148985a1bdc4c9bec0bd258cad4b3d603f49f32c8ڀa2339c12d4a03c33546de533268b4ad667debf458b464d77443636440ee7fec3ef48a3ab26e20220bcda2c1851076839dae88eae962869a497bf73cb66faf536@2d457b78b4614132477618a5b077965ec90730a8c81a1c75d6d4ec68005d67ecz
NIST256p-3@207c43a79bfee03db6f4b944f53d2fb76cc49ef1c9c4d34d51b6c65c4db6932dڀdf3989b9fa55495719b3cf46dccd28b5153f7808191dd518eff0c3cff2b705ed422294ff46003429d739a33206c8752552c8ba54a270defc06e221e0feaf6ac4@96441259534b80f6aee3d287a6bb17b5094dd4277d9e294f8fe73e48bf2a0024z
NIST256p-4@59137e38152350b195c9718d39673d519838055ad908dd4757152fd8255c09bfڀ41192d2813e79561e6a1d6f53c8bc1a433a199c835e141b05a74a97b0faeb9221af98cc45e98a7e041b01cf35f462b7562281351c8ebf3ffa02e33a0722a1328@19d44c8d63e8e8dd12c22a87b8cd4ece27acdde04dbf47f7f27537a6999a8e62z
NIST256p-5@f5f8e0174610a661277979b58ce5c90fee6c9b3bb346a90a7196255e40b132efڀ33e82092a0f1fb38f5649d5867fba28b503172b7035574bf8e5b7100a3052792f2cf6b601e0a05945e335550bf648d782f46186c772c0f20d3cd0d6b8ca14b2f@664e45d5bba4ac931cd65d52017e4be9b19a515f669bea4703542a2c525cd3d3z
NIST256p-6`3cc3122a68f0d95027ad38c067916ba0eb8c38894d22e1b15618b6818a661774ad463b205da88cf699ab4d43c9cf98a1a7c76b970c3b5fe8b05d2838ae04ab47697b9eaf52e764592efda27fe7513272734466b400091adbf2d68c58e0c50066ac68f19f2e1cb879aed43a9969b91a0839c4c38a49749b661efedf243451915ed0905a32b060992b468c64766fc8437a`5f9d29dc5e31a163060356213669c8ce132e22f57c9a04f40ba7fcead493b457e5621e766c40a2e3d4d6a04b25e533f1r   ڄ017eecc07ab4b329068fba65e56a1f8890aa935e57134ae0ffcce802735151f4eac6564f6ee9974c5e6887a1fefee5743ae2241bfeb95d5ce31ddcb6f9edb4d6fc47  00685a48e86c79f0f0875f7bc18d25eb5fc8c0b07e5da4f4370f3a9490340854334b1e1b87fa395464c60626124a4e70d0f785601d37c09870ebf176666877a2046d01ba52c56fc8776d9e8f5db4f0cc27636d0b741bbe05400697942e80b739884a83bde99e0f6716939e632bc8986fa18dccd443a348b6c3e522497955a4f3c302f676ڄ005fc70477c3e63bc3954bd0df3ea0d1f41ee21746ed95fc5e1fdf90930d5e136672d72cc770742d1711c3c3a4c334a0ad9759436a4d3c5bf6e74b9578fac148c831r   c                     \        V R 7      pVP                  \        V4      4       VP                  \        V4      4       VP	                  4       pV\        V4      8X  g   Q hR# r1   )r   rI   r   load_received_public_key_bytesr    )r   
privatekeypubkeysecretecdhsharedsecrets   &&&&  r%   test_ecdh_NISTr      sV    L eD	* 56''	&(9:335L9V,,,,r'   z-----BEGIN EC PRIVATE KEY-----
MF8CAQEEGF7IQgvW75JSqULpiQQ8op9WH6Uldw6xxaAKBggqhkjOPQMBAaE0AzIA
BLiBd9CE7xf15FY5QIAoNg+fWbSk1yZOYtoGUdzkejWkxbRc9RWTQjqLVXucIJnz
bA==
-----END EC PRIVATE KEY-----
305f02010104185ec8420bd6ef9252a942e989043ca29f561fa525770eb1c5a00a06082a8648ce3d030101a13403320004b88177d084ef17f5e45639408028360f9f59b4a4d7264e62da0651dce47a35a4c5b45cf51593423a8b557b9c2099f36cz-----BEGIN PUBLIC KEY-----
MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAEuIF30ITvF/XkVjlAgCg2D59ZtKTX
Jk5i2gZR3OR6NaTFtFz1FZNCOotVe5wgmfNs
-----END PUBLIC KEY-----
ږ3049301306072a8648ce3d020106082a8648ce3d03010103320004b88177d084ef17f5e45639408028360f9f59b4a4d7264e62da0651dce47a35a4c5b45cf51593423a8b557b9c2099f36c08f457e34982478d1c34b9cd2d0c15911b72dd60d869e2ceac                      \        4       p V P                  \        4       V P                  \        4       V P                  4       pV\        \        4      8X  g   Q hR # rM   )r   load_private_key_pempem_local_private_keyload_received_public_key_pempem_remote_public_keyr    r   gshared_secretr   r   s     r%   test_ecdh_pemr   I  sH    6D34%%&;<335L9^4444r'   c                      \        4       p V P                  \        \        4      4       V P	                  \        \
        4      4       V P                  4       pV\        \        4      8X  g   Q hR # rM   )r   load_private_key_derr   der_local_private_keyload_received_public_key_derder_remote_public_keyr    r   r   s     r%   test_ecdh_derr   S  sR    6Di(=>?%%i0E&FG335L9^4444r'   c                       ] tR tRtRtR# )RunOpenSslErrori^  rQ   N)rR   rS   rT   rU   rV   rQ   r'   r%   r   r   ^  s    r'   r   c           
      L   R p\         P                  ! V.V P                  4       ,           \         P                  \         P                  R7      pVP                  4       w  r4VP                  ^ 8w  d&   \        RV: RV : RVP                  : RV: 24      hVP                  4       # )openssl)stdoutstderrzcmd ' z' failed: rc=z, stdout/err was )	
subprocessPopensplitPIPESTDOUTcommunicate
returncoder   decode)cmdOPENSSLpr   ignoreds   &    r%   run_opensslr   b  s    G		CIIK  	A
 mmoOF||qQ\\63
 	
 ==?r'   c              #   n   "   T F+  pVP                  R 4      ^ ,          P                  4       x  K-  	  R# 5i):N)r   strip).0cs   & r%   	<genexpr>r   r  s/      < GGCLO<s   35zecparam -list_curves
c                    \        V P                  \        4      '       d   \        P                  ! R 4       V P
                  '       g   Q hV P
                  \        9  d(   \        P                  ! RV P
                  ,           4        \        R4      pVP                  R4      ^ 8X  d   \        P                  ! R4       \        P                  P                  R4      '       d   \        P                  ! R4       \        P                  ! R4       \        RT P
                  ,          4       \        RT P
                  ,          4       \        R	4       \!        T R
7      p\!        T R
7      p\#        R4      ;_uu_ 4       pTP%                  4       pRRR4       TP'                  X4       \#        R4      ;_uu_ 4       pTP%                  4       pRRR4       TP'                  T4       \#        R4      ;_uu_ 4       pTP%                  4       pRRR4       \(        P*                  ! T4      pTP-                  4       TP/                  4       P-                  4       8X  g   Q hTP/                  4       p\#        RR4      ;_uu_ 4       pTP1                  TP3                  4       4       RRR4       TP5                  T4       TP5                  T4       TP7                  4       pTP7                  4       p	Y8X  g   Q h\        R4       \        R4       \#        RR4      ;_uu_ 4       pTP%                  4       p
RRR4       \#        RR4      ;_uu_ 4       pTP%                  4       pRRR4       \9        X
4      TP                  P:                  ^,          8X  g   Q h\9        T4      TP                  P:                  ^,          8X  g   Q hT
X8X  g   Q hY8X  g   Q hR#   \         d    \        P                  ! R4        EL2i ; i  + '       g   i     ELo; i  + '       g   i     ELF; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL#; i  + '       g   i     EL
; i)z)Edwards curves are not supported for ECDHz system openssl does not support zpkeyutl -helpz-derivez1system openssl does not support `pkeyutl -derive`z$system openssl could not be executedtz,ecparam -name %s -genkey -out t/privkey1.pemz,ecparam -name %s -genkey -out t/privkey2.pemz0ec -in t/privkey1.pem -pubout -out t/pubkey1.pemr   zt/privkey1.pemNzt/privkey2.pemzt/pubkey1.pemzt/pubkey2.pemwbzKpkeyutl -derive -inkey t/privkey1.pem -peerkey t/pubkey2.pem -out t/secret1zKpkeyutl -derive -inkey t/privkey2.pem -peerkey t/pubkey1.pem -out t/secret2z	t/secret1rb)r   r   r   r   r   openssl_nameOPENSSL_SUPPORTED_CURVESr   findr   ospathisdirshutilrmtreemkdirr   openreadr   r   from_pem	to_stringr   writeto_pemr   r    lenverifying_key_length)r   hlpr!   r"   r?   keyvk1vk2r#   r$   ssl_secret1ssl_secret2s   &           r%   test_ecdh_with_opensslr   x  sB    &,,	**?@"::69L9LLM</*88I!#KKKL 
ww}}ScHHSM69L9LL 69L9LL BCvEvE			1ffh 
 	s#			1ffh 
 	s#	o		!ffh 




$C==?e224>>@@@@



 C	ot	$	$	

 
% 
""3'	""3'//1G//1GU U 
k4	 	 Affh 
!	k4	 	 Affh 
! {syy==BBBBw<39999Q>>>>+%%%!!!m  <:;<  
 		 
 		 
		
 
%	$	$" 
!	 	 	 	 	 sZ   7O >O5;P	8P> P1QQ!O21O25P		P	P.	1Q	Q	Q*	):r   sysr   r   r   binasciir   	unittest2unittestImportErrorr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   keysr   r   ellipticcurver   argvmarkparametrizenamer&   r/   r4   TestCaser6   rZ   r`   paramr   r   r   r   r   r   r   r   	Exceptionr   r   setr   r   slowr   r   s   0r%   <module>r      s   	 
     	 	 	   + $ sxx#F 
!'((  


	,#7x   #7L,,," $>?>	
 	>?>	
 	>?>	
 	>?>	
 	>?>	
 	>?>	
 	FGF	
 	NON	
 	NON	
 	NON	
 	NON	
 	NON	
 	NON	
 	???	
 	QQQ	
kADJ-KDJ-% 3 ! R  D55	i 	   /066t<   
!'((  
C" C"i  @ 	)d
 	)s   K K!'K&KK