§
    qŠtj3  ã                   óX  — 	 d dl Zn# e$ r d dlZY nw xY 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ej        ¦  «        Z G d	„ d
ej        ¦  «        Zej                             ded„ eD ¦   «         ¬¦  «        d„ ¦   «         Zej                             ded„ eD ¦   «         ¬¦  «        d„ ¦   «         Zej                             ded„ eD ¦   «         ¬¦  «        d„ ¦   «         Zej                             ded„ eD ¦   «         ¬¦  «        d„ ¦   «         ZdS )é    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dS )ÚTestParameterEncodingc                 ó   — d| _         d S )Na0  MIHgAgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP///////////////zBEBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6k+ez671VdpiGvGUdBrDMU7D2O848PifSYEsEQQRrF9Hy4SxCR/i85uVjpEDydwN9gS3rM6D0oTlF2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3v1H1AiEA/////wAAAAD//////////7zm+q2nF56E87nKwvxjJVECAQE=)Úbase64_params)Úclss    úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/ecdsa/test_curves.pyÚ
setUpClassz TestParameterEncoding.setUpClass   s   € ð
Cð 	ÔÐÐó    c                 óh   — d}t          j        |¦  «        }|                      |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Úcurves      r   Útest_from_pemz#TestParameterEncoding.test_from_pem"   s7   € ð,ð 	õ ”˜zÑ*Ô*ˆà�Š�e�XÑ&Ô&Ð&Ð&Ð&r   c                 óô   — d}|                       t          j        ¦  «        5 }t          j        |dg¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )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   s²   € ð,ð 	ð ×Ò�sÔ0Ñ1Ô1ð 	8°QÝŒN˜:¨ Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	�ŠÐ5µs¸1¼;Ñ7GÔ7GÑHÔHÐHÐHÐHó   ¢AÁA	ÁA	c                 óô   — d}|                       t          j        ¦  «        5 }t          j        |dg¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )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?   s²   € ð,ð 	ð
 ×Ò�sÔ0Ñ1Ô1ð 	5°QÝŒN˜:¨
 |Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	�ŠÐ8½#¸a¼kÑ:JÔ:JÑKÔKÐKÐKÐKr*   c                 óð   — d}|                       t          j        ¦  «        5 }t          j        |¦  «         d d d ¦  «         n# 1 swxY 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'   s      r   Útest_from_pem_with_wrong_headerz5TestParameterEncoding.test_from_pem_with_wrong_headerJ   s®   € ð)ð 	ð ×Ò�sÔ0Ñ1Ô1ð 	'°QÝŒN˜:Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	�ŠÐ-­s°1´;Ñ/?Ô/?Ñ@Ô@Ð@Ð@Ð@s   ¢AÁAÁ
