pbkdf

Pure Haskell password-based KDF (docs.ppad.tech/pbkdf).
git clone git://git.ppad.tech/pbkdf.git
Log | Files | Refs | README | LICENSE

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