diff options
Diffstat (limited to 'keysafe.hs')
-rw-r--r-- | keysafe.hs | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -197,23 +197,27 @@ restore storagelocations ui possibletunables secretkeydest = do <> castCost (getDecryptionCost candidatekeys) case combineShares tunables [shares] of Left e -> showError ui e - Right esk -> withProgress ui "Decrypting" - (decryptdesc cost) $ \setpercent -> - go tunables [shares] sis setpercent $ - tryDecrypt candidatekeys esk + Right esk -> do + final <- withProgress ui "Decrypting" + (decryptdesc cost) $ \setpercent -> + go tunables [shares] sis setpercent $ + tryDecrypt candidatekeys esk + final where go tunables firstshares sis setpercent r = case r of - DecryptFailed -> showError ui "Decryption failed! Unknown why it would fail at this point." + DecryptFailed -> return $ + showError ui "Decryption failed! Unknown why it would fail at this point." DecryptSuccess secretkey -> do _ <- setpercent 100 writeSecretKey secretkeydest secretkey - showInfo ui "Success" "Your secret key successfully restored!" + return $ + showInfo ui "Success" "Your secret key successfully restored!" DecryptIncomplete kek -> do -- Download shares for another chunk. (nextshares, sis') <- retrieveShares storagelocations sis (return ()) let shares = firstshares ++ [nextshares] case combineShares tunables shares of - Left e -> showError ui e + Left e -> return $ showError ui e Right esk -> go tunables shares sis' setpercent $ decrypt kek esk |