Ë
    V.j÷™  ã                   ó¼  — 	 d dl Z	 e d dlZd dlZd dlZd dl	Z	ddl
mZmZmZmZ ddlmZmZmZmZmZmZmZ ddlmZmZmZmZmZmZ ddlmZm Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*  G d	„ d
ejV                  «      Z, G d„ dejV                  «      Z- G d„ dejV                  «      Z. G d„ dejV                  «      Z/dZ0 ee0«      Z1 e2e1e3«      sJ ‚ ejh                  e1«      Z5e5jl                  Z7dZ8 e9e8«      dz  d k(  sJ ‚ e	jt                  «       Z:e:jw                  e8«       e:jy                  «       Z= e2e=e3«      sJ ‚e5j}                  e8e¬«      Z? e2e?e3«      sJ ‚e5j}                  e8e¬«      Z@ e2e@e3«      sJ ‚e5j}                  e8e¬«      ZA e2eAd    e3«      sJ ‚g ZBdd„ fdefdeCfdd„ fdd„ fdd„ fdd „ fd!d"„ ffD ]�  \  ZDZEd#eDv rd$„ ZFneEZFd%e?ed&„ fd'e@ed(„ fd)eAed*„ ffD ]g  \  ZGZHZIZJd+e7j–                  e8fd,e7j˜                  e=ffD ]?  \  ZMZNZOeBj¡                   ej¢                  eHeIeJeEeNeOd-j¥                  eDeGeM«      ¬.«      «       ŒA Œi Œ� ej¦                  j©                  d/eB«      d0„ «       ZUd1ZV e9eV«      d2k(  sJ ‚g ZWdd3„ fdefdeCfdd4„ fdd5„ fdd6„ fdd7„ fd!d8„ ffD ](  \  ZDZXeWj¡                   ej¢                  eXeD¬.«      «       Œ* ej¦                  j©                  d9eW«      d:„ «       ZYdZ0 ee0«      Z1 e2e1e3«      sJ ‚ej¦                  j©                  d9eWdd; «      d<„ «       ZZd=Z[ej¦                  j©                  d9eW«      d>„ «       Z\ej¦                  j©                  d9eW«      d?„ «       Z]ej¦                  j©                  d9eW«      d@„ «       Z^ej¦                  j©                  d9eW«      dA„ «       Z_dB„ Z`dC„ ZadD„ ZbdE„ ZcdF„ Zdy# e$ r d dlZY �ŒÆw xY w# e$ r eZY �ŒÑw xY w)Gé    Né   )ÚVerifyingKeyÚ
SigningKeyÚMalformedPointErrorÚBadSignatureError)ÚunpemÚUnexpectedDERÚencode_sequenceÚ
encode_oidÚencode_bitstringÚencode_integerÚencode_octet_string)Úsigencode_stringÚsigencode_derÚsigencode_stringsÚsigdecode_stringÚsigdecode_derÚsigdecode_strings)ÚNIST256pÚCurveÚBRAINPOOLP160r1ÚEd25519ÚEd448)ÚPointÚPointJacobiÚCurveFpÚINFINITY)Úgenerator_brainpoolp160r1c                   ón   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestVerifyingKeyFromStringzc
    Verify that ecdsa.keys.VerifyingKey.from_string() can be used with
    bytes-like objects
    c                 óZ   — d| _         t        j                  | j                   «      | _        y )Ns0   L¢•ÛÇZ×“
zÏ—Ï×ÂÙoþ8}X!®Ôúhú^pIºÑYû’xaëo+œGúvÊ)Ú	key_bytesr   Úfrom_stringÚvk)Úclss    úQC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\ecdsa/test_keys.pyÚ
setUpClassz%TestVerifyingKeyFromString.setUpClass2   s&   € ð/ð 	Œô
 ×)Ñ)¨#¯-©-Ó8ˆ�ó    c                 ór  — | j                  | j                  «       | j                  | j                  t        «       | j	                  | j                  j
                  j                  j                  «       d«       | j	                  | j                  j
                  j                  j                  «       d«       y )Nl   !Xúpø?Ë|}ùr³…IWµoWeD l   Êvôq.y[Or~Vh]Ip<é#Ó'í
)	ÚassertIsNotNoner$   ÚassertIsInstancer   ÚassertEqualÚpubkeyÚpointÚxÚy©Úselfs    r&   Ú
test_bytesz%TestVerifyingKeyFromString.test_bytes;   s€   € Ø×Ñ˜TŸW™WÔ%Ø×Ñ˜dŸg™g¤|Ô4Ø×ÑØ�G‰G�N‰N× Ñ ×"Ñ"Ó$ØEô	
ð 	×ÑØ�G‰G�N‰N× Ñ ×"Ñ"Ó$ØFõ	
r(   c                 óÄ   — t        j                  t        | j                  «      «      }| j	                  | j
                  j                  «       |j                  «       «       y ©N)r   r#   Úbufferr"   r,   r$   Ú	to_string©r2   r$   s     r&   Útest_bytes_memoryviewz0TestVerifyingKeyFromString.test_bytes_memoryviewG   s>   € Ü×%Ñ%¤f¨T¯^©^Ó&<Ó=ˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óÄ   — t        j                  t        | j                  «      «      }| j	                  | j
                  j                  «       |j                  «       «       y r5   ©r   r#   Ú	bytearrayr"   r,   r$   r7   r8   s     r&   Útest_bytearrayz)TestVerifyingKeyFromString.test_bytearrayL   s>   € Ü×%Ñ%¤i°·±Ó&?Ó@ˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óÖ   — t        j                  t        t        | j                  «      «      «      }| j                  | j                  j                  «       |j                  «       «       y r5   )r   r#   r6   r<   r"   r,   r$   r7   r8   s     r&   Útest_bytesarray_memoryviewz5TestVerifyingKeyFromString.test_bytesarray_memoryviewQ   sC   € Ü×%Ñ%¤f¬Y°t·~±~Ó-FÓ&GÓHˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óÞ   — t        j                   d| j                  «      }t        j                  |«      }| j	                  | j
                  j                  «       |j                  «       «       y ©NÚB©Úarrayr"   r   r#   r,   r$   r7   ©r2   Úarrr$   s      r&   Útest_array_array_of_bytesz4TestVerifyingKeyFromString.test_array_array_of_bytesV   óI   € Ü�k‰k˜#˜tŸ~™~Ó.ˆÜ×%Ñ% cÓ*ˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óð   — t        j                   d| j                  «      }t        j                  t	        |«      «      }| j                  | j                  j                  «       |j                  «       «       y rA   ©rD   r"   r   r#   r6   r,   r$   r7   rE   s      r&   Ú$test_array_array_of_bytes_memoryviewz?TestVerifyingKeyFromString.test_array_array_of_bytes_memoryview\   óM   € Ü�k‰k˜#˜tŸ~™~Ó.ˆÜ×%Ñ%¤f¨S£kÓ2ˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óÞ   — t        j                   d| j                  «      }t        j                  |«      }| j	                  | j
                  j                  «       |j                  «       «       y ©NÚIrC   rE   s      r&   Útest_array_array_of_intsz3TestVerifyingKeyFromString.test_array_array_of_intsb   rH   r(   c                 óð   — t        j                   d| j                  «      }t        j                  t	        |«      «      }| j                  | j                  j                  «       |j                  «       «       y rN   rJ   rE   s      r&   Ú#test_array_array_of_ints_memoryviewz>TestVerifyingKeyFromString.test_array_array_of_ints_memoryviewh   rL   r(   c                 ó¸   — t        j                  d| j                  z   «      }| j                  | j                  j                  «       |j                  «       «       y ©Nó   ©r   r#   r"   r,   r$   r7   r8   s     r&   Útest_bytes_uncompressedz2TestVerifyingKeyFromString.test_bytes_uncompressedn   s>   € Ü×%Ñ% g°·±Ñ&>Ó?ˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óÊ   — t        j                  t        d| j                  z   «      «      }| j	                  | j
                  j                  «       |j                  «       «       y rT   r;   r8   s     r&   Útest_bytearray_uncompressedz6TestVerifyingKeyFromString.test_bytearray_uncompresseds   sC   € Ü×%Ñ%¤i°¸$¿.¹.Ñ0HÓ&IÓJˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 ó¾   — t        j                  d| j                  d d z   «      }| j                  | j                  j                  «       |j                  «       «       y ©Nó   é   rV   r8   s     r&   Útest_bytes_compressedz0TestVerifyingKeyFromString.test_bytes_compressedx   sE   € Ü×%Ñ% g°·±¸sÀÐ0CÑ&CÓDˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óÐ   — t        j                  t        d| j                  d d z   «      «      }| j	                  | j
                  j                  «       |j                  «       «       y r[   r;   r8   s     r&   Útest_bytearray_compressedz4TestVerifyingKeyFromString.test_bytearray_compressed}   sJ   € Ü×%Ñ%¤i°¸$¿.¹.ÈÈ"Ð:MÑ0MÓ&NÓOˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óŒ   — | j                  t        «      5  t        j                  dt        «       d d d «       y # 1 sw Y   y xY w)Ns   AAA)ÚassertRaisesr   r   r#   r   r1   s    r&   Ú.test_ed25519_VerifyingKey_from_string_importedzITestVerifyingKeyFromString.test_ed25519_VerifyingKey_from_string_imported‚   s-   € Ø×ÑÔ2Õ3Ü×$Ñ$ V¬WÔ5÷ 4×3Ñ3ús	   –:ºAN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr'   r3   r9   r=   r?   rG   rK   rP   rR   rW   rY   r^   r`   rc   © r(   r&   r    r    ,   s\   „ ñð
 ñ9ó ð9ò

