
    tZh3                        	 d dl Z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ej&                        Z G d	 d
ej&                        Zej,                  j/                  deeD  cg c]  } | j0                   c}       d        Zej,                  j/                  deeD  cg c]  } | j0                   c}       d        Zej,                  j/                  deeD  cg c]  } | j0                   c}       d        Zej,                  j/                  deeD  cg c]  } | j0                   c}       d        Zy# e$ r d dlZY Uw xY wc c} w c c} w c c} w c c} w )    N   )CurveNIST256pcurvesUnknownCurveErrorPRIME_FIELD_OIDcurve_by_name)CurveFpPointJacobi	CurveEdTw)der)number_to_stringc                       e 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y)TestParameterEncodingc                     d| _         y )Na0  MIHgAgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP///////////////zBEBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6k+ez671VdpiGvGUdBrDMU7D2O848PifSYEsEQQRrF9Hy4SxCR/i85uVjpEDydwN9gS3rM6D0oTlF2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3v1H1AiEA/////wAAAAD//////////7zm+q2nF56E87nKwvxjJVECAQE=)base64_params)clss    m/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/ecdsa/test_curves.py
setUpClassz TestParameterEncoding.setUpClass   s    
C 	    c                 ^    d}t        j                  |      }| j                  |t               y )No  -----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curves      r   test_from_pemz#TestParameterEncoding.test_from_pem"   s*    , 	 z*eX&r   c                     d}| j                  t        j                        5 }t        j                  |dg       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr   named_curvezexplicit curve parameters notassertRaisesr   UnexpectedDERr   r   assertInstr	exceptionr   r   es      r   2test_from_pem_with_explicit_when_explicit_disabledzHTestParameterEncoding.test_from_pem_with_explicit_when_explicit_disabled0   sc    , 	 s001 	8QNN:7	8 	5s1;;7GH	8 	8   A((A1c                     d}| j                  t        j                        5 }t        j                  |dg       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)NzK-----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
explicitz named_curve curve parameters notr!   r'   s      r   8test_from_pem_with_named_curve_with_named_curve_disabledzNTestParameterEncoding.test_from_pem_with_named_curve_with_named_curve_disabled?   sc    , 	
 s001 	5QNN:
|4	5 	8#akk:JK	5 	5r*   c                     d}| j                  t        j                        5 }t        j                  |       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)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'   s      r   test_from_pem_with_wrong_headerz5TestParameterEncoding.test_from_pem_with_wrong_headerJ   s_    ) 	 s001 	'QNN:&	' 	-s1;;/?@	' 	's   A&&A/c                 T    d}t        j                         }| j                  ||       y )NsK   -----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
)r   to_pemassertEqual)r   r   encodings      r   test_to_pemz!TestParameterEncoding.test_to_pemY   s*    - 	
 ??$X.r   c                 0    | j                  t        d       y )N   )assertNotEqualr   )r   s    r   "test_compare_with_different_objectz8TestParameterEncoding.test_compare_with_different_objectc   s    Hc*r   c                 P    t        j                         }| j                  d|       y )Ns
   *H=r   to_derr2   r   encodeds     r   test_named_curve_params_derz1TestParameterEncoding.test_named_curve_params_derf   s!    //# 	DgNr   c                 z    t        j                         }t        j                  d      }| j                  ||       y Nr    r:   )r   encoded_defaultencoded_nameds      r   +test_verify_that_default_is_named_curve_derzATestParameterEncoding.test_verify_that_default_is_named_curve_derl   s,    "//+ 6-8r   c                     t        j                  d      }| j                  |t        t	        j
                  | j                                     y Nr,   )r   r;   r2   bytesbase64	b64decoder   r<   s     r    test_encoding_to_explicit_paramsz6TestParameterEncoding.test_encoding_to_explicit_paramsr   s6    //*-%(8(89K9K(L"MNr   c                     | j                  t              5 }t        j                  d       d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)NunsupportedzOnly 'named_curve')r"   
