Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data FinishRequest = FinishRequest
- type ProtocolSelector = [ByteString] -> IO (Maybe Int)
- class IOChannels session => TLSContext ctx session | ctx -> session, session -> ctx where
- newTLSContextFromMemory :: ByteString -> ByteString -> ProtocolSelector -> IO ctx
- newTLSContextFromCertFileNames :: ByteString -> ByteString -> ProtocolSelector -> IO ctx
- unencryptTLSServerIO :: forall cipherio. TLSServerIO cipherio => ctx -> cipherio -> IO session
- getSelectedProtocol :: session -> IO (Maybe (Int, ByteString))
- newtype ConnectionId = ConnectionId Int64
- data ConnectionEvent
- data ConnectionCallbacks = ConnectionCallbacks {
- _logEvents_CoCa :: Maybe LogCallback
- logEvents_CoCa :: Iso' ConnectionCallbacks (Maybe LogCallback)
- defaultConnectionCallbacks :: ConnectionCallbacks
Documentation
data FinishRequest
Singleton type. Used in conjunction with an MVar
. If the MVar is full,
the fuction tlsServeWithALPNAndFinishOnRequest
knows that it should finish
at its earliest convenience and call the CloseAction
for any open sessions.
type ProtocolSelector = [ByteString] -> IO (Maybe Int)
Callback function to select a protocol during the ALPN negotiation phase. Given a list of ALPN identifiers, if something is suitable, return it.
class IOChannels session => TLSContext ctx session | ctx -> session, session -> ctx where
Class to have different kinds of TLS backends. Included here and enabled through 'enable-botan' is support for using Botan as a backend. HTTP/2 requires TLS 1.2 and ALPN, so older versions of many TLS libraries are not suitable.
newTLSContextFromMemory :: ByteString -> ByteString -> ProtocolSelector -> IO ctx
newTLSContextFromMemory cert_data key_data protocol_selector creates a new context, provided certificate data. The certificate data must be in X509 format. The private key should be in PKCS8 format without password.
newTLSContextFromCertFileNames
:: ByteString | |
-> ByteString | |
-> ProtocolSelector | |
-> IO ctx | newTLSContextFromMemory cert_filename key_filename protocol_selector ^ Same as before, but using filename instead of certificates loaded into memory. |
unencryptTLSServerIO :: forall cipherio. TLSServerIO cipherio => ctx -> cipherio -> IO session
Returns the protocoll finally selected for a session.
getSelectedProtocol :: session -> IO (Maybe (Int, ByteString))
newtype ConnectionId
A connection number
data ConnectionEvent
Connection events
Established_CoEv SockAddr ConnectionId Int64 | New connection. The second member says how many live connections are now |
ALPNFailed_CoEv ConnectionId | An ALPN negotiation failed |
Ended_CoEv ConnectionId | A connection ended. |
data ConnectionCallbacks
Callbacks used by client applications to get notified about interesting events happening at a connection level, or to get asked about things (e.g, about if it is proper to accept a connection). These are used from CoreServer
ConnectionCallbacks | |
|
logEvents_CoCa :: Iso' ConnectionCallbacks (Maybe LogCallback)
defaultConnectionCallbacks :: ConnectionCallbacks
Default connections callback. Empty