ò>ò
>ò
>ò
>ò>ò>ò>ò>ò
>ò
>ò
>ó
6r(   r    c                   óì   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d „ Z#d!„ Z$d"„ Z%d#„ Z&d$„ Z'y%)&ÚTestVerifyingKeyFromDerza
    Verify that ecdsa.keys.VerifyingKey.from_der() can be used with
    bytes-like objects.
    c                 ób  — d}d}|| _         t        |«      | _        t        | j                  t        «      sJ ‚t        j                  |«      | _        t        j                  |«      | _	        d}t        j                  |«      | _
        t        j                  t        j                  «      | _        y )NúÃ-----BEGIN EC PRIVATE KEY-----
MF8CAQEEGF7IQgvW75JSqULpiQQ8op9WH6Uldw6xxaAKBggqhkjOPQMBAaE0AzIA
BLiBd9CE7xf15FY5QIAoNg+fWbSk1yZOYtoGUdzkejWkxbRc9RWTQjqLVXucIJnz
bA==
-----END EC PRIVATE KEY-----
zš-----BEGIN PUBLIC KEY-----
MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAEuIF30ITvF/XkVjlAgCg2D59ZtKTX
Jk5i2gZR3OR6NaTFtFz1FZNCOotVe5wgmfNs
-----END PUBLIC KEY-----
z²-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4H3iRbG4TSrsSRb/gusPQB/4YcN8
Poqzgjau4kfxBPyZimeRfuY/9g/wMmPuhGl4BUve51DsnKJFRr8psk0ieA==
-----END PUBLIC KEY-----
)Úkey_pemr   r"   Ú
isinstanceÚbytesr   Úfrom_pemr$   r   ÚskÚvk2ÚgenerateÚcurveÚsk2)r%   Úprv_key_strÚkey_strs      r&   r'   z"TestVerifyingKeyFromDer.setUpClass�   s–   € ð-ð 	ð)ð 	ð ˆŒä˜g›ˆŒÜ˜#Ÿ-™-¬Ô/Ð/Ð/Ü×&Ñ& wÓ/ˆŒÜ×$Ñ$ [Ó1ˆŒð)ð 	ô ×'Ñ'¨Ó0ˆŒä×%Ñ%¤b§h¡hÓ/ˆ�r(   c                 óŒ   — d}t        j                  |«      }t        j                  dt        ¬«      }| j	                  ||«       y )Náú  -----BEGIN PUBLIC KEY-----
MIIBSzCCAQMGByqGSM49AgEwgfcCAQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAA
AAAAAAAAAAAA////////////////MFsEIP////8AAAABAAAAAAAAAAAAAAAA////
///////////8BCBaxjXYqjqT57PrvVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMVAMSd
NgiG5wSTamZ44ROdJreBn36QBEEEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5
RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA
//////////+85vqtpxeehPO5ysL8YyVRAgEBA0IABIr1UkgYs5jmbFc7it1/YI2X
T//IlaEjMNZft1owjqpBYH2ErJHk4U5Pp4WvWq1xmHwIZlsH7Ig4KmefCfR6SmU=
-----END PUBLIC KEY-----sA   ŠõRH³˜ælW;ŠÝ`�—OÿÈ•¡#0Ö_·Z0ŽªA`}„¬‘äáNO§…¯Z­q˜|f[ìˆ8*gŸ	ôzJe©ru   )r   rq   r#   r   r,   )r2   Úpub_key_strÚpkÚpk_exps       r&   Ú&test_load_key_with_explicit_parametersz>TestVerifyingKeyFromDer.test_load_key_with_explicit_parameters­   sJ   € ð'ð 	ô ×"Ñ" ;Ó/ˆä×)Ñ)ð$ô
 ô
ˆð 	×Ñ˜˜VÕ$r(   c                 óŒ   — d}| j                  t        «      5  t        j                  |dg¬«       d d d «       y # 1 sw Y   y xY w)Nrz   Únamed_curve©Úvalid_curve_encodings)rb   r	   r   rq   )r2   r|   s     r&   Ú2test_load_key_with_explicit_with_explicit_disabledzJTestVerifyingKeyFromDer.test_load_key_with_explicit_with_explicit_disabledÅ   s=   € ð'ð 	ð ×Ñœ}Õ-Ü×!Ñ!Ø°M°?õ÷ .×-Ñ-úó	   ˜:ºAc                 óæ   — | j                  t        «      5 }t        j                  | j                  dg¬«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)NÚraw)Úvalid_encodingszenabled (raw) encodings)rb   r   r   Úfrom_derr"   ÚassertInÚstrÚ	exception©r2   Úes     r&   Ú"test_load_key_with_disabled_formatz:TestVerifyingKeyFromDer.test_load_key_with_disabled_formatÖ   sQ   € Ø×ÑÔ2Ô3°qÜ×!Ñ! $§.¡.À5À'ÕJ÷ 4ð 	�‰Ð/´°Q·[±[Ó1AÕB÷ 4Ð3ús   –#A'Á'A0c                 ó´   — t        j                  | j                  t        j                  «      }| j                  |j                  t        j                  «       y r5   )r   r‰   r"   ÚhashlibÚsha256ÚassertIsÚdefault_hashfuncr8   s     r&   Útest_custom_hashfuncz,TestVerifyingKeyFromDer.test_custom_hashfuncÜ   s4   € Ü×"Ñ" 4§>¡>´7·>±>ÓBˆà�‰�b×)Ñ)¬7¯>©>Õ:r(   c                 ó´   — t        j                  | j                  t        j                  «      }| j                  |j                  t        j                  «       y r5   )r   rq   rn   r‘   r’   r“   r”   r8   s     r&   Ú"test_from_pem_with_custom_hashfuncz:TestVerifyingKeyFromDer.test_from_pem_with_custom_hashfuncá   s4   € Ü×"Ñ" 4§<¡<´·±Ó@ˆà�‰�b×)Ñ)¬7¯>©>Õ:r(   c                 ó²   — t        j                  | j                  «      }| j                  | j                  j                  «       |j                  «       «       y r5   )r   r‰   r"   r,   r$   r7   r8   s     r&   r3   z"TestVerifyingKeyFromDer.test_bytesæ   s9   € Ü×"Ñ" 4§>¡>Ó2ˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óÄ   — t        j                  t        | j                  «      «      }| j	                  | j
                  j                  «       |j                  «       «       y r5   )r   r‰   r6   r"   r,   r$   r7   r8   s     r&   r9   z-TestVerifyingKeyFromDer.test_bytes_memoryviewë   s>   € Ü×"Ñ"¤6¨$¯.©.Ó#9Ó:ˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óÄ   — t        j                  t        | j                  «      «      }| j	                  | j
                  j                  «       |j                  «       «       y r5   )r   r‰   r<   r"   r,   r$   r7   r8   s     r&   r=   z&TestVerifyingKeyFromDer.test_bytearrayð   s>   € Ü×"Ñ"¤9¨T¯^©^Ó#<Ó=ˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óÖ   — t        j                  t        t        | j                  «      «      «      }| j                  | j                  j                  «       |j                  «       «       y r5   )r   r‰   r6   r<   r"   r,   r$   r7   r8   s     r&   r?   z2TestVerifyingKeyFromDer.test_bytesarray_memoryviewõ   sC   € Ü×"Ñ"¤6¬)°D·N±NÓ*CÓ#DÓEˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óÞ   — t        j                   d| j                  «      }t        j                  |«      }| j	                  | j
                  j                  «       |j                  «       «       y rA   )rD   r"   r   r‰   r,   r$   r7   rE   s      r&   rG   z1TestVerifyingKeyFromDer.test_array_array_of_bytesú   sI   € Ü�k‰k˜#˜tŸ~™~Ó.ˆÜ×"Ñ" 3Ó'ˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óð   — t        j                   d| j                  «      }t        j                  t	        |«      «      }| j                  | j                  j                  «       |j                  «       «       y rA   )rD   r"   r   r‰   r6   r,   r$   r7   rE   s      r&   rK   z<TestVerifyingKeyFromDer.test_array_array_of_bytes_memoryview   sM   € Ü�k‰k˜#˜tŸ~™~Ó.ˆÜ×"Ñ"¤6¨#£;Ó/ˆà×Ñ˜Ÿ™×*Ñ*Ó,¨b¯l©l«nÕ=r(   c                 óp   — | j                  | j                  | j                  j                  «       k(  «       y r5   )Ú
