1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
= nng_tls(5)
//
// Copyright 2019 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2019 Devolutions <info@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 - TLS over TCP connection
== SYNOPSIS
[source, c]
----
#include <nng/nng.h>
#include <nng/supplemental/tls/tls.h>
typedef struct nng_tls_s nng_tls;
----
== DESCRIPTION
An `nng_tls` (((TLS connection))) represents a connected stream.
TLS stream objects can be used to send or receive data, and
provide transport level security via cryptography over a TCP connected
stream.
NOTE: The `nng_tls` object is used for raw TLS connections, and
should not be confused with a pipe object created using the
xref:nng_tls.7.adoc[nng_tls(7)] transport.
TIP: Most NNG applications should not use this, but instead use the
xref:nng_tls.7.adoc[nng_tls(7)] transport instead.
These objects are created either establishing an outgoing connection
with xref:nng_tls_dialer_dial.3tls.adoc[`nng_tls_dialer_dial()`] or by
accepting in incoming connection with
xref:nng_tls_listener_accept.3tls.adoc[`nng_tls_listener_accept()`].
TLS connections are byte streams, and are "`reliable`" in that data
will not be delivered out of order, or with portions missing.
Data can be sent using xref:nng_tls_send.3tls.adoc[`nng_tls_send()`] or
received with xref:nng_tls_recv.3tls.adoc[`nng_tls_recv()`].
When the connection is no longer needed, it should be freed with
xref:nng_tls_free.3tls.adoc[`nng_tls_free()`].
TIP: It is possible to close the connection, without freeing it, by
using xref:nng_tls_close.3tls.adoc[`nng_tls_close()`].
=== Options
The following options are applicable to TLS connections, and may be
accessed using the xref:nng_tls_getopt.3tls.adoc[`nng_tls_getopt()`] and
xref:nng_tls_setopt.3tls.adoc[`nng_tls_setopt()`] functions.
* xref:nng_options.5.adoc#NNG_OPT_LOCADDR[`NNG_OPT_LOCADDR`]
* xref:nng_options.5.adoc#NNG_OPT_REMADDR[`NNG_OPT_REMADDR`]
* xref:nng_tcp_options.5.adoc#NNG_OPT_TCP_KEEPALIVE[`NNG_OPT_TCP_KEEPALIVE`]
* xref:nng_tcp_options.5.adoc#NNG_OPT_TCP_NO_DELAY[`NNG_OPT_TCP_NODELAY`]
* xref:nng_tls_options.5.adoc#NNG_OPT_TLS_VERIFIED[`NNG_OPT_TLS_VERIFIED`]
Other platform specific options may be available as well.
== SEE ALSO
[.text-left]
xref:libnng.3.adoc[libnng(3)],
xref:nng_tls_close.3tls.adoc[nng_tls_close(3tls)],
xref:nng_tls_dialer_dial.3tls.adoc[nng_tls_dialer_dial(3tls)],
xref:nng_tls_free.3tls.adoc[nng_tls_free(3tls)],
xref:nng_tls_getopt.3tls.adoc[nng_tls_getopt(3tls)],
xref:nng_tls_listener_accept.3tls.adoc[nng_tls_listener_accept(3tls)],
xref:nng_tls_recv.3tls.adoc[nng_tls_recv(3tls)],
xref:nng_tls_send.3tls.adoc[nng_tls_send(3tls)],
xref:nng_tls_setopt.3tls.adoc[nng_tls_setopt(3tls)],
xref:nng_options.5.adoc[nng_options(5)],
xref:nng_tls_options.5.adoc[nng_tls_options(5)],
xref:nng.7.adoc[nng(7)]
|