ifdef::env-github[]
:important-caption: :heavy_exclamation_mark:
endif::[]

= Building for TLSv1.2 Support

If you want to include support for Transport Layer Security
(tls+tcp:// and wss:// URLs) you should follow these directions.

At this time, TLS support depends on the mbedTLS library.
See https://tls.mbed.org/ for details.

IMPORTANT: mbedTLS is licensed under different terms than NNG.
You are responsible for reading those license terms, and ensuring
that your use conforms to them.

On many distributions you may be able to install a pre-packaged version
of mbedTLS. We recommend doing so if this is an option for you.
For example, Ubuntu users can install the `libmbedtls-dev` package.

You can also build mbedTLS from source; if you choose to do so,
please make sure you also *install* it somewhere (even a temporary
staging directory). 

== Configuring NNG with mbedTLS

TLS support is not enabled by default, but can be enabled by configuring
with the CMake option `NNG_ENABLE_TLS=ON`.

By default NNG searches for an installed copy of mbedTLS in `/usr/local`,
as well as the normal installation directories for libraries on your system.

If you have installed mbedTLS elsewhere, you can direct the NNG configuration
to it by setting the `MBEDTLS_ROOT_DIR` CMake variable.

== Example

The following example would work on either Linux or macOS, and assumes
that we have checked out github source trees into `$HOME/work`.
It also assumes that mbedTLS is already installed in /usr/local or
a standard search path.

[source, sh]
----
$ export NNGDIR=$HOME/work/nng
$ mkdir build
$ cd build

$ cmake -DNNG_ENABLE_TLS=ON ..

   ... (lots of lines of output from cmake...)

$ make

   ... (lots of lines of output from make...)

$ ./tests/tls
ok      ./tests/tls                                            1.503s

----
