
    ,h%                         d Z ddlZddl ddlZddlmZmZmZ d Z G d dej                        Z
 G d d	ej                        Zi fd
Zedk(  rd Z ej                  d       yy)z(Self-test suite for Crypto.PublicKey.DSA    N)*)list_test_casesa2b_hexb2a_hexc                     t        | t              rdj                  | j                               S t	        d      j                  | j                               S )z,Remove whitespace from a text or byte string )
isinstancestrjoinsplitb)ss    d/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/PublicKey/test_DSA.py_swsr   !   s:    !Cwwqwwy!!uzz!'')$$    c                      e Zd Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z	 ed      Z
 e ed            Z ed	      Z e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y)DSATestz19131871 d75b1612 a819f29d 78d1b0d7 346f7aa7 7bb62a85
                9bfd6c56 75da9d21 2d3a36ef 1672ef66 0b8c7c25 5cc0ec74
                858fba33 f44c0669 9630a76b 030ee333z626d0278 39ea0a13 413163a5 5b4cb500 299d5522 956cefcb
                3bff10f3 99ce2c2e 71cb9de5 fa24babf 58e5b795 21925c9c
                c42e9f6f 464b088c c572af53 e6d78802z8df2a494 492276aa 3d25759b b06869cb eac0d83a fb8d0cf7
                cbb8324f 0d7882e5 d0762fc5 b7210eaf c2e9adac 32ab7aac
                49693dfb f83724c2 ec0736ee 31c80291z,c773218c 737ec8ee 993b4f2d ed30f48e dace915fz,2070b322 3dba372f de1c0ffc 7b2e3b49 8b260614z,358dad57 1462710f 50e254cf 1a376b2b deaadfbfz,0d516729 8202e49b 4116ac10 4fc3f415 ae52f917abcz,a9993e36 4706816a ba3e2571 7850c26c 9cd0d89dz,8bac1ab6 6410435c b7181f95 b16ab97c 92b341c0z,41e2345f 1f56df24 58f426d1 55b4ba2d b6dcd8c8c                 F    ddl ma ddlma ddlmam}ma t        | _        y )Nr   )DSA)Random)bytes_to_longinversesize)	Crypto.PublicKeyr   Cryptor   Crypto.Util.numberr   r   r   dsa)selfr   s     r   setUpzDSATest.setUpF   s    (!CCr   c                     | j                   j                  d      }| j                  |       |j                         }| j	                  |       y)z7DSA (default implementation) generated key (1 argument)   N)r   generate_check_private_key
