o
    ¥6÷d3  ã                   @   s<  zd dl ZW n ey   d dlZY nw d dlZd dl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 ddlmZ G dd„ dejƒZG d	d
„ d
ejƒZejjdedd„ eD ƒddd„ ƒZejjdedd„ eD ƒddd„ ƒZejjdedd„ eD ƒddd„ ƒZejjdedd„ eD ƒddd„ ƒZdS )é    Né   )ÚCurveÚNIST256pÚcurvesÚUnknownCurveErrorÚPRIME_FIELD_OIDÚcurve_by_name)ÚCurveFpÚPointJacobiÚ	CurveEdTw)Úder)Únumber_to_stringc                   @   sÐ   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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/d0„ Zd1S )2ÚTestParameterEncodingc                 C   s
   d| _ d S )Na0  MIHgAgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP///////////////zBEBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6k+ez671VdpiGvGUdBrDMU7D2O848PifSYEsEQQRrF9Hy4SxCR/i85uVjpEDydwN9gS3rM6D0oTlF2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3v1H1AiEA/////wAAAAD//////////7zm+q2nF56E87nKwvxjJVECAQE=)Úbase64_params)Úcls© r   úhC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\ecdsa/test_curves.pyÚ
setUpClass   s   ÿz TestParameterEncoding.setUpClassc                 C   s   d}t  |¡}|  |t¡ d S )Náo  -----BEGIN EC PARAMETERS-----
MIHgAgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP/////////
//////zBEBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12K
o6k+ez671VdpiGvGUdBrDMU7D2O848PifSYEsEQQRrF9Hy4SxCR/i85uVjpEDyd
wN9gS3rM6D0oTlF2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3v1H1
AiEA/////wAAAAD//////////7zm+q2nF56E87nKwvxjJVECAQE=
-----END EC PARAMETERS-----
)r   Úfrom_pemÚassertIsr   )ÚselfÚ
pem_paramsÚcurver   r   r   Útest_from_pem"   s   ÿ
	z#TestParameterEncoding.test_from_pemc                 C   óT   d}|   tj¡}t |dg¡ W d   ƒ n1 sw   Y  |  dt|jƒ¡ d S )Nr   Únamed_curvezexplicit curve parameters not©ÚassertRaisesr   ÚUnexpectedDERr   r   ÚassertInÚstrÚ	exception©r   r   Úer   r   r   Ú2test_from_pem_with_explicit_when_explicit_disabled0   s   ÿ	ÿzHTestParameterEncoding.test_from_pem_with_explicit_when_explicit_disabledc                 C   r   )NzK-----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
Úexplicitz named_curve curve parameters notr   r#   r   r   r   Ú8test_from_pem_with_named_curve_with_named_curve_disabled?   s   ÿÿzNTestParameterEncoding.test_from_pem_with_named_curve_with_named_curve_disabledc                 C   sP   d}|   tj¡}t |¡ W d   ƒ n1 sw   Y  |  dt|jƒ¡ d S )Nai  -----BEGIN PARAMETERS-----
MIHgAgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP/////////
//////zBEBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12K
o6k+ez671VdpiGvGUdBrDMU7D2O848PifSYEsEQQRrF9Hy4SxCR/i85uVjpEDyd
wN9gS3rM6D0oTlF2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3v1H1
AiEA/////wAAAAD//////////7zm+q2nF56E87nKwvxjJVECAQE=
-----END PARAMETERS-----
zPARAMETERS PEM headerr   r#   r   r   r   Útest_from_pem_with_wrong_headerJ   s   ÿ	ÿz5TestParameterEncoding.test_from_pem_with_wrong_headerc                 C   s   d}t  ¡ }|  ||¡ d S )NsK   -----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
)r   Zto_pemÚassertEqual)r   r   Úencodingr   r   r   Útest_to_pemY   s   ÿz!TestParameterEncoding.test_to_pemc                 C   s   |   td¡ d S )Né   )ÚassertNotEqualr   )r   r   r   r   Ú"test_compare_with_different_objectc   s   z8TestParameterEncoding.test_compare_with_different_objectc                 C   s   t  ¡ }|  d|¡ d S )Ns
   *†HÎ=©r   Úto_derr)   ©r   Úencodedr   r   r   Útest_named_curve_params_derf   s   z1TestParameterEncoding.test_named_curve_params_derc                 C   s"   t  ¡ }t  d¡}|  ||¡ d S ©Nr   r/   )r   Zencoded_defaultZencoded_namedr   r   r   Ú+test_verify_that_default_is_named_curve_derl   s   