ValueErrorr   r;   r$   r%   r&   r   r(   s     r   !test_encoding_to_unsupported_typez7TestParameterEncoding.test_encoding_to_unsupported_typew   sM    z* 	+aOOM*	+ 	*C,<=	+ 	+s   AA#c                     t        j                  dd      }d}| j                  |t        t	        j
                  |                   y )Nr,   
compresseda  MIHAAgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP///////////////zBEBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6k+ez671VdpiGvGUdBrDMU7D2O848PifSYEsEIQNrF9Hy4SxCR/i85uVjpEDydwN9gS3rM6D0oTlF2JjClgIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8YyVRAgEB)r   r;   r2   rF   rG   rH   )r   r=   compressed_base_points      r   +test_encoding_to_explicit_compressed_paramszATestParameterEncoding.test_encoding_to_explicit_compressed_params}   sB    //*l; 	 	U6++,ABC	
r   c                     d}t        j                  t        t        j                  |                  }| j                  t        |       y )NaP  MIH3AgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP///////////////zBbBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6k+ez671VdpiGvGUdBrDMU7D2O848PifSYEsDFQDEnTYIhucEk2pmeOETnSa3gZ9+kARBBGsX0fLhLEJH+Lzm5WOkQPJ3A32BLeszoPShOUXYmMKWT+NC4v4af5uO5+tKfA+eFivOM1drMV7Oy7ZAaDe/UfUCIQD/////AAAAAP//////////vOb6racXnoTzucrC/GMlUQIBAQ==)r   from_derrF   rG   rH   r2   r   )r   p256_explicitdecodeds      r   #test_decoding_explicit_from_opensslz9TestParameterEncoding.test_decoding_explicit_from_openssl   s<     	 ..v'7'7'F!GH7+r   c                     t        j                  t        t        j                  | j
                                    }| j                  |t               y N)r   rT   rF   rG   rH   r   r   r   )r   r   s     r   -test_decoding_well_known_from_explicit_paramszCTestParameterEncoding.test_decoding_well_known_from_explicit_params   s4    uV%5%5d6H6H%IJKeX&r   c                     | j                  t              5 }t        j                  ddg       d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nr   
explicitCAzOnly named_curve)r"   rL   r   rT   r$   r%   r&   rM   s     r   ,test_decoding_with_incorrect_valid_encodingszBTestParameterEncoding.test_decoding_with_incorrect_valid_encodings   sQ    z* 	0aNN3/	0 	(#akk*:;	0 	0s   AA%c                     t        ddd      }t        |ddddd      }t        |dd	ddd      }t        d
||d       }t        d
||d       }| j                  ||       y )N   r            	   T	generator   unknown)r
   r   r   r7   )r   curve_fpbase_abase_bcurve_acurve_bs         r   -test_compare_curves_with_different_generatorszCTestParameterEncoding.test_compare_curves_with_different_generators   sh    2q!$Xr1adCXq"adC	8VT:	8VT:GW-r   c                 *   t        ddd      }t        |ddddd      }t        d	||d       }|j                         }t        j                  |      }| j                  ||       d
}| j                  |t        t        j                  |                   y )Nr_   r   r`   ra   rb   rc   Trd   rg   z0MCECAQEwDAYHKoZIzj0BAQIBFzAGBAEBBAEHBAMEDQMCAQk=)	r
   r   r   r;   rT   r2   rF   rG   rH   )r   rh   
base_pointr   r=   rV   expecteds          r   $test_default_encode_for_custom_curvez:TestParameterEncoding.test_default_encode_for_custom_curve   s    2q!$ 2q!Q$G
i:t<,,...)(E%(8(8(B"CDr   c                    t        ddd      }t        |ddddd      }t        d	||d       }| j                  t              5 }|j                  d
       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr_   r   r`   ra   rb   rc   Trd   rg   r    zCan't encode curve)	r
   r   r   r"   r   r;   r$   r%   r&   )r   rh   ro   r   r(   s        r   (test_named_curve_encode_for_custom_curvez>TestParameterEncoding.test_named_curve_encode_for_custom_curve   s    2q!$ 2q!Q$G
