= nng_tls_config(5)
//
// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2019 Devolutions <devolutions.net>
//
// This document is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
// file was obtained (LICENSE.txt).  A copy of the license may also be
// found online at https://opensource.org/licenses/MIT.
//

== NAME

nng_tls_config - TLS configuration object

== SYNOPSIS

[source, c]
----
#include <nng/supplemental/tls/tls.h>

typedef struct nng_tls_config nng_tls_config;
----

== DESCRIPTION

An `nng_tls_config` represents a single ((TLS configuration)) object, which
can be used to configure TLS servers and clients.

Configuration data includes details such as certificate chains used for
validation of remote peers, local key and certificate material, server
names, and so forth.
Additionally, a configuration can be used either in client mode, or in
server mode.

Configuration objects may be shared, and are reference counted.
However once a configuration is used, it enters a read-only state that
precludes further modifications to the configuration.

Messages are allocated using the
xref:nng_tls_config_alloc.3tls.adoc[`nng_tls_config_alloc()`]
function, and are deallocated using the
xref:nng_tls_config_free.3tls.adoc[`nng_tls_config_free()`]
function.

== SEE ALSO

[.text-left]
xref:nng_tls_config_alloc.3tls.adoc[nng_tls_config_alloc(3tls)],
xref:nng_tls_config_auth_mode.3tls.adoc[nng_tls_config_auth_mode(3tls)],
xref:nng_tls_config_ca_chain.3tls.adoc[nng_tls_config_ca_chain(3tls)],
xref:nng_tls_config_own_cert.3tls.adoc[nng_tls_config_own_cert(3tls)],
xref:nng_tls_config_free.3tls.adoc[nng_tls_config_free(3tls)],
xref:nng_tls_config_hold.3tls.adoc[nng_tls_config_hold(3tls)],
xref:nng_tls_config_server_name.3tls.adoc[nng_tls_config_server_name(3tls)],
xref:nng.7.adoc[nng(7)]
