{-# Language OverloadedStrings #-} import Conduit import Crypto.Hash import Crypto.MAC.HMAC import Crypto.MAC.HMAC.Conduit import Data.ByteArray.Encoding import Test.Tasty import Test.Tasty.HUnit import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as BL main :: IO () main = defaultMain tests tests :: TestTree tests = testGroup "Cryptonite conduit tests" [ testGroup "HMAC" [ testCase "File HMAC is correct" testFileHMAC ] ] testFileHMAC :: Assertion testFileHMAC = do let source = BL.take (1024 * 1024 * 3 + 150) $ BL.iterate (+ 1) 0 testhmac <- runConduit $ sourceLazy source $$ sinkHMAC ("foobar" :: BS.ByteString) let hexdump = convertToBase Base16 (testhmac :: HMAC SHA512t_256) assertEqual "HMAC mismatch" "ab78ef7a3a7b02b2ef50ee1a17e43ae0c134e0bece468b047780626264301831" (hexdump :: BS.ByteString)