Blame tests/KAT_AFIS.hs

Packit 141393
{-# LANGUAGE OverloadedStrings #-}
Packit 141393
{-# LANGUAGE ExistentialQuantification #-}
Packit 141393
module KAT_AFIS (tests) where
Packit 141393
Packit 141393
import Imports
Packit 141393
Packit 141393
import Crypto.Hash
Packit 141393
import Crypto.Random
Packit 141393
import qualified Crypto.Data.AFIS as AFIS
Packit 141393
import qualified Data.ByteString as B
Packit 141393
Packit 141393
mergeVec :: [ (Int, SHA1, B.ByteString, B.ByteString) ]
Packit 141393
mergeVec =
Packit 141393
    [ (3
Packit 141393
      , SHA1
Packit 141393
      , "\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"
Packit 141393
      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\xd4\x76\xc8\x58\xbd\xf0\x15\xbe\x9f\x40\xe3\x65\x20\x1c\x9c\xb8\xd8\x1c\x16\x64"
Packit 141393
      )
Packit 141393
    , (3
Packit 141393
      , SHA1
Packit 141393
      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17"
Packit 141393
      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\xd6\x75\xc8\x59\xbb\xf7\x11\xbb\x95\x4b\xeb\x6c\x2e\x13\x90\xb5\xca\x0f\x06\x75\x17\x70\x39\x28"
Packit 141393
      )
Packit 141393
    ]
Packit 141393
Packit 141393
mergeKATs = map toProp $ zip mergeVec [(0 :: Int)..]
Packit 141393
  where toProp ((nbExpands, hashAlg, expected, dat), i) =
Packit 141393
            testCase ("merge " ++ show i) (expected @=? AFIS.merge hashAlg nbExpands dat)
Packit 141393
Packit 141393
data AFISParams = AFISParams B.ByteString Int SHA1 ChaChaDRG
Packit 141393
Packit 141393
instance Show AFISParams where
Packit 141393
    show (AFISParams dat expand _ _) = "data: " ++ show dat ++ " expanded: " ++ show expand
Packit 141393
Packit 141393
instance Arbitrary AFISParams where
Packit 141393
    arbitrary = AFISParams <$> arbitraryBSof 3 46 <*> choose (2,2) <*> elements [SHA1] <*> arbitrary
Packit 141393
Packit 141393
instance Arbitrary ChaChaDRG where
Packit 141393
    arbitrary = drgNewTest <$> arbitrary
Packit 141393
Packit 141393
tests = testGroup "AFIS"
Packit 141393
    [ testGroup "KAT merge" mergeKATs
Packit 141393
    , testProperty "merge.split == id" $ \(AFISParams bs e hf rng) -> bs == (AFIS.merge hf e $ fst (AFIS.split hf rng e bs))
Packit 141393
    ]