From f43b5352a547a7a8b8c4641db1e1e4b545531c0a Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Wed, 3 Jul 2019 18:51:13 -0400 Subject: use a type --- kiki.hs | 2 +- lib/KeyRing.hs | 12 ++++++++---- lib/Kiki.hs | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/kiki.hs b/kiki.hs index 1143e04..b8d5f14 100644 --- a/kiki.hs +++ b/kiki.hs @@ -359,7 +359,7 @@ show_cert keyspec wkgrip db = do #elif defined(VERSION_dataenc) qqs = map (Base64.encode . L.unpack) ds #endif - pems = map (writePEM "CERTIFICATE") qqs + pems = map (writePEM PemCertificate) qqs forM_ pems putStrLn _ -> void $ warn (keyspec ++ ": ambiguous") diff --git a/lib/KeyRing.hs b/lib/KeyRing.hs index 44c3dce..0637044 100644 --- a/lib/KeyRing.hs +++ b/lib/KeyRing.hs @@ -841,8 +841,12 @@ subkeysForExport subspec (KeyData key _ _ subkeys) = do sigtrusts in fmap fst v==Just True -writePEM :: String -> String -> String -writePEM typ dta = pem +data PemType = PemPublicKey | PemPrivateKey | PemCertificate +pemTypeString PemPublicKey = "PUBLIC KEY" +pemTypeString PemPrivateKey = "PRIVATE KEY" +pemTypeString PemCertificate = "CERTIFICATE" +writePEM :: PemType -> String -> String +writePEM (pemTypeString -> typ) dta = pem where pem = unlines . concat $ [ ["-----BEGIN " <> typ <> "-----"] @@ -898,7 +902,7 @@ pemFromPacket Sec packet = #elif defined(VERSION_dataenc) dta = Base64.encode (L.unpack bs) #endif - output = writePEM "RSA PRIVATE KEY" dta + output = writePEM PemPrivateKey dta Just output algo -> Nothing pemFromPacket Pub packet = @@ -912,7 +916,7 @@ pemFromPacket Pub packet = #elif defined(VERSION_dataenc) dta = Base64.encode (L.unpack bs) #endif - output = writePEM "PUBLIC KEY" dta + output = writePEM PemPublicKey dta Just output algo -> Nothing pemFromPacket AutoAccess p@(PublicKeyPacket {}) = pemFromPacket Pub p diff --git a/lib/Kiki.hs b/lib/Kiki.hs index 7bf0e3d..e67c805 100644 --- a/lib/Kiki.hs +++ b/lib/Kiki.hs @@ -591,7 +591,7 @@ pemFromPacket k = do qq = Base64.encode (L.unpack der) #endif return $ - writePEM "PUBLIC KEY" qq -- ("TODO "++show keyspec) + writePEM PemPublicKey qq -- ("TODO "++show keyspec) show_pem :: String -> String -> KeyDB -> IO () show_pem keyspec wkgrip db = either warn putStrLn $ show_pem' keyspec wkgrip db pemFromPacket -- cgit v1.2.3