o
    6dA                     @   s  zd dl ZW n ey   d dlZY nw ze W n ey#   eZY nw 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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
 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.e0sJ e1e.Z2e2j3Z4dZ5e6e5d d ksJ e	7 Z7e78e5 e79 Z:e/e:e0sJ e2j;e5edZ<e/e<e0sJ e2j;e5edZ=e/e=e0sJ e2j;e5edZ>e/e>d  e0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 ]W\Z@ZAd&e@v r<d'd ZBneAZBd(e<ed)d fd*e=ed+d fd,e>ed-d ffD ].\ZCZDZEZFd.e4jGe5fd/e4jHe:ffD ]\ZIZJZKe?LejMeDeEeFeAeJeKd0Ne@eCeId1 qgqUq.ejOPd2e?d3d4 ZQd5ZRe6eRd6ksJ g ZSdd7d fdefdeTfdd8d fdd9d fd d:d fd"d;d fd$d<d ffD ]\Z@ZUeSLejMeUe@d1 qejOPd=eSd>d? ZVdZ-ee-Z.e/e.e0sJ ejOPd=eSdd@ dAdB ZWdCZXejOPd=eSdDdE ZYejOPd=eSdFdG ZZejOPd=eSdHdI Z[ejOPd=eSdJdK Z\dLdM Z]dNdO Z^dPdQ Z_dRdS Z`dTdU ZadS )V    N   )VerifyingKey
