
    iG>                     X   S r SSKrSSKJr  SrSr/ SPSS\S	4PS
S\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS \S!4PS"S#\S$4PS%S&\S'4PS(S)\S*4PS+S,\S-4PS.S/\S04PS1S2\S34PS4S5\S64PS7S8\S94PS:S;\S<4PS=S>\S?4PS@SA\SB4PSCSD\SE4PSFSG\SH4PSISJ\SK4PSLSM\SN4PSOSP\SQ4PSRSS\ST4PSUSV\SW4PSXSY\SZ4PS[S\\S]4PS^S_\S`4PSaSb\Sc4PSdSe\Sf4PSgSh\Si4PSjSk\Sl4PSmSn\So4PSpSq\Sr4PSsSt\Su4PSvSw\Sx4PSySz\S{4PS|S}\S~4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4PSS\S4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\SSS4P\GS GSGS4P\GSGSGS4P\GSGSGS4P\GS	GS
GS4P\GSGSGS4P\GSGSGS4P\GSGSGS4P\GSGSGS4P\GSGSGS4P\GSGSGS4P\GSGSGS 4P\GS!GS"GS#4P\GS$GS%GS&4P\GS'GS(GS)4P\GS*GS+GS,4P\GS-GS.GS/4P\GS0GS1GS24P\GS3GS4GS54P\GS6GS7GS84P\GS9GS:GS;4P\GS<GS=GS>4P\GS?GS@GSA4P\GSBGSCGSD4P\GSEGSFGSG4P\GSHGSIGSJ4P\GSKGSLGSM4P\GSNGSOGSP4P\GSQGSRGSS4P\GSTGSUGSV4P\GSWGSXGSY4P\GSZGS[GS\4P\GS]GS^GS_4P\GS`GSaGSb4P\GScGSdGSe4P\GSfGSgGSh4P\GSiGSjGSk4P\GSlGSmGSn4Pr " GSo GSp\R                  5      r " GSq GSr\R                  5      r	0 4GSs jr
\GSt:X  a  SSKrGSu r\R                  " GSvGSw9  gg(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                       \ rS rSrSrS rSrg)RonRivestTesti   a  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                 P   SSK Jn  / nS/USS & [        S5       Hh  n[        R                  " X#   [        R
                  5      nUS-  (       d  UR                  X#   5      /X#S-   S & MO  UR                  X#   5      /X#S-   S & Mj     U R                  U" US   5      U" S5      5        g )Nr   )b2a_hexs   t;}      s   -Ld$8)	binasciir   ranger   newMODE_ECBencryptdecryptassertEqual)selfr   Xics        Z/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Cipher/test_DES.pyrunTestRonRivestTest.runTest6  s    $45!"rAS\\*AaC99QT?+A#$99QT?+A#$  	278	:     N)__name__
__module____qualname____firstlineno____doc__r
  __static_attributes__r  r  r	  r   r      s    *:r  r   c                       \ rS rSrS rSrg)
TestOutputiG  c                    [         R                  " S[         R                  5      nSnUR                  U5      n[	        S5      nUR                  X$S9nU R                  X45        U R                  US 5        UR                  X4S9nU R                  X$5        U R                  US 5        [        [	        S5      5      nUR                  X$S9  U R                  X45        UR                  X4S9  U R                  X$5        U R                  [        UR                  USS9  U R                  [        UR                  USS9  [	        S5      nU R                  [        UR                  X&S9  U R                  [        UR                  X6S9  g )Ns   44444444s   55555555   )outputs   00000000   )r   r   r  r  	bytearrayr  r  
memoryviewassertRaises	TypeError
ValueError)r  cipherptctr  resshorter_outputs          r	  r
  TestOutput.runTestI  sG    .^^B1nnRn/$d#nnRn/$d#IaL)r)$r)$)V^^RG)V^^RG"1*fnnbP*fnnbPr  r  N)r  r  r  r  r
  r  r  r  r	  r  r  G  s    Qr  r  c                 n    SSK Jn  U" [        S[        5      nU[	        5       /-  nU[        5       /-  nU$ )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                  >    [         R                  " [        5       5      $ )N)unittest	TestSuiter+  r  r  r	  <lambda>r0  s  s    H&&y{3r  suite)defaultTest)r  r.  Crypto.Cipherr   SP800_17_B1_KEYSP800_17_B2_PTr(  TestCaser   r  r+  r  r1  mainr  r  r	  <module>r8     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MMg& r  