cryptol/tests/regression/check09.cry
2016-02-19 10:08:20 -08:00

38 lines
1.1 KiB
Plaintext

initS : [1][32]
initL : [1][32]
initS = [0]
initL = [0]
ss = [ (s + a + b) <<< 3 | s <- initS # ss
| a <- [1] # ss
| b <- [0] # ls ]
ls = [ (l + a + b) <<< (a + b)
| l <- initL # ls
| a <- ss
| b <- [0] # ls ]
check9a = (ss @@ [0 .. 3] == [ 0x00000008, 0x00004080, 0x00068c00, 0x00a22800 ])
&& (ls @@ [0 .. 3] == [ 0x00000800, 0x00005080, 0x00072d00, 0x00b08200 ])
keyX : [4][8] -> [7][32]
keyX key = ss @@ [ 0 .. 6 ]
where
initS : [1][32]
initL : [1][32]
initS = [0]
initL = split (join key)
ss = [ (s + a + b) <<< 3
| s <- initS # ss
| a <- [1] # ss
| b <- [0] # ls ]
ls = [ (l + a + b) <<< (a + b)
| l <- initL # ls
| a <- ss
| b <- [0] # ls ]
// NOTE different endianness from Cryptol 1 test
check9b = keyX (reverse "abcd") ==
[0x00000008, 0x1b134ba3, 0x11ae69b1, 0xb7b3f42f,
0xc9eb1fdc, 0x008b5f36, 0x8991bc8c]
check9 = check9a && check9b