zATestParameterEncoding.test_verify_that_default_is_named_curve_derc                 C   s&   t  d¡}|  |tt | j¡ƒ¡ d S ©Nr&   )r   r0   r)   ÚbytesÚbase64Ú	b64decoder   r1   r   r   r   Ú test_encoding_to_explicit_paramsr   s   
z6TestParameterEncoding.test_encoding_to_explicit_paramsc                 C   sJ   |   t¡}t d¡ W d   ƒ n1 sw   Y  |  dt|jƒ¡ d S )NÚunsupportedzOnly 'named_curve')r   Ú
ValueErrorr   r0   r    r!   r"   ©r   r$   r   r   r   Ú!test_encoding_to_unsupported_typew   s   ÿz7TestParameterEncoding.test_encoding_to_unsupported_typec                 C   s*   t  dd¡}d}|  |tt |¡ƒ¡ d S )Nr&   Ú
compresseda  MIHAAgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP///////////////zBEBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6k+ez671VdpiGvGUdBrDMU7D2O848PifSYEsEIQNrF9Hy4SxCR/i85uVjpEDydwN9gS3rM6D0oTlF2JjClgIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8YyVRAgEB)r   r0   r)   r7   r8   r9   )r   r2   Zcompressed_base_pointr   r   r   Ú+test_encoding_to_explicit_compressed_params}   s   ÿÿzATestParameterEncoding.test_encoding_to_explicit_compressed_paramsc                 C   s(   d}t  tt |¡ƒ¡}|  t|¡ d S )NaP  MIH3AgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP///////////////zBbBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6k+ez671VdpiGvGUdBrDMU7D2O848PifSYEsDFQDEnTYIhucEk2pmeOETnSa3gZ9+kARBBGsX0fLhLEJH+Lzm5WOkQPJ3A32BLeszoPShOUXYmMKWT+NC4v4af5uO5+tKfA+eFivOM1drMV7Oy7ZAaDe/UfUCIQD/////AAAAAP//////////vOb6racXnoTzucrC/GMlUQIBAQ==)r   Úfrom_derr7   r8   r9   r)   r   )r   Zp256_explicitÚdecodedr   r   r   Ú#test_decoding_explicit_from_opensslŒ   s   ÿ	z9TestParameterEncoding.test_decoding_explicit_from_opensslc                 C   s&   t  tt | j¡ƒ¡}|  |t¡ d S ©N)r   rA   r7   r8   r9   r   r   r   )r   r   r   r   r   Ú-test_decoding_well_known_from_explicit_paramsœ   s   zCTestParameterEncoding.test_decoding_well_known_from_explicit_paramsc                 C   sN   |   t¡}t ddg¡ W d   ƒ n1 sw   Y  |  dt|jƒ¡ d S )Nó    Z
explicitCAzOnly named_curve)r   r<   r   rA   r    r!   r"   r=   r   r   r   Ú,test_decoding_with_incorrect_valid_encodings¡   s   ÿzBTestParameterEncoding.test_decoding_with_incorrect_valid_encodingsc                 C   s`   t dddƒ}t|dddddd}t|dd	dddd}td
||d ƒ}td
||d ƒ}|  ||¡ d S )Né   r   é   é   é   é	   T©Ú	generatoré   Úunknown)r	   r
   r   r-   )r   Úcurve_fpZbase_aZbase_bZcurve_aZcurve_br   r   r   Ú-test_compare_curves_with_different_generators§   s   zCTestParameterEncoding.test_compare_curves_with_different_generatorsc                 C   sj   t dddƒ}t|dddddd}td	||d ƒ}| ¡ }t |¡}|  ||¡ d
}|  |tt |¡ƒ¡ d S )NrH   r   rI   rJ   rK   rL   TrM   rP   z0MCECAQEwDAYHKoZIzj0BAQIBFzAGBAEBBAEHBAMEDQMCAQk=)	r	   r
   r   r0   rA   r)   r7   r8   r9   )r   rQ   Ú
