module Codec.Encryption.OpenPGP.SignatureQualities
( sigType
, sigPKA
, sigHA
, sigCT
, signatureSubpacketListsKnown
, signatureHashedSubpacketsKnown
) where
import Control.Applicative ((<|>))
import Control.Lens (preview, _1)
import Data.List (find)
import Codec.Encryption.OpenPGP.Ontology (isSigCreationTime)
import Codec.Encryption.OpenPGP.Types
sigType :: SignaturePayload -> Maybe SigType
sigType :: SignaturePayload -> Maybe SigType
sigType SignaturePayload
sig =
Getting (First SigType) SignaturePayload SigType
-> SignaturePayload -> Maybe SigType
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview (((SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI))
-> SignaturePayload -> Const (First SigType) SignaturePayload
Prism'
SignaturePayload
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
_SigV3 (((SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId,
PubKeyAlgorithm, HashAlgorithm, Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI))
-> SignaturePayload -> Const (First SigType) SignaturePayload)
-> ((SigType -> Const (First SigType) SigType)
-> (SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId,
PubKeyAlgorithm, HashAlgorithm, Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI))
-> Getting (First SigType) SignaturePayload SigType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SigType -> Const (First SigType) SigType)
-> (SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId,
PubKeyAlgorithm, HashAlgorithm, Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
forall s t a b. Field1 s t a b => Lens s t a b
Lens
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
SigType
SigType
_1) SignaturePayload
sig
Maybe SigType -> Maybe SigType -> Maybe SigType
forall a. Maybe a -> Maybe a -> Maybe a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Getting (First SigType) SignaturePayload SigType
-> SignaturePayload -> Maybe SigType
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview (((SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
-> SignaturePayload -> Const (First SigType) SignaturePayload
Prism'
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
_SigV4 (((SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
-> SignaturePayload -> Const (First SigType) SignaturePayload)
-> ((SigType -> Const (First SigType) SigType)
-> (SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
-> Getting (First SigType) SignaturePayload SigType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SigType -> Const (First SigType) SigType)
-> (SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
forall s t a b. Field1 s t a b => Lens s t a b
Lens
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
SigType
SigType
_1) SignaturePayload
sig
Maybe SigType -> Maybe SigType -> Maybe SigType
forall a. Maybe a -> Maybe a -> Maybe a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Getting (First SigType) SignaturePayload SigType
-> SignaturePayload -> Maybe SigType
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview (((SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
-> SignaturePayload -> Const (First SigType) SignaturePayload
Prism'
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
_SigV6 (((SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
-> SignaturePayload -> Const (First SigType) SignaturePayload)
-> ((SigType -> Const (First SigType) SigType)
-> (SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
-> Getting (First SigType) SignaturePayload SigType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SigType -> Const (First SigType) SigType)
-> (SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
-> Const
(First SigType)
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
forall s t a b. Field1 s t a b => Lens s t a b
Lens
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
SigType
SigType
_1) SignaturePayload
sig
sigPKA :: SignaturePayload -> Maybe PubKeyAlgorithm
sigPKA :: SignaturePayload -> Maybe PubKeyAlgorithm
sigPKA SignaturePayload
sig =
case Getting
(First
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI))
SignaturePayload
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI))
SignaturePayload
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
_SigV3 SignaturePayload
sig of
Just (SigType
_st, ThirtyTwoBitTimeStamp
_ts, EightOctetKeyId
_ekid, PubKeyAlgorithm
pka, HashAlgorithm
_ha, Word16
_w16, NonEmpty MPI
_mpis) -> PubKeyAlgorithm -> Maybe PubKeyAlgorithm
forall a. a -> Maybe a
Just PubKeyAlgorithm
pka
Maybe
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
_ -> case Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
_SigV4 SignaturePayload
sig of
Just (SigType
_st, PubKeyAlgorithm
pka, HashAlgorithm
_ha, [SigSubPacket]
_hsps, [SigSubPacket]
_usps, Word16
_w16, NonEmpty MPI
_mpis) -> PubKeyAlgorithm -> Maybe PubKeyAlgorithm
forall a. a -> Maybe a
Just PubKeyAlgorithm
pka
Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
_ -> case Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
_SigV6 SignaturePayload
sig of
Just (SigType
_st, PubKeyAlgorithm
pka, HashAlgorithm
_ha, SignatureSalt
_salt, [SigSubPacket]
_hsps, [SigSubPacket]
_usps, Word16
_w16, NonEmpty MPI
_mpis) -> PubKeyAlgorithm -> Maybe PubKeyAlgorithm
forall a. a -> Maybe a
Just PubKeyAlgorithm
pka
Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
_ -> Maybe PubKeyAlgorithm
forall a. Maybe a
Nothing
sigHA :: SignaturePayload -> Maybe HashAlgorithm
sigHA :: SignaturePayload -> Maybe HashAlgorithm
sigHA SignaturePayload
sig =
case Getting
(First
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI))
SignaturePayload
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI))
SignaturePayload
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
_SigV3 SignaturePayload
sig of
Just (SigType
_st, ThirtyTwoBitTimeStamp
_ts, EightOctetKeyId
_ekid, PubKeyAlgorithm
_pka, HashAlgorithm
ha, Word16
_w16, NonEmpty MPI
_mpis) -> HashAlgorithm -> Maybe HashAlgorithm
forall a. a -> Maybe a
Just HashAlgorithm
ha
Maybe
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
_ -> case Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
_SigV4 SignaturePayload
sig of
Just (SigType
_st, PubKeyAlgorithm
_pka, HashAlgorithm
ha, [SigSubPacket]
_hsps, [SigSubPacket]
_usps, Word16
_w16, NonEmpty MPI
_mpis) -> HashAlgorithm -> Maybe HashAlgorithm
forall a. a -> Maybe a
Just HashAlgorithm
ha
Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
_ -> case Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
_SigV6 SignaturePayload
sig of
Just (SigType
_st, PubKeyAlgorithm
_pka, HashAlgorithm
ha, SignatureSalt
_salt, [SigSubPacket]
_hsps, [SigSubPacket]
_usps, Word16
_w16, NonEmpty MPI
_mpis) -> HashAlgorithm -> Maybe HashAlgorithm
forall a. a -> Maybe a
Just HashAlgorithm
ha
Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
_ -> Maybe HashAlgorithm
forall a. Maybe a
Nothing
sigCT :: SignaturePayload -> Maybe ThirtyTwoBitTimeStamp
sigCT :: SignaturePayload -> Maybe ThirtyTwoBitTimeStamp
sigCT SignaturePayload
sig =
case Getting
(First
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI))
SignaturePayload
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI))
SignaturePayload
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
_SigV3 SignaturePayload
sig of
Just (SigType
_st, ThirtyTwoBitTimeStamp
ct, EightOctetKeyId
_ekid, PubKeyAlgorithm
_pka, HashAlgorithm
_ha, Word16
_w16, NonEmpty MPI
_mpis) -> ThirtyTwoBitTimeStamp -> Maybe ThirtyTwoBitTimeStamp
forall a. a -> Maybe a
Just ThirtyTwoBitTimeStamp
ct
Maybe
(SigType, ThirtyTwoBitTimeStamp, EightOctetKeyId, PubKeyAlgorithm,
HashAlgorithm, Word16, NonEmpty MPI)
_ -> case Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
_SigV4 SignaturePayload
sig of
Just (SigType
_st, PubKeyAlgorithm
_pka, HashAlgorithm
_ha, [SigSubPacket]
hsubs, [SigSubPacket]
_usps, Word16
_w16, NonEmpty MPI
_mpis) ->
(SigSubPacket -> ThirtyTwoBitTimeStamp)
-> Maybe SigSubPacket -> Maybe ThirtyTwoBitTimeStamp
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
(\(SigSubPacket Bool
_ (SigCreationTime 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)
Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
_ -> case Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
_SigV6 SignaturePayload
sig of
Just (SigType
_st, PubKeyAlgorithm
_pka, HashAlgorithm
_ha, SignatureSalt
_salt, [SigSubPacket]
hsubs, [SigSubPacket]
_usps, Word16
_w16, NonEmpty MPI
_mpis) ->
(SigSubPacket -> ThirtyTwoBitTimeStamp)
-> Maybe SigSubPacket -> Maybe ThirtyTwoBitTimeStamp
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
(\(SigSubPacket Bool
_ (SigCreationTime 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)
Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
_ -> Maybe ThirtyTwoBitTimeStamp
forall a. Maybe a
Nothing
signatureSubpacketListsKnown
:: SignaturePayload -> Maybe ([SigSubPacket], [SigSubPacket])
signatureSubpacketListsKnown :: SignaturePayload -> Maybe ([SigSubPacket], [SigSubPacket])
signatureSubpacketListsKnown SignaturePayload
sig =
(Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
_SigV4 SignaturePayload
sig Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
-> ((SigType, PubKeyAlgorithm, HashAlgorithm, [SigSubPacket],
[SigSubPacket], Word16, NonEmpty MPI)
-> Maybe ([SigSubPacket], [SigSubPacket]))
-> Maybe ([SigSubPacket], [SigSubPacket])
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \(SigType
_, PubKeyAlgorithm
_, HashAlgorithm
_, [SigSubPacket]
h, [SigSubPacket]
u, Word16
_, NonEmpty MPI
_) -> ([SigSubPacket], [SigSubPacket])
-> Maybe ([SigSubPacket], [SigSubPacket])
forall a. a -> Maybe a
Just ([SigSubPacket]
h, [SigSubPacket]
u))
Maybe ([SigSubPacket], [SigSubPacket])
-> Maybe ([SigSubPacket], [SigSubPacket])
-> Maybe ([SigSubPacket], [SigSubPacket])
forall a. Maybe a -> Maybe a -> Maybe a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> (Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
-> SignaturePayload
-> Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
forall s (m :: * -> *) a.
MonadReader s m =>
Getting (First a) s a -> m (Maybe a)
preview Getting
(First
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI))
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
Prism'
SignaturePayload
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
_SigV6 SignaturePayload
sig Maybe
(SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
-> ((SigType, PubKeyAlgorithm, HashAlgorithm, SignatureSalt,
[SigSubPacket], [SigSubPacket], Word16, NonEmpty MPI)
-> Maybe ([SigSubPacket], [SigSubPacket]))
-> Maybe ([SigSubPacket], [SigSubPacket])
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \(SigType
_, PubKeyAlgorithm
_, HashAlgorithm
_, SignatureSalt
_, [SigSubPacket]
h, [SigSubPacket]
u, Word16
_, NonEmpty MPI
_) -> ([SigSubPacket], [SigSubPacket])
-> Maybe ([SigSubPacket], [SigSubPacket])
forall a. a -> Maybe a
Just ([SigSubPacket]
h, [SigSubPacket]
u))
signatureHashedSubpacketsKnown
:: SignaturePayload -> Maybe [SigSubPacket]
signatureHashedSubpacketsKnown :: SignaturePayload -> Maybe [SigSubPacket]
signatureHashedSubpacketsKnown SignaturePayload
sigPayload =
([SigSubPacket], [SigSubPacket]) -> [SigSubPacket]
forall a b. (a, b) -> a
fst (([SigSubPacket], [SigSubPacket]) -> [SigSubPacket])
-> Maybe ([SigSubPacket], [SigSubPacket]) -> Maybe [SigSubPacket]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> SignaturePayload -> Maybe ([SigSubPacket], [SigSubPacket])
signatureSubpacketListsKnown SignaturePayload
sigPayload