ppad-aead-0.2.0: bench/Main.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE StandaloneDeriving #-}
module Main where
import Control.DeepSeq
import Criterion.Main
import qualified Crypto.AEAD.ChaCha20Poly1305 as AEAD
import qualified Data.ByteString as BS
import qualified Data.ByteString.Base16 as B16
import Data.Maybe (fromJust)
import GHC.Generics
deriving instance Generic AEAD.Error
instance NFData AEAD.Error
main :: IO ()
main = defaultMain [
suite
]
key :: BS.ByteString
key = fromJust . B16.decode $
"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0"
cip :: BS.ByteString
cip = fromJust . B16.decode $
"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b"
plain :: BS.ByteString
plain = fromJust . B16.decode $
"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d"
nonce :: BS.ByteString
nonce = fromJust . B16.decode $
"000000000102030405060708"
aad :: BS.ByteString
aad = fromJust . B16.decode $
"f33388860000000000004e91"
tag :: BS.ByteString
tag = fromJust . B16.decode $
"eead9d67890cbb22392336fea1851f38"
suite :: Benchmark
suite =
bgroup "ppad-aead" [
bench "encrypt" $ nf (AEAD.encrypt aad key nonce) plain
, bench "decrypt" $ nf (AEAD.decrypt aad key nonce) (cip, tag)
]