module Network.TLS.Struct13
( Packet13(..)
, Handshake13(..)
, HandshakeType13(..)
, typeOfHandshake13
, contentType
, KeyUpdate(..)
) where
import Data.X509 (CertificateChain)
import Network.TLS.Struct
import Network.TLS.Types
import Network.TLS.Imports
data Packet13 =
Handshake13 [Handshake13]
| Alert13 [(AlertLevel, AlertDescription)]
| ChangeCipherSpec13
| AppData13 ByteString
deriving (Int -> Packet13 -> ShowS
[Packet13] -> ShowS
Packet13 -> String
(Int -> Packet13 -> ShowS)
-> (Packet13 -> String) -> ([Packet13] -> ShowS) -> Show Packet13
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Packet13] -> ShowS
$cshowList :: [Packet13] -> ShowS
show :: Packet13 -> String
$cshow :: Packet13 -> String
showsPrec :: Int -> Packet13 -> ShowS
$cshowsPrec :: Int -> Packet13 -> ShowS
Show,Packet13 -> Packet13 -> Bool
(Packet13 -> Packet13 -> Bool)
-> (Packet13 -> Packet13 -> Bool) -> Eq Packet13
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Packet13 -> Packet13 -> Bool
$c/= :: Packet13 -> Packet13 -> Bool
== :: Packet13 -> Packet13 -> Bool
$c== :: Packet13 -> Packet13 -> Bool
Eq)
data KeyUpdate = UpdateNotRequested
| UpdateRequested
deriving (Int -> KeyUpdate -> ShowS
[KeyUpdate] -> ShowS
KeyUpdate -> String
(Int -> KeyUpdate -> ShowS)
-> (KeyUpdate -> String)
-> ([KeyUpdate] -> ShowS)
-> Show KeyUpdate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [KeyUpdate] -> ShowS
$cshowList :: [KeyUpdate] -> ShowS
show :: KeyUpdate -> String
$cshow :: KeyUpdate -> String
showsPrec :: Int -> KeyUpdate -> ShowS
$cshowsPrec :: Int -> KeyUpdate -> ShowS
Show,KeyUpdate -> KeyUpdate -> Bool
(KeyUpdate -> KeyUpdate -> Bool)
-> (KeyUpdate -> KeyUpdate -> Bool) -> Eq KeyUpdate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KeyUpdate -> KeyUpdate -> Bool
$c/= :: KeyUpdate -> KeyUpdate -> Bool
== :: KeyUpdate -> KeyUpdate -> Bool
$c== :: KeyUpdate -> KeyUpdate -> Bool
Eq)
type TicketNonce = ByteString
data Handshake13 =
ClientHello13 !Version !ClientRandom !Session ![CipherID] [ExtensionRaw]
| ServerHello13 !ServerRandom !Session !CipherID [ExtensionRaw]
| NewSessionTicket13 Second Word32 TicketNonce SessionID [ExtensionRaw]
| EndOfEarlyData13
| EncryptedExtensions13 [ExtensionRaw]
| CertRequest13 CertReqContext [ExtensionRaw]
| Certificate13 CertReqContext CertificateChain [[ExtensionRaw]]
| CertVerify13 HashAndSignatureAlgorithm Signature
| Finished13 FinishedData
| KeyUpdate13 KeyUpdate
deriving (Int -> Handshake13 -> ShowS
[Handshake13] -> ShowS
Handshake13 -> String
(Int -> Handshake13 -> ShowS)
-> (Handshake13 -> String)
-> ([Handshake13] -> ShowS)
-> Show Handshake13
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Handshake13] -> ShowS
$cshowList :: [Handshake13] -> ShowS
show :: Handshake13 -> String
$cshow :: Handshake13 -> String
showsPrec :: Int -> Handshake13 -> ShowS
$cshowsPrec :: Int -> Handshake13 -> ShowS
Show,Handshake13 -> Handshake13 -> Bool
(Handshake13 -> Handshake13 -> Bool)
-> (Handshake13 -> Handshake13 -> Bool) -> Eq Handshake13
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Handshake13 -> Handshake13 -> Bool
$c/= :: Handshake13 -> Handshake13 -> Bool
== :: Handshake13 -> Handshake13 -> Bool
$c== :: Handshake13 -> Handshake13 -> Bool
Eq)
data HandshakeType13 =
HandshakeType_ClientHello13
| HandshakeType_ServerHello13
| HandshakeType_EndOfEarlyData13
| HandshakeType_NewSessionTicket13
| HandshakeType_EncryptedExtensions13
| HandshakeType_CertRequest13
| HandshakeType_Certificate13
| HandshakeType_CertVerify13
| HandshakeType_Finished13
| HandshakeType_KeyUpdate13
deriving (Int -> HandshakeType13 -> ShowS
[HandshakeType13] -> ShowS
HandshakeType13 -> String
(Int -> HandshakeType13 -> ShowS)
-> (HandshakeType13 -> String)
-> ([HandshakeType13] -> ShowS)
-> Show HandshakeType13
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [HandshakeType13] -> ShowS
$cshowList :: [HandshakeType13] -> ShowS
show :: HandshakeType13 -> String
$cshow :: HandshakeType13 -> String
showsPrec :: Int -> HandshakeType13 -> ShowS
$cshowsPrec :: Int -> HandshakeType13 -> ShowS
Show,HandshakeType13 -> HandshakeType13 -> Bool
(HandshakeType13 -> HandshakeType13 -> Bool)
-> (HandshakeType13 -> HandshakeType13 -> Bool)
-> Eq HandshakeType13
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: HandshakeType13 -> HandshakeType13 -> Bool
$c/= :: HandshakeType13 -> HandshakeType13 -> Bool
== :: HandshakeType13 -> HandshakeType13 -> Bool
$c== :: HandshakeType13 -> HandshakeType13 -> Bool
Eq)
typeOfHandshake13 :: Handshake13 -> HandshakeType13
typeOfHandshake13 :: Handshake13 -> HandshakeType13
typeOfHandshake13 ClientHello13{} = HandshakeType13
HandshakeType_ClientHello13
typeOfHandshake13 ServerHello13{} = HandshakeType13
HandshakeType_ServerHello13
typeOfHandshake13 EndOfEarlyData13{} = HandshakeType13
HandshakeType_EndOfEarlyData13
typeOfHandshake13 NewSessionTicket13{} = HandshakeType13
HandshakeType_NewSessionTicket13
typeOfHandshake13 EncryptedExtensions13{} = HandshakeType13
HandshakeType_EncryptedExtensions13
typeOfHandshake13 CertRequest13{} = HandshakeType13
HandshakeType_CertRequest13
typeOfHandshake13 Certificate13{} = HandshakeType13
HandshakeType_Certificate13
typeOfHandshake13 CertVerify13{} = HandshakeType13
HandshakeType_CertVerify13
typeOfHandshake13 Finished13{} = HandshakeType13
HandshakeType_Finished13
typeOfHandshake13 KeyUpdate13{} = HandshakeType13
HandshakeType_KeyUpdate13
instance TypeValuable HandshakeType13 where
valOfType :: HandshakeType13 -> Word8
valOfType HandshakeType13
HandshakeType_ClientHello13 = Word8
1
valOfType HandshakeType13
HandshakeType_ServerHello13 = Word8
2
valOfType HandshakeType13
HandshakeType_NewSessionTicket13 = Word8
4
valOfType HandshakeType13
HandshakeType_EndOfEarlyData13 = Word8
5
valOfType HandshakeType13
HandshakeType_EncryptedExtensions13 = Word8
8
valOfType HandshakeType13
HandshakeType_CertRequest13 = Word8
13
valOfType HandshakeType13
HandshakeType_Certificate13 = Word8
11
valOfType HandshakeType13
HandshakeType_CertVerify13 = Word8
15
valOfType HandshakeType13
HandshakeType_Finished13 = Word8
20
valOfType HandshakeType13
HandshakeType_KeyUpdate13 = Word8
24
valToType :: Word8 -> Maybe HandshakeType13
valToType Word8
1 = HandshakeType13 -> Maybe HandshakeType13
forall a. a -> Maybe a
Just HandshakeType13
HandshakeType_ClientHello13
valToType Word8
2 = HandshakeType13 -> Maybe HandshakeType13
forall a. a -> Maybe a
Just HandshakeType13
HandshakeType_ServerHello13
valToType Word8
4 = HandshakeType13 -> Maybe HandshakeType13
forall a. a -> Maybe a
Just HandshakeType13
HandshakeType_NewSessionTicket13
valToType Word8
5 = HandshakeType13 -> Maybe HandshakeType13
forall a. a -> Maybe a
Just HandshakeType13
HandshakeType_EndOfEarlyData13
valToType Word8
8 = HandshakeType13 -> Maybe HandshakeType13
forall a. a -> Maybe a
Just HandshakeType13
HandshakeType_EncryptedExtensions13
valToType Word8
13 = HandshakeType13 -> Maybe HandshakeType13
forall a. a -> Maybe a
Just HandshakeType13
HandshakeType_CertRequest13
valToType Word8
11 = HandshakeType13 -> Maybe HandshakeType13
forall a. a -> Maybe a
Just HandshakeType13
HandshakeType_Certificate13
valToType Word8
15 = HandshakeType13 -> Maybe HandshakeType13
forall a. a -> Maybe a
Just HandshakeType13
HandshakeType_CertVerify13
valToType Word8
20 = HandshakeType13 -> Maybe HandshakeType13
forall a. a -> Maybe a
Just HandshakeType13
HandshakeType_Finished13
valToType Word8
24 = HandshakeType13 -> Maybe HandshakeType13
forall a. a -> Maybe a
Just HandshakeType13
HandshakeType_KeyUpdate13
valToType Word8
_ = Maybe HandshakeType13
forall a. Maybe a
Nothing
contentType :: Packet13 -> ProtocolType
contentType :: Packet13 -> ProtocolType
contentType Packet13
ChangeCipherSpec13 = ProtocolType
ProtocolType_ChangeCipherSpec
contentType (Handshake13 [Handshake13]
_) = ProtocolType
ProtocolType_Handshake
contentType (Alert13 [(AlertLevel, AlertDescription)]
_) = ProtocolType
ProtocolType_Alert
contentType (AppData13 ByteString
_) = ProtocolType
ProtocolType_AppData