diff options
Diffstat (limited to 'lib/PacketTranscoder.hs')
-rw-r--r-- | lib/PacketTranscoder.hs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/PacketTranscoder.hs b/lib/PacketTranscoder.hs index 07f235c..6d1d9b8 100644 --- a/lib/PacketTranscoder.hs +++ b/lib/PacketTranscoder.hs | |||
@@ -19,6 +19,7 @@ import System.IO ( stderr) | |||
19 | import System.Posix.IO ( fdToHandle ) | 19 | import System.Posix.IO ( fdToHandle ) |
20 | import Text.Show.Pretty as PP ( ppShow ) | 20 | import Text.Show.Pretty as PP ( ppShow ) |
21 | import Types | 21 | import Types |
22 | import ControlMaybe (handleIO_) | ||
22 | 23 | ||
23 | -- | Merge two representations of the same key, prefering secret version | 24 | -- | Merge two representations of the same key, prefering secret version |
24 | -- because they have more information. | 25 | -- because they have more information. |
@@ -168,6 +169,7 @@ makeMemoizingDecrypter operation ctx (workingkey,keys) = do | |||
168 | -- in the 'locations' field, so this would effectively | 169 | -- in the 'locations' field, so this would effectively |
169 | -- allow you to run 'decryptIt' on an unencrypted public key | 170 | -- allow you to run 'decryptIt' on an unencrypted public key |
170 | -- to obtain it's secret key. | 171 | -- to obtain it's secret key. |
172 | handleIO_ (decryptIt []) $ do | ||
171 | (pw,wants_retry) <- getpw (count,qry) | 173 | (pw,wants_retry) <- getpw (count,qry) |
172 | let wkun = fromMaybe wk $ do | 174 | let wkun = fromMaybe wk $ do |
173 | guard $ symmetric_algorithm (packet mp) /= Unencrypted | 175 | guard $ symmetric_algorithm (packet mp) /= Unencrypted |
@@ -218,11 +220,12 @@ makeMemoizingDecrypter operation ctx (workingkey,keys) = do | |||
218 | | otherwise = return () | 220 | | otherwise = return () |
219 | clear | 221 | clear |
220 | let sanitizeQry qry = (fingerprint $ queryPacket qry, queryUID qry, fmap fingerprint $ queryMainKey qry) | 222 | let sanitizeQry qry = (fingerprint $ queryPacket qry, queryUID qry, fmap fingerprint $ queryMainKey qry) |
221 | putStrLn $ "(count,firsttime,ask,qry,actual_qry)="++show (count,firsttime,ask,sanitizeQry qry, sanitizeQry actual_qry) | 223 | -- putStrLn $ "(count,firsttime,ask,qry,actual_qry)="++show (count,firsttime,ask,sanitizeQry qry, sanitizeQry actual_qry) |
222 | mbpw <- getPassphrase s ask actual_qry | 224 | mbpw <- getPassphrase s ask actual_qry |
223 | quit s | 225 | quit s |
224 | return ( maybe "" S8.pack mbpw, guard (ask /= AskNew) >> Just clear ) | 226 | return ( maybe "" S8.pack mbpw, guard (ask /= AskNew) >> Just clear ) |
225 | 227 | ||
228 | -- putStrLn $ concat [show (symmetric_algorithm wk,s2k wk)," --> ",show (dest_alg,dest_s2k)] | ||
226 | if symmetric_algorithm wk == dest_alg | 229 | if symmetric_algorithm wk == dest_alg |
227 | && ( symmetric_algorithm wk == Unencrypted || s2k wk == dest_s2k ) | 230 | && ( symmetric_algorithm wk == Unencrypted || s2k wk == dest_s2k ) |
228 | then return (KikiSuccess wk) | 231 | then return (KikiSuccess wk) |