SigningKeyMalformedPointError)unpemUnexpectedDERencode_sequence
encode_oidencode_bitstring)sigencode_stringsigencode_dersigencode_stringssigdecode_stringsigdecode_dersigdecode_strings)NIST256pCurveBRAINPOOLP160r1Ed25519Ed448)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   LZ
zϗo8}X!h^pIYxao+Gv)	key_bytesr   from_stringvk)cls r    fC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\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   !Xp?|}rIWoWeD l   vq.y[Or~Vh]Ip<#'
)	ZassertIsNotNoner   assertIsInstancer   assertEqualpubkeypointxyselfr    r    r!   
test_bytes4   s   z%TestVerifyingKeyFromString.test_bytesc                 C   *   t t| j}| | j |  d S N)r   r   bufferr   r$   r   	to_stringr*   r   r    r    r!   test_bytes_memoryview@      z0TestVerifyingKeyFromString.test_bytes_memoryviewc                 C   r,   r-   r   r   	bytearrayr   r$   r   r/   r0   r    r    r!   test_bytearrayE   r2   z)TestVerifyingKeyFromString.test_bytearrayc                 C   .   t tt| j}| | j |  d S r-   )r   r   r.   r4   r   r$   r   r/   r0   r    r    r!   test_bytesarray_memoryviewJ      z5TestVerifyingKeyFromString.test_bytesarray_memoryviewc                 C   2   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_bytesO      
z4TestVerifyingKeyFromString.test_array_array_of_bytesc                 C   6   t  d| j}tt|}| | j |  d S r:   r=   r   r   r   r.   r$   r   r/   r>   r    r    r!   $test_array_array_of_bytes_memoryviewU      z?TestVerifyingKeyFromString.test_array_array_of_bytes_memoryviewc                 C   r9   NIr<   r>   r    r    r!   test_array_array_of_ints[   r@   z3TestVerifyingKeyFromString.test_array_array_of_intsc                 C   rA   rE   rB   r>   r    r    r!   #test_array_array_of_ints_memoryviewa   rD   z>TestVerifyingKeyFromString.test_array_array_of_ints_memoryviewc                 C   s*   t d| j }| | j |  d S N   r   r   r   r$   r   r/   r0   r    r    r!   test_bytes_uncompressedg   r2   z2TestVerifyingKeyFromString.test_bytes_uncompressedc                 C   s.   t td| j }| | j |  d S rI   r3   r0   r    r    r!   test_bytearray_uncompressedl   r8   z6TestVerifyingKeyFromString.test_bytearray_uncompressedc                 C   s2   t d| jd d  }| | j |  d S N      rK   r0   r    r    r!   test_bytes_compressedq   s   z0TestVerifyingKeyFromString.test_bytes_compressedc                 C   s6   t td| jd d  }| | j |  d S rN   r3   r0   r    r    r!   test_bytearray_compressedv   s   z4TestVerifyingKeyFromString.test_bytearray_compressedN)__name__
__module____qualname____doc__classmethodr"   r+   r1   r5   r7   r?   rC   rG   rH   rL   rM   rQ   rR   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(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDS )E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   ,   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_Z0A`}NOZq|f[8*g	zJera   )r   r]   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   D   d}|  t tj|dgd W d    d S 1 sw   Y  d S )Nre   named_curveZvalid_curve_encodings)assertRaisesr   r   r]   )r*   rg   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 sw   Y  | dt|j d S )Nraw)Zvalid_encodingszenabled (raw) encodings)rm   r   r   from_derr   assertInstr	exceptionr*   er    r    r!   "test_load_key_with_disabled_format   s   z:TestVerifyingKeyFromDer.test_load_key_with_disabled_formatc                 C   $   t | jtj}| |jtj d S r-   )r   rp   r   hashlibsha256assertIsdefault_hashfuncr0   r    r    r!   test_custom_hashfunc      z,TestVerifyingKeyFromDer.test_custom_hashfuncc                 C   rw   r-   )r   r]   rZ   rx   ry   rz   r{   r0   r    r    r!   "test_from_pem_with_custom_hashfunc   r}   z:TestVerifyingKeyFromDer.test_from_pem_with_custom_hashfuncc                 C   s&   t | j}| | j |  d S r-   )r   rp   r   r$   r   r/   r0   r    r    r!   r+      s   z"TestVerifyingKeyFromDer.test_bytesc                 C   r,   r-   )r   rp   r.   r   r$   r   r/   r0   r    r    r!   r1      r2   z-TestVerifyingKeyFromDer.test_bytes_memoryviewc                 C   r,   r-   )r   rp   r4   r   r$   r   r/   r0   r    r    r!   r5      r2   z&TestVerifyingKeyFromDer.test_bytearrayc                 C   r6   r-   )r   rp   r.   r4   r   r$   r   r/   r0   r    r    r!   r7      r8   z2TestVerifyingKeyFromDer.test_bytesarray_memoryviewc                 C   r9   r:   )r=   r   r   rp   r$   r   r/   r>   r    r    r!   r?      r@   z1TestVerifyingKeyFromDer.test_array_array_of_bytesc                 C   rA   r:   )r=   r   r   rp   r.   r$   r   r/   r>   r    r    r!   rC      rD   z<TestVerifyingKeyFromDer.test_array_array_of_bytes_memoryviewc                 C   s   |  | j| j  d S r-   )r$   r   r^   Zget_verifying_keyr)   r    r    r!   test_equality_on_verifying_keys      z7TestVerifyingKeyFromDer.test_equality_on_verifying_keysc                 C      |  | j| j d S r-   )assertNotEqualr   r_   r)   r    r    r!   !test_inequality_on_verifying_keys      z9TestVerifyingKeyFromDer.test_inequality_on_verifying_keysc                 C      |  | jd  d S r-   )r   r   r)   r    r    r!   1test_inequality_on_verifying_keys_not_implemented     zITestVerifyingKeyFromDer.test_inequality_on_verifying_keys_not_implementedc                 C   s   |  | j| jj d S r-   )r   r   rb   verifying_keyr)   r    r    r!   *test_VerifyingKey_inequality_on_same_curve  s   zBTestVerifyingKeyFromDer.test_VerifyingKey_inequality_on_same_curvec                 C   r   r-   )r   r^   rb   r)   r    r    r!   (test_SigningKey_inequality_on_same_curve  r   z@TestVerifyingKeyFromDer.test_SigningKey_inequality_on_same_curvec                 C   r   r-   )r   r   r^   r)   r    r    r!   test_inequality_on_wrong_types
  r   z6TestVerifyingKeyFromDer.test_inequality_on_wrong_typesc                 C   sD   | j jj}t| | | }t|| j j}| 	|| j  d S r-   )