base_pointr   r2   rB   Úexpectedr   r   r   Ú$test_default_encode_for_custom_curve±   s   
z:TestParameterEncoding.test_default_encode_for_custom_curvec                 C   sx   t dddƒ}t|dddddd}td	||d ƒ}|  t¡}| d
¡ W d   ƒ n1 s,w   Y  |  dt|jƒ¡ d S )NrH   r   rI   rJ   rK   rL   TrM   rP   r   zCan't encode curve)	r	   r
   r   r   r   r0   r    r!   r"   )r   rQ   rS   r   r$   r   r   r   Ú(test_named_curve_encode_for_custom_curveÁ   s   ÿz>TestParameterEncoding.test_named_curve_encode_for_custom_curvec                 C   sT   d}|   t¡}t t |¡¡ W d   ƒ n1 sw   Y  |  dt|jƒ¡ d S )NzÈMIGRAgEBMBwGByqGSM49AQIwEQIBcQYJKoZIzj0BAgMCAgEJMDkEDwAwiCUMpufH/mSc6Fgg9wQPAOi+5NPiJgdEGIvg6ccjAxUAEOcjqxTWluZ2h1YVF1b+v4/LSakEHwQAnXNhbzX0qxQH1zViwQ8ApSgwJ3lY7oTRMV7TGIYCDwEAAAAAAAAA2czsijnlbwIBAg==z#Characteristic 2 curves unsupported)	r   r   r   rA   r8   r9   r    r!   r"   )r   Zsect113r1_explicitr$   r   r   r   Ú!test_try_decoding_binary_explicitÌ   s   ÿÿz7TestParameterEncoding.test_try_decoding_binary_explicitc                 C   sb   t jtjŽ t  d¡ }|  t j¡}t |¡ W d   ƒ n1 s!w   Y  |  	dt
|jƒ¡ d S )Nr   zUnexpected data after OID)r   Ú
encode_oidr   ÚoidÚencode_integerr   r   r   rA   r    r!   r"   ©r   Úbad_derr$   r   r   r   Ú!test_decode_malformed_named_curveÙ   s
   ÿz7TestParameterEncoding.test_decode_malformed_named_curvec                 C   sf   t t | j¡ƒt d¡ }|  tj¡}t 	|¡ W d   ƒ n1 s#w   Y  |  
dt|jƒ¡ d S )Nr   z"Unexpected data after ECParameters)r7   r8   r9   r   r   rZ   r   r   r   rA   r    r!   r"   r[   r   r   r   Ú4test_decode_malformed_explicit_garbage_after_ECParamá   s   
ÿþÿzJTestParameterEncoding.test_decode_malformed_explicit_garbage_after_ECParamc                 C   s\   t  t  d¡¡}|  t j¡}t |¡ W d   ƒ n1 sw   Y  |  dt|j	ƒ¡ d S )Né   z!Unknown parameter encoding format)
r   Úencode_sequencerZ   r   r   r   rA   r    r!   r"   r[   r   r   r   Ú,test_decode_malformed_unknown_version_numberë   s
   ÿzBTestParameterEncoding.test_decode_malformed_unknown_version_numberc                 C   sÎ   t j ¡ }t t d¡t t ddd¡t |¡¡t t tt j 	¡ | |ƒ¡t tt j 
