diff options
author | Joey Hess <joeyh@joeyh.name> | 2016-08-11 23:11:32 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2016-08-11 23:11:32 -0400 |
commit | 891347401d603ded3db2efe3a67cd289ada08cb0 (patch) | |
tree | fb0c24df9874cd7a9bc2bc3592d32a8cba74b7dc /keysafe.hs | |
parent | c295cceb01c45e7530022b1edde970f5fbbb03c1 (diff) | |
download | keysafe-891347401d603ded3db2efe3a67cd289ada08cb0.tar.gz |
guessing puzzle answers
Diffstat (limited to 'keysafe.hs')
-rw-r--r-- | keysafe.hs | 17 |
1 files changed, 12 insertions, 5 deletions
@@ -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 |