r   r%   r&   r   ra   r'   r(   r   from_public_pointr$   )r*   Zpjr&   r   r    r    r!   test_from_public_point_old  s   
z2TestVerifyingKeyFromDer.test_from_public_point_oldc                 C   s,   t tj t}t|j}| d| d S )NzVerifyingKey.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$   )r*   r^   stringr    r    r!    test_ed25519_VerifyingKey_repr__  s   
z8TestVerifyingKeyFromDer.test_ed25519_VerifyingKey_repr__c                 C   sR   t j}| t}t|t  W d    n1 sw   Y  | dt|j d S )Nzincompatible with Edwards)	r   r   rm   
ValueErrorr   r   rq   rr   rs   )r*   r&   ru   r    r    r!   test_edwards_from_public_point!  s
   z6TestVerifyingKeyFromDer.test_edwards_from_public_pointc                 C   s@   t tj t}|j}t| t}|  | 	|| d S r-   )
r   r   r   r   r   r   r   r/   
precomputer$   r*   r^   r   r_   r    r    r!   &test_edwards_precompute_no_side_effect(  s
   z>TestVerifyingKeyFromDer.test_edwards_precompute_no_side_effectc                 C   sv   t t ttj tttj dtdd}| t	}t
| W d    n1 s+w   Y  | dt|j d S )Nr       ztrailing junk after public key)r   r	   r   oidr
   r\   r   r   rm   r   r   rp   rq   rr   rs   )r*   Zder_strru   r    r    r!   $test_parse_malfomed_eddsa_der_pubkey0  s   z<TestVerifyingKeyFromDer.test_parse_malfomed_eddsa_der_pubkeyc                 C   N   |  t}tddt W d    n1 sw   Y  | dt|j d S N    zunsupported for Edwards)rm   r   r   Zfrom_public_key_recoveryr   rq   rr   rs   rt   r    r    r!   %test_edwards_from_public_key_recovery<  s   z=TestVerifyingKeyFromDer.test_edwards_from_public_key_recoveryc                 C   r   r   )rm   r   r   Z$from_public_key_recovery_with_digestr   rq   rr   rs   rt   r    r    r!   1test_edwards_from_public_key_recovery_with_digestB  s   zITestVerifyingKeyFromDer.test_edwards_from_public_key_recovery_with_digestc                 C   J   d}t |}| |jt | |jt d}t |t}| || d S )Nq-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEAIwBQ0NZkIiiO41WJfm5BV42u3kQm7lYnvIXmCy8qy2U=
-----END PUBLIC KEY-----
    # Pd"(U~nAWD&V'/*e)	r   r]   r#   ra   r   rz   r   r   r$   )r*   vk_pemr   vk_strZvk_2r    r    r!   test_load_ed25519_from_pemJ  s   
