Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module provides convenience functions for interfacing io-streams
with HsOpenSSL
. ssl/SSL
here stand for HsOpenSSL
library, not the
deprecated SSL 2.0/3.0 protocol. the receive buffer size is 32752.
sending is unbuffered, anything write into OutputStream
will be immediately
send to underlying socket.
The same exceptions rule which applied to TCP apply here, with addtional
SomeSSLException
to be watched out.
This module is intended to be imported qualified
, e.g.:
import qualified Data.SSLSetting as SSL import qualified System.IO.Streams.OpenSSL as SSL
- connect :: SSLContext -> Maybe String -> HostName -> PortNumber -> IO (InputStream ByteString, OutputStream ByteString, SSL)
- withConnection :: SSLContext -> Maybe String -> HostName -> PortNumber -> (InputStream ByteString -> OutputStream ByteString -> SSL -> IO a) -> IO a
- accept :: SSLContext -> Socket -> IO (InputStream ByteString, OutputStream ByteString, SSL, SockAddr)
- sslToStreams :: SSL -> IO (InputStream ByteString, OutputStream ByteString)
- close :: SSL -> IO ()
- module Data.OpenSSLSetting
client
:: SSLContext | SSL context. See the |
-> Maybe String | Optional certificate subject name, if set to |
-> HostName | hostname to connect to |
-> PortNumber | port number to connect to |
-> IO (InputStream ByteString, OutputStream ByteString, SSL) |
Convenience function for initiating an SSL connection to the given
(
combination.HostName
, PortNumber
)
this function will try to verify server's identity,
a ProtocolError
will be thrown if fail.
:: SSLContext | |
-> Maybe String | |
-> HostName | |
-> PortNumber | |
-> (InputStream ByteString -> OutputStream ByteString -> SSL -> IO a) | Action to run with the new connection |
-> IO a |
Convenience function for initiating an SSL connection to the given
(
combination. The socket and SSL connection are
closed and deleted after the user handler runs.HostName
, PortNumber
)
server
:: SSLContext | check Data.OpenSSLSetting. |
-> Socket | the listening |
-> IO (InputStream ByteString, OutputStream ByteString, SSL, SockAddr) |
Accept a new connection from remote client, return a InputStream
/ OutputStream
pair and remote SockAddr
, you should call bindAndListen
first.
this operation will throw SomeSSLException
on failure.
helpers
:: SSL | SSL connection object |
-> IO (InputStream ByteString, OutputStream ByteString) |
Given an existing HsOpenSSL SSL
connection, produces an InputStream
/
OutputStream
pair.
re-export helpers
module Data.OpenSSLSetting