{-# LANGUAGE PatternSynonyms #-}
module Network.TLS.HashAndSignature (
HashAlgorithm (
..,
HashNone,
HashMD5,
HashSHA1,
HashSHA224,
HashSHA256,
HashSHA384,
HashSHA512,
HashIntrinsic
),
SignatureAlgorithm (
..,
SignatureAnonymous,
SignatureRSA,
SignatureDSA,
SignatureECDSA,
SignatureRSApssRSAeSHA256,
SignatureRSApssRSAeSHA384,
SignatureRSApssRSAeSHA512,
SignatureEd25519,
SignatureEd448,
SignatureRSApsspssSHA256,
SignatureRSApsspssSHA384,
SignatureRSApsspssSHA512,
SignatureBrainpoolP256,
SignatureBrainpoolP384,
SignatureBrainpoolP512
),
HashAndSignatureAlgorithm,
supportedSignatureSchemes,
signatureSchemesForTLS13,
) where
import Network.TLS.Imports
newtype HashAlgorithm = HashAlgorithm {HashAlgorithm -> Word8
fromHashAlgorithm :: Word8}
deriving (HashAlgorithm -> HashAlgorithm -> Bool
(HashAlgorithm -> HashAlgorithm -> Bool)
-> (HashAlgorithm -> HashAlgorithm -> Bool) -> Eq HashAlgorithm
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: HashAlgorithm -> HashAlgorithm -> Bool
== :: HashAlgorithm -> HashAlgorithm -> Bool
$c/= :: HashAlgorithm -> HashAlgorithm -> Bool
/= :: HashAlgorithm -> HashAlgorithm -> Bool
Eq)
pattern HashNone :: HashAlgorithm
pattern $bHashNone :: HashAlgorithm
$mHashNone :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
HashNone = HashAlgorithm 0
pattern HashMD5 :: HashAlgorithm
pattern $bHashMD5 :: HashAlgorithm
$mHashMD5 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
HashMD5 = HashAlgorithm 1
pattern HashSHA1 :: HashAlgorithm
pattern $bHashSHA1 :: HashAlgorithm
$mHashSHA1 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
HashSHA1 = HashAlgorithm 2
pattern HashSHA224 :: HashAlgorithm
pattern $bHashSHA224 :: HashAlgorithm
$mHashSHA224 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
HashSHA224 = HashAlgorithm 3
pattern HashSHA256 :: HashAlgorithm
pattern $bHashSHA256 :: HashAlgorithm
$mHashSHA256 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
HashSHA256 = HashAlgorithm 4
pattern HashSHA384 :: HashAlgorithm
pattern $bHashSHA384 :: HashAlgorithm
$mHashSHA384 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
HashSHA384 = HashAlgorithm 5
pattern HashSHA512 :: HashAlgorithm
pattern $bHashSHA512 :: HashAlgorithm
$mHashSHA512 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
HashSHA512 = HashAlgorithm 6
pattern HashIntrinsic :: HashAlgorithm
pattern $bHashIntrinsic :: HashAlgorithm
$mHashIntrinsic :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
HashIntrinsic = HashAlgorithm 8
instance Show HashAlgorithm where
show :: HashAlgorithm -> String
show HashAlgorithm
HashNone = String
"None"
show HashAlgorithm
HashMD5 = String
"MD5"
show HashAlgorithm
HashSHA1 = String
"SHA1"
show HashAlgorithm
HashSHA224 = String
"SHA224"
show HashAlgorithm
HashSHA256 = String
"SHA256"
show HashAlgorithm
HashSHA384 = String
"SHA384"
show HashAlgorithm
HashSHA512 = String
"SHA512"
show HashAlgorithm
HashIntrinsic = String
"TLS13"
show (HashAlgorithm Word8
x) = String
"Hash " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Word8 -> String
forall a. Show a => a -> String
show Word8
x
newtype SignatureAlgorithm = SignatureAlgorithm {SignatureAlgorithm -> Word8
fromSignatureAlgorithm :: Word8}
deriving (SignatureAlgorithm -> SignatureAlgorithm -> Bool
(SignatureAlgorithm -> SignatureAlgorithm -> Bool)
-> (SignatureAlgorithm -> SignatureAlgorithm -> Bool)
-> Eq SignatureAlgorithm
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SignatureAlgorithm -> SignatureAlgorithm -> Bool
== :: SignatureAlgorithm -> SignatureAlgorithm -> Bool
$c/= :: SignatureAlgorithm -> SignatureAlgorithm -> Bool
/= :: SignatureAlgorithm -> SignatureAlgorithm -> Bool
Eq)
pattern SignatureAnonymous :: SignatureAlgorithm
pattern $bSignatureAnonymous :: SignatureAlgorithm
$mSignatureAnonymous :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureAnonymous = SignatureAlgorithm 0
pattern SignatureRSA :: SignatureAlgorithm
pattern $bSignatureRSA :: SignatureAlgorithm
$mSignatureRSA :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureRSA = SignatureAlgorithm 1
pattern SignatureDSA :: SignatureAlgorithm
pattern $bSignatureDSA :: SignatureAlgorithm
$mSignatureDSA :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureDSA = SignatureAlgorithm 2
pattern SignatureECDSA :: SignatureAlgorithm
pattern $bSignatureECDSA :: SignatureAlgorithm
$mSignatureECDSA :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureECDSA = SignatureAlgorithm 3
pattern SignatureRSApssRSAeSHA256 :: SignatureAlgorithm
pattern $bSignatureRSApssRSAeSHA256 :: SignatureAlgorithm
$mSignatureRSApssRSAeSHA256 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureRSApssRSAeSHA256 = SignatureAlgorithm 4
pattern SignatureRSApssRSAeSHA384 :: SignatureAlgorithm
pattern $bSignatureRSApssRSAeSHA384 :: SignatureAlgorithm
$mSignatureRSApssRSAeSHA384 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureRSApssRSAeSHA384 = SignatureAlgorithm 5
pattern SignatureRSApssRSAeSHA512 :: SignatureAlgorithm
pattern $bSignatureRSApssRSAeSHA512 :: SignatureAlgorithm
$mSignatureRSApssRSAeSHA512 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureRSApssRSAeSHA512 = SignatureAlgorithm 6
pattern SignatureEd25519 :: SignatureAlgorithm
pattern $bSignatureEd25519 :: SignatureAlgorithm
$mSignatureEd25519 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureEd25519 = SignatureAlgorithm 7
pattern SignatureEd448 :: SignatureAlgorithm
pattern $bSignatureEd448 :: SignatureAlgorithm
$mSignatureEd448 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureEd448 = SignatureAlgorithm 8
pattern SignatureRSApsspssSHA256 :: SignatureAlgorithm
pattern $bSignatureRSApsspssSHA256 :: SignatureAlgorithm
$mSignatureRSApsspssSHA256 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureRSApsspssSHA256 = SignatureAlgorithm 9
pattern SignatureRSApsspssSHA384 :: SignatureAlgorithm
pattern $bSignatureRSApsspssSHA384 :: SignatureAlgorithm
$mSignatureRSApsspssSHA384 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureRSApsspssSHA384 = SignatureAlgorithm 10
pattern SignatureRSApsspssSHA512 :: SignatureAlgorithm
pattern $bSignatureRSApsspssSHA512 :: SignatureAlgorithm
$mSignatureRSApsspssSHA512 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureRSApsspssSHA512 = SignatureAlgorithm 11
pattern SignatureBrainpoolP256 :: SignatureAlgorithm
pattern $bSignatureBrainpoolP256 :: SignatureAlgorithm
$mSignatureBrainpoolP256 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureBrainpoolP256 = SignatureAlgorithm 26
pattern SignatureBrainpoolP384 :: SignatureAlgorithm
pattern $bSignatureBrainpoolP384 :: SignatureAlgorithm
$mSignatureBrainpoolP384 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureBrainpoolP384 = SignatureAlgorithm 27
pattern SignatureBrainpoolP512 :: SignatureAlgorithm
pattern $bSignatureBrainpoolP512 :: SignatureAlgorithm
$mSignatureBrainpoolP512 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
SignatureBrainpoolP512 = SignatureAlgorithm 28
instance Show SignatureAlgorithm where
show :: SignatureAlgorithm -> String
show SignatureAlgorithm
SignatureAnonymous = String
"Anonymous"
show SignatureAlgorithm
SignatureRSA = String
"RSA"
show SignatureAlgorithm
SignatureDSA = String
"DSA"
show SignatureAlgorithm
SignatureECDSA = String
"ECDSA"
show SignatureAlgorithm
SignatureRSApssRSAeSHA256 = String
"RSApssRSAeSHA256"
show SignatureAlgorithm
SignatureRSApssRSAeSHA384 = String
"RSApssRSAeSHA384"
show SignatureAlgorithm
SignatureRSApssRSAeSHA512 = String
"RSApssRSAeSHA512"
show SignatureAlgorithm
SignatureEd25519 = String
"Ed25519"
show SignatureAlgorithm
SignatureEd448 = String
"Ed448"
show SignatureAlgorithm
SignatureRSApsspssSHA256 = String
"RSApsspssSHA256"
show SignatureAlgorithm
SignatureRSApsspssSHA384 = String
"RSApsspssSHA384"
show SignatureAlgorithm
SignatureRSApsspssSHA512 = String
"RSApsspssSHA512"
show SignatureAlgorithm
SignatureBrainpoolP256 = String
"BrainpoolP256"
show SignatureAlgorithm
SignatureBrainpoolP384 = String
"BrainpoolP384"
show SignatureAlgorithm
SignatureBrainpoolP512 = String
"BrainpoolP512"
show (SignatureAlgorithm Word8
x) = String
"Signature " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Word8 -> String
forall a. Show a => a -> String
show Word8
x
type HashAndSignatureAlgorithm = (HashAlgorithm, SignatureAlgorithm)
supportedSignatureSchemes :: [HashAndSignatureAlgorithm]
supportedSignatureSchemes :: [HashAndSignatureAlgorithm]
supportedSignatureSchemes =
[ (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureEd448)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureEd25519)
, (HashAlgorithm
HashSHA512, SignatureAlgorithm
SignatureECDSA)
, (HashAlgorithm
HashSHA384, SignatureAlgorithm
SignatureECDSA)
, (HashAlgorithm
HashSHA256, SignatureAlgorithm
SignatureECDSA)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApssRSAeSHA512)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApssRSAeSHA384)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApssRSAeSHA256)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApsspssSHA512)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApsspssSHA384)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApsspssSHA256)
, (HashAlgorithm
HashSHA512, SignatureAlgorithm
SignatureRSA)
, (HashAlgorithm
HashSHA384, SignatureAlgorithm
SignatureRSA)
, (HashAlgorithm
HashSHA256, SignatureAlgorithm
SignatureRSA)
, (HashAlgorithm
HashSHA1, SignatureAlgorithm
SignatureRSA)
, (HashAlgorithm
HashSHA1, SignatureAlgorithm
SignatureECDSA)
]
signatureSchemesForTLS13 :: [(HashAlgorithm, SignatureAlgorithm)]
signatureSchemesForTLS13 :: [HashAndSignatureAlgorithm]
signatureSchemesForTLS13 =
[ (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureEd448)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureEd25519)
, (HashAlgorithm
HashSHA512, SignatureAlgorithm
SignatureECDSA)
, (HashAlgorithm
HashSHA384, SignatureAlgorithm
SignatureECDSA)
, (HashAlgorithm
HashSHA256, SignatureAlgorithm
SignatureECDSA)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApssRSAeSHA512)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApssRSAeSHA384)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApssRSAeSHA256)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApsspssSHA512)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApsspssSHA384)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApsspssSHA256)
]