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.
A configuration object created with nng_tls_config_alloc()
starts
with a reference count of one.
The reference count may be incremented using
nng_tls_config_hold()
and may be
decremented with
nng_tls_config_free()
.
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. |