Ë
    (üàgå4  ã            	       ó¨  — d dl Z d dlZd dlmZ d dl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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 dlm	Z	 d„ Z  G d„ dejB                  «      Z" G d„ dejB                  «      Z# edddd„ d„ d„ dœ«      xs g Z$ e%e$«      D ]ð  \  Z&Z' e(e'e)«      rŒ e*e'd«      re'jV                  Z,Œ& e e'jZ                  j]                  «       «      Z/e/ja                  e'jb                  «      Z2 ejf                  e,e'jh                  fD � cg c]
  }  e| «      ‘Œ c} «      Z5 ej`                  e5«      Z6e2e6e'jn                  fd„Z8e2e6e'jn                  fd„Z9e'jt                  dk(  r e;e#de&z  e9«       Œä e;e#de&z  e8«       Œò  G d„ d ejB                  «      Z< G d!„ d"ejB                  «      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'jV                  Z,Œ& e*e'd*«      rP ejf                  e,e'jh                  e'j~                  fD � cg c]
  }  e| «      ‘Œ c} «      Z@ ej`                  e@«      ZAŒ e e'jZ                  j]                  «       «      Z/e/ja                  e'jb                  «      Z2e2eAe'jn                  fd+„ZB e;e=d,e&z  eB«       ŒÙ  G d-„ d.ejB                  «      ZC G d/„ d0ejB                  «      ZD G d1„ d2ejB                  «      ZE G d3„ d4ejB                  «      ZFi fd5„ZGeHd6k(  rd7„ ZI ej”                  d8¬9«       yyc c} w c c} w ):é    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   — t        d| z   t        «       t        «       dg«      S )NzCrypto.Hash.Únew)Ú
__import__ÚglobalsÚlocals)Ú	hash_names    úe/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/Signature/test_pkcs1_15.pyÚload_hash_by_namer   3   s   € Ü�n yÑ0´'³)¼V»XÈÀwÓOÐOó    c                   ó   — e Zd Zd„ Zd„ Zy)ÚFIPS_PKCS1_Verify_Testsc                  ó   — y)NzFIPS PKCS1 Tests (Verify)© ©Úselfs    r   ÚshortDescriptionz(FIPS_PKCS1_Verify_Tests.shortDescription9   s   € Ø*r   c                 ó´   — t        j                  d«      j                  «       }t        j                  |«      }| j                  |j                  «       d«       y )Né   F)r   ÚgenerateÚ
public_keyr   r   ÚassertEqualÚcan_sign)r%   Útest_public_keyÚverifiers      r   Útest_can_signz%FIPS_PKCS1_Verify_Tests.test_can_sign<   s@   € ÜŸ,™, tÓ,×7Ñ7Ó9ˆÜ—<‘< Ó0ˆØ×Ñ˜×*Ñ*Ó,¨eÕ4r   N©Ú__name__Ú
__module__Ú__qualname__r&   r/   r#   r   r   r!   r!   7   s   „ ò+ó5r   r!   c                   ó   — e Zd Zy)ÚFIPS_PKCS1_Verify_Tests_KATN©r1   r2   r3   r#   r   r   r5   r5   B   ó   „ Ør   r5   )Ú	Signaturez
PKCS1-v1.5zSigVer15_186-3.rspzSignature Verification 186-3c                 ó   — | S ©Nr#   ©Úxs    r   ú<lambda>r=   I   ó   € °a€ r   c                 ó   — t        | «      S r:   )Úintr;   s    r   r=   r=   J   s
   € ´°Q³€ r   c                 ó   — | S r:   r#   r;   s    r   r=   r=   K   r>   r   )ÚshaalgÚdÚresultÚnc                 ó(   — |j                  ||«       y r:   )Úverify©r%   Úhash_objr.   Ú	signatures       r   Úpositive_testrK   Z   s   € Ø�‰˜ )Õ,r   c                 óH   — | j                  t        |j                  ||«       y r:   )ÚassertRaisesÚ
