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.
Be sure to use withOpenSSL
wrap your operation before using any functions here.
otherwise a segmentation fault will happen.
- 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)
- withOpenSSL :: IO a -> IO a
- sslToStreams :: SSL -> IO (InputStream ByteString, OutputStream ByteString)
- closeSSL :: SSL -> IO ()
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
withOpenSSL :: IO a -> IO a #
Computation of
initializes the OpenSSL
library as necessary, and computes withOpenSSL
actionaction
. Every application that
uses HsOpenSSL must wrap any operations involving OpenSSL with
withOpenSSL
, or they might crash:
module Main where import OpenSSL main :: IO () main = withOpenSSL $ do ...
Since 0.10.3.5, withOpenSSL
is safe to be applied
redundantly. Library authors may wish to wrap their functions not
to force their users to think about initialization:
get :: URI -> IO Response get uri = withOpenSSL $ internalImplementationOfGet uri
:: SSL | SSL connection object |
-> IO (InputStream ByteString, OutputStream ByteString) |
Given an existing HsOpenSSL SSL
connection, produces an InputStream
/
OutputStream
pair.