public_key_check_public_keyr   dsaObjpubs      r   test_generate_1argzDSATest.test_generate_1argN   s@    ""4('!s#r   c                     | j                   j                  dt        j                         j                        }| j                  |       |j                         }| j                  |       y)z8DSA (default implementation) generated key (2 arguments)r"   N)r   r#   r   newreadr$   r%   r&   r'   s      r   test_generate_2argzDSATest.test_generate_2argU   sN    ""4):):;'!s#r   c                    | j                   | j                  | j                  | j                  fD cg c]  }t	        t        |             c}\  }}}}| j                  j                  ||||f      }| j                  |       yc c}w )z6DSA (default implementation) constructed key (4-tuple)N)	ygpqr   r   r   	construct_test_verificationr   paramr0   r1   r2   r3   r(   s          r   test_construct_4tuplezDSATest.test_construct_4tuple\   sr    DHFFDFFTXTZTZ\`\b\bCcd%gen5dAq!##Q1aL1' es   Bc                 P   | j                   | j                  | j                  | j                  | j                  fD cg c]  }t        t        |             c}\  }}}}}| j                  j                  |||||f      }| j                  |       | j                  |       yc c}w )z6DSA (default implementation) constructed key (5-tuple)N)r0   r1   r2   r3   xr   r   r   r4   _test_signingr5   )r   r7   r0   r1   r2   r3   r:   r(   s           r   test_construct_5tuplezDSATest.test_construct_5tupleb   s    GKvvtvvW[W]W]_c_e_egkgmgmFnoU=8oAq!Q##Q1aO46"' ps   B#c                    | j                   | j                  | j                  | j                  fD cg c]  }t	        t        |             c}\  }}}}|||dz   |f}| j                  t        | j                  j                  |       ||||dz   f}| j                  t        | j                  j                  |       |d||f}| j                  t        | j                  j                  |       y c c}w N   )
r0   r1   r2   r3   r   r   assertRaises
ValueErrorr   r4   )r   r7   r0   r1   r2   r3   tups          r   test_construct_bad_key4zDSATest.test_construct_bad_key4i   s    DHFFDFFTXTZTZ\`\b\bCcd%gen5dAq!!QqS!n*dhh&8&8#>!Q!n*dhh&8&8#>!Ql*dhh&8&8#> es   C.c                    | j                   | j                  | j                  | j                  | j                  fD cg c]  }t        t        |             c}\  }}}}}|||||dz   f}| j                  t        | j                  j                  |       |||||dz   f}| j                  t        | j                  j                  |       y c c}w )Nr?   
   )r0   r1   r2   r3   r:   r   r   r@   rA   r   r4   )r   r7   r0   r1   r2   r3   r:   rB   s           r   test_construct_bad_key5zDSATest.test_construct_bad_key5t   s    GKvvtvvW[W]W]_c_e_egkgmgmFnoU=8oAq!Q!Q1Q3*dhh&8&8#>!Q1R4 *dhh&8&8#> ps   Cc                    | j                  d|j                                | j                  d|j                                | j                  d|j                                | j                  d|j                  |j
                  kD         | j                  dt        |j
                               | j                  d|j                  dz
  |j
                  z         | j                  |j                  t        |j                  |j                  |j                               | j                  dd|j                  cxk  xr |j
                  k         y c        y )Nr?   r      )assertEqualhas_privatecan_signcan_encryptr2   r3   r   r0   powr1   r:   )r   r(   s     r   r$   zDSATest._check_private_key|   s    F..01FOO-.F..01 	FHHvxx/0d688n-VXX\VXX563vxx688#DEA36883434r   c                    t        t        | j                              }t        t        | j                              }| j	                  d|j                                | j	                  d|j                                | j	                  d|j                                | j	                  dt        |d             | j	                  d|j                  |j                  kD         | j	                  dt        |j                               | j	                  d|j                  dz
  |j                  z         | j                  t        |j                  ||       | j	                  |j                         |j                         k(  d       | j	                  |j                         |j                         k7  d       | j	                  |j                         |j!                                y )Nr   r?   r:   rH   TF)r   r   km_hashrI   rJ   rK   rL   hasattrr2   r3   r   r@   	TypeError_signr%   	publickey)r   r(   rO   rP   s       r   r&   zDSATest._check_public_key   so   '$&&/*wt{{34 	F..01FOO-.F..01 	GFC01 	FHHvxx/0d688n-VXX\VXX56 	)V\\61= 	**,0A0A0CCDI**,0A0A0CCEJ**,f.>.>.@Ar   c                 J   t        t        | j                              }t        t        | j                              }t        t        | j                              }t        t        | j
                              }|j                  ||      \  }}| j                  ||f||f       y N)r   r   rO   rP   rr   rS   rI   )r   r(   rO   rP   rW   r   r_outs_outs           r   r;   zDSATest._test_signing   sw    '$&&/*wt{{34'$&&/*'$&&/*fa0!Q%0r   c                 J   t        t        | j                              }t        t        | j                              }t        t        | j                              }| j                  |j                  |||f             | j                  |j                  |dz   ||f             y r>   )r   r   rP   rW   r   
assertTrue_verifyassertFalse)r   r(   rP   rW   r   s        r   r5   zDSATest._test_verification   su    wt{{34'$&&/*'$&&/*v1v67
QF;<r   c                    | j                   | j                  | j                  | j                  fD cg c]  }t	        t        |             c}\  }}}}| j                  j                  ||||f      }t        |       y c c}w rV   )	r0   r1   r2   r3   r   r   r   r4   reprr6   s          r   	test_reprzDSATest.test_repr   sk    DHFFDFFTXTZTZ\`\b\bCcd%gen5dAq!##Q1aL1V es   A?N)__name__
__module____qualname__r   r0   r1   r2   r3   r:   rO   	k_inverser   r   mrP   rW   r   r    r*   r.   r8   r<   rC   rF   r$   r&   r;   r5   r`    r   r   r   r   (   s     	 7 	8A 	 7 	8A 	 7 	8A 	?@A?@A?@AGHI%ADEF?@A?@A$$((	??5B41=r   r   c                   $    e Zd Zd Zd Zd Zd Zy)DSADomainTestc                    t         j                  d      }|j                         }t         j                  d|      }| j                  |j                  |j                         | j                  |j
                  |j
                         | j                  |j                  |j                         | j                  |j                         |j                                y)z1Verify we can generate new keys in a given domainr"   domainN)r   r#   rk   rI   r2   r3   r1   )r   	dsa_key_1domain_params	dsa_key_2s       r   test_domain1zDSADomainTest.test_domain1   s    LL&	!((*LLmL<	ikk2ikk2ikk2))+Y-=-=-?@r   c                    ddl m} ddlm}  |d      }|j	                         dk7  s|j                  |      |j                  k7  rv|j                  d      }|j                  d      }||z  }|j                  d      }||z  d	z   }|j	                         dk7  rW|j                  |      |j                  k7  rv |d
      }d	}	|	d	k(  rt        ||      }	|d	z  }|	d	k(  r||	fS )Nr   Integer)	Primality   r"   P   )
