Ë
    (üàgÃ=  ã            	       óî  — d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d„ Z G d„ de«      Z G d„ de j:                  «      Z G d„ de j:                  «      Z G d„ de j:                  «      Z  edddd„ d„ dœ«      xs g Z! e"e!«      D �]K  \  Z#Z$ e%e$e&«      rŒ e'e$d«      re$jP                  Z)Œ' e'e$d«      rŒ1 ee$jT                  jW                  «       «      Z,e,j[                  e$j\                  «      Z/ ej`                  e)e$jb                  fD � cg c]
  }  e| «      ‘Œ c} «      Z2e$jf                   ed«      k7  r8 ee$jf                  «      Z4 ejZ                  e2 e5e$jf                  «      e4¬«      Z6n ejZ                  e2d ¬«      Z6e/e6e$jn                  fd „Z8e/e6e$jn                  fd!„Z9e$jt                  dk(  r e;e d"e#z  e8«       �Œ? e;e d#e#z  e9«       �ŒN  G d$„ d%e j:                  «      Z< G d&„ d'e j:                  «      Z= edd(d)d*d+„ i«      xs g Z>e> edd,d-d*d.„ i«      xs g z  Z> e"e>«      D �]'  \  Z#Z$ e%e$e&«      rŒ e'e$d«      re$jP                  Z)Œ' e'e$d/«      r> ej`                  e)e$jb                  e$j~                  fD � cg c]
  }  e| «      ‘Œ c} «      Z@Œn ee$jT                  jW                  «       «      Z,e,j[                  e$j\                  «      Z/e$jf                   ed«      k7  r8 ee$jf                  «      Z4 ejZ                  e@ e5e$jf                  «      e4¬«      ZAn ejZ                  e@d ¬«      ZAe/eAe$jn                  fd0„ZB e;e=d1e#z  eB«       �Œ*  G d2„ d3e j:                  «      ZC G d4„ d5e j:                  «      ZDd6„ ZE G d7„ d8e j:                  «      ZFi fd9„ZGeHd:k(  rd;„ ZI e j”                  d<¬=«       yyc c} w c c} w )>é    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   — t        d| z   t        «       t        «       dg«      S )NzCrypto.Hash.Únew)Ú
__import__ÚglobalsÚlocals)Ú	hash_names    ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/Signature/test_pss.pyÚload_hash_by_namer   /   s   € Ü�n yÑ0´'³)¼V»XÈÀwÓOÐOó    c                   ó   — e Zd Zd„ Zd„ Zy)ÚPRNGc                 ó    — || _         d| _        y )Nr   ©ÚstreamÚidx)Úselfr!   s     r   Ú__init__zPRNG.__init__5   s   € ØˆŒØˆ�r   c                 ó|   — | j                   | j                  | j                  |z    }| xj                  |z  c_        |S ©Nr    )r#   Úrnd_sizeÚresults      r   Ú__call__zPRNG.__call__9   s2   € Ø—‘˜TŸX™X d§h¡h°Ñ&9Ð:ˆØ�Š�HÑ�Øˆr   N)Ú__name__Ú
__module__Ú__qualname__r$   r)   © r   r   r   r   3   s   „ òór   r   c                   ó*   — e Zd ZdZdZdZd„ Zd„ Zd„ Zy)Ú	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+É¯»ìþ°¥¹P�Lî5›°k{=_ÒûR·þ}b�5Y‰~}üòlÐ1-½ëÍVélk/o5¢çQ$	=ìAB¥Pš¯£G†"Ö~ð<p5 †àó™Ç+Ïc,\)vÍÿo�ÅÑÊ†9ô5ý¢ñn£¦eÅQä@½ƒxÉ›µÇêU› ÌCÉT†/Ç•hCùb1»Ãðš>jüqkbs„bä½m(í`¤Fû�.áŒ)/_žS˜¤v¸Üþ÷/D³T—:â–sè<¢´¹ø/c                 óâ   — t        j                  | j                  «      }t        j                  | j
                  «      }t        j                  |«      }|j                  || j                  «       y r&   )	r   Ú