z2TestVerifyingKeyFromDer.test_load_ed25519_from_pemc                 C   (   d}t |t}d}| ||  d S )Nr   sq   -----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEAIwBQ0NZkIiiO41WJfm5BV42u3kQm7lYnvIXmCy8qy2U=
-----END PUBLIC KEY-----
)r   r   r   r$   to_pemr*   r   r   r   r    r    r!   test_export_ed255_to_pem_  s   z0TestVerifyingKeyFromDer.test_export_ed255_to_pemc                 C   .   t t}|j}t| }| || d S r-   )r   r`   r   r   r   r]   r   r$   r   r    r    r!   test_ed25519_export_importo     
z2TestVerifyingKeyFromDer.test_ed25519_export_importc                 C   ,   d}t |}d}d}| ||| d S )Nr      data
s@   dGj3yEl PǏ`u/'ӖXF\P)խF<hMꍨyr   r]   
assertTrueverify)r*   r   r   datasigr    r    r!   test_ed25519_sig_verifyw  s   
z/TestVerifyingKeyFromDer.test_ed25519_sig_verifyc                 C   r   )N-----BEGIN PUBLIC KEY-----
MEMwBQYDK2VxAzoAeQtetSu7CMEzE+XWB10Bg47LCA0giNikOxHzdp+tZ/eK/En0
dTdYD2ll94g58MhSnBiBQB9A1MMA
-----END PUBLIC KEY-----
9   y^+3] ؤ;vgIu7Xie9R@@ )	r   r]   r#   ra   r   rz   r   r   r$   )r*   pem_strr   r   r_   r    r    r!   test_ed448_from_pem  s   
z+TestVerifyingKeyFromDer.test_ed448_from_pemc                 C   r   )Nr   s   -----BEGIN PUBLIC KEY-----
MEMwBQYDK2VxAzoAeQtetSu7CMEzE+XWB10Bg47LCA0giNikOxHzdp+tZ/eK/En0
dTdYD2ll94g58MhSnBiBQB9A1MMA
-----END PUBLIC KEY-----
)r   r   r   r$   r   r   r    r    r!   test_ed448_to_pem  s   z)TestVerifyingKeyFromDer.test_ed448_to_pemc                 C   r   r-   )r   r`   r   r   r   r]   r   r$   r   r    r    r!   test_ed448_export_import  r   z0TestVerifyingKeyFromDer.test_ed448_export_importc                 C   r   )Nr   r   sr   h,p5"5Q3= To0WE>Q`jC_28k	 x{]~1?0/U!L-LbS0fK@Э
 r   )r*   r   r   r   r   r    r    r!   test_ed448_sig_verify  s   
z-TestVerifyingKeyFromDer.test_ed448_sig_verifyN)&rS   rT   rU   rV   rW   r"   ri   rn   rv   r|   r~   r+   r1   r5   r7   r?   rC   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r    r    r!   rX   |   sH    
rX   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"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 )NrY   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   r]   sk1	sk1_pkcs8rb   )r   rc   r    r    r!   r"     s   zTestSigningKey.setUpClassc                 C   rd   )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 rf   )r   r]   r   r   r$   )r*   rc   r^   rb   r    r    r!   'test_decoding_explicit_curve_parameters  s   
z6TestSigningKey.test_decoding_explicit_curve_parametersc                 C   rj   )Nr   rk   rl   )rm   r   r   r]   )r*   rc   r    r    r!   >test_decoding_explicit_curve_parameters_with_explicit_disabled  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_exponentr   privkeyZsecret_multiplierra   r$   r   )r*   r^   r    r    r!   test_equality_on_signing_keys(  s
   z,TestSigningKey.test_equality_on_signing_keysc                 C   s4   | j d}| | | j j}| ||d d S )Nr   )r   signr   r   r   r*   r   r   r    r    r!   test_verify_with_empty_message/  s   
z-TestSigningKey.test_verify_with_empty_messagec                 C   s2   | j d}| j j}|  | ||d d S )N   message)r   r   r   r   r   r   r   r    r    r!   test_verify_with_precompute8  s   z*TestSigningKey.test_verify_with_precomputec                 C   s(   | j j}|  | jj}| || d S r-   )r   r   r   r   r$   )r*   Zvk1r_   r    r    r!   *test_compare_verifying_key_with_precomputeA  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)rb   r   r   r   r   r   r   r    r    r!    test_verify_with_lazy_precomputeI  s   z/TestSigningKey.test_verify_with_lazy_precomputec                 C   r   r-   )r   r   rb   r)   r    r    r!   test_inequality_on_signing_keysR  r   z.TestSigningKey.test_inequality_on_signing_keysc                 C   r   r-   )r   r   r)   r    r    r!   /test_inequality_on_signing_keys_not_implementedU  r   z>TestSigningKey.test_inequality_on_signing_keys_not_implementedc                 C   *   d}t |}t dt}| || d S )Nzw-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIDS6x9FO1PG8T4xIPg8Zd0z8uL6sVGZFEZrX17gHC/XU
-----END PRIVATE KEY-----
    4NOH>wLTfE׸)r   r]   r   r   r$   r*   r   r^   Zsk_strr    r    r!   test_ed25519_from_pemX  s   