ValueErrorrG   rH   s       r   Únegative_testrO   ]   s   € Ø×Ñœ* h§o¡o°xÀÕKr   Úfztest_negative_%dztest_positive_%dc                   ó   — e Zd Zd„ Zd„ Zy)ÚFIPS_PKCS1_Sign_Testsc                  ó   — y)NzFIPS PKCS1 Tests (Sign)r#   r$   s    r   r&   z&FIPS_PKCS1_Sign_Tests.shortDescriptionh   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   r/   z#FIPS_PKCS1_Sign_Tests.test_can_signk   s7   € ÜŸ<™<¨Ó-ÐÜ—‘Ð.Ó/ˆØ×Ñ˜Ÿ™Ó*¨DÕ1r   Nr0   r#   r   r   rR   rR   f   s   „ ò)ó2r   rR   c                   ó   — e Zd Zy)ÚFIPS_PKCS1_Sign_Tests_KATNr6   r#   r   r   rX   rX   q   r7   r   rX   zSigGen15_186-2.txtzSignature Generation 186-2rB   c                 ó   — | S r:   r#   r;   s    r   r=   r=   x   ó   € ¸Q€ r   zSigGen15_186-3.txtzSignature Generation 186-3c                 ó   — | S r:   r#   r;   s    r   r=   r=   }   rZ   r   Úec                 óJ   — |j                  |«      }| j                  ||«       y r:   )Úsignr+   )r%   rI   rV   rD   rJ   s        r   Únew_testr_   �   s    € Ø—K‘K Ó)ˆ	Ø×Ñ˜ FÕ+r   ztest_%dc                   ó2   — e Zd ZdZdZdZdZ ee«      Zd„ Z	y)Ú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                 óÞ   — t        j                  t        j                  | j                  «      «      }t        j                  | j                  «      }|j                  || j                  «       y r:   )	r   r   r   Ú	importKeyÚrsakeyr
   ÚmsgrG   rJ   )r%   r.   Úhasheds      r   ÚrunTestzPKCS1_15_NoParams.runTest«   sA   € Ü—<‘<¤§¡¨d¯k©kÓ :Ó;ˆÜ—‘˜$Ÿ(™(Ó#ˆØ�‰˜ §¡Õ/r   N)
r1   r2   r3   Ú__doc__re   rf   Úsig_strr   rJ   rh   r#   r   r   ra   ra   ”   s-   „ ñ<ð-€Fð  €Cð%€Gñ ˜'Ó"€Ió0r   ra   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚPKCS1_Legacy_Module_Testsz¸Verify 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                  ó   — y)Nz'Test legacy Crypto.Signature.PKCS1_v1_5r#   r$   s    r   r&   z*PKCS1_Legacy_Module_Tests.shortDescription¶   s   € Ø8r   c                 óÌ  — t        j                  t        j                  «      }t	        j
                  d«      }t        j
                  |«      j                  |«      }t        j
                  |j                  «       «      }| j                  |j                  ||«      d«       t        |t        d«      t        |«      z  «      }| j                  |j                  ||«      d«       y )Nó   TestTé   F)r   rd   ra   re   r
   r   r   r^   r*   r+   rG   r   r   Úlen)r%   Úkeyrg   Úgood_signaturer.   Úbad_signatures         r   rh   z!PKCS1_Legacy_Module_Tests.runTest¹   s¥   € Ü�m‰mÔ-×4Ñ4Ó5ˆÜ—‘˜'Ó"ˆÜ#Ÿ™¨Ó,×1Ñ1°&Ó9ˆÜ—>‘> #§.¡.Ó"2Ó3ˆà×Ñ˜Ÿ™¨°Ó@À$ÔGô ˜~¬t°A«w¼¸^Ó9LÑ/LÓMˆØ×Ñ˜Ÿ™¨°Ó?ÀÕGr   N)r1   r2   r3   ri   r&   rh   r#   r   r   rl   rl   ±   s   „ ñ@ò9ó
Hr   rl   c                   ó   — e Zd Zd„ Zd„ Zy)ÚPKCS1_All_Hashes_Testsc                  ó   — y)Nz8Test PKCS#1v1.5 signature in combination with all hashesr#   r$   s    r   r&   z'PKCS1_All_Hashes_Tests.shortDescriptionÈ   s   € ØIr   c                 ó|  — t        j                  d«      }t        j                  |«      }d}|D ]-  }t	        |«      j                  d«      }|j                  |«       Œ/ ddlm}m} dD ]&  }|j                  |d¬«      }	|j                  |	«       Œ( dD ]&  }|j                  |d¬«      }
|j                  |
«       Œ( y )	Nr(   )ÚMD2ÚMD4ÚMD5Ú	RIPEMD160r
   r   r   r   r   r   r   r   r   ro   r   )ÚBLAKE2bÚBLAKE2s)é   é    é0   é@   )Údigest_bytesÚdata)é   r   é   r€   )	r   r)   r   r   r   r^   ÚCrypto.Hashr}   r~   )r%   rr   rV   Ú
