commit 4aa78fba38d7fbb11e567cd6bd4cf38fe864a9ad
parent 5799e341305792dcbeb425c0a891e300d0d858af
Author: Jared Tobin <jared@jtobin.io>
Date: Sat, 20 Dec 2025 17:32:16 -0330
lib: remove vartime exp
Diffstat:
4 files changed, 0 insertions(+), 67 deletions(-)
diff --git a/bench/Main.hs b/bench/Main.hs
@@ -18,7 +18,6 @@ main = defaultMain [
, sqr
, inv
, exp
- , exp_vartime
, sqrt
, redc
, retr
@@ -121,23 +120,6 @@ exp =
nf (S.exp s_big) e_big
]
-exp_vartime :: Benchmark
-exp_vartime =
- let !c2 = 2 :: C.Montgomery
- !c_big = (2 ^ 255 - 19) :: C.Montgomery
- !s2 = 2 :: S.Montgomery
- !s_big = (2 ^ 255 - 19) :: S.Montgomery
- !e2 = 2 :: Wider
- !e_big = (2 ^ 255 - 19) :: Wider
- in bgroup "exp_vartime" [
- bench "curve: M(2) ^ 2" $ nf (C.exp_vartime c2) e2
- , bench "curve: M(2 ^ 255 - 19) ^ (2 ^ 255 - 19)" $
- nf (C.exp_vartime c_big) e_big
- , bench "scalar: M(2) ^ 2" $ nf (S.exp_vartime s2) e2
- , bench "scalar: M(2 ^ 255 - 19) ^ (2 ^ 255 - 19)" $
- nf (S.exp_vartime s_big) e_big
- ]
-
redc :: Benchmark
redc =
let !c2 = 2 :: C.Montgomery
diff --git a/bench/Weight.hs b/bench/Weight.hs
@@ -19,7 +19,6 @@ main = mainWith $ do
sqr
inv
exp
- exp_vartime
sqrt
redc
retr
@@ -100,18 +99,6 @@ exp =
func "scalar: M(2) ^ 2" (S.exp s2) sma
func "scalar: M(2) ^ (2 ^ 255 - 19)" (S.exp s2) big
-exp_vartime :: Weigh ()
-exp_vartime =
- let !c2 = 2 :: C.Montgomery
- !s2 = 2 :: S.Montgomery
- !sma = 2 :: Wider
- !big = (2 ^ 255 - 19) :: Wider
- in wgroup "exp_vartime" $ do
- func "curve: M(2) ^ 2" (C.exp_vartime c2) sma
- func "curve: M(2) ^ (2 ^ 255 - 19)" (C.exp_vartime c2) big
- func "scalar: M(2) ^ 2" (S.exp_vartime s2) sma
- func "scalar: M(2) ^ (2 ^ 255 - 19)" (S.exp_vartime s2) big
-
sqrt :: Weigh ()
sqrt =
let !c2 = 2 :: C.Montgomery
diff --git a/lib/Numeric/Montgomery/Secp256k1/Curve.hs b/lib/Numeric/Montgomery/Secp256k1/Curve.hs
@@ -54,7 +54,6 @@ module Numeric.Montgomery.Secp256k1.Curve (
, sqrt
, sqrt#
, exp
- , exp_vartime
, odd#
, odd
) where
@@ -1535,23 +1534,6 @@ exp (Montgomery b) (Wider e) =
in loop nr nm ne (n - 1)
in Montgomery (loop one# b e (256 :: Word))
--- | Variable-time exponentiation in the Montgomery domain.
---
--- >>> exp_vartime 2 3
--- 8
--- >>> exp_vartime 2 10
--- 1024
-exp_vartime :: Montgomery -> Wider -> Montgomery
-exp_vartime b = loop 1 b where
- loop !r !m !e = case WW.cmp e 0 of
- GT ->
- let !nm = sqr m
- !ne = WW.shr1 e
- !nr | WW.odd e = r * m
- | otherwise = r
- in loop nr nm ne
- _ -> r
-
odd# :: (# Limb, Limb, Limb, Limb #) -> C.Choice
odd# = WW.odd#
{-# INLINE odd #-}
diff --git a/lib/Numeric/Montgomery/Secp256k1/Scalar.hs b/lib/Numeric/Montgomery/Secp256k1/Scalar.hs
@@ -52,7 +52,6 @@ module Numeric.Montgomery.Secp256k1.Scalar (
, inv
, inv#
, exp
- , exp_vartime
, odd#
, odd
) where
@@ -961,23 +960,6 @@ exp (Montgomery b) (Wider e) =
in loop nr nm ne (n - 1)
in Montgomery (loop one# b e (256 :: Word))
--- | Variable-time exponentiation in the Montgomery domain.
---
--- >>> exp_vartime 2 3
--- 8
--- >>> exp_vartime 2 10
--- 1024
-exp_vartime :: Montgomery -> Wider -> Montgomery
-exp_vartime b = loop 1 b where
- loop !r !m !e = case WW.cmp e 0 of
- GT ->
- let !nm = sqr m
- !ne = WW.shr1 e
- !nr | WW.odd e = r * m
- | otherwise = r
- in loop nr nm ne
- _ -> r
-
odd# :: (# Limb, Limb, Limb, Limb #) -> C.Choice
odd# = WW.odd#
{-# INLINE odd #-}