Main.hs (1235B)
1 {-# LANGUAGE BangPatterns #-} 2 {-# LANGUAGE OverloadedStrings #-} 3 4 module Main where 5 6 import Criterion.Main 7 import qualified Crypto.MAC.Poly1305 as Poly1305 8 import qualified Data.ByteString as BS 9 import qualified Data.ByteString.Base16 as B16 10 import Data.Maybe (fromJust) 11 12 main :: IO () 13 main = defaultMain [ 14 suite 15 ] 16 17 msg :: BS.ByteString 18 msg = fromJust . B16.decode $ 19 "4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e" 20 21 key_small :: BS.ByteString 22 key_small = fromJust . B16.decode $ 23 "0000000000000000000000000000000000000000000000000000000000000003" 24 25 key_mid :: BS.ByteString 26 key_mid = fromJust . B16.decode $ 27 "8888888888888888888888888888888888888888888888888888888888888883" 28 29 key_big :: BS.ByteString 30 key_big = fromJust . B16.decode $ 31 "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3" 32 33 suite :: Benchmark 34 suite = 35 bgroup "ppad-poly1305" [ 36 bench "mac (small key)" $ nf (Poly1305.mac key_small) msg 37 , bench "mac (mid key)" $ nf (Poly1305.mac key_mid) msg 38 , bench "mac (big key)" $ nf (Poly1305.mac key_big) msg 39 ] 40