assertTruer$   rr   Úget_verifying_keyr1   s    r&   Útest_equality_on_verifying_keysz7TestVerifyingKeyFromDer.test_equality_on_verifying_keys  s$   € Ø�‰˜Ÿ™ 4§7¡7×#<Ñ#<Ó#>Ñ>Õ?r(   c                 óT   — | j                  | j                  | j                  k(  «       y r5   )ÚassertFalser$   rs   r1   s    r&   Ú!test_inequality_on_verifying_keysz9TestVerifyingKeyFromDer.test_inequality_on_verifying_keys	  s   € Ø×Ñ˜Ÿ™ D§H¡HÑ,Õ-r(   c                 ó@   — | j                  | j                  d k(  «       y r5   )r£   r$   r1   s    r&   Ú1test_inequality_on_verifying_keys_not_implementedzITestVerifyingKeyFromDer.test_inequality_on_verifying_keys_not_implemented  s   € Ø×Ñ˜Ÿ™ D™Õ)r(   c                 ód   — | j                  | j                  | j                  j                  «       y r5   )ÚassertNotEqualr$   rv   Úverifying_keyr1   s    r&   Ú*test_VerifyingKey_inequality_on_same_curvezBTestVerifyingKeyFromDer.test_VerifyingKey_inequality_on_same_curve  s    € Ø×Ñ˜DŸG™G T§X¡X×%;Ñ%;Õ<r(   c                 óP   — | j                  | j                  | j                  «       y r5   )r¨   rr   rv   r1   s    r&   Ú(test_SigningKey_inequality_on_same_curvez@TestVerifyingKeyFromDer.test_SigningKey_inequality_on_same_curve  s   € Ø×Ñ˜DŸG™G T§X¡XÕ.r(   c                 óT   — | j                  | j                  | j                  k(  «       y r5   )r£   r$   rr   r1   s    r&   Útest_inequality_on_wrong_typesz6TestVerifyingKeyFromDer.test_inequality_on_wrong_types  s   € Ø×Ñ˜Ÿ™ D§G¡GÑ+Õ,r(   c                 óB  — | j                   j                  j                  }t        |j	                  «       |j                  «       |j                  «       «      }t        j                  || j                   j                  «      }| j                  || j                   k(  «       y r5   )
r$   r-   r.   r   ru   r/   r0   r   Úfrom_public_pointrŸ   )r2   Úpjr.   r$   s       r&   Útest_from_public_point_oldz2TestVerifyingKeyFromDer.test_from_public_point_old  sc   € Ø�W‰W�^‰^×!Ñ!ˆÜ�b—h‘h“j "§$¡$£&¨"¯$©$«&Ó1ˆä×+Ñ+¨E°4·7±7·=±=ÓAˆà�‰˜˜dŸg™g™Õ&r(   c                 ó¾   — t        j                  t        j                  j	                  «       t        «      }t        |j                  «      }| j                  d|«       y )NzŸVerifyingKey.from_string(bytearray(b'K\x0c\xfbZH\x8e\x8c\x8c\x07\xee\xda\xfb\xe1\x97\xcd\x90\x18\x02\x15h]\xfe\xbe\xcbB\xba\xe6r\x10\xae\xf1P'), Ed25519, None))r   r#   r   Ú	generatorÚto_bytesÚreprr©   r,   )r2   rr   Ústrings      r&   Ú test_ed25519_VerifyingKey_repr__z8TestVerifyingKeyFromDer.test_ed25519_VerifyingKey_repr__   sK   € Ü×#Ñ#¤G×$5Ñ$5×$>Ñ$>Ó$@Ä'ÓJˆÜ�b×&Ñ&Ó'ˆà×Ñð1ð õ	
r(   c                 óö   — t         j                  }| j                  t        «      5 }t	        j
                  |t         «       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nzincompatible with Edwards)	r   r´   rb   Ú
ValueErrorr   r°   rŠ   r‹   rŒ   )r2   r.   rŽ   s      r&   Útest_edwards_from_public_pointz6TestVerifyingKeyFromDer.test_edwards_from_public_point,  sU   € Ü×!Ñ!ˆØ×ÑœzÔ*¨aÜ×*Ñ*¨5´'Ô:÷ +ð 	�‰Ð1´3°q·{±{Ó3CÕD÷ +Ð*ús   ¦A/Á/A8c                 ó  — t        j                  t        j                  j	                  «       t        «      }|j
                  }t        j                  |j                  «       t        «      }|j                  «        | j                  ||«       y r5   )
r   r#   r   r´   rµ   r©   r   r7   Ú
precomputer,   ©r2   rr   r$   rs   s       r&   Ú&test_edwards_precompute_no_side_effectz>TestVerifyingKeyFromDer.test_edwards_precompute_no_side_effect3  s_   € Ü×#Ñ#¤G×$5Ñ$5×$>Ñ$>Ó$@Ä'ÓJˆØ×ÑˆÜ×&Ñ& r§|¡|£~´wÓ?ˆØ
�‰Œà×Ñ˜˜SÕ!r(   c           	      ó’  — t        t        t        t        j                  Ž «      t	        t        t        j                  j                  «       «      d«      t	        dd«      «      }| j                  t        «      5 }t        j                  |«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nr   ó    ztrailing junk after public key)r
   r   r   Úoidr   rp   r´   rµ   rb   r	   r   r‰   rŠ   r‹   rŒ   ©r2   Úder_strrŽ   s      r&   Ú$test_parse_malfomed_eddsa_der_pubkeyz<TestVerifyingKeyFromDer.test_parse_malfomed_eddsa_der_pubkey;  s�   € Ü!ÜœJ¬¯©Ð4Ó5ÜœU¤7×#4Ñ#4×#=Ñ#=Ó#?Ó@À!ÓDÜ˜W aÓ(ó
ˆð ×Ñœ}Ô-°Ü×!Ñ! 'Ô*÷ .ð 	�‰Ð6¼¸A¿K¹KÓ8HÕI÷ .Ð-ús   Á9B=Â=Cc                 óØ   — | j                  t        «      5 }t        j                  ddt        «       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w©Nr(   zunsupported for Edwards)rb   rº   r   Úfrom_public_key_recoveryr   rŠ   r‹   rŒ   r�   s     r&   Ú%test_edwards_from_public_key_recoveryz=TestVerifyingKeyFromDer.test_edwards_from_public_key_recoveryG  sL   € Ø×ÑœzÔ*¨aÜ×1Ñ1°#°s¼GÔD÷ +ð 	�‰Ð/´°Q·[±[Ó1AÕB÷ +Ð*úó   –A Á A)c                 óØ   — | j                  t        «      5 }t        j                  ddt        «       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY wrÇ   )rb   rº   r   Ú$from_public_key_recovery_with_digestr   rŠ   r‹   rŒ   r�   s     r&   Ú1test_edwards_from_public_key_recovery_with_digestzITestVerifyingKeyFromDer.test_edwards_from_public_key_recovery_with_digestM  sO   € Ø×ÑœzÔ*¨aÜ×=Ñ=Ø�Sœ'ô÷ +ð
 	�‰Ð/´°Q·[±[Ó1AÕB÷ +Ð*úrÊ   c                 ó  — d}t        j                  |«      }| j                  |j                  t        «       | j                  |j                  t        «       d}t        j                  |t        «      }| j                  ||«       y )Núq-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEAIwBQ0NZkIiiO41WJfm5BV42u3kQm7lYnvIXmCy8qy2U=
