-- Ontology.hs: OpenPGP (RFC4880) "is" functions
-- Copyright © 2012-2019  Clint Adams
-- This software is released under the terms of the Expat license.
-- (See the LICENSE file).
module Codec.Encryption.OpenPGP.Ontology
  (
 -- * for signature payloads
    isCertRevocationSig
  , isRevokerP
  , isPKBindingSig
  , isSKBindingSig
  , isSubkeyBindingSig
  , isSubkeyRevocation
  , isTrustPkt
 -- * for signature subpackets
  , isCT
  , isIssuerSSP
  , isIssuerFPSSP
  , isKET
  , isKUF
  , isPHA
  , isRevocationKeySSP
  , isSigCreationTime
  ) where

import Codec.Encryption.OpenPGP.Types

isCertRevocationSig :: SignaturePayload -> Bool
isCertRevocationSig :: SignaturePayload -> Bool
isCertRevocationSig (SigV4 SigType
CertRevocationSig PubKeyAlgorithm
_ HashAlgorithm
_ [SigSubPacket]
_ [SigSubPacket]
_ Word16
_ NonEmpty MPI
_) = Bool
True
isCertRevocationSig SignaturePayload
_ = Bool
False

isRevokerP :: SignaturePayload -> Bool
isRevokerP :: SignaturePayload -> Bool
isRevokerP (SigV4 SigType
SignatureDirectlyOnAKey PubKeyAlgorithm
_ HashAlgorithm
_ [SigSubPacket]
h [SigSubPacket]
u Word16
_ NonEmpty MPI
_) =
  (SigSubPacket -> Bool) -> [SigSubPacket] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any SigSubPacket -> Bool
isRevocationKeySSP [SigSubPacket]
h Bool -> Bool -> Bool
&& (SigSubPacket -> Bool) -> [SigSubPacket] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any SigSubPacket -> Bool
isIssuerSSP [SigSubPacket]
u
isRevokerP SignaturePayload
_ = Bool
False

isPKBindingSig :: SignaturePayload -> Bool
isPKBindingSig :: SignaturePayload -> Bool
isPKBindingSig (SigV4 SigType
PrimaryKeyBindingSig PubKeyAlgorithm
_ HashAlgorithm
_ [SigSubPacket]
_ [SigSubPacket]
_ Word16
_ NonEmpty MPI
_) = Bool
True
isPKBindingSig SignaturePayload
_ = Bool
False

isSKBindingSig :: SignaturePayload -> Bool
isSKBindingSig :: SignaturePayload -> Bool
isSKBindingSig (SigV4 SigType
SubkeyBindingSig PubKeyAlgorithm
_ HashAlgorithm
_ [SigSubPacket]
_ [SigSubPacket]
_ Word16
_ NonEmpty MPI
_) = Bool
True
isSKBindingSig SignaturePayload
_ = Bool
False

isSubkeyRevocation :: SignaturePayload -> Bool
isSubkeyRevocation :: SignaturePayload -> Bool
isSubkeyRevocation (SigV4 SigType
SubkeyRevocationSig PubKeyAlgorithm
_ HashAlgorithm
_ [SigSubPacket]
_ [SigSubPacket]
_ Word16
_ NonEmpty MPI
_) = Bool
True
isSubkeyRevocation SignaturePayload
_ = Bool
False

isSubkeyBindingSig :: SignaturePayload -> Bool
isSubkeyBindingSig :: SignaturePayload -> Bool
isSubkeyBindingSig (SigV4 SigType
SubkeyBindingSig PubKeyAlgorithm
_ HashAlgorithm
_ [SigSubPacket]
_ [SigSubPacket]
_ Word16
_ NonEmpty MPI
_) = Bool
True
isSubkeyBindingSig SignaturePayload
_ = Bool
False

isTrustPkt :: Pkt -> Bool
isTrustPkt :: Pkt -> Bool
isTrustPkt (TrustPkt ByteString
_) = Bool
True
isTrustPkt Pkt
_ = Bool
False

isCT :: SigSubPacket -> Bool
isCT :: SigSubPacket -> Bool
isCT (SigSubPacket Bool
_ (SigCreationTime ThirtyTwoBitTimeStamp
_)) = Bool
True
isCT SigSubPacket
_ = Bool
False

isIssuerSSP :: SigSubPacket -> Bool
isIssuerSSP :: SigSubPacket -> Bool
isIssuerSSP (SigSubPacket Bool
_ (Issuer EightOctetKeyId
_)) = Bool
True
isIssuerSSP SigSubPacket
_ = Bool
False

isIssuerFPSSP :: SigSubPacket -> Bool
isIssuerFPSSP :: SigSubPacket -> Bool
isIssuerFPSSP (SigSubPacket Bool
_ (IssuerFingerprint Word8
_ TwentyOctetFingerprint
_)) = Bool
True
isIssuerFPSSP SigSubPacket
_ = Bool
False

isKET :: SigSubPacket -> Bool
isKET :: SigSubPacket -> Bool
isKET (SigSubPacket Bool
_ (KeyExpirationTime ThirtyTwoBitDuration
_)) = Bool
True
isKET SigSubPacket
_ = Bool
False

isKUF :: SigSubPacket -> Bool
isKUF :: SigSubPacket -> Bool
isKUF (SigSubPacket Bool
_ (KeyFlags Set KeyFlag
_)) = Bool
True
isKUF SigSubPacket
_ = Bool
False

isPHA :: SigSubPacket -> Bool
isPHA :: SigSubPacket -> Bool
isPHA (SigSubPacket Bool
_ (PreferredHashAlgorithms [HashAlgorithm]
_)) = Bool
True
isPHA SigSubPacket
_ = Bool
False

isRevocationKeySSP :: SigSubPacket -> Bool
isRevocationKeySSP :: SigSubPacket -> Bool
isRevocationKeySSP (SigSubPacket Bool
_ RevocationKey {}) = Bool
True
isRevocationKeySSP SigSubPacket
_ = Bool
False

isSigCreationTime :: SigSubPacket -> Bool
isSigCreationTime :: SigSubPacket -> Bool
isSigCreationTime (SigSubPacket Bool
_ (SigCreationTime ThirtyTwoBitTimeStamp
_)) = Bool
True
isSigCreationTime SigSubPacket
_ = Bool
False