
    i4              	       "   S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJr  S SKJrJrJrJrJrJrJrJrJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJ	r	  S r  " S S\RB                  5      r" " S S\RB                  5      r#\" SSSS S S S.5      =(       d    / r$\%" \$5       GH  u  r&r'\(" \'\)5      (       a  M  \*" \'S5      (       a  \'RV                  r,M3  \ " \'RZ                  R]                  5       5      r/\/Ra                  \'Rb                  5      r2\Rf                  " \,\'Rh                  4 V s/ s H  n \" U 5      PM     sn 5      r5\R`                  " \55      r6\2\6\'Rn                  4S jr8\2\6\'Rn                  4S jr9\'Rt                  S:X  a  \;" \#S\&-  \95        M  \;" \#S\&-  \85        GM      " S S \RB                  5      r< " S! S"\RB                  5      r=\" SS#S$S%S& 05      =(       d    / r>\>\" SS'S(S%S) 05      =(       d    / -  r>\%" \>5       H  u  r&r'\(" \'\)5      (       a  M  \*" \'S5      (       a  \'RV                  r,M2  \*" \'S*5      (       aT  \Rf                  " \,\'Rh                  \'R~                  4 V s/ s H  n \" U 5      PM     sn 5      r@\R`                  " \@5      rAM  \ " \'RZ                  R]                  5       5      r/\/Ra                  \'Rb                  5      r2\2\A\'Rn                  4S+ jrB\;" \=S,\&-  \B5        M      " S- S.\RB                  5      rC " S/ S0\RB                  5      rD " S1 S2\RB                  5      rE " S3 S4\RB                  5      rF0 4S5 jrG\HS6:X  a  S7 rI\R                  " S8S99  ggs  sn f s  sn f ):    N)	unhexlify)bchr)bytes_to_long)strxor)list_test_cases)load_test_vectorsload_test_vectors_wycheproof)	SHA1SHA224SHA256SHA384SHA512SHA3_384SHA3_224SHA3_256SHA3_512)RSA)pkcs1_15)