-----END PUBLIC KEY-----
ó    # PÐÖd"(ŽãU‰~nAW�®ÞD&îV'¼…æ/*Ëe)	r   rq   r+   ru   r   r“   r   r#   r,   )r2   Úvk_pemr$   Úvk_strÚvk_2s        r&   Útest_load_ed25519_from_pemz2TestVerifyingKeyFromDer.test_load_ed25519_from_pemU  ss   € ð)ð 	ô ×"Ñ" 6Ó*ˆà×Ñ˜bŸh™h¬Ô.Ø�‰�b—h‘h¤Ô(ðPð 	ô
 ×'Ñ'¨´Ó8ˆà×Ñ˜˜TÕ"r(   c                 ó€   — d}t        j                  |t        «      }d}| j                  ||j	                  «       «       y )NrÐ   sq   -----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEAIwBQ0NZkIiiO41WJfm5BV42u3kQm7lYnvIXmCy8qy2U=
-----END PUBLIC KEY-----
)r   r#   r   r,   Úto_pem©r2   rÒ   r$   rÑ   s       r&   Útest_export_ed255_to_pemz0TestVerifyingKeyFromDer.test_export_ed255_to_pemj  sC   € ðPð 	ô
 ×%Ñ% f¬gÓ6ˆð*ð 	ð 	×Ñ˜ §¡£Õ-r(   c                 ó€   — d}t        j                  |t        «      }d}| j                  ||j	                  «       «       y )NrÐ   sQ   ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICMAUNDWZCIojuNViX5uQVeNrt5EJu5WJ7yF5gsvKstl
)r   r#   r   r,   Úto_ssh)r2   rÒ   r$   Úvk_sshs       r&   Útest_export_ed255_to_sshz0TestVerifyingKeyFromDer.test_export_ed255_to_sshz  s<   € ðPð 	ô
 ×%Ñ% f¬gÓ6ˆàfˆà×Ñ˜ §¡£Õ-r(   c                 ó¸   — t        j                  t        «      }|j                  }t	        j
                  |j                  «       «      }| j                  ||«       y r5   )r   rt   r   r©   r   rq   rÖ   r,   r¾   s       r&   Útest_ed25519_export_importz2TestVerifyingKeyFromDer.test_ed25519_export_import†  sC   € Ü× Ñ ¤Ó)ˆØ×Ñˆä×#Ñ# B§I¡I£KÓ0ˆà×Ñ˜˜SÕ!r(   c                 ó|   — d}t        j                  |«      }d}d}| j                  |j                  ||«      «       y )NrÏ   ó   data
s@   dG«j3ÍyE­˜l¹ò ë�ÖPãÇ�Ÿ`ìuà/'Ó–ÚèXàþF\�ïPì)Ÿ®Õ­F<‘hƒMê�¨y©r   rq   rŸ   Úverify©r2   rÑ   r$   ÚdataÚsigs        r&   Útest_ed25519_sig_verifyz/TestVerifyingKeyFromDer.test_ed25519_sig_verifyŽ  sG   € ð)ð 	ô ×"Ñ" 6Ó*ˆàˆðPð 	ð 	�‰˜Ÿ	™	 # tÓ,Õ-r(   c                 ó²   — d}t        j                  |«      }d}d}| j                  t        «      5  |j	                  ||«       d d d «       y # 1 sw Y   y xY w)NrÏ   rà   s@   ªG«j3ÍyE­˜l¹ò ë�ÖPãÇ�Ÿ`ìuà/'Ó–ÚèXàþF\�ïPì)Ÿ®Õ­F<‘hƒMê�¨y)r   rq   rb   r   râ   rã   s        r&   Ú!test_ed25519_sig_verify_malformedz9TestVerifyingKeyFromDer.test_ed25519_sig_verify_malformed£  sY   € ð)ð 	ô ×"Ñ" 6Ó*ˆàˆðPð 	ð ×ÑÔ0Õ1Ø�I‰I�c˜4Ô ÷ 2×1Ñ1ús   ±AÁAc                 ó  — d}t        j                  |«      }| j                  |j                  t        «       | j                  |j                  t        «       d}t        j                  |t        «      }| j                  ||«       y )Nú’-----BEGIN PUBLIC KEY-----
MEMwBQYDK2VxAzoAeQtetSu7CMEzE+XWB10Bg47LCA0giNikOxHzdp+tZ/eK/En0
dTdYD2ll94g58MhSnBiBQB9A1MMA
-----END PUBLIC KEY-----
ó9   y^µ+»Á3åÖ]ƒŽË ˆØ¤;óvŸ­g÷ŠüIôu7Xie÷ˆ9ðÈRœ�@@ÔÃ )	r   rq   r+   ru   r   r“   r   r#   r,   )r2   Úpem_strr$   rÒ   rs   s        r&   Útest_ed448_from_pemz+TestVerifyingKeyFromDer.test_ed448_from_pem¹  sr   € ð)ð 	ô ×"Ñ" 7Ó+ˆà×Ñ˜bŸh™h¬Ô.Ø�‰�b—h‘h¤Ô&ð4ð 	ô ×&Ñ& v¬uÓ5ˆà×Ñ˜˜SÕ!r(   c                 ó€   — d}t        j                  |t        «      }d}| j                  ||j	                  «       «       y )Nrë   s’   -----BEGIN PUBLIC KEY-----
MEMwBQYDK2VxAzoAeQtetSu7CMEzE+XWB10Bg47LCA0giNikOxHzdp+tZ/eK/En0dTdYD2ll94g5
8MhSnBiBQB9A1MMA
-----END PUBLIC KEY-----
)r   r#   r   r,   rÖ   r×   s       r&   Útest_ed448_to_pemz)TestVerifyingKeyFromDer.test_ed448_to_pemÑ  sB   € ð4ð 	ô ×%Ñ% f¬eÓ4ˆð*ð 	ð 	×Ñ˜ §¡£Õ-r(   c                 ó¸   — t        j                  t        «      }|j                  }t	        j
                  |j                  «       «      }| j                  ||«       y r5   )r   rt   r   r©   r   rq   rÖ   r,   r¾   s       r&   Útest_ed448_export_importz0TestVerifyingKeyFromDer.test_ed448_export_importã  sC   € Ü× Ñ ¤Ó'ˆØ×Ñˆä×#Ñ# B§I¡I£KÓ0ˆà×Ñ˜˜SÕ!r(   c                 ó|   — d}t        j                  |«      }d}d}| j                  |j                  ||«      «       y )Nrê   rà   sr   hí,p5"Ê5óªQ3= À®°TÅÜo0W´ËéìúÈE>QÁË`jÐC_›ú2ˆ²8kí¬	 x±{]~ø1Ý?˜ ÎçØŸ0¬/ÔU¿!˜öLŒ¾�¥-€LbS‘Õî0ÆfKž�@Ð­®
 rá   )r2   rì   r$   rä   rå   s        r&   Útest_ed448_sig_verifyz-TestVerifyingKeyFromDer.test_ed448_sig_verifyë  sF   € ð)ð 	ô ×"Ñ" 7Ó+ˆàˆðð 	ð 	�‰˜Ÿ	™	 # tÓ,Õ-r(   N)(rd   re   rf   rg   rh   r'   r   r„   r�   r•   r—   r3   r9   r=   r?   rG   rK   r¡   r¤   r¦   rª   r¬   r®   r²   r¸   r»   r¿   rÅ   rÉ   rÍ   rÔ   rØ   rÜ   rÞ   ræ   rè   rí   rï   rñ   ró   ri   r(   r&   rk   rk   ‡   sË   „ ñð
 ñ0ó ð0ò>%ò0ò"Cò;ò
;ò
>ò
>ò
>ò
>ò
>ò>ò@ò.ò*ò=ò/ò-ò'ò

òEò"ò
JòCòCò#ò*.ò 
.ò"ò.ò*!ò,"ò0.ò$"ó.r(   rk   c                   ó¼   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestSigningKeyz_
    Verify that ecdsa.keys.SigningKey.from_der() can be used with
    bytes-like objects.
    c                 ó¬   — d}t        j                  |«      | _        d}t        j                  |«      | _        d}t        j                  |«      | _        y )Nrm   zÑ-----BEGIN PRIVATE KEY-----
