From 78cb83e2f4918bbc199e06e06f2dbbd816b4dcbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 2 Nov 2019 21:43:56 +0100 Subject: Create identity with device name and without owner --- src/State.hs | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/State.hs b/src/State.hs index 272044a..91fff2b 100644 --- a/src/State.hs +++ b/src/State.hs @@ -8,6 +8,7 @@ module State ( ) where import Data.List +import Data.Maybe import qualified Data.Text as T import qualified Data.Text.IO as T @@ -57,21 +58,34 @@ loadLocalState st = loadHeadDef st "erebos" $ do hFlush stdout name <- T.getLine - (secret, public) <- generateKeys st - (_secretMsg, publicMsg) <- generateKeys st + putStr "Device: " + hFlush stdout + devName <- T.getLine + + (owner, secret) <- if + | T.null name -> return (Nothing, Nothing) + | otherwise -> do + (secret, public) <- generateKeys st + (_secretMsg, publicMsg) <- generateKeys st + + return . (, Just secret) . Just =<< wrappedStore st =<< sign secret =<< + wrappedStore st (emptyIdentityData public) + { iddName = Just name, iddKeyMessage = Just publicMsg } + (devSecret, devPublic) <- generateKeys st (_devSecretMsg, devPublicMsg) <- generateKeys st - owner <- wrappedStore st =<< sign secret =<< wrappedStore st (emptyIdentityData public) - { iddName = Just name, iddKeyMessage = Just publicMsg } - identity <- wrappedStore st =<< signAdd devSecret =<< sign secret =<< wrappedStore st (emptyIdentityData devPublic) - { iddOwner = Just owner, iddKeyMessage = Just devPublicMsg } + identity <- wrappedStore st =<< maybe return signAdd secret =<< sign devSecret =<< wrappedStore st (emptyIdentityData devPublic) + { iddName = if T.null devName then Nothing else Just devName + , iddOwner = owner + , iddKeyMessage = Just devPublicMsg + } msgs <- emptySList st shared <- wrappedStore st $ SharedState { ssPrev = [] - , ssIdentity = [owner] + , ssIdentity = [fromMaybe identity owner] } return $ LocalState { lsIdentity = identity -- cgit v1.2.3