import_keyÚrsa_keyr   r   Úmsgr   ÚverifyÚtag)r#   ÚkeyÚhÚverifiers       r   Útest_positive_1zPSS_Tests.test_positive_1E   sE   € Ü�n‰n˜TŸ\™\Ó*ˆÜ�J‰J�t—x‘xÓ ˆÜ—7‘7˜3“<ˆØ�‰˜˜4Ÿ8™8Õ$r   c                 ó  — t        j                  | j                  «      }t        j                  | j
                  dz   «      }t        j                  |«      }t        | j                  «      }| j                  t        |j                  ||«       y )Nó   A©r   r1   r2   r   r   r3   r   Ú	bytearrayr5   ÚassertRaisesÚ
ValueErrorr4   ©r#   r6   r7   r8   r5   s        r   Útest_negative_1zPSS_Tests.test_negative_1K   s]   € Ü�n‰n˜TŸ\™\Ó*ˆÜ�J‰J�t—x‘x $‘Ó'ˆÜ—7‘7˜3“<ˆÜ˜Ÿ™Ó!ˆØ×Ñœ* h§o¡o°q¸#Õ>r   c                 ó  — t        j                  | j                  «      }t        j                  | j
                  «      }t        j                  |d¬«      }t        | j                  «      }| j                  t        |j                  ||«       y )Niè  ©Ú
