From f5d20a324b5aef4e14281d969de8677352956b6b Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Tue, 4 Sep 2018 23:36:23 -0400 Subject: Tox cookie: Generic & Hashable instances. --- src/Network/Tox/DHT/Transport.hs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/Network/Tox/DHT/Transport.hs') diff --git a/src/Network/Tox/DHT/Transport.hs b/src/Network/Tox/DHT/Transport.hs index 0c69ea8b..e784ec90 100644 --- a/src/Network/Tox/DHT/Transport.hs +++ b/src/Network/Tox/DHT/Transport.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} @@ -47,11 +48,13 @@ import Data.Bool import qualified Data.ByteString as B ;import Data.ByteString (ByteString) import Data.Functor.Contravariant +import Data.Hashable import Data.Maybe import Data.Monoid import Data.Serialize as S import Data.Tuple import Data.Word +import GHC.Generics import Network.Socket type DHTTransport = Transport String NodeInfo (DHTMessage Encrypted8) @@ -358,6 +361,9 @@ data Cookie (f :: * -> *) = Cookie Nonce24 (f CookieData) deriving instance Eq (f CookieData) => Eq (Cookie f) deriving instance Ord (f CookieData) => Ord (Cookie f) deriving instance Show (f CookieData) => Show (Cookie f) +deriving instance Generic (f CookieData) => Generic (Cookie f) + +instance Hashable (Cookie Encrypted) instance Sized (Cookie Encrypted) where size = ConstSize 112 -- 24 byte nonce + 88 byte cookie data @@ -370,7 +376,7 @@ data CookieData = CookieData -- 16 (mac) , longTermKey :: PublicKey -- 32 , dhtKey :: PublicKey -- + 32 } -- = 88 bytes when encrypted. - deriving Show + deriving (Show, Generic) instance Sized CookieData where size = ConstSize 72 -- cgit v1.2.3