
    ,hG>                     Z   d Z ddlZddlmZ dZdZg ddded	fd
dedfddedfddedfddedfddedfddedfddedfdd ed!fd"d#ed$fd%d&ed'fd(d)ed*fd+d,ed-fd.d/ed0fd1d2ed3fd4d5ed6fd7d8ed9fd:d;ed<fd=d>ed?fd@dAedBfdCdDedEfdFdGedHfdIdJedKfdLdMedNfdOdPedQfdRdSedTfdUdVedWfdXdYedZfd[d\ed]fd^d_ed`fdadbedcfdddeedffdgdhedifdjdkedlfdmdnedofdpdqedrfdsdtedufdvdwedxfdydzed{fd|d}ed~fddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfddedfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfed ddfedddfedddfed	d
dfedddfedddfedddfedddfedddfedddfeddd fed!d"d#fed$d%d&fed'd(d)fed*d+d,fed-d.d/fed0d1d2fed3d4d5fed6d7d8fed9d:d;fed<d=d>fed?d@dAfedBdCdDfedEdFdGfedHdIdJfedKdLdMfedNdOdPfedQdRdSfedTdUdVfedWdXdYfedZd[d\fed]d^d_fed`dadbfedcdddefedfdgdhfedidjdkfedldmdnfZ G do dpej                        Z G dq drej                        Z	i fdsZ
edtk(  rddlZdu Z ej                  dvw       yy(x  z%Self-test suite for Crypto.Cipher.DES    N)DES01010101010101010000000000000000)r   82dcbafbdeab660210316e028c8f3b4azNIST SP800-17 A800000000000000095f8a5e5dd31d900zNIST SP800-17 B.1 #04000000000000000dd7f121ca5015619zNIST SP800-17 B.1 #120000000000000002e8653104f3834eazNIST SP800-17 B.1 #210000000000000004bd388ff6cd81d4fzNIST SP800-17 B.1 #3080000000000000020b9e767b2fb1456zNIST SP800-17 B.1 #4040000000000000055579380d77138efzNIST SP800-17 B.1 #502000000000000006cc5defaaf04512fzNIST SP800-17 B.1 #601000000000000000d9f279ba5d87260zNIST SP800-17 B.1 #70080000000000000d9031b0271bd5a0azNIST SP800-17 B.1 #80040000000000000424250b37c3dd951zNIST SP800-17 B.1 #90020000000000000b8061b7ecd9a21e5zNIST SP800-17 B.1 #100010000000000000f15d0f286b65bd28zNIST SP800-17 B.1 #110008000000000000add0cc8d6e5deba1zNIST SP800-17 B.1 #120004000000000000e6d5f82752ad63d1zNIST SP800-17 B.1 #130002000000000000ecbfe3bd3f591a5ezNIST SP800-17 B.1 #140001000000000000f356834379d165cdzNIST SP800-17 B.1 #1500008000000000002b9f982f20037fa9zNIST SP800-17 B.1 #160000400000000000889de068a16f0be6zNIST SP800-17 B.1 #170000200000000000e19e275d846a1298zNIST SP800-17 B.1 #180000100000000000329a8ed523d71aeczNIST SP800-17 B.1 #190000080000000000e7fce22557d23c97zNIST SP800-17 B.1 #20000004000000000012a9f5817ff2d65dzNIST SP800-17 B.1 #210000020000000000a484c3ad38dc9c19zNIST SP800-17 B.1 #220000010000000000fbe00a8a1ef8ad72zNIST SP800-17 B.1 #230000008000000000750d079407521363zNIST SP800-17 B.1 #24000000400000000064feed9c724c2fafzNIST SP800-17 B.1 #250000002000000000f02b263b328e2b60zNIST SP800-17 B.1 #2600000010000000009d64555a9a10b852zNIST SP800-17 B.1 #270000000800000000d106ff0bed5255d7zNIST SP800-17 B.1 #280000000400000000e1652c6b138c64a5zNIST SP800-17 B.1 #290000000200000000e428581186ec8f46zNIST SP800-17 B.1 #300000000100000000aeb5f5ede22d1a36zNIST SP800-17 B.1 #310000000080000000e943d7568aec0c5czNIST SP800-17 B.1 #320000000040000000df98c8276f54b04bzNIST SP800-17 B.1 #330000000020000000b160e4680f6c696fzNIST SP800-17 B.1 #340000000010000000fa0752b07d9c4ab8zNIST SP800-17 B.1 #350000000008000000ca3a2b036dbc8502zNIST SP800-17 B.1 #3600000000040000005e0905517bb59bcfzNIST SP800-17 B.1 #370000000002000000814eeb3b91d90726zNIST SP800-17 B.1 #3800000000010000004d49db1532919c9fzNIST SP800-17 B.1 #39000000000080000025eb5fc3f8cf0621zNIST SP800-17 B.1 #400000000000400000ab6a20c0620d1c6fzNIST SP800-17 B.1 #41000000000020000079e90dbc98f92ccazNIST SP800-17 B.1 #420000000000100000866ecedd8072bb0ezNIST SP800-17 B.1 #4300000000000800008b54536f2f3e64a8zNIST SP800-17 B.1 #440000000000040000ea51d3975595b86bzNIST SP800-17 B.1 #450000000000020000caffc6ac4542de31zNIST SP800-17 B.1 #4600000000000100008dd45a2ddf90796czNIST SP800-17 B.1 #4700000000000080001029d55e880ec2d0zNIST SP800-17 B.1 #4800000000000040005d86cb23639dbea9zNIST SP800-17 B.1 #4900000000000020001d1ca853ae7c0c5fzNIST SP800-17 B.1 #500000000000001000ce332329248f3228zNIST SP800-17 B.1 #5100000000000008008405d1abe24fb942zNIST SP800-17 B.1 #520000000000000400e643d78090ca4207zNIST SP800-17 B.1 #53000000000000020048221b9937748a23zNIST SP800-17 B.1 #540000000000000100dd7c0bbd61fafd54zNIST SP800-17 B.1 #5500000000000000802fbc291a570db5c4zNIST SP800-17 B.1 #560000000000000040e07c30d7e4e26e12zNIST SP800-17 B.1 #5700000000000000200953e2258e8e90a1zNIST SP800-17 B.1 #5800000000000000105b711bc4ceebf2eezNIST SP800-17 B.1 #590000000000000008cc083f1e6d9e85f6zNIST SP800-17 B.1 #600000000000000004d2fd8867d50d2dfezNIST SP800-17 B.1 #61000000000000000206e7ea22ce92708fzNIST SP800-17 B.1 #620000000000000001166b40b44aba4bd6zNIST SP800-17 B.1 #6395a8d72813daa94d8001010101010101zNIST SP800-17 B.2 #00eec1487dd8c26d54001010101010101zNIST SP800-17 B.2 #17ad16ffb79c459262001010101010101zNIST SP800-17 B.2 #2d3746294ca6a6cf31001010101010101zNIST SP800-17 B.2 #3809f5f873c1fd7610801010101010101zNIST SP800-17 B.2 #4c02faffec989d1fc0401010101010101zNIST SP800-17 B.2 #54615aa1d33e72f100201010101010101zNIST SP800-17 B.2 #62055123350c008580180010101010101zNIST SP800-17 B.2 #7df3b99d6577397c80140010101010101zNIST SP800-17 B.2 #831fe17369b5288c90120010101010101zNIST SP800-17 B.2 #9dfdd3cc64dae16420110010101010101zNIST SP800-17 B.2 #10178c83ce2b399d940108010101010101zNIST SP800-17 B.2 #1150f636324a9b7f800104010101010101zNIST SP800-17 B.2 #12a8468ee3bc18f06d0102010101010101zNIST SP800-17 B.2 #13a2dc9e92fd3cde920101800101010101zNIST SP800-17 B.2 #14cac09f797d0312870101400101010101zNIST SP800-17 B.2 #1590ba680b22aeb5250101200101010101zNIST SP800-17 B.2 #16ce7a24f350e280b60101100101010101zNIST SP800-17 B.2 #17882bff0aa01a0b870101080101010101zNIST SP800-17 B.2 #1825610288924511c20101040101010101zNIST SP800-17 B.2 #19c71516c29c75d1700101020101010101zNIST SP800-17 B.2 #205199c29a52c9f0590101018001010101zNIST SP800-17 B.2 #21c22f0a294a71f29f0101014001010101zNIST SP800-17 B.2 #22ee371483714c02ea0101012001010101zNIST SP800-17 B.2 #23a81fbd448f9e522f0101011001010101zNIST SP800-17 B.2 #244f644c92e192dfed0101010801010101zNIST SP800-17 B.2 #251afa9a66a6df92ae0101010401010101zNIST SP800-17 B.2 #26b3c1cc715cb879d80101010201010101zNIST SP800-17 B.2 #2719d032e64ab0bd8b0101010180010101zNIST SP800-17 B.2 #283cfaa7a7dc8720dc0101010140010101zNIST SP800-17 B.2 #29b7265f7f447ac6f30101010120010101zNIST SP800-17 B.2 #309db73b3c0d163f540101010110010101zNIST SP800-17 B.2 #318181b65babf4a9750101010108010101zNIST SP800-17 B.2 #3293c9b64042eaa2400101010104010101zNIST SP800-17 B.2 #3355705308297055920101010102010101zNIST SP800-17 B.2 #348638809e878787a00101010101800101zNIST SP800-17 B.2 #3541b9a79af79ac2080101010101400101zNIST SP800-17 B.2 #367a9be42f2009a8920101010101200101zNIST SP800-17 B.2 #3729038d56ba6d27450101010101100101zNIST SP800-17 B.2 #385495c6abf1e5df510101010101080101zNIST SP800-17 B.2 #39ae13dbd5614889330101010101040101zNIST SP800-17 B.2 #40024d1ffa8904e3890101010101020101zNIST SP800-17 B.2 #41d1399712f99bf02e0101010101018001zNIST SP800-17 B.2 #4214c1d7c1cffec79e0101010101014001zNIST SP800-17 B.2 #431de5279dae3bed6f0101010101012001zNIST SP800-17 B.2 #44e941a33f855013030101010101011001zNIST SP800-17 B.2 #45da99dbbc9a03f3790101010101010801zNIST SP800-17 B.2 #46b7fc92f91d8e92e90101010101010401zNIST SP800-17 B.2 #47ae8e5caa3ca04e850101010101010201zNIST SP800-17 B.2 #489cc62df43b6eed740101010101010180zNIST SP800-17 B.2 #49d863dbb5c59a91a00101010101010140zNIST SP800-17 B.2 #50a1ab2190545b91d70101010101010120zNIST SP800-17 B.2 #510875041e64c570f70101010101010110zNIST SP800-17 B.2 #525a594528bebef1cc0101010101010108zNIST SP800-17 B.2 #53fcdb3291de21f0c00101010101010104zNIST SP800-17 B.2 #54869efd7f9f265a090101010101010102zNIST SP800-17 B.2 #55c                       e Zd ZdZd Zy)RonRivestTesta   Ronald L. Rivest's DES test, see
        http://people.csail.mit.edu/rivest/Destest.txt
    ABSTRACT
    --------

    We present a simple way to test the correctness of a DES implementation:
    Use the recurrence relation:

        X0      =       9474B8E8C73BCA7D (hexadecimal)

        X(i+1)  =       IF  (i is even)  THEN  E(Xi,Xi)  ELSE  D(Xi,Xi)

    to compute a sequence of 64-bit values:  X0, X1, X2, ..., X16.  Here
    E(X,K)  denotes the DES encryption of  X  using key  K, and  D(X,K)  denotes
    the DES decryption of  X  using key  K.  If you obtain

        X16     =       1B1A2DDB4C642438

    your implementation does not have any of the 36,568 possible single-fault
    errors described herein.
    c                 H   ddl m} g }dg|dd  t        d      D ]e  }t        j                  ||   t        j
                        }|dz  s|j                  ||         g||dz   d  K|j                  ||         g||dz   d  g | j                   ||d          |d             y )Nr   )b2a_hexs   t;}      s   -Ld$8)	binasciir   ranger   newMODE_ECBencryptdecryptassertEqual)selfr   Xics        a/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Cipher/test_DES.pyrunTestzRonRivestTest.runTest6  s    $45!"r 	,A!S\\*AaC99QqT?+!A#$99QqT?+!A#$	, 	278	:    N)__name__
