+
    '(j=              	          ^ RI t ^ RIHtHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
HtHt ^ RIHtHtHtHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt R t ! R R]4      t ! R R] P:                  4      t ! R R] P:                  4      t ! R R] P:                  4      t ]! R=RRRR RR /4      ;'       g    . t!]"! ]!4       EFr  w  t#t$]%! ]$]&4      '       d   K  ]'! ]$R4      '       d   ]$PP                  t)K5  ]'! ]$R4      '       d   KF  ]! ]$PT                  PW                  4       4      t,],P[                  ]$P\                  4      t/]P`                  ! ])]$Pb                  3 U u. uF  p ]! V 4      NK  	  up 4      t2]$Pf                  ]! R4      8w  d9   ]! ]$Pf                  4      t4]PZ                  ! ]2]5! ]$Pf                  4      ]4R7      t6M]PZ                  ! ]2^ R7      t6]/]6]$Pn                  3R  lt8]/]6]$Pn                  3R! lt9]$Pt                  R8X  d   ];! ] R"]#,          ]84       EKa  ];! ] R#]#,          ]94       EKu  	   ! R$ R%] P:                  4      t< ! R& R'] P:                  4      t=]! R=R(R)RR* /4      ;'       g    . t>]>]! R=R+R,RR- /4      ;'       g    . ,          t>]"! ]>4       EFF  w  t#t$]%! ]$]&4      '       d   K  ]'! ]$R4      '       d   ]$PP                  t)K5  ]'! ]$R.4      '       dB   ]P`                  ! ])]$Pb                  ]$P~                  3 U u. uF  p ]! V 4      NK  	  up 4      t@K  ]! ]$PT                  PW                  4       4      t,],P[                  ]$P\                  4      t/]$Pf                  ]! R4      8w  d9   ]! ]$Pf                  4      t4]PZ                  ! ]@]5! ]$Pf                  4      ]4R7      tAM]PZ                  ! ]@^ R7      tA]/]A]$Pn                  3R/ ltB];! ]=R0]#,          ]B4       EKI  	   ! R1 R2] P:                  4      tC ! R3 R4] P:                  4      tDR5 tE ! R6 R7] P:                  4      tF/ 3R8 ltG]HR98X  d   R: tI] P                  ! R;R<7       R# R# u up i u up i )>    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                 N    \        R V ,           \        4       \        4       R.4      # )zCrypto.Hash.new)
__import__globalslocals)	hash_names   &W/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/SelfTest/Signature/test_pss.pyload_hash_by_namer   /   s    ny0')VXwOO    c                   ,   a  ] tR t^3t o R tR tRtV tR# )PRNGc                     Wn         ^ V n        R# )r   Nstreamidx)selfr!   s   &&r   __init__PRNG.__init__5   s    r   c                    V P                   V P                  V P                  V,            pV ;P                  V,          un        V# 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____classdictcell____classdict__s   @r   r   r   3   s      r   r   c                   >   a  ] tR t^?t o RtRtRtR tR tR t	Rt
V tR# )		PSS_Testss  -----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                    \         P                  ! V P                  4      p\        P                  ! V P
                  4      p\        P                  ! V4      pVP                  W P                  4       R # 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                ,   \         P                  ! V P                  4      p\        P                  ! V P
                  R ,           4      p\        P                  ! V4      p\        V P                  4      pV P                  \        VP                  W$4       R# )   AN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                "   \         P                  ! V P                  4      p\        P                  ! V P
                  4      p\        P                  ! VR R7      p\        V P                  4      pV P                  \        VP                  W$4       R# )i  
salt_bytesNrC   rG   s   &    r   test_negative_2PSS_Tests.test_negative_2R   sZ    nnT\\*JJtxx 77340!*hooq>r    N)r,   r-   r.   r/   r8   r9   r;   r?   rH   rM   r0   r1   r2   s   @r   r5   r5   ?   s.      vG
C vC%?? ?r   r5   c                   8   a  ] tR t^Zt o R tR tR tR tRtV t	R# )FIPS_PKCS1_Verify_Testsc                    R # )zFIPS PKCS1 Tests (Verify)rO   r#   s   &r   shortDescription(FIPS_PKCS1_Verify_Tests.shortDescription\   s    *r   c                    \        V4      pVP                  V4      p\        P                  ! V\        V4      VR 7      pVP	                  Wu4       R# rL   	rand_funcN)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                    \        V4      pVP                  V4      p\        P                  ! V\        V4      VR 7      pV P	                  \
        VP                  Wu4       R# 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                    \         P                  ! R 4      P                  4       p\        P                  ! V4      pV P                  VP                  4       R4       R# )   FN)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   rO   N)
