SYNOPSIS

#include <nng/nng.h>
#include <nng/supplemental/tls/tls.h>

typedef enum nng_tls_mode {
    NNG_TLS_MODE_CLIENT,
    NNG_TLS_MODE_SERVER
} nng_tls_mode;

int nng_tls_config_alloc(nng_tls_config **cfgp, nng_tls_mode mode);

DESCRIPTION

The nng_tls_config_alloc() function creates a newly initialized Transport Layer Security) configuration object, and stores a pointer to it in the value pointed to by cfgp.

This object is initialized for use when acting as either a client (NNG_TLS_MODE_CLIENT) or as a server (NNG_TLS_MODE_SERVER), depending on the value of mode.

A TLS object can be further modified by functions that set the security keys used, peer certificates, protocol policies, and so forth.

A single TLS configuration object can be used with multiple TLS streams or services. The underlying system uses reference counting to ensure that object is not inadvertently freed while in use.

Also note that a TLS configuration object becomes "read-only" after it is first used with a service. After this points, attempts to apply further changes to the configuration will result in NNG_EBUSY.

RETURN VALUES

This function returns 0 on success, and non-zero otherwise.

ERRORS

NNG_ENOMEM

Insufficient memory is available.

NNG_EINVAL

An invalid mode was specified.

SEE ALSO