i:t<01 	(QLL'	( 	*C,<=	( 	(s   BBc                     d}| j                  t              5 }t        j                  t	        j
                  |             d d d        | j                  dt        j                               y # 1 sw Y   /xY w)NzMIGRAgEBMBwGByqGSM49AQIwEQIBcQYJKoZIzj0BAgMCAgEJMDkEDwAwiCUMpufH/mSc6Fgg9wQPAOi+5NPiJgdEGIvg6ccjAxUAEOcjqxTWluZ2h1YVF1b+v4/LSakEHwQAnXNhbzX0qxQH1zViwQ8ApSgwJ3lY7oTRMV7TGIYCDwEAAAAAAAAA2czsijnlbwIBAg==z#Characteristic 2 curves unsupported)	r"   r   r   rT   rG   rH   r$   r%   r&   )r   sect113r1_explicitr(   s      r   !test_try_decoding_binary_explicitz7TestParameterEncoding.test_try_decoding_binary_explicit   sj     	 01 	AQNN6++,>?@	A 	;S=MN	A 	As   )A//A8c                 L   t        j                  t        j                   t        j                  d      z   }| j                  t         j                        5 }t        j                  |       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr   zUnexpected data after OID)r   
encode_oidr   oidencode_integerr"   r#   r   rT   r$   r%   r&   r   bad_derr(   s      r   !test_decode_malformed_named_curvez7TestParameterEncoding.test_decode_malformed_named_curve   su    ..(,,/#2D2DQ2GGs001 	$QNN7#	$ 	13q{{3CD	$ 	$s   BB#c                 \   t        t        j                  | j                              t	        j
                  d      z   }| j                  t        j                        5 }t        j                  |       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr   z"Unexpected data after ECParameters)rF   rG   rH   r   r   rz   r"   r#   r   rT   r$   r%   r&   r{   s      r   4test_decode_malformed_explicit_garbage_after_ECParamzJTestParameterEncoding.test_decode_malformed_explicit_garbage_after_ECParam   s    T//0
q!" s001 	$QNN7#	$ 	:C<LM	$ 	$s   B""B+c                 0   t        j                  t        j                  d            }| j                  t         j                        5 }t        j                  |       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)N   z!Unknown parameter encoding format)
r   encode_sequencerz   r"   r#   r   rT   r$   r%   r&   r{   s      r   ,test_decode_malformed_unknown_version_numberzBTestParameterEncoding.test_decode_malformed_unknown_version_number   sn    %%c&8&8&;<s001 	$QNN7#	$ 	93q{{;KL	$ 	$s   BBc                    t         j                  j                         }t        j                  t        j
                  d      t        j                  t        j                  ddd      t        j
                  |            t        j                  t        j                  t        t         j                  j                         |z  |            t        j                  t        t         j                  j                         |                  t        j                  t         j                  j                  d            t        j
                  t         j                  j                                     }| j                  t              5 }t!        j"                  |       d d d        | j%                  dt'        j(                               y # 1 sw Y   /xY w)Nr   r   rb   uncompressedzUnknown field type: (1, 2, 3))r   r   pr   r   rz   rx   encode_octet_stringr   abre   to_bytesorderr"   r   r   rT   r$   r%   r&   r   curve_pr|   r(   s       r   (test_decode_malformed_unknown_field_typez>TestParameterEncoding.test_decode_malformed_unknown_field_type   sO   ..""$%%q!q!Q'););G)D ''$X^^%5%5%7'%A7K ''$X^^%5%5%7A	 ##""++N; x11779:!
& 01 	$QNN7#	$ 	5s1;;7GH	$ 	$s   GGc                    t         j                  j                         }t        j                  t        j
                  d      t        j                  t        j                  t         t        j
                  |      t        j
                  d            t        j                  t        j                  t        t         j                  j                         |z  |            t        j                  t        t         j                  j                         |                  t        j                  t         j                  j                  d            t        j
                  t         j                  j                                     }| j                  t        j                         5 }t#        j$                  |       d d d        | j'                  dt)        j*                               y # 1 sw Y   /xY w)Nr   r   zPrime-p element)r   r   r   r   r   rz   rx   r   r   r   r   r   re   r   r   r"   r#   r   rT   r$   r%   r&   r   s       r   )test_decode_malformed_garbage_after_primez?TestParameterEncoding.test_decode_malformed_garbage_after_prime  s_   ..""$%%q!0""7+""1%
 ''$X^^%5%5%7'%A7K ''$X^^%5%5%7A	 ##""++N; x11779:%
