
    i=              	       \   S SK r S SKJr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  S SKJr  S S	KJr  S S
KJr  S SKJr  S r " S S\5      r " S S\ R:                  5      r " S S\ R:                  5      r " S S\ R:                  5      r \" SSSS S S.5      =(       d    / r!\"" \!5       GH`  u  r#r$\%" \$\&5      (       a  M  \'" \$S5      (       a  \$RP                  r)M3  \'" \$S5      (       a  MC  \" \$RT                  RW                  5       5      r,\,R[                  \$R\                  5      r/\R`                  " \)\$Rb                  4 V s/ s H  n \" U 5      PM     sn 5      r2\$Rf                  \" S5      :w  a5  \" \$Rf                  5      r4\RZ                  " \2\5" \$Rf                  5      \4S9r6O\RZ                  " \2S S9r6\/\6\$Rn                  4S  jr8\/\6\$Rn                  4S! jr9\$Rt                  S:X  a  \;" \ S"\#-  \85        GMS  \;" \ S#\#-  \95        GMc      " S$ S%\ R:                  5      r< " S& S'\ R:                  5      r=\" SS(S)S*S+ 05      =(       d    / r>\>\" SS,S-S*S. 05      =(       d    / -  r>\"" \>5       GH9  u  r#r$\%" \$\&5      (       a  M  \'" \$S5      (       a  \$RP                  r)M3  \'" \$S/5      (       aB  \R`                  " \)\$Rb                  \$R~                  4 V s/ s H  n \" U 5      PM     sn 5      r@M  \" \$RT                  RW                  5       5      r,\,R[                  \$R\                  5      r/\$Rf                  \" S5      :w  a5  \" \$Rf                  5      r4\RZ                  " \@\5" \$Rf                  5      \4S9rAO\RZ                  " \@S S9rA\/\A\$Rn                  4S0 jrB\;" \=S1\#-  \B5        GM<      " S2 S3\ R:                  5      rC " S4 S5\ R:                  5      rDS6 rE " S7 S8\ R:                  5      rF0 4S9 jrG\HS::X  a  S; rI\ R                  " S<S=9  ggs  sn f s  sn f )>    N)bbchr)bytes_to_long)strxor)list_test_cases)load_test_vectorsload_test_vectors_wycheproof)SHA1SHA224SHA256SHA384SHA512)RSA)pss)	PKCS1_PSSMGF1c                 F    [        SU -   [        5       [        5       S/5      $ )NzCrypto.Hash.new)
__import__globalslocals)	hash_names    ]/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Signature/test_pss.pyload_hash_by_namer   /   s    ny0')VXwOO    c                        \ rS rSrS rS rSrg)PRNG3   c                     Xl         SU l        g )Nr   streamidx)selfr"   s     r   __init__PRNG.__init__5   s    r   c                 |    U R                   U R                  U R                  U-    nU =R                  U-  sl        U$ Nr!   )r$   rnd_sizeresults      r   __call__PRNG.__call__9   s2    TXXdhh&9:Hr   )r#   r"   N)__name__
__module____qualname____firstlineno__r%   r+   __static_attributes__ r   r   r   r   3   s    r   r   c                   2    \ rS rSrSrSrSrS rS rS r	Sr
g	)
	PSS_Tests?   s  -----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAsvI34FgiTK8+txBvmooNGpNwk23YTU51dwNZi5yha3W4lA/Q
