From 730cf4755596090a214075e05e92d70f3f6ea69e Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Thu, 4 Jul 2019 17:22:43 -0400 Subject: refactor --- Data/OpenPGP.hs | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/Data/OpenPGP.hs b/Data/OpenPGP.hs index 0165a97..a297c34 100644 --- a/Data/OpenPGP.hs +++ b/Data/OpenPGP.hs @@ -1,4 +1,5 @@ -{-# LANGUAGE CPP #-} +{-# LANGUAGE CPP #-} +{-# LANGUAGE PatternGuards #-} -- | Main implementation of the OpenPGP message format -- -- The recommended way to import this module is: @@ -1051,23 +1052,14 @@ signatures (Message ps) = -- TODO: UserAttribute paired_sigs :: Maybe Packet -> [Packet] -> [SignatureOver] -paired_sigs _ [] = [] -paired_sigs _ (p@(PublicKeyPacket {is_subkey = False}):ps) = - KeySignature p (takeWhile isSignaturePacket ps) : - paired_sigs (Just p) (dropWhile isSignaturePacket ps) -paired_sigs _ (p@(SecretKeyPacket {is_subkey = False}):ps) = - KeySignature p (takeWhile isSignaturePacket ps) : - paired_sigs (Just p) (dropWhile isSignaturePacket ps) -paired_sigs (Just k) (p@(PublicKeyPacket {is_subkey = True}):ps) = - SubkeySignature k p (takeWhile isSignaturePacket ps) : - paired_sigs (Just k) (dropWhile isSignaturePacket ps) -paired_sigs (Just k) (p@(SecretKeyPacket {is_subkey = True}):ps) = - SubkeySignature k p (takeWhile isSignaturePacket ps) : - paired_sigs (Just k) (dropWhile isSignaturePacket ps) -paired_sigs (Just k) (p@(UserIDPacket {}):ps) = - CertificationSignature k p (takeWhile isSignaturePacket ps) : - paired_sigs (Just k) (dropWhile isSignaturePacket ps) -paired_sigs k (_:ps) = paired_sigs k ps +paired_sigs _ [] = [] +paired_sigs mk (p:ps) = ($ span isSignaturePacket ps) $ case p of + PublicKeyPacket {is_subkey = False} -> \(ss,qs) -> KeySignature p ss : paired_sigs (Just p) qs + SecretKeyPacket {is_subkey = False} -> \(ss,qs) -> KeySignature p ss : paired_sigs (Just p) qs + PublicKeyPacket {is_subkey = True} | Just k <- mk -> \(ss,qs) -> SubkeySignature k p ss : paired_sigs mk qs + SecretKeyPacket {is_subkey = True} | Just k <- mk -> \(ss,qs) -> SubkeySignature k p ss : paired_sigs mk qs + UserIDPacket {} | Just k <- mk -> \(ss,qs) -> CertificationSignature k p ss : paired_sigs mk qs + _ -> \_ -> paired_sigs mk ps -- | newtype MPI = MPI Integer deriving (Show, Read, Eq, Ord) -- cgit v1.2.3