From f74151ead49895f86257c9abfbe90c027d91d456 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Aug 2016 01:04:06 -0400 Subject: option parsing --- keysafe.hs | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'keysafe.hs') diff --git a/keysafe.hs b/keysafe.hs index faec57e..b31d377 100644 --- a/keysafe.hs +++ b/keysafe.hs @@ -9,6 +9,7 @@ module Main where import Types import Tunables +import qualified CmdLine import Encryption import Cost import Shard @@ -17,11 +18,21 @@ import Storage.LocalFiles main :: IO () main = do - storedemo - retrievedemo + cmdline <- CmdLine.get + let name = CmdLine.name cmdline + let keytype = CmdLine.keytype cmdline + -- TODO determine gpg key id by examining secret key, + -- or retrieving public key from keyserver and examining it. + let keyid = KeyId keytype "dummy key id" + case CmdLine.mode cmdline of + CmdLine.Backup -> storedemo name keyid $ + if CmdLine.testMode cmdline + then testModeTunables + else defaultTunables + CmdLine.Restore -> retrievedemo name keyid -storedemo :: IO () -storedemo = do +storedemo :: Name -> KeyId -> Tunables -> IO () +storedemo name keyid tunables = do kek <- genKeyEncryptionKey tunables name password putStrLn "Very rough estimate of cost to brute-force the password:" print $ estimateAttack spotAWS $ estimateBruteforceOf kek @@ -33,13 +44,10 @@ storedemo = do print =<< obscureShards localFiles where password = Password "correct horse battery staple" - name = Name "bar" - tunables = testModeTunables -- defaultTunables - keyid = KeyId gpgKey "foobar" secretkey = SecretKey "this is a gpg private key" -retrievedemo :: IO () -retrievedemo = do +retrievedemo :: Name -> KeyId -> IO () +retrievedemo name keyid = do let sis = shardIdents tunables name keyid -- we drop 1 to simulate not getting all shards from the servers let l = drop 1 $ zip [1..] (getIdents sis) @@ -56,6 +64,5 @@ retrievedemo = do Nothing -> go esk rest password = Password "correct horse battery staple" - name = Name "bar" + -- TODO: derive by probing to find objects tunables = testModeTunables -- defaultTunables - keyid = KeyId gpgKey "foobar" -- cgit v1.2.3