a ze @sddlZddlZzddlZdZWnHeyhZz0ejdkrHeeedZeeZWYdZ[n dZ[00e ejdkde edGdddej Z e edGdd d ej Z ed kredS) Nwin32zThis should only run on windowszimport succeededc@seZdZddZdS)TestWhyCryptDidNotImportcCs|dtdS)Nz not supported)assertIn IMPORT_ERRORselfrC/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_crypt.pytest_import_failure_messagesz4TestWhyCryptDidNotImport.test_import_failure_messageN)__name__ __module__ __qualname__r rrrr rsrzcrypt module is requiredc@seZdZddZddZddZddZee oFe j e j vpFe j e j vd d d Z ee ofe je j vd d dZddZdS) CryptTestCasecCsRtd}td|}|||tdd}|durNtd|}|||dS)N mypasswordab)crypt assertEqual)rcrcr2rrr test_crypts     zCryptTestCase.test_cryptcCsl|ttjdtjD]N}t|}|t||jhd|jr||j|dt||jqdS)N@>r) rlenrZ _saltcharsmethodsmksaltr salt_charsident)rmethodsaltrrr test_salt#s   zCryptTestCase.test_saltcCsjtjD]^}td|}|t||jtd|}|||tdt|}|t||jqdS)NZassword)rrrrZ total_sizer)rr!rrrrr test_saltedcrypt+s    zCryptTestCase.test_saltedcryptcCsL|ttjdktjdr4|tjtjgn|tjdtj dS)NrZopenbsd) assertTruerrrsysplatform startswithrMETHOD_BLOWFISH METHOD_CRYPTrrrr test_methods4s zCryptTestCase.test_methodszrequires support of SHA-2c CstjtjfD]|}dD]r}tj||d}|d|||t||jdtt|td|}| |td|}|||qq dS)N)i'iroundsz $rounds=%d$ r) r METHOD_SHA256 METHOD_SHA512rrrrrstrr&)rr!r/r"rrrrr test_sha2_rounds;s   zCryptTestCase.test_sha2_roundszrequires support of BlowfishcCstddD]r}tjtjd|>d}|d|||t|tjjddhtd|}||td|}|||q dS) Nrr0rr.z$%02d$rrr) rangerrr*rrrr&r)rZ log_roundsr"rrrrr test_blowfish_roundsNs   z"CryptTestCase.test_blowfish_roundsc CsdtjtjtjfD]}|ttj|ddWdn1sB0Y|ttj|ddWdn1sz0Yddddd>fD]<}|ttj||dWdq1s0Yqq|t tjtjddWdn1s0Ytjtj fD]B}| td tj|d dWdn1sR0YqdS) NZ4096r.g@rrr%ir-supporti) rr1r2r*Z assertRaises TypeErrorr ValueErrorr+Z METHOD_MD5ZassertRaisesRegex)rr!r/rrr test_invalid_rounds[s , , 0 0z!CryptTestCase.test_invalid_roundsN)r r r rr#r$r,unittest skipUnlessrr1rr2r4r*r6r:rrrr rs    r__main__)r'r;rr ImportErrorexr(ZSkipTestr3r<ZskipIfZTestCaserrr mainrrrr s    T