jose-jwt-0.7.1: benchmarks/bench.hs
{-# LANGUAGE OverloadedStrings, CPP #-}
module Main where
import Criterion.Main
import Crypto.Random
import Data.Word (Word64)
import Jose.Jws
import Jose.Jwa
import Jose.Jwt
import Keys
benchRNG = drgNewTest (w, w, w, w, w) where w = 1 :: Word64
fstWithRNG = fst . withDRG benchRNG
main = do
let msg = "The best laid schemes o' mice and men"
rsaE a m = case fstWithRNG (rsaEncode a jwsRsaPrivateKey m) of
Left _ -> error "RSA encode shouldn't fail"
Right (Jwt j) -> j
hmacE a m = case hmacEncode a jwsHmacKey m of
Left _ -> error "HMAC shouldn't fail"
Right (Jwt j) -> j
defaultMain
[ bgroup "JWS"
[ bench "encode RSA256" $ nf (rsaE RS256) msg
#if MIN_VERSION_cryptonite(0,13,0)
, bench "encode RSA384" $ nf (rsaE RS384) msg
#endif
, bench "encode RSA512" $ nf (rsaE RS512) msg
, bench "encode HS256" $ nf (hmacE HS256) msg
, bench "encode HS384" $ nf (hmacE HS384) msg
, bench "encode HS512" $ nf (hmacE HS512) msg
]
]