403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.37
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/Cryptodome/SelfTest/Signature/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/Cryptodome/SelfTest/Signature/__pycache__/test_dss.cpython-311.pyc
�

8�tc���	��ddlZddlZddlmZmZddlmZmZmZddl	m
Z
mZmZm
Z
mZmZmZmZmZddlmZddlmZmZddlmZddlmZmZdd	lmZmZd
�Z d�Z!d�Z"Gd
�d��Z#Gd�dej$��Z%Gd�dej$��Z&eddddd�i��pgZ'e(e'��D�]$\Z)Z*e+e*e,��rJej-de*��Z.e.sJ�e.�/d���0dd��Z1e"e1��Z2�\e3e*d��re*j4Z5e*j6Z7e*j8Z9�~e2�:e*j;��Z<d�e*j=e7e5e9fD��Z>ej?e>d��Z@ej:e@d��ZAeAe<e*jBe*jCzfd �ZDeAe<e*jBe*jCzfd!�ZEe*jFdkreGe&d"e)zeD����eGe&d#e)zeE����&edd$d%i��pgZHe(eH��D�]	\Z)Z*e+e*e,��rJej-de*��Z.e.sJ�e.�/d���0dd��Z1e"e1��Z2�\e3e*d��re*j4Z5e*j6Z7e*j8Z9�~e2�:e*j;��Z<d&�e*j=e7e5e9e*jIfD��ZJej?eJd��Z@ej:e@de#e*jK���'��ZLeLe<e*jBe*jCzfd(�ZMeGe&d)e)zeM����Gd*�d+ej$��ZNGd,�d-ej$��ZOed.d/d0d1�d2�d3�d4���pgZ'e(e'��D�]\Z)Z*e+e*e,��r_ej-d5e*��Z.e.sJ�e.�/d6��ZPe.�/d7���0dd��Z1e"e1��Z2�qe2�:e*j;��Z<ej?ePe*jQe*jR�8��ZSej:eSd��ZAeAe<e*jBe*jCzfd9�ZDeAe<e*jBe*jCzfd:�ZEe*jF�Td��reGeOd"e)zeD����
eGeOd#e)zeE����ed.d;d0d<d=�i��pgZHe(eH��D]�\Z)Z*e+e*e,��r_ej-d5e*��Z.e.sJ�e.�/d6��ZPe.�/d7���0dd��Z1e"e1��Z2�pe2�:e*j;��Z<ej?ePe*jU�>��ZSej:eSde#e*jK���'��ZLeLe<e*jBe*jCzfd?�ZVeGeOd)e)zeV����Gd@�dAej$��ZWGdB�dCej$��ZXdD�ZYGdE�dFej$��ZZGdG�dHej$��Z[ifdI�Z\e]dJkrdK�Z^ej_dL�M��dSdS)N�N)�hexlify�	unhexlify)�tobytes�bord�bchr)	�SHA1�SHA224�SHA256�SHA384�SHA512�SHA3_224�SHA3_256�SHA3_384�SHA3_512)�DSS)�DSA�ECC)�list_test_cases)�load_test_vectors�load_test_vectors_wycheproof)�
bytes_to_long�
long_to_bytesc��|�dd���dd��}tt|����S)N� ��
)�replacerr��	hexstring�wss  �H/usr/lib/python3/dist-packages/Cryptodome/SelfTest/Signature/test_dss.py�t2br"1s;��	�	�	�3��	#�	#�	+�	+�D�"�	5�	5�B��W�R�[�[�!�!�!�c�v�|�dd���dd��}t|d��S)Nrrr�)r�intrs  r!�t2lr'6s5��	�	�	�3��	#�	#�	+�	+�D�"�	5�	5�B��r�2�;�;�r#c�^�td|zt��t��dg��S)NzCryptodome.Hash.�new)�
__import__�globals�locals)�	hash_names r!�load_hash_by_namer.;s&���(�9�4�g�i�i����E�7�S�S�Sr#c��eZdZd�Zd�ZdS)�StrRNGc�|�t|��}d|_tt|��dz
|��|_dS)Nr�)�len�_idxrr�_randomness)�self�
randomness�lengths   r!�__init__zStrRNG.__init__As9���Z������	�(��z�)B�)B�Q�)F��O�O����r#c�^�|j|j|j|z�}|xj|z
c_|S�N)r5r4)r6�n�outs   r!�__call__zStrRNG.__call__Gs0����t�y���Q��6�7���	�	�Q��	�	��
r#N)�__name__�
__module__�__qualname__r9r>�r#r!r0r0?s5������P�P�P�����r#r0c��eZdZdZdZdZdZdZej	eeeef��Z
ej	eeeeef��Zd�Zd�Z
d�Zd	�Zd
�Zd�ZdS)
�FIPS_DSA_TestslE�b{1�NV9d`kZ	->�z�[SQp;Q~�KYn�lwz�b���p\K�j�8A�\�PRI�m-�y�v�1Z@H�-[Ss%Z=	�V�5�t�&�JL;�O:v�+MY2��|I�5�<�4�G
l�d*(�+�_it��z�&�>�lE3~�;�.�
h�B$�M�#M�6NIi%2�|�9QsN�n$�x�|�%�K�p"8�0�E=�SVB��+�1�Y>JAi�,�ol}�p�=r>As�j�C�]�[kq+�xcbw:uot7O�lA4�
?K#=\Fq�X�K�Yl:|��
�
W/z1YEm\}lEw}�SV@6�>�F�z�m�d�XRW�=!]n�/^�czp�v-�`.+@|�D��IlB&]i�:�=�$gm@W��p�A�Rqt�3�6�U���F�YP$v7�!�b@!l~E/*�:NW"�g�	c��dS)NzFIPS DSA TestsrB�r6s r!�shortDescriptionzFIPS_DSA_Tests.shortDescriptionYs���r#c���tjd��}tj|jd��}|�|��}tj|jd��}|�||��dS�N�test�
fips-186-3�rr)r�key_priv�sign�key_pub�verify�r6�
hashed_msg�signer�	signature�verifiers     r!�
test_loopbackzFIPS_DSA_Tests.test_loopback\�b���Z��(�(�
������5�5���K�K�
�+�+�	��7�4�<��6�6�����
�I�.�.�.�.�.r#c��ddlm}d|_|���}t	j|jd��}|�t|j|��|�t|j	|d��dS)�*Verify that unapproved hashes are rejectedr)�	RIPEMD160z Unapproved hash (RIPEMD160) testrK�(N)
�Cryptodome.HashrZ�descriptionr)rrM�assertRaises�
ValueErrorrNrP)r6rZ�hash_objrSs    r!�test_negative_unapproved_hashesz.FIPS_DSA_Tests.test_negative_unapproved_hashesdsz��	.�-�-�-�-�-�=����=�=�?�?�������5�5�����*�f�k�8�<�<�<����*�f�m�X�|�L�L�L�L�Lr#c���d|_|�ttj|jd��d|_|�ttj|jdd��dS�z0Verify that unknown modes/encodings are rejectedzUnknown mode testz
fips-186-0zUnknown encoding testrK�xmlN�r]r^r_rr)rMrFs r!�%test_negative_unknown_modes_encodingsz4FIPS_DSA_Tests.test_negative_unknown_modes_encodingso�X��/������*�c�g�t�}�l�K�K�K�2������*�c�g�t�}�l�E�R�R�R�R�Rr#c��d|_tj��}tj|jdd��}|�|��}|�t|d��d��|�||��td��|dd�z}|�
t|j||��dS�	zVerify ASN.1 encodingzASN.1 encoding testrK�derr�0�r2N)r]rr)rrMrN�assertEqualrrPrr^r_�r6r`rSrTs    r!�test_asn1_encodingz!FIPS_DSA_Tests.test_asn1_encodingxs���1����8�:�:�������e�<�<���K�K��)�)�	�	
����i��l�+�+�R�0�0�0��
�
�h�	�*�*�*���G�G�i����m�+�	����*�f�m�X�y�I�I�I�I�Ir#c��d|_tj|jd��}|�|�����tj|jd��}|�|�����dS�zVerify public/private methodzcan_sign() testrKN�r]rr)rM�
failUnless�can_signrO�failIf�r6rSs  r!�test_sign_verifyzFIPS_DSA_Tests.test_sign_verify��p��-��������5�5��������)�)�*�*�*�����|�4�4�����F�O�O�%�%�&�&�&�&�&r#N)r?r@rA�P�Q�G�X�Yr�	constructrOrMrGrVrarfrorwrBr#r!rDrDMs�������	K�A�2�A�	K�A�2�A�	K�A��c�m�Q��1�a�L�)�)�G��s�}�a��A�q�!�_�-�-�H� � � �/�/�/�	M�	M�	M�S�S�S�J�J�J� '�'�'�'�'r#rDc��eZdZdS)�FIPS_DSA_Tests_KATN�r?r@rArBr#r!r�r����������Dr#r�)�	SignaturerzFIPS_186_3_SigVer.rspzSignature Verification 186-3�resultc��|Sr;rB��xs r!�<lambda>r�����Q�r#z1\[mod = L=([0-9]+), N=([0-9]+), ([a-zA-Z0-9-]+)\]��-r�pc�,�g|]}t|����SrB�r��.0r�s  r!�
<listcomp>r��s ��L�L�L�!�]�1�
�
�L�L�Lr#FrKc�2�|�||��dSr;�rP�r6rUr`rTs    r!�
positive_testr���������)�,�,�,�,�,r#c�J�|�t|j||��dSr;�r^r_rPr�s    r!�
negative_testr���$�����*�h�o�x��K�K�K�K�Kr#ztest_verify_positive_%dztest_verify_negative_%dzFIPS_186_3_SigGen.txtzSignature Creation 186-3c�,�g|]}t|����SrBr�r�s  r!r�r��s ��V�V�V�a��q�!�!�V�V�Vr#)�randfuncc�X�|�|�|��|��dSr;�rmrN�r6rSr`rTs    r!�new_testr���*��������X�.�.�	�:�:�:�:�:r#ztest_sign_%dc�|�eZdZejd���Ze���Zd�Zd�Z	d�Z
d�Zd�Zd�Z
d	S)
�FIPS_ECDSA_Tests�P-256)�curvec��dS)NzFIPS ECDSA TestsrBrFs r!rGz!FIPS_ECDSA_Tests.shortDescription�s��!�!r#c���tjd��}tj|jd��}|�|��}tj|jd��}|�||��dSrIrLrQs     r!rVzFIPS_ECDSA_Tests.test_loopback�rWr#c��ddlm}d|_|j��}t	j|jd��}|�t|j|��|�t|j	|d��dS)rYr)rzUnapproved hash (SHA-1) testrKr[N)
r\rr]r)rrMr^r_rNrP)r6rr`rSs    r!raz0FIPS_ECDSA_Tests.test_negative_unapproved_hashes�sz��	)�(�(�(�(�(�9����4�8�:�:�������5�5�����*�f�k�8�<�<�<����*�f�m�X�|�L�L�L�L�Lr#c��d|_tj|jd��}|�|�����tj|jd��}|�|�����dSrqrrrvs  r!rwz!FIPS_ECDSA_Tests.test_sign_verify�rxr#c���d|_|�ttj|jd��d|_|�ttj|jdd��dSrcrerFs r!rfz6FIPS_ECDSA_Tests.test_negative_unknown_modes_encodingsrgr#c��d|_tj��}tj|jdd��}|�|��}|�t|d��d��|�||��td��|dd�z}|�
t|j||��dSri)r]r
r)rrMrNrmrrPrr^r_rns    r!roz#FIPS_ECDSA_Tests.test_asn1_encoding	s���1����:�<�<�������e�<�<���K�K��)�)�	�	
����i��l�+�+�R�0�0�0��
�
�h�	�*�*�*���G�G�i����m�+�	����*�f�m�X�y�I�I�I�I�Ir#N)r?r@rAr�generaterM�
public_keyrOrGrVrarwrfrorBr#r!r�r��s��������s�|�'�*�*�*�H��!�!�#�#�G�"�"�"�/�/�/�	M�	M�	M�'�'�'�S�S�S�J�J�J�J�Jr#r�c��eZdZdS)�FIPS_ECDSA_Tests_KATNr�rBr#r!r�r�r�r#r�)r��ECDSAz
SigVer.rspz"ECDSA Signature Verification 186-3c��|Sr;rBr�s r!r�r�!r�r#c�"�t|d��S�Nr%�r&r�s r!r�r�"����Q����r#c�"�t|d��Sr�r�r�s r!r�r�#r�r#)r��qx�qyz\[(P-[0-9]+),(SHA-[0-9]+)\]r2�)r��point_x�point_yc�2�|�||��dSr;r�r�s    r!r�r�4r�r#c�J�|�t|j||��dSr;r�r�s    r!r�r�7r�r#z
SigGen.txt�dc�"�t|d��Sr�r�r�s r!r�r�Cs���A�r�
�
�r#�r�r�c�X�|�|�|��|��dSr;r�r�s    r!�	sign_testr�Sr�r#c�H�eZdZdZddgZddddedfdd	d
dedfddd
dedfddddedfdddde	dfddddedfddddedfddddedfddd d!edfdd"d#d$e	dfdd%d&d'ed(fdd)d*d+ed(fdd,d-d.ed(fdd/d0d1ed(fdd2d3d4e	d(fdd5d6d7ed(fdd8d9d:ed(fdd;d<d=ed(fdd>d?d@ed(fddAdBdCe	d(fgZ
dD�ZdE�ZdF�Z
dGS)H�
Det_DSA_TestszTests from rfc6979)a4
            86F5CA03DCFEB225063FF830A0C769B9DD9D6153AD91D7CE27F787C43278B447
            E6533B86B18BED6E8A48B784A14C252C5BE0DBF60B86D6385BD2F12FB763ED88
            73ABFD3F5BA2E0A8C0A59082EAC056935E529DAF7C610467899C77ADEDFC846C
            881870B7B19B2B58F9BE0521A17002E3BDD6B86685EE90B3D9A1B02B782B1779�(996F967F6C8E388D9E28D01E205FBA957A5698B1a4
            07B0F92546150B62514BB771E2A0C0CE387F03BDA6C56B505209FF25FD3C133D
            89BBCD97E904E09114D9A7DEFDEADFC9078EA544D2E401AEECC40BB9FBBF78FD
            87995A10A1C27CB7789B594BA7EFB5C4326A9FE59A070E136DB77175464ADCA4
            17BE5DCE2F40D10A46A3A3943F26AB7FD9C0398FF8C76EE0A56826A8A88F1DBD�(411602CB19A6CCC34494D79D98EF1E7ED5AF25F7a4
            5DF5E01DED31D0297E274E1691C192FE5868FEF9E19A84776454B100CF16F653
            92195A38B90523E2542EE61871C0440CB87C322FC4B4D2EC5E1E7EC766E1BE8D
            4CE935437DC11C3C8FD426338933EBFE739CB3465F4D3668C5E473508253B1E6
            82F65CBDC4FAE93C2EA212390E54905A86E2223170B44EAA7DA5DD9FFCFB7F3B�DSA1024)ah
            9DB6FB5951B66BB6FE1E140F1D2CE5502374161FD6538DF1648218642F0B5C48
            C8F7A41AADFA187324B87674FA1822B00F1ECF8136943D7C55757264E5A1A44F
            FE012E9936E00C1D3E9310B01C7D179805D3058B2A9F4BB6F9716BFE6117C6B5
            B3CC4D9BE341104AD4A80AD6C94E005F4B993E14F091EB51743BF33050C38DE2
            35567E1B34C3D6A5C0CEAA1A0F368213C3D19843D0B4B09DCB9FC72D39C8DE41
            F1BF14D4BB4563CA28371621CAD3324B6A2D392145BEBFAC748805236F5CA2FE
            92B871CD8F9C36D3292B5509CA8CAA77A2ADFC7BFD77DDA6F71125A7456FEA15
            3E433256A2261C6A06ED3693797E7995FAD5AABBCFBE3EDA2741E375404AE25B�@F2C3119374CE76C9356990B465374A17F23F9ED35089BD969F61C6DDE9998C1Fah
            5C7FF6B06F8F143FE8288433493E4769C4D988ACE5BE25A0E24809670716C613
            D7B0CEE6932F8FAA7C44D2CB24523DA53FBE4F6EC3595892D1AA58C4328A06C4
            6A15662E7EAA703A1DECF8BBB2D05DBE2EB956C142A338661D10461C0D135472
            085057F3494309FFA73C611F78B32ADBB5740C361C9F35BE90997DB2014E2EF5
            AA61782F52ABEB8BD6432C4DD097BC5423B285DAFB60DC364E8161F4A2A35ACA
            3A10B1C4D203CC76A470A33AFDCBDD92959859ABD8B56E1725252D78EAC66E71
            BA9AE3F1DD2487199874393CD4D832186800654760E1E34C09E4D155179F9EC0
            DC4473F996BDCE6EED1CABED8B6F116F7AD9CF505DF0F998E34AB27514B0FFE7�@69C7548C21D0DFEA6B9A51C9EAD4E27C33D3B3F180316E5BCAB92C933F0E4DBCah
            667098C654426C78D7F8201EAC6C203EF030D43605032C2F1FA937E5237DBD94
            9F34A0A2564FE126DC8B715C5141802CE0979C8246463C40E6B6BDAA2513FA61
            1728716C2E4FD53BC95B89E69949D96512E873B9C8F8DFD499CC312882561ADE
            CB31F658E934C0C197F2C4D96B05CBAD67381E7B768891E4DA3843D24D94CDFB
            5126E9B8BF21E8358EE0E0A30EF13FD6A664C0DCE3731F7FB49A4845A4FD8254
            687972A2D382599C9BAC4E0ED7998193078913032558134976410B89D2C171D1
            23AC35FD977219597AA7D15C1A9A428E59194F75C721EBCBCFAE44696A499AFA
            74E04299F132026601638CB87AB79190D4A0986315DA8EEC6561C938996BEADF�DSA2048�sample�(7BDB6B0FF756E1BB5D53583EF979082F9AD5BD5B�(2E1A0C2562B2912CAAF89186FB0F42001585DA55�(29EFB6B0AFF2D7A68EB70CA313022253B9A88DF5r��(562097C06782D60C3037BA7BE104774344687649�(4BC3B686AEA70145856814A6F1BB53346F02101E�(410697B92295D994D21EDD2F4ADA85566F6F94C1�(519BA0546D0C39202A7D34D7DFA5E760B318BCFB�(81F2F5850BE5BC123C43F71A3033E9384611C545�(4CDD914B65EB6C66A8AAAD27299BEE6B035F5E89�(95897CD7BBB944AA932DBC579C1C09EB6FCFC595�(07F2108557EE0E3921BC1774F1CA9B410B4CE65A�(54DF70456C86FAC10FAB47C1949AB83F2C6F7595�(09ECE7CA27D0F5A4DD4E556C9DF1D21D28104F8B�(16C3491F9B8C3FBBDD5E7A7B667057F0D8EE8E1B�(02C36A127A7B89EDBB72E4FFBC71DABC7D4FC69C�test�(5C842DF4F9E344EE09F056838B42C7A17F4A6433�(42AB2052FD43E123F0607F115052A67DCD9C5C77�(183916B0230D45B9931491D4C6B0BD2FB4AAF088�(4598B8EFC1A53BC8AECD58D1ABBB0C0C71E67297�(6868E9964E36C1689F6037F91F28D5F2C30610F2�(49CEC3ACDC83018C5BD2674ECAAD35B8CD22940F�(5A67592E8128E03A417B0484410FB72C0B630E1A�(22518C127299B0F6FDC9872B282B9E70D0790812�(6837EC18F150D55DE95B5E29BE7AF5D01E4FE160�(220156B761F6CA5E6C9F1B9CF9C24BE25F98CD89�(854CF929B58D73C3CBFDC421E8D5430CD6DB5E66�(91D0E0F53E22F898D158380676A871A157CDA622�(65D2C2EEB175E370F28C75BFCDC028D22C7DBE9C�(8EA47E475BA8AC6F2D821DA3BD212D11A3DEB9A0�(7C670C7AD72B6C050C109E1790008097125433E8�@888FA6F7738A41BDC9846466ABDB8174C0338250AE50CE955CA16230F9CBD53E�@3A1B2DBD7489D6ED7E608FD036C83AF396E290DBD602408E8677DAABD6E7445A�@D26FCBA19FA3E3058FFC02CA1596CDBB6E0D20CB37B06054F7E36DED0CDBBCCFr��@BC372967702082E1AA4FCE892209F71AE4AD25A6DFD869334E6F153BD0C4D806�@DC9F4DEADA8D8FF588E98FED0AB690FFCE858DC8C79376450EB6B76C24537E2C�@A65A9C3BC7BABE286B195D5DA68616DA8D47FA0097F36DD19F517327DC848CEC�@8926A27C40484216F052F4427CFD5647338B7B3939BC6573AF4333569D597C52�@EACE8BDBBE353C432A795D9EC556C6D021F7A03F42C36E9BC87E4AC7932CC809�@7081E175455F9247B812B74583E9E94F9EA79BD640DC962533B0680793A38D53�@C345D5AB3DA0A5BCB7EC8F8FB7A7E96069E03B206371EF7D83E39068EC564920�@B2DA945E91858834FD9BF616EBAC151EDBC4B45D27D0DD4A7F6A22739F45C00B�@19048B63D9FD6BCA1D9BAE3664E1BCB97F7276C306130969F63F38FA8319021B�@5A12994431785485B3F5F067221517791B85A597B7A9436995C89ED0374668FC�@2016ED092DC5FB669B8EFB3D1F31A91EECB199879BE0CF78F02BA062CB4C942E�@D0C76F84B5F091E141572A639A4FB8C230807EEA7D55C8A154A224400AFF2351�@6EEA486F9D41A037B2C640BC5645694FF8FF4B98D066A25F76BE641CCB24BA4F�@C18270A93CFC6063F57A4DFA86024F700D980E4CF4E2CB65A504397273D98EA0�@414F22E5F31A8B6D33295C7539C1C1BA3A6160D7D68D50AC0D3A5BEAC2884FAA�@06BD4C05ED74719106223BE33F2D95DA6B3B541DAD7BFBD7AC508213B6DA6670�@272ABA31572F6CC55E30BF616B7A265312018DD325BE031BE0CC82AA17870EA3�@E9CC286A52CCE201586722D36D1E917EB96A4EBDB47932F9576AC645B3A60806�@1D6CE6DDA1C5D37307839CD03AB0A5CBB18E60D800937D67DFB4479AAC8DEAD7�@8190012A1969F9957D56FCCAAD223186F423398D58EF5B3CEFD5A4146A4476F0�@7452A53F7075D417B4B013B278D1BB8BBD21863F5E7B1CEE679CF2188E1AB19E�@206E61F73DBE1B2DC8BE736B22B079E9DACD974DB00EEBBC5B64CAD39CF9F91C�@239E66DDBE8F8C230A3D071D601B6FFBDFB5901F94D444C6AF56F732BEB954BE�@6BD737513D5E72FE85D1C750E0F73921FE299B945AAD1C802F15C26A43D34961�@AFF1651E4CD6036D57AA8B2A05CCF1A9D5A40166340ECBBDC55BE10B568AA0AA�@89EC4BB1400ECCFF8E7D9AA515CD1DE7803F2DAFF09693EE7FD1353E90A68307�@C9F0BDABCC0D880BB137A994CC7F3980CE91CC10FAF529FC46565B15CEA854E1c	��ddlm}|dd��}i}|jD]$}|d�|dd�D���}|||d<�%||_|dd��}g}|jD]o\}}	}
}}}
|t	|��t|	��t
|
��t
|��z||j|
��}|�|���p||_dS)	Nr)�
namedtuple�TestKeyz	p q g x yc�,�g|]}t|����SrB)r')r��ys  r!r�z'Det_DSA_Tests.setUp.<locals>.<listcomp>As��2�2�2�a�3�q�6�6�2�2�2r#����TestSigz$message nonce result module test_key)�collectionsr
�keys�
signaturesrr'r"�append)r6r
r�new_keys�k�tkr�new_signatures�message�nonce�r�s�module�test_key�tsigs               r!�setUpzDet_DSA_Tests.setUp8s��	+�*�*�*�*�*��*�Y��4�4������	!�	!�A���2�2�1�S�b�S�6�2�2�2�3�B� �H�Q�r�U�O�O���	��*�Y�(N�O�O����6:�o�	(�	(�2�G�U�A�q�&�(��7��� � ��E�
�
��A����Q������	�(�#���D�
�!�!�$�'�'�'�'�(����r#c���d}d}d|zdz}td||��}tjt|d|��d|||gd��}tj|d��}|�t
|�|����d��tjd���	��}|�t
|�
|����d	��dS)
Nl�%�360�@l/'�P�=�eI+~x�\?-)�ir�r2F�deterministic-rfc6979s*009a4d6792295a7f730fc3f2b49cbc0f62e862272fssamples*01795edf0d54db760f156d0dac04c0322b3a204224)�powrr~rr)rmr�_int2octetsr
�digest�_bits2octets)r6�qr�r�r
�keyrS�h1s        r!�test1zDet_DSA_Tests.test1Ss���7��7��
��E�A�I����1�a�L�L���m�S��A�q�\�\�1�a��A�6��>�>�����5�6�6��	
�����!3�!3�A�!6�!6�7�7�9�	;�	;�	;��Z�	�
"�
"�
)�
)�
+�
+�������!4�!4�R�!8�!8�9�9�9�	;�	;�	;�	;�	;r#c�V�|jD]�}|j}tj|j|j|j|j|jgd��}tj
|d��}|j�
|j��}|�
|��}|�|j|����dS)NFr!)rrrr~r
�gr�r&r�rr)rrrNrmr�)r6�sigrr'rSr`r�s       r!�test2zDet_DSA_Tests.test2ds����?�	1�	1�C���B��-���r�t�R�T�2�4��� >��F�F�C��W�S�"9�:�:�F��z�~�~�c�k�2�2�H��[�[��*�*�F����S�Z��0�0�0�0�	1�	1r#N)r?r@rA�__doc__rrr	r
rrrrr)r-rBr#r!r�r�XsW��������
�(
�+5
�D�v�:�:�:���

��:�:�:���

��:�:�:���

��:�:�:���

��:�:�:���

��:�:�:���

��:�:�:���

��:�:�:���

��:�:�:���

��:�:�:���

��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�R�R���

��R�R�R���

�sa
�J�F)�)�)�6;�;�;�"	1�	1�	1�	1�	1r#r�c�^�eZdZejdd���Ze���Zejdd���Ze���Z	ejdd���Z
e
���Zdd	d
defddd
de
fddddefddddefddddefddddefdddde
fddd d!efdd"d#d$efdd%d&d'eff
Zdd(d)d*efdd+d,d-e
fdd.d/d0efdd1d2d3efdd4d5d6efdd7d8d9efdd:d;d<e
fdd=d>d?efdd@dAdBefddCdDdEeff
ZddFdGdHefddIdJdKe
fddLdMdNefddOdPdQefddRdSdTefddUdVdWefddXdYdZe
fdd[d\d]efdd^d_d`efddadbdceff
ZgZeD]H\ZZZZZee��ee��ee��ee��efZe�e���IgZeD]H\ZZZZZee��ee��ee��ee��efZe�e���IgZeD]H\ZZZZZee��ee��ee��ee��efZe�e���Idd�Z de�Z!df�Z"dg�Z#dh�Z$di�Z%dj�Z&dkS)l�Det_ECDSA_Testsr�l!g$�S\'1]�va(N�c�]
a�f�Nn�T�Ir�zP-384l�m�A�'�C_��j�Xob��#�)�R��<b�>�Y�C[���V=�zP-521l#85p-�CE`�q{{}l�f(�E65�U}x�Q�yc4n�Q�cX[�;�\:m3h_tI]b*� �r��@882905F1227FD620FBF2ABF21244F0BA83D0DC3A9103DBBEE43A1FB858109DB4�@61340C88C3AAEBEB4F6D667F672CA9759A6CCAA9FA8811313039EE4A35471D32�@6D7F147DAC089441BB2E2FE8F7A3FA264B9C475098FDCF6E00D7C996E1B8B7EB�@103F90EE9DC52E5E7FB5132B7033C63066D194321491862059967C715985D473�@53B2FFF5D1752B2C689DF257C04C40A587FABABB3F6FC2702F1343AF7CA9AA3F�@B9AFB64FDC03DC1A131C7D2386D11E349F070AA432A4ACC918BEA988BF75C74C�@A6E3C57DD01ABE90086538398355DD4C3B17AA873382B0F24D6129493D8AAD60�@EFD48B2AACB6A8FD1140DD9CD45E81D69D2C877B56AAF991C34D0EA84EAF3716�@F7CB1C942D657C41D436C7A1B6E29F65F3E900DBB9AFF4064DC4AB2F843ACDA8�@09F634B188CEFD98E7EC88B1AA9852D734D0BC272F7D2A47DECC6EBEB375AAD4�@0EAFEA039B20E9B42309FB1D89E213057CBF973DC0CFC8F129EDDDC800EF7719�@4861F0491E6998B9455193E34E7B0D284DDD7149A74B95B9261F13ABDE940954�@5FA81C63109BADB88C1F367B47DA606DA28CAD69AA22C4FE6AD7DF73A7173AA5�@8496A60B5E9B47C825488827E0495B0E3FA109EC4568FD3F8D1097678EB97F00�@2362AB1ADBE2B8ADF9CB9EDAB740EA6049C028114F2460F96554F61FAE3302FEr��@8C9520267C55D6B980DF741E56B4ADEE114D84FBFA2E62137954164028632A2E�@0CBCC86FD6ABD1D99E703E1EC50069EE5C0B4BA4B9AC60E409E8EC5910D81A89�@01B9D7B73DFAA60D5651EC4591A0136F87653E0FD780C3B1BC872FFDEAE479B1�@669F4426F2688B8BE0DB3A6BD1989BDAEFFF84B649EEB84F3DD26080F667FAA7�@C37EDB6F0AE79D47C3C27E962FA269BB4F441770357E114EE511F662EC34A692�@C820053A05791E521FCAAD6042D40AEA1D6B1A540138558F47D0719800E18F2D�@D16B6AE827F17175E040871A1C7EC3500192C4C92677336EC2537ACAEE0008E0�@F1ABB023518351CD71D881567B1EA663ED3EFCF6C5132B354F28D3B0B7D38367�@019F4113742A2B14BD25926B49C649155F267E60D3814B4C0CC84250E46F0083�@16AEFFA357260B04B1DD199693960740066C1A8F3E8EDD79070AA914D361B3B8�@83910E8B48BB0C74244EBDF7F07A1C5413D61472BD941EF3920E623FBCCEBEB6�@8DDBEC54CF8CD5874883841D712142A56A8D0F218F5003CB0296B6B509619F2C�@6915D11632ACA3C40D5D51C08DAF9C555933819548784480E93499000D9F0B7F�@461D93F31B6540894788FD206C07CFA0CC35F46FA3C91816FFF1040AD1581A04�@39AF9F15DE0DB8D97E72719C74820D304CE5226E32DEDAE67519E840D1194E55�`4471EF7518BB2C7C20F62EAE1C387AD0C5E8E470995DB4ACF694466E6AB096630F29E5938D25106C3C340045A2DB01A7�`EC748D839243D6FBEF4FC5C4859A7DFFD7F3ABDDF72014540C16D73309834FA37B9BA002899F6FDA3A4A9386790D4EB2�`A3BCFA947BEEF4732BF247AC17F71676CB31A847B9FF0CBC9C9ED4C1A5B3FACF26F49CA031D4857570CCB5CA4424A443�`A4E4D2F0E729EB786B31FC20AD5D849E304450E0AE8E3E341134A5C1AFA03CAB8083EE4E3C45B06A5899EA56C51B5879�`42356E76B55A6D9B4631C865445DBE54E056D3B3431766D0509244793C3F9366450F76EE3DE43F5A125333A6BE060122�`9DA0C81787064021E78DF658F2FBB0B042BF304665DB721F077A4298B095E4834C082C03D83028EFBF93A3C23940CA8D�`180AE9F9AEC5438A44BC159A1FCB277C7BE54FA20E7CF404B490650A8ACC414E375572342863C899F9F2EDF9747A9B60�`21B13D1E013C7FA1392D03C5F99AF8B30C570C6F98D4EA8E354B63A21D3DAA33BDE1E888E63355D92FA2B3C36D8FB2CD�`F3AA443FB107745BF4BD77CB3891674632068A10CA67E3D45DB2266FA7D1FEEBEFDC63ECCD1AC42EC0CB8668A4FA0AB0�`94ED910D1A099DAD3254E9242AE85ABDE4BA15168EAF0CA87A555FD56D10FBCA2907E3E83BA95368623B8C4686915CF9�`94EDBB92A5ECB8AAD4736E56C691916B3F88140666CE9FA73D64C4EA95AD133C81A648152E44ACF96E36DD1E80FABE46�`99EF4AEB15F178CEA1FE40DB2603138F130E740A19624526203B6351D0A3A94FA329C145786E679E7B82C71A38628AC8�`92FC3C7183A883E24216D1141F1A8976C5B0DD797DFA597E3D7B32198BD35331A4E966532593A52980D0E3AAA5E10EC3�`ED0959D5880AB2D869AE7F6C2915C6D60F96507F9CB3E047C0046861DA4A799CFE30F35CC900056D7C99CD7882433709�`512C8CCEEE3890A84058CE1E22DBC2198F42323CE8ACA9135329F03C068E5112DC7CC3EF3446DEFCEB01A45C2667FDD5�`66CC2C8F4D303FC962E5FF6A27BD79F84EC812DDAE58CF5243B64A4AD8094D47EC3727F3A3C186C15054492E30698497�`4BC35D3A50EF4E30576F58CD96CE6BF638025EE624004A1F7789A8B8E43D0678ACD9D29876DAF46638645F7F404B11C7�`D5A6326C494ED3FF614703878961C0FDE7B2C278F9A65FD8C4B7186201A2991695BA1C84541327E966FA7B50F7382282�`18FA39DB95AA5F561F30FA3591DC59C0FA3653A80DAFFA0B48D1A4C6DFCBFF6E3D33BE4DC5EB8886A8ECD093F2935726�`E8C9D0B6EA72A0E7837FEA1D14A1A9557F29FAA45D3E7EE888FC5BF954B5E62464A9A817C47FF78B8C11066B24080E72�`07041D4A7A0379AC7232FF72E6F77B6DDB8F09B16CCE0EC3286B2BD43FA8C6141C53EA5ABEF0D8231077A04540A96B66�`0CFAC37587532347DC3389FDC98286BBA8C73807285B184C83E62E26C401C0FAA48DD070BA79921A3457ABFF2D630AD7�`6D6DEFAC9AB64DABAFE36C6BF510352A4CC27001263638E5B16D9BB51D451559F918EEDAF2293BE5B475CC8F0188636B�`2D46F3BECBCC523D5F1A1256BF0C9B024D879BA9E838144C8BA6BAEB4B53B47D51AB373F9845C0514EEFB14024787265�`015EE46A5BF88773ED9123A5AB0807962D193719503C527B031B4C2D225092ADA71F4A459BC0DA98ADB95837DB8312EA�`8203B63D3C853E8D77227FB377BCF7B7B772E97892A80F36AB775D509D7A5FEB0542A7F0812998DA8F1DD3CA3CF023DB�`DDD0760448D42D8A43AF45AF836FCE4DE8BE06B485E9B61B827C2F13173923E06A739F040649A667BF3B828246BAA5A5�`3780C4F67CB15518B6ACAE34C9F83568D2E12E47DEAB6C50A4E4EE5319D1E8CE0E2CC8A136036DC4B9C00E6888F66B6C�`A0D5D090C9980FAF3C2CE57B7AE951D31977DD11C775D314AF55F76C676447D06FB6495CD21B4B6E340FC236584FB277�`976984E59B4C77B0E8E4460DCA3D9F20E07B9BB1F63BEEFAF576F6B2E8B224634A2092CD3792E0159AD9CEE37659C736ڄ0089C071B419E1C2820962321787258469511958E80582E95D8378E0C2CCDB3CB42BEDE42F50E3FA3C71F5A76724281D31D9C89F0F91FC1BE4918DB1C03A5838D0F9ڄ00343B6EC45728975EA5CBA6659BBB6062A5FF89EEA58BE3C80B619F322C87910FE092F7D45BB0F8EEE01ED3F20BABEC079D202AE677B243AB40B5431D497C55D75Dڄ00E7B0E675A9B24413D448B8CC119D2BF7B2D2DF032741C096634D6D65D0DBE3D5694625FB9E8104D3B842C1B0E2D0B98BEA19341E8676AEF66AE4EBA3D5475D5D16ڄ0121415EC2CD7726330A61F7F3FA5DE14BE9436019C4DB8CB4041F3B54CF31BE0493EE3F427FB906393D895A19C9523F3A1D54BB8702BD4AA9C99DAB2597B92113F3ڄ01776331CFCDF927D666E032E00CF776187BC9FDD8E69D0DABB4109FFE1B5E2A30715F4CC923A4A5E94D2503E9ACFED92857B7F31D7152E0F8C00C15FF3D87E2ED2Eڄ0050CB5265417FE2320BBB5A122B8E1A32BD699089851128E360E620A30C7E17BA41A666AF126CE100E5799B153B60528D5300D08489CA9178FB610A2006C254B41Fڄ00EDF38AFCAAECAB4383358B34D67C9F2216C8382AAEA44A3DAD5FDC9C32575761793FEF24EB0FC276DFC4F6E3EC476752F043CF01415387470BCBD8678ED2C7E1A0ڄ01511BB4D675114FE266FC4372B87682BAECC01D3CC62CF2303C92B3526012659D16876E25C7C1E57648F23B73564D67F61C6F14D527D54972810421E7D87589E1A7ڄ004A171143A83163D6DF460AAF61522695F207A58B95C0644D87E52AA1A347916E4F7A72930B1BC06DBE22CE3F58264AFD23704CBB63B29B931F7DE6C9D949A7ECFCڄ01546A108BC23A15D6F21872F7DED661FA8431DDBD922D0DCDB77CC878C8553FFAD064C95A920A750AC9137E527390D2D92F153E66196966EA554D9ADFCB109C4211ڄ01EA842A0E17D2DE4F92C15315C63DDF72685C18195C2BB95E572B9C5136CA4B4B576AD712A52BE9730627D16054BA40CC0B8D3FF035B12AE75168397F5D50C67451ڄ01F21A3CEE066E1961025FB048BD5FE2B7924D0CD797BABE0A83B66F1E35EEAF5FDE143FA85DC394A7DEE766523393784484BDF3E00114A1C857CDE1AA203DB65D61ڄ01DAE2EA071F8110DC26882D4D5EAE0621A3256FC8847FB9022E2B7D28E6F10198B1574FDD03A9053C08A1854A168AA5A57470EC97DD5CE090124EF52A2F7ECBFFD3ڄ00C328FAFCBD79DD77850370C46325D987CB525569FB63C5D3BC53950E6D4C5F174E25A1EE9017B5D450606ADD152B534931D7D4E8455CC91F9B15BF05EC36E377FAڄ00617CCE7CF5064806C467F678D3B4080D6F1CC50AF26CA209417308281B68AF282623EAA63E5B5C0723D8B8C37FF0777B1A20F8CCB1DCCC43997F1EE0E44DA4A67Aڄ00BB9F2BF4FE1038CCF4DABD7139A56F6FD8BB1386561BD3C6A4FC818B20DF5DDBA80795A947107A1AB9D12DAA615B1ADE4F7A9DC05E8E6311150F47F5C57CE8B222ڄ013BAD9F29ABE20DE37EBEB823C252CA0F63361284015A3BF430A46AAA80B87B0693F0694BD88AFE4E661FC33B094CD3B7963BED5A727ED8BD6A3A202ABE009D0367ڄ01E9BB81FF7944CA409AD138DBBEE228E1AFCC0C890FC78EC8604639CB0DBDC90F717A99EAD9D272855D00162EE9527567DD6A92CBD629805C0445282BBC916797FFڄ0040D09FCF3C8A5F62CF4FB223CBBB2B9937F6B0577C27020A99602C25A01136987E452988781484EDBBCF1C47E554E7FC901BC3085E5206D9F619CFF07E73D6F706ڄ01C7ED902E123E6815546065A2C4AF977B22AA8EADDB68B2C1110E7EA44D42086BFE4A34B67DDC0E17E96536E358219B23A706C6A6E16BA77B65E1C595D43CAE17FBڄ0177336676304FCB343CE028B38E7B4FBA76C1C1B277DA18CAD2A8478B2A9A9F5BEC0F3BA04F35DB3E4263569EC6AADE8C92746E4C82F8299AE1B8F1739F8FD519A4ڄ001DE74955EFAABC4C4F17F8E84D881D1310B5392D7700275F82F145C61E843841AF09035BF7A6210F5A431A6A9E81C9323354A9E69135D44EBD2FCAA7731B909258ڄ000E871C4A14F993C6C7369501900C4BC1E9C7B0B4BA44E04868B30B41D8071042EB28C4C250411D0CE08CD197E4188EA4876F279F90B3D8D74A3C76E6F1E4656AA8ڄ00CD52DBAA33B063C3A6CD8058A1FB0A46A4754B034FCC644766CA14DA8CA5CA9FDE00E88C1AD60CCBA759025299079D7A427EC3CC5B619BFBC828E7769BCD694E86ڄ01F1FC4A349A7DA9A9E116BFDD055DC08E78252FF8E23AC276AC88B1770AE0B5DCEB1ED14A4916B769A523CE1E90BA22846AF11DF8B300C38818F713DADD85DE0C88ڄ014BEE21A18B6D8B3C93FAB08D43E739707953244FDBE924FA926D76669E7AC8C89DF62ED8975C2D8397A65A49DCC09F6B0AC62272741924D479354D74FF6075578Cڄ0133330865C067A0EAF72362A65E2D7BC4E461E8C8995C3B6226A21BD1AA78F0ED94FE536A0DCA35534F0CD1510C41525D163FE9D74D134881E35141ED5E8E95B979ڄ016200813020EC986863BEDFC1B121F605C1215645018AEA1A7B215A564DE9EB1B38A67AA1128B80CE391C4FB71187654AAA3431027BFC7F395766CA988C964DC56Dڄ013E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB93482FDCC54EDCEE91ECA4166B2A7C6265EF0CE2BD7051B7CEF945BABD47EE6Dڄ01FBD0013C674AA79CB39849527916CE301C66EA7CE8B80682786AD60F98F7E78A19CA69EFF5C57400E3B3A0AD66CE0978214D13BAF4E9AC60752F7B155E2DE4DCE3c��dS)NzDeterministic ECDSA TestsrBrFs r!rGz Det_ECDSA_Tests.shortDescriptionhs��*�*r#c���tjd��}tj|jd��}|�|��}tj|jd��}|�||��dS�NrJr!)rr)r�
key_priv_p256rN�key_pub_p256rPrQs     r!�test_loopback_p256z"Det_ECDSA_Tests.test_loopback_p256k�f���Z��(�(�
����+�-D�E�E���K�K�
�+�+�	��7�4�,�.E�F�F�����
�I�.�.�.�.�.r#c���tjd��}tj|jd��}|�|��}tj|jd��}|�||��dSr�)rr)r�
key_priv_p384rN�key_pub_p384rPrQs     r!�test_loopback_p384z"Det_ECDSA_Tests.test_loopback_p384sr�r#c���tjd��}tj|jd��}|�|��}tj|jd��}|�||��dSr�)rr)r�
key_priv_p521rN�key_pub_p521rPrQs     r!�test_loopback_p521z"Det_ECDSA_Tests.test_loopback_p521{r�r#c���tj|jd��}|jD]K\}}}}}|�|��}|�|��}|�||z|���LdS�Nr!)rr)r��signatures_p256rNrm�	r6rSrrrrrr`r�s	         r!�test_data_rfc6979_p256z&Det_ECDSA_Tests.test_data_rfc6979_p256��}�����+�-D�E�E��(,�(<�	,�	,�$�G�Q��1�f��z�z�'�*�*�H��[�[��*�*�F����Q��U�F�+�+�+�+�	,�	,r#c���tj|jd��}|jD]K\}}}}}|�|��}|�|��}|�||z|���LdSr�)rr)r��signatures_p384rNrmr�s	         r!�test_data_rfc6979_p384z&Det_ECDSA_Tests.test_data_rfc6979_p384�r�r#c���tj|jd��}|jD]K\}}}}}|�|��}|�|��}|�||z|���LdSr�)rr)r��signatures_p521rNrmr�s	         r!�test_data_rfc6979_p521z&Det_ECDSA_Tests.test_data_rfc6979_p521�r�r#N)'r?r@rArr~r�r�r�r�r�r�r�rr	r
rr�signatures_p256_�signatures_p384_�signatures_p521_r��a�b�cr��err�new_tvrr�r�rGr�r�r�r�r�r�rBr#r!r0r0psM������!�C�M��3u�v�v�v�M� �+�+�-�-�L�!�C�M��4V�W�W�W�M� �+�+�-�-�L�!�C�M��4y�z�z�z�M� �+�+�-�-�L�
�N�N�N��	
�
�N�N�N��	
�
�N�N�N��	
�
�N�N�N��	
�
�N�N�N��	
�
�N�N�N��	
�
�N�N�N��	
�
�N�N�N��	
�
�N�N�N��	
�
�N�N�N��	
�AG��V
�n�n�n��	
�
�n�n�n��	
�
�n�n�n��	
�
�n�n�n��	
�
�n�n�n��	
�
�n�n�n��	
�
�n�n�n��	
�
�n�n�n��	
�
�n�n�n��	
�
�n�n�n��	
�AG��V
�
S�
S�
S��	
�
�
S�
S�
S��	
�
�
S�
S�
S��	
�
�
S�
S�
S��	
�
�
S�
S�
S��	
�
�
S�
S�
S��	
�
�
S�
S�
S��	
�
�
S�
S�
S��	
�
�
S�
S�
S��	
�
�
S�
S�
S��	
�AG��R�O�)�'�'�
��1�a��A��'�!�*�*�i�i��l�l�I�I�a�L�L�)�)�A�,�,��J�����v�&�&�&�&��O�)�'�'�
��1�a��A��'�!�*�*�i�i��l�l�I�I�a�L�L�)�)�A�,�,��J�����v�&�&�&�&��O�)�'�'�
��1�a��A��'�!�*�*�i�i��l�l�I�I�a�L�L�)�)�A�,�,��J�����v�&�&�&�&�+�+�+�/�/�/�/�/�/�/�/�/�,�,�,�,�,�,�,�,�,�,�,r#r0c��|dkrt}n�|dkrtjd���}n�|dkrtjd���}n�|dkrt}nt|dkrt}nf|d	krt}nX|d
krt
}nJ|dkrt}n<|dkrt}n.|d
krt}n |dkrt}ntd|z���|S)NzSHA-512zSHA-512/224�224)�truncatezSHA-512/256�256zSHA-384zSHA-256zSHA-224zSHA-1zSHA3-224zSHA3-256zSHA3-384zSHA3-512zUnknown hash algorithm: )rr)rr
r	rr
rrrr_)r-�hash_modules  r!�get_hash_moduler��s����I������	�m�	#�	#��j�%�0�0�0���	�m�	#�	#��j�%�0�0�0���	�i�	�	����	�i�	�	����	�i�	�	����	�g�	�	����	�j�	 �	 ����	�j�	 �	 ����	�j�	 �	 ����	�j�	 �	 �����3�i�?�@�@�@��r#c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestVectorsDSAWycheproofc�|�tj�|��||_||_d|_g|_dS�N�None)�unittest�TestCaser9�_wycheproof_warnings�_slow_tests�_id�tv�r6�wycheproof_warnings�
slow_testss   r!r9z!TestVectorsDSAWycheproof.__init__�s;����"�"�4�(�(�(�$7��!�%����������r#c	�f�d�}d�}d�}tddd|||d����}|xj|z
c_dS)	Nc�6�tj|d��S)N�keyPem)r�
import_key��groups r!�
filter_dsaz2TestVectorsDSAWycheproof.setUp.<locals>.filter_dsa�s���>�%��/�2�2�2r#c�,�t|d��S�N�sha�r�r�s r!�
filter_shaz2TestVectorsDSAWycheproof.setUp.<locals>.filter_sha����"�5��<�0�0�0r#c�F�|d}|dkrtd|z���|S)N�type�	DsaVerify�Unknown signature type �r_)r��sig_types  r!�filter_typez3TestVectorsDSAWycheproof.setUp.<locals>.filter_type�s/���V�}�H��;�&�&� �!:�X�!E�F�F�F��Or#�r��
wycheproofz
dsa_test.jsonzWycheproof DSA signature)r'r�r���	group_tag�rr�)r6r�r�r�r�s     r!rzTestVectorsDSAWycheproof.setUp�s|��	3�	3�	3�	1�	1�	1�	�	�	�.�.I�.=�.H�@J�HR�EP�9R�9R�S�S�S��	
���6�����r#c��|jSr;�r�rFs r!rGz)TestVectorsDSAWycheproof.shortDescription��	���x�r#c�~�|jr3|jr.ddl}|�d|j�d|j�d���dSdSdS�NrzWycheproof warning: z (�)��warningr��warnings�warnr��comment�r6r�r�s   r!r�zTestVectorsDSAWycheproof.warn��d��
�:�	R�$�3�	R��O�O�O��M�M�M�4�8�8�8�R�Z�Z�Z�P�Q�Q�Q�Q�Q�	R�	R�	R�	Rr#c��dt|j��z|_|j�|j��}t
j|jdd���}	|�||j	��}|j
sJ�|�|��dS#t$r!}|j
rYd}~dS|j
rJ�Yd}~dSd}~wwxYw)NzWycheproof DSA Test #rKrj��encoding)�str�idr�r�r)�msgrr'rPr,�validr�r_r��r6r�rRrSrTr�s      r!�test_verifyz$TestVectorsDSAWycheproof.test_verify�s���*�S���Z�Z�7����^�'�'���/�/�
�������>�>�>��	��
�
�j�"�&�9�9�I��8�O�O�O��I�I�b�M�M�M�M�M��
�	 �	 �	 ��z�
��������x��������������	 ���s�B�
B?�B:�+	B:�:B?c�D�|jD]}|�|���dSr;�r�r��r6r�s  r!�runTestz TestVectorsDSAWycheproof.runTest��4���'�	!�	!�B����R� � � � �	!�	!r#N)	r?r@rAr9rrGr�r�r�rBr#r!r�r��sq������������,���R�R�R�

�
�
�!�!�!�!�!r#r�c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestVectorsECDSAWycheproofc�n�tj�|��||_||_d|_dSr�)r�r�r9r�r�r�r�s   r!r9z#TestVectorsECDSAWycheproof.__init__�s4����"�"�4�(�(�(�$7��!�%�������r#c	�l�d�}d�}d�}td|d|z|||d����}|xj|z
c_dS)Nc�Z�|dddvrdStj|d��S)Nr'r�)
�	secp224r1�	secp224k1�	secp256k1�brainpoolP224r1�brainpoolP224t1�brainpoolP256r1�brainpoolP256t1�brainpoolP320r1�brainpoolP320t1�brainpoolP384r1�brainpoolP384t1�brainpoolP512r1�brainpoolP512t1r�)rr�r�s r!�
filter_eccz8TestVectorsECDSAWycheproof.add_tests.<locals>.filter_ecc�s8���U�|�G�$�)+�+�+��t��>�%��/�2�2�2r#c�,�t|d��Sr�r�r�s r!r�z8TestVectorsECDSAWycheproof.add_tests.<locals>.filter_shar�r#c�V�|d}|dkrdS|dkrdStd|z���)Nr��EcdsaVerifyrj�EcdsaP1363Verify�binaryr�r�)r��
encoding_names  r!�filter_encodingz=TestVectorsECDSAWycheproof.add_tests.<locals>.filter_encoding	s@��!�&�M�M��
�-�-��u��"4�4�4��x� �!:�]�!J�K�K�Kr#r�zWycheproof ECDSA signature (%s))r'r�r�r�r�)r6�filenamerr�rr�s      r!�	add_testsz$TestVectorsECDSAWycheproof.add_tests�s���
	3�
	3�
	3�	1�	1�	1�	L�	L�	L�.�.I�.6�.O�RZ�.Z�@J�HR�ET�9;�9;�<�<�<��	
���6�����r#c��g|_|�d��|�d��|jr�|�d��|�d��|�d��|�d��|�d��|�d��|�d	��|�d
��|�d��|�d��|�d
��|�d��|�d��|jri|�d��|�d��|�d��|�d��|�d��|�d��|jr*|�d��|�d��|�d��|�d��|�d��dS)Nz&ecdsa_secp224r1_sha224_p1363_test.jsonz ecdsa_secp224r1_sha224_test.jsonz&ecdsa_secp224r1_sha256_p1363_test.jsonz ecdsa_secp224r1_sha256_test.jsonz"ecdsa_secp224r1_sha3_224_test.jsonz"ecdsa_secp224r1_sha3_256_test.jsonz"ecdsa_secp224r1_sha3_512_test.jsonz&ecdsa_secp224r1_sha512_p1363_test.jsonz ecdsa_secp224r1_sha512_test.jsonz&ecdsa_secp256r1_sha256_p1363_test.jsonz ecdsa_secp256r1_sha256_test.jsonz"ecdsa_secp256r1_sha3_256_test.jsonz"ecdsa_secp256r1_sha3_512_test.jsonz&ecdsa_secp256r1_sha512_p1363_test.jsonz ecdsa_secp256r1_sha512_test.jsonz"ecdsa_secp384r1_sha3_384_test.jsonz"ecdsa_secp384r1_sha3_512_test.jsonz&ecdsa_secp384r1_sha384_p1363_test.jsonz ecdsa_secp384r1_sha384_test.jsonz&ecdsa_secp384r1_sha512_p1363_test.jsonz ecdsa_secp384r1_sha512_test.jsonz"ecdsa_secp521r1_sha3_512_test.jsonz&ecdsa_secp521r1_sha512_p1363_test.jsonz ecdsa_secp521r1_sha512_test.jsonzecdsa_test.jsonzecdsa_webcrypto_test.json)r�rr�rFs r!rz TestVectorsECDSAWycheproof.setUps!��������?�@�@�@����9�:�:�:���	E��N�N�C�D�D�D��N�N�=�>�>�>��N�N�?�@�@�@��N�N�?�@�@�@��N�N�?�@�@�@��N�N�C�D�D�D��N�N�=�>�>�>��N�N�C�D�D�D��N�N�=�>�>�>��N�N�?�@�@�@��N�N�?�@�@�@��N�N�C�D�D�D����9�:�:�:���	E��N�N�?�@�@�@��N�N�?�@�@�@��N�N�C�D�D�D��N�N�=�>�>�>��N�N�C�D�D�D����9�:�:�:���	E��N�N�?�@�@�@��N�N�C�D�D�D����9�:�:�:����(�)�)�)����2�3�3�3�3�3r#c��|jSr;r�rFs r!rGz+TestVectorsECDSAWycheproof.shortDescription;r�r#c�~�|jr3|jr.ddl}|�d|j�d|j�d���dSdSdSr�r�r�s   r!r�zTestVectorsECDSAWycheproof.warn>r�r#c���d|j|j|jfz|_|j�dS|j�|j��}tj|jd|j	���}	|�
||j��}|jsJ�|�
|��dS#t$r2}|jrYd}~dS|jdkrYd}~dS|jrJ�Yd}~dSd}~wwxYw)Nz"Wycheproof ECDSA Test #%d (%s, %s)rKr�zk*G has a large x-coordinate)r�r�rr�r'r�r)r�rr�rPr,r�r�r_r�r�s      r!r�z&TestVectorsECDSAWycheproof.test_verifyCs��7�2�5�"�*�b�k�:Z�Z����6�>��F��^�'�'���/�/�
��������D�D�D��
	��
�
�j�"�&�9�9�I��8�O�O�O��I�I�b�M�M�M�M�M���	 �	 �	 ��z�
��������z�;�;�;��������x��������������	 ���s$�'B"�"
C�,C�9C�
	C�Cc�D�|jD]}|�|���dSr;r�r�s  r!r�z"TestVectorsECDSAWycheproof.runTestXr�r#N)
r?r@rAr9rrrGr�r�r�rBr#r!r�r��s����������!�!�!�F4�4�4�@���R�R�R�
���*!�!�!�!�!r#r�c���|�d��}g}|tt��z
}|tt��z
}|tt��z
}|tt
��z
}|�d��}|r.|tt��z
}|tt��z
}|t||��gz
}|t||��gz
}|S)Nr�r�)
�getrrDr�r�r0r�r�r�r�)�configr��testsr�s    r!�	get_testsr]s��� �*�*�%:�;�;���E�	�_�^�
,�
,�,�E�	�_�-�
.�
.�.�E�	�_�]�
+�
+�+�E�	�_�_�
-�
-�-�E����L�)�)�J��7�
��!3�4�4�4��
��!5�6�6�6��	�&�':�J�G�G�
H�H�E�	�(�)<�j�I�I�
J�J�E��Lr#�__main__c�B�tjt����Sr;)r��	TestSuiterrBr#r!�suiterrs���!�)�+�+�.�.�.r#r)�defaultTest)`�rer��binasciirr�Cryptodome.Util.py3compatrrrr\rr	r
rrr
rrr�Cryptodome.Signaturer�Cryptodome.PublicKeyrr�Cryptodome.SelfTest.st_commonr�Cryptodome.SelfTest.loaderrr�Cryptodome.Util.numberrrr"r'r.r0r�rDr��test_vectors_verify�	enumerate�idxr��
isinstancer��match�resr�rr-r��hasattrr��modulusr+�	generatorr&�suborderr)r�r`r
�compsr~r'rUrrr�r�r��setattr�test_vectors_signr��	comps_dsarrSr�r�r��
curve_namer�r��ecc_key�
startswithr�r�r�r0r�r�r�rr?r�mainrBr#r!�<module>r;s
��D
�	�	�	�����'�'�'�'�'�'�'�'�9�9�9�9�9�9�9�9�9�9�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�$�$�$�$�$�$�)�)�)�)�)�)�)�)�9�9�9�9�9�9�V�V�V�V�V�V�V�V�?�?�?�?�?�?�?�?�"�"�"�
���
T�T�T���������C'�C'�C'�C'�C'�X�&�C'�C'�C'�L	�	�	�	�	��*�	�	�	�(�'�(<�(?�(F�)1�;�;�(?�A�A�G�EG��
�y�,�-�-�T�T�G�C���z�"�c�����b�h�K�R�P�P�������I�I�a�L�L�(�(��b�1�1�	�'�'�	�2�2����w�r�3�����$���D�	��4������r�v�&�&�H�L�L���i��(�'K�L�L�L�E�
�#�-��u�
%�
%�C��s�w�s�L�)�)�H�%-��B�D�QS�QU�I�-�-�-�-�&.��B�D�QS�QU�I�L�L�L�L�
�y�C�����"�$=��$C�]�S�S�S�S���"�$=��$C�]�S�S�S�S�&�%�&:�(?�(B�(*�,�,�2�02��
�y�*�+�+�@�@�G�C���z�"�c�����b�h�K�R�P�P�������I�I�a�L�L�(�(��b�1�1�	�'�'�	�2�2����w�r�3�����$���D�	��4������r�v�&�&�H�V�V�B�D�)�W�h�PR�PT�+U�V�V�V�I�
�#�-�	�5�
)�
)�C�
�S�W�S�,�������
>�
>�
>�F�$�x�2�4���9�;�;�;�;��G���� 4�h�?�?�?�?�<J�<J�<J�<J�<J�x�(�<J�<J�<J�~	�	�	�	�	�8�,�	�	�	�(�'�(>�(4�(L�3>�;�/C�/C�/C�/C�)*�)*�+�+�1�/1�
��y�,�-�-�V�V�G�C���z�"�c�����b�h�5�r�:�:���
�
�
��Y�Y�q�\�\�
��I�I�a�L�L�(�(��b�1�1�	�'�'�	�2�2������r�v�&�&�H��c�m�*�b�e�R�U�K�K�K�G��s�w�w��-�-�H�%-��B�D�QS�QU�I�-�-�-�-�&.��B�D�QS�QU�I�L�L�L�L�
�y���C� � �V���$�&?�#�&E�}�U�U�U�U���$�&?�#�&E�}�U�U�U�U�&�%�&<�(4�(L�),�.B�.B�(C�E�E�K�IK��
�y�*�+�+�C�C�G�C���z�"�c�����b�h�5�r�:�:���
�
�
��Y�Y�q�\�\�
��I�I�a�L�L�(�(��b�1�1�	�'�'�	�2�2������r�v�&�&�H��c�m�*���5�5�5�G�
�S�W�W�l�V�V�B�D�\�\�
B�
B�
B�F�%��B�D���I�;�;�;�;��G� �.�3�"6�	�B�B�B�B�U1�U1�U1�U1�U1�H�%�U1�U1�U1�pf,�f,�f,�f,�f,�h�'�f,�f,�f,�R	���88!�8!�8!�8!�8!�x�0�8!�8!�8!�vj!�j!�j!�j!�j!��!2�j!�j!�j!�Z�����(�z���/�/�/��H�M�g�&�&�&�&�&�&��r#

Youez - 2016 - github.com/yon3zu
LinuXploit