z$TestSigningKey.test_ed25519_from_pemc                 C   (   t dt}d}| |jdd| d S )Nr   sw   -----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIDS6x9FO1PG8T4xIPg8Zd0z8uL6sVGZFEZrX17gHC/XU
-----END PRIVATE KEY-----
pkcs8format)r   r   r   r$   r   r*   r^   r   r    r    r!   test_ed25519_to_pemi  s   z"TestSigningKey.test_ed25519_to_pemc                 C   s,   t t}t |jdd}| || d S Nr   r   )r   r`   r   r]   r   r$   r*   r^   decodedr    r    r!   test_ed25519_to_and_from_pemx     
z+TestSigningKey.test_ed25519_to_and_from_pemc                 C   r   )Nz-----BEGIN PRIVATE KEY-----
MEcCAQAwBQYDK2VxBDsEOTyFuXqFLXgJlV8uDqcOw9nG4IqzLiZ/i5NfBDoHPzmP
OP0JMYaLGlTzwovmvCDJ2zLaezu9NLz9aQ==
-----END PRIVATE KEY-----
9   <z-x	_..&_:?98	1T 2{;4i)r   r]   r   r   r$   r   r    r    r!   r     s   
z"TestSigningKey.test_ed448_from_pemc                 C   r   )Nr   s   -----BEGIN PRIVATE KEY-----
MEcCAQAwBQYDK2VxBDsEOTyFuXqFLXgJlV8uDqcOw9nG4IqzLiZ/i5NfBDoHPzmP
OP0JMYaLGlTzwovmvCDJ2zLaezu9NLz9aQ==
-----END PRIVATE KEY-----
r   r   )r   r   r   r$   r   r   r    r    r!   r     s   z TestSigningKey.test_ed448_to_pemc                 C   s,   t t}t |jdd}| || d S r   )r   r`   r   r]   r   r$   r   r    r    r!   test_ed448_encode_decode  r   z'TestSigningKey.test_ed448_encode_decodeN)rS   rT   rU   rV   rW   r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r    r    r!   r     s&    
			r   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)r   Ztoy_p8)r   r   r      )hashfunc)	r   r   r   	toy_curver   r   rx   sha1r^   )r   ra   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$   r^   r   r/   r)   r    r    r!   test_public_key_sanity  r   z'TestTrivialCurve.test_public_key_sanityc                 C   s2   | j d}| |d | | j j|d d S )Nr   s   -.r^   sign_deterministicr$   r   r   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urandomr^   r   r$   lenr   r   r   r*   msgr   r    r    r!   &test_deterministic_sign_random_message  s   
z7TestTrivialCurve.test_deterministic_sign_random_messagec                 C   6   d}| j |}| |d | | j j|| d S )Ns    Os   6r   r   r    r    r!   /test_deterministic_sign_that_rises_R_zero_error  s   z@TestTrivialCurve.test_deterministic_sign_that_rises_R_zero_errorc                 C   r   )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)rS   rT   rU   rW   r"   r   r   r   r   r   r   r    r    r    r!   r     s    
r   rY   sd   some string for signingcontents don't really matterbut do include also some crazy values:  	
      )Z	sigencoder\   c                 C      | S r-   r    r'   r    r    r!   <lambda>      r   zbytes memoryviewc                 C      t | S r-   )r.   r   r    r    r!   r         r4   c                 C   r   r-   )r4   r   r    r    r!   r     r  zbytearray memoryviewc                 C      t t| S r-   r.   r4   r   r    r    r!   r         zarray.array of bytesc                 C      t  d| S r:   r=   r   r    r    r!   r     r  zarray.array of bytes memoryviewc                 C      t td| S r:   r.   r=   r   r    r    r!   r         zarray.array of intsc                 C   r  rE   r  r   r    r    r!   r   	  r  zarray.array of ints memoryviewc                 C   r  rE   r  r   r    r    r!   r   
  r	  Zintsc                 C   r   r-   r    r   r    r    r!   r     r   ro   c                 C   r   r-   convr   r    r    r!   r     r  derc                 C   r   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>  s    z<lambda>.<locals>.<genexpr>)tupler   r    r    r!   r     s    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RB<V%wrP   c                 C   r   r-   r    r   r    r    r!   r   >  r   c                 C   r  r-   r  r   r    r    r!   r   A  r  c                 C   r  r:   r  r   r    r    r!   r   B  r  c                 C   r  r:   r  r   r    r    r!   r   C  r	  c                 C   r  rE   r  r   r    r    r!   r   D  r  c                 C   r  rE   r  r   r    r    r!   r   E  r	  convertc                 C   s&   | t }t|}| t ksJ d S r-   )prv_key_bytesr   r   r/   r  keyr^   r    r    r!   test_SigningKey_from_stringJ     
r  c                 C   s&   | t }t|}| tksJ d S r-   )r   r   rp   r/   r  r  r    r    r!   test_SigningKey_from_der_  r   r"  s   
c                 C   s&   t j| t| td}t|t d S N)extra_entropy)r^   r   r   r$  r   r   r  r   r    r    r!   "test_SigningKey_sign_deterministick     r&  c                 C   s&   t j| t| td}t|t d S r#  )r^   Zsign_digest_deterministic	data_hashr$  r   r   r   r%  r    r    r!   )test_SigningKey_sign_digest_deterministicu  r'  r)  c                 C   s   t | t}t|t d S r-   )r^   r   r   r   r   r%  r    r    r!   test_SigningKey_sign~     r*  c                 C   s   t | t}t|t d S r-   )r^   Zsign_digestr(  r   r   r   r%  r    r    r!   test_SigningKey_sign_digest  r+  r,  c                  C   s8   t jtjd td} | j}| d}||dsJ d S )Nr   rf   s   hello)r   r   r   r   r   r   r   )r^   r   r   r    r    r!   #test_SigningKey_with_unlikely_value  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   ra   r'   r(   r   r   r   r   r   r   )r   ra   r^   rb   r    r    r!   +test_SigningKey_with_custom_curve_old_point  s    r2  c                  C   s,   t dt} t dt}| j|jksJ d S )Nr   )r   r   r   r   r   r   rb   r    r    r!   2test_VerifyingKey_inequality_with_different_curves     r4  c                  C   s,   t dt} t dt}| j|jksJ d S )Nr   r.  )r   r   r   r   r3  r    r    r!   9test_VerifyingKey_inequality_with_different_secret_points  r5  r6  c                  C   s    d} t | }|jtksJ d S )Nz-----BEGIN PRIVATE KEY-----
    MFMCAQEwBQYDK2VwBCIEICc2F2ag1n1QP0jY+g9qWx5sDkx0s/HdNi3cSRHw+zsI
    oSMDIQA+HQ2xCif8a/LMWR2m5HaCm5I2pKe/cc8OiRANMHxjKQ==
    -----END PRIVATE KEY-----)r   r]   ra   r   )pemr^   r    r    r!   &test_SigningKey_from_pem_pkcs8v2_EdDSA  s   
r8  )bZ	unittest2ZunittestImportErrorr.   	NameError
memoryviewr   r=   Zpytestrx   keysr   r   r   r  r   r   r   r	   r
   utilr   r   r   r   r   r   Zcurvesr   r   r   r   r   Zellipticcurver   r   r   r   Zecdsar   ZTestCaser   rX   r   r   rc   r   r[   r\   rp   r^   r   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paramr   markZparametrizer  r  
convertersr4   r  r  r"  r$  r&  r)  r*  r,  r-  r2  r4  r6  r8  r    r    r    r!   <module>   s     W  _ S9
























	

	


