secp256k1

Pure Haskell Schnorr, ECDSA on the elliptic curve secp256k1 (docs.ppad.tech/secp256k1).
git clone git://git.ppad.tech/secp256k1.git
Log | Files | Refs | README | LICENSE

commit f1ab44abe2f24f01ef09312c9f962c6f3666b5fe
parent 140b0a32804a0b23068c3656f90dcc89fa8317fc
Author: Jared Tobin <jared@jtobin.io>
Date:   Fri, 14 Mar 2025 14:11:50 +0400

bench: ecdh cases

Diffstat:
Mbench/Main.hs | 15+++++++++++++++
1 file changed, 15 insertions(+), 0 deletions(-)

diff --git a/bench/Main.hs b/bench/Main.hs @@ -25,6 +25,7 @@ main = defaultMain [ , derive_pub , schnorr , ecdsa + , ecdh ] remQ :: Benchmark @@ -143,6 +144,20 @@ ecdsa = env setup $ \ ~(tex, big, pub, msg, sig) -> sig = S.sign_ecdsa big s_msg pure (tex, big, pub, msg, sig) +ecdh :: Benchmark +ecdh = env setup $ \ ~(big, pub) -> + bgroup "ecdh" [ + bench "ecdh (small)" $ nf (S.ecdh pub) 2 + , bench "ecdh (large)" $ nf (S.ecdh pub) big + ] + where + setup = do + let !big = + 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed + !(Just !pub) = S.parse_point . B16.decodeLenient $ + "bd02b9dfc8ef760708950bd972f2dc244893b61b6b46c3b19be1b2da7b034ac5" + pure (big, pub) + p_bs :: BS.ByteString p_bs = B16.decodeLenient "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"