Ac                 ó\   — d}t          j        ¦   «         }|                      ||¦  «         d S )NsK   -----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
)r   Úto_pemÚassertEqual)r   r   Úencodings      r   Útest_to_pemz!TestParameterEncoding.test_to_pemY   s7   € ð-ð 	õ
 ”?Ñ$Ô$ˆà×Ò˜ XÑ.Ô.Ð.Ð.Ð.r   c                 ó<   — |                       t          d¦  «         d S )Né   )ÚassertNotEqualr   )r   s    r   Ú"test_compare_with_different_objectz8TestParameterEncoding.test_compare_with_different_objectc   s   € Ø×Ò�H cÑ*Ô*Ð*Ð*Ð*r   c                 óX   — t          j        ¦   «         }|                      d|¦  «         d S )Ns
   *†HÎ=©r   Úto_derr2   ©r   Úencodeds     r   Útest_named_curve_params_derz1TestParameterEncoding.test_named_curve_params_derf   s.   € Ý”/Ñ#Ô#ˆð 	×ÒÐDÀgÑNÔNÐNÐNÐNr   c                 ó€   — t          j        ¦   «         }t          j        d¦  «        }|                      ||¦  «         d S ©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Ô6ˆà×Ò˜¨-Ñ8Ô8Ð8Ð8Ð8r   c                 ó¢   — t          j        d¦  «        }|                      |t          t	          j        | j        ¦  «        ¦  «        ¦  «         d S ©Nr,   )r   r;   r2   ÚbytesÚbase64Ú	b64decoder   r<   s     r   Ú test_encoding_to_explicit_paramsz6TestParameterEncoding.test_encoding_to_explicit_paramsr   sC   € Ý”/ *Ñ-Ô-ˆà×Ò˜¥%­Ô(8¸Ô9KÑ(LÔ(LÑ"MÔ"MÑNÔNÐNÐNÐNr   c                 óâ   — |                       t          ¦  «        5 }t          j        d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )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   sŸ   € Ø×Ò�zÑ*Ô*ð 	+¨aÝŒO˜MÑ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	�ŠÐ*­C°´Ñ,<Ô,<Ñ=Ô=Ð=Ð=Ð=s   ›<¼A ÁA c                 óž   — t          j        dd¦  «        }d}|                      |t          t	          j        |¦  «        ¦  «        ¦  «         d S )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}   sZ   € Ý”/ *¨lÑ;Ô;ˆðð 	ð 	×ÒØ•U�6Ô+Ð,AÑBÔBÑCÔCñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó¦   — d}t          j        t          t          j        |¦  «        ¦  «        ¦  «        }|                      t          |¦  «         d S )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Œ   sL   € ðð 	õ ”.¥¥vÔ'7¸Ñ'FÔ'FÑ!GÔ!GÑHÔHˆà×Ò� 7Ñ+Ô+Ð+Ð+Ð+r   c                 ó¬   — t          j        t          t          j        | j        ¦  «        ¦  «        ¦  «        }|                      |t          ¦  «         d S ©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œ   sA   € Ý”�u¥VÔ%5°dÔ6HÑ%IÔ%IÑJÔJÑKÔKˆà�Š�e�XÑ&Ô&Ð&Ð&Ð&r   c                 óæ   — |                       t          ¦  «        5 }t          j        ddg¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )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¡   s£   € Ø×Ò�zÑ*Ô*ð 	0¨aÝŒN˜3  Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	�ŠÐ(­#¨a¬kÑ*:Ô*:Ñ;Ô;Ð;Ð;Ð;s   ›>¾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 ¦  «        }|                      ||¦  «         d S )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§   s‰   € Ý˜2˜q !Ñ$Ô$ˆÝ˜X r¨1¨a°¸dÐCÑCÔCˆÝ˜X q¨"¨a°¸dÐCÑCÔCˆå˜	 8¨V°TÑ:Ô:ˆÝ˜	 8¨V°TÑ:Ô:ˆà×Ò˜G WÑ-Ô-Ð-Ð-Ð-r   c                 ó`  — t          ddd¦  «        }t          |ddddd¬¦  «        }t          d	||d ¦  «        }|                     ¦   «         }t          j        |¦  «        }|                      ||¦  «         d
}|                      |t          t          j        |¦  «        ¦  «        ¦  «         d S )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¦   € Ý˜2˜q !Ñ$Ô$ˆÝ  ¨2¨q°!°QÀ$ÐGÑGÔGˆ
å�i ¨:°tÑ<Ô<ˆà—,’,‘.”.ˆå”. Ñ)Ô)ˆà×Ò˜ Ñ(Ô(Ð(àEˆà×Ò˜¥%­Ô(8¸Ñ(BÔ(BÑ"CÔ"CÑDÔDÐDÐDÐDr   c                 óT  — t          ddd¦  «        }t          |ddddd¬¦  «        }t          d	||d ¦  «        }|                      t          ¦  «        5 }|                     d
¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )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à   € Ý˜2˜q !Ñ$Ô$ˆÝ  ¨2¨q°!°QÀ$ÐGÑGÔGˆ
å�i ¨:°tÑ<Ô<ˆà×ÒÕ0Ñ1Ô1ð 	(°QØ�LŠL˜Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	�ŠÐ*­C°´Ñ,<Ô,<Ñ=Ô=Ð=Ð=Ð=s   ÁA5Á5A9Á<A9c                 ó
  — d}|                       t          ¦  «        5 }t          j        t	          j        |¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )NzÈMIGRAgEBMBwGByqGSM49AQIwEQIBcQYJKoZIzj0BAgMCAgEJMDkEDwAwiCUMpufH/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Ì   sÈ   € ðð 	ð ×ÒÕ0Ñ1Ô1ð 	A°QÝŒN�6Ô+Ð,>Ñ?Ô?Ñ@Ô@Ð@ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að 	�ŠÐ;½SÀÄÑ=MÔ=MÑNÔNÐNÐNÐNs   �'AÁAÁAc                 óF  — t          j        t          j        Ž t          j        d¦  «        z   }|                      t           j        ¦  «        5 }t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   |  	                    dt          |j        ¦  «        ¦  «         d S )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Ù   sÀ   € Ý”.¥(¤,Ð/µ#Ô2DÀQÑ2GÔ2GÑGˆà×Ò�sÔ0Ñ1Ô1ð 	$°QÝŒN˜7Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	�ŠÐ1µ3°q´{Ñ3CÔ3CÑDÔDÐDÐDÐDs   ÁA.Á.A2Á5A2c                 ób  — t          t          j        | j        ¦  «        ¦  «        t	          j        d¦  «        z   }|                      t          j        ¦  «        5 }t          j	        |¦  «         d d d ¦  «         n# 1 swxY w Y   |  
                    dt          |j        ¦  «        ¦  «         d S )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Ô0ñ
