Main.hs (890B)
1 {-# LANGUAGE OverloadedStrings #-} 2 3 module Main where 4 5 import Criterion.Main 6 import qualified Crypto.KDF.PBKDF as KDF 7 import qualified Crypto.Hash.SHA256 as SHA256 8 import qualified Crypto.Hash.SHA512 as SHA512 9 import qualified Data.ByteString as BS 10 11 main :: IO () 12 main = defaultMain [ 13 suite 14 ] 15 16 hmac_sha256 :: BS.ByteString -> BS.ByteString -> BS.ByteString 17 hmac_sha256 k b = case SHA256.hmac k b of 18 SHA256.MAC mac -> mac 19 20 hmac_sha512 :: BS.ByteString -> BS.ByteString -> BS.ByteString 21 hmac_sha512 k b = case SHA512.hmac k b of 22 SHA512.MAC mac -> mac 23 24 suite :: Benchmark 25 suite = 26 bgroup "ppad-pbkdf" [ 27 bgroup "PBKDF-SHA256" [ 28 bench "derive (outlen 32)" $ 29 nf (KDF.derive hmac_sha256 "muh password" "muh salt" 32) 64 30 ] 31 , bgroup "PBKDF-SHA512" [ 32 bench "derive (outlen 32)" $ 33 nf (KDF.derive hmac_sha512 "muh password" "muh salt" 32) 64 34 ] 35 ] 36