a
    ‘db—W  ã                   @   sn  zd dl ZW n ey&   d dlZY n0 ze W n eyF   eZY n0 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 ddl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 ddlmZmZmZm Z  ddl!m"Z" G d	d
„ d
ej#ƒZ$G dd„ dej#ƒZ%G dd„ dej#ƒZ&G dd„ dej#ƒZ'dZ(ee(ƒZ)e*e)e+ƒsHJ ‚e ,e)¡Z-e-j.Z/dZ0e1e0ƒd d ksrJ ‚e	 2¡ Z2e2 3e0¡ e2 4¡ Z5e*e5e+ƒsœJ ‚e-j6e0edZ7e*e7e+ƒsºJ ‚e-j6e0edZ8e*e8e+ƒsØJ ‚e-j6e0edZ9e*e9d  e+ƒsúJ ‚g Z:ddd„ fddd„ fddd„ fddd„ fddd„ fd d!d„ fd"d#d„ fd$d%d„ ffD ]®\Z;Z<d&e;v rnd'd„ Z=ne<Z=d(e7ed)d„ fd*e8ed+d„ fd,e9ed-d„ ffD ]\\Z>Z?Z@ZAd.e/jBe0fd/e/jCe5ffD ]4\ZDZEZFe: GejHe?e@eAe<eEeFd0 Ie;e>eD¡d1¡ qÄq qRejJ Kd2e:¡d3d4„ ƒZLd5ZMe1eMƒd6ks.J ‚g ZNdd7d„ fdefdeOfdd8d„ fdd9d„ fd d:d„ fd"d;d„ fd$d<d„ ffD ]\Z;ZPeN GejHePe;d1¡ q~ejJ Kd=eN¡d>d?„ ƒZQdZ(ee(ƒZ)e*e)e+ƒsÐJ ‚ejJ Kd=eNdd@… ¡dAdB„ ƒZRdCZSejJ Kd=eN¡dDdE„ ƒZTejJ Kd=eN¡dFdG„ ƒZUejJ Kd=eN¡dHdI„ ƒZVejJ Kd=eN¡dJdK„ ƒZWdLdM„ ZXdNdO„ ZYdPdQ„ ZZdRdS„ Z[dS )Té    Né   )ÚVerifyingKeyÚ
SigningKeyÚMalformedPointError)ÚunpemÚUnexpectedDER)Úsigencode_stringÚsigencode_derÚsigencode_stringsÚsigdecode_stringÚsigdecode_derÚsigdecode_strings)ÚNIST256pÚCurveÚBRAINPOOLP160r1)ÚPointÚPointJacobiÚCurveFpÚINFINITY)Úgenerator_brainpoolp160r1c                   @   s|   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestVerifyingKeyFromStringzc
    Verify that ecdsa.keys.VerifyingKey.from_string() can be used with
    bytes-like objects
    c                 C   s   d| _ t | j ¡| _d S )Ns0   L¢•ÛÇZ×“