vcZrDalkmD7ekWQwnduxVKa6pRSI13KBgeUOIqJoGXSWhntEtY3FEwvWOHW5AE7Q
jUzTzCiYT6TVaCcpa/7YLai+p6ai2g5f5Zfh4jSawa9uYeuggFygQq4IVW796MgV
yqxYMM/arEj+/sKz3Viua9Rp9fFosertCYCX4DUTgW0mX9bwEnEOgjSI3pLOPXz1
8vx+DRZS5wMCmwCUa0sKonLn3cAUPq+sGix7+eo7T0Z12MU8ud7IYVX/75r3cXiF
PaYE2q8Le0kgOApIXbb+x74x0rNgyIh1yGygkwIDAQABAoIBABz4t1A0pLT6qHI2
EIOaNz3mwhK0dZEqkz0GB1Dhtoax5ATgvKCFB98J3lYB08IBURe1snOsnMpOVUtg
aBRSM+QqnCUG6bnzKjAkuFP5liDE+oNQv1YpKp9CsUovuzdmI8Au3ewihl+ZTIN2
UVNYMEOR1b5m+z2SSwWNOYsiJwpBrT7zkpdlDyjat7FiiPhMMIMXjhQFVxURMIcB
jUBtPzGvV/PG90cVDWi1wRGeeP1dDqti/jsnvykQ15KW1MqGrpeNKRmDdTy/Ucl1
WIoYklKw3U456lgZ/rDTDB818+Tlnk35z4yF7d5ANPM8CKfqOPcnO1BCKVFzf4eq
54wvUtkCgYEA1Zv2lp06l7rXMsvNtyYQjbFChezRDRnPwZmN4NCdRtTgGG1G0Ryd
Yz6WWoPGqZp0b4LAaaHd3W2GTcpXF8WXMKfMX1W+tMAxMozfsXRKMcHoypwuS5wT
fJRXJCG4pvd57AB0iVUEJW2we+uGKU5Zxcx//id2nXGCpoRyViIplQsCgYEA1nVC
eHupHChht0Fh4N09cGqZHZzuwXjOUMzR3Vsfz+4WzVS3NvIgN4g5YgmQFOeKwo5y
iRq5yvubcNdFvf85eHWClg0zPAyxJCVUWigCrrOanGEhJo6re4idJvNVzu4Ucg0v
6B3SJ1HsCda+ZSNz24bSyqRep8A+RoAaoVSFx5kCgYEAn3RvXPs9s+obnqWYiPF3
Re5etE6Vt2vfNKwFxx6zaR6bsmBQjuUHcABWiHb6I71S0bMPI0tbrWGG8ibrYKl1
NTLtUvVVCOS3VP7oNTWT9RTFTAnOXU7DFSo+6o/poWn3r36ff6zhDXeWWMr2OXtt
dEQ1/2lCGEGVv+v61eVmmQUCgYABFHITPTwqwiFL1O5zPWnzyPWgaovhOYSAb6eW
38CXQXGn8wdBJZL39J2lWrr4//l45VK6UgIhfYbY2JynSkO10ZGow8RARygVMILu
OUlaK9lZdDvAf/NpGdUAvzTtZ9F+iYZ2OsA2JnlzyzsGM1l//3vMPWukmJk3ral0
qoJJ8QKBgGRG3eVHnIegBbFVuMDp2NTcfuSuDVUQ1fGAwtPiFa8u81IodJnMk2pq
iXu2+0ytNA/M+SVrAnE2AgIzcaJbtr0p2srkuVM7KMWnG1vWFNjtXN8fAhf/joOv
D+NmPL/N4uE57e40tbiU/H7KdyZaDt+5QiTmdhuyAe6CBjKsF2jy
-----END RSA PRIVATE KEY-----s   AAAs    [c5ذ!Dݹ`P>X5ݎŉP+ɯPL5k{=_R}b5Y~}l1-Vlk/o5Q$	=ABPG"~<p5 +c,\)voʆ95neQ@xɛUCT/ǕhCb1>jqkbsbm(`F.)/_Sv/DT:s</c                     [         R                  " U R                  5      n[        R                  " U R
                  5      n[        R                  " U5      nUR                  X R                  5        g r(   )	r   
import_keyrsa_keyr   r   msgr   verifytag)r$   keyhverifiers       r   test_positive_1PSS_Tests.test_positive_1E   sC    nnT\\*JJtxx 773<88$r   c                 "   [         R                  " U R                  5      n[        R                  " U R
                  S-   5      n[        R                  " U5      n[        U R                  5      nU R                  [        UR                  X$5        g )N   Ar   r7   r8   r   r   r9   r   	bytearrayr;   assertRaises
ValueErrorr:   r$   r<   r=   r>   r;   s        r   test_negative_1PSS_Tests.test_negative_1K   s[    nnT\\*JJtxx$'773<!*hooq>r   c                    [         R                  " U R                  5      n[        R                  " U R
                  5      n[        R                  " USS9n[        U R                  5      nU R                  [        UR                  X$5        g )Ni  
salt_bytesrC   rG   s        r   test_negative_2PSS_Tests.test_negative_2R   sZ    nnT\\*JJtxx 77340!*hooq>r   r2   N)r-   r.   r/   r0   r8   r9   r;   r?   rH   rM   r1   r2   r   r   r4   r4   ?   s&     vG
C vC%??r   r4   c                   ,    \ rS rSrS rS rS rS rSrg)FIPS_PKCS1_Verify_TestsZ   c                     g)NzFIPS PKCS1 Tests (Verify)r2   r$   s    r   shortDescription(FIPS_PKCS1_Verify_Tests.shortDescription\   s    *r   c                     [        U5      nUR                  U5      n[        R                  " U[        U5      US9nUR	                  Xu5        g NrL   	rand_func)r   r   r   lenr:   	r$   hashmodmessage
public_keysalt	signatureprnghashedr>   s	            r   verify_positive'FIPS_PKCS1_Verify_Tests.verify_positive_   s;    DzW%77:#d)tL*r   c                     [        U5      nUR                  U5      n[        R                  " U[        U5      US9nU R	                  [
        UR                  Xu5        g rW   )r   r   r   rZ   rE   rF   r:   r[   s	            r   verify_negative'FIPS_PKCS1_Verify_Tests.verify_negativee   sE    DzW%77:#d)tL*hoovIr   c                     [         R                  " S5      R                  5       n[        R                  " U5      nU R                  UR                  5       S5        g )N   F)r   generater^   r   r   assertEqualcan_sign)r$   test_public_keyr>   s      r   test_can_sign%FIPS_PKCS1_Verify_Tests.test_can_signk   s@    ,,t,77977?+**,e4r   r2   N)	r-   r.   r/   r0   rT   rc   rf   rn   r1   r2   r   r   rP   rP   Z   s    ++J5r   rP   c                       \ rS rSrSrg)FIPS_PKCS1_Verify_Tests_KATq   r2   Nr-   r.   r/   r0   r1   r2   r   r   rq   rq   q       r   rq   )	Signaturez	PKCS1-PSSzSigVerPSS_186-3.rspzSignature Verification 186-3c                     U $ r(   r2   xs    r   <lambda>ry   x   s    r   c                     U $ r(   r2   rw   s    r   ry   ry   y   s    r   )shaalgr*   np rX   rK   c                 &    UR                  X5        g r(   )r:   r$   hash_objr>   r`   s       r   positive_testr      s    ,r   c                 F    U R                  [        UR                  X5        g r(   )rE   rF   r:   r   s       r   negative_testr      s    *hooxKr   ztest_positive_%dztest_negative_%dc                        \ rS rSrS rS rSrg)FIPS_PKCS1_Sign_Tests   c                     g)NzFIPS PKCS1 Tests (Sign)r2   rS   s    r   rT   &FIPS_PKCS1_Sign_Tests.shortDescription   s    (r   c                     [         R                  " S5      n[        R                  " U5      nU R	                  UR                  5       S5        g )Nri   T)r   rj   r   r   rk   rl   )r$   test_private_keysigners      r   rn   #FIPS_PKCS1_Sign_Tests.test_can_sign   s7    <<-)**D1r   r2   N)r-   r.   r/   r0   rT   rn   r1   r2   r   r   r   r      s    )2r   r   c                       \ rS rSrSrg)FIPS_PKCS1_Sign_Tests_KAT   r2   Nrs   r2   r   r   r   r      rt   r   r   zSigGenPSS_186-2.txtzSignature Generation 186-2r{   c                     U $ r(   r2   rw   s    r   ry   ry          Qr   zSigGenPSS_186-3.txtzSignature Generation 186-3c                     U $ r(   r2   rw   s    r   ry   ry      r   r   ec                 H    UR                  U5      nU R                  XC5        g r(   )signrk   )r$   r   r   r*   r`   s        r   new_testr      s    KK)	+r   ztest_%dc                   $    \ 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_PSS
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_PSSr2   rS   s    r   rT   *PKCS1_Legacy_Module_Tests.shortDescription   s    7r   c                    [         R                  " S5      n[        R                  " [	        S5      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 )Nri   TestT   F)r   rj   r
   r   r   r   r   r^   rk   r:   r   r   rZ   )r$   r<   rb   good_signaturer>   bad_signatures         r   runTest!PKCS1_Legacy_Module_Tests.runTest   s    ll4 !F)$"s+008==!12@$G ~tAw^9L/LM?Gr   r2   N)r-   r.   r/   r0   __doc__rT   r   r1   r2   r   r   r   r      s    @8
Hr   r   c                        \ rS rSrS rS rSrg)PKCS1_All_Hashes_Tests   c                     g)Nz8Test PKCS#1 PSS signature in combination with all hashesr2   rS   s    r   rT   'PKCS1_All_Hashes_Tests.shortDescription   s    Ir   c                    [         R                  " S5      n[        R                  " U5      nSnU H7  n[	        U5      R                  [        S5      5      nUR                  U5        M9     SSKJnJ	n  S H-  nUR                  U[        S5      S9n	UR                  U	5        M/     S H-  nUR                  U[        S5      S9n
UR                  U
5        M/     g )	Ni   )MD2MD4MD5	RIPEMD160r
   r   r   r   r   SHA3_224SHA3_256SHA3_384SHA3_512r   r   )BLAKE2bBLAKE2s)       0   @   )digest_bytesdata)   r      r   )