ô 
åÔ˜qÑ!Ô!ñ"ˆð ×Ò�sÔ0Ñ1Ô1ð 	$°QÝŒN˜7Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	�ŠÐ:½CÀÄÑ<LÔ<LÑMÔMÐMÐMÐMs   ÁA<Á<B ÂB c                 ó8  — t          j        t          j        d¦  «        ¦  «        }|                      t           j        ¦  «        5 }t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j	        ¦  «        ¦  «         d S )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ë   s½   € ÝÔ%¥cÔ&8¸Ñ&;Ô&;Ñ<Ô<ˆà×Ò�sÔ0Ñ1Ô1ð 	$°QÝŒN˜7Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	�ŠÐ9½3¸q¼{Ñ;KÔ;KÑLÔLÐLÐLÐLs   ÁA'Á'A+Á.A+c                 óº  — t           j                             ¦   «         }t          j        t          j        d¦  «        t          j        t          j        ddd¦  «        t          j        |¦  «        ¦  «        t          j        t          j        t          t           j         	                    ¦   «         |z  |¦  «        ¦  «        t          j        t          t           j         
                    ¦   «         |¦  «        ¦  «        ¦  «        t          j        t           j                             d¦  «        ¦  «        t          j        t           j                             ¦   «         ¦  «        ¦  «        }|                      t          ¦  «        5 }t!          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt'          |j        ¦  «        ¦  «         d S )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ó   s·  € Ý”.×"Ò"Ñ$Ô$ˆÝÔ%ÝÔ˜qÑ!Ô!ÝÔÝ”˜q ! QÑ'Ô'­Ô);¸GÑ)DÔ)Dñô õ ÔÝÔ'Ý$¥X¤^×%5Ò%5Ñ%7Ô%7¸'Ñ%AÀ7ÑKÔKñô õ Ô'Ý$¥X¤^×%5Ò%5Ñ%7Ô%7¸ÑAÔAñô ñ	ô õ Ô#ÝÔ"×+Ò+¨NÑ;Ô;ñô õ Ô�xÔ1×7Ò7Ñ9Ô9Ñ:Ô:ñ!
