-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Implementation of the OpenPGP message format -- -- This is an OpenPGP library inspired by my work on OpenPGP libraries in -- Ruby https://github.com/singpolyma/openpgp, PHP -- http://github.com/singpolyma/openpgp-php, and Python -- https://github.com/singpolyma/OpenPGP-Python. -- -- It defines types to represent OpenPGP messages as a series of packets -- and then defines instances of Data.Binary for each to facilitate -- encoding/decoding. -- -- For performing cryptography, see -- http://hackage.haskell.org/package/openpgp-crypto-api or -- http://hackage.haskell.org/package/openpgp-Crypto -- -- For dealing with ASCII armor, see -- http://hackage.haskell.org/package/openpgp-asciiarmor -- -- It is intended that you use qualified imports with this library. -- --
-- import qualified Data.OpenPGP as OpenPGP --@package openpgp @version 0.6 -- | Main implementation of the OpenPGP message format -- http://tools.ietf.org/html/rfc4880 -- -- The recommended way to import this module is: -- --
-- import qualified Data.OpenPGP as OpenPGP --module Data.OpenPGP data Packet -- | http://tools.ietf.org/html/rfc4880#section-5.1 AsymmetricSessionKeyPacket :: Word8 -> String -> KeyAlgorithm -> ByteString -> Packet version :: Packet -> Word8 key_id :: Packet -> String key_algorithm :: Packet -> KeyAlgorithm encrypted_data :: Packet -> ByteString -- | http://tools.ietf.org/html/rfc4880#section-5.3 SymmetricSessionKeyPacket :: Word8 -> SymmetricAlgorithm -> S2K -> ByteString -> Packet version :: Packet -> Word8 symmetric_algorithm :: Packet -> SymmetricAlgorithm -- | This is meaningless if symmetric_algorithm == Unencrypted s2k :: Packet -> S2K encrypted_data :: Packet -> ByteString -- | http://tools.ietf.org/html/rfc4880#section-5.4 OnePassSignaturePacket :: Word8 -> Word8 -> HashAlgorithm -> KeyAlgorithm -> String -> Word8 -> Packet version :: Packet -> Word8 signature_type :: Packet -> Word8 hash_algorithm :: Packet -> HashAlgorithm key_algorithm :: Packet -> KeyAlgorithm key_id :: Packet -> String nested :: Packet -> Word8 -- | http://tools.ietf.org/html/rfc4880#section-5.5.1.1 (also -- subkey) PublicKeyPacket :: Word8 -> Word32 -> KeyAlgorithm -> [(Char, MPI)] -> Bool -> Maybe Word16 -> Packet version :: Packet -> Word8 timestamp :: Packet -> Word32 key_algorithm :: Packet -> KeyAlgorithm key :: Packet -> [(Char, MPI)] is_subkey :: Packet -> Bool v3_days_of_validity :: Packet -> Maybe Word16 -- | http://tools.ietf.org/html/rfc4880#section-5.5.1.3 (also -- subkey) SecretKeyPacket :: Word8 -> Word32 -> KeyAlgorithm -> [(Char, MPI)] -> Word8 -> S2K -> SymmetricAlgorithm -> ByteString -> Bool -> Packet version :: Packet -> Word8 timestamp :: Packet -> Word32 key_algorithm :: Packet -> KeyAlgorithm key :: Packet -> [(Char, MPI)] s2k_useage :: Packet -> Word8 -- | This is meaningless if symmetric_algorithm == Unencrypted s2k :: Packet -> S2K symmetric_algorithm :: Packet -> SymmetricAlgorithm encrypted_data :: Packet -> ByteString is_subkey :: Packet -> Bool -- | http://tools.ietf.org/html/rfc4880#section-5.6 CompressedDataPacket :: CompressionAlgorithm -> Message -> Packet compression_algorithm :: Packet -> CompressionAlgorithm message :: Packet -> Message -- | http://tools.ietf.org/html/rfc4880#section-5.8 MarkerPacket :: Packet -- | http://tools.ietf.org/html/rfc4880#section-5.9 LiteralDataPacket :: Char -> String -> Word32 -> ByteString -> Packet format :: Packet -> Char filename :: Packet -> String timestamp :: Packet -> Word32 content :: Packet -> ByteString -- | http://tools.ietf.org/html/rfc4880#section-5.10 TrustPacket :: ByteString -> Packet -- | http://tools.ietf.org/html/rfc4880#section-5.11 UserIDPacket :: String -> Packet -- | http://tools.ietf.org/html/rfc4880#section-5.13 or -- http://tools.ietf.org/html/rfc4880#section-5.7 when version is -- 0 EncryptedDataPacket :: Word8 -> ByteString -> Packet version :: Packet -> Word8 encrypted_data :: Packet -> ByteString -- | http://tools.ietf.org/html/rfc4880#section-5.14 ModificationDetectionCodePacket :: ByteString -> Packet UnsupportedPacket :: Word8 -> ByteString -> Packet isSignaturePacket :: Packet -> Bool -- | SignaturePacket smart constructor -- -- http://tools.ietf.org/html/rfc4880#section-5.2 signaturePacket :: Word8 -> Word8 -> KeyAlgorithm -> HashAlgorithm -> [SignatureSubpacket] -> [SignatureSubpacket] -> Word16 -> [MPI] -> Packet -- | A message is encoded as a list that takes the entire file newtype Message Message :: [Packet] -> Message -- | http://tools.ietf.org/html/rfc4880#section-5.2.3.1 data SignatureSubpacket SignatureCreationTimePacket :: Word32 -> SignatureSubpacket -- | seconds after CreationTime SignatureExpirationTimePacket :: Word32 -> SignatureSubpacket ExportableCertificationPacket :: Bool -> SignatureSubpacket TrustSignaturePacket :: Word8 -> Word8 -> SignatureSubpacket depth :: SignatureSubpacket -> Word8 trust :: SignatureSubpacket -> Word8 RegularExpressionPacket :: String -> SignatureSubpacket RevocablePacket :: Bool -> SignatureSubpacket -- | seconds after key CreationTime KeyExpirationTimePacket :: Word32 -> SignatureSubpacket PreferredSymmetricAlgorithmsPacket :: [SymmetricAlgorithm] -> SignatureSubpacket RevocationKeyPacket :: Bool -> KeyAlgorithm -> String -> SignatureSubpacket sensitive :: SignatureSubpacket -> Bool revocation_key_algorithm :: SignatureSubpacket -> KeyAlgorithm revocation_key_fingerprint :: SignatureSubpacket -> String IssuerPacket :: String -> SignatureSubpacket NotationDataPacket :: Bool -> String -> String -> SignatureSubpacket human_readable :: SignatureSubpacket -> Bool notation_name :: SignatureSubpacket -> String notation_value :: SignatureSubpacket -> String PreferredHashAlgorithmsPacket :: [HashAlgorithm] -> SignatureSubpacket PreferredCompressionAlgorithmsPacket :: [CompressionAlgorithm] -> SignatureSubpacket KeyServerPreferencesPacket :: Bool -> SignatureSubpacket keyserver_no_modify :: SignatureSubpacket -> Bool PreferredKeyServerPacket :: String -> SignatureSubpacket PrimaryUserIDPacket :: Bool -> SignatureSubpacket PolicyURIPacket :: String -> SignatureSubpacket KeyFlagsPacket :: Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> SignatureSubpacket certify_keys :: SignatureSubpacket -> Bool sign_data :: SignatureSubpacket -> Bool encrypt_communication :: SignatureSubpacket -> Bool encrypt_storage :: SignatureSubpacket -> Bool split_key :: SignatureSubpacket -> Bool authentication :: SignatureSubpacket -> Bool group_key :: SignatureSubpacket -> Bool SignerUserIDPacket :: String -> SignatureSubpacket ReasonForRevocationPacket :: RevocationCode -> String -> SignatureSubpacket FeaturesPacket :: Bool -> SignatureSubpacket supports_mdc :: SignatureSubpacket -> Bool SignatureTargetPacket :: KeyAlgorithm -> HashAlgorithm -> ByteString -> SignatureSubpacket target_key_algorithm :: SignatureSubpacket -> KeyAlgorithm target_hash_algorithm :: SignatureSubpacket -> HashAlgorithm hash :: SignatureSubpacket -> ByteString EmbeddedSignaturePacket :: Packet -> SignatureSubpacket UnsupportedSignatureSubpacket :: Word8 -> ByteString -> SignatureSubpacket data S2K SimpleS2K :: HashAlgorithm -> S2K SaltedS2K :: HashAlgorithm -> Word64 -> S2K IteratedSaltedS2K :: HashAlgorithm -> Word64 -> Word32 -> S2K S2K :: Word8 -> ByteString -> S2K -- | Take a hash function and an S2K value and generate the bytes -- needed for creating a symmetric key. -- -- Return value is always infinite length. Take the first n bytes you -- need for your keysize. string2key :: (HashAlgorithm -> ByteString -> ByteString) -> S2K -> ByteString -> ByteString data HashAlgorithm MD5 :: HashAlgorithm SHA1 :: HashAlgorithm RIPEMD160 :: HashAlgorithm SHA256 :: HashAlgorithm SHA384 :: HashAlgorithm SHA512 :: HashAlgorithm SHA224 :: HashAlgorithm HashAlgorithm :: Word8 -> HashAlgorithm data KeyAlgorithm RSA :: KeyAlgorithm RSA_E :: KeyAlgorithm RSA_S :: KeyAlgorithm ELGAMAL :: KeyAlgorithm DSA :: KeyAlgorithm ECC :: KeyAlgorithm ECDSA :: KeyAlgorithm DH :: KeyAlgorithm KeyAlgorithm :: Word8 -> KeyAlgorithm data SymmetricAlgorithm Unencrypted :: SymmetricAlgorithm IDEA :: SymmetricAlgorithm TripleDES :: SymmetricAlgorithm CAST5 :: SymmetricAlgorithm Blowfish :: SymmetricAlgorithm AES128 :: SymmetricAlgorithm AES192 :: SymmetricAlgorithm AES256 :: SymmetricAlgorithm Twofish :: SymmetricAlgorithm SymmetricAlgorithm :: Word8 -> SymmetricAlgorithm data CompressionAlgorithm Uncompressed :: CompressionAlgorithm ZIP :: CompressionAlgorithm ZLIB :: CompressionAlgorithm BZip2 :: CompressionAlgorithm CompressionAlgorithm :: Word8 -> CompressionAlgorithm data RevocationCode NoReason :: RevocationCode KeySuperseded :: RevocationCode KeyCompromised :: RevocationCode KeyRetired :: RevocationCode UserIDInvalid :: RevocationCode RevocationCode :: Word8 -> RevocationCode -- | http://tools.ietf.org/html/rfc4880#section-3.2 newtype MPI MPI :: Integer -> MPI -- | Find a key with the given Fingerprint/KeyID find_key :: (Packet -> String) -> Message -> String -> Maybe Packet -- | Helper method for fingerprints and such fingerprint_material :: Packet -> [ByteString] -- | Data needed to verify a signature data SignatureOver DataSignature :: Packet -> [Packet] -> SignatureOver literal :: SignatureOver -> Packet signatures_over :: SignatureOver -> [Packet] KeySignature :: Packet -> [Packet] -> SignatureOver topkey :: SignatureOver -> Packet signatures_over :: SignatureOver -> [Packet] SubkeySignature :: Packet -> Packet -> [Packet] -> SignatureOver topkey :: SignatureOver -> Packet subkey :: SignatureOver -> Packet signatures_over :: SignatureOver -> [Packet] CertificationSignature :: Packet -> Packet -> [Packet] -> SignatureOver topkey :: SignatureOver -> Packet user_id :: SignatureOver -> Packet signatures_over :: SignatureOver -> [Packet] -- | Extract signed objects from a well-formatted message -- -- Recurses into CompressedDataPacket -- -- http://tools.ietf.org/html/rfc4880#section-11 signatures :: Message -> [SignatureOver] -- | Find the keyid that issued a SignaturePacket signature_issuer :: Packet -> Maybe String public_key_fields :: KeyAlgorithm -> [Char] secret_key_fields :: KeyAlgorithm -> [Char] instance Show HashAlgorithm instance Read HashAlgorithm instance Eq HashAlgorithm instance Show S2K instance Read S2K instance Eq S2K instance Show KeyAlgorithm instance Read KeyAlgorithm instance Eq KeyAlgorithm instance Show SymmetricAlgorithm instance Read SymmetricAlgorithm instance Eq SymmetricAlgorithm instance Show CompressionAlgorithm instance Read CompressionAlgorithm instance Eq CompressionAlgorithm instance Show RevocationCode instance Read RevocationCode instance Eq RevocationCode instance Show MPI instance Read MPI instance Eq MPI instance Ord MPI instance Show SignatureSubpacket instance Read SignatureSubpacket instance Eq SignatureSubpacket instance Show Packet instance Read Packet instance Eq Packet instance Show Message instance Read Message instance Eq Message instance Show SignatureOver instance Read SignatureOver instance Eq SignatureOver instance Binary SignatureSubpacket instance Binary MPI instance Binary SignatureOver instance Monoid Message instance Binary Message instance Binary RevocationCode instance Enum RevocationCode instance Binary CompressionAlgorithm instance Enum CompressionAlgorithm instance Binary SymmetricAlgorithm instance Enum SymmetricAlgorithm instance Binary KeyAlgorithm instance Enum KeyAlgorithm instance Binary HashAlgorithm instance Enum HashAlgorithm instance Binary S2K instance Binary Packet