hash_namesÚnamerg   r}   r~   Ú	hash_sizeÚhashed_bÚhashed_ss              r   rh   zPKCS1_All_Hashes_Tests.runTestË   s¹   € ä�l‰l˜4Ó ˆÜ—‘˜cÓ"ˆðFˆ
ð ò 	 ˆDÜ& tÓ,×0Ñ0°Ó9ˆFØ�K‰K˜Õð	 ÷ 	1Ø)ò 	"ˆIØ—{‘{°	À�{ÓHˆHØ�K‰K˜Õ!ð	"ð *ò 	"ˆIØ—{‘{°	À�{ÓHˆHØ�K‰K˜Õ!ñ	"r   N)r1   r2   r3   r&   rh   r#   r   r   rv   rv   Æ   s   „ òJó"r   rv   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestVectorsWycheproofc                 ó^   — t         j                  j                  | «       || _        d| _        y )NÚNone)ÚunittestÚTestCaseÚ__init__Ú_wycheproof_warningsÚ_id)r%   Úwycheproof_warningss     r   r“   zTestVectorsWycheproof.__init__â   s%   € Ü×Ñ×"Ñ" 4Ô(Ø$7ˆÔ!Øˆ�r   c                 óþ  — g | _         | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d	«       | j                  d
«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       y )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   ÚsetUpzTestVectorsWycheproof.setUpç   s'  € ØˆŒØ�‰Ð3Ô4Ø�‰Ð<Ô=Ø�‰Ð<Ô=Ø�‰Ð<Ô=Ø�‰Ð>Ô?Ø�‰Ð>Ô?Ø�‰Ð>Ô?Ø�‰Ð>Ô?Ø�‰Ð<Ô=Ø�‰Ð@ÔAØ�‰Ð@ÔAØ�‰Ð<Ô=Ø�‰Ð<Ô=Ø�‰Ð>Ô?Ø�‰Ð>Ô?Ø�‰Ð>Ô?Ø�‰Ð<Ô=Ø�‰Ð@ÔAØ�‰Ð<Ô=Ø�‰Ð<Ô=Ø�‰Ð@ÔAØ�‰Ð0Õ1r   c           	      óD   — d„ }d„ }d„ }t        d|d|z  |||dœ¬«      }|S )Nc                 ó2   — t        j                  | d   «      S )NÚkeyPem)r   Ú
import_key)Úgroups    r   Ú
filter_rsaz3TestVectorsWycheproof.add_tests.<locals>.filter_rsa  s   € Ü—>‘> %¨¡/Ó2Ð2r   c                 óZ  — | d   }|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 |dk(  rt        S |dk(  rt        S |dk(  rt        S |dk(  rt        S t        d|z   «      ‚)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
   rN   )rŸ   r   s     r   Ú
filter_shaz3TestVectorsWycheproof.add_tests.<locals>.filter_sha  s¿   € Ø˜e™ˆIØ˜IÒ%Ü�Ø˜mÒ+Ü—z‘z¨5Ô1Ð1Ø˜mÒ+Ü—z‘z¨5Ô1Ð1Ø˜jÒ(Ü�Ø˜iÒ'Ü�Ø˜jÒ(Ü�Ø˜iÒ'Ü�Ø˜jÒ(Ü�Ø˜iÒ'Ü�Ø˜jÒ(Ü�Ø˜gÒ%Ü�ä Ð!;¸iÑ!GÓHÐHr   c                 ó2   — | d   }|dvrt        d|z   «      ‚y )NÚtype)ÚRsassaPkcs1VerifyÚRsassaPkcs1GeneratezUnknown type name )rN   )rŸ   Ú	type_names     r   Úfilter_typez4TestVectorsWycheproof.add_tests.<locals>.filter_type   s+   € Ø˜f™ˆIØÐ LÑLÜ Ð!5¸	Ñ!AÓBÐBð Mr   )r8   Ú
wycheproofz$Wycheproof PKCS#1v1.5 signature (%s))Úrsa_keyÚhash_modr¨   )Ú	group_tag)r	   )r%   Úfilenamer    r¦   r¬   rD   s         r   r™   zTestVectorsWycheproof.add_tests   sE   € ò	3ò	Iò6	Cô
 .Ð.IØ.6Ø.TÐW_Ñ._ØDNØEOØALñ9NôOˆð ˆr   c                 ó   — | j                   S r:   )r•   r$   s    r   r&   z&TestVectorsWycheproof.shortDescription-  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TestVectorsWycheproof.warn0  s4   € Ø�:Š:˜$×3Ò3ÛØ�MŠM¸4¿8»8ÀRÇZÃZÐPÕQð 4ˆ:r   c                 ó¨  — dt        |j                  «      z   | _        |j                  j	                  |j
                  «      }t        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 PKCS$#1 Test #)ÚstrÚidr•   Úhash_moduler   rf   r   rr   rG   ÚsigÚvalidr·   rN   rµ   )r%   r˜   Ú
hashed_msgrV   rJ   r\   s         r   Útest_verifyz!TestVectorsWycheproof.test_verify5  s›   € Ø2´S¸¿¹³ZÑ?ˆŒà—^‘^×'Ñ'¨¯©Ó/ˆ
Ü—‘˜bŸf™fÓ%ˆð	ØŸ™ j°"·&±&Ó9ˆIð —8’8ˆO�8Ø�I‰I�b�Møô ò 	 Ø�zŠzÜØ—x’xÐ�<”xûð	 ús   Á#B Â	CÂ(CÂ9CÃCc                 óH   — | j                   D ]  }| j                  |«       Œ y r:   )r˜   rÀ   )r%   r˜   s     r   rh   zTestVectorsWycheproof.runTestD  s#   € Ø—'‘'ò 	!ˆBØ×Ñ˜RÕ ñ	!r   N)
r1   r2   r3   r“   rš   r™   r&   r·   rÀ   rh   r#   r   r   rŽ   rŽ   à   s'   „ òò
2ò2+òZòRò
ó!r   rŽ   c                 óh  — | j                  d«      }g }|t        t        «      z  }|t        t        «      z  }|t        t        «      z  }|t        t
        «      z  }|t        t        «      z  }|t        |«      gz  }| j                  d«      r$|t        t        «      z  }|t        t        «      z  }|S )Nr–   Ú
