{-# LANGUAGE TypeFamilies #-}
module Crypto.Noise.DH
(
DH(..)
, KeyPair
) where
import Data.ByteArray (ScrubbedBytes)
class DH d where
data PublicKey d :: *
data SecretKey d :: *
dhName :: proxy d -> ScrubbedBytes
dhLength :: proxy d -> Int
dhGenKey :: IO (KeyPair d)
dhPerform :: SecretKey d -> PublicKey d -> ScrubbedBytes
dhPubToBytes :: PublicKey d -> ScrubbedBytes
dhBytesToPub :: ScrubbedBytes -> Maybe (PublicKey d)
dhSecToBytes :: SecretKey d -> ScrubbedBytes
dhBytesToPair :: ScrubbedBytes -> Maybe (KeyPair d)
dhPubEq :: PublicKey d -> PublicKey d -> Bool
type KeyPair d = (SecretKey d, PublicKey d)
instance DH d => Eq (PublicKey d) where
== :: PublicKey d -> PublicKey d -> Bool
(==) = PublicKey d -> PublicKey d -> Bool
forall d. DH d => PublicKey d -> PublicKey d -> Bool
dhPubEq