PKCS1_v1_5)pycryptodome_filenamec                 F    [        SU -   [        5       [        5       S/5      $ )NzCrypto.Hash.new)
__import__globalslocals)	hash_names    b/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Signature/test_pkcs1_15.pyload_hash_by_namer   3   s    ny0')VXwOO    c                        \ rS rSrS rS rSrg)FIPS_PKCS1_Verify_Tests7   c                     g)NzFIPS PKCS1 Tests (Verify) selfs    r   shortDescription(FIPS_PKCS1_Verify_Tests.shortDescription9   s    *r   c                     [         R                  " S5      R                  5       n[        R                  " U5      nU R                  UR                  5       S5        g )N   F)r   generate
public_keyr   r   assertEqualcan_sign)r&   test_public_keyverifiers      r   test_can_sign%FIPS_PKCS1_Verify_Tests.test_can_sign<   s@    ,,t,779<<0**,e4r   r$   N__name__
__module____qualname____firstlineno__r'   r1   __static_attributes__r$   r   r   r!   r!   7   s    +5r   r!   c                       \ rS rSrSrg)FIPS_PKCS1_Verify_Tests_KATB   r$   Nr4   r5   r6   r7   r8   r$   r   r   r:   r:   B       r   r:   )	Signaturez
PKCS1-v1.5zSigVer15_186-3.rspzSignature Verification 186-3c                     U $ Nr$   xs    r   <lambda>rC   I       ar   c                     [        U 5      $ r@   )intrA   s    r   rC   rC   J   s    Qr   c                     U $ r@   r$   rA   s    r   rC   rC   K   rD   r   )shaalgdresultnc                 &    UR                  X5        g r@   )verifyr&   hash_objr0   	signatures       r   positive_testrQ   Z   s    ,r   c                 F    U R                  [        UR                  X5        g r@   )assertRaises
ValueErrorrM   rN   s       r   negative_testrU   ]   s    *hooxKr   fztest_negative_%dztest_positive_%dc                        \ rS rSrS rS rSrg)FIPS_PKCS1_Sign_Testsf   c                     g)NzFIPS PKCS1 Tests (Sign)r$   r%   s    r   r'   &FIPS_PKCS1_Sign_Tests.shortDescriptionh   s    (r   c                     [         R                  " S5      n[        R                  " U5      nU R	                  UR                  5       S5        g )Nr*   T)r   r+   r   r   r-   r.   )r&   test_private_keysigners      r   r1   #FIPS_PKCS1_Sign_Tests.test_can_signk   s7    <<-./*D1r   r$   Nr3   r$   r   r   rX   rX   f   s    )2r   rX   c                       \ rS rSrSrg)FIPS_PKCS1_Sign_Tests_KATq   r$   Nr<   r$   r   r   ra   ra   q   r=   r   ra   zSigGen15_186-2.txtzSignature Generation 186-2rH   c                     U $ r@   r$   rA   s    r   rC   rC   x       Qr   zSigGen15_186-3.txtzSignature Generation 186-3c                     U $ r@   r$   rA   s    r   rC   rC   }   rd   r   ec                 H    UR                  U5      nU R                  XC5        g r@   )signr-   )r&   rO   r^   rJ   rP   s        r   new_testri      s    KK)	+r   ztest_%dc                   :    \ rS rSrSrSrSrSr\" \5      r	S r
Srg)	PKCS1_15_NoParams   z|Verify that PKCS#1 v1.5 signatures pass even without NULL parameters in
the algorithm identifier (PyCrypto/LP bug #1119552).aP  -----BEGIN RSA PRIVATE KEY-----
            MIIBOwIBAAJBAL8eJ5AKoIsjURpcEoGubZMxLD7+kT+TLr7UkvEtFrRhDDKMtuII
            q19FrL4pUIMymPMSLBn3hJLe30Dw48GQM4UCAwEAAQJACUSDEp8RTe32ftq8IwG8
            Wojl5mAd1wFiIOrZ/Uv8b963WJOJiuQcVN29vxU5+My9GPZ7RA3hrDBEAoHUDPrI
            OQIhAPIPLz4dphiD9imAkivY31Rc5AfHJiQRA7XixTcjEkojAiEAyh/pJHks/Mlr
            +rdPNEpotBjfV4M4BkgGAA/ipcmaAjcCIQCHvhwwKVBLzzTscT2HeUdEeBMoiXXK
            JACAr3sJQJGxIQIgarRp+m1WSKV1MciwMaTOnbU7wxFs9DP1pva76lYBzgUCIQC9
            n0CnZCJ6IZYqSt0H5N7+Q+2Ro64nuwV/OSQfM6sBwQ==
            -----END RSA PRIVATE KEY-----s   This is a test
ڀa287a13517f716e72fb14eea8e33a8db4a4643314607e7ca3e3e281893db74013dda8b855fd99f6fecedcb25fcb7a434f35cd0a101f8b19348e0bd7b6f152dfcc                     [         R                  " [        R                  " U R                  5      5      n[
        R                  " U R                  5      nUR                  X R                  5        g r@   )	r   r   r   	importKeyrsakeyr
   msgrM   rP   )r&   r0   hasheds      r   runTestPKCS1_15_NoParams.runTest   s?    <<dkk :;$((#/r   r$   N)r4   r5   r6   r7   __doc__rp   rq   sig_strr   rP   rs   r8   r$   r   r   rk   rk      s-    <-F  C%G '"I0r   rk   c                   $    \ rS rSrSrS rS rSrg)PKCS1_Legacy_Module_Tests   zVerify that the legacy module Crypto.Signature.PKCS1_v1_5
behaves as expected. The only difference is that the verify()
method returns True/False and does not raise exceptions.c                     g)Nz'Test legacy Crypto.Signature.PKCS1_v1_5r$   r%   s    r   r'   *PKCS1_Legacy_Module_Tests.shortDescription   s    8r   c                    [         R                  " [        R                  5      n[        R
                  " S5      n[        R
                  " U5      R                  U5      n[        R
                  " UR                  5       5      nU R                  UR                  X#5      S5        [        U[        S5      [        U5      -  5      nU R                  UR                  X%5      S5        g )N   TestT   F)r   ro   rk   rp   r
   r   r   rh   r,   r-   rM   r   r   len)r&   keyrr   good_signaturer0   bad_signatures         r   rs   !PKCS1_Legacy_Module_Tests.runTest   s    mm-445'"#,11&9>>#.."23@$G ~tAw^9L/LM?Gr   r$   N)r4   r5   r6   r7   ru   r'   rs   r8   r$   r   r   rx   rx      s    @9
Hr   rx   c                        \ rS rSrS rS rSrg)PKCS1_All_Hashes_Tests   c                     g)Nz8Test PKCS#1v1.5 signature in combination with all hashesr$   r%   s    r   r'   'PKCS1_All_Hashes_Tests.shortDescription   s    Ir   c                    [         R                  " S5      n[        R                  " U5      nSnU H.  n[	        U5      R                  S5      nUR                  U5        M0     SSKJnJn  S H$  nUR                  USS9n	UR                  U	5        M&     S H$  nUR                  USS9n
UR                  U
5        M&     g )	Nr*   )MD2MD4MD5	RIPEMD160r
   r   r   r   r   r   r   r   r   r}   r   )BLAKE2bBLAKE2s)       0   @   )digest_bytesdata)   r      r   )	r   r+   r   r   r   rh   Crypto.Hashr   r   )r&   r   r^   
