poly1305

The Poly1305 message authentication code (docs.ppad.tech/poly1305).
git clone git://git.ppad.tech/poly1305.git
Log | Files | Refs | README | LICENSE

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