bitcoin-payment-channel-0.6.0.0: src/Data/Bitcoin/PaymentChannel/Internal/Crypto/PubKey.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Data.Bitcoin.PaymentChannel.Internal.Crypto.PubKey
( IsPubKey(..)
, SendPubKey(..)
, RecvPubKey(..)
) where
import qualified Network.Haskoin.Crypto as HC
import qualified Data.Serialize as Bin
-- |Types which contain a pubkey
class Bin.Serialize a => IsPubKey a where
getPubKey :: a -> HC.PubKeyC
-- |Wrapper for value sender's public key
newtype SendPubKey = MkSendPubKey {
getSenderPK :: HC.PubKeyC
} deriving (Eq, Show, Bin.Serialize)
instance IsPubKey SendPubKey where
getPubKey = getSenderPK
-- |Wrapper for value receiver's public key
newtype RecvPubKey = MkRecvPubKey {
getReceiverPK :: HC.PubKeyC
} deriving (Eq, Show, Bin.Serialize)
instance IsPubKey RecvPubKey where
getPubKey = getReceiverPK
instance IsPubKey HC.XPubKey where
getPubKey = HC.xPubKey