packages feed

libjwt-typed-0.2: bench/Benchmarks.hs

module Main
      ( main
      )
where

import           Algorithms
import           Benchmarks.Jose               as Jose
import           Benchmarks.Libjwt             as My

import           Criterion               hiding ( benchmark )
import           Criterion.Main                 ( defaultMain )

main :: IO ()
main = defaultMain
      [ bgroup
            "signing"
            [ bgroup
                  "HMAC512"
                  [ my $ My.signing <*> pure hs512
                  , jose $ Jose.signing <*> pure jwkHS512
                  ]
            , bgroup
                  "RSA512"
                  [ my $ My.signing <*> pure rs512
                  , jose $ Jose.signing <*> pure jwkRS512
                  ]
            , bgroup
                  "ECDSA256"
                  [ my $ My.signing <*> pure es256
                  , jose $ Jose.signing <*> pure jwkES256
                  ]
            , bgroup
                  "ECDSA512"
                  [ my $ My.signing <*> pure es512
                  , jose $ Jose.signing <*> pure jwkES512
                  ]
            ]
      , bgroup
            "decoding"
            [ bgroup
                  "HMAC512"
                  [ my $ My.decoding <*> pure hs512
                  , jose $ Jose.decoding <*> pure jwkHS512
                  ]
            , bgroup
                  "RSA512"
                  [ my $ My.decoding <*> pure rs512
                  , jose $ Jose.decoding <*> pure jwkRS512
                  ]
            , bgroup
                  "ECDSA256"
                  [ my $ My.decoding <*> pure es256
                  , jose $ Jose.decoding <*> pure jwkES256
                  ]
            , bgroup
                  "ECDSA512"
                  [ my $ My.decoding <*> pure es512
                  , jose $ Jose.decoding <*> pure jwkES512
                  ]
            ]
      ]
   where
      jose = bgroup "jose"
      my   = bgroup "libjwt"