packages feed

phkdf-0.1.0.0: test/Main.hs

import           Data.ByteString(ByteString)
import qualified Data.ByteString as B
import           Data.Monoid
import           Test.Tasty
import           Test.Tasty.QuickCheck
import           Test.QuickCheck.Instances.ByteString()

import qualified HMAC
import qualified PHKDF
import           Crypto.Encoding.PHKDF

main = do
  let fileName = PHKDF.testVectorDefaultFileName
  phkdfTvs <- PHKDF.readTestVectorsFromFile fileName
  defaultMain (tests phkdfTvs)

tests :: (String, Either String PHKDF.TestVectors) -> TestTree
tests phkdfTvs = testGroup "Test" [
    testGroup "hmac" HMAC.tests,
    testGroup "phkdf" [PHKDF.testFile phkdfTvs],
    testProperty "prop_extendTag" prop_extendTag
  ]

prop_extendTag :: ByteString -> Bool
prop_extendTag x = trimExtendedTag x' == Just x && validLength
  where
    x' = extendTag x
    validLength = B.length x' <= 19 || B.length x' `mod` 64 == 20