From becfa261ce50d9976c3720aaacd06e48488300af Mon Sep 17 00:00:00 2001 From: joe Date: Thu, 25 Aug 2016 20:36:14 -0400 Subject: decryptSecretKey now a no-op for unenciphered keys. --- Data/OpenPGP/Util/Base.hs | 6 +++++- Data/OpenPGP/Util/DecryptSecretKey.hs | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Data/OpenPGP/Util/Base.hs b/Data/OpenPGP/Util/Base.hs index aaa02c7..ed0e32c 100644 --- a/Data/OpenPGP/Util/Base.hs +++ b/Data/OpenPGP/Util/Base.hs @@ -57,7 +57,11 @@ keyParam c k = fromJustMPI $ lookup c (OpenPGP.key k) where fromJustMPI :: Maybe OpenPGP.MPI -> Integer fromJustMPI (Just (OpenPGP.MPI x)) = x - fromJustMPI _ = error "Not a Just MPI, Data.OpenPGP.CryptoAPI" + fromJustMPI _ = + case k of + PublicKeyPacket {} -> error $ "Missing "++show c++" field on "++show (key_algorithm k)++" packet." + SecretKeyPacket {} -> error $ "Missing "++show c++" field on "++show (symmetric_algorithm k) + ++" "++show (key_algorithm k)++" packet." integerBytesize :: Integer -> Int integerBytesize i = fromIntegral $ LZ.length (encode (OpenPGP.MPI i)) - 2 diff --git a/Data/OpenPGP/Util/DecryptSecretKey.hs b/Data/OpenPGP/Util/DecryptSecretKey.hs index 11627d5..9b63c8e 100644 --- a/Data/OpenPGP/Util/DecryptSecretKey.hs +++ b/Data/OpenPGP/Util/DecryptSecretKey.hs @@ -56,6 +56,8 @@ decryptSecretKey :: BS.ByteString -- ^ Passphrase -> OpenPGP.Packet -- ^ Encrypted SecretKeyPacket -> Maybe OpenPGP.Packet -- ^ Decrypted SecretKeyPacket +decryptSecretKey _ k@(OpenPGP.SecretKeyPacket { OpenPGP.symmetric_algorithm = OpenPGP.Unencrypted }) + = Just k decryptSecretKey pass k@(OpenPGP.SecretKeyPacket { OpenPGP.version = 4, OpenPGP.key_algorithm = kalgo, OpenPGP.s2k = s2k, OpenPGP.symmetric_algorithm = salgo, -- cgit v1.2.3