File: KAT_MiyaguchiPreneel.hs

package info (click to toggle)
haskell-cryptonite 0.26-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 3,160 kB
  • sloc: ansic: 21,001; haskell: 16,572; makefile: 8
file content (49 lines) | stat: -rw-r--r-- 1,405 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

module KAT_MiyaguchiPreneel (tests) where

import           Crypto.Cipher.AES (AES128)
import           Crypto.ConstructHash.MiyaguchiPreneel as MiyaguchiPreneel

import           Imports

import qualified Data.ByteString.Char8 as B8
import qualified Data.ByteArray as B
import Data.ByteArray.Encoding (Base (Base16), convertFromBase)


runMP128 :: ByteString -> ByteString
runMP128 s = B.convert (MiyaguchiPreneel.compute s :: MiyaguchiPreneel AES128)

hxs :: String -> ByteString
hxs = either (error . ("hxs:" ++)) id . convertFromBase Base16
      . B8.pack . filter (/= ' ')

gAES128 :: TestTree
gAES128 =
  igroup "aes128"
  [ runMP128  B8.empty
    @?=       hxs "66e94bd4 ef8a2c3b 884cfa59 ca342b2e"
  , runMP128 (hxs "01000000 00000000 00000000 00000000")
    @?=       hxs "46711816 e91d6ff0 59bbbf2b f58e0fd3"
  , runMP128 (hxs "00000000 00000000 00000000 00000001")
    @?=       hxs "58e2fcce fa7e3061 367f1d57 a4e7455b"
  , runMP128     (hxs $
                  "00000000 00000000 00000000 00000000" ++
                  "01")
    @?=       hxs "a5ff35ae 097adf5d 646abf5e bf4c16f4"
  ]

igroup :: TestName -> [Assertion] -> TestTree
igroup nm = testGroup nm . zipWith (flip ($)) [1..] . map icase
  where
    icase c i = testCase (show (i :: Int)) c

vectors :: TestTree
vectors =
  testGroup "KATs"
  [ gAES128 ]

tests :: TestTree
tests =
    testGroup "MiyaguchiPreneel"
    [ vectors ]