__module____qualname____doc__r
   r  r	  r   r      s    *:r  r   c                       e Zd Zd Zy)
TestOutputc                 N   t        j                  dt         j                        }d}|j                  |      }t	        d      }|j                  ||      }| j                  ||       | j                  |d        |j                  ||      }| j                  ||       | j                  |d        t        t	        d            }|j                  ||       | j                  ||       |j                  ||       | j                  ||       | j                  t        |j                  |d       | j                  t        |j                  |d       t	        d      }| j                  t        |j                  ||       | j                  t        |j                  ||       y )Ns   44444444s   55555555   )outputs   00000000   )r   r   r  r  	bytearrayr  r  
memoryviewassertRaises	TypeError
ValueError)r  cipherptctr  resshorter_outputs          r	  r
  zTestOutput.runTestI  s[    .^^B1nnRn/V$d#nnRn/V$d#IaL)r&)V$r&)V$)V^^RG)V^^RG"1*fnnbP*fnnbPr  N)r  r  r  r
  r  r  r	  r  r  G  s    Qr  r  c                 n    ddl m}  |t        dt              }|t	               gz  }|t               gz  }|S )Nr   )make_block_testsr   )commonr"  r   	test_datar   r  )configr"  testss      r	  	get_testsr'  i  s5    (S%3E	moE	jl^ELr  __main__c                  <    t        j                  t                     S )N)unittest	TestSuiter'  r  r  r	  <lambda>r,  s  s    H&&y{3 r  suite)defaultTest)r  r*  Crypto.Cipherr   SP800_17_B1_KEYSP800_17_B2_PTr$  TestCaser   r  r'  r  r-  mainr  r  r	  <module>r4     s  2 ,   || +_ | +_ | +_ |  +_ !|$ +_ %|( +_ )|, +_ -|0 +_ 1|4 +_ 5|8 +_ 9|< +_!=|@ +_!A|D +_!E|H +_!I|L +_!M|P +_!Q|T +_!U|X +_!Y|\ +_!]|` +_!a|d +_!e|h +_!i|l +_!m|p +_!q|t +_!u|x +_!y|| +_!}|@ +_!A|D +_!E|H +_!I|L +_!M|P +_!Q|T +_!U|X +_!Y|\ +_!]|` +_!a|d +_!e|h +_!i|l +_!m|p +_!q|t +_!u|x +_!y|| +_!}|@ +_!A|D +_!E|H +_!I|L +_!M|P +_!Q|T +_!U|X +_!Y|\ +_!]|` +_!a|d +_!e|h +_!i|l +_!m|p +_!q|t +_!u|x +_!y|| +_!}|@ +_!A|D +_!E|H +_!I|L +_!M|P +_!Q|X '); Y|\ '); ]|` '); a|d '); e|h '); i|l '); m|p '); q|t '); u|x '); y|| '); }|@ ');!A|D ');!E|H ');!I|L ');!M|P ');!Q|T ');!U|X ');!Y|\ ');!]|` ');!a|d ');!e|h ');!i|l ');!m|p ');!q|t ');!u|x ');!y|| ');!}|@ ');!A|D ');!E|H ');!I|L ');!M|P ');!Q|T ');!U|X ');!Y|\ ');!]|` ');!a|d ');!e|h ');!i|l ');!m|p ');!q|t ');!u|x ');!y|| ');!}|@ ');!A|D ');!E|H ');!I|L ');!M|P ');!Q|T ');!U|X ');!Y|\ ');!]|` ');!a|d ');!e|h ');!i|l ');!m|p ');!q|t ');!u|	|$:H%% $:NQ"" QD   z3EHMMg& r  