summaryrefslogtreecommitdiffhomepage
path: root/keysafe.hs
diff options
context:
space:
mode:
Diffstat (limited to 'keysafe.hs')
-rw-r--r--keysafe.hs18
1 files changed, 11 insertions, 7 deletions
diff --git a/keysafe.hs b/keysafe.hs
index 7ec211f..9ebbd75 100644
--- a/keysafe.hs
+++ b/keysafe.hs
@@ -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