slow_tests)
Úgetr   r!   rR   ra   rl   rv   rŽ   r5   rX   )Úconfigr–   Útestss      r   Ú	get_testsrÇ   I  s¬   € Ø Ÿ*™*Ð%:Ó;Ðà€EØ	Œ_Ô4Ó5Ñ5€EØ	Œ_Ô2Ó3Ñ3€EØ	Œ_Ô.Ó/Ñ/€EØ	Œ_Ô6Ó7Ñ7€EØ	Œ_Ô3Ó4Ñ4€EØ	Ô$Ð%8Ó9Ð;Ñ;€Eà‡z�z�,ÔØ”Ô!<Ó=Ñ=ˆØ”Ô!:Ó;Ñ;ˆà€Lr   Ú__main__c                  ó<   — t        j                  t        «       «      S r:   )r‘   Ú	TestSuiterÇ   r#   r   r   r=   r=   [  s   € ”H×&Ñ&¤y£{Ó3€ r   Ú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!   r5   Útest_vectors_verifyÚ	enumerateÚcountr˜   Ú
isinstancerº   ÚhasattrrE   ÚmodulusrB   Úupperr¼   r   rf   rI   Ú	constructr\   r*   r.   ÚsrK   rO   rD   ÚsetattrrR   rX   Útest_vectors_signrC   Úprivate_keyrV   r_   ra   rl   rv   rŽ   rÇ   r1   rË   Úmainr;   s   0r   ú<module>rä      st  ðó> Û Ý å &Ý ,Ý %Ý 5ß R÷7÷ 7õ 7å  Ý %Ý 'å :Ý %òPô5˜h×/Ñ/ô 5ô	 (×"3Ñ"3ô 	ñ (Ð(CØ!5Ø!?Ù,7Ù'7Ù,7ñ"9ó:ò @ð
 >@ð ñ Ð.Ó/ò X�I€Eˆ2Ù�"�cÔØÙˆ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Øˆx�|‰|˜JÓ'€Hà%-¸ÈBÏDÉDó -ð &.¸ÈBÏDÉDó Lð 
‡y�y�CÒÙÐ+Ð-?À%Ñ-GÈÕWáÐ+Ð-?À%Ñ-GÈÕWð+Xô02˜H×-Ñ-ô 2ô	 × 1Ñ 1ô 	ñ 'Ð'BØ(<Ø(DØ)1±;Ð(?óAò Gð EGð ð
 Ñ&Ð'BØ(<Ø(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ˆØ�—‘˜kÓ*ˆØá# B§I¡I§O¡OÓ$5Ó6€KØ�‰˜rŸv™vÓ&€Hà (°ÀÇÁó ,ñ Ð% y°5Ñ'8¸(ÕCð%Dô*0˜×)Ñ)ô 0ô:H × 1Ñ 1ô Hô*"˜X×.Ñ.ô "ô4f!˜H×-Ñ-ô f!ðR ó ð" ˆzÒÙ3€EØ€H‡M�M˜gÖ&ð ùòG  Kùò^ %Vs   Ä+M

ÉM