salt_bytesr<   r@   s        r   Útest_negative_2zPSS_Tests.test_negative_2R   s\   € Ü�n‰n˜TŸ\™\Ó*ˆÜ�J‰J�t—x‘xÓ ˆÜ—7‘7˜3¨4Ô0ˆÜ˜Ÿ™Ó!ˆØ×Ñœ* h§o¡o°q¸#Õ>r   N)	r*   r+   r,   r2   r3   r5   r9   rA   rE   r-   r   r   r/   r/   ?   s&   „ ð v€GØ
€Cð v€Cò%ò?ó?r   r/   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚFIPS_PKCS1_Verify_Testsc                  ó   — y)NzFIPS PKCS1 Tests (Verify)r-   ©r#   s    r   ÚshortDescriptionz(FIPS_PKCS1_Verify_Tests.shortDescription\   s   € Ø*r   c                 ó¢   — t        |«      }|j                  |«      }t        j                  |t        |«      |¬«      }|j	                  ||«       y ©N©rD   Ú	rand_func)r   r   r   Úlenr4   ©	r#   ÚhashmodÚmessageÚ
public_keyÚsaltÚ	signatureÚprngÚhashedr8   s	            r   Úverify_positivez'FIPS_PKCS1_Verify_Tests.verify_positive_   s=   € Ü�D‹zˆØ—‘˜WÓ%ˆÜ—7‘7˜:´#°d³)ÀtÔLˆØ�‰˜ 	Õ*r   c                 óÂ   — t        |«      }|j                  |«      }t        j                  |t        |«      |¬«      }| j	                  t
        |j                  ||«       y rL   )r   r   r   rO   r>   r?   r4   rP   s	            r   Úverify_negativez'FIPS_PKCS1_Verify_Tests.verify_negativee   sG   € Ü�D‹zˆØ—‘˜WÓ%ˆÜ—7‘7˜:´#°d³)ÀtÔLˆØ×Ñœ* h§o¡o°v¸yÕIr   c                 ó´   — t        j                  d«      j                  «       }t        j                  |«      }| j                  |j                  «       d«       y )Né   F)r   ÚgeneraterS   r   r   ÚassertEqualÚcan_sign)r#   Útest_public_keyr8   s      r   Útest_can_signz%FIPS_PKCS1_Verify_Tests.test_can_signk   s@   € ÜŸ,™, tÓ,×7Ñ7Ó9ˆÜ—7‘7˜?Ó+ˆØ×Ñ˜×*Ñ*Ó,¨eÕ4r   N)r*   r+   r,   rJ   rX   rZ   ra   r-   r   r   rG   rG   Z   s   „ ò+ò+òJó5r   rG   c                   ó   — e Zd Zy)ÚFIPS_PKCS1_Verify_Tests_KATN©r*   r+   r,   r-   r   r   rc   rc   q   ó   „ Ør   rc   )Ú	Signaturez	PKCS1-PSSzSigVerPSS_186-3.rspzSignature Verification 186-3c                 ó   — | S r&   r-   ©Úxs    r   ú<lambda>rj   x   s   € À€ r   c                 ó   — | S r&   r-   rh   s    r   rj   rj   y   s   € À€ r   )Úshaalgr(   ÚnÚpú rM   rC   c                 ó(   — |j                  ||«       y r&   )r4   ©r#   Úhash_objr8   rU   s       r   Úpositive_testrs   Ž   s   € Ø�‰˜ )Õ,r   c                 óH   — | j                  t        |j                  ||«       y r&   )r>   r?   r4   rq   s       r   Únegative_testru   ‘   s   € Ø×Ñœ* h§o¡o°xÀÕKr   ztest_positive_%dztest_negative_%dc                   ó   — e Zd Zd„ Zd„ Zy)ÚFIPS_PKCS1_Sign_Testsc                  ó   — y)NzFIPS PKCS1 Tests (Sign)r-   rI   s    r   rJ   z&FIPS_PKCS1_Sign_Tests.shortDescriptionœ   s   € Ø(r   c                 ó˜   — t        j                  d«      }t        j                  |«      }| j	                  |j                  «       d«       y )Nr\   T)r   r]   r   r   r^   r_   )r#   Útest_private_keyÚsigners      r   ra   z#FIPS_PKCS1_Sign_Tests.test_can_signŸ   s7   € ÜŸ<™<¨Ó-ÐÜ—‘Ð)Ó*ˆØ×Ñ˜Ÿ™Ó*¨DÕ1r   N)r*   r+   r,   rJ   ra   r-   r   r   rw   rw   š   s   „ ò)ó2r   rw   c                   ó   — e Zd Zy)ÚFIPS_PKCS1_Sign_Tests_KATNrd   r-   r   r   r}   r}   ¥   re   r   r}   zSigGenPSS_186-2.txtzSignature Generation 186-2rl   c                 ó   — | S r&   r-   rh   s    r   rj   rj   ¬   ó   € ¸Q€ r   zSigGenPSS_186-3.txtzSignature Generation 186-3c                 ó   — | S r&   r-   rh   s    r   rj   rj   ±   r   r   Úec                 óJ   — |j                  |«      }| j                  ||«       y r&   )Úsignr^   )r#   rr   r{   r(   rU   s        r   Únew_testr„   Å   s    € Ø—K‘K Ó)ˆ	Ø×Ñ˜ FÕ+r   ztest_%dc                   ó   — e Zd ZdZd„ Zd„ Zy)ÚPKCS1_Legacy_Module_Testsz·Verify 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                  ó   — y)Nz&Test legacy Crypto.Signature.PKCS1_PSSr-   rI   s    r   rJ   z*PKCS1_Legacy_Module_Tests.shortDescriptionÑ   s   € Ø7r   c                 óÂ  — t        j                  d«      }t        j                  t	        d«      «      }t        j                  |«      j                  |«      }t        j                  |j                  «       «      }| j                  |j                  ||«      d«       t        |t        d«      t        |«      z  «      }| j                  |j                  ||«      d«       y )Nr\   ÚTestTé   F)r   r]   r
   r   r   r   rƒ   rS   r^   r4   r   r   rO   )r#   r6   rW   Úgood_signaturer8   Úbad_signatures         r   ÚrunTestz!PKCS1_Legacy_Module_Tests.runTestÔ   s¢   € Ü�l‰l˜4Ó ˆÜ—‘œ!˜F›)Ó$ˆÜ"Ÿ™ sÓ+×0Ñ0°Ó8ˆÜ—=‘= §¡Ó!1Ó2ˆà×Ñ˜Ÿ™¨°Ó@À$ÔGô ˜~¬t°A«w¼¸^Ó9LÑ/LÓMˆØ×Ñ˜Ÿ™¨°Ó?ÀÕGr   N)r*   r+   r,   Ú__doc__rJ   r�   r-   r   r   r†   r†   Ì   s   „ ñ@ò8ó
