a fWc"@sLdZddlmZmZddlmZddlmZddlm Z Gddde Z dS) z1passlib.tests -- unittests for passlib.crypto.des)with_statementdivision)partial) getrandbytes)TestCasec@s@eZdZdZgdZddZddZddZd d Zd d Z d S)DesTestzpasslib.crypto.des)"rrl#b72e)r lX\|XH)lll{U t9s, )""DDr l3El2RNyj2lw+:WQ)l^F54Axl\>ka8+XlZW;@x)lvat5 Blb`.[^lVn.6E)l0S YXlb]di@lV UE )l%fszKl<S!lVr})lsV+Tx}lRnj9l!Vny)l)DuJOl*q/UlJN[S)l&6qC l(1@qllA.V";`z)lO$'p|blZ)ZHlwi@)lr lqQ3h )l||xr lFq\ )lqcr lLSXGm)rr lQ$*B*)r rl[U7=UU )r rl =@?. )r r lB/?#@]Qc Csddlm}m}m}m}|jD]*\}}}||}||}||||@q|t|d|t ||d|t |d|t |d|t |ddS) zexpand_des_key()r)expand_des_keyshrink_des_key _KDATA_MASK INT_56_MASK?N) passlib.crypto.desr rrrdes_test_vectors assertEqual assertRaises TypeError ValueError) selfr rrrkey1_key2key3r!A/usr/lib/python3.9/site-packages/passlib/tests/test_crypto_des.pytest_01_expand;szDesTest.test_01_expandc Csddlm}m}m}|}tdD]*}t|d}||}||}|||q$|t |d|t ||d|t |d|t |d|t |d d S) zshrink_des_key()r)r r INT_64_MASKrrs rN) rr rr$ getRandomrangerrrrr) rr rr$rngirrr r!r!r"test_02_shrinkSs  zDesTest.test_02_shrinkcCs4ddlm}m}m}|}||@|d||@BS)zrandomize parity bitsr)r _KPARITY_MASKr$)rrr-r$r(Zrandint)rkeyrr-r$r*r!r!r"_random_paritykszDesTest._random_parityc CsTddlm}m}m}m}|jD]\}}}||}||}||}|||}|||d||f||} || |}|||d|| |ftdD]8} ||||} || |}|||d|| |fqqd} | t |d| | t |d| | t || d| t || d |j t || | d d |j t || | d d |j t || | ddd dS)zdes_encrypt_block()r)des_encrypt_blockr_pack64 _unpack64key=%r plaintext=%r:z#key=%r shrink(key)=%r plaintext=%r:r%&key=%r rndparity(key)=%r plaintext=%r:rrr'rZsaltroundsN) rr0rr1r2rrr)r/rrr) rr0rr1r2r. plaintextcorrectresultrrr Zstubr!r!r"test_03_encrypt_bytesqs8        zDesTest.test_03_encrypt_bytesc Csddlm}|jD]d\}}}|||}|||d||ftdD]0}||}|||}|||d|||fqDq|t|dd|t|dd|t|dd|t|dd|jt|dddd|jt|ddd d|jt|ddddd d S) zdes_encrypt_int_block()r)des_encrypt_int_blockr3r%r4rr5r6r7N) rr=rrr)r/rrr)rr=r.r9r:r;rr r!r!r"test_04_encrypt_intss&        zDesTest.test_04_encrypt_intsN) __name__ __module__ __qualname__ZdescriptionPrefixrr#r,r/r<r?r!r!r!r"rs&.rN) __doc__Z __future__rr functoolsrZ passlib.utilsrZpasslib.tests.utilsrrr!r!r!r"s