From 6f2d6120533070ce48bbc1e12465d1f7d603aec8 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 7 Aug 2016 17:24:56 -0400 Subject: sharding --- Types.hs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'Types.hs') diff --git a/Types.hs b/Types.hs index 8787273..b4d68f4 100644 --- a/Types.hs +++ b/Types.hs @@ -1,9 +1,12 @@ -{-# LANGUAGE OverloadedStrings, GeneralizedNewtypeDeriving #-} +{-# LANGUAGE OverloadedStrings, GeneralizedNewtypeDeriving, MultiParamTypeClasses, FlexibleInstances #-} module Types where +import Cost +import Entropy import qualified Data.ByteString as B import qualified Data.ByteString.Char8 as B8 +import qualified Data.ByteString.Lazy as BL import Raaz.Core.Encode import Data.Monoid import Data.Word @@ -11,10 +14,29 @@ import Data.Time.Clock import Data.String import Text.Read +-- | keysafe stores secret keys. +newtype SecretKey = SecretKey B.ByteString + +-- | The secret key, encrypted with a password. +data EncryptedSecretKey = EncryptedSecretKey B.ByteString (CostCalc BruteForceOp UnknownPassword) + +instance Bruteforceable EncryptedSecretKey UnknownPassword where + getBruteCostCalc (EncryptedSecretKey _ cc) = cc + +-- | An object that can be stored on a keysafe server. +data StorableObject = StorableObject BL.ByteString + -- | A password used to encrypt a key stored in keysafe. newtype Password = Password B.ByteString deriving (IsString) +-- | Naive calculation of the entropy of a password. +-- Does not take common passwords and password generation patterns into +-- account, so this is an overestimation of how hard a password +-- is to crack. +passwordEntropy :: Password -> Entropy UnknownPassword +passwordEntropy (Password p) = Entropy $ floor $ totalEntropy p + -- | A name associated with a key stored in keysafe. newtype Name = Name B.ByteString deriving (Show) -- cgit v1.2.3