HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Moduleopenssl-streams-1.2.3.0Haskell2010

System.IO.Streams.SSL

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.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
  • 3 values
valueconnect
  1. :: SSLContext

    SSL context. See the HsOpenSSL documentation for information on creating this.

  2. -> HostName

    hostname to connect to

  3. -> PortNumber

    port number to connect to

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