module Network.TLS.Extra.Cipher
(
ciphersuite_default
, ciphersuite_default_det
, ciphersuite_all
, ciphersuite_all_det
, ciphersuite_medium
, ciphersuite_strong
, ciphersuite_strong_det
, ciphersuite_unencrypted
, ciphersuite_dhe_rsa
, ciphersuite_dhe_dss
, cipher_null_SHA1
, cipher_AES128_SHA1
, cipher_AES256_SHA1
, cipher_AES128_SHA256
, cipher_AES256_SHA256
, cipher_AES128CCM_SHA256
, cipher_AES128CCM8_SHA256
, cipher_AES128GCM_SHA256
, cipher_AES256CCM_SHA256
, cipher_AES256CCM8_SHA256
, cipher_AES256GCM_SHA384
, cipher_DHE_RSA_AES128_SHA1
, cipher_DHE_RSA_AES256_SHA1
, cipher_DHE_RSA_AES128_SHA256
, cipher_DHE_RSA_AES256_SHA256
, cipher_DHE_DSS_AES128_SHA1
, cipher_DHE_DSS_AES256_SHA1
, cipher_DHE_RSA_AES128CCM_SHA256
, cipher_DHE_RSA_AES128CCM8_SHA256
, cipher_DHE_RSA_AES128GCM_SHA256
, cipher_DHE_RSA_AES256CCM_SHA256
, cipher_DHE_RSA_AES256CCM8_SHA256
, cipher_DHE_RSA_AES256GCM_SHA384
, cipher_DHE_RSA_CHACHA20POLY1305_SHA256
, cipher_ECDHE_RSA_AES128GCM_SHA256
, cipher_ECDHE_RSA_AES256GCM_SHA384
, cipher_ECDHE_RSA_AES128CBC_SHA256
, cipher_ECDHE_RSA_AES128CBC_SHA
, cipher_ECDHE_RSA_AES256CBC_SHA
, cipher_ECDHE_RSA_AES256CBC_SHA384
, cipher_ECDHE_RSA_CHACHA20POLY1305_SHA256
, cipher_ECDHE_ECDSA_AES128CBC_SHA
, cipher_ECDHE_ECDSA_AES256CBC_SHA
, cipher_ECDHE_ECDSA_AES128CBC_SHA256
, cipher_ECDHE_ECDSA_AES256CBC_SHA384
, cipher_ECDHE_ECDSA_AES128CCM_SHA256
, cipher_ECDHE_ECDSA_AES128CCM8_SHA256
, cipher_ECDHE_ECDSA_AES128GCM_SHA256
, cipher_ECDHE_ECDSA_AES256CCM_SHA256
, cipher_ECDHE_ECDSA_AES256CCM8_SHA256
, cipher_ECDHE_ECDSA_AES256GCM_SHA384
, cipher_ECDHE_ECDSA_CHACHA20POLY1305_SHA256
, cipher_TLS13_AES128GCM_SHA256
, cipher_TLS13_AES256GCM_SHA384
, cipher_TLS13_CHACHA20POLY1305_SHA256
, cipher_TLS13_AES128CCM_SHA256
, cipher_TLS13_AES128CCM8_SHA256
, cipher_RSA_3DES_EDE_CBC_SHA1
, cipher_RC4_128_MD5
, cipher_RC4_128_SHA1
, cipher_null_MD5
, cipher_DHE_DSS_RC4_SHA1
) where
import qualified Data.ByteString as B
import Network.TLS.Types (Version(..))
import Network.TLS.Cipher
import Network.TLS.Imports
import Data.Tuple (swap)
import Crypto.Cipher.AES
import qualified Crypto.Cipher.ChaChaPoly1305 as ChaChaPoly1305
import qualified Crypto.Cipher.RC4 as RC4
import Crypto.Cipher.TripleDES
import Crypto.Cipher.Types hiding (Cipher, cipherName)
import Crypto.Error
import qualified Crypto.MAC.Poly1305 as Poly1305
import Crypto.System.CPU
takelast :: Int -> B.ByteString -> B.ByteString
takelast :: Int -> BulkKey -> BulkKey
takelast Int
i BulkKey
b = Int -> BulkKey -> BulkKey
B.drop (BulkKey -> Int
B.length BulkKey
b forall a. Num a => a -> a -> a
- Int
i) BulkKey
b
aes128cbc :: BulkDirection -> BulkKey -> BulkBlock
aes128cbc :: BulkDirection -> BulkKey -> BulkBlock
aes128cbc BulkDirection
BulkEncrypt BulkKey
key =
let ctx :: AES128
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES128
in (\BulkKey
iv BulkKey
input -> let output :: BulkKey
output = forall cipher ba.
(BlockCipher cipher, ByteArray ba) =>
cipher -> IV cipher -> ba -> ba
cbcEncrypt AES128
ctx (forall a. BlockCipher a => BulkKey -> IV a
makeIV_ BulkKey
iv) BulkKey
input in (BulkKey
output, Int -> BulkKey -> BulkKey
takelast Int
16 BulkKey
output))
aes128cbc BulkDirection
BulkDecrypt BulkKey
key =
let ctx :: AES128
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES128
in (\BulkKey
iv BulkKey
input -> let output :: BulkKey
output = forall cipher ba.
(BlockCipher cipher, ByteArray ba) =>
cipher -> IV cipher -> ba -> ba
cbcDecrypt AES128
ctx (forall a. BlockCipher a => BulkKey -> IV a
makeIV_ BulkKey
iv) BulkKey
input in (BulkKey
output, Int -> BulkKey -> BulkKey
takelast Int
16 BulkKey
input))
aes256cbc :: BulkDirection -> BulkKey -> BulkBlock
aes256cbc :: BulkDirection -> BulkKey -> BulkBlock
aes256cbc BulkDirection
BulkEncrypt BulkKey
key =
let ctx :: AES256
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES256
in (\BulkKey
iv BulkKey
input -> let output :: BulkKey
output = forall cipher ba.
(BlockCipher cipher, ByteArray ba) =>
cipher -> IV cipher -> ba -> ba
cbcEncrypt AES256
ctx (forall a. BlockCipher a => BulkKey -> IV a
makeIV_ BulkKey
iv) BulkKey
input in (BulkKey
output, Int -> BulkKey -> BulkKey
takelast Int
16 BulkKey
output))
aes256cbc BulkDirection
BulkDecrypt BulkKey
key =
let ctx :: AES256
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES256
in (\BulkKey
iv BulkKey
input -> let output :: BulkKey
output = forall cipher ba.
(BlockCipher cipher, ByteArray ba) =>
cipher -> IV cipher -> ba -> ba
cbcDecrypt AES256
ctx (forall a. BlockCipher a => BulkKey -> IV a
makeIV_ BulkKey
iv) BulkKey
input in (BulkKey
output, Int -> BulkKey -> BulkKey
takelast Int
16 BulkKey
input))
aes128ccm :: BulkDirection -> BulkKey -> BulkAEAD
aes128ccm :: BulkDirection -> BulkKey -> BulkAEAD
aes128ccm BulkDirection
BulkEncrypt BulkKey
key =
let ctx :: AES128
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES128
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let mode :: AEADMode
mode = Int -> CCM_M -> CCM_L -> AEADMode
AEAD_CCM (BulkKey -> Int
B.length BulkKey
d) CCM_M
CCM_M16 CCM_L
CCM_L3
aeadIni :: AEAD AES128
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
mode AES128
ctx BulkKey
nonce)
in forall a b. (a, b) -> (b, a)
swap forall a b. (a -> b) -> a -> b
$ forall aad ba a.
(ByteArrayAccess aad, ByteArray ba) =>
AEAD a -> aad -> ba -> Int -> (AuthTag, ba)
aeadSimpleEncrypt AEAD AES128
aeadIni BulkKey
ad BulkKey
d Int
16)
aes128ccm BulkDirection
BulkDecrypt BulkKey
key =
let ctx :: AES128
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES128
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let mode :: AEADMode
mode = Int -> CCM_M -> CCM_L -> AEADMode
AEAD_CCM (BulkKey -> Int
B.length BulkKey
d) CCM_M
CCM_M16 CCM_L
CCM_L3
aeadIni :: AEAD AES128
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
mode AES128
ctx BulkKey
nonce)
in forall cipher.
AEAD cipher -> BulkKey -> BulkKey -> Int -> (BulkKey, AuthTag)
simpleDecrypt AEAD AES128
aeadIni BulkKey
ad BulkKey
d Int
16)
aes128ccm8 :: BulkDirection -> BulkKey -> BulkAEAD
aes128ccm8 :: BulkDirection -> BulkKey -> BulkAEAD
aes128ccm8 BulkDirection
BulkEncrypt BulkKey
key =
let ctx :: AES128
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES128
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let mode :: AEADMode
mode = Int -> CCM_M -> CCM_L -> AEADMode
AEAD_CCM (BulkKey -> Int
B.length BulkKey
d) CCM_M
CCM_M8 CCM_L
CCM_L3
aeadIni :: AEAD AES128
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
mode AES128
ctx BulkKey
nonce)
in forall a b. (a, b) -> (b, a)
swap forall a b. (a -> b) -> a -> b
$ forall aad ba a.
(ByteArrayAccess aad, ByteArray ba) =>
AEAD a -> aad -> ba -> Int -> (AuthTag, ba)
aeadSimpleEncrypt AEAD AES128
aeadIni BulkKey
ad BulkKey
d Int
8)
aes128ccm8 BulkDirection
BulkDecrypt BulkKey
key =
let ctx :: AES128
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES128
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let mode :: AEADMode
mode = Int -> CCM_M -> CCM_L -> AEADMode
AEAD_CCM (BulkKey -> Int
B.length BulkKey
d) CCM_M
CCM_M8 CCM_L
CCM_L3
aeadIni :: AEAD AES128
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
mode AES128
ctx BulkKey
nonce)
in forall cipher.
AEAD cipher -> BulkKey -> BulkKey -> Int -> (BulkKey, AuthTag)
simpleDecrypt AEAD AES128
aeadIni BulkKey
ad BulkKey
d Int
8)
aes128gcm :: BulkDirection -> BulkKey -> BulkAEAD
aes128gcm :: BulkDirection -> BulkKey -> BulkAEAD
aes128gcm BulkDirection
BulkEncrypt BulkKey
key =
let ctx :: AES128
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES128
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let aeadIni :: AEAD AES128
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
AEAD_GCM AES128
ctx BulkKey
nonce)
in forall a b. (a, b) -> (b, a)
swap forall a b. (a -> b) -> a -> b
$ forall aad ba a.
(ByteArrayAccess aad, ByteArray ba) =>
AEAD a -> aad -> ba -> Int -> (AuthTag, ba)
aeadSimpleEncrypt AEAD AES128
aeadIni BulkKey
ad BulkKey
d Int
16)
aes128gcm BulkDirection
BulkDecrypt BulkKey
key =
let ctx :: AES128
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES128
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let aeadIni :: AEAD AES128
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
AEAD_GCM AES128
ctx BulkKey
nonce)
in forall cipher.
AEAD cipher -> BulkKey -> BulkKey -> Int -> (BulkKey, AuthTag)
simpleDecrypt AEAD AES128
aeadIni BulkKey
ad BulkKey
d Int
16)
aes256ccm :: BulkDirection -> BulkKey -> BulkAEAD
aes256ccm :: BulkDirection -> BulkKey -> BulkAEAD
aes256ccm BulkDirection
BulkEncrypt BulkKey
key =
let ctx :: AES256
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES256
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let mode :: AEADMode
mode = Int -> CCM_M -> CCM_L -> AEADMode
AEAD_CCM (BulkKey -> Int
B.length BulkKey
d) CCM_M
CCM_M16 CCM_L
CCM_L3
aeadIni :: AEAD AES256
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
mode AES256
ctx BulkKey
nonce)
in forall a b. (a, b) -> (b, a)
swap forall a b. (a -> b) -> a -> b
$ forall aad ba a.
(ByteArrayAccess aad, ByteArray ba) =>
AEAD a -> aad -> ba -> Int -> (AuthTag, ba)
aeadSimpleEncrypt AEAD AES256
aeadIni BulkKey
ad BulkKey
d Int
16)
aes256ccm BulkDirection
BulkDecrypt BulkKey
key =
let ctx :: AES256
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES256
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let mode :: AEADMode
mode = Int -> CCM_M -> CCM_L -> AEADMode
AEAD_CCM (BulkKey -> Int
B.length BulkKey
d) CCM_M
CCM_M16 CCM_L
CCM_L3
aeadIni :: AEAD AES256
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
mode AES256
ctx BulkKey
nonce)
in forall cipher.
AEAD cipher -> BulkKey -> BulkKey -> Int -> (BulkKey, AuthTag)
simpleDecrypt AEAD AES256
aeadIni BulkKey
ad BulkKey
d Int
16)
aes256ccm8 :: BulkDirection -> BulkKey -> BulkAEAD
aes256ccm8 :: BulkDirection -> BulkKey -> BulkAEAD
aes256ccm8 BulkDirection
BulkEncrypt BulkKey
key =
let ctx :: AES256
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES256
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let mode :: AEADMode
mode = Int -> CCM_M -> CCM_L -> AEADMode
AEAD_CCM (BulkKey -> Int
B.length BulkKey
d) CCM_M
CCM_M8 CCM_L
CCM_L3
aeadIni :: AEAD AES256
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
mode AES256
ctx BulkKey
nonce)
in forall a b. (a, b) -> (b, a)
swap forall a b. (a -> b) -> a -> b
$ forall aad ba a.
(ByteArrayAccess aad, ByteArray ba) =>
AEAD a -> aad -> ba -> Int -> (AuthTag, ba)
aeadSimpleEncrypt AEAD AES256
aeadIni BulkKey
ad BulkKey
d Int
8)
aes256ccm8 BulkDirection
BulkDecrypt BulkKey
key =
let ctx :: AES256
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES256
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let mode :: AEADMode
mode = Int -> CCM_M -> CCM_L -> AEADMode
AEAD_CCM (BulkKey -> Int
B.length BulkKey
d) CCM_M
CCM_M8 CCM_L
CCM_L3
aeadIni :: AEAD AES256
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
mode AES256
ctx BulkKey
nonce)
in forall cipher.
AEAD cipher -> BulkKey -> BulkKey -> Int -> (BulkKey, AuthTag)
simpleDecrypt AEAD AES256
aeadIni BulkKey
ad BulkKey
d Int
8)
aes256gcm :: BulkDirection -> BulkKey -> BulkAEAD
aes256gcm :: BulkDirection -> BulkKey -> BulkAEAD
aes256gcm BulkDirection
BulkEncrypt BulkKey
key =
let ctx :: AES256
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES256
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let aeadIni :: AEAD AES256
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
AEAD_GCM AES256
ctx BulkKey
nonce)
in forall a b. (a, b) -> (b, a)
swap forall a b. (a -> b) -> a -> b
$ forall aad ba a.
(ByteArrayAccess aad, ByteArray ba) =>
AEAD a -> aad -> ba -> Int -> (AuthTag, ba)
aeadSimpleEncrypt AEAD AES256
aeadIni BulkKey
ad BulkKey
d Int
16)
aes256gcm BulkDirection
BulkDecrypt BulkKey
key =
let ctx :: AES256
ctx = forall a. CryptoFailable a -> a
noFail (forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key) :: AES256
in (\BulkKey
nonce BulkKey
d BulkKey
ad ->
let aeadIni :: AEAD AES256
aeadIni = forall a. CryptoFailable a -> a
noFail (forall cipher iv.
(BlockCipher cipher, ByteArrayAccess iv) =>
AEADMode -> cipher -> iv -> CryptoFailable (AEAD cipher)
aeadInit AEADMode
AEAD_GCM AES256
ctx BulkKey
nonce)
in forall cipher.
AEAD cipher -> BulkKey -> BulkKey -> Int -> (BulkKey, AuthTag)
simpleDecrypt AEAD AES256
aeadIni BulkKey
ad BulkKey
d Int
16)
simpleDecrypt :: AEAD cipher -> B.ByteString -> B.ByteString -> Int -> (B.ByteString, AuthTag)
simpleDecrypt :: forall cipher.
AEAD cipher -> BulkKey -> BulkKey -> Int -> (BulkKey, AuthTag)
simpleDecrypt AEAD cipher
aeadIni BulkKey
header BulkKey
input Int
taglen = (BulkKey
output, AuthTag
tag)
where
aead :: AEAD cipher
aead = forall aad cipher.
ByteArrayAccess aad =>
AEAD cipher -> aad -> AEAD cipher
aeadAppendHeader AEAD cipher
aeadIni BulkKey
header
(BulkKey
output, AEAD cipher
aeadFinal) = forall ba cipher.
ByteArray ba =>
AEAD cipher -> ba -> (ba, AEAD cipher)
aeadDecrypt AEAD cipher
aead BulkKey
input
tag :: AuthTag
tag = forall cipher. AEAD cipher -> Int -> AuthTag
aeadFinalize AEAD cipher
aeadFinal Int
taglen
noFail :: CryptoFailable a -> a
noFail :: forall a. CryptoFailable a -> a
noFail = forall a. CryptoFailable a -> a
throwCryptoError
makeIV_ :: BlockCipher a => B.ByteString -> IV a
makeIV_ :: forall a. BlockCipher a => BulkKey -> IV a
makeIV_ = forall a. a -> Maybe a -> a
fromMaybe (forall a. HasCallStack => [Char] -> a
error [Char]
"makeIV_") forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall b c. (ByteArrayAccess b, BlockCipher c) => b -> Maybe (IV c)
makeIV
tripledes_ede :: BulkDirection -> BulkKey -> BulkBlock
tripledes_ede :: BulkDirection -> BulkKey -> BulkBlock
tripledes_ede BulkDirection
BulkEncrypt BulkKey
key =
let ctx :: DES_EDE3
ctx = forall a. CryptoFailable a -> a
noFail forall a b. (a -> b) -> a -> b
$ forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key
in (\BulkKey
iv BulkKey
input -> let output :: BulkKey
output = forall cipher ba.
(BlockCipher cipher, ByteArray ba) =>
cipher -> IV cipher -> ba -> ba
cbcEncrypt DES_EDE3
ctx (BulkKey -> IV DES_EDE3
tripledes_iv BulkKey
iv) BulkKey
input in (BulkKey
output, Int -> BulkKey -> BulkKey
takelast Int
8 BulkKey
output))
tripledes_ede BulkDirection
BulkDecrypt BulkKey
key =
let ctx :: DES_EDE3
ctx = forall a. CryptoFailable a -> a
noFail forall a b. (a -> b) -> a -> b
$ forall cipher key.
(Cipher cipher, ByteArray key) =>
key -> CryptoFailable cipher
cipherInit BulkKey
key
in (\BulkKey
iv BulkKey
input -> let output :: BulkKey
output = forall cipher ba.
(BlockCipher cipher, ByteArray ba) =>
cipher -> IV cipher -> ba -> ba
cbcDecrypt DES_EDE3
ctx (BulkKey -> IV DES_EDE3
tripledes_iv BulkKey
iv) BulkKey
input in (BulkKey
output, Int -> BulkKey -> BulkKey
takelast Int
8 BulkKey
input))
tripledes_iv :: BulkIV -> IV DES_EDE3
tripledes_iv :: BulkKey -> IV DES_EDE3
tripledes_iv BulkKey
iv = forall a. a -> Maybe a -> a
fromMaybe (forall a. HasCallStack => [Char] -> a
error [Char]
"tripledes cipher iv internal error") forall a b. (a -> b) -> a -> b
$ forall b c. (ByteArrayAccess b, BlockCipher c) => b -> Maybe (IV c)
makeIV BulkKey
iv
rc4 :: BulkDirection -> BulkKey -> BulkStream
rc4 :: BulkDirection -> BulkKey -> BulkStream
rc4 BulkDirection
_ BulkKey
bulkKey = (BulkKey -> (BulkKey, BulkStream)) -> BulkStream
BulkStream (State -> BulkKey -> (BulkKey, BulkStream)
combineRC4 forall a b. (a -> b) -> a -> b
$ forall key. ByteArrayAccess key => key -> State
RC4.initialize BulkKey
bulkKey)
where
combineRC4 :: State -> BulkKey -> (BulkKey, BulkStream)
combineRC4 State
ctx BulkKey
input =
let (State
ctx', BulkKey
output) = forall ba. ByteArray ba => State -> ba -> (State, ba)
RC4.combine State
ctx BulkKey
input
in (BulkKey
output, (BulkKey -> (BulkKey, BulkStream)) -> BulkStream
BulkStream (State -> BulkKey -> (BulkKey, BulkStream)
combineRC4 State
ctx'))
chacha20poly1305 :: BulkDirection -> BulkKey -> BulkAEAD
chacha20poly1305 :: BulkDirection -> BulkKey -> BulkAEAD
chacha20poly1305 BulkDirection
BulkEncrypt BulkKey
key BulkKey
nonce =
let st :: State
st = forall a. CryptoFailable a -> a
noFail (forall iv. ByteArrayAccess iv => iv -> CryptoFailable Nonce
ChaChaPoly1305.nonce12 BulkKey
nonce forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall key.
ByteArrayAccess key =>
key -> Nonce -> CryptoFailable State
ChaChaPoly1305.initialize BulkKey
key)
in (\BulkKey
input BulkKey
ad ->
let st2 :: State
st2 = State -> State
ChaChaPoly1305.finalizeAAD (forall ba. ByteArrayAccess ba => ba -> State -> State
ChaChaPoly1305.appendAAD BulkKey
ad State
st)
(BulkKey
output, State
st3) = forall ba. ByteArray ba => ba -> State -> (ba, State)
ChaChaPoly1305.encrypt BulkKey
input State
st2
Poly1305.Auth Bytes
tag = State -> Auth
ChaChaPoly1305.finalize State
st3
in (BulkKey
output, Bytes -> AuthTag
AuthTag Bytes
tag))
chacha20poly1305 BulkDirection
BulkDecrypt BulkKey
key BulkKey
nonce =
let st :: State
st = forall a. CryptoFailable a -> a
noFail (forall iv. ByteArrayAccess iv => iv -> CryptoFailable Nonce
ChaChaPoly1305.nonce12 BulkKey
nonce forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall key.
ByteArrayAccess key =>
key -> Nonce -> CryptoFailable State
ChaChaPoly1305.initialize BulkKey
key)
in (\BulkKey
input BulkKey
ad ->
let st2 :: State
st2 = State -> State
ChaChaPoly1305.finalizeAAD (forall ba. ByteArrayAccess ba => ba -> State -> State
ChaChaPoly1305.appendAAD BulkKey
ad State
st)
(BulkKey
output, State
st3) = forall ba. ByteArray ba => ba -> State -> (ba, State)
ChaChaPoly1305.decrypt BulkKey
input State
st2
Poly1305.Auth Bytes
tag = State -> Auth
ChaChaPoly1305.finalize State
st3
in (BulkKey
output, Bytes -> AuthTag
AuthTag Bytes
tag))
data CipherSet
= SetAead [Cipher] [Cipher] [Cipher]
| SetOther [Cipher]
sortOptimized :: [CipherSet] -> [Cipher]
sortOptimized :: [CipherSet] -> [Cipher]
sortOptimized = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap CipherSet -> [Cipher]
f
where
f :: CipherSet -> [Cipher]
f (SetAead [Cipher]
gcm [Cipher]
chacha [Cipher]
ccm)
| ProcessorOption
AESNI forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [ProcessorOption]
processorOptions = [Cipher]
chacha forall a. [a] -> [a] -> [a]
++ [Cipher]
gcm forall a. [a] -> [a] -> [a]
++ [Cipher]
ccm
| ProcessorOption
PCLMUL forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [ProcessorOption]
processorOptions = [Cipher]
ccm forall a. [a] -> [a] -> [a]
++ [Cipher]
chacha forall a. [a] -> [a] -> [a]
++ [Cipher]
gcm
| Bool
otherwise = [Cipher]
gcm forall a. [a] -> [a] -> [a]
++ [Cipher]
ccm forall a. [a] -> [a] -> [a]
++ [Cipher]
chacha
f (SetOther [Cipher]
ciphers) = [Cipher]
ciphers
sortDeterministic :: [CipherSet] -> [Cipher]
sortDeterministic :: [CipherSet] -> [Cipher]
sortDeterministic = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap CipherSet -> [Cipher]
f
where
f :: CipherSet -> [Cipher]
f (SetAead [Cipher]
gcm [Cipher]
chacha [Cipher]
ccm) = [Cipher]
gcm forall a. [a] -> [a] -> [a]
++ [Cipher]
chacha forall a. [a] -> [a] -> [a]
++ [Cipher]
ccm
f (SetOther [Cipher]
ciphers) = [Cipher]
ciphers
ciphersuite_default :: [Cipher]
ciphersuite_default :: [Cipher]
ciphersuite_default = [CipherSet] -> [Cipher]
sortOptimized [CipherSet]
sets_default
ciphersuite_default_det :: [Cipher]
ciphersuite_default_det :: [Cipher]
ciphersuite_default_det = [CipherSet] -> [Cipher]
sortDeterministic [CipherSet]
sets_default
sets_default :: [CipherSet]
sets_default :: [CipherSet]
sets_default =
[
[Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead
[ Cipher
cipher_ECDHE_ECDSA_AES128GCM_SHA256, Cipher
cipher_ECDHE_ECDSA_AES256GCM_SHA384 ]
[ Cipher
cipher_ECDHE_ECDSA_CHACHA20POLY1305_SHA256 ]
[ Cipher
cipher_ECDHE_ECDSA_AES128CCM_SHA256, Cipher
cipher_ECDHE_ECDSA_AES256CCM_SHA256 ]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead
[ Cipher
cipher_ECDHE_RSA_AES128GCM_SHA256, Cipher
cipher_ECDHE_RSA_AES256GCM_SHA384 ]
[ Cipher
cipher_ECDHE_RSA_CHACHA20POLY1305_SHA256 ]
[]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead
[ Cipher
cipher_DHE_RSA_AES128GCM_SHA256, Cipher
cipher_DHE_RSA_AES256GCM_SHA384 ]
[ Cipher
cipher_DHE_RSA_CHACHA20POLY1305_SHA256 ]
[ Cipher
cipher_DHE_RSA_AES128CCM_SHA256, Cipher
cipher_DHE_RSA_AES256CCM_SHA256 ]
, [Cipher] -> CipherSet
SetOther
[ Cipher
cipher_ECDHE_ECDSA_AES128CBC_SHA256, Cipher
cipher_ECDHE_ECDSA_AES256CBC_SHA384
, Cipher
cipher_ECDHE_RSA_AES128CBC_SHA256, Cipher
cipher_ECDHE_RSA_AES256CBC_SHA384
, Cipher
cipher_DHE_RSA_AES128_SHA256, Cipher
cipher_DHE_RSA_AES256_SHA256
]
, [Cipher] -> CipherSet
SetOther
[ Cipher
cipher_ECDHE_ECDSA_AES128CBC_SHA, Cipher
cipher_ECDHE_ECDSA_AES256CBC_SHA
, Cipher
cipher_ECDHE_RSA_AES128CBC_SHA, Cipher
cipher_ECDHE_RSA_AES256CBC_SHA
, Cipher
cipher_DHE_RSA_AES128_SHA1, Cipher
cipher_DHE_RSA_AES256_SHA1
]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead
[ Cipher
cipher_AES128GCM_SHA256, Cipher
cipher_AES256GCM_SHA384 ]
[]
[ Cipher
cipher_AES128CCM_SHA256, Cipher
cipher_AES256CCM_SHA256 ]
, [Cipher] -> CipherSet
SetOther [ Cipher
cipher_AES256_SHA256, Cipher
cipher_AES128_SHA256 ]
, [Cipher] -> CipherSet
SetOther [ Cipher
cipher_AES256_SHA1, Cipher
cipher_AES128_SHA1 ]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead
[ Cipher
cipher_TLS13_AES128GCM_SHA256, Cipher
cipher_TLS13_AES256GCM_SHA384 ]
[ Cipher
cipher_TLS13_CHACHA20POLY1305_SHA256 ]
[ Cipher
cipher_TLS13_AES128CCM_SHA256 ]
]
{-# WARNING ciphersuite_all "This ciphersuite list contains RC4. Use ciphersuite_strong or ciphersuite_default instead." #-}
ciphersuite_all :: [Cipher]
ciphersuite_all :: [Cipher]
ciphersuite_all = [Cipher]
ciphersuite_default forall a. [a] -> [a] -> [a]
++ [Cipher]
complement_all
{-# WARNING ciphersuite_all_det "This ciphersuite list contains RC4. Use ciphersuite_strong_det or ciphersuite_default_det instead." #-}
ciphersuite_all_det :: [Cipher]
ciphersuite_all_det :: [Cipher]
ciphersuite_all_det = [Cipher]
ciphersuite_default_det forall a. [a] -> [a] -> [a]
++ [Cipher]
complement_all
complement_all :: [Cipher]
complement_all :: [Cipher]
complement_all =
[ Cipher
cipher_ECDHE_ECDSA_AES128CCM8_SHA256, Cipher
cipher_ECDHE_ECDSA_AES256CCM8_SHA256
, Cipher
cipher_DHE_RSA_AES128CCM8_SHA256, Cipher
cipher_DHE_RSA_AES256CCM8_SHA256
, Cipher
cipher_DHE_DSS_AES256_SHA1, Cipher
cipher_DHE_DSS_AES128_SHA1
, Cipher
cipher_AES128CCM8_SHA256, Cipher
cipher_AES256CCM8_SHA256
, Cipher
cipher_RSA_3DES_EDE_CBC_SHA1
, Cipher
cipher_RC4_128_SHA1
, Cipher
cipher_TLS13_AES128CCM8_SHA256
]
{-# DEPRECATED ciphersuite_medium "Use ciphersuite_strong or ciphersuite_default instead." #-}
ciphersuite_medium :: [Cipher]
ciphersuite_medium :: [Cipher]
ciphersuite_medium = [ Cipher
cipher_RC4_128_SHA1
, Cipher
cipher_AES128_SHA1
]
ciphersuite_strong :: [Cipher]
ciphersuite_strong :: [Cipher]
ciphersuite_strong = [CipherSet] -> [Cipher]
sortOptimized [CipherSet]
sets_strong
ciphersuite_strong_det :: [Cipher]
ciphersuite_strong_det :: [Cipher]
ciphersuite_strong_det = [CipherSet] -> [Cipher]
sortDeterministic [CipherSet]
sets_strong
sets_strong :: [CipherSet]
sets_strong :: [CipherSet]
sets_strong =
[
[Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead [ Cipher
cipher_ECDHE_ECDSA_AES256GCM_SHA384 ]
[ Cipher
cipher_ECDHE_ECDSA_CHACHA20POLY1305_SHA256 ]
[ Cipher
cipher_ECDHE_ECDSA_AES256CCM_SHA256 ]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead [ Cipher
cipher_ECDHE_ECDSA_AES128GCM_SHA256 ]
[]
[ Cipher
cipher_ECDHE_ECDSA_AES128CCM_SHA256 ]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead [ Cipher
cipher_ECDHE_RSA_AES256GCM_SHA384 ]
[ Cipher
cipher_ECDHE_RSA_CHACHA20POLY1305_SHA256 ]
[]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead [ Cipher
cipher_ECDHE_RSA_AES128GCM_SHA256 ]
[]
[]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead [ Cipher
cipher_DHE_RSA_AES256GCM_SHA384 ]
[ Cipher
cipher_DHE_RSA_CHACHA20POLY1305_SHA256 ]
[ Cipher
cipher_DHE_RSA_AES256CCM_SHA256 ]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead [ Cipher
cipher_DHE_RSA_AES128GCM_SHA256 ]
[]
[ Cipher
cipher_DHE_RSA_AES128CCM_SHA256 ]
, [Cipher] -> CipherSet
SetOther
[ Cipher
cipher_ECDHE_ECDSA_AES256CBC_SHA384
, Cipher
cipher_ECDHE_RSA_AES256CBC_SHA384
, Cipher
cipher_DHE_RSA_AES256_SHA256
]
, [Cipher] -> CipherSet
SetOther
[ Cipher
cipher_ECDHE_ECDSA_AES256CBC_SHA
, Cipher
cipher_ECDHE_RSA_AES256CBC_SHA
, Cipher
cipher_DHE_RSA_AES256_SHA1
]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead [ Cipher
cipher_AES256GCM_SHA384 ]
[]
[ Cipher
cipher_AES256CCM_SHA256 ]
, [Cipher] -> CipherSet
SetOther [ Cipher
cipher_AES256_SHA256 ]
, [Cipher] -> CipherSet
SetOther [ Cipher
cipher_AES256_SHA1 ]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead [ Cipher
cipher_TLS13_AES256GCM_SHA384 ]
[ Cipher
cipher_TLS13_CHACHA20POLY1305_SHA256 ]
[]
, [Cipher] -> [Cipher] -> [Cipher] -> CipherSet
SetAead [ Cipher
cipher_TLS13_AES128GCM_SHA256 ]
[]
[ Cipher
cipher_TLS13_AES128CCM_SHA256 ]
]
ciphersuite_dhe_rsa :: [Cipher]
ciphersuite_dhe_rsa :: [Cipher]
ciphersuite_dhe_rsa = [ Cipher
cipher_DHE_RSA_AES256GCM_SHA384, Cipher
cipher_DHE_RSA_AES256CCM_SHA256
, Cipher
cipher_DHE_RSA_CHACHA20POLY1305_SHA256
, Cipher
cipher_DHE_RSA_AES128GCM_SHA256, Cipher
cipher_DHE_RSA_AES128CCM_SHA256
, Cipher
cipher_DHE_RSA_AES256_SHA256, Cipher
cipher_DHE_RSA_AES128_SHA256
, Cipher
cipher_DHE_RSA_AES256_SHA1, Cipher
cipher_DHE_RSA_AES128_SHA1
]
ciphersuite_dhe_dss :: [Cipher]
ciphersuite_dhe_dss :: [Cipher]
ciphersuite_dhe_dss = [Cipher
cipher_DHE_DSS_AES256_SHA1, Cipher
cipher_DHE_DSS_AES128_SHA1, Cipher
cipher_DHE_DSS_RC4_SHA1]
ciphersuite_unencrypted :: [Cipher]
ciphersuite_unencrypted :: [Cipher]
ciphersuite_unencrypted = [Cipher
cipher_null_MD5, Cipher
cipher_null_SHA1]
bulk_null, bulk_rc4, bulk_aes128, bulk_aes256, bulk_tripledes_ede, bulk_aes128gcm, bulk_aes256gcm :: Bulk
bulk_aes128ccm, bulk_aes128ccm8, bulk_aes256ccm, bulk_aes256ccm8, bulk_chacha20poly1305 :: Bulk
bulk_null :: Bulk
bulk_null = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"null"
, bulkKeySize :: Int
bulkKeySize = Int
0
, bulkIVSize :: Int
bulkIVSize = Int
0
, bulkExplicitIV :: Int
bulkExplicitIV = Int
0
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
0
, bulkBlockSize :: Int
bulkBlockSize = Int
0
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkStream) -> BulkFunctions
BulkStreamF forall {p} {p}. p -> p -> BulkStream
passThrough
}
where
passThrough :: p -> p -> BulkStream
passThrough p
_ p
_ = (BulkKey -> (BulkKey, BulkStream)) -> BulkStream
BulkStream BulkKey -> (BulkKey, BulkStream)
go where go :: BulkKey -> (BulkKey, BulkStream)
go BulkKey
inp = (BulkKey
inp, (BulkKey -> (BulkKey, BulkStream)) -> BulkStream
BulkStream BulkKey -> (BulkKey, BulkStream)
go)
bulk_rc4 :: Bulk
bulk_rc4 = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"RC4-128"
, bulkKeySize :: Int
bulkKeySize = Int
16
, bulkIVSize :: Int
bulkIVSize = Int
0
, bulkExplicitIV :: Int
bulkExplicitIV = Int
0
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
0
, bulkBlockSize :: Int
bulkBlockSize = Int
0
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkStream) -> BulkFunctions
BulkStreamF BulkDirection -> BulkKey -> BulkStream
rc4
}
bulk_aes128 :: Bulk
bulk_aes128 = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"AES128"
, bulkKeySize :: Int
bulkKeySize = Int
16
, bulkIVSize :: Int
bulkIVSize = Int
16
, bulkExplicitIV :: Int
bulkExplicitIV = Int
0
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
0
, bulkBlockSize :: Int
bulkBlockSize = Int
16
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkBlock) -> BulkFunctions
BulkBlockF BulkDirection -> BulkKey -> BulkBlock
aes128cbc
}
bulk_aes128ccm :: Bulk
bulk_aes128ccm = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"AES128CCM"
, bulkKeySize :: Int
bulkKeySize = Int
16
, bulkIVSize :: Int
bulkIVSize = Int
4
, bulkExplicitIV :: Int
bulkExplicitIV = Int
8
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
16
, bulkBlockSize :: Int
bulkBlockSize = Int
0
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkAEAD) -> BulkFunctions
BulkAeadF BulkDirection -> BulkKey -> BulkAEAD
aes128ccm
}
bulk_aes128ccm8 :: Bulk
bulk_aes128ccm8 = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"AES128CCM8"
, bulkKeySize :: Int
bulkKeySize = Int
16
, bulkIVSize :: Int
bulkIVSize = Int
4
, bulkExplicitIV :: Int
bulkExplicitIV = Int
8
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
8
, bulkBlockSize :: Int
bulkBlockSize = Int
0
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkAEAD) -> BulkFunctions
BulkAeadF BulkDirection -> BulkKey -> BulkAEAD
aes128ccm8
}
bulk_aes128gcm :: Bulk
bulk_aes128gcm = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"AES128GCM"
, bulkKeySize :: Int
bulkKeySize = Int
16
, bulkIVSize :: Int
bulkIVSize = Int
4
, bulkExplicitIV :: Int
bulkExplicitIV = Int
8
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
16
, bulkBlockSize :: Int
bulkBlockSize = Int
0
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkAEAD) -> BulkFunctions
BulkAeadF BulkDirection -> BulkKey -> BulkAEAD
aes128gcm
}
bulk_aes256ccm :: Bulk
bulk_aes256ccm = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"AES256CCM"
, bulkKeySize :: Int
bulkKeySize = Int
32
, bulkIVSize :: Int
bulkIVSize = Int
4
, bulkExplicitIV :: Int
bulkExplicitIV = Int
8
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
16
, bulkBlockSize :: Int
bulkBlockSize = Int
0
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkAEAD) -> BulkFunctions
BulkAeadF BulkDirection -> BulkKey -> BulkAEAD
aes256ccm
}
bulk_aes256ccm8 :: Bulk
bulk_aes256ccm8 = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"AES256CCM8"
, bulkKeySize :: Int
bulkKeySize = Int
32
, bulkIVSize :: Int
bulkIVSize = Int
4
, bulkExplicitIV :: Int
bulkExplicitIV = Int
8
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
8
, bulkBlockSize :: Int
bulkBlockSize = Int
0
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkAEAD) -> BulkFunctions
BulkAeadF BulkDirection -> BulkKey -> BulkAEAD
aes256ccm8
}
bulk_aes256gcm :: Bulk
bulk_aes256gcm = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"AES256GCM"
, bulkKeySize :: Int
bulkKeySize = Int
32
, bulkIVSize :: Int
bulkIVSize = Int
4
, bulkExplicitIV :: Int
bulkExplicitIV = Int
8
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
16
, bulkBlockSize :: Int
bulkBlockSize = Int
0
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkAEAD) -> BulkFunctions
BulkAeadF BulkDirection -> BulkKey -> BulkAEAD
aes256gcm
}
bulk_aes256 :: Bulk
bulk_aes256 = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"AES256"
, bulkKeySize :: Int
bulkKeySize = Int
32
, bulkIVSize :: Int
bulkIVSize = Int
16
, bulkExplicitIV :: Int
bulkExplicitIV = Int
0
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
0
, bulkBlockSize :: Int
bulkBlockSize = Int
16
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkBlock) -> BulkFunctions
BulkBlockF BulkDirection -> BulkKey -> BulkBlock
aes256cbc
}
bulk_tripledes_ede :: Bulk
bulk_tripledes_ede = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"3DES-EDE-CBC"
, bulkKeySize :: Int
bulkKeySize = Int
24
, bulkIVSize :: Int
bulkIVSize = Int
8
, bulkExplicitIV :: Int
bulkExplicitIV = Int
0
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
0
, bulkBlockSize :: Int
bulkBlockSize = Int
8
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkBlock) -> BulkFunctions
BulkBlockF BulkDirection -> BulkKey -> BulkBlock
tripledes_ede
}
bulk_chacha20poly1305 :: Bulk
bulk_chacha20poly1305 = Bulk
{ bulkName :: [Char]
bulkName = [Char]
"CHACHA20POLY1305"
, bulkKeySize :: Int
bulkKeySize = Int
32
, bulkIVSize :: Int
bulkIVSize = Int
12
, bulkExplicitIV :: Int
bulkExplicitIV = Int
0
, bulkAuthTagLen :: Int
bulkAuthTagLen = Int
16
, bulkBlockSize :: Int
bulkBlockSize = Int
0
, bulkF :: BulkFunctions
bulkF = (BulkDirection -> BulkKey -> BulkAEAD) -> BulkFunctions
BulkAeadF BulkDirection -> BulkKey -> BulkAEAD
chacha20poly1305
}
bulk_aes128gcm_13, bulk_aes256gcm_13, bulk_aes128ccm_13, bulk_aes128ccm8_13 :: Bulk
bulk_aes128gcm_13 :: Bulk
bulk_aes128gcm_13 = Bulk
bulk_aes128gcm { bulkIVSize :: Int
bulkIVSize = Int
12, bulkExplicitIV :: Int
bulkExplicitIV = Int
0 }
bulk_aes256gcm_13 :: Bulk
bulk_aes256gcm_13 = Bulk
bulk_aes256gcm { bulkIVSize :: Int
bulkIVSize = Int
12, bulkExplicitIV :: Int
bulkExplicitIV = Int
0 }
bulk_aes128ccm_13 :: Bulk
bulk_aes128ccm_13 = Bulk
bulk_aes128ccm { bulkIVSize :: Int
bulkIVSize = Int
12, bulkExplicitIV :: Int
bulkExplicitIV = Int
0 }
bulk_aes128ccm8_13 :: Bulk
bulk_aes128ccm8_13 = Bulk
bulk_aes128ccm8 { bulkIVSize :: Int
bulkIVSize = Int
12, bulkExplicitIV :: Int
bulkExplicitIV = Int
0 }
cipher_null_MD5 :: Cipher
cipher_null_MD5 :: Cipher
cipher_null_MD5 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x0001
, cipherName :: [Char]
cipherName = [Char]
"RSA-null-MD5"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_null
, cipherHash :: Hash
cipherHash = Hash
MD5
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. Maybe a
Nothing
}
cipher_null_SHA1 :: Cipher
cipher_null_SHA1 :: Cipher
cipher_null_SHA1 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x0002
, cipherName :: [Char]
cipherName = [Char]
"RSA-null-SHA1"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_null
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. Maybe a
Nothing
}
cipher_RC4_128_MD5 :: Cipher
cipher_RC4_128_MD5 :: Cipher
cipher_RC4_128_MD5 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x0004
, cipherName :: [Char]
cipherName = [Char]
"RSA-rc4-128-md5"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_rc4
, cipherHash :: Hash
cipherHash = Hash
MD5
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. Maybe a
Nothing
}
cipher_RC4_128_SHA1 :: Cipher
cipher_RC4_128_SHA1 :: Cipher
cipher_RC4_128_SHA1 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x0005
, cipherName :: [Char]
cipherName = [Char]
"RSA-rc4-128-sha1"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_rc4
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. Maybe a
Nothing
}
cipher_RSA_3DES_EDE_CBC_SHA1 :: Cipher
cipher_RSA_3DES_EDE_CBC_SHA1 :: Cipher
cipher_RSA_3DES_EDE_CBC_SHA1 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x000A
, cipherName :: [Char]
cipherName = [Char]
"RSA-3DES-EDE-CBC-SHA1"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_tripledes_ede
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. Maybe a
Nothing
}
cipher_AES128_SHA1 :: Cipher
cipher_AES128_SHA1 :: Cipher
cipher_AES128_SHA1 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x002F
, cipherName :: [Char]
cipherName = [Char]
"RSA-AES128-SHA1"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
SSL3
}
cipher_DHE_DSS_AES128_SHA1 :: Cipher
cipher_DHE_DSS_AES128_SHA1 :: Cipher
cipher_DHE_DSS_AES128_SHA1 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x0032
, cipherName :: [Char]
cipherName = [Char]
"DHE-DSA-AES128-SHA1"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_DHE_DSS
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. Maybe a
Nothing
}
cipher_DHE_RSA_AES128_SHA1 :: Cipher
cipher_DHE_RSA_AES128_SHA1 :: Cipher
cipher_DHE_RSA_AES128_SHA1 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x0033
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-AES128-SHA1"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_DHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. Maybe a
Nothing
}
cipher_AES256_SHA1 :: Cipher
cipher_AES256_SHA1 :: Cipher
cipher_AES256_SHA1 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x0035
, cipherName :: [Char]
cipherName = [Char]
"RSA-AES256-SHA1"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
SSL3
}
cipher_DHE_DSS_AES256_SHA1 :: Cipher
cipher_DHE_DSS_AES256_SHA1 :: Cipher
cipher_DHE_DSS_AES256_SHA1 = Cipher
cipher_DHE_DSS_AES128_SHA1
{ cipherID :: CipherID
cipherID = CipherID
0x0038
, cipherName :: [Char]
cipherName = [Char]
"DHE-DSA-AES256-SHA1"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256
}
cipher_DHE_RSA_AES256_SHA1 :: Cipher
cipher_DHE_RSA_AES256_SHA1 :: Cipher
cipher_DHE_RSA_AES256_SHA1 = Cipher
cipher_DHE_RSA_AES128_SHA1
{ cipherID :: CipherID
cipherID = CipherID
0x0039
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-AES256-SHA1"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256
}
cipher_AES128_SHA256 :: Cipher
cipher_AES128_SHA256 :: Cipher
cipher_AES128_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x003C
, cipherName :: [Char]
cipherName = [Char]
"RSA-AES128-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_AES256_SHA256 :: Cipher
cipher_AES256_SHA256 :: Cipher
cipher_AES256_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x003D
, cipherName :: [Char]
cipherName = [Char]
"RSA-AES256-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_DHE_DSS_RC4_SHA1 :: Cipher
cipher_DHE_DSS_RC4_SHA1 :: Cipher
cipher_DHE_DSS_RC4_SHA1 = Cipher
cipher_DHE_DSS_AES128_SHA1
{ cipherID :: CipherID
cipherID = CipherID
0x0066
, cipherName :: [Char]
cipherName = [Char]
"DHE-DSA-RC4-SHA1"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_rc4
}
cipher_DHE_RSA_AES128_SHA256 :: Cipher
cipher_DHE_RSA_AES128_SHA256 :: Cipher
cipher_DHE_RSA_AES128_SHA256 = Cipher
cipher_DHE_RSA_AES128_SHA1
{ cipherID :: CipherID
cipherID = CipherID
0x0067
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-AES128-SHA256"
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_DHE_RSA_AES256_SHA256 :: Cipher
cipher_DHE_RSA_AES256_SHA256 :: Cipher
cipher_DHE_RSA_AES256_SHA256 = Cipher
cipher_DHE_RSA_AES128_SHA256
{ cipherID :: CipherID
cipherID = CipherID
0x006B
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-AES256-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256
}
cipher_AES128CCM_SHA256 :: Cipher
cipher_AES128CCM_SHA256 :: Cipher
cipher_AES128CCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc09c
, cipherName :: [Char]
cipherName = [Char]
"RSA-AES128CCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128ccm
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_AES128CCM8_SHA256 :: Cipher
cipher_AES128CCM8_SHA256 :: Cipher
cipher_AES128CCM8_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc0a0
, cipherName :: [Char]
cipherName = [Char]
"RSA-AES128CCM8-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128ccm8
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_AES128GCM_SHA256 :: Cipher
cipher_AES128GCM_SHA256 :: Cipher
cipher_AES128GCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x009C
, cipherName :: [Char]
cipherName = [Char]
"RSA-AES128GCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128gcm
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_AES256CCM_SHA256 :: Cipher
cipher_AES256CCM_SHA256 :: Cipher
cipher_AES256CCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc09d
, cipherName :: [Char]
cipherName = [Char]
"RSA-AES256CCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256ccm
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_AES256CCM8_SHA256 :: Cipher
cipher_AES256CCM8_SHA256 :: Cipher
cipher_AES256CCM8_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc0a1
, cipherName :: [Char]
cipherName = [Char]
"RSA-AES256CCM8-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256ccm8
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_AES256GCM_SHA384 :: Cipher
cipher_AES256GCM_SHA384 :: Cipher
cipher_AES256GCM_SHA384 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x009D
, cipherName :: [Char]
cipherName = [Char]
"RSA-AES256GCM-SHA384"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256gcm
, cipherHash :: Hash
cipherHash = Hash
SHA384
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA384
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_DHE_RSA_AES128CCM_SHA256 :: Cipher
cipher_DHE_RSA_AES128CCM_SHA256 :: Cipher
cipher_DHE_RSA_AES128CCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc09e
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-AES128CCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128ccm
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_DHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_DHE_RSA_AES128CCM8_SHA256 :: Cipher
cipher_DHE_RSA_AES128CCM8_SHA256 :: Cipher
cipher_DHE_RSA_AES128CCM8_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc0a2
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-AES128CCM8-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128ccm8
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_DHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_DHE_RSA_AES128GCM_SHA256 :: Cipher
cipher_DHE_RSA_AES128GCM_SHA256 :: Cipher
cipher_DHE_RSA_AES128GCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x009E
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-AES128GCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128gcm
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_DHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_DHE_RSA_AES256CCM_SHA256 :: Cipher
cipher_DHE_RSA_AES256CCM_SHA256 :: Cipher
cipher_DHE_RSA_AES256CCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc09f
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-AES256CCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256ccm
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_DHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_DHE_RSA_AES256CCM8_SHA256 :: Cipher
cipher_DHE_RSA_AES256CCM8_SHA256 :: Cipher
cipher_DHE_RSA_AES256CCM8_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc0a3
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-AES256CCM8-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256ccm8
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_DHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_DHE_RSA_AES256GCM_SHA384 :: Cipher
cipher_DHE_RSA_AES256GCM_SHA384 :: Cipher
cipher_DHE_RSA_AES256GCM_SHA384 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x009F
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-AES256GCM-SHA384"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256gcm
, cipherHash :: Hash
cipherHash = Hash
SHA384
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA384
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_DHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_RSA_CHACHA20POLY1305_SHA256 :: Cipher
cipher_ECDHE_RSA_CHACHA20POLY1305_SHA256 :: Cipher
cipher_ECDHE_RSA_CHACHA20POLY1305_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xCCA8
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-RSA-CHACHA20POLY1305-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_chacha20poly1305
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_ECDSA_CHACHA20POLY1305_SHA256 :: Cipher
cipher_ECDHE_ECDSA_CHACHA20POLY1305_SHA256 :: Cipher
cipher_ECDHE_ECDSA_CHACHA20POLY1305_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xCCA9
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-CHACHA20POLY1305-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_chacha20poly1305
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_DHE_RSA_CHACHA20POLY1305_SHA256 :: Cipher
cipher_DHE_RSA_CHACHA20POLY1305_SHA256 :: Cipher
cipher_DHE_RSA_CHACHA20POLY1305_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xCCAA
, cipherName :: [Char]
cipherName = [Char]
"DHE-RSA-CHACHA20POLY1305-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_chacha20poly1305
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_DHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_TLS13_AES128GCM_SHA256 :: Cipher
cipher_TLS13_AES128GCM_SHA256 :: Cipher
cipher_TLS13_AES128GCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x1301
, cipherName :: [Char]
cipherName = [Char]
"AES128GCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128gcm_13
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_TLS13
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS13
}
cipher_TLS13_AES256GCM_SHA384 :: Cipher
cipher_TLS13_AES256GCM_SHA384 :: Cipher
cipher_TLS13_AES256GCM_SHA384 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x1302
, cipherName :: [Char]
cipherName = [Char]
"AES256GCM-SHA384"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256gcm_13
, cipherHash :: Hash
cipherHash = Hash
SHA384
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_TLS13
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS13
}
cipher_TLS13_CHACHA20POLY1305_SHA256 :: Cipher
cipher_TLS13_CHACHA20POLY1305_SHA256 :: Cipher
cipher_TLS13_CHACHA20POLY1305_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x1303
, cipherName :: [Char]
cipherName = [Char]
"CHACHA20POLY1305-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_chacha20poly1305
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_TLS13
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS13
}
cipher_TLS13_AES128CCM_SHA256 :: Cipher
cipher_TLS13_AES128CCM_SHA256 :: Cipher
cipher_TLS13_AES128CCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x1304
, cipherName :: [Char]
cipherName = [Char]
"AES128CCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128ccm_13
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_TLS13
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS13
}
cipher_TLS13_AES128CCM8_SHA256 :: Cipher
cipher_TLS13_AES128CCM8_SHA256 :: Cipher
cipher_TLS13_AES128CCM8_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0x1305
, cipherName :: [Char]
cipherName = [Char]
"AES128CCM8-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128ccm8_13
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_TLS13
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS13
}
cipher_ECDHE_ECDSA_AES128CBC_SHA :: Cipher
cipher_ECDHE_ECDSA_AES128CBC_SHA :: Cipher
cipher_ECDHE_ECDSA_AES128CBC_SHA = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC009
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-AES128CBC-SHA"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS10
}
cipher_ECDHE_ECDSA_AES256CBC_SHA :: Cipher
cipher_ECDHE_ECDSA_AES256CBC_SHA :: Cipher
cipher_ECDHE_ECDSA_AES256CBC_SHA = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC00A
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-AES256CBC-SHA"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS10
}
cipher_ECDHE_RSA_AES128CBC_SHA :: Cipher
cipher_ECDHE_RSA_AES128CBC_SHA :: Cipher
cipher_ECDHE_RSA_AES128CBC_SHA = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC013
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-RSA-AES128CBC-SHA"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS10
}
cipher_ECDHE_RSA_AES256CBC_SHA :: Cipher
cipher_ECDHE_RSA_AES256CBC_SHA :: Cipher
cipher_ECDHE_RSA_AES256CBC_SHA = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC014
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-RSA-AES256CBC-SHA"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256
, cipherHash :: Hash
cipherHash = Hash
SHA1
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. Maybe a
Nothing
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS10
}
cipher_ECDHE_RSA_AES128CBC_SHA256 :: Cipher
cipher_ECDHE_RSA_AES128CBC_SHA256 :: Cipher
cipher_ECDHE_RSA_AES128CBC_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC027
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-RSA-AES128CBC-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_RSA_AES256CBC_SHA384 :: Cipher
cipher_ECDHE_RSA_AES256CBC_SHA384 :: Cipher
cipher_ECDHE_RSA_AES256CBC_SHA384 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC028
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-RSA-AES256CBC-SHA384"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256
, cipherHash :: Hash
cipherHash = Hash
SHA384
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA384
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_ECDSA_AES128CBC_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES128CBC_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES128CBC_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc023
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-AES128CBC-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_ECDSA_AES256CBC_SHA384 :: Cipher
cipher_ECDHE_ECDSA_AES256CBC_SHA384 :: Cipher
cipher_ECDHE_ECDSA_AES256CBC_SHA384 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC024
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-AES256CBC-SHA384"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256
, cipherHash :: Hash
cipherHash = Hash
SHA384
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA384
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_ECDSA_AES128CCM_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES128CCM_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES128CCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc0ac
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-AES128CCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128ccm
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_ECDSA_AES128CCM8_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES128CCM8_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES128CCM8_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc0ae
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-AES128CCM8-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128ccm8
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_ECDSA_AES128GCM_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES128GCM_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES128GCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC02B
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-AES128GCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128gcm
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_ECDSA_AES256CCM_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES256CCM_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES256CCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc0ad
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-AES256CCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256ccm
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_ECDSA_AES256CCM8_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES256CCM8_SHA256 :: Cipher
cipher_ECDHE_ECDSA_AES256CCM8_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xc0af
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-AES256CCM8-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256ccm8
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_ECDSA_AES256GCM_SHA384 :: Cipher
cipher_ECDHE_ECDSA_AES256GCM_SHA384 :: Cipher
cipher_ECDHE_ECDSA_AES256GCM_SHA384 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC02C
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-ECDSA-AES256GCM-SHA384"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256gcm
, cipherHash :: Hash
cipherHash = Hash
SHA384
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA384
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_ECDSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_RSA_AES128GCM_SHA256 :: Cipher
cipher_ECDHE_RSA_AES128GCM_SHA256 :: Cipher
cipher_ECDHE_RSA_AES128GCM_SHA256 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC02F
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-RSA-AES128GCM-SHA256"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes128gcm
, cipherHash :: Hash
cipherHash = Hash
SHA256
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA256
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}
cipher_ECDHE_RSA_AES256GCM_SHA384 :: Cipher
cipher_ECDHE_RSA_AES256GCM_SHA384 :: Cipher
cipher_ECDHE_RSA_AES256GCM_SHA384 = Cipher
{ cipherID :: CipherID
cipherID = CipherID
0xC030
, cipherName :: [Char]
cipherName = [Char]
"ECDHE-RSA-AES256GCM-SHA384"
, cipherBulk :: Bulk
cipherBulk = Bulk
bulk_aes256gcm
, cipherHash :: Hash
cipherHash = Hash
SHA384
, cipherPRFHash :: Maybe Hash
cipherPRFHash = forall a. a -> Maybe a
Just Hash
SHA384
, cipherKeyExchange :: CipherKeyExchangeType
cipherKeyExchange = CipherKeyExchangeType
CipherKeyExchange_ECDHE_RSA
, cipherMinVer :: Maybe Version
cipherMinVer = forall a. a -> Maybe a
Just Version
TLS12
}