U +¥Mb–&ã@sædZddlZddlZddlZddlZddlZddlmZmZddl m Z m Z ddl m Z dd„ZGdd „d ejƒZGd d „d ejƒZGd d „d ejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZdifdd„Zdd„ZdS)z&Self-testing for PyCrypto hash moduleséN)ÚhexlifyÚ unhexlify)ÚbÚtobytes)Ústrxor_ccCst ddt|ƒ¡}t|ƒS)Ns\s+ó)ÚreÚsubrr)Z hex_stringZshorter©r úB/tmp/pip-target-t616c12r/lib/python/Crypto/SelfTest/Hash/common.pyÚt2b$sr c@s$eZdZdd„Zdd„Zdd„ZdS)ÚHashDigestSizeSelfTestcCs(tj |¡||_||_||_||_dS©N)ÚunittestÚTestCaseÚ__init__ÚhashmodÚexpectedÚ descriptionÚ extra_params)Úselfrrrrr r r r+s  zHashDigestSizeSelfTest.__init__cCs|jSr©r©rr r r ÚshortDescription2sz'HashDigestSizeSelfTest.shortDescriptioncCsbd|jkr.| t|jdƒ¡| |jj|j¡|jjf|jŽ}| t|dƒ¡| |j|j¡dS)NÚtruncateÚ digest_size)rÚ assertTrueÚhasattrrÚ assertEqualrrÚnew©rÚhr r r ÚrunTest5s  zHashDigestSizeSelfTest.runTestN©Ú__name__Ú __module__Ú __qualname__rrr"r r r r r )sr c@s$eZdZdd„Zdd„Zdd„ZdS)Ú HashSelfTestcCs2tj |¡||_| ¡|_||_||_||_dSr) rrrrÚlowerrÚinputrr)rrrrr)rr r r r@s   zHashSelfTest.__init__cCs|jSrrrr r r rHszHashSelfTest.shortDescriptioncCs|jjf|jŽ}| |j¡t | ¡¡}| ¡}|jj|jf|jŽ}| ¡}t | ¡¡}|  |j |¡t j ddkr–|  |j |¡|  |j |¡n$|  |j   ¡|¡|  |j   ¡|¡|  |j |¡|jjdksàt|dƒr| ¡}| |j¡t | ¡¡}|  |j |¡dS)Nré)zCrypto.Hash.MD5zCrypto.Hash.SHA1r)rrrÚupdater)ÚbinasciiÚb2a_hexÚdigestÚ hexdigestrrÚsysÚ version_infoÚdecoder$r)rr!Zout1Zout2Zout3Zout4Úh2Zout5r r r r"Ks&  zHashSelfTest.runTestNr#r r r r r'>sr'c@seZdZdd„Zdd„ZdS)Ú HashTestOIDcCs"tj |¡||_||_||_dSr)rrrrÚoidr)rrr5rr r r rls zHashTestOID.__init__cCs$|jjf|jŽ}| |j|j¡dSr)rrrrr5r r r r r"rszHashTestOID.runTestN©r$r%r&rr"r r r r r4ksr4c@seZdZdd„Zdd„ZdS)Ú ByteArrayTestcCstj |¡||_||_dSr©rrrÚmoduler©rr9rr r r rys zByteArrayTest.__init__cCs´tdƒ}t|ƒ}|jj|f|jŽ}|jj|f|jŽ}d|dd…<| | ¡| ¡¡t|ƒ}|jjf|jŽ}|jjf|jŽ}| |¡| |¡d|dd…<| | ¡| ¡¡dS)Nzóÿé)rÚ bytearrayr9rrrr.r+)rÚdataÚbaÚh1r3r r r r"~s    zByteArrayTest.runTestNr6r r r r r7wsr7c@seZdZdd„Zdd„ZdS)ÚMemoryViewTestcCstj |¡||_||_dSrr8r:r r r r˜s zMemoryViewTest.__init__cCsÚd}dd„}dd„}||fD]¸}||ƒ}|jj|f|jŽ}|jj|f|jŽ}|js^d|dd…<| | ¡| ¡¡||ƒ}|jjf|jŽ}|jjf|jŽ}| |¡| |¡|jsÀd|dd…<| | ¡| ¡¡qdS)NscSst|ƒSr)Ú memoryview©r>r r r Ú get_mv_ro¡sz)MemoryViewTest.runTest..get_mv_rocSs tt|ƒƒSr)rBr=rCr r r Ú get_mv_rw¤sz)MemoryViewTest.runTest..get_mv_rwr;r<)r9rrÚreadonlyrr.r+)rr>rDrEZget_mvÚmvr@r3r r r r"s$     zMemoryViewTest.runTestNr6r r r r rA–srAc@s$eZdZdd„Zdd„Zdd„ZdS)Ú MACSelfTestcCs@tj |¡||_t|ƒ|_t|ƒ|_t|ƒ|_||_||_ dSr) rrrr9r Úresultr>ÚkeyÚparamsr)rr9rrIr>rJrKr r r rÀs    zMACSelfTest.__init__cCs|jSrrrr r r rÉszMACSelfTest.shortDescriptioncCs´t|jƒ}|jj|jf|jŽ}| |j¡| |j|  ¡¡| t|jƒ  d¡|  ¡¡|  |j¡|  |¡t|jdƒ}| t|j |¡| t|j d¡|jj|j|jf|jŽ}| |j|  ¡¡| t|jƒ  d¡|  ¡¡zf|jj|j|jf|jŽ}| ¡}| ¡}| d¡| |  ¡|j¡| d¡| |  ¡|  ¡¡Wntk r\YnX| t|  ¡tdƒƒ¡| t|  ¡tdƒƒ¡|  |  ¡¡|  |  ¡ d¡¡dS)NÚasciiéÿZ4556sblarÚ)rrIr9rrJrKr+r>rr.r2r/ÚverifyZ hexverifyrÚ assertRaisesÚ ValueErrorÚcopyÚNotImplementedErrorrÚ isinstanceÚtypeÚencode)rZ result_hexr!Z wrong_macr3Úh3r r r r"Ìs6       zMACSelfTest.runTestNr#r r r r rH¾s rHc Csàg}tt|ƒƒD]h}||}tt|dd…ƒ\} } t|ƒdkrHt| ƒ} n|d} d||d| f} | t|| | | |ƒ¡qd|t|ƒdf} | t|| ||ƒ¡|dk r¼| t|||ƒ¡| t ||ƒ¡| t ||ƒ¡|S)Nrr*éú %s #%d: %sr<z%s #%d: digest_size) ÚrangeÚlenÚmaprÚreprÚappendr'r r4r7rA) r9Ú module_nameÚ test_datarr5rÚtestsÚiÚrowrr)rÚnamer r r Úmake_hash_testsýs   rec Csxg}t|ƒD]f\}}t|ƒdkr:t|ƒig\}}}} } n|\}}}} } d||d| f} | t|| |||| ƒ¡q |S)NérYr<)Ú enumerater[Úlistr^rH) r9r_r`rarbrcrJr>ÚresultsrrKrdr r r Úmake_mac_testss rj)Ú__doc__rr0rr,Z Crypto.HashZCryptorrZCrypto.Util.py3compatrrZCrypto.Util.strxorrr rr r'r4r7rArHrerjr r r r Ús& - (?ÿ