From bf71e5f4d875806e8f2623d95545c8b7a7c2d8f4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 11 Apr 2017 13:12:37 -0400 Subject: some basic data types and hashing to start debug-me This commit was sponsored by Denis Dzyubenko on Patreon. --- Types.hs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Types.hs (limited to 'Types.hs') diff --git a/Types.hs b/Types.hs new file mode 100644 index 0000000..c41e30a --- /dev/null +++ b/Types.hs @@ -0,0 +1,35 @@ +module Types where + +import Data.ByteString +import Crypto.Hash as H + +-- | Things that the developer sees. +data Seen = Seen + { seenData :: ByteString + } + deriving (Show) + +-- | Things that the developer enters. +data Entered = Entered + { enteredData :: ByteString + , echoData :: ByteString + -- ^ Data that is expected to be Seen, but has not been received + -- at the time this was entered. + } + deriving (Show) + +-- | An activity (either Entered or Seen) with a pointer +-- to the Activity before this one. +-- +-- The Signature is over both the data in the activity, and its pointer. +data Activity a + = Activity a HashPointer Signature + | StartActivity a Signature + deriving (Show) + +data Signature = Signature ByteString + deriving (Show) + +-- | A SHA2 hash pointer to something that hashes to this value. +newtype HashPointer = HashPointer (H.Digest H.SHA256) + deriving (Show) -- cgit v1.2.3