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

Safe HaskellNone
LanguageHaskell2010

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

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.