cryptol/examples/DEStest.cry
Robert Dockins cd9ffed00b Update examples to use (/\) instead of (&&) where appropriate,
and to squash other warnings related to the upcomming precedence change.
2016-08-22 18:14:44 -07:00

219 lines
9.4 KiB
Plaintext

/*
* Copyright (c) 2013-2016 Galois, Inc.
* Distributed under the terms of the BSD3 license (see LICENSE file)
*/
module DEStest where
import DES
import Test
// sample run:
// DEStest> des_evktest DES
// DEStest> des_evttest DES
// DEStest> des_ekatest DES
des_evktest cipher = evktest (cipher, vk, zero : [64])
des_evttest cipher = evttest (cipher, 0x0101010101010101 : [64], vt)
des_ekatest cipher = ekatest (cipher, ka)
vktest cipher
= [ (a, b, e /\ d)
| (a, e) <- evktest (cipher, vk, zero : [64])
| (b, d) <- dvktest (cipher, vk, zero : [64]) ]
vttest cipher
= [ (a, b, e /\ d)
| (a, e) <- evttest (cipher, 0x0101010101010101 : [64], vt)
| (b, d) <- dvttest (cipher, 0x0101010101010101 : [64], vt) ]
katest cipher
= [ (a, b, e /\ d)
| (a, e) <- ekatest (cipher, ka)
| (b, d) <- dkatest (cipher, ka) ]
// Test vectors from NIST 800-17
vk : [88]([64], [64])
vk
= [ (0x8001010101010101, 0x95A8D72813DAA94D),
(0x4001010101010101, 0x0EEC1487DD8C26D5),
(0x2001010101010101, 0x7AD16FFB79C45926),
(0x1001010101010101, 0xD3746294CA6A6CF3),
(0x0801010101010101, 0x809F5F873C1FD761),
(0x0401010101010101, 0xC02FAFFEC989D1FC),
(0x0201010101010101, 0x4615AA1D33E72F10),
(0x0180010101010101, 0x2055123350C00858),
(0x0140010101010101, 0xDF3B99D6577397C8),
(0x0120010101010101, 0x31FE17369B5288C9),
(0x0110010101010101, 0xDFDD3CC64DAE1642),
(0x0108010101010101, 0x178C83CE2B399D94),
(0x0104010101010101, 0x50F636324A9B7F80),
(0x0102010101010101, 0xA8468EE3BC18F06D),
(0x0101800101010101, 0xA2DC9E92FD3CDE92),
(0x0101400101010101, 0xCAC09F797D031287),
(0x0101200101010101, 0x90BA680B22AEB525),
(0x0101100101010101, 0xCE7A24F350E280B6),
(0x0101080101010101, 0x882BFF0AA01A0B87),
(0x0101040101010101, 0x25610288924511C2),
(0x0101020101010101, 0xC71516C29C75D170),
(0x0101018001010101, 0x5199C29A52C9F059),
(0x0101014001010101, 0xC22F0A294A71F29F),
(0x0101012001010101, 0xEE371483714C02EA),
(0x0101011001010101, 0xA81FBD448F9E522F),
(0x0101010801010101, 0x4F644C92E192DFED),
(0x0101010401010101, 0x1AFA9A66A6DF92AE),
(0x0101010201010101, 0xB3C1CC715CB879D8),
(0x0101010180010101, 0x19D032E64AB0BD8B),
(0x0101010140010101, 0x3CFAA7A7DC8720DC),
(0x0101010120010101, 0xB7265F7F447AC6F3),
(0x0101010110010101, 0x9DB73B3C0D163F54),
(0x0101010108010101, 0x8181B65BABF4A975),
(0x0101010104010101, 0x93C9B64042EAA240),
(0x0101010102010101, 0x5570530829705592),
(0x0101010101800101, 0x8638809E878787A0),
(0x0101010101400101, 0x41B9A79AF79AC208),
(0x0101010101200101, 0x7A9BE42F2009A892),
(0x0101010101100101, 0x29038D56BA6D2745),
(0x0101010101080101, 0x5495C6ABF1E5DF51),
(0x0101010101040101, 0xAE13DBD561488933),
(0x0101010101020101, 0x024D1FFA8904E389),
(0x0101010101018001, 0xD1399712F99BF02E),
(0x0101010101014001, 0x14C1D7C1CFFEC79E),
(0x0101010101012001, 0x1DE5279DAE3BED6F),
(0x0101010101011001, 0xE941A33F85501303),
(0x0101010101010801, 0xDA99DBBC9A03F379),
(0x0101010101010401, 0xB7FC92F91D8E92E9),
(0x0101010101010201, 0xAE8E5CAA3CA04E85),
(0x0101010101010180, 0x9CC62DF43B6EED74),
(0x0101010101010140, 0xD863DBB5C59A91A0),
(0x0101010101010120, 0xA1AB2190545B91D7),
(0x0101010101010110, 0x0875041E64C570F7),
(0x0101010101010108, 0x5A594528BEBEF1CC),
(0x0101010101010104, 0xFCDB3291DE21F0C0),
(0x0101010101010102, 0x869EFD7F9F265A09),
// from "Permutation Operation Known Answer Test"
(0x1046913489980131, 0x88D55E54F54C97B4),
(0x1007103489988020, 0x0C0CC00C83EA48FD),
(0x10071034C8980120, 0x83BC8EF3A6570183),
(0x1046103489988020, 0xDF725DCAD94EA2E9),
(0x1086911519190101, 0xE652B53B550BE8B0),
(0x1086911519580101, 0xAF527120C485CBB0),
(0x5107B01519580101, 0x0F04CE393DB926D5),
(0x1007B01519190101, 0xC9F00FFC74079067),
(0x3107915498080101, 0x7CFD82A593252B4E),
(0x3107919498080101, 0xCB49A2F9E91363E3),
(0x10079115B9080140, 0x00B588BE70D23F56),
(0x3107911598080140, 0x406A9A6AB43399AE),
(0x1007D01589980101, 0x6CB773611DCA9ADA),
(0x9107911589980101, 0x67FD21C17DBB5D70),
(0x9107D01589190101, 0x9592CB4110430787),
(0x1007D01598980120, 0xA6B7FF68A318DDD3),
(0x1007940498190101, 0x4D102196C914CA16),
(0x0107910491190401, 0x2DFA9F4573594965),
(0x0107910491190101, 0xB46604816C0E0774),
(0x0107940491190401, 0x6E7E6221A4F34E87),
(0x19079210981A0101, 0xAA85E74643233199),
(0x1007911998190801, 0x2E5A19DB4D1962D6),
(0x10079119981A0801, 0x23A866A809D30894),
(0x1007921098190101, 0xD812D961F017D320),
(0x100791159819010B, 0x055605816E58608F),
(0x1004801598190101, 0xABD88E8B1B7716F1),
(0x1004801598190102, 0x537AC95BE69DA1E1),
(0x1004801598190108, 0xAED0F6AE3C25CDD8),
(0x1002911598100104, 0xB3E35A5EE53E7B8D),
(0x1002911598190104, 0x61C79C71921A2EF8),
(0x1002911598100201, 0xE2F5728F0995013C),
(0x1002911698100101, 0x1AEAC39A61F0A464)
]
vt : [64]([64], [64])
vt
= [ (0x8000000000000000, 0x95F8A5E5DD31D900),
(0x4000000000000000, 0xDD7F121CA5015619),
(0x2000000000000000, 0x2E8653104F3834EA),
(0x1000000000000000, 0x4BD388FF6CD81D4F),
(0x0800000000000000, 0x20B9E767B2FB1456),
(0x0400000000000000, 0x55579380D77138EF),
(0x0200000000000000, 0x6CC5DEFAAF04512F),
(0x0100000000000000, 0x0D9F279BA5D87260),
(0x0080000000000000, 0xD9031B0271BD5A0A),
(0x0040000000000000, 0x424250B37C3DD951),
(0x0020000000000000, 0xB8061B7ECD9A21E5),
(0x0010000000000000, 0xF15D0F286B65BD28),
(0x0008000000000000, 0xADD0CC8D6E5DEBA1),
(0x0004000000000000, 0xE6D5F82752AD63D1),
(0x0002000000000000, 0xECBFE3BD3F591A5E),
(0x0001000000000000, 0xF356834379D165CD),
(0x0000800000000000, 0x2B9F982F20037FA9),
(0x0000400000000000, 0x889DE068A16F0BE6),
(0x0000200000000000, 0xE19E275D846A1298),
(0x0000100000000000, 0x329A8ED523D71AEC),
(0x0000080000000000, 0xE7FCE22557D23C97),
(0x0000040000000000, 0x12A9F5817FF2D65D),
(0x0000020000000000, 0xA484C3AD38DC9C19),
(0x0000010000000000, 0xFBE00A8A1EF8AD72),
(0x0000008000000000, 0x750D079407521363),
(0x0000004000000000, 0x64FEED9C724C2FAF),
(0x0000002000000000, 0xF02B263B328E2B60),
(0x0000001000000000, 0x9D64555A9A10B852),
(0x0000000800000000, 0xD106FF0BED5255D7),
(0x0000000400000000, 0xE1652C6B138C64A5),
(0x0000000200000000, 0xE428581186EC8F46),
(0x0000000100000000, 0xAEB5F5EDE22D1A36),
(0x0000000080000000, 0xE943D7568AEC0C5C),
(0x0000000040000000, 0xDF98C8276F54B04B),
(0x0000000020000000, 0xB160E4680F6C696F),
(0x0000000010000000, 0xFA0752B07D9C4AB8),
(0x0000000008000000, 0xCA3A2B036DBC8502),
(0x0000000004000000, 0x5E0905517BB59BCF),
(0x0000000002000000, 0x814EEB3B91D90726),
(0x0000000001000000, 0x4D49DB1532919C9F),
(0x0000000000800000, 0x25EB5FC3F8CF0621),
(0x0000000000400000, 0xAB6A20C0620D1C6F),
(0x0000000000200000, 0x79E90DBC98F92CCA),
(0x0000000000100000, 0x866ECEDD8072BB0E),
(0x0000000000080000, 0x8B54536F2F3E64A8),
(0x0000000000040000, 0xEA51D3975595B86B),
(0x0000000000020000, 0xCAFFC6AC4542DE31),
(0x0000000000010000, 0x8DD45A2DDF90796C),
(0x0000000000008000, 0x1029D55E880EC2D0),
(0x0000000000004000, 0x5D86CB23639DBEA9),
(0x0000000000002000, 0x1D1CA853AE7C0C5F),
(0x0000000000001000, 0xCE332329248F3228),
(0x0000000000000800, 0x8405D1ABE24FB942),
(0x0000000000000400, 0xE643D78090CA4207),
(0x0000000000000200, 0x48221B9937748A23),
(0x0000000000000100, 0xDD7C0BBD61FAFD54),
(0x0000000000000080, 0x2FBC291A570DB5C4),
(0x0000000000000040, 0xE07C30D7E4E26E12),
(0x0000000000000020, 0x0953E2258E8E90A1),
(0x0000000000000010, 0x5B711BC4CEEBF2EE),
(0x0000000000000008, 0xCC083F1E6D9E85F6),
(0x0000000000000004, 0xD2FD8867D50D2DFE),
(0x0000000000000002, 0x06E7EA22CE92708F),
(0x0000000000000001, 0x166B40B44ABA4BD6)
]
ka : [19]([64], [64], [64])
ka
= [ (0x7CA110454A1A6E57, 0x01A1D6D039776742, 0x690F5B0D9A26939B),
(0x0131D9619DC1376E, 0x5CD54CA83DEF57DA, 0x7A389D10354BD271),
(0x07A1133E4A0B2686, 0x0248D43806F67172, 0x868EBB51CAB4599A),
(0x3849674C2602319E, 0x51454B582DDF440A, 0x7178876E01F19B2A),
(0x04B915BA43FEB5B6, 0x42FD443059577FA2, 0xAF37FB421F8C4095),
(0x0113B970FD34F2CE, 0x059B5E0851CF143A, 0x86A560F10EC6D85B),
(0x0170F175468FB5E6, 0x0756D8E0774761D2, 0x0CD3DA020021DC09),
(0x43297FAD38E373FE, 0x762514B829BF486A, 0xEA676B2CB7DB2B7A),
(0x07A7137045DA2A16, 0x3BDD119049372802, 0xDFD64A815CAF1A0F),
(0x04689104C2FD3B2F, 0x26955F6835AF609A, 0x5C513C9C4886C088),
(0x37D06BB516CB7546, 0x164D5E404F275232, 0x0A2AEEAE3FF4AB77),
(0x1F08260D1AC2465E, 0x6B056E18759F5CCA, 0xEF1BF03E5DFA575A),
(0x584023641ABA6176, 0x004BD6EF09176062, 0x88BF0DB6D70DEE56),
(0x025816164629B007, 0x480D39006EE762F2, 0xA1F9915541020B56),
(0x49793EBC79B3258F, 0x437540C8698F3CFA, 0x6FBF1CAFCFFD0556),
(0x4FB05E1515AB73A7, 0x072D43A077075292, 0x2F22E49BAB7CA1AC),
(0x49E95D6D4CA229BF, 0x02FE55778117F12A, 0x5A6B612CC26CCE4A),
(0x018310DC409B26D6, 0x1D9D5C5018F728C2, 0x5F4C038ED12B2E41),
(0x1C587F1C13924FEF, 0x305532286D6F295A, 0x63FAC0D034D9F793)
]