ô 
ˆð& ×ÒÕ0Ñ1Ô1ð 	$°QÝŒN˜7Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	�ŠÐ5µs¸1¼;Ñ7GÔ7GÑHÔHÐHÐHÐHs   ÆF(Æ(F,Æ/F,c                 óä  — t           j                             ¦   «         }t          j        t          j        d¦  «        t          j        t          j        t          Ž t          j        |¦  «        t          j        d¦  «        ¦  «        t          j        t          j        t          t           j         
                    ¦   «         |z  |¦  «        ¦  «        t          j        t          t           j                             ¦   «         |¦  «        ¦  «        ¦  «        t          j        t           j                             d¦  «        ¦  «        t          j        t           j                             ¦   «         ¦  «        ¦  «        }|                      t          j        ¦  «        5 }t#          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt)          |j        ¦  «        ¦  «         d S )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Ô%7¸'Ñ%AÀ7ÑKÔKñô õ Ô'Ý$¥X¤^×%5Ò%5Ñ%7Ô%7¸ÑAÔAñô ñ	ô õ Ô#ÝÔ"×+Ò+¨NÑ;Ô;ñô õ Ô�xÔ1×7Ò7Ñ9Ô9Ñ:Ô:ñ%
ô 
ˆð* ×Ò�sÔ0Ñ1Ô1ð 	$°QÝŒN˜7Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	�ŠÐ'­¨Q¬[Ñ)9Ô)9Ñ:Ô:Ð:Ð:Ð:s   ÆF=Æ=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ð Ið Ið	Lð 	Lð 	LðAð Að Að/ð /ð /ð+ð +ð +ðOð Oð Oð9ð 9ð 9ðOð Oð Oð
>ð >ð >ð
ð 
ð 
ð,ð ,ð ,ð 'ð 'ð 'ð
<ð <ð <ð.ð .ð .ðEð Eð Eð 	>ð 	>ð 	>ðOð Oð OðEð Eð EðNð Nð NðMð Mð MðIð Ið Ið4;ð ;ð ;ð ;ð ;r   r   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestCurveSearchingc                 óZ   — t          d¦  «        }|                      |t          ¦  «         d S )Nr   ©r	   r   r   ©r   Úcs     r   Útest_correct_namez$TestCurveSearching.test_correct_name+  s)   € Ý˜*Ñ%Ô%ˆØ�Š�a�Ñ"Ô"Ð"Ð"Ð"r   c                 óZ   — t          d¦  «        }|                      |t          ¦  «         d S )NÚ
prime256v1r™   rš   s     r   Útest_openssl_namez$TestCurveSearching.test_openssl_name/  s)   € Ý˜,Ñ'Ô'ˆØ�Š�a�Ñ"Ô"Ð"Ð"Ð"r   c                 óØ   — |                       t          ¦  «        5 }t          d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt	          |j        ¦  «        ¦  «         d S )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  s«   € Ø×ÒÕ0Ñ1Ô1ð 	%°QÝ˜)Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	�Šð&å�”ÑÔñ	
ô 	
ð 	
ð 	
ð 	
ó   ›7·;¾;c                 óØ   — |                       t          ¦  «        5 }t          d ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt	          |j        ¦  «        ¦  «         d S )NzAname None unknown, only curves supported: ['NIST192p', 'NIST224p'r¡   rM   s     r   Útest_with_None_as_parameterz.TestCurveSearching.test_with_None_as_parameter=  s«   € Ø×ÒÕ0Ñ1Ô1ð 	 °QÝ˜$ÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	�Šð&å�”ÑÔñ	
ô 	
ð 	
ð 	
ð 	
r£   N)r‘   r’   r“   rœ   rŸ   r¢   r¥   r•   r   r   r—   r—   *  sP   € € € € € ð#ð #ð #ð#ð #ð #ð
ð 
ð 
ð
ð 
ð 
ð 
ð 
r   r—   r   c                 ó   — g | ]	}|j         ‘Œ
S r•   ©Úname©Ú.0Úis     r   ú
<listcomp>r¬   H  ó   € Ð.FÐ.FÐ.F¸!¨q¬vÐ.FÐ.FÐ.Fr   )Úidsc                 ód   — t          j        |                      d¦  «        ¦  «        }| |k    sJ ‚d S r@   ©r   rT   r;   ©r   Úrets     r   Ú%test_curve_params_encode_decode_namedr³   H  s.   € å
Œ.˜Ÿš mÑ4Ô4Ñ
5Ô
5€Cà�CŠ<ˆ<ˆ<ˆ<ˆ<ˆ<r   c                 ó   — g | ]	}|j         ‘Œ
S r•   r§   r©   s     r   r¬   r¬   O  r­   r   c                 ó*  — t          | j        t          ¦  «        rIt          j        t
          ¦  «        5  |                      d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S t          j        |                      d¦  «        ¦  «        }| |k    sJ ‚d S rE   ©	Ú