r,   r-   r.   r/   rT   rc   rf   rn   r0   r1   r2   s   @r   rQ   rQ   Z   s     ++J5 5r   rQ   c                       ] tR t^qtRtR# )FIPS_PKCS1_Verify_Tests_KATrO   Nr,   r-   r.   r/   r0   rO   r   r   rq   rq   q       r   rq   zSigVerPSS_186-3.rspzSignature Verification 186-3shaalgc                     V # r'   rO   xs   &r   <lambda>rx   x   s    r   r)   c                     V # r'   rO   rv   s   &r   rx   rx   y   s    r   np rX   rK   c                 (    VP                  W4       R # r'   )r:   r#   hash_objr>   r`   s   &&&&r   positive_testr      s    ,r   c                 H    V P                  \        VP                  W4       R # r'   )rE   rF   r:   r~   s   &&&&r   negative_testr      s    *hooxKr   ztest_positive_%dztest_negative_%dc                   ,   a  ] tR t^t o R tR tRtV tR# )FIPS_PKCS1_Sign_Testsc                    R # )zFIPS PKCS1 Tests (Sign)rO   rS   s   &r   rT   &FIPS_PKCS1_Sign_Tests.shortDescription   s    (r   c                    \         P                  ! R 4      p\        P                  ! V4      pV P	                  VP                  4       R4       R# )ri   TN)r   rj   r   r   rk   rl   )r#   test_private_keysigners   &  r   rn   #FIPS_PKCS1_Sign_Tests.test_can_sign   s7    <<-)**D1r   rO   N)r,   r-   r.   r/   rT   rn   r0   r1   r2   s   @r   r   r      s     )2 2r   r   c                       ] tR t^tRtR# )FIPS_PKCS1_Sign_Tests_KATrO   Nrr   rO   r   r   r   r      rs   r   r   zSigGenPSS_186-2.txtzSignature Generation 186-2c                     V # r'   rO   rv   s   &r   rx   rx          Qr   zSigGenPSS_186-3.txtzSignature Generation 186-3c                     V # r'   rO   rv   s   &r   rx   rx      r   r   ec                 J    VP                  V4      pV P                  WC4       R # r'   )signrk   )r#   r   r   r)   r`   s   &&&& r   new_testr      s    KK)	+r   ztest_%dc                   0   a  ] tR t^t o RtR tR tRtV tR# )PKCS1_Legacy_Module_TestszVerify 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                    R # )z&Test legacy Crypto.Signature.PKCS1_PSSrO   rS   s   &r   rT   *PKCS1_Legacy_Module_Tests.shortDescription   s    7r   c                   \         P                  ! R 4      p\        P                  ! \	        R4      4      p\
        P                  ! V4      P                  V4      p\
        P                  ! VP                  4       4      pV P                  VP                  W#4      R4       \        V\        ^4      \        V4      ,          4      pV P                  VP                  W%4      R4       R# )ri   TestTFN)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   rO   N)	r,   r-   r.   r/   __doc__rT   r   r0   r1   r2   s   @r   r   r      s     @8
H 
Hr   r   c                   ,   a  ] tR t^t o R tR tRtV tR# )PKCS1_All_Hashes_Testsc                    R # )z8Test PKCS#1 PSS signature in combination with all hashesrO   rS   s   &r   rT   'PKCS1_All_Hashes_Tests.shortDescription   s    Ir   c                   \         P                  ! R 4      p\        P                  ! V4      pRpV F7  p\	        V4      P                  \        R4      4      pVP                  V4       K9  	  ^ RIHpH	p R F0  pVP                  V\        R4      R7      p	VP                  V	4       K2  	  R F0  pVP                  V\        R4      R7      p
VP                  V
4       K2  	  R# )i   r   )BLAKE2bBLAKE2s)digest_bytesdataN)MD2MD4MD5	RIPEMD160r
   r   r   r   r   SHA3_224SHA3_256SHA3_384SHA3_512)       0   @   )   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   rO   N)r,   r-   r.   r/   rT   r   r0   r1   r2   s   @r   r   r      s     J" "r   r   c                 <   V R 8X  d	   \         pV# V R8X  d   \         P                  ! RR7      pV# V R8X  d   \         P                  ! RR7      pV# V R8X  d	   \        pV# V R8X  d	   \        pV# V R8X  d	   \        pV# V R	8X  d	   \
        pV# \        R
