Rename to signDigestWith

This commit is contained in:
Olivier Chéron 2019-02-28 21:14:18 +01:00
parent b55a93dfdc
commit 997cea369b

View File

@ -10,10 +10,10 @@ module Crypto.PubKey.ECC.ECDSA
, KeyPair(..) , KeyPair(..)
, toPublicKey , toPublicKey
, toPrivateKey , toPrivateKey
, signWithDigest
, signWith , signWith
, signDigest , signDigestWith
, sign , sign
, signDigest
, verify , verify
, verifyDigest , verifyDigest
) where ) where
@ -63,13 +63,13 @@ toPrivateKey (KeyPair curve _ priv) = PrivateKey curve priv
-- | Sign digest using the private key and an explicit k number. -- | Sign digest using the private key and an explicit k number.
-- --
-- /WARNING:/ Vulnerable to timing attacks. -- /WARNING:/ Vulnerable to timing attacks.
signWithDigest :: HashAlgorithm hash signDigestWith :: HashAlgorithm hash
=> Integer -- ^ k random number => Integer -- ^ k random number
-> PrivateKey -- ^ private key -> PrivateKey -- ^ private key
-> hash -- ^ hash function -> hash -- ^ hash function
-> Digest hash -- ^ digest to sign -> Digest hash -- ^ digest to sign
-> Maybe Signature -> Maybe Signature
signWithDigest k (PrivateKey curve d) hashAlg digest = do signDigestWith k (PrivateKey curve d) hashAlg digest = do
let z = dsaTruncHashDigest hashAlg digest n let z = dsaTruncHashDigest hashAlg digest n
CurveCommon _ _ g n _ = common_curve curve CurveCommon _ _ g n _ = common_curve curve
let point = pointMul curve k g let point = pointMul curve k g
@ -90,16 +90,16 @@ signWith :: (ByteArrayAccess msg, HashAlgorithm hash)
-> hash -- ^ hash function -> hash -- ^ hash function
-> msg -- ^ message to sign -> msg -- ^ message to sign
-> Maybe Signature -> Maybe Signature
signWith k pk hashAlg msg = signWithDigest k pk hashAlg (hashWith hashAlg msg) signWith k pk hashAlg msg = signDigestWith k pk hashAlg (hashWith hashAlg msg)
-- | Sign digst using the private key. -- | Sign digest using the private key.
-- --
-- /WARNING:/ Vulnerable to timing attacks. -- /WARNING:/ Vulnerable to timing attacks.
signDigest :: (HashAlgorithm hash, MonadRandom m) signDigest :: (HashAlgorithm hash, MonadRandom m)
=> PrivateKey -> hash -> Digest hash -> m Signature => PrivateKey -> hash -> Digest hash -> m Signature
signDigest pk hashAlg digest = do signDigest pk hashAlg digest = do
k <- generateBetween 1 (n - 1) k <- generateBetween 1 (n - 1)
case signWithDigest k pk hashAlg digest of case signDigestWith k pk hashAlg digest of
Nothing -> signDigest pk hashAlg digest Nothing -> signDigest pk hashAlg digest
Just sig -> return sig Just sig -> return sig
where n = ecc_n . common_curve $ private_curve pk where n = ecc_n . common_curve $ private_curve pk