isinstancer   r   ÚpytestÚraisesr   r;   r   rT   r±   s     r   Ú(test_curve_params_encode_decode_explicitrº   O  sË   € å�%”+�yÑ)Ô)ð ÝŒ]Õ,Ñ-Ô-ð 	%ð 	%Ø�LŠL˜Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%õ Œn˜UŸ\š\¨*Ñ5Ô5Ñ6Ô6ˆà˜Š|ˆ|ˆ|ˆ|ˆ|ˆ|s   ´AÁAÁAc                 ó   — g | ]	}|j         ‘Œ
S r•   r§   r©   s     r   r¬   r¬   Z  r­   r   c                 ób   — t          j        |                      ¦   «         ¦  «        }| |k    sJ ‚d S rY   r°   r±   s     r   Ú'test_curve_params_encode_decode_defaultr½   Z  s*   € å
Œ.˜Ÿš™œÑ
(Ô
(€Cà�CŠ<ˆ<ˆ<ˆ<ˆ<ˆ<r   c                 ó   — g | ]	}|j         ‘Œ
S r•   r§   r©   s     r   r¬   r¬   a  r­   r   c                 ó.  — t          | j        t          ¦  «        rJt          j        t
          ¦  «        5  |                      dd¦  «         d d d ¦  «         d S # 1 swxY w Y   d S t          j        |                      dd¦  «        ¦  «        }| |k    sJ ‚d S )Nr,   rP   r¶   r±   s     r   Ú3test_curve_params_encode_decode_explicit_compressedrÀ   a  sÏ   € å�%”+�yÑ)Ô)ð ÝŒ]Õ,Ñ-Ô-ð 	3ð 	3Ø�LŠL˜ \Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3õ Œn˜UŸ\š\¨*°lÑCÔCÑDÔDˆà˜Š|ˆ|ˆ|ˆ|ˆ|ˆ|s   ´AÁAÁA)Ú	unittest2ÚunittestÚImportErrorrG   r¸   r   r   r   r   r   r	   Úellipticcurver
   r   r   Ú r   Úutilr   ÚTestCaser   r—   ÚmarkÚparametrizer³   rº   r½   rÀ   r•   r   r   ú<module>rÊ      sb  ððØ Ð Ð Ð Ð øØð ð ð Ø€O€O€O€O€Oðøøøð €€€Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "ðR;ð R;ð R;ð R;ð R;˜HÔ-ñ R;ô R;ð R;ðj
ð 
ð 
ð 
ð 
˜Ô*ñ 
ô 
ð 
ð< „×Ò˜ &Ð.FÐ.F¸vÐ.FÑ.FÔ.FÐÑGÔGðð ñ HÔGðð „×Ò˜ &Ð.FÐ.F¸vÐ.FÑ.FÔ.FÐÑGÔGðð ñ HÔGðð „×Ò˜ &Ð.FÐ.F¸vÐ.FÑ.FÔ.FÐÑGÔGðð ñ HÔGðð „×Ò˜ &Ð.FÐ.F¸vÐ.FÑ.FÔ.FÐÑGÔGðð ñ HÔGðð ð s   ‚ ‡	’