From a6099f2263f3ac7688244b1406ea2891d429d41c Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Wed, 3 Jul 2019 15:24:53 -0400 Subject: add type sigs --- lib/Kiki.hs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'lib/Kiki.hs') diff --git a/lib/Kiki.hs b/lib/Kiki.hs index 5070389..d2da996 100644 --- a/lib/Kiki.hs +++ b/lib/Kiki.hs @@ -6,8 +6,6 @@ module Kiki ) where import Control.Applicative -import Control.Arrow -import Control.Concurrent import Control.Exception import Control.Monad import Data.ASN1.BinaryEncoding @@ -18,7 +16,6 @@ import Data.Bool import Data.Char import Data.List import Data.Maybe -import Data.Monoid import Data.OpenPGP import Data.OpenPGP.Util import Data.Ord @@ -32,7 +29,6 @@ import System.Posix.Files import System.Posix.Types (FileMode) import System.Posix.IO as Posix (createPipe) import System.Posix.User -import System.Process #if defined(VERSION_memory) import Data.ByteArray.Encoding import qualified Data.ByteString.Char8 as S8 @@ -55,11 +51,13 @@ withAgent :: [PassphraseSpec] -> [PassphraseSpec] withAgent [] = [PassphraseAgent] withAgent ps = ps +ciphername :: SymmetricAlgorithm -> String ciphername Unencrypted = "-" ciphername TripleDES = "3des" ciphername (SymmetricAlgorithm w8) = "cipher-"++show w8 ciphername c = map toLower $ show c +cipherFromString :: String -> SymmetricAlgorithm cipherFromString "clear" = Unencrypted cipherFromString "unencrypted" = Unencrypted cipherFromString s = @@ -572,6 +570,7 @@ strongswanForContact addr oname rightip = Char8.unlines -- rightid=fdcc:76c8:cb34:74e6:2aa3:cb39:abc8:d403 -- rightrsasigkey=hiotuxliwisbp6mi.onion.pem +showA :: SockAddr -> String showA addr = if null bracket then pre else drop 1 pre where (pre,bracket) = break (==']') (show addr) @@ -582,6 +581,7 @@ sortOn f = map snd . sortBy (comparing fst) . map (\x -> let y = f x in y `seq` (y, x)) #endif +pemFromPacket :: Monad m => Packet -> m String pemFromPacket k = do let rsa = pkcs8 . fromJust $ rsaKeyFromPacket k der = encodeASN1 DER (toASN1 rsa []) @@ -593,18 +593,23 @@ pemFromPacket k = do return $ writePEM "PUBLIC KEY" qq -- ("TODO "++show keyspec) +show_pem :: String -> String -> KeyDB -> IO () show_pem keyspec wkgrip db = either warn putStrLn $ show_pem' keyspec wkgrip db pemFromPacket +show_pem' :: String -> String -> KeyDB -> (Packet -> Either String b) -> Either String b show_pem' keyspec wkgrip db keyfmt = do let s = parseSpec wkgrip keyspec flip (maybe . Left $ keyspec ++ ": not found") (selectPublicKey s db) keyfmt +warn :: String -> IO () warn str = hPutStrLn stderr str +show_ssh :: String -> String -> KeyDB -> IO () show_ssh keyspec wkgrip db = either warn putStrLn $ show_ssh' keyspec wkgrip db +show_ssh' :: String -> String -> KeyDB -> Either String String show_ssh' keyspec wkgrip db = do let s = parseSpec wkgrip keyspec flip (maybe . Left $ keyspec ++ ": not found") @@ -613,6 +618,7 @@ show_ssh' keyspec wkgrip db = do -- | -- interpolate %var patterns in a string. +interp :: Map.Map String String -> String -> String interp vars raw = es >>= interp1 where gs = groupBy (\_ c -> c/='%') raw @@ -625,8 +631,10 @@ interp vars raw = es >>= interp1 where (key,rest) = break (==')') str interp1 plain = plain +sshblobFromPacket :: Packet -> String sshblobFromPacket k = Char8.unpack $ fromJust $ sshblobFromPacketL k +sshblobFromPacketL :: Packet -> Maybe Char8.ByteString sshblobFromPacketL k = do RSAKey (MPI n) (MPI e) <- rsaKeyFromPacket k return $ SSH.keyblob (n,e) -- cgit v1.2.3