MG8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQEEVTBTAgEBBBheyEIL1u+SUqlC6YkE
PKKfVh+lJXcOscWhNAMyAAS4gXfQhO8X9eRWOUCAKDYPn1m0pNcmTmLaBlHc5Ho1
pMW0XPUVk0I6i1V7nCCZ82w=
-----END PRIVATE KEY-----
zã-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIKlL2EAm5NPPZuXwxRf4nXMk0A80y6UUbiQ17be/qFhRoAoGCCqGSM49
AwEHoUQDQgAE4H3iRbG4TSrsSRb/gusPQB/4YcN8Poqzgjau4kfxBPyZimeRfuY/
9g/wMmPuhGl4BUve51DsnKJFRr8psk0ieA==
-----END EC PRIVATE KEY-----
)r   rq   Úsk1Ú	sk1_pkcs8rv   )r%   rw   s     r&   r'   zTestSigningKey.setUpClass  s\   € ð-ð 	ô ×%Ñ% kÓ2ˆŒð*ð 	ô #×+Ñ+¨KÓ8ˆŒð-ð 	ô ×%Ñ% kÓ2ˆ�r(   c                 ó\   — | j                  | j                  j                  d¬«      d«       y )NÚpkcs8©Úformatsq   0o0*†HÎ=*†HÎ=U0S^ÈBÖï’R©Bé‰<¢ŸV¥%w±Å¡42 ¸�wÐ„ïõäV9@€(6ŸY´¤×&NbÚQÜäz5¤Å´\õ“B:‹U{œ ™ól)r,   r÷   Úto_derr1   s    r&   Útest_to_der_pkcs8z TestSigningKey.test_to_der_pkcs8)  s'   € Ø×ÑØ�H‰H�O‰O 7ˆOÓ+ð$õ	
r(   c                 óŒ   — d}t        j                  |«      }t        j                  dt        ¬«      }| j	                  ||«       y )Ná:  -----BEGIN PRIVATE KEY-----
MIIBeQIBADCCAQMGByqGSM49AgEwgfcCAQEwLAYHKoZIzj0BAQIhAP////8AAAAB
AAAAAAAAAAAAAAAA////////////////MFsEIP////8AAAABAAAAAAAAAAAAAAAA
///////////////8BCBaxjXYqjqT57PrvVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMV
AMSdNgiG5wSTamZ44ROdJreBn36QBEEEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg
9KE5RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9QIhAP////8A
AAAA//////////+85vqtpxeehPO5ysL8YyVRAgEBBG0wawIBAQQgIXtREfUmR16r
ZbmvDGD2lAEFPZa2DLPyz0czSja58yChRANCAASK9VJIGLOY5mxXO4rdf2CNl0//
yJWhIzDWX7daMI6qQWB9hKyR5OFOT6eFr1qtcZh8CGZbB+yIOCpnnwn0ekpl
-----END PRIVATE KEY-----
s    !{Qõ&G^«e¹¯`ö”=–¶³òÏG3J6¹ó r{   )r   rq   r#   r   r,   )r2   rw   rr   rv   s       r&   Ú'test_decoding_explicit_curve_parametersz6TestSigningKey.test_decoding_explicit_curve_parameters4  sJ   € ð	*ð 	ô × Ñ  Ó-ˆä×$Ñ$ðô ô	
ˆð 	×Ñ˜˜SÕ!r(   c                 óŒ   — d}| j                  t        «      5  t        j                  |dg¬«       d d d «       y # 1 sw Y   y xY w)Nr   r�   r‚   )rb   r	   r   rq   )r2   rw   s     r&   Ú>test_decoding_explicit_curve_parameters_with_explicit_disabledzMTestSigningKey.test_decoding_explicit_curve_parameters_with_explicit_disabledM  s=   € ð	*ð 	ð ×Ñœ}Õ-Ü×ÑØ°M°?õ÷ .×-Ñ-úr…   c                 ó  — t        j                  | j                  j                  j                  | j                  j
                  «      }| j                  | j                  |«       | j                  | j                  |«       y r5   )r   Úfrom_secret_exponentr÷   ÚprivkeyÚsecret_multiplierru   r,   rø   ©r2   rr   s     r&   Útest_equality_on_signing_keysz,TestSigningKey.test_equality_on_signing_keys`  sY   € Ü×,Ñ,Ø�H‰H×Ñ×.Ñ.°·±·±ó
ˆð 	×Ñ˜Ÿ™ 2Ô&Ø×Ñ˜Ÿ™¨Õ,r(   c                 óÊ   — | j                   j                  d«      }| j                  |«       | j                   j                  }| j                  |j	                  |d«      «       y )Nr(   )r÷   ÚsignrŸ   r©   râ   ©r2   rå   r$   s      r&   Útest_verify_with_empty_messagez-TestSigningKey.test_verify_with_empty_messageg  sF   € Ø�h‰h�m‰m˜CÓ ˆà�‰˜Ôà�X‰X×#Ñ#ˆà�‰˜Ÿ	™	 # sÓ+Õ,r(   c                 óÈ   — | j                   j                  d«      }| j                   j                  }|j                  «        | j	                  |j                  |d«      «       y )Nó   message)r÷   r  r©   r½   rŸ   râ   r  s      r&   Útest_verify_with_precomputez*TestSigningKey.test_verify_with_precomputep  sC   € Ø�h‰h�m‰m˜JÓ'ˆà�X‰X×#Ñ#ˆà
�‰Œà�‰˜Ÿ	™	 # zÓ2Õ3r(   c                 ó    — | j                   j                  }|j                  «        | j                  j                  }| j	                  ||«       y r5   )r÷   r©   r½   rø   r,   )r2   Úvk1rs   s      r&   Ú*test_compare_verifying_key_with_precomputez9TestSigningKey.test_compare_verifying_key_with_precomputey  s:   € Ø�h‰h×$Ñ$ˆØ�‰Ôà�n‰n×*Ñ*ˆà×Ñ˜˜cÕ"r(   c                 óÌ   — | j                   j                  d«      }| j                   j                  }|j                  d¬«       | j	                  |j                  |d«      «       y )Ns   other messageT)Úlazy)rv   r  r©   r½   rŸ   râ   r  s      r&   Ú test_verify_with_lazy_precomputez/TestSigningKey.test_verify_with_lazy_precompute�  sJ   € Ø�h‰h�m‰mÐ,Ó-ˆà�X‰X×#Ñ#ˆà
�‰˜4ˆÔ à�‰˜Ÿ	™	 #Ð'7Ó8Õ9r(   c                 óP   — | j                  | j                  | j                  «       y r5   )r¨   r÷   rv   r1   s    r&   Útest_inequality_on_signing_keysz.TestSigningKey.test_inequality_on_signing_keysŠ  s   € Ø×Ñ˜DŸH™H d§h¡hÕ/r(   c                 ó<   — | j                  | j                  d «       y r5   )r¨   r÷   r1   s    r&   Ú/test_inequality_on_signing_keys_not_implementedz>TestSigningKey.test_inequality_on_signing_keys_not_implemented�  s   € Ø×Ñ˜DŸH™H dÕ+r(   c                 óŠ   — d}t        j                  |«      }t        j                  dt        «      }| j	                  ||«       y )Núw-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIDS6x9FO1PG8T4xIPg8Zd0z8uL6sVGZFEZrX17gHC/XU
-----END PRIVATE KEY-----
ó    4ºÇÑNÔñ¼OŒH>wLü¸¾¬TfEš××¸õÔ)r   rq   r#   r   r,   ©r2   rì   rr   Úsk_strs       r&   Útest_ed25519_from_pemz$TestSigningKey.test_ed25519_from_pem�  sI   € ð*ð 	ô × Ñ  Ó)ˆä×'Ñ'ðPäó
ˆð 	×Ñ˜˜VÕ$r(   c           	      ój  — t        t        d«      t        t        t        j                  Ž t        d«      «      t        t        d«      «      «      }| j                  t        «      5 }t        j                  |«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nr   ó    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzNon NULL parameters©r
   r   r   r   rÂ   r   rb   r	   r   r‰   rŠ   r‹   rŒ   rÃ   s      r&   Ú'test_ed25519_from_der_bad_alg_id_paramsz6TestSigningKey.test_ed25519_from_der_bad_alg_id_params¡  s‚   € Ü!Ü˜1ÓÜœJ¬¯©Ð4´nÀQÓ6GÓHÜÔ 3°IÓ >Ó?ó
