From 2812621cde2bc5367f2d34f5e8993b339ff47983 Mon Sep 17 00:00:00 2001 From: joe Date: Sat, 12 Apr 2014 03:04:52 -0400 Subject: setHome --- kiki.hs | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'kiki.hs') diff --git a/kiki.hs b/kiki.hs index b0f8b3b..59dc575 100644 --- a/kiki.hs +++ b/kiki.hs @@ -1306,11 +1306,14 @@ writeOutKeyrings lkmap db = do -- warn $ "writing "++f L.writeFile f (encode m) -cross_merge doDecrypt homespec keyrings wallets f = do +setHome spec kd = kd { homeSpec = spec + , kaction = const $ runKeyRing kd + } - let it = KeyRingData - { filesToLock = HomeSec:HomePub:map ArgFile keyrings - , homeSpec = homespec + +cross_merge doDecrypt keyrings wallets kd f = do + + let it = kd { filesToLock = HomeSec:HomePub:map ArgFile keyrings , keyringFiles = keyrings , walletFiles = wallets , kaction = go doDecrypt f @@ -1323,17 +1326,18 @@ cross_merge doDecrypt homespec keyrings wallets f = do let pass n = do ms <- mapM readp (rtRings rt) - let db0 = foldl' (uncurry . merge) Map.empty ms - fstkey = listToMaybe $ mapMaybe isSecringKey ms - where isSecringKey (fn,Message ps) - | fn== rtSecring rt = listToMaybe ps - isSecringKey _ = Nothing - grip = rtGrip rt `mplus` (fingerprint <$> fstkey) + let grip = rtGrip rt `mplus` (fingerprint <$> fstkey) + where + fstkey = listToMaybe $ mapMaybe isSecringKey ms + where isSecringKey (fn,Message ps) + | fn== rtSecring rt = listToMaybe ps + isSecringKey _ = Nothing wk = listToMaybe $ do fp <- maybeToList grip elm <- Map.toList db0 guard $ matchSpec (KeyGrip fp) elm return $ keyPacket (snd elm) + db0 = foldl' (uncurry . merge) Map.empty ms wms <- mapM (readw wk) (rtWallets rt) let ts = do maybeToList wk @@ -2408,7 +2412,9 @@ main = do putStrLn $ "keyrings = "++show keyrings -} - cross_merge decrypt ( join . take 1 <$> Map.lookup "--homedir" margs) keyrings_ wallets $ \(secfile,grip) db pubring -> do + let homespec = join . take 1 <$> Map.lookup "--homedir" margs + cross_merge decrypt keyrings_ wallets (setHome homespec KeyRing.empty) + $ \(secfile,grip) db pubring -> do use_db0 <- return db -- cgit v1.2.3