hash_namesnamerr   r   r   	hash_sizehashed_bhashed_ss              r   rs   PKCS1_All_Hashes_Tests.runTest   s    ll4 c"F
 D&t,009FKK  	1)I{{	{HHKK! * *I{{	{HHKK! *r   r$   N)r4   r5   r6   r7   r'   rs   r8   r$   r   r   r   r      s    J"r   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestVectorsWycheproof   c                 \    [         R                  R                  U 5        Xl        SU l        g )NNone)unittestTestCase__init___wycheproof_warnings_id)r&   wycheproof_warningss     r   r   TestVectorsWycheproof.__init__   s#    ""4($7!r   c                    / U l         U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S	5        U R                  S
5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        g )Nzrsa_sig_gen_misc_test.jsonz#rsa_signature_2048_sha224_test.jsonz#rsa_signature_2048_sha256_test.jsonz#rsa_signature_2048_sha384_test.jsonz%rsa_signature_2048_sha3_224_test.jsonz%rsa_signature_2048_sha3_256_test.jsonz%rsa_signature_2048_sha3_384_test.jsonz%rsa_signature_2048_sha3_512_test.jsonz#rsa_signature_2048_sha512_test.jsonz'rsa_signature_2048_sha512_224_test.jsonz'rsa_signature_2048_sha512_256_test.jsonz#rsa_signature_3072_sha256_test.jsonz#rsa_signature_3072_sha384_test.jsonz%rsa_signature_3072_sha3_256_test.jsonz%rsa_signature_3072_sha3_384_test.jsonz%rsa_signature_3072_sha3_512_test.jsonz#rsa_signature_3072_sha512_test.jsonz'rsa_signature_3072_sha512_256_test.jsonz#rsa_signature_4096_sha384_test.jsonz#rsa_signature_4096_sha512_test.jsonz'rsa_signature_4096_sha512_256_test.jsonzrsa_signature_test.json)tv	add_testsr%   s    r   setUpTestVectorsWycheproof.setUp   s'   34<=<=<=>?>?>?>?<=@A@A<=<=>?>?>?<=@A<=<=@A01r   c           	      >    S nS nS n[        SUSU-  UUUS.S9nU$ )Nc                 4    [         R                  " U S   5      $ )NkeyPem)r   
import_key)groups    r   
filter_rsa3TestVectorsWycheproof.add_tests.<locals>.filter_rsa  s    >>%/22r   c                 h   U S   nUS:X  a  [         $ US:X  a  [         R                  " SS9$ US:X  a  [         R                  " SS9$ US:X  a  [        $ US	:X  a  [        $ US
:X  a  [        $ US:X  a  [
        $ US:X  a  [        $ US:X  a  [        $ US:X  a  [        $ US:X  a  [        $ [        SU-   5      e)NshazSHA-512zSHA-512/224224)truncatezSHA-512/256256zSHA3-512zSHA-384zSHA3-384zSHA-256zSHA3-256zSHA-224zSHA3-224zSHA-1zUnknown hash algorithm: )r   r   r   r   r   r   r   r   r   r
   rT   )r   r   s     r   
filter_sha3TestVectorsWycheproof.add_tests.<locals>.filter_sha  s    eII%m+zz511m+zz511j(i'j(i'j(i'j(g% !;i!GHHr   c                 6    U S   nUS;  a  [        SU-   5      eg )Ntype)RsassaPkcs1VerifyRsassaPkcs1GeneratezUnknown type name )rT   )r   	type_names     r   filter_type4TestVectorsWycheproof.add_tests.<locals>.filter_type   s+    fI LL !5	!ABB Mr   )r>   
wycheproofz$Wycheproof PKCS#1v1.5 signature (%s))rsa_keyhash_modr   )	group_tag)r	   )r&   filenamer   r   r   rJ   s         r   r   TestVectorsWycheproof.add_tests   sE    	3	I6	C
 ..I.6.TW_._DNEOAL9NO r   c                     U R                   $ r@   )r   r%   s    r   r'   &TestVectorsWycheproof.shortDescription-  s    xxr   c                     UR                   (       aE  U R                  (       a3  SS KnUR                  SU R                  < SUR
                  < S35        g g g )Nr   zWycheproof warning: z ())warningr   warningswarnr   comment)r&   r   r   s      r   r   TestVectorsWycheproof.warn0  s4    ::$33MM488RZZPQ 4:r   c                    S[        UR                  5      -   U l        UR                  R	                  UR
                  5      n[        R                  " UR                  5      n UR                  X!R                  5      nUR                  (       d   eU R                  U5        g ! [         a3  nUR                  (       a   S nAg UR                  (       a   e S nAg S nAff = f)NzWycheproof RSA PKCS$#1 Test #)stridr   hash_moduler   rq   r   r   rM   sigvalidr   rT   r   )r&   r   
hashed_msgr^   rP   rf   s         r   test_verify!TestVectorsWycheproof.test_verify5  s    2SZ?^^''/
bff%	j&&9I 88O8IIbM  	 zzxx<x	 s   $B$ $
C!.CCC!c                 L    U R                    H  nU R                  U5        M     g r@   )r   r   )r&   r   s     r   rs   TestVectorsWycheproof.runTestD  s    ''BR  r   )r   r   r   N)r4   r5   r6   r7   r   r   r   r'   r   r   rs   r8   r$   r   r   r   r      s'    
22+ZR
!r   r   c                 r   U R                  S5      n/ nU[        [        5      -  nU[        [        5      -  nU[        [        5      -  nU[        [
        5      -  nU[        [        5      -  nU[        U5      /-  nU R                  S5      (       a$  U[        [        5      -  nU[        [        5      -  nU$ )Nr   
slow_tests)
getr   r!   rX   rk   rx   r   r   r:   ra   )configr   testss      r   	get_testsr   I  s     **%:;E	_455E	_233E	_.//E	_677E	_344E	$%89;;Ezz,!<==!:;;Lr   __main__c                  >    [         R                  " [        5       5      $ r@   )r   	TestSuiter   r$   r   r   rC   rC   [  s    H&&y{3r   suite)defaultTest)Kjsonr   binasciir   Crypto.Util.py3compatr   Crypto.Util.numberr   Crypto.Util.strxorr   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   r	   r   r
   r   r   r   r   r   r   r   r   Crypto.PublicKeyr   Crypto.Signaturer   r   Crypto.Util._file_systemr   r   r   r!   r:   test_vectors_verify	enumeratecountr   
isinstancer   hasattrrK   modulusrH   upperr   r   rq   rO   	constructrf   r,   r0   srQ   rU   rJ   setattrrX   ra   test_vectors_signrI   private_keyr^   ri   rk   rx   r   r   r   r4   r   mainrA   s   0r   <module>r     su  >    & , % 5 R7 7 7   % ' : %P5h// 5	("3"3 	 ((C!5!?,7'7,7"9: @
 >@  ./IE2"cr3$$#BIIOO$56Krvv&H7BDD/J/Qa 0/JKJ||J'H%-BDD - &.BDD L 
yyC+-?%-GW+-?%-GW+ 002H-- 2	 1 1 	 ''B(<(D)1;(?A G EG 
 &'B(<(D)1;(?A G EGG 
 ,-IE2"cr3$$r3mmrtt?T$U?T!]1%5?T$UVk*#BIIOO$56Krvv&H ( , %y5'8(C% .*0)) 0:H 1 1 H*"X.. "4f!H-- f!R  " z3EMMg& G  K^ %Vs   =N
N
