-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | native Haskell implementation of OpenPGP (RFC4880)
--   
--   native Haskell implementation of OpenPGP (RFC4880), plus Camellia
--   (RFC5581)
@package hOpenPGP
@version 2.5.5

module Codec.Encryption.OpenPGP.Types

module Data.Conduit.OpenPGP.Filter
conduitPktFilter :: Monad m => FilterPredicates -> Conduit Pkt m Pkt
conduitTKFilter :: Monad m => FilterPredicates -> Conduit TK m TK
data FilterPredicates

-- | fp for transferable keys
RTKFilterPredicate :: (Reader TK Bool) -> FilterPredicates

-- | fp for context-less packets
RPFilterPredicate :: (Reader Pkt Bool) -> FilterPredicates

module Codec.Encryption.OpenPGP.Ontology
isCertRevocationSig :: SignaturePayload -> Bool
isRevokerP :: SignaturePayload -> Bool
isPKBindingSig :: SignaturePayload -> Bool
isSKBindingSig :: SignaturePayload -> Bool
isSubkeyBindingSig :: SignaturePayload -> Bool
isSubkeyRevocation :: SignaturePayload -> Bool
isTrustPkt :: Pkt -> Bool
isCT :: SigSubPacket -> Bool
isIssuerSSP :: SigSubPacket -> Bool
isKET :: SigSubPacket -> Bool
isKUF :: SigSubPacket -> Bool
isPHA :: SigSubPacket -> Bool
isRevocationKeySSP :: SigSubPacket -> Bool
isSigCreationTime :: SigSubPacket -> Bool

module Codec.Encryption.OpenPGP.KeySelection
parseEightOctetKeyId :: Text -> Either String EightOctetKeyId
parseFingerprint :: Text -> Either String TwentyOctetFingerprint

module Codec.Encryption.OpenPGP.KeyInfo
pubkeySize :: PKey -> Either String Int
pkalgoAbbrev :: PubKeyAlgorithm -> String

module Codec.Encryption.OpenPGP.Serialize
putSKAddendum :: SKAddendum -> Put
getSecretKey :: PKPayload -> Get SKey

-- | Parse the packets from a ByteString, with no error reporting
parsePkts :: ByteString -> [Pkt]
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Base.SigSubPacket
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Base.CompressionAlgorithm
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Base.PubKeyAlgorithm
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Base.HashAlgorithm
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Base.SymmetricAlgorithm
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Base.MPI
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Base.SigType
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Base.UserAttrSubPacket
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Base.S2K
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.PKESK
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.Signature
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.SKESK
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.OnePassSignature
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.SecretKey
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.PublicKey
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.SecretSubkey
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.CompressedData
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.SymEncData
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.Marker
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.LiteralData
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.Trust
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.UserId
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.PublicSubkey
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.UserAttribute
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.SymEncIntegrityProtectedData
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.ModificationDetectionCode
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PacketClass.OtherPacket
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Pkt.Pkt
instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Codec.Encryption.OpenPGP.Types.Internal.Base.Block a)
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.PKITypes.PKPayload
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.Base.SignaturePayload
instance Data.Binary.Class.Binary Codec.Encryption.OpenPGP.Types.Internal.TK.TK

module Codec.Encryption.OpenPGP.Fingerprint
eightOctetKeyID :: PKPayload -> Either String EightOctetKeyId
fingerprint :: PKPayload -> TwentyOctetFingerprint

module Data.Conduit.OpenPGP.Keyring.Instances
instance Data.IxSet.Typed.Indexable Codec.Encryption.OpenPGP.Types.Internal.TK.KeyringIxs Codec.Encryption.OpenPGP.Types.Internal.TK.TK
instance GHC.Classes.Ord Codec.Encryption.OpenPGP.Types.Internal.Base.SignaturePayload
instance Data.Semigroup.Semigroup Codec.Encryption.OpenPGP.Types.Internal.TK.TK

module Codec.Encryption.OpenPGP.KeyringParser
parseAChunk :: (Monoid s, Show s) => Parser s r -> s -> ([(r, s)], Maybe (Maybe (r -> r), Parser s r)) -> (([(r, s)], Maybe (Maybe (r -> r), Parser s r)), [r])
finalizeParsing :: Monoid s => ([(r, s)], Maybe (Maybe (r -> r), Parser s r)) -> (([(r, s)], Maybe (Maybe (r -> r), Parser s r)), [r])
anyTK :: Bool -> Parser [Pkt] (Maybe TK)
data UidOrUat
I :: Text -> UidOrUat
A :: [UserAttrSubPacket] -> UidOrUat
splitUs :: [(UidOrUat, [SignaturePayload])] -> ([(Text, [SignaturePayload])], [([UserAttrSubPacket], [SignaturePayload])])
publicTK :: Bool -> Parser [Pkt] (Maybe TK)
secretTK :: Bool -> Parser [Pkt] (Maybe TK)
brokenTK :: Int -> Parser [Pkt] (Maybe TK)
pkPayload :: Parser [Pkt] (PKPayload, Maybe SKAddendum)
signature :: Bool -> [SigType] -> Parser [Pkt] [SignaturePayload]
signedUID :: Bool -> Parser [Pkt] (UidOrUat, [SignaturePayload])
signedUAt :: Bool -> Parser [Pkt] (UidOrUat, [SignaturePayload])
signedOrRevokedPubSubkey :: Bool -> Parser [Pkt] [(Pkt, [SignaturePayload])]
brokenPubSubkey :: Parser [Pkt] [(Pkt, [SignaturePayload])]
rawOrSignedOrRevokedSecSubkey :: Bool -> Parser [Pkt] [(Pkt, [SignaturePayload])]
brokenSecSubkey :: Parser [Pkt] [(Pkt, [SignaturePayload])]
skPayload :: Parser [Pkt] (PKPayload, Maybe SKAddendum)
broken :: Int -> Parser [Pkt] Pkt

