module Codec.Encryption.OpenPGP.SignatureQualities
( sigType
, sigPKA
, sigHA
, sigCT
) where
import Data.List (find)
import Codec.Encryption.OpenPGP.Ontology (isSigCreationTime)
import Codec.Encryption.OpenPGP.Types
sigType :: SignaturePayload -> Maybe SigType
sigType :: SignaturePayload -> Maybe SigType
sigType (SigV3 st :: SigType
st _ _ _ _ _ _) = SigType -> Maybe SigType
forall a. a -> Maybe a
Just SigType
st
sigType (SigV4 st :: SigType
st _ _ _ _ _ _) = SigType -> Maybe SigType
forall a. a -> Maybe a
Just SigType
st
sigType _ = Maybe SigType
forall a. Maybe a
Nothing
sigPKA :: SignaturePayload -> Maybe PubKeyAlgorithm
sigPKA :: SignaturePayload -> Maybe PubKeyAlgorithm
sigPKA (SigV3 _ _ _ pka :: PubKeyAlgorithm
pka _ _ _) = PubKeyAlgorithm -> Maybe PubKeyAlgorithm
forall a. a -> Maybe a
Just PubKeyAlgorithm
pka
sigPKA (SigV4 _ pka :: PubKeyAlgorithm
pka _ _ _ _ _) = PubKeyAlgorithm -> Maybe PubKeyAlgorithm
forall a. a -> Maybe a
Just PubKeyAlgorithm
pka
sigPKA _ = Maybe PubKeyAlgorithm
forall a. Maybe a
Nothing
sigHA :: SignaturePayload -> Maybe HashAlgorithm
sigHA :: SignaturePayload -> Maybe HashAlgorithm
sigHA (SigV3 _ _ _ _ ha :: HashAlgorithm
ha _ _) = HashAlgorithm -> Maybe HashAlgorithm
forall a. a -> Maybe a
Just HashAlgorithm
ha
sigHA (SigV4 _ _ ha :: HashAlgorithm
ha _ _ _ _) = HashAlgorithm -> Maybe HashAlgorithm
forall a. a -> Maybe a
Just HashAlgorithm
ha
sigHA _ = Maybe HashAlgorithm
forall a. Maybe a
Nothing
sigCT :: SignaturePayload -> Maybe ThirtyTwoBitTimeStamp
sigCT :: SignaturePayload -> Maybe ThirtyTwoBitTimeStamp
sigCT (SigV3 _ ct :: ThirtyTwoBitTimeStamp
ct _ _ _ _ _) = ThirtyTwoBitTimeStamp -> Maybe ThirtyTwoBitTimeStamp
forall a. a -> Maybe a
Just ThirtyTwoBitTimeStamp
ct
sigCT (SigV4 _ _ _ hsubs :: [SigSubPacket]
hsubs _ _ _) =
(SigSubPacket -> ThirtyTwoBitTimeStamp)
-> Maybe SigSubPacket -> Maybe ThirtyTwoBitTimeStamp
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
(\(SigSubPacket _ (SigCreationTime i :: ThirtyTwoBitTimeStamp
i)) -> ThirtyTwoBitTimeStamp
i)
((SigSubPacket -> Bool) -> [SigSubPacket] -> Maybe SigSubPacket
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a
find SigSubPacket -> Bool
isSigCreationTime [SigSubPacket]
hsubs)
sigCT _ = Maybe ThirtyTwoBitTimeStamp
forall a. Maybe a
Nothing