exact_bitsi`  r?      )	Crypto.Math.Numbersrr   Crypto.Mathrs   size_in_bitstest_probable_primePROBABLY_PRIMErandomrM   )
r   rr   rs   r2   q1q2r3   zhr1   s
             r   _get_weak_domainzDSADomainTest._get_weak_domain   s    /)AJnn$&)*G*G*JiNfNf*f2.B2.BRA(3AA	A nn$&)*G*G*JiNfNf*f AJ1fAq!AFA 1f 1ayr   c                 r    | j                         }| j                  t        t        j                  d|       y);Verify that domain parameters with composite q are rejectedr"   rj   N)r   r@   rA   r   r#   )r   rm   s     r   test_generate_error_weak_domainz-DSADomainTest.test_generate_error_weak_domain   s-     --/*cllDOr   c                     ddl m} | j                         \  }}}t        |d|      }| j	                  t
        t        j                  ||||f       y)r   r   rq   Y   N)rx   rr   r   rM   r@   rA   r   r4   )r   rr   r2   r3   r1   r0   s         r    test_construct_error_weak_domainz.DSADomainTest.test_construct_error_weak_domain   sF     	0'')1aB]*cmmaAq\Br   N)ra   rb   rc   ro   r   r   r   rf   r   r   rh   rh      s    
A,PCr   rh   c                 R    g }|t        t              z  }|t        t              z  }|S rV   )r   r   rh   )configtestss     r   	get_testsr      s*    E	_W%%E	_]++ELr   __main__c                  <    t        j                  t                     S rV   )unittest	TestSuiter   rf   r   r   <lambda>r      s    H&&y{3 r   suite)defaultTest)__doc__osCrypto.Util.py3compatr   Crypto.SelfTest.st_commonr   r   r   r   TestCaser   rh   r   ra   r   mainrf   r   r   <module>r      st   2 / 	 #  G G%Mh M`2CH%% 2Cj   z3EHMMg& r   