[P256] add warning for non constant time operation
This commit is contained in:
parent
e2c1b82234
commit
4edb580cda
@ -81,6 +81,8 @@ pointAdd a b = withNewPoint $ \dx dy ->
|
|||||||
ccryptonite_p256e_point_add ax ay bx by dx dy
|
ccryptonite_p256e_point_add ax ay bx by dx dy
|
||||||
|
|
||||||
-- | Multiply a point by a scalar
|
-- | Multiply a point by a scalar
|
||||||
|
--
|
||||||
|
-- warning: variable time
|
||||||
pointMul :: Scalar -> Point -> Point
|
pointMul :: Scalar -> Point -> Point
|
||||||
pointMul scalar p = withNewPoint $ \dx dy ->
|
pointMul scalar p = withNewPoint $ \dx dy ->
|
||||||
withScalar scalar $ \n -> withPoint p $ \px py -> withScalarZero $ \nzero ->
|
withScalar scalar $ \n -> withPoint p $ \px py -> withScalarZero $ \nzero ->
|
||||||
@ -89,6 +91,8 @@ pointMul scalar p = withNewPoint $ \dx dy ->
|
|||||||
-- | multiply the point @p with @n2 and add a lifted to curve value @n1
|
-- | multiply the point @p with @n2 and add a lifted to curve value @n1
|
||||||
--
|
--
|
||||||
-- > n1 * G + n2 * p
|
-- > n1 * G + n2 * p
|
||||||
|
--
|
||||||
|
-- warning: variable time
|
||||||
pointsMulVarTime :: Scalar -> Scalar -> Point -> Point
|
pointsMulVarTime :: Scalar -> Scalar -> Point -> Point
|
||||||
pointsMulVarTime n1 n2 p = withNewPoint $ \dx dy ->
|
pointsMulVarTime n1 n2 p = withNewPoint $ \dx dy ->
|
||||||
withScalar n1 $ \pn1 -> withScalar n2 $ \pn2 -> withPoint p $ \px py ->
|
withScalar n1 $ \pn1 -> withScalar n2 $ \pn2 -> withPoint p $ \px py ->
|
||||||
@ -130,7 +134,7 @@ scalarSub a b =
|
|||||||
--
|
--
|
||||||
-- > 1 / a
|
-- > 1 / a
|
||||||
--
|
--
|
||||||
-- variable time.
|
-- warning: variable time
|
||||||
scalarInv :: Scalar -> Scalar
|
scalarInv :: Scalar -> Scalar
|
||||||
scalarInv a =
|
scalarInv a =
|
||||||
withNewScalarFreeze $ \b -> withScalar a $ \pa ->
|
withNewScalarFreeze $ \b -> withScalar a $ \pa ->
|
||||||
@ -177,7 +181,6 @@ withTempScalar :: (Ptr P256Scalar -> IO a) -> IO a
|
|||||||
withTempScalar f = ignoreSnd <$> B.allocRet scalarSize f
|
withTempScalar f = ignoreSnd <$> B.allocRet scalarSize f
|
||||||
where ignoreSnd :: (a, ScrubbedBytes) -> a
|
where ignoreSnd :: (a, ScrubbedBytes) -> a
|
||||||
ignoreSnd = fst
|
ignoreSnd = fst
|
||||||
{-# NOINLINE withTempScalar #-}
|
|
||||||
|
|
||||||
withScalar :: Scalar -> (Ptr P256Scalar -> IO a) -> IO a
|
withScalar :: Scalar -> (Ptr P256Scalar -> IO a) -> IO a
|
||||||
withScalar (Scalar d) f = B.withByteArray d f
|
withScalar (Scalar d) f = B.withByteArray d f
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user