Hr   r†   c                   ó   — e Zd Zd„ Zd„ Zy)ÚPKCS1_All_Hashes_Testsc                  ó   — y)Nz8Test PKCS#1 PSS signature in combination with all hashesr-   rI   s    r   rJ   z'PKCS1_All_Hashes_Tests.shortDescriptionã   s   € ØIr   c                 ó²  — t        j                  d«      }t        j                  |«      }d}|D ]6  }t	        |«      j                  t        d«      «      }|j                  |«       Œ8 ddlm}m	} dD ]/  }|j                  |t        d«      ¬«      }	|j                  |	«       Œ1 dD ]/  }|j                  |t        d«      ¬«      }
|j                  |
«       Œ1 y )	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   r]   r   r   r   r   rƒ   ÚCrypto.Hashr›   rœ   )r#   r6   r{   Ú
hash_namesÚnamerW   r›   rœ   Ú	hash_sizeÚhashed_bÚhashed_ss              r   r�   zPKCS1_All_Hashes_Tests.runTestæ   sÄ   € ä�l‰l˜4Ó ˆÜ—‘˜“ˆðFˆ
ð ò 	 ˆDÜ& tÓ,×0Ñ0´°6³Ó;ˆFØ�K‰K˜Õð	 ÷ 	1Ø)ò 	"ˆIØ—{‘{°	ÄÀ&Ã	�{ÓJˆHØ�K‰K˜Õ!ð	"ð *ò 	"ˆIØ—{‘{°	ÄÀ&Ã	�{ÓJˆHØ�K‰K˜Õ!ñ	"r   N)r*   r+   r,   rJ   r�   r-   r   r   r�   r�   á   s   „ òJó"r   r�   c                 ó  — | dk(  rt         }|S | dk(  rt        j                  d¬«      }|S | dk(  rt        j                  d¬«      }|S | dk(  rt        }|S | dk(  rt        }|S | d	k(  rt        }|S | d
k(  rt
        }|S t        d| z   «      ‚)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
   r?   )r   Úhash_modules     r   Úget_hash_moduler°   û   sÆ   € Ø�IÒÜˆð Ðð 
�mÒ	#Ü—j‘j¨%Ô0ˆð Ðð 
�mÒ	#Ü—j‘j¨%Ô0ˆð Ðð 
�iÒ	Üˆð Ðð 
�iÒ	Üˆð Ðð 
�iÒ	Üˆð
 Ðð	 
