openssl-streams-1.2.3.0: OpenSSL network support for io-streams.

Safe Haskell | None
Language | Haskell2010

System.IO.Streams.SSL

Description

This module provides convenience functions for interfacing `io-streams` with `HsOpenSSL`. It is intended to be imported `qualified`, e.g.:

    import qualified OpenSSL as SSL
    import qualified OpenSSL.Session as SSL
    import qualified System.IO.Streams.SSL as SSLStreams

     example :: IO (InputStream ByteString, OutputStream ByteString)
    example = SSL.withOpenSSL $ do
        ctx <- SSL.context
        SSL.contextSetDefaultCiphers ctx

         -- Note: the location of the system certificates is system-dependent,
        -- on Linux systems this is usually "/etc/ssl/certs". This
        -- step is optional if you choose to disable certificate verification
        -- (not recommended!).
        SSL.contextSetCADirectory ctx "/etc/ssl/certs"
        SSL.contextSetVerificationMode ctx $
            SSL.VerifyPeer True True Nothing
        SSLStreams.connect ctx "foo.com" 4444

Synopsis

- connect :: SSLContext -> HostName -> PortNumber -> IO (InputStream ByteString, OutputStream ByteString, SSL)
- withConnection :: SSLContext -> HostName -> PortNumber -> (InputStream ByteString -> OutputStream ByteString -> SSL -> IO a) -> IO a
- sslToStreams :: SSL -> IO (InputStream ByteString, OutputStream ByteString)

# Documentation

connect Source #

Arguments

:: SSLContext | SSL context. See the `HsOpenSSL` documentation for information on creating this.
-> 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 `(`HostName`, `PortNumber`)` combination.

Note that sending an end-of-file to the returned `OutputStream` will not close the underlying SSL connection; to do that, call:

    SSL.shutdown ssl SSL.Unidirectional
    maybe (return ()) close $ SSL.sslSocket ssl

on the returned `SSL` object.

withConnection Source #

Arguments

:: SSLContext | SSL context. See the `HsOpenSSL` documentation for information on creating this.
-> HostName | hostname to connect to
-> PortNumber | port number to connect to
-> (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 `(`HostName`, `PortNumber`)` combination. The socket and SSL connection are closed and deleted after the user handler runs.

Since: 1.2.0.0.

sslToStreams Source #

Arguments

:: SSL | SSL connection object
-> IO (InputStream ByteString, OutputStream ByteString) |

Given an existing HsOpenSSL `SSL` connection, produces an `InputStream` / `OutputStream` pair.