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

Safe HaskellNone



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 4444





:: 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.



:: SSL

SSL connection object

-> IO (InputStream ByteString, OutputStream ByteString) 

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