-- |
-- Module      : Network.TLS.Crypto.Types
-- License     : BSD-style
-- Maintainer  : Kazu Yamamoto <kazu@iij.ad.jp>
-- Stability   : experimental
-- Portability : unknown
--
module Network.TLS.Crypto.Types where

data Group = P256 | P384 | P521 | X25519 | X448
           | FFDHE2048 | FFDHE3072 | FFDHE4096 | FFDHE6144 | FFDHE8192
           deriving (Eq, Show)

availableFFGroups :: [Group]
availableFFGroups = [FFDHE2048,FFDHE3072,FFDHE4096,FFDHE6144,FFDHE8192]

availableECGroups :: [Group]
availableECGroups = [P256,P384,P521,X25519,X448]

availableGroups :: [Group]
availableGroups = availableECGroups ++ availableFFGroups

-- Digital signature algorithm, in close relation to public/private key types
-- and cipher key exchange.
data DigitalSignatureAlg = RSA | DSS | ECDSA | Ed25519 | Ed448
                           deriving (Show, Eq)