summaryrefslogtreecommitdiffhomepage
path: root/keysafe.hs
diff options
context:
space:
mode:
authorJoey Hess <joeyh@joeyh.name>2016-08-11 23:11:32 -0400
committerJoey Hess <joeyh@joeyh.name>2016-08-11 23:11:32 -0400
commit891347401d603ded3db2efe3a67cd289ada08cb0 (patch)
treefb0c24df9874cd7a9bc2bc3592d32a8cba74b7dc /keysafe.hs
parentc295cceb01c45e7530022b1edde970f5fbbb03c1 (diff)
downloadkeysafe-891347401d603ded3db2efe3a67cd289ada08cb0.tar.gz
guessing puzzle answers
Diffstat (limited to 'keysafe.hs')
-rw-r--r--keysafe.hs17
1 files changed, 12 insertions, 5 deletions
diff --git a/keysafe.hs b/keysafe.hs
index f78d420..d6c8792 100644
--- a/keysafe.hs
+++ b/keysafe.hs
@@ -14,6 +14,7 @@ import Cost
import Shard
import Storage
import Storage.LocalFiles
+import System.IO
main :: IO ()
main = do
@@ -47,12 +48,18 @@ retrievedemo = do
<$> mapM (uncurry (retrieveShard localFiles)) l
_ <- obscureShards localFiles
let esk = combineShards tunables shards
- kek <- genKeyEncryptionKey tunables name password
- -- TODO: need to solve the encryption puzzle
- case decrypt kek esk of
- Just (SecretKey sk) -> print sk
- Nothing -> print ("Failed" :: String, esk)
+ basekek <- genKeyEncryptionKey tunables name password
+ go esk (candidateKeyEncryptionKeys tunables basekek)
where
+ go _ [] = error "decryption failed"
+ go esk (kek:rest) = do
+ print (keyEncryptionKey kek)
+ hFlush stdout
+ case decrypt kek esk of
+ -- TODO: verify checksum to avoid false positives
+ Just (SecretKey sk) -> print sk
+ Nothing -> go esk rest
+
password = Password "correct horse battery staple"
name = Name "bar"
tunables = testModeTunables -- defaultTunables