+
    '(j4                     `   ^ RI t ^ RIt^ RIHt ^ RI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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IH	t	 R t  ! R R]PB                  4      t" ! R R]PB                  4      t#]! R:RRRR RR RR /4      ;'       g    . t$]%! ]$4       EF  w  t&t'](! ]'])4      '       d   K  ]*! ]'R4      '       d   ]'PV                  t,K5  ] ! ]'PZ                  P]                  4       4      t/]/Pa                  ]'Pb                  4      t2]Pf                  ! ],]'Ph                  3 U u. uF  p ]! V 4      NK  	  up 4      t5]P`                  ! ]54      t6]2]6]'Pn                  3R lt8]2]6]'Pn                  3R lt9]'Pt                  R8X  d   ];! ]#R]&,          ]94       K  ];! ]#R]&,          ]84       EK  	   ! R  R!]PB                  4      t< ! R" R#]PB                  4      t=]! R:R$R%RR& /4      ;'       g    . t>]>]! R:R'R(RR) /4      ;'       g    . ,          t>]%! ]>4       F  w  t&t'](! ]'])4      '       d   K  ]*! ]'R4      '       d   ]'PV                  t,K4  ]*! ]'R*4      '       dT   ]Pf                  ! ],]'Ph                  ]'P~                  3 U u. uF  p ]! V 4      NK  	  up 4      t@]P`                  ! ]@4      tAK  ] ! ]'PZ                  P]                  4       4      t/]/Pa                  ]'Pb                  4      t2]2]A]'Pn                  3R+ ltB];! ]=R,]&,          ]B4       K  	   ! R- R.]PB                  4      tC ! R/ R0]PB                  4      tD ! R1 R2]PB                  4      tE ! R3 R4]PB                  4      tF/ 3R5 ltG]HR68X  d   R7 tI]P                  ! R8R97       R# R# u up i u up i );    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                 N    \        R V ,           \        4       \        4       R.4      # )zCrypto.Hash.new)
__import__globalslocals)	hash_names   &\/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/SelfTest/Signature/test_pkcs1_15.pyload_hash_by_namer   3   s    ny0')VXwOO    c                   ,   a  ] tR t^7t o R tR tRtV tR# )FIPS_PKCS1_Verify_Testsc                    R # )zFIPS PKCS1 Tests (Verify) selfs   &r   shortDescription(FIPS_PKCS1_Verify_Tests.shortDescription9   s    *r   c                    \         P                  ! R 4      P                  4       p\        P                  ! V4      pV P                  VP                  4       R4       R# )   FN)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&   r0   __static_attributes____classdictcell____classdict__s   @r   r!   r!   7   s     +5 5r   r!   c                       ] tR t^BtRtR# )FIPS_PKCS1_Verify_Tests_KATr#   Nr3   r4   r5   r6   r7   r#   r   r   r<   r<   B       r   r<   zSigVer15_186-3.rspzSignature Verification 186-3shaalgc                     V # Nr#   xs   &r   <lambda>rD   I       ar   dc                     \        V 4      # rA   )intrB   s   &r   rD   rD   J   s    Qr   resultc                     V # rA   r#   rB   s   &r   rD   rD   K   rE   r   nc                 (    VP                  W4       R # rA   )verifyr%   hash_objr/   	signatures   &&&&r   positive_testrQ   Z   s    ,r   c                 H    V P                  \        VP                  W4       R # rA   )assertRaises
ValueErrorrM   rN   s   &&&&r   negative_testrU   ]   s    *hooxKr   fztest_negative_%dztest_positive_%dc                   ,   a  ] tR t^ft o R tR tRtV tR# )FIPS_PKCS1_Sign_Testsc                    R # )zFIPS PKCS1 Tests (Sign)r#   r$   s   &r   r&   &FIPS_PKCS1_Sign_Tests.shortDescriptionh   s    (r   c                    \         P                  ! R 4      p\        P                  ! V4      pV P	                  VP                  4       R4       R# )r)   TN)r   r*   r   r   r,   r-   )r%   test_private_keysigners   &  r   r0   #FIPS_PKCS1_Sign_Tests.test_can_signk   s7    <<-./*D1r   r#   Nr2   r9   s   @r   rX   rX   f   s     )2 2r   rX   c                       ] tR t^qtRtR# )FIPS_PKCS1_Sign_Tests_KATr#   Nr=   r#   r   r   r`   r`   q   r>   r   r`   zSigGen15_186-2.txtzSignature Generation 186-2c                     V # rA   r#   rB   s   &r   rD   rD   x       Qr   zSigGen15_186-3.txtzSignature Generation 186-3c                     V # rA   r#   rB   s   &r   rD   rD   }   rb   r   ec                 J    VP                  V4      pV P                  WC4       R # rA   )signr,   )r%   rO   r]   rI   rP   s   &&&& r   new_testrg      s    KK)	+r   ztest_%dc                   F   a  ] tR t^t o RtRtRtRt]! ]4      t	R t
RtV tR# )PKCS1_15_NoParamsz|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                    \         P                  ! \        P                  ! V P                  4      4      p\
        P                  ! V P                  4      pVP                  W P                  4       R # rA   )	r   r   r   	importKeyrsakeyr
   msgrM   rP   )r%   r/   hasheds   &  r   runTestPKCS1_15_NoParams.runTest   s?    <<dkk :;$((#/r   r#   N)r3   r4   r5   r6   __doc__rm   rn   sig_strr   rP   rp   r7   r8   r9   s   @r   ri   ri      s5     <-F  C%G '"I0 0r   ri   c                   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_v1_5
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_v1_5r#   r$   s   &r   r&   *PKCS1_Legacy_Module_Tests.shortDescription   s    8r   c                   \         P                  ! \        P                  4      p\        P
                  ! R 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# )   TestTFN)r   rl   ri   rm   r
   r   r   rf   r+   r,   rM   r   r   len)r%   keyro   good_signaturer/   bad_signatures   &     r   rp   !PKCS1_Legacy_Module_Tests.runTest   s    mm-445'"#,11&9>>#.."23@$G ~tAw^9L/LM?Gr   r#   N)	r3   r4   r5   r6   rr   r&   rp   r7   r8   r9   s   @r   ru   ru      s     @9
H 
Hr   ru   c                   ,   a  ] tR t^t o R tR tRtV tR# )PKCS1_All_Hashes_Testsc                    R # )z8Test PKCS#1v1.5 signature in combination with all hashesr#   r$   s   &r   r&   'PKCS1_All_Hashes_Tests.shortDescription   s    Ir   c                   \         P                  ! R 4      p\        P                  ! V4      pRpV F.  p\	        V4      P                  R4      pVP                  V4       K0  	  ^ RIHpHp R F'  pVP                  VRR7      p	VP                  V	4       K)  	  R F'  pVP                  VRR7      p
VP                  V
4       K)  	  R# )r)   ry   )BLAKE2bBLAKE2s)digest_bytesdataN)MD2MD4MD5	RIPEMD160r
   r   r   r   r   r   r   r   r   )       0   @   )   r      r   )	r   r*   r   r   r   rf   Crypto.Hashr   r   )r%   r{   r]   