¡ |ƒ¡¡t t j d¡¡t t j ¡ ¡¡}|  t¡}t |¡ W d   ƒ n1 sWw   Y  |  dt|jƒ¡ d S )Nr   r_   rK   ÚuncompressedzUnknown field type: (1, 2, 3))r   r   Úpr   r`   rZ   rX   Úencode_octet_stringr   ÚaÚbrN   Úto_bytesÚorderr   r   r   rA   r    r!   r"   ©r   Zcurve_pr\   r$   r   r   r   Ú(test_decode_malformed_unknown_field_typeó   s.   
ÿÿÿü
ÿðÿz>TestParameterEncoding.test_decode_malformed_unknown_field_typec                 C   sÔ   t j ¡ }t t d¡t tjtŽ t |¡t d¡¡t t t	t j 
¡ | |ƒ¡t t	t j ¡ |ƒ¡¡t t j d¡¡t t j ¡ ¡¡}|  tj¡}t |¡ W d   ƒ n1 sZw   Y  |  dt|jƒ¡ d S )Nr   rb   zPrime-p element)r   r   rc   r   r`   rZ   rX   r   rd   r   re   rf   rN   rg   rh   r   r   r   rA   r    r!   r"   ri   r   r   r   Ú)test_decode_malformed_garbage_after_prime  s2   
ýÿÿü
ÿîÿz?TestParameterEncoding.test_decode_malformed_garbage_after_primeN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r%   r'   r(   r+   r.   r3   r5   r:   r>   r@   rC   rE   rG   rR   rU   rV   rW   r]   r^   ra   rj   rk   r   r   r   r   r      s4    



r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestCurveSearchingc                 C   ó   t dƒ}|  |t¡ d S )Nr   ©r   r   r   ©r   Úcr   r   r   Útest_correct_name+  ó   z$TestCurveSearching.test_correct_namec                 C   rq   )NZ
prime256v1rr   rs   r   r   r   Útest_openssl_name/  rv   z$TestCurveSearching.test_openssl_namec                 C   sH   |   t¡}tdƒ W d   ƒ n1 sw   Y  |  dt|jƒ¡ d S )Nzfoo barzFname 'foo bar' unknown, only curves supported: ['NIST192p', 'NIST224p'©r   r   r   r    r!   r"   r=   r   r   r   Útest_unknown_curve3  ó   
ÿýz%TestCurveSearching.test_unknown_curvec                 C   sH   |   t¡}td ƒ W d   ƒ n1 sw   Y  |  dt|jƒ¡ d S )NzAname None unknown, only curves supported: ['NIST192p', 'NIST224p'rx   r=   r   r   r   Útest_with_None_as_parameter=  rz   z.TestCurveSearching.test_with_None_as_parameterN)rl   rm   rn   ru   rw   ry   r{   r   r   r   r   rp   *  s
    
rp   r   c                 C   ó   g | ]}|j ‘qS r   ©Úname©Ú.0Úir   r   r   Ú
<listcomp>H  ó    r‚   )Úidsc                 C   s    t  |  d¡¡}| |ksJ ‚d S r4   ©r   rA   r0   ©r   Úretr   r   r   Ú%test_curve_params_encode_decode_namedH  s   rˆ   c                 C   r|   r   r}   r   r   r   r   r‚   O  rƒ   c                 C   sf   t | jtƒr#t t¡ |  d¡ W d   ƒ d S 1 sw   Y  d S t |  d¡¡}| |ks1J ‚d S r6   ©	Ú
isinstancer   r   ÚpytestZraisesr   r0   r   rA   r†   r   r   r   Ú(test_curve_params_encode_decode_explicitO  s   "ÿrŒ   c                 C   r|   r   r}   r   r   r   r   r‚   Z  rƒ   c                 C   s   t  |  ¡ ¡}| |ksJ ‚d S rD   r…   r†   r   r   r   Ú'test_curve_params_encode_decode_defaultZ  s   r   c                 C   r|   r   r}   r   r   r   r   r‚   a  rƒ   c                 C   sj   t | jtƒr$t t¡ |  dd¡ W d   ƒ d S 1 sw   Y  d S t |  dd¡¡}| |ks3J ‚d S )Nr&   r?   r‰   r†   r   r   r   Ú3test_curve_params_encode_decode_explicit_compresseda  s   "ÿrŽ   )Z	unittest2ZunittestÚImportErrorr8   r‹   r   r   r   r   r   r   Zellipticcurver	   r
   r   Ú r   Úutilr   ZTestCaser   rp   ÚmarkZparametrizerˆ   rŒ   r   rŽ   r   r   r   r   Ú<module>   s.    ÿ   



