From de42e2f46ec64f84317ef3696bd304a3836a38f9 Mon Sep 17 00:00:00 2001 From: joe Date: Fri, 13 Dec 2013 04:27:54 -0500 Subject: Changed pgpSign to return a Maybe in case a signature cannot be made. --- OpenPGP.hs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'OpenPGP.hs') diff --git a/OpenPGP.hs b/OpenPGP.hs index 7fef0b5..75054b3 100644 --- a/OpenPGP.hs +++ b/OpenPGP.hs @@ -10,6 +10,7 @@ import Data.OpenPGP.CryptoAPI (verify,fingerprint,sign,decryptSecretKey) import Data.Time.Clock.POSIX import Control.Applicative ( (<$>) ) import Crypto.Random (newGenIO,SystemRandom) +import ControlMaybe now = floor <$> Data.Time.Clock.POSIX.getPOSIXTime @@ -32,11 +33,12 @@ pgpSign :: -> OpenPGP.SignatureOver -- ^ Data to sign, and optional signature packet -> OpenPGP.HashAlgorithm -- ^ HashAlgorithm to use in signature -> String -- ^ KeyID of key to choose - -> IO OpenPGP.SignatureOver -pgpSign seckeys dta hash_algo keyid = do + -> IO (Maybe OpenPGP.SignatureOver) +pgpSign seckeys dta hash_algo keyid = + handleIO_ (return Nothing) $ do timestamp <- now g <- newGenIO :: IO SystemRandom let sigs = map (stampit timestamp) $ signatures_over dta dta' = dta { signatures_over = sigs } let (r,g') = sign seckeys dta' hash_algo keyid timestamp g - return r + return (Just r) -- cgit v1.2.3