zÏ—Ï×ÂÙoþ8}X!®Ôúhú^pIºÑYû’xaëo+œGúvÊ)Ú	key_bytesr   Úfrom_stringÚvk)Úcls© r   ú`/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python3.9/site-packages/ecdsa/test_keys.pyÚ
setUpClass%   s    ÿz%TestVerifyingKeyFromString.setUpClassc                 C   sJ   |   | j¡ |  | jt¡ |  | jjj ¡ d¡ |  | jjj ¡ d¡ d S )Nl   !Xúpø?Ë|}ùr³…IWµoWeD l   Êvôq.y[Or~Vh]Ip<é#Ó'í
)	ZassertIsNotNoner   ZassertIsInstancer   ÚassertEqualÚpubkeyÚpointÚxÚy©Úselfr   r   r   Ú
test_bytes.   s    þþz%TestVerifyingKeyFromString.test_bytesc                 C   s*   t  t| jƒ¡}|  | j ¡ | ¡ ¡ d S ©N)r   r   Úbufferr   r   r   Ú	to_string©r$   r   r   r   r   Útest_bytes_memoryview:   s    z0TestVerifyingKeyFromString.test_bytes_memoryviewc                 C   s*   t  t| jƒ¡}|  | j ¡ | ¡ ¡ d S r&   ©r   r   Ú	bytearrayr   r   r   r(   r)   r   r   r   Útest_bytearray?   s    z)TestVerifyingKeyFromString.test_bytearrayc                 C   s.   t  tt| jƒƒ¡}|  | j ¡ | ¡ ¡ d S r&   )r   r   r'   r,   r   r   r   r(   r)   r   r   r   Útest_bytesarray_memoryviewD   s    z5TestVerifyingKeyFromString.test_bytesarray_memoryviewc                 C   s2   t   d| j¡}t |¡}|  | j ¡ | ¡ ¡ d S ©NÚB©Úarrayr   r   r   r   r   r(   ©r$   Zarrr   r   r   r   Útest_array_array_of_bytesI   s    
z4TestVerifyingKeyFromString.test_array_array_of_bytesc                 C   s6   t   d| j¡}t t|ƒ¡}|  | j ¡ | ¡ ¡ d S r/   ©r2   r   r   r   r'   r   r   r(   r3   r   r   r   Ú$test_array_array_of_bytes_memoryviewO   s    z?TestVerifyingKeyFromString.test_array_array_of_bytes_memoryviewc                 C   s2   t   d| j¡}t |¡}|  | j ¡ | ¡ ¡ d S ©NÚIr1   r3   r   r   r   Útest_array_array_of_intsU   s    
z3TestVerifyingKeyFromString.test_array_array_of_intsc                 C   s6   t   d| j¡}t t|ƒ¡}|  | j ¡ | ¡ ¡ d S r7   r5   r3   r   r   r   Ú#test_array_array_of_ints_memoryview[   s    z>TestVerifyingKeyFromString.test_array_array_of_ints_memoryviewc                 C   s*   t  d| j ¡}|  | j ¡ | ¡ ¡ d S ©Nó   ©r   r   r   r   r   r(   r)   r   r   r   Útest_bytes_uncompresseda   s    z2TestVerifyingKeyFromString.test_bytes_uncompressedc                 C   s.   t  td| j ƒ¡}|  | j ¡ | ¡ ¡ d S r;   r+   r)   r   r   r   Útest_bytearray_uncompressedf   s    z6TestVerifyingKeyFromString.test_bytearray_uncompressedc                 C   s2   t  d| jd d…  ¡}|  | j ¡ | ¡ ¡ d S ©Nó   é   r=   r)   r   r   r   Útest_bytes_compressedk   s    z0TestVerifyingKeyFromString.test_bytes_compressedc                 C   s6   t  td| jd d…  ƒ¡}|  | j ¡ | ¡ ¡ d S r@   r+   r)   r   r   r   Útest_bytearray_compressedp   s    z4TestVerifyingKeyFromString.test_bytearray_compressedN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr   r%   r*   r-   r.   r4   r6   r9   r:   r>   r?   rC   rD   r   r   r   r   r      s   
r   c                   @   s¬   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(S ))ÚTestVerifyingKeyFromDerza
    Verify that ecdsa.keys.VerifyingKey.from_der() can be used with
    bytes-like objects.
    c                 C   sb   d}d}|| _ t|ƒ| _t| jtƒs(J ‚t |¡| _t |¡| _	d}t |¡| _
t tj¡| _d S )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_strZkey_strr   r   r   r   |   s    ÿÿ
ÿz"TestVerifyingKeyFromDer.setUpClassc                 C   s,   d}t  |¡}t jdtd}|  ||¡ d S )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©rS   )r   rO   r   r   r   )r$   Úpub_key_strÚpkZpk_expr   r   r   Ú&test_load_key_with_explicit_parametersœ   s    ÿ
úz>TestVerifyingKeyFromDer.test_load_key_with_explicit_parametersc                 C   sB   d}|   t¡  tj|dgd W d   ƒ n1 s40    Y  d S )NrV   Únamed_curve©Zvalid_curve_encodings)ÚassertRaisesr   r   rO   )r$   rX   r   r   r   Ú2test_load_key_with_explicit_with_explicit_disabled´   s    ÿÿzJTestVerifyingKeyFromDer.test_load_key_with_explicit_with_explicit_disabledc                 C   sR   |   t¡"}tj| jdgd W d   ƒ n1 s20    Y  |  dt|jƒ¡ d S )NÚraw)Zvalid_encodingszenabled (raw) encodings)r]   r   r   Úfrom_derr   ZassertInÚstrÚ	exception)r$   Úer   r   r   Ú"test_load_key_with_disabled_formatÅ   s    0z:TestVerifyingKeyFromDer.test_load_key_with_disabled_formatc                 C   s$   t  | jtj¡}|  |jtj¡ d S r&   )r   r`   r   ÚhashlibÚsha256ÚassertIsÚdefault_hashfuncr)   r   r   r   Útest_custom_hashfuncË   s    z,TestVerifyingKeyFromDer.test_custom_hashfuncc                 C   s$   t  | jtj¡}|  |jtj¡ d S r&   )r   rO   rL   re   rf   rg   rh   r)   r   r   r   Ú"test_from_pem_with_custom_hashfuncÐ   s    z:TestVerifyingKeyFromDer.test_from_pem_with_custom_hashfuncc                 C   s&   t  | j¡}|  | j ¡ | ¡ ¡ d S r&   )r   r`   r   r   r   r(   r)   r   r   r   r%   Õ   s    z"TestVerifyingKeyFromDer.test_bytesc                 C   s*   t  t| jƒ¡}|  | j ¡ | ¡ ¡ d S r&   )r   r`   r'   r   r   r   r(   r)   r   r   r   r*   Ú   s    z-TestVerifyingKeyFromDer.test_bytes_memoryviewc                 C   s*   t  t| jƒ¡}|  | j ¡ | ¡ ¡ d S r&   )r   r`   r,   r   r   r   r(   r)   r   r   r   r-   ß   s    z&TestVerifyingKeyFromDer.test_bytearrayc                 C   s.   t  tt| jƒƒ¡}|  | j ¡ | ¡ ¡ d S r&   )r   r`   r'   r,   r   r   r   r(   r)   r   r   r   r.   ä   s    z2TestVerifyingKeyFromDer.test_bytesarray_memoryviewc                 C   s2   t   d| j¡}t |¡}|  | j ¡ | ¡ ¡ d S r/   )r2   r   r   r`   r   r   r(   r3   r   r   r   r4   é   s    
z1TestVerifyingKeyFromDer.test_array_array_of_bytesc                 C   s6   t   d| j¡}t t|ƒ¡}|  | j ¡ | ¡ ¡ d S r/   )r2   r   r   r`   r'   r   r   r(   r3   r   r   r   r6   ï   s    z<TestVerifyingKeyFromDer.test_array_array_of_bytes_memoryviewc                 C   s   |   | j| j ¡ ¡ d S r&   )r   r   rP   Zget_verifying_keyr#   r   r   r   Útest_equality_on_verifying_keysõ   s    z7TestVerifyingKeyFromDer.test_equality_on_verifying_keysc                 C   s   |   | j| j¡ d S r&   )ÚassertNotEqualr   rQ   r#   r   r   r   Ú!test_inequality_on_verifying_keysø   s    z9TestVerifyingKeyFromDer.test_inequality_on_verifying_keysc                 C   s   |   | jd ¡ d S r&   )rl   r   r#   r   r   r   Ú1test_inequality_on_verifying_keys_not_implementedû   s    zITestVerifyingKeyFromDer.test_inequality_on_verifying_keys_not_implementedc                 C   s   |   | j| jj¡ d S r&   )rl   r   rT   Úverifying_keyr#   r   r   r   Ú*test_VerifyingKey_inequality_on_same_curveþ   s    zBTestVerifyingKeyFromDer.test_VerifyingKey_inequality_on_same_curvec                 C   s   |   | j| j¡ d S r&   )rl   rP   rT   r#   r   r   r   Ú(test_SigningKey_inequality_on_same_curve  s    z@TestVerifyingKeyFromDer.test_SigningKey_inequality_on_same_curvec                 C   s   |   | j| j¡ d S r&   )rl   r   rP   r#   r   r   r   Útest_inequality_on_wrong_types  s    z6TestVerifyingKeyFromDer.test_inequality_on_wrong_typesc                 C   sD   | j jj}t| ¡ | ¡ | ¡ ƒ}t || j j¡}|  	|| j ¡ d S r&   )
r   r   r    r   rS   r!   r"   r   Zfrom_public_pointr   )r$   Zpjr    r   r   r   r   Útest_from_public_point_old  s    
z2TestVerifyingKeyFromDer.test_from_public_point_oldN)rE   rF   rG   rH   rI   r   rZ   r^   rd   ri   rj   r%   r*   r-   r.   r4   r6   rk   rm   rn   rp   rq   rr   rs   r   r   r   r   rJ   v   s*   
rJ   c                   @   s\   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestSigningKeyz_
    Verify that ecdsa.keys.SigningKey.from_der() can be used with
    bytes-like objects.
    c                 C   s4   d}t  |¡| _d}t  |¡| _d}t  |¡| _d S )NrK   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   rO   Úsk1Ú	sk1_pkcs8rT   )r   rU   r   r   r   r     s    ÿÿÿzTestSigningKey.setUpClassc                 C   s,   d}t  |¡}t jdtd}|  ||¡ d S )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¹ó rW   )r   rO   r   r   r   )r$   rU   rP   rT   r   r   r   Ú'test_decoding_explicit_curve_parameters3  s    ÿ
üz6TestSigningKey.test_decoding_explicit_curve_parametersc                 C   sB   d}|   t¡  tj|dgd W d   ƒ n1 s40    Y  d S )Nrw   r[   r\   )r]   r   r   rO   )r$   rU   r   r   r   Ú>test_decoding_explicit_curve_parameters_with_explicit_disabledL  s    ÿÿzMTestSigningKey.test_decoding_explicit_curve_parameters_with_explicit_disabledc                 C   s6   t  | jjj| jj¡}|  | j|¡ |  | j|¡ d S r&   )r   Úfrom_secret_exponentru   ÚprivkeyZsecret_multiplierrS   r   rv   )r$   rP   r   r   r   Útest_equality_on_signing_keys_  s
    ÿz,TestSigningKey.test_equality_on_signing_keysc                 C   s2   | j  d¡}| j j}| ¡  |  | |d¡¡ d S )Nó   message)ru   Úsignro   Ú
precomputeÚ
assertTrueÚverify©r$   Úsigr   r   r   r   Útest_verify_with_precomputef  s    z*TestSigningKey.test_verify_with_precomputec                 C   s(   | j j}| ¡  | jj}|  ||¡ d S r&   )ru   ro   r   rv   r   )r$   Zvk1rQ   r   r   r   Ú*test_compare_verifying_key_with_precomputeo  s    z9TestSigningKey.test_compare_verifying_key_with_precomputec                 C   s6   | j  d¡}| j j}|jdd |  | |d¡¡ d S )Ns   other messageT)Zlazy)rT   r~   ro   r   r€   r   r‚   r   r   r   Ú test_verify_with_lazy_precomputew  s    z/TestSigningKey.test_verify_with_lazy_precomputec                 C   s   |   | j| j¡ d S r&   )rl   ru   rT   r#   r   r   r   Útest_inequality_on_signing_keys€  s    z.TestSigningKey.test_inequality_on_signing_keysc                 C   s   |   | jd ¡ d S r&   )rl   ru   r#   r   r   r   Ú/test_inequality_on_signing_keys_not_implementedƒ  s    z>TestSigningKey.test_inequality_on_signing_keys_not_implementedN)rE   rF   rG   rH   rI   r   rx   ry   r|   r„   r…   r†   r‡   rˆ   r   r   r   r   rt     s   
		rt   c                   @   sH   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚTestTrivialCurvec                 C   sJ   t dddƒ}t|dddddd	}td
||dƒ| _tjd| jtjd| _d S )Né£   éT   é:   é   éW   r   é§   T)Ú	generatorZtoy_p8)r   r   r   éŒ   )Úhashfunc)	r   r   r   Ú	toy_curver   rz   re   Úsha1rP   )r   rS   Úgenr   r   r   r   ˆ  s    
ÿzTestTrivialCurve.setUpClassc                 C   s    | j j}|  || ¡  t¡ d S r&   )r“   r   r   Úorderr   )r$   r•   r   r   r   Útest_generator_sanity˜  s    z&TestTrivialCurve.test_generator_sanityc                 C   s   |   | jj ¡ d¡ d S )Ns   ˜)r   rP   ro   r(   r#   r   r   r   Útest_public_key_sanity  s    z'TestTrivialCurve.test_public_key_sanityc                 C   s2   | j  d¡}|  |d¡ |  | j j |d¡¡ d S )Nr}   s   -.©rP   Úsign_deterministicr   r€   ro   r   )r$   rƒ   r   r   r   Útest_deterministic_sign   s    z(TestTrivialCurve.test_deterministic_signc                 C   s@   t  d¡}| j |¡}|  t|ƒd¡ |  | jj ||¡¡ d S )Né    r   )	ÚosÚurandomrP   rš   r   Úlenr€   ro   r   ©r$   Úmsgrƒ   r   r   r   Ú&test_deterministic_sign_random_message§  s    
z7TestTrivialCurve.test_deterministic_sign_random_messagec                 C   s6   d}| j  |¡}|  |d¡ |  | j j ||¡¡ d S )Ns    Os   6žr™   r    r   r   r   Ú/test_deterministic_sign_that_rises_R_zero_error­  s    z@TestTrivialCurve.test_deterministic_sign_that_rises_R_zero_errorc                 C   s6   d}| j  |¡}|  |d¡ |  | j j ||¡¡ d S )Ns   ms   Ilr™   r    r   r   r   Ú/test_deterministic_sign_that_rises_S_zero_errorµ  s    z@TestTrivialCurve.test_deterministic_sign_that_rises_S_zero_errorN)rE   rF   rG   rI   r   r—   r˜   r›   r¢   r£   r¤   r   r   r   r   r‰   ‡  s   
r‰   rK   sd   some string for signingcontents don't really matterbut do include also some crazy values:  	
   ÿðé   )Z	sigencoderN   c                 C   s   | S r&   r   ©r!   r   r   r   Ú<lambda>Ý  ó    r§   zbytes memoryviewc                 C   s   t | ƒS r&   )r'   r¦   r   r   r   r§   Þ  r¨   r,   c                 C   s   t | ƒS r&   )r,   r¦   r   r   r   r§   ß  r¨   zbytearray memoryviewc                 C   s   t t| ƒƒS r&   ©r'   r,   r¦   r   r   r   r§   à  r¨   zarray.array of bytesc                 C   s   t   d| ¡S r/   ©r2   r¦   r   r   r   r§   á  r¨   zarray.array of bytes memoryviewc                 C   s   t t d| ¡ƒS r/   ©r'   r2   r¦   r   r   r   r§   â  r¨   zarray.array of intsc                 C   s   t   d| ¡S r7   rª   r¦   r   r   r   r§   ã  r¨   zarray.array of ints memoryviewc                 C   s   t t d| ¡ƒS r7   r«   r¦   r   r   r   r§   ä  r¨   Zintsc                 C   s   | S r&   r   r¦   r   r   r   r§   ç  r¨   r_   c                 C   s   t | ƒS r&   ©Úconvr¦   r   r   r   r§   ë  r¨   Úderc                 C   s   t | ƒS r&   r¬   r¦   r   r   r   r§   ì  r¨   Ústringsc                 C   s   t dd„ | D ƒƒS )Nc                 s   s   | ]}t |ƒV  qd S r&   r¬   )Ú.0Úir   r   r   Ú	<genexpr>ñ  r¨   z<lambda>.<locals>.<genexpr>)Útupler¦   r   r   r   r§   ñ  r¨   r   Úverify_digestz{2}-{0}-{1})Úidz1signature,decoder,mod_apply,fun,vrf_mthd,vrf_datac                 C   s"   || ƒ}||||ƒ|dsJ ‚d S )N)Z	sigdecoder   )Ú	signatureÚdecoderÚ	mod_applyÚfunÚvrf_mthdÚvrf_datarƒ   r   r   r   Útest_VerifyingKey_verify  s    r¼   s   ^ÈBÖï’R©Bé‰<¢ŸV¥%w±ÅrB   c                 C   s   | S r&   r   r¦   r   r   r   r§     r¨   c                 C   s   t t| ƒƒS r&   r©   r¦   r   r   r   r§     r¨   c                 C   s   t   d| ¡S r/   rª   r¦   r   r   r   r§     r¨   c                 C   s   t t d| ¡ƒS r/   r«   r¦   r   r   r   r§     r¨   c                 C   s   t   d| ¡S r7   rª   r¦   r   r   r   r§     r¨   c                 C   s   t t d| ¡ƒS r7   r«   r¦   r   r   r   r§     r¨   Úconvertc                 C   s&   | t ƒ}t |¡}| ¡ t ks"J ‚d S r&   )Úprv_key_bytesr   r   r(   ©r½   ÚkeyrP   r   r   r   Útest_SigningKey_from_string$  s    
rÁ   éþÿÿÿc                 C   s&   | t ƒ}t |¡}| ¡ tks"J ‚d S r&   )r   r   r`   r(   r¾   r¿   r   r   r   Útest_SigningKey_from_der9  s    
rÃ   s   
c                 C   s&   t j| tƒ| tƒd}t |t¡ d S ©N)Úextra_entropy)rP   rš   ÚdatarÅ   r   r   ©r½   rƒ   r   r   r   Ú"test_SigningKey_sign_deterministicE  s    ÿrÈ   c                 C   s&   t j| tƒ| tƒd}t |t¡ d S rÄ   )rP   Zsign_digest_deterministicÚ	data_hashrÅ   r   r   rÆ   rÇ   r   r   r   Ú)test_SigningKey_sign_digest_deterministicO  s    ÿrÊ   c                 C   s   t  | tƒ¡}t |t¡ d S r&   )rP   r~   rÆ   r   r   rÇ   r   r   r   Útest_SigningKey_signX  s    rË   c                 C   s   t  | tƒ¡}t |t¡ d S r&   )rP   Zsign_digestrÉ   r   r   rÆ   rÇ   r   r   r   Útest_SigningKey_sign_digest_  s    rÌ   c                  C   s8   t jtjd td} | j}|  d¡}| |d¡s4J ‚d S )Nr   rW   s   hello)r   rz   r   r–   ro   r~   r   )rP   r   rƒ   r   r   r   Ú#test_SigningKey_with_unlikely_valuef  s    
rÍ   c                  C   s`   t } t|  ¡ |  ¡ |  ¡ |  ¡ ƒ} td|  ¡ | dƒ}t d|¡}t dt	¡}|j
|j
ks\J ‚d S )Nr   )
r   é   é$   rÎ   rÎ   r   é   r   r   r   é   )r   r   rS   r!   r"   r–   r   r   rz   r   r{   )r   rS   rP   rT   r   r   r   Ú+test_SigningKey_with_custom_curve_old_pointm  s    ÿürÒ   c                  C   s,   t  dt¡} t  dt¡}| j|jks(J ‚d S )Nr   )r   rz   r   r   ro   ©ru   rT   r   r   r   Ú2test_VerifyingKey_inequality_with_different_curves  s    rÔ   c                  C   s,   t  dt¡} t  dt¡}| j|jks(J ‚d S )Nr   rÎ   )r   rz   r   ro   rÓ   r   r   r   Ú9test_VerifyingKey_inequality_with_different_secret_pointsˆ  s    rÕ   )\Z	unittest2ZunittestÚImportErrorr'   Ú	NameErrorÚ
memoryviewr   r2   Zpytestre   Úkeysr   r   r   r®   r   r   Úutilr   r	   r
   r   r   r   Zcurvesr   r   r   Zellipticcurver   r   r   r   Zecdsar   ZTestCaser   rJ   rt   r‰   rU   r   rM   rN   r`   rP   ro   r   rÆ   rŸ   r”   ÚupdateÚdigestrÉ   r~   Zsig_rawZsig_derZsig_stringsZ	verifiersÚmodifierr¹   r­   Z
sig_formatr¶   r·   r¸   r   r´   Úmethod_namerº   r»   ÚappendÚparamÚformatÚmarkZparametrizer¼   r¾   Ú
convertersr,   r½   rÁ   rÃ   rÅ   rÈ   rÊ   rË   rÌ   rÍ   rÒ   rÔ   rÕ   r   r   r   r   Ú<module>   sæ   
 W w7ÿ
ÿ








ø


üý

þùÿÿ

ÿ





ø

	ÿ

	