�gÒ	Üˆð Ðô Ð3°iÑ?Ó@Ð@r   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestVectorsPSSWycheproofc                 ó^   — t         j                  j                  | «       || _        d| _        y )NÚNone)ÚunittestÚTestCaser$   Ú_wycheproof_warningsÚ_id)r#   Úwycheproof_warningss     r   r$   z!TestVectorsPSSWycheproof.__init__  s%   € Ü×Ñ×"Ñ" 4Ô(Ø$7ˆÔ!Øˆ�r   c                 óT   — d„ }d„ }d„ }d„ }d„ }t        d|d|z  |||||dœ¬	«      }|S )
Nc                 ó2   — t        j                  | d   «      S )NÚkeyPem)r   r1   ©Úgroups    r   Ú
filter_rsaz6TestVectorsPSSWycheproof.add_tests.<locals>.filter_rsa  s   € Ü—>‘> %¨¡/Ó2Ð2r   c                 ó   — t        | d   «      S )NÚsha)r°   r½   s    r   Ú
filter_shaz6TestVectorsPSSWycheproof.add_tests.<locals>.filter_sha  s   € Ü" 5¨¡<Ó0Ð0r   c                 ó2   — | d   }|dvrt        d|z   «      ‚y )NÚtype)ÚRsassaPssVerifyzUnknown type name )r?   )r¾   Ú	type_names     r   Úfilter_typez7TestVectorsPSSWycheproof.add_tests.<locals>.filter_type  s*   € Ø˜f™ˆIØÐ 5Ñ5Ü Ð!5¸	Ñ!AÓBÐBð 6r   c                 ó   — | d   S )NÚsLenr-   r½   s    r   Úfilter_slenz7TestVectorsPSSWycheproof.add_tests.<locals>.filter_slen#  s   € Ø˜‘=Ð r   c                 óZ   — | d   }|dvrt        d|z   «      ‚t        | d   «      }|fd„}|S )NÚmgfr   zUnknown MGF ÚmgfShac                 ó   — t        | ||«      S r&   r   )ri   ÚyÚmhs      r   rÌ   zCTestVectorsPSSWycheproof.add_tests.<locals>.filter_mgf.<locals>.mgf,  s   € Ü˜A˜q "“~Ð%r   )r?   r°   )r¾   rÌ   Ú	mgf1_hashs      r   Ú
filter_mgfz6TestVectorsPSSWycheproof.add_tests.<locals>.filter_mgf&  s@   € Ø˜‘,ˆCØ˜*Ñ$Ü  °#Ñ!5Ó6Ð6Ü'¨¨h©Ó8ˆIà&ó &ð ˆJr   )rf   Ú
wycheproofzWycheproof PSS signature (%s))r6   r¯   rÉ   rÌ   rÄ   )Ú	group_tag)r	   )r#   Úfilenamer¿   rÂ   rÇ   rÊ   rÒ   r(   s           r   Ú	add_testsz"TestVectorsPSSWycheproof.add_tests  sT   € ò	3ò	1ò	Cò
	!ò		ô .Ð.IØ.6Ø.MÐPXÑ.XØ@JØHRØALØ@JØALñ	9NôOˆð ˆr   c                 óD  — g | _         | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d	«       y )
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Ö   rI   s    r   ÚsetUpzTestVectorsPSSWycheproof.setUp;  s~   € ØˆŒØ�‰Ð<Ô=Ø�‰Ð=Ô>Ø�‰Ð>Ô?Ø�‰ÐBÔCØ�‰ÐBÔCØ�‰Ð>Ô?Ø�‰Ð>Ô?Ø�‰Ð>Ô?Ø�‰Ð/Õ0r   c                 ó   — | j                   S r&   )r¸   rI   s    r   rJ   z)TestVectorsPSSWycheproof.shortDescriptionG  s   € Ø�x‰xˆr   c                 ó˜   — |j                   r>| j                  r1dd l}|j                  d| j                  ›d|j
                  ›d�«       y y y )Nr   zWycheproof warning: z (ú))Úwarningr·   ÚwarningsÚwarnr¸   Úcomment)r#   rØ   rÞ   s      r   rß   zTestVectorsPSSWycheproof.warnJ  s4   € Ø�:Š:˜$×3Ò3ÛØ�MŠM¸4¿8»8ÀRÇZÃZÐPÕQð 4ˆ:r   c                 óÜ  — d|j                   |j                  fz  | _        |j                  j	                  |j
                  «      }t        j                  |j                  |j                  |j                  ¬«      }	 |j                  ||j                  «      }|j                  sJ ‚| j                  |«       y # t        $ r)}|j                  rY d }~y |j                  rJ ‚Y d }~y d }~ww xY w)Nz Wycheproof RSA PSS Test #%d (%s))Ú	mask_funcrD   )Úidrà   r¸   r¯   r   r3   r   r6   rÌ   rÉ   r4   ÚsigÚvalidrß   r?   rÝ   )r#   rØ   Ú
hashed_msgr{   rU   r�   s         r   Útest_verifyz$TestVectorsPSSWycheproof.test_verifyO  s¬   € Ø5¸¿¹ÀÇ
Á
Ð8KÑKˆŒà—^‘^×'Ñ'¨¯©Ó/ˆ
Ü—‘˜Ÿ™¨2¯6©6¸b¿g¹gÔFˆð	ØŸ™ j°"·&±&Ó9ˆIð —8’8ˆO�8Ø�I‰I�b�Møô ò 	 Ø�zŠzÜØ—x’xÐ�<”xûð	 ús   Á=B9 Â9	C+ÃC&ÃC&Ã&C+c                 óH   — | j                   D ]  }| j                  |«       Œ y r&   )rØ   rç   )r#   rØ   s     r   r�   z TestVectorsPSSWycheproof.runTest^  s#   € Ø—'‘'ò 	!ˆBØ×Ñ˜RÕ ñ	!r   N)
r*   r+   r,   r$   rÖ   rÙ   rJ   rß   rç   r�   r-   r   r   r²   r²     s'   „ òò
#òJ
1òòRò
ó!r   r²   c                 óh  — | j                  d«      }g }|t        t        «      z  }|t        t        «      z  }|t        t        «      z  }|t        t
        «      z  }|t        t        «      z  }| j                  d«      r$|t        t        «      z  }|t        t        «      z  }|t        |«      gz  }|S )Nr¹   Ú
