mirror of https://github.com/voidlizard/hbs2
36 lines
855 B
Haskell
36 lines
855 B
Haskell
module ScalarMultBench (benchScalarMult, scalarMultEnv) where
|
|
|
|
import Criterion.Main
|
|
|
|
import Control.Monad
|
|
import Control.DeepSeq
|
|
import Control.Exception
|
|
import Data.ByteString as BS
|
|
|
|
import Data.Maybe (fromJust)
|
|
|
|
import Crypto.Saltine.Class
|
|
import Crypto.Saltine.Core.ScalarMult as S
|
|
import Crypto.Saltine.Internal.ScalarMult as Bytes
|
|
import Crypto.Saltine.Internal.Util
|
|
|
|
import BenchUtils
|
|
|
|
scalarMultEnv :: IO (GroupElement, Scalar)
|
|
scalarMultEnv = do
|
|
bsge <- randomByteString Bytes.scalarmult_bytes
|
|
bssc <- randomByteString Bytes.scalarmult_scalarbytes
|
|
|
|
let ge = fromJust $ decode bsge
|
|
let sc = fromJust $ decode bssc
|
|
|
|
pure (ge,sc)
|
|
|
|
|
|
benchScalarMult :: (GroupElement, Scalar) -> Benchmark
|
|
benchScalarMult (ge,sc) =
|
|
bgroup "ScalarMult"
|
|
[ bench "mult" $ nf (S.mult sc) ge
|
|
, bench "multBase" $ nf S.multBase sc
|
|
]
|