Simple interface to TLS secured network sockets.

Version on this page:0.3.2
LTS Haskell 21.25:0.4.1
Stackage Nightly 2024-07-13:0.4.2
Latest on Hackage:0.4.2

See all snapshots network-simple-tls appears in

BSD-3-Clause licensed by Renzo Carbonara
Maintained by renλ
This version can be pinned in stack with:network-simple-tls-0.3.2@sha256:ba1e6f612696b20fba6bcd9bce258e608c55b279c60058c3c38e06119039ebd1,1277

Module documentation for 0.3.2


Build Status

Haskell library simplifying the useage of TLS secured network connections. Currently, only TCP sockets are supported. This package aims to be similar and compatible with the network-simple package.

Check the source or rendered Haddocks for extensive documentation.

This code is licensed under the terms of the so called 3-clause BSD license. Read the file named LICENSE found in this same directory for details.

See the PEOPLE file to learn about the people involved in this effort.


Version 0.3.2

  • Added sendLazy.

  • Fixed space leak on recv. See issue #13.

Version 0.3.1

  • Added SOCKS5 proxy support. See functions connectOverSOCKS5 and connectTlsOverSOCKS5.

  • Use safe-exceptions.

Version 0.3

  • BREAKING CHANGE: Changed type of the following functions: getDefaultClientSettings, makeClientSettings, updateClientParams, clientParams, makeServerSettings, updateServerParams, serverParams.

  • BREAKING CHANGE: Only TLS 1.1 and TLS 1.2 are supported by default.

  • Server’s choice of ciphers are always prefered over client’s.

  • Server code will mandate strong cipher requirements, client code will be more permissive.

  • Compatible with tls-1.4

  • Remove upper bounds for all dependencies except base.

Version 0.2.1

  • Ensure that the Socket TLS backend always receive the expected number of bytes. This issue showed up as the following exception previously:

    Error_Packet "partial packet: expecting 100 bytes, got: 6"

Version 0.2.0

  • Re-export Socket, SockAddr, HostName and ServiceName from Network.Socket at Network.Simple.TCP.TLS.

  • Re-export Context from Network.TLS at Network.Simple.TCP.TLS.

  • Generalize the IO monad by using MonadIO and MonadCatch (from the exceptions library).

  • Added makeClientContext, makeServerContext and useTlsThenClose.

  • Use Socket as a TLS backend instead of Handle.

  • Drop dependency on monad-random-api in favour of monad-random.

  • Dependency bumps.


  • Export ‘Network.Socket.withSocketsDo’ from ‘Network.Simple.TCP.TLS’.


  • Dependency bumps.


  • First release.