r   rj   r   r   r   r   r   Crypto.Hashr   r   )r$   r<   r   
hash_namesnamerb   r   r   	hash_sizehashed_bhashed_ss              r   r   PKCS1_All_Hashes_Tests.runTest   s    ll4 F
 D&t,006;FKK  	1)I{{	&	{JHKK! * *I{{	&	{JHKK! *r   r2   N)r-   r.   r/   r0   rT   r   r1   r2   r   r   r   r      s    J"r   r   c                    U S:X  a  [         nU$ U S:X  a  [         R                  " SS9nU$ U S:X  a  [         R                  " SS9nU$ U S:X  a  [        nU$ U S:X  a  [        nU$ U S	:X  a  [        nU$ U S
:X  a  [
        nU$ [        SU -   5      e)NzSHA-512zSHA-512/224224)truncatezSHA-512/256256zSHA-384zSHA-256zSHA-224zSHA-1zUnknown hash algorithm: )r   r   r   r   r   r
   rF   )r   hash_modules     r   get_hash_moduler      s    I  
m	#jj%0  
m	#jj%0  
i	  
i	  
i	
 	 
g	  3i?@@r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestVectorsPSSWycheproofi  c                 \    [         R                  R                  U 5        Xl        SU l        g )NNone)unittestTestCaser%   _wycheproof_warnings_id)r$   wycheproof_warningss     r   r%   !TestVectorsPSSWycheproof.__init__  s#    ""4($7!r   c                 N    S nS nS nS nS n[        SUSU-  UUUUUS.S	9nU$ )
Nc                 4    [         R                  " U S   5      $ )NkeyPem)r   r7   groups    r   
filter_rsa6TestVectorsPSSWycheproof.add_tests.<locals>.filter_rsa  s    >>%/22r   c                     [        U S   5      $ )Nsha)r   r   s    r   
filter_sha6TestVectorsPSSWycheproof.add_tests.<locals>.filter_sha  s    "5<00r   c                 6    U S   nUS;  a  [        SU-   5      eg )Ntype)RsassaPssVerifyzUnknown type name )rF   )r   	type_names     r   filter_type7TestVectorsPSSWycheproof.add_tests.<locals>.filter_type  s*    fI 55 !5	!ABB 6r   c                     U S   $ )NsLenr2   r   s    r   filter_slen7TestVectorsPSSWycheproof.add_tests.<locals>.filter_slen#  s    = r   c                 `    U S   nUS;  a  [        SU-   5      e[        U S   5      nU4S jnU$ )Nmgfr   zUnknown MGF mgfShac                     [        XU5      $ r(   r   )rx   ymhs      r   r   CTestVectorsPSSWycheproof.add_tests.<locals>.filter_mgf.<locals>.mgf,  s    A"~%r   )rF   r   )r   r   	mgf1_hashs      r   
filter_mgf6TestVectorsPSSWycheproof.add_tests.<locals>.filter_mgf&  s@    ,C*$ #!566'h8I& & Jr   )ru   
wycheproofzWycheproof PSS signature (%s))r<   r   r   r   r   )	group_tag)r	   )r$   filenamer   r   r   r   r   r*   s           r   	add_tests"TestVectorsPSSWycheproof.add_tests  sT    	3	1	C
	!		 ..I.6.MPX.X@JHRAL@JAL	9NO r   c                 D   / 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        g )