slow_tests)
Úgetr   r/   rG   rw   r†   r�   rc   r}   r²   )Úconfigr¹   Útestss      r   Ú	get_testsrî   c  s«   € Ø Ÿ*™*Ð%:Ó;Ðà€EØ	Œ_œYÓ'Ñ'€EØ	Œ_Ô4Ó5Ñ5€EØ	Œ_Ô2Ó3Ñ3€EØ	Œ_Ô6Ó7Ñ7€EØ	Œ_Ô3Ó4Ñ4€Eà‡z�z�,ÔØ”Ô!<Ó=Ñ=ˆØ”Ô!:Ó;Ñ;ˆà	Ô&Ð':Ó;Ð<Ñ<€Eà€Lr   Ú__main__c                  ó<   — t        j                  t        «       «      S r&   )rµ   Ú	TestSuiterî   r-   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¶   r/   rG   rc   Útest_vectors_verifyÚ	enumerateÚcountrØ   Ú
isinstanceÚstrÚhasattrrm   Úmodulusrl   Úupperr¯   r   r3   rr   Ú	constructr�   rS   ÚsaltvalrV   rO   r8   Úsrs   ru   r(   Úsetattrrw   r}   Útest_vectors_signÚdÚprivate_keyr{   r„   r†   r�   r°   r²   rî   r*   rò   Úmainrh   s   0r   ú<module>r     sø  ðó> ç )Ý ,Ý %Ý 5ß Rç <Õ <Ý  Ý  Ý &å %òPô	ˆ6ô 	ô?�×!Ñ!ô ?ô65˜h×/Ñ/ô 5ô.	 (×"3Ñ"3ô 	ñ (Ð(BØ,AØ,JÙ7BÙ6Añ-CóDò Jð HJð	 ñ Ð.Ó/ó X�I€Eˆ2Ù�"�cÔØÙˆr�3ÔØ—$‘$ˆØÙˆr�3ÔØá# B§I¡I§O¡OÓ$5Ó6€KØ�‰˜rŸv™vÓ&€HØ�—‘¸7ÀBÇDÁD¸/ÖJ°Q¡¨aÕ 0ÒJÓK€JØ	‡z�z‘Q�v“YÒÙ�B—J‘JÓˆØ�3—7‘7˜:±#°b·j±j³/ÈTÔR‰à�3—7‘7˜:°!Ô4ˆà%-¸ÈBÏDÉDó -ð &.¸ÈBÏDÉDó Lð 
‡y�y�CÒÙÐ+Ð-?À%Ñ-GÈÖWáÐ+Ð-?À%Ñ-GÈÖWð7Xô<2˜H×-Ñ-ô 2ô	 × 1Ñ 1ô 	ñ &Ð&@Ø(=Ø(DØ)1±;Ð(?óAò Gð EGð ð
 Ñ&Ð'AØ(=Ø(DØ)1±;Ð(?óAò Gð EGñGÐ ñ
 Ð,Ó-ó D�I€Eˆ2Ù�"�cÔØÙˆr�3ÔØ—$‘$ˆØÙˆr�3ÔØ#�c—m‘mÀÈÏÉÈrÏtÉtÐ?TÖ$U¸!¡]°1Õ%5Ò$UÓVˆØá# B§I¡I§O¡OÓ$5Ó6€KØ�‰˜rŸv™vÓ&€HØ	‡z�z‘Q�v“YÒÙ�B—J‘JÓˆØ�—‘˜±°R·Z±Z³ÈDÔQ‰à�—‘˜°Ô3ˆà (°ÀÇÁó ,ñ Ð% y°5Ñ'8¸(ÖCð-Dô2H × 1Ñ 1ô Hô*"˜X×.Ñ.ô "ò4ô(Q!˜x×0Ñ0ô Q!ðh ó ð& ˆzÒò/à€H‡M�M˜gÖ&ð ùò_  Kùòf %Vs   Ä>O-
Ê5O2