-- | parse TKs from packets
parseTKs :: Bool -> [Pkt] -> [TK]
instance GHC.Show.Show Codec.Encryption.OpenPGP.KeyringParser.UidOrUat

module Codec.Encryption.OpenPGP.Signatures
verifySigWith :: (Pkt -> Maybe UTCTime -> ByteString -> Either String Verification) -> Pkt -> PktStreamContext -> Maybe UTCTime -> Either String Verification
verifyAgainstKeyring :: Keyring -> Pkt -> Maybe UTCTime -> ByteString -> Either String Verification
verifyAgainstKeys :: [TK] -> Pkt -> Maybe UTCTime -> ByteString -> Either String Verification
verifyTKWith :: (Pkt -> PktStreamContext -> Maybe UTCTime -> Either String Verification) -> Maybe UTCTime -> TK -> Either String TK

module Data.Conduit.OpenPGP.Verify
conduitVerify :: Monad m => Keyring -> Maybe UTCTime -> Conduit Pkt m (Either String Verification)

module Data.Conduit.OpenPGP.Keyring
conduitToTKs :: Monad m => Conduit Pkt m TK
conduitToTKsDropping :: Monad m => Conduit Pkt m TK
sinkKeyringMap :: Monad m => Sink TK m Keyring
instance GHC.Show.Show Data.Conduit.OpenPGP.Keyring.Phase
instance GHC.Classes.Ord Data.Conduit.OpenPGP.Keyring.Phase
instance GHC.Classes.Eq Data.Conduit.OpenPGP.Keyring.Phase

module Codec.Encryption.OpenPGP.Expirations
isTKTimeValid :: UTCTime -> TK -> Bool
getKeyExpirationTimesFromSignature :: SignaturePayload -> [ThirtyTwoBitDuration]

module Codec.Encryption.OpenPGP.Compression
decompressPkt :: Pkt -> [Pkt]
compressPkts :: CompressionAlgorithm -> [Pkt] -> Pkt

module Data.Conduit.OpenPGP.Compression
conduitCompress :: MonadThrow m => CompressionAlgorithm -> Conduit Pkt m Pkt
conduitDecompress :: MonadThrow m => Conduit Pkt m Pkt

module Codec.Encryption.OpenPGP.CFB
decrypt :: SymmetricAlgorithm -> ByteString -> ByteString -> Either String ByteString
decryptNoNonce :: SymmetricAlgorithm -> IV -> ByteString -> ByteString -> Either String ByteString
decryptOpenPGPCfb :: SymmetricAlgorithm -> ByteString -> ByteString -> Either String ByteString
encryptNoNonce :: SymmetricAlgorithm -> S2K -> IV -> ByteString -> ByteString -> Either String ByteString

module Codec.Encryption.OpenPGP.S2K
string2Key :: S2K -> Int -> ByteString -> ByteString
skesk2Key :: SKESK -> ByteString -> ByteString

module Data.Conduit.OpenPGP.Decrypt
conduitDecrypt :: (MonadBaseControl IO m, MonadResource m) => InputCallback IO -> Conduit Pkt m Pkt
instance GHC.Show.Show Data.Conduit.OpenPGP.Decrypt.RecursorState
instance GHC.Classes.Eq Data.Conduit.OpenPGP.Decrypt.RecursorState
instance Data.Default.Class.Default Data.Conduit.OpenPGP.Decrypt.RecursorState

module Codec.Encryption.OpenPGP.SecretKey
decryptPrivateKey :: (PKPayload, SKAddendum) -> ByteString -> SKAddendum

-- | 8-octet salt, IV must be length of cipher blocksize
encryptPrivateKey :: ByteString -> IV -> SKAddendum -> ByteString -> SKAddendum

-- | generates pseudo-random salt and IV
encryptPrivateKeyIO :: SKAddendum -> ByteString -> IO SKAddendum
reencryptSecretKeyIO :: SecretKey -> ByteString -> IO SecretKey