V ,           4      h)z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                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )TestVectorsPSSWycheproofi  c                ^    \         P                  P                  V 4       Wn        R V n        R# )NoneN)unittestTestCaser$   _wycheproof_warnings_id)r#   wycheproof_warningss   &&r   r$   !TestVectorsPSSWycheproof.__init__  s#    ""4($7!r   c                d    R  pR pR pR pR p\        RVRV,          RVRVRVR	VR
V/R7      pV# )c                 <    \         P                  ! V R ,          4      # )keyPem)r   r7   groups   &r   
filter_rsa6TestVectorsPSSWycheproof.add_tests.<locals>.filter_rsa  s    >>%/22r   c                 &    \        V R ,          4      # )sha)r   r   s   &r   
filter_sha6TestVectorsPSSWycheproof.add_tests.<locals>.filter_sha  s    "5<00r   c                 J    V R ,          pVR9  d   \        RV,           4      hR# )typezUnknown type name N)RsassaPssVerify)rF   )r   	type_names   & r   filter_type7TestVectorsPSSWycheproof.add_tests.<locals>.filter_type  s*    fI 55 !5	!ABB 6r   c                     V R ,          # )sLenrO   r   s   &r   filter_slen7TestVectorsPSSWycheproof.add_tests.<locals>.filter_slen#  s    = r   c                 z    V R ,          pVR9  d   \        RV,           4      h\        V R,          4      pV3R lpV# )mgfzUnknown MGF mgfShac                     \        WV4      # r'   r   )rw   ymhs   &&&r   r   CTestVectorsPSSWycheproof.add_tests.<locals>.filter_mgf.<locals>.mgf,  s    A"~%r   r   )rF   r   )r   r   	mgf1_hashs   &  r   
filter_mgf6TestVectorsPSSWycheproof.add_tests.<locals>.filter_mgf&  s@    ,C*$ #!566'h8I& & Jr   zWycheproof PSS signature (%s)r<   r   r   r   r   )	group_tag)	Signature
wycheproof)r	   )r#   filenamer   r   r   r   r   r)   s   &&      r   	add_tests"TestVectorsPSSWycheproof.add_tests  s^    	3	1	C
	!		 ..I.6.MPX.X9>
9F
9?9>
9?	9NO r   c                F   . V n         V P                  R 4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       R	# )
z#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.jsonN)tvr   rS   s   &r   setUpTestVectorsPSSWycheproof.setUp;  s~    <==>>?BCBC>?>?>?/0r   c                    V P                   # r'   )r   rS   s   &r   rT   )TestVectorsPSSWycheproof.shortDescriptionG  s    xxr   c                    VP                   '       dI   V P                  '       d5   ^ RIpVP                  RV P                  : RVP
                  : R24       R# R# R# )r   NzWycheproof warning: z ())warningr   warningswarnr   comment)r#   r   r   s   && r   r   TestVectorsPSSWycheproof.warnJ  s9    :::$333MM488RZZPQ 4:r   c                   R VP                   VP                  3,          V n        VP                  P	                  VP
                  4      p\        P                  ! VP                  VP                  VP                  R7      p VP                  W!P                  4      pVP                  '       g   Q hV P                  V4       R#   \         d8   pTP                  '       d    Rp?R# TP                  '       d   Q h Rp?R# Rp?ii ; i)z Wycheproof RSA PSS Test #%d (%s))	mask_funcrL   N)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 888O8IIbM  	 zzzxxx<x	 s$   C DD'D9DDc                N    V P                    F  pV P                  V4       K  	  R # r'   )r   r  )r#   r   s   & r   r    TestVectorsPSSWycheproof.runTest^  s    ''BR  r   )r   r   r   N)r,   r-   r.   r/   r$   r   r   rT   r   r  r   r0   r1   r2   s   @r   r   r     s/     
#J
1R
! !r   r   c                    V P                  R 4      p. pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \
        4      ,          pV\        \        4      ,          pV P                  R4      '       d-   V\        \        4      ,          pV\        \        4      ,          pV\        V4      .,          pV# )r   
slow_tests)
getr   r5   rQ   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                  >    \         P                  ! \        4       4      # r'   )r   	TestSuiter  rO   r   r   suiter  w  s    !!)+..r   r  )defaultTest)r   z	PKCS1-PSS)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   r5   rQ   rq   test_vectors_verify	enumeratecountr   
isinstancestrhasattrrz   modulusrt   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  mainrv   s   0r   <module>r-     s  >  ) , % 5 R < <     & %P	6 	?!! ?65h// 5.	("3"3 	 ((B,A,J-5{,4k-CD J 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 G EG 
 &'A(=(D)1;(?A G 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   Q
Q
