From 6b3ecc5010905d42c0a3c33e6850210a8cf615fc Mon Sep 17 00:00:00 2001 From: joe Date: Mon, 14 Apr 2014 22:27:59 -0400 Subject: FailedToMakeSignature error --- KeyRing.hs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'KeyRing.hs') diff --git a/KeyRing.hs b/KeyRing.hs index 9854b84..a2485c4 100644 --- a/KeyRing.hs +++ b/KeyRing.hs @@ -86,7 +86,8 @@ data KeyRingAction a = KeyRingAction a | RunTimeAction (KeyRingRuntime -> a) data KeyRingData = KeyRingData { kFiles :: Map.Map InputFile (RefType,FileType) - , kImports :: Map.Map String (KeyData -> Bool) + , kImports :: Map.Map FilePath (KeyData -> Bool) + -- ^ indicates what pgp packets get written to which keyring files , homeSpec :: Maybe String } @@ -165,13 +166,14 @@ data RSAPrivateKey = RSAPrivateKey deriving Show -data KikiCondition a = KikiSuccess a | FailedToLock [FilePath] | BadPassphrase +data KikiCondition a = KikiSuccess a | FailedToLock [FilePath] | BadPassphrase | FailedToMakeSignature #define TRIVIAL(OP) fmap _ (OP) = OP instance Functor KikiCondition where fmap f (KikiSuccess a) = KikiSuccess (f a) TRIVIAL( FailedToLock x ) TRIVIAL( BadPassphrase ) + TRIVIAL( FailedToMakeSignature ) instance FunctorToMaybe KikiCondition where functorToMaybe (KikiSuccess a) = Just a functorToMaybe _ = Nothing @@ -185,7 +187,7 @@ data KikiReportAction = | YieldSignature | YieldSecretKeyPacket String | UnableToUpdateExpiredSignature - | FailedToMakeSignature + | WarnFailedToMakeSignature data KikiResult a = KikiResult { kikiCondition :: KikiCondition a @@ -538,7 +540,7 @@ doImportG doDecrypt db m0 tag fname key = do tor_ov SHA1 (fingerprint wkun) - flip (maybe $ return $ KikiSuccess (uids,[(fname, FailedToMakeSignature)])) + flip (maybe $ return $ KikiSuccess (uids,[(fname, WarnFailedToMakeSignature)])) (sig_ov >>= listToMaybe . signatures_over) $ \sig -> do let om = Map.singleton fname (origin sig (-1)) @@ -862,11 +864,11 @@ makeSig doDecrypt top fname subkey_p tag mbsig = do try wkun $ \wkun -> do let grip = fingerprint wk addOrigin new_sig = do - flip (maybe $ error "Failed to make signature.") + flip (maybe $ return FailedToMakeSignature) (new_sig >>= listToMaybe . signatures_over) $ \new_sig -> do let mp' = mappedPacket fname new_sig - return (mp', Map.empty) + return $ KikiSuccess (mp', Map.empty) parsedkey = [packet $ subkey_p] hashed0 = [ KeyFlagsPacket @@ -910,8 +912,8 @@ makeSig doDecrypt top fname subkey_p tag mbsig = do SHA1 grip let newSig = do - (k,o) <- addOrigin new_sig - return $ KikiSuccess ((k,o),[]) + r <- addOrigin new_sig + return $ fmap (,[]) r flip (maybe newSig) mbsig $ \(mp,trustmap) -> do let sig = packet mp isCreation (SignatureCreationTimePacket {}) = True @@ -944,7 +946,8 @@ makeSig doDecrypt top fname subkey_p tag mbsig = do [sig'] ) SHA1 (fingerprint wk) - fmap (KikiSuccess . (,[])) $ addOrigin new_sig + newsig <- addOrigin new_sig + return $ fmap (,[]) newsig -- cgit v1.2.3