a fŸWcª"ã@sLdZddlmZmZddlmZddlmZddlm Z Gdd„de ƒZ dS) z1passlib.tests -- unittests for passlib.crypto.desé)Úwith_statementÚdivision)Úpartial)Ú getrandbytes)ÚTestCasec@s@eZdZdZgd¢Zdd„Zdd„Zdd„Zd d „Zd d „Z d S)ÚDesTestzpasslib.crypto.des)"©rrl§#b§72e)ìÿÿÿÿr lX\�|XHÍ)lll{U t‰9s, )ì""DDˆr l3E<®f )ìïMWž r l-S$eñ74;)r r lÝrq5à×Rr)ì2¨lajåvr lÄ<étCeÎi)lWn4AelBgîr@[ l›M46lzH)ln7‚;†eŽ lÚWÞ{ 2ªflqR—j@tÄQ)l†&ùL=lrqì àPFlšYhGmu4)lž1L0KBl D¾[`-* l*ã¸Ä )l¶5ýéVÈ%l¢®2Áêl•@?m¿y )lÎrizÃe�l:ž#!xÚ,l[X�Ä+5)læ5 ÕE‡ lÒaŽn�c¶:l \Chžf)lþsÆq´~KljH~SàR(1lz+¶o²,;S)l*´ ÁM8=l(nAFè^l^9*²~ )l/;úDD#lš`^k }ª4lˆ@ qr‰b)lFu–-Ô.ƒ>l2RNyj2lw+é¸:WQ)l^F„54AxlÊ\>ka8+XlZWô;ù@ßx)lvat5� Blb`.¼[^lVn.Û6øE)l0S YXÀlòbÎ]di@lV UEÌ )l�%fsñzÉKlú<S!ªlVú¿rø})l§sV+Tx‚}l’Rn�j9l¬!ùVny)l¿)DµuJOl*q/ÞUòlJNÙ³[S)lÖ&6qC lÂ(î1@qêllA.V";`z)lïO$'p|ÃblZ)ÞZ¡H©l“w³i@Ö)lr lqàQ3hÙ )l||øxr lF‘q¬\ )lþqýcû÷r lÇLSXGþm)rr lQ$*ÈBª*)r rl®[ãU7=UU )r rl =Ð@Ü?¢. )r r lòB/?#@]Qc Cs˜ddlm}m}m}m}|jD]*\}}}||ƒ}||ƒ}| |||@¡q| t|d¡| t ||d¡| t |d¡| t |d¡| t |d¡dS) zexpand_des_key()r)Úexpand_des_keyÚshrink_des_keyÚ _KDATA_MASKÚ INT_56_MASKçð?éóéÿÿÿÿóN) Úpasslib.crypto.desr rrrÚdes_test_vectorsÚ assertEqualÚ assertRaisesÚ TypeErrorÚ ValueError) Úselfr rrrÚkey1Ú_Úkey2Úkey3©r!úA/usr/lib/python3.9/site-packages/passlib/tests/test_crypto_des.pyÚtest_01_expand;szDesTest.test_01_expandc Csžddlm}m}m}| ¡}tdƒD]*}t|dƒ}||ƒ}||ƒ}| ||¡q$| t |d¡| t ||d¡| t |d¡| t |d¡| t |d ¡d S) zshrink_des_key()r)r rÚ INT_64_MASKéérrs róN) rr rr$Ú getRandomÚrangerrrrr) rr rr$ÚrngÚirrr r!r!r"Útest_02_shrinkSs  zDesTest.test_02_shrinkcCs4ddlm}m}m}| ¡}||@| d|¡|@BS)zrandomize parity bitsr)rÚ _KPARITY_MASKr$)rrr-r$r(Zrandint)rÚkeyrr-r$r*r!r!r"Ú_random_paritykszDesTest._random_parityc CsTddlm}m}m}m}|jD]®\}}}||ƒ}||ƒ}||ƒ}|||ƒ}| ||d||f¡||ƒ} || |ƒ}| ||d|| |f¡tdƒD]8} || ||ƒ¡ƒ} || |ƒ}| ||d|| |f¡q’qd} |  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Ú _unpack64úkey=%r plaintext=%r:z#key=%r shrink(key)=%r plaintext=%r:r%ú&key=%r rndparity(key)=%r plaintext=%r:rrr'r©Zsalté©ÚroundsN) rr0rr1r2rrr)r/rrr) rr0rr1r2r.Ú plaintextÚcorrectÚresultrrr Zstubr!r!r"Útest_03_encrypt_bytesqs8  ÿ  ÿ   ÿ zDesTest.test_03_encrypt_bytesc Csúddlm}|jD]d\}}}|||ƒ}| ||d||f¡tdƒD]0}| |¡}|||ƒ}| ||d|||f¡qDq| 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%r4órr5r6r7N) rr=rrr)r/rrr)rr=r.r9r:r;rr r!r!r"Útest_04_encrypt_intsŸs&   ÿ    ÿ 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