Nz#rsa_pss_2048_sha1_mgf1_20_test.jsonz$rsa_pss_2048_sha256_mgf1_0_test.jsonz%rsa_pss_2048_sha256_mgf1_32_test.jsonz)rsa_pss_2048_sha512_256_mgf1_28_test.jsonz)rsa_pss_2048_sha512_256_mgf1_32_test.jsonz%rsa_pss_3072_sha256_mgf1_32_test.jsonz%rsa_pss_4096_sha256_mgf1_32_test.jsonz%rsa_pss_4096_sha512_mgf1_32_test.jsonzrsa_pss_misc_test.json)tvr   rS   s    r   setUpTestVectorsPSSWycheproof.setUp;  s~    <==>>?BCBC>?>?>?/0r   c                     U R                   $ r(   )r   rS   s    r   rT   )TestVectorsPSSWycheproof.shortDescriptionG  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  TestVectorsPSSWycheproof.warnJ  s4    ::$33MM488RZZPQ 4:r   c                    SUR                   UR                  4-  U l        UR                  R	                  UR
                  5      n[        R                  " UR                  UR                  UR                  S9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 PSS Test #%d (%s))	mask_funcrL   )idr  r   r   r   r9   r   r<   r   r   r:   sigvalidr  rF   r   )r$   r   
hashed_msgr   r`   r   s         r   test_verify$TestVectorsPSSWycheproof.test_verifyO  s    5

8KK^^''/
266bggF	j&&9I 88O8IIbM  	 zzxx<x	 s   ;B; ;
C8C3C33C8c                 L    U R                    H  nU R                  U5        M     g r(   )r   r  )r$   r   s     r   r    TestVectorsPSSWycheproof.runTest^  s    ''BR  r   )r   r   r   N)r-   r.   r/   r0   r%   r   r   rT   r  r  r   r1   r2   r   r   r   r     s'    
#J
1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 R                  S5      (       a$  U[        [        5      -  nU[        [        5      -  nU[        U5      /-  nU$ )Nr   
slow_tests)
getr   r4   rP   r   r   r   rq   r   r   )configr   testss      r   	get_testsr  c  s     **%:;E	_Y''E	_455E	_233E	_677E	_344Ezz,!<==!:;;	&':;<<ELr   __main__c                  >    [         R                  " [        5       5      $ r(   )r   	TestSuiter  r2   r   r   suiter  w  s    !!)+..r   r  )defaultTest)Kr   Crypto.Util.py3compatr   r   Crypto.Util.numberr   Crypto.Util.strxorr   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   r	   r   r
   r   r   r   r   Crypto.PublicKeyr   Crypto.Signaturer   r   Crypto.Signature.pssr   r   objectr   r   r4   rP   rq   test_vectors_verify	enumeratecountr   
isinstancestrhasattrr|   modulusr{   upperr   r   r9   r   	constructr   r^   saltvalra   rZ   r>   sr   r   r*   setattrr   r   test_vectors_signdprivate_keyr   r   r   r   r   r   r  r-   r  mainrw   s   0r   <module>r3     s  >  ) , % 5 R < <     & %P	6 	?!! ?65h// 5.	("3"3 	 ((B,A,J7B6A-CD J HJ	  ./IE2"cr3$$r3#BIIOO$56Krvv&H7BDD/J/Qa 0/JKJ	zzQvYBJJ77:#bjj/TR77:!4%-BDD - &.BDD L 
yyC+-?%-GW+-?%-GW7 0<2H-- 2	 1 1 	 &&@(=(D)1;(?A G EG 
 &'A(=(D)1;(?A G EGG 
 ,-IE2"cr3$$r3mmrtt?T$U?T!]1%5?T$UV#BIIOO$56Krvv&H	zzQvYBJJRZZDQ3 ( , %y5'8(C- .2H 1 1 H*"X.. "4(Q!x00 Q!h  & z/MMg& _  Kf %Vs   P$
+P)