hash_namesnamero   r   r   	hash_sizehashed_bhashed_ss   &          r   rp   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)r3   r4   r5   r6   r&   rp   r7   r8   r9   s   @r   r   r      s     J" "r   r   c                   J   a  ] tR t^t o R tR tR tR tR tR t	R t
RtV tR	# )
TestVectorsWycheproofc                ^    \         P                  P                  V 4       Wn        R V n        R# )NoneN)unittestTestCase__init___wycheproof_warnings_id)r%   wycheproof_warningss   &&r   r   TestVectorsWycheproof.__init__   s#    ""4($7!r   c                    . 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       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       V P                  R4       V P                  R4       V P                  R4       V P                  R4       R# )z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.jsonN)tv	add_testsr$   s   &r   setUpTestVectorsWycheproof.setUp   s'   34<=<=<=>?>?>?>?<=@A@A<=<=>?>?>?<=@A<=<=@A01r   c                P    R  pR pR p\        RVRV,          RVRVRV/R7      pV# )	c                 <    \         P                  ! V R ,          4      # )keyPem)r   
import_key)groups   &r   
filter_rsa3TestVectorsWycheproof.add_tests.<locals>.filter_rsa  s    >>%/22r   c                    V R ,          pVR8X  d   \         # VR8X  d   \         P                  ! RR7      # VR8X  d   \         P                  ! RR7      # VR8X  d   \        # VR8X  d   \        # VR	8X  d   \        # VR
8X  d   \
        # VR8X  d   \        # VR8X  d   \        # VR8X  d   \        # VR8X  d   \        # \        RV,           4      h)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                 J    V R ,          pVR9  d   \        RV,           4      hR# )typezUnknown type name N)RsassaPkcs1VerifyRsassaPkcs1Generate)rT   )r   	type_names   & r   filter_type4TestVectorsWycheproof.add_tests.<locals>.filter_type   s+    fI LL !5	!ABB Mr   z$Wycheproof PKCS#1v1.5 signature (%s)rsa_keyhash_modr   )	group_tag)	Signature
wycheproof)r	   )r%   filenamer   r   r   rI   s   &&    r   r   TestVectorsWycheproof.add_tests   sK    	3	I6	C
 ..I.6.TW_._9BJ9CZ9?9NO r   c                    V P                   # rA   )r   r$   s   &r   r&   &TestVectorsWycheproof.shortDescription-  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   TestVectorsWycheproof.warn0  s9    :::$333MM488RZZPQ 4:r   c                   R \        VP                  4      ,           V n        VP                  P	                  VP
                  4      p\        P                  ! VP                  4      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 PKCS$#1 Test #N)stridr   hash_moduler   rn   r   r{   rM   sigvalidr   rT   r   )r%   r   
hashed_msgr]   rP   rd   s   &&    r   test_verify!TestVectorsWycheproof.test_verify5  s    2SZ?^^''/
bff%	j&&9I 888O8IIbM  	 zzzxxx<x	 s$   (B* *C,5C'C'C''C,c                N    V P                    F  pV P                  V4       K  	  R # rA   )r   r   )r%   r   s   & r   rp   TestVectorsWycheproof.runTestD  s    ''BR  r   )r   r   r   N)r3   r4   r5   r6   r   r   r   r&   r   r   rp   r7   r8   r9   s   @r   r   r      s/     
22+Z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\        V4      .,          pV P                  R4      '       d-   V\        \        4      ,          pV\        \        4      ,          pV# )r   
slow_tests)
getr   r!   rX   ri   ru   r   r   r<   r`   )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                  >    \         P                  ! \        4       4      # rA   )r   	TestSuiter   r#   r   r   rD   rD   [  s    H&&y{3r   suite)defaultTest)r   z
PKCS1-v1.5)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   modulusr?   upperr   r   rn   rO   	constructrd   r+   r/   srQ   rU   rI   setattrrX   r`   test_vectors_signrF   private_keyr]   rg   ri   ru   r   r   r   r3   r   mainrB   s   0r   <module>r      s  >    & , % 5 R7 7 7   % ' : %P5h// 5	("3"3 	 ((C!5!?"*K"%'7"*K"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 G EG 
 &'B(<(D)1;(?A G 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+