ˆð ×Ñœ}Ô-°Ü×Ñ Ô(÷ .ð 	�‰Ð+¬S°·±Ó-=Õ>÷ .Ð-ús   Á%B)Â)B2c           	      ó\  — t        t        d«      t        t        t        j                  Ž «      t        t        d«      dz   «      «      }| j                  t        «      5 }t        j                  |«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nr   r"  ó   Bz+trailing junk after the encoded private keyr#  rÃ   s      r&   Ú)test_ed25519_from_der_junk_after_priv_keyz8TestSigningKey.test_ed25519_from_der_junk_after_priv_key­  s‡   € Ü!Ü˜1ÓÜÜœGŸK™KÐ(óô  Ô 3°IÓ >ÀÑ EÓFó
ˆð ×Ñœ}Ô-°Ü×Ñ Ô(÷ .ð 	�‰Ø9¼3¸q¿{¹{Ó;Kõ	
÷ .Ð-ús   ÁB"Â"B+c                 óŽ   — t        j                  dt        «      }d}|j                  |t        ¬«      }| j                  |d«       y )Nr  r  ©Ú	sigencodes@   á,vÉ>%ÚÒ~>Ã&
aô@|ž`X@<˜7Ô±õ³%i{ß}Ý±ó€Â|åÖÄ
£°ö}Àí)"+E¯ )r   r#   r   r  r   r,   )r2   r  Úmsgrå   s       r&   Útest_ed25519_signz TestSigningKey.test_ed25519_sign½  sK   € Ü×'Ñ'ðPäó
ˆð ˆà�k‰k˜#¬ˆkÓ7ˆà×ÑØðDõ	
r(   c                 óø   — t        j                  dt        «      }| j                  t        «      5 }|j                  d«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w©Nr  s   aaaaaaaaaaaaaaaaaaaaúMethod unsupported for Edwards)	r   r#   r   rb   rº   Úsign_digest_deterministicrŠ   r‹   rŒ   ©r2   r  rŽ   s      r&   Ú&test_ed25519_sign_digest_deterministicz5TestSigningKey.test_ed25519_sign_digest_deterministicÏ  sc   € Ü×'Ñ'ðPäó
ˆð
 ×ÑœzÔ*¨aØ×,Ñ,¨YÔ7÷ +ð 	�‰Ð6¼¸A¿K¹KÓ8HÕI÷ +Ð*úó   °A0Á0A9c                 óø   — t        j                  dt        «      }| j                  t        «      5 }|j                  d«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY wr.  )	r   r#   r   rb   rº   Úsign_digestrŠ   r‹   rŒ   r1  s      r&   Útest_ed25519_sign_digestz'TestSigningKey.test_ed25519_sign_digestÚ  sc   € Ü×'Ñ'ðPäó
ˆð
 ×ÑœzÔ*¨aØ×Ñ˜yÔ)÷ +ð 	�‰Ð6¼¸A¿K¹KÓ8HÕI÷ +Ð*úr3  c                 óø   — t        j                  dt        «      }| j                  t        «      5 }|j                  d«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nr  é   r/  )	r   r#   r   rb   rº   Úsign_numberrŠ   r‹   rŒ   r1  s      r&   Útest_ed25519_sign_numberz'TestSigningKey.test_ed25519_sign_numberå  sc   € Ü×'Ñ'ðPäó
ˆð
 ×ÑœzÔ*¨aØ×Ñ˜rÔ"÷ +ð 	�‰Ð6¼¸A¿K¹KÓ8HÕI÷ +Ð*úr3  c                 óô   — d}t        j                  |«      }| j                  t        «      5 }|j	                  d¬«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nr  Ússleayrû   zOnly PKCS#8 format)r   rq   rb   rº   rý   rŠ   r‹   rŒ   )r2   rì   rr   rŽ   s       r&   Útest_ed25519_to_der_ssleayz)TestSigningKey.test_ed25519_to_der_ssleayð  sd   € ð*ð 	ô × Ñ  Ó)ˆà×ÑœzÔ*¨aØ�I‰I˜XˆIÔ&÷ +ð 	�‰Ð*¬C°·±Ó,<Õ=÷ +Ð*ús   ­A.Á.A7c                 ó€   — t        j                  dt        «      }d}| j                  |j	                  d¬«      |«       y )Nr  sw   -----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIDS6x9FO1PG8T4xIPg8Zd0z8uL6sVGZFEZrX17gHC/XU
-----END PRIVATE KEY-----
rú   rû   )r   r#   r   r,   rÖ   ©r2   rr   rì   s      r&   Útest_ed25519_to_pemz"TestSigningKey.test_ed25519_to_pemþ  sB   € Ü×#Ñ#ðPäó
ˆð+ð 	ð 	×Ñ˜Ÿ™¨'˜Ó2°GÕ<r(   c                 ó|   — t        j                  dt        «      }d}| j                  |j	                  «       |«       y )Nr  sƒ  -----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx
OQAAACAjAFDQ1mQiKI7jVYl+bkFXja7eRCbuVie8heYLLyrLZQAAAIgAAAAAAAAAAAAAAAtzc2gt
ZWQyNTUxOQAAACAjAFDQ1mQiKI7jVYl+bkFXja7eRCbuVie8heYLLyrLZQAAAEA0usfRTtTxvE+M
SD4PGXdM/Li+rFRmRRGa19e4Bwv11CMAUNDWZCIojuNViX5uQVeNrt5EJu5WJ7yF5gsvKstlAAAA
AAECAwQF
-----END OPENSSH PRIVATE KEY-----
)r   r#   r   r,   rÚ   )r2   rr   Ússh_strs      r&   Útest_ed25519_to_sshz"TestSigningKey.test_ed25519_to_ssh  s=   € Ü×#Ñ#ðPäó
ˆð3ð 	ð 	×Ñ˜Ÿ™› gÕ.r(   c                 ó¤   — t        j                  t        «      }t        j                  |j	                  d¬«      «      }| j                  ||«       y ©Nrú   rû   )r   rt   r   rq   rÖ   r,   ©r2   rr   Údecodeds      r&   Útest_ed25519_to_and_from_pemz+TestSigningKey.test_ed25519_to_and_from_pem   s=   € Ü× Ñ ¤Ó)ˆä×%Ñ% b§i¡i°w iÓ&?Ó@ˆà×Ñ˜˜WÕ%r(   c                 óx   — t        j                  t        t        j                  ¬«      }| j                  |«       y )N)Úentropy)r   rt   r   ÚosÚurandomr*   r  s     r&   Útest_ed25519_custom_entropyz*TestSigningKey.test_ed25519_custom_entropy'  s&   € Ü× Ñ ¤´"·*±*Ô=ˆà×Ñ˜RÕ r(   c                 óØ   — | j                  t        «      5 }t        j                  dt        ¬«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)NiÒ–Ir{   z don't support setting the secret)rb   rº   r   r  r   rŠ   r‹   rŒ   r�   s     r&   Ú!test_ed25519_from_secret_exponentz0TestSigningKey.test_ed25519_from_secret_exponent,  sJ   € Ø×ÑœzÔ*¨aÜ×+Ñ+¨J¼gÕF÷ +ð 	�‰Ð8¼#¸a¿k¹kÓ:JÕK÷ +Ð*úrÊ   c                 óŠ   — d}t        j                  |«      }t        j                  dt        «      }| j	                  ||«       y )Nzœ-----BEGIN PRIVATE KEY-----
MEcCAQAwBQYDK2VxBDsEOTyFuXqFLXgJlV8uDqcOw9nG4IqzLiZ/i5NfBDoHPzmP
OP0JMYaLGlTzwovmvCDJ2zLaezu9NLz9aQ==
-----END PRIVATE KEY-----
ó9   <…¹z…-x	•_.§ÃÙÆàŠ³.&‹“_:?9�8ý	1†‹TóÂ‹æ¼ ÉÛ2Ú{;½4¼ýi)r   rq   r#   r   r,   r  s       r&   rí   z"TestSigningKey.test_ed448_from_pem2  sJ   € ð*ð 	ô × Ñ  Ó)ˆä×'Ñ'ð4ô ó
ˆð 	×Ñ˜˜VÕ$r(   c                 ó€   — t        j                  dt        «      }d}| j                  |j	                  d¬«      |«       y )NrQ  sœ   -----BEGIN PRIVATE KEY-----
MEcCAQAwBQYDK2VxBDsEOTyFuXqFLXgJlV8uDqcOw9nG4IqzLiZ/i5NfBDoHPzmPOP0JMYaLGlTz
wovmvCDJ2zLaezu9NLz9aQ==
-----END PRIVATE KEY-----
rú   rû   )r   r#   r   r,   rÖ   r?  s      r&   rï   z TestSigningKey.test_ed448_to_pemE  sC   € Ü×#Ñ#ð4ô ó
ˆð+ð 	ð 	×Ñ˜Ÿ™¨'˜Ó2°GÕ<r(   c                 ó¤   — t        j                  t        «      }t        j                  |j	                  d¬«      «      }| j                  ||«       y rE  )r   rt   r   rq   rÖ   r,   rF  s      r&   Útest_ed448_encode_decodez'TestSigningKey.test_ed448_encode_decodeV  s=   € Ü× Ñ ¤Ó'ˆä×%Ñ% b§i¡i°w iÓ&?Ó@ˆà×Ñ˜ "Õ%r(   N) rd   re   rf   rg   rh   r'   rþ   r  r  r	  r  r  r  r  r  r  r   r$  r'  r,  r2  r6  r:  r=  r@  rC  rH  rM  rO  rí   rï   rT  ri   r(   r&   rõ   rõ     s¡   „ ñð
 ñ3ó ð3ò8	
ò"ò2ò&-ò-ò4ò#ò:ò0ò,ò%ò"
?ò
ò 
ò$	Jò	Jò	Jò>ò=ò/ò&&ò!ò
Lò%ò&=ó"&r(   rõ   c                   ó@   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)	ÚTestTrivialCurvec                 óÐ   — t        ddd«      }t        |ddddd¬	«      }t        d
||d«      | _        t	        j
                  d| j                  t        j                  ¬«      | _        y )Né£   éT   é:   é   éW   r   é§   T)r´   Útoy_p8)r   r[  r   éŒ   )Úhashfunc)	r   r   r   Ú	toy_curver   r  r‘   Úsha1rr   )r%   ru   Úgens      r&   r'   zTestTrivialCurve.setUpClass_  s[   € ô ˜˜R Ó$ˆÜ˜%  B¨¨3¸$Ô?ˆä˜h¨¨s°IÓ>ˆŒä×0Ñ0ØØ�M‰MÜ—\‘\ô
ˆ�r(   c                 ó~   — | j                   j                  }| j                  ||j                  «       z  t        «       y r5   )ra  r´   r,   Úorderr   )r2   rc  s     r&   Útest_generator_sanityz&TestTrivialCurve.test_generator_sanityq  s,   € Ø�n‰n×&Ñ&ˆà×Ñ˜˜sŸy™y›{Ñ*¬HÕ5r(   c                 ól   — | j                  | j                  j                  j                  «       d«       y )Ns   ˜)r,   rr   r©   r7   r1   s    r&   Útest_public_key_sanityz'TestTrivialCurve.test_public_key_sanityv  s%   € Ø×Ñ˜Ÿ™×.Ñ.×8Ñ8Ó:¸KÕHr(   c                 óÈ   — | j                   j                  d«      }| j                  |d«       | j                  | j                   j                  j                  |d«      «       y )Nr  s   -.©rr   Úsign_deterministicr,   rŸ   r©   râ   )r2   rå   s     r&   Útest_deterministic_signz(TestTrivialCurve.test_deterministic_signy  sI   € Ø�g‰g×(Ñ(¨Ó4ˆà×Ñ˜˜eÔ$à�‰˜Ÿ™×-Ñ-×4Ñ4°S¸*ÓEÕFr(   c                 ó  — t        j                  d«      }| j                  j                  |«      }| j	                  t        |«      d«       | j                  | j                  j                  j                  ||«      «       y )Né    r[  )	rK  rL  rr   rk  r,   ÚlenrŸ   r©   râ   ©r2   r+  rå   s      r&   Ú&test_deterministic_sign_random_messagez7TestTrivialCurve.test_deterministic_sign_random_message€  sZ   € Ü�j‰j˜‹nˆØ�g‰g×(Ñ(¨Ó-ˆØ×Ñœ˜S› 1Ô%Ø�‰˜Ÿ™×-Ñ-×4Ñ4°S¸#Ó>Õ?r(   c                 óÌ   — d}| j                   j                  |«      }| j                  |d«       | j                  | j                   j                  j                  ||«      «       y )Ns    Os   6žrj  rp  s      r&   Ú/test_deterministic_sign_that_rises_R_zero_errorz@TestTrivialCurve.test_deterministic_sign_that_rises_R_zero_error†  sP   € ð ˆØ�g‰g×(Ñ(¨Ó-ˆØ×Ñ˜˜kÔ*Ø�‰˜Ÿ™×-Ñ-×4Ñ4°S¸#Ó>Õ?r(   c                 óÌ   — d}| j                   j                  |«      }| j                  |d«       | j                  | j                   j                  j                  ||«      «       y )Ns   ms   Ilrj  rp  s      r&   Ú/test_deterministic_sign_that_rises_S_zero_errorz@TestTrivialCurve.test_deterministic_sign_that_rises_S_zero_errorŽ  sN   € ØˆØ�g‰g×(Ñ(¨Ó-ˆØ×Ñ˜˜kÔ*Ø�‰˜Ÿ™×-Ñ-×4Ñ4°S¸#Ó>Õ?r(   N)rd   re   rf   rh   r'   rf  rh  rl  rq  rs  ru  ri   r(   r&   rV  rV  ^  s7   „ Øñ
ó ð
ò"6ò
IòGò@ò@ó@r(   rV  rm   sd   some string for signingcontents don't really matterbut do include also some crazy values:  	
   ÿðé   r)  rp   c                 ó   — | S r5   ri   ©r/   s    r&   Ú<lambda>ry  ¶  ó   € ™r(   zbytes memoryviewr<   zbytearray memoryviewc                 ó*   — t        t        | «      «      S r5   ©r6   r<   rx  s    r&   ry  ry  ¹  ó   € ¤v¬i¸«lÔ';r(   zarray.array of bytesc                 ó.   — t        j                   d| «      S rA   ©rD   rx  s    r&   ry  ry  º  ó   € ¤u§{¡{°3¸Ô':r(   zarray.array of bytes memoryviewc                 ó@   — t        t        j                  d| «      «      S rA   ©r6   rD   rx  s    r&   ry  ry  »  ó   € ´&¼¿¹ÀSÈ!Ó9LÔ2Mr(   zarray.array of intsc                 ó.   — t        j                   d| «      S rN   r  rx  s    r&   ry  ry  ¼  ó   € ¤e§k¡k°#°qÔ&9r(   zarray.array of ints memoryviewc                 ó@   — t        t        j                  d| «      «      S rN   r‚  rx  s    r&   ry  ry  ½  ó   € ´¼¿¹ÀCÈÓ8KÔ1Lr(   Úintsc                 ó   — | S r5   ri   rx  s    r&   ry  ry  À  s   € ™r(   r‡   c                 ó   — t        | «      S r5   ©Úconvrx  s    r&   ry  ry  Ä  s   € ´T¸!´Wr(   Úderc                 ó   — t        | «      S r5   r‹  rx  s    r&   ry  ry  Å  s   € ´$°q´'r(   Ústringsc                 ó&   — t        d„ | D «       «      S )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr5   r‹  )Ú.0Úis     r&   Ú	<genexpr>z<lambda>.<locals>.<genexpr>Ê  s   è ø€ Ð/©Q¨œD ŸG©Qùs   ‚)Útuplerx  s    r&   ry  ry  Ê  s   € ”eÑ/©QÓ/Ô/r(   râ   Úverify_digestz{2}-{0}-{1})Úidz1signature,decoder,mod_apply,fun,vrf_mthd,vrf_datac                 ó:   —  || «      } || ||«      |¬«      sJ ‚y )N)Ú	sigdecoderi   )Ú	signatureÚdecoderÚ	mod_applyÚfunÚvrf_mthdÚvrf_datarå   s          r&   Útest_VerifyingKey_verifyr   Þ  s$   € ñ �IÓ
€Cá�C™˜X›°'Õ:Ð:Ñ:r(   s   ^ÈBÖï’R©Bé‰<¢ŸV¥%w±År]   c                 ó   — | S r5   ri   rx  s    r&   ry  ry  ñ  rz  r(   c                 ó*   — t        t        | «      «      S r5   r|  rx  s    r&   ry  ry  ô  r}  r(   c                 ó.   — t        j                   d| «      S rA   r  rx  s    r&   ry  ry  õ  r€  r(   c                 ó@   — t        t        j                  d| «      «      S rA   r‚  rx  s    r&   ry  ry  ö  rƒ  r(   c                 ó.   — t        j                   d| «      S rN   r  rx  s    r&   ry  ry  ÷  r…  r(   c                 ó@   — t        t        j                  d| «      «      S rN   r‚  rx  s    r&   ry  ry  ø  r‡  r(   Úconvertc                 óx   —  | t         «      }t        j                  |«      }|j                  «       t         k(  sJ ‚y r5   )Úprv_key_bytesr   r#   r7   ©r§  Úkeyrr   s      r&   Útest_SigningKey_from_stringr¬  ý  s0   € á
”-Ó
 €CÜ	×	Ñ	 Ó	$€Bà�<‰<‹>œ]Ò*Ð*Ñ*r(   éþÿÿÿc                 óx   —  | t         «      }t        j                  |«      }|j                  «       t        k(  sJ ‚y r5   )r"   r   r‰   r7   r©  rª  s      r&   Útest_SigningKey_from_derr¯    s0   € á
”)Ó
€CÜ	×	Ñ	˜SÓ	!€Bà�<‰<‹>œ]Ò*Ð*Ñ*r(   s   
c                 óŽ   — t         j                   | t        «       | t        «      ¬«      }t        j                  |t        «       y ©N)Úextra_entropy)rr   rk  rä   r²  r$   râ   ©r§  rå   s     r&   Ú"test_SigningKey_sign_deterministicr´    s5   € ä
×
Ñ
Ù”‹¡W¬]Ó%;ð  ó €Cô ‡I�Iˆc”4Õr(   c                 óŽ   — t         j                   | t        «       | t        «      ¬«      }t        j                  |t        «       y r±  )rr   r0  Ú	data_hashr²  r$   râ   rä   r³  s     r&   Ú)test_SigningKey_sign_digest_deterministicr·  (  s6   € ä
×
&Ñ
&Ù”	Ó©'´-Ó*@ð 'ó €Cô ‡I�Iˆc”4Õr(   c                 óv   — t         j                   | t        «      «      }t        j	                  |t        «       y r5   )rr   r  rä   r$   râ   r³  s     r&   Útest_SigningKey_signr¹  1  s"   € ä
�'‰'‘'œ$“-Ó
 €Cä‡I�Iˆc”4Õr(   c                 óv   — t         j                   | t        «      «      }t        j	                  |t
        «       y r5   )rr   r5  r¶  r$   râ   rä   r³  s     r&   Útest_SigningKey_sign_digestr»  8  s#   € ä
�.‰.™¤Ó+Ó
,€Cä‡I�Iˆc”4Õr(   c                  ó¾   — t        j                  t        j                  dz
  t        ¬«      } | j                  }| j                  d«      }|j                  |d«      sJ ‚y )Nr   r{   s   hello)r   r  r   re  r©   r  râ   )rr   r$   rå   s      r&   Ú#test_SigningKey_with_unlikely_valuer½  ?  sJ   € Ü	×	(Ñ	(¬¯©¸!Ñ);Ä8Ô	L€BØ	×	Ñ	€BØ
�'‰'�(Ó
€CØ�9‰9�S˜(Ô#Ð#Ñ#r(   c                  ój  — t         } t        | j                  «       | j                  «       | j	                  «       | j                  «       «      } t        d| j                  «       | d«      }t        j                  d|«      }t        j                  dt        «      }|j                  |j                  k(  sJ ‚y )Nr   )
r   é   é$   r¿  r¿  r[  é   r   r   r   é   )r   r   ru   r/   r0   re  r   r   r  r   r  )r´   ru   rr   rv   s       r&   Ú+test_SigningKey_with_custom_curve_old_pointrÃ  F  s’   € Ü)€IÜØ�‰ÓØ�‰‹Ø�‰‹Ø�‰Óó	€Iô ØØ�‰ÓØØ'ó	€Eô 
×	(Ñ	(¨¨UÓ	3€Bä
×
)Ñ
)¨"¬oÓ
>€Cà�:‰:˜Ÿ™Ò$Ð$Ñ$r(   c                  ó¢   — t        j                  dt        «      } t        j                  dt        «      }| j                  |j                  k(  rJ ‚y )Nr[  )r   r  r   r   r©   ©r÷   rv   s     r&   Ú2test_VerifyingKey_inequality_with_different_curvesrÆ  ]  sC   € Ü
×
)Ñ
)¨!¬_Ó
=€CÜ
×
)Ñ
)¨!¬XÓ
6€Cà×!Ñ! S×%6Ñ%6Ò6Ð7Ð7Ð6r(   c                  ó¢   — t        j                  dt        «      } t        j                  dt        «      }| j                  |j                  k(  rJ ‚y )Nr[  r¿  )r   r  r   r©   rÅ  s     r&   Ú9test_VerifyingKey_inequality_with_different_secret_pointsrÈ  d  sC   € Ü
×
)Ñ
)¨!¬_Ó
=€CÜ
×
)Ñ
)¨!¬_Ó
=€Cà×!Ñ! S×%6Ñ%6Ò6Ð7Ð7Ð6r(   c                  ó\   — d} t        j                  | «      }|j                  t        k(  sJ ‚y )Nz·-----BEGIN PRIVATE KEY-----
    MFMCAQEwBQYDK2VwBCIEICc2F2ag1n1QP0jY+g9qWx5sDkx0s/HdNi3cSRHw+zsI
    oSMDIQA+HQ2xCif8a/LMWR2m5HaCm5I2pKe/cc8OiRANMHxjKQ==
    -----END PRIVATE KEY-----)r   rq   ru   r   )Úpemrr   s     r&   Ú&test_SigningKey_from_pem_pkcs8v2_EdDSArË  k  s-   € ð!€Cô
 
×	Ñ	˜SÓ	!€BØ�8‰8”wÒÐÑr(   )eÚ	unittest2ÚunittestÚImportErrorr6   Ú	NameErrorÚ
memoryviewrK  rD   Úpytestr‘   Úkeysr   r   r   r   r�  r   r	   r
   r   r   r   r   Úutilr   r   r   r   r   r   Úcurvesr   r   r   r   r   Úellipticcurver   r   r   r   Úecdsar   ÚTestCaser    rk   rõ   rV  rw   r"   ro   rp   r‰   rr   r©   r$   rä   ro  rb  ÚupdateÚdigestr¶  r  Úsig_rawÚsig_derÚsig_stringsÚ	verifiersr<   Úmodifierr�  rŒ  Ú
sig_formatrš  r›  rœ  râ   r–  Úmethod_namerž  rŸ  ÚappendÚparamrü   ÚmarkÚparametrizer   r©  Ú
convertersr§  r¬  r¯  r²  r´  r·  r¹  r»  r½  rÃ  rÆ  rÈ  rË  ri   r(   r&   Ú<module>ræ     sé  ððÛ ðÙ
ó 
Û Û Û ÷ó ÷÷ ñ ÷÷ ÷ EÕ Dß @Ó @Ý ,ôX6 ×!2Ñ!2ô X6ôv|.˜h×/Ñ/ô |.ô~U&�X×&Ñ&ô U&ôp
4@�x×(Ñ(ô 4@ðr%ð ñ �+Ó€	Ù�)˜UÔ#Ð #Ð#Ø€Z×Ñ˜Ó#€Ø×Ñ€ð*ð ñ ˆ4ƒy�1�}˜ÒÐ ÐØ€w‡|�|ƒ~€Ø ‡�ˆDÔ Ø�K‰K‹M€	Ù�)˜UÔ#Ð #Ð#Ø
�'‰'�$Ð"2ˆ'Ó
3€Ù�'˜5Ô!Ð !Ð!Ø
�'‰'�$ -ˆ'Ó
0€Ù�'˜5Ô!Ð !Ð!Ø�g‰g�dÐ&7ˆgÓ8€Ù�+˜a‘. %Ô(Ð (Ð(à€	à‰kÐØ˜Ð Ø�)ÐØÑ;Ð<ØÑ:Ð;Ø&Ñ(MÐNØÑ9Ð:Ø%Ñ'LÐMó	�M€Hˆcð �ÑÙ‰àˆà	�Ð)Ñ+<Ð=Ø	�˜Ñ(9Ð:àØØÙ/ð		
ó	6Ñ1ˆ
�I˜w¨	ð �r—y‘y $Ð'Ø˜b×.Ñ.°	Ð:ó0
Ñ+ˆK˜ 8ð ×ÑØ�—‘ØØØØØØØ$×+Ñ+¨H°jÀ+ÓNôõ
ñ	0
ñ	6ð	ðR ‡�×ÑØ7¸óñ;óð;ð#ð ñ ˆ=Ó˜RÒÐ ÐØ€
à‰kÐØ˜Ð Ø�)ÐØÑ;Ð<ØÑ:Ð;Ø&Ñ(MÐNØÑ9Ð:Ø%Ñ'LÐMó	Ñ€Hˆgð ×Ñ�l�f—l‘l 7¨xÔ8Õ9ð	ð ‡�×Ñ˜ JÓ/ñ+ó 0ð+ð%ð ñ �+Ó€	Ù�)˜UÔ#Ð #Ð#ð ‡�×Ñ˜ J¨s° OÓ4ñ+ó 5ð+ð 4€ð ‡�×Ñ˜ JÓ/ñó 0ðð ‡�×Ñ˜ JÓ/ñó 0ðð ‡�×Ñ˜ JÓ/ñó 0ðð ‡�×Ñ˜ JÓ/ñó 0ðò$ò%ò.8ò8óøðQ# ò Þðûð
 ò ØƒFðús"   ‚O  ‡O Ï 	OÏOÏOÏO