* s001 	$QNN7#	$ 	'Q[[)9:	$ 	$s   !G%%G.N)__name__
__module____qualname__classmethodr   r   r)   r-   r/   r4   r8   r>   rC   rI   rN   rR   rW   rZ   r]   rm   rq   rs   rv   r}   r   r   r   r    r   r   r   r      s    	
 	
'I	LA/+O9O
>
, '
<.E 	>OENMI4;r   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestCurveSearchingc                 F    t        d      }| j                  |t               y )Nr   r	   r   r   r   cs     r   test_correct_namez$TestCurveSearching.test_correct_name+  s    *%a"r   c                 F    t        d      }| j                  |t               y )N
prime256v1r   r   s     r   test_openssl_namez$TestCurveSearching.test_openssl_name/  s    ,'a"r   c                     | j                  t              5 }t        d       d d d        | j                  dt	        j
                               y # 1 sw Y   /xY w)Nzfoo barzFname 'foo bar' unknown, only curves supported: ['NIST192p', 'NIST224p'r"   r   r	   r$   r%   r&   rM   s     r   test_unknown_curvez%TestCurveSearching.test_unknown_curve3  sO    01 	%Q)$	% 	&	
	% 	%   AAc                     | j                  t              5 }t        d        d d d        | j                  dt	        j
                               y # 1 sw Y   /xY w)NzAname None unknown, only curves supported: ['NIST192p', 'NIST224p'r   rM   s     r   test_with_None_as_parameterz.TestCurveSearching.test_with_None_as_parameter=  sO    01 	 Q$	  	&	
	  	 r   N)r   r   r   r   r   r   r   r   r   r   r   r   *  s    ##

r   r   r   )idsc                 Z    t        j                  | j                  d            }| |k(  sJ y r@   r   rT   r;   r   rets     r   %test_curve_params_encode_decode_namedr   H  s%    
..m4
5CC<<r   c                    t        | j                  t              r4t        j                  t
              5  | j                  d       d d d        y t        j                  | j                  d            }| |k(  sJ y # 1 sw Y   y xY wrE   	
isinstancer   r   pytestraisesr   r;   r   rT   r   s     r   (test_curve_params_encode_decode_explicitr   O  sh    %++y)]],- 	%LL$	% 	% nnU\\*56||	% 	%s   A;;Bc                 X    t        j                  | j                               }| |k(  sJ y rY   r   r   s     r   'test_curve_params_encode_decode_defaultr   Z  s"    
..
(CC<<r   c                    t        | j                  t              r5t        j                  t
              5  | j                  dd       d d d        y t        j                  | j                  dd            }| |k(  sJ y # 1 sw Y   y xY w)Nr,   rP   r   r   s     r   3test_curve_params_encode_decode_explicit_compressedr   a  sl    %++y)]],- 	3LL\2	3 	3 nnU\\*lCD||	3 	3s   A==B)	unittest2unittestImportErrorrG   r   r   r   r   r   r   r	   ellipticcurver
   r   r    r   utilr   TestCaser   r   markparametrizenamer   r   r   r   )is   0r   <module>r      si       ; :  "R;H-- R;j
** 
< &v.F!qvv.FG H &v.F!qvv.FG H &v.F!qvv.FG H &v.F!qvv.FG H
  J
 /G /G /G /Gs)   E 9E5E$1E)-E.	EE