-- |
-- 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 (Group -> Group -> Bool
(Group -> Group -> Bool) -> (Group -> Group -> Bool) -> Eq Group
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Group -> Group -> Bool
$c/= :: Group -> Group -> Bool
== :: Group -> Group -> Bool
$c== :: Group -> Group -> Bool
Eq, Int -> Group -> ShowS
[Group] -> ShowS
Group -> String
(Int -> Group -> ShowS)
-> (Group -> String) -> ([Group] -> ShowS) -> Show Group
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Group] -> ShowS
$cshowList :: [Group] -> ShowS
show :: Group -> String
$cshow :: Group -> String
showsPrec :: Int -> Group -> ShowS
$cshowsPrec :: Int -> Group -> ShowS
Show)

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

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

-- Key-exchange signature algorithm, in close relation to ciphers
-- (before TLS 1.3).
data KeyExchangeSignatureAlg = KX_RSA | KX_DSS | KX_ECDSA
                      deriving (Int -> KeyExchangeSignatureAlg -> ShowS
[KeyExchangeSignatureAlg] -> ShowS
KeyExchangeSignatureAlg -> String
(Int -> KeyExchangeSignatureAlg -> ShowS)
-> (KeyExchangeSignatureAlg -> String)
-> ([KeyExchangeSignatureAlg] -> ShowS)
-> Show KeyExchangeSignatureAlg
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [KeyExchangeSignatureAlg] -> ShowS
$cshowList :: [KeyExchangeSignatureAlg] -> ShowS
show :: KeyExchangeSignatureAlg -> String
$cshow :: KeyExchangeSignatureAlg -> String
showsPrec :: Int -> KeyExchangeSignatureAlg -> ShowS
$cshowsPrec :: Int -> KeyExchangeSignatureAlg -> ShowS
Show, KeyExchangeSignatureAlg -> KeyExchangeSignatureAlg -> Bool
(KeyExchangeSignatureAlg -> KeyExchangeSignatureAlg -> Bool)
-> (KeyExchangeSignatureAlg -> KeyExchangeSignatureAlg -> Bool)
-> Eq KeyExchangeSignatureAlg
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KeyExchangeSignatureAlg -> KeyExchangeSignatureAlg -> Bool
$c/= :: KeyExchangeSignatureAlg -> KeyExchangeSignatureAlg -> Bool
== :: KeyExchangeSignatureAlg -> KeyExchangeSignatureAlg -> Bool
$c== :: KeyExchangeSignatureAlg -> KeyExchangeSignatureAlg -> Bool
Eq)