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 (1603B)


      1 {-# OPTIONS_GHC -fno-warn-orphans #-}
      2 {-# LANGUAGE BangPatterns #-}
      3 {-# LANGUAGE OverloadedStrings #-}
      4 
      5 module Main where
      6 
      7 import Control.DeepSeq
      8 import Criterion.Main
      9 import qualified Crypto.MAC.Poly1305 as Poly1305
     10 import qualified Data.ByteString as BS
     11 import qualified Data.ByteString.Base16 as B16
     12 import Data.Maybe (fromJust)
     13 
     14 instance NFData Poly1305.MAC where
     15   rnf (Poly1305.MAC b) = rnf b
     16 
     17 main :: IO ()
     18 main = defaultMain [
     19     suite
     20   ]
     21 
     22 msg :: BS.ByteString
     23 msg = fromJust . B16.decode $
     24   "4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e"
     25 
     26 key_small :: BS.ByteString
     27 key_small = fromJust . B16.decode $
     28   "0000000000000000000000000000000000000000000000000000000000000003"
     29 
     30 key_mid :: BS.ByteString
     31 key_mid = fromJust . B16.decode $
     32   "8888888888888888888888888888888888888888888888888888888888888883"
     33 
     34 key_big :: BS.ByteString
     35 key_big = fromJust . B16.decode $
     36   "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3"
     37 
     38 msg_1k :: BS.ByteString
     39 msg_1k = BS.replicate 1024 0x42
     40 
     41 msg_4k :: BS.ByteString
     42 msg_4k = BS.replicate 4096 0x42
     43 
     44 suite :: Benchmark
     45 suite =
     46   bgroup "ppad-poly1305" [
     47     bench "mac (small key)" $ nf (Poly1305.mac key_small) msg
     48   , bench "mac (mid key)" $ nf (Poly1305.mac key_mid) msg
     49   , bench "mac (big key)" $ nf (Poly1305.mac key_big) msg
     50   , bench "mac (1024B msg)" $ nf (Poly1305.mac key_big) msg_1k
     51   , bench "mac (4096B msg)" $ nf (Poly1305.mac key_big) msg_4k
     52   ]
     53