{-# 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
),
HashAndSignatureAlgorithm,
supportedSignatureSchemes,
) 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 $mHashNone :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bHashNone :: HashAlgorithm
HashNone = HashAlgorithm 0
pattern HashMD5 :: HashAlgorithm
pattern $mHashMD5 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bHashMD5 :: HashAlgorithm
HashMD5 = HashAlgorithm 1
pattern HashSHA1 :: HashAlgorithm
pattern $mHashSHA1 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bHashSHA1 :: HashAlgorithm
HashSHA1 = HashAlgorithm 2
pattern HashSHA224 :: HashAlgorithm
pattern $mHashSHA224 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bHashSHA224 :: HashAlgorithm
HashSHA224 = HashAlgorithm 3
pattern HashSHA256 :: HashAlgorithm
pattern $mHashSHA256 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bHashSHA256 :: HashAlgorithm
HashSHA256 = HashAlgorithm 4
pattern HashSHA384 :: HashAlgorithm
pattern $mHashSHA384 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bHashSHA384 :: HashAlgorithm
HashSHA384 = HashAlgorithm 5
pattern HashSHA512 :: HashAlgorithm
pattern $mHashSHA512 :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bHashSHA512 :: HashAlgorithm
HashSHA512 = HashAlgorithm 6
pattern HashIntrinsic :: HashAlgorithm
pattern $mHashIntrinsic :: forall {r}. HashAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bHashIntrinsic :: HashAlgorithm
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 $mSignatureAnonymous :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureAnonymous :: SignatureAlgorithm
SignatureAnonymous = SignatureAlgorithm 0
pattern SignatureRSA :: SignatureAlgorithm
pattern $mSignatureRSA :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureRSA :: SignatureAlgorithm
SignatureRSA = SignatureAlgorithm 1
pattern SignatureDSA :: SignatureAlgorithm
pattern $mSignatureDSA :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureDSA :: SignatureAlgorithm
SignatureDSA = SignatureAlgorithm 2
pattern SignatureECDSA :: SignatureAlgorithm
pattern $mSignatureECDSA :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureECDSA :: SignatureAlgorithm
SignatureECDSA = SignatureAlgorithm 3
pattern SignatureRSApssRSAeSHA256 :: SignatureAlgorithm
pattern $mSignatureRSApssRSAeSHA256 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureRSApssRSAeSHA256 :: SignatureAlgorithm
SignatureRSApssRSAeSHA256 = SignatureAlgorithm 4
pattern SignatureRSApssRSAeSHA384 :: SignatureAlgorithm
pattern $mSignatureRSApssRSAeSHA384 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureRSApssRSAeSHA384 :: SignatureAlgorithm
SignatureRSApssRSAeSHA384 = SignatureAlgorithm 5
pattern SignatureRSApssRSAeSHA512 :: SignatureAlgorithm
pattern $mSignatureRSApssRSAeSHA512 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureRSApssRSAeSHA512 :: SignatureAlgorithm
SignatureRSApssRSAeSHA512 = SignatureAlgorithm 6
pattern SignatureEd25519 :: SignatureAlgorithm
pattern $mSignatureEd25519 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureEd25519 :: SignatureAlgorithm
SignatureEd25519 = SignatureAlgorithm 7
pattern SignatureEd448 :: SignatureAlgorithm
pattern $mSignatureEd448 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureEd448 :: SignatureAlgorithm
SignatureEd448 = SignatureAlgorithm 8
pattern SignatureRSApsspssSHA256 :: SignatureAlgorithm
pattern $mSignatureRSApsspssSHA256 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureRSApsspssSHA256 :: SignatureAlgorithm
SignatureRSApsspssSHA256 = SignatureAlgorithm 9
pattern SignatureRSApsspssSHA384 :: SignatureAlgorithm
pattern $mSignatureRSApsspssSHA384 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureRSApsspssSHA384 :: SignatureAlgorithm
SignatureRSApsspssSHA384 = SignatureAlgorithm 10
pattern SignatureRSApsspssSHA512 :: SignatureAlgorithm
pattern $mSignatureRSApsspssSHA512 :: forall {r}. SignatureAlgorithm -> ((# #) -> r) -> ((# #) -> r) -> r
$bSignatureRSApsspssSHA512 :: SignatureAlgorithm
SignatureRSApsspssSHA512 = SignatureAlgorithm 11
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 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
HashSHA256, SignatureAlgorithm
SignatureECDSA)
, (HashAlgorithm
HashSHA384, SignatureAlgorithm
SignatureECDSA)
, (HashAlgorithm
HashSHA512, SignatureAlgorithm
SignatureECDSA)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApssRSAeSHA512)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApssRSAeSHA384)
, (HashAlgorithm
HashIntrinsic, SignatureAlgorithm
SignatureRSApssRSAeSHA256)
, (HashAlgorithm
HashSHA512, SignatureAlgorithm
SignatureRSA)
, (HashAlgorithm
HashSHA384, SignatureAlgorithm
SignatureRSA)
, (HashAlgorithm
HashSHA256, SignatureAlgorithm
SignatureRSA)
, (HashAlgorithm
HashSHA1, SignatureAlgorithm
SignatureRSA)
, (HashAlgorithm
HashSHA1, SignatureAlgorithm
SignatureECDSA)
]