blob: 1e07daaf79cf5bb07dc57afc0c3c6c823e614eca [file] [log] [blame]
Michal Vasko45f298f2016-01-29 10:26:26 +01001/**
2 * \file session_server_ch.h
3 * \author Michal Vasko <mvasko@cesnet.cz>
4 * \brief libnetconf2 Call Home session server manipulation
5 *
6 * Copyright (c) 2015 CESNET, z.s.p.o.
7 *
Radek Krejci9b81f5b2016-02-24 13:14:49 +01008 * This source code is licensed under BSD 3-Clause License (the "License").
9 * You may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
Michal Vaskoafd416b2016-02-25 14:51:46 +010011 *
Radek Krejci9b81f5b2016-02-24 13:14:49 +010012 * https://opensource.org/licenses/BSD-3-Clause
Michal Vasko45f298f2016-01-29 10:26:26 +010013 */
14
15#ifndef NC_SESSION_SERVER_CH_H_
16#define NC_SESSION_SERVER_CH_H_
17
18#include <stdint.h>
19#include <libyang/libyang.h>
20
21#include "session.h"
22#include "netconf.h"
23
Michal Vasko2e6defd2016-10-07 15:48:15 +020024#if defined(NC_ENABLED_SSH) || defined(NC_ENABLED_TLS)
Michal Vasko45f298f2016-01-29 10:26:26 +010025
26/**
Michal Vasko2e6defd2016-10-07 15:48:15 +020027 * @brief Add a new Call Home client.
Michal Vasko45f298f2016-01-29 10:26:26 +010028 *
Michal Vasko2e6defd2016-10-07 15:48:15 +020029 * @param[in] name Arbitrary unique client name.
30 * @param[in] ti Transport protocol to use.
31 * @return 0 on success, -1 on error.
Michal Vasko45f298f2016-01-29 10:26:26 +010032 */
Michal Vasko2e6defd2016-10-07 15:48:15 +020033int nc_server_ch_add_client(const char *name, NC_TRANSPORT_IMPL ti);
34
35/**
36 * @brief Drop any connections, stop connecting and remove a client.
37 *
38 * @param[in] name Client name. NULL matches all the clients.
Michal Vasko59050372016-11-22 14:33:55 +010039 * @param[in] ti Client transport protocol. NULL matches any protocol.
40 * Redundant to set if \p name is set, client names are
41 * unique disregarding their protocol.
Michal Vasko2e6defd2016-10-07 15:48:15 +020042 * @return 0 on success, -1 on not finding any match.
43 */
Michal Vasko59050372016-11-22 14:33:55 +010044int nc_server_ch_del_client(const char *name, NC_TRANSPORT_IMPL ti);
Michal Vasko2e6defd2016-10-07 15:48:15 +020045
46/**
47 * @brief Add a new Call Home client endpoint.
48 *
49 * @param[in] client_name Existing client name.
50 * @param[in] endpt_name Arbitrary unique (within the client) endpoint name.
51 * @return 0 on success, -1 on error.
52 */
53int nc_server_ch_client_add_endpt(const char *client_name, const char *endpt_name);
54
55/**
56 * @brief Remove a Call Home client endpoint.
57 *
58 * @param[in] client_name Existing client name.
59 * @param[in] endpt_name Existing endpoint of \p client_name. NULL matches all endpoints.
60 * @return 0 on success, -1 on error.
61 */
62int nc_server_ch_client_del_endpt(const char *client_name, const char *endpt_name);
63
64/**
65 * @brief Change Call Home client endpoint listening address.
66 *
67 * On error the previous listening socket (if any) is left untouched.
68 *
69 * @param[in] client_name Existing Call Home client name.
70 * @param[in] endpt_name Existing endpoint name of \p client_name.
71 * @param[in] address New listening address.
72 * @return 0 on success, -1 on error.
73 */
74int nc_server_ch_client_endpt_set_address(const char *client_name, const char *endpt_name, const char *address);
75
76/**
77 * @brief Change Call Home client endpoint listening port.
78 *
79 * On error the previous listening socket (if any) is left untouched.
80 *
81 * @param[in] client_name Existing Call Home client name.
82 * @param[in] endpt_name Existing endpoint name of \p client_name.
83 * @param[in] port New listening port.
84 * @return 0 on success, -1 on error.
85 */
86int nc_server_ch_client_endpt_set_port(const char *client_name, const char *endpt_name, uint16_t port);
87
88/**
89 * @brief Set Call Home client connection type.
90 *
91 * @param[in] client_name Existing Call Home client name.
92 * @param[in] conn_type Call Home connection type.
93 * @return 0 on success, -1 on error.
94 */
95int nc_server_ch_client_set_conn_type(const char *client_name, NC_CH_CONN_TYPE conn_type);
96
97/**
98 * @brief Set Call Home client persistent connection idle timeout.
99 *
100 * @param[in] client_name Existing Call Home client name.
101 * @param[in] idle_timeout Call Home persistent idle timeout.
102 * @return 0 on success, -1 on error.
103 */
104int nc_server_ch_client_persist_set_idle_timeout(const char *client_name, uint32_t idle_timeout);
105
106/**
107 * @brief Set Call Home client persistent connection keep-alive max wait time.
108 *
109 * @param[in] client_name Existing Call Home client name.
110 * @param[in] max_wait Call Home persistent max wait time for keep-alive reply.
111 * @return 0 on success, -1 on error.
112 */
113int nc_server_ch_client_persist_set_keep_alive_max_wait(const char *client_name, uint16_t max_wait);
114
115/**
116 * @brief Set Call Home client persistent connection keep-alive max attempts.
117 *
118 * @param[in] client_name Existing Call Home client name.
119 * @param[in] max_attempts Call Home persistent keep-alive maximum contact attempts.
120 * @return 0 on success, -1 on error.
121 */
122int nc_server_ch_client_persist_set_keep_alive_max_attempts(const char *client_name, uint8_t max_attempts);
123
124/**
125 * @brief Set Call Home client periodic connection idle timeout.
126 *
127 * @param[in] client_name Existing Call Home client name.
128 * @param[in] idle_timeout Call Home periodic idle timeout.
129 * @return 0 on success, -1 on error.
130 */
131int nc_server_ch_client_period_set_idle_timeout(const char *client_name, uint16_t idle_timeout);
132
133/**
134 * @brief Set Call Home client periodic reconnect timeout.
135 *
136 * @param[in] client_name Existing Call Home client name.
137 * @param[in] reconnect_timeout Call Home periodic reconnect timeout.
138 * @return 0 on success, -1 on error.
139 */
140int nc_server_ch_client_period_set_reconnect_timeout(const char *client_name, uint16_t reconnect_timeout);
141
142/**
143 * @brief Set Call Home client start-with policy.
144 *
145 * @param[in] client_name Existing Call Home client name.
146 * @param[in] start_with Call Home client start-with.
147 * @return 0 on success, -1 on error.
148 */
149int nc_server_ch_client_set_start_with(const char *client_name, NC_CH_START_WITH start_with);
150
151/**
152 * @brief Set Call Home client overall max attempts.
153 *
154 * @param[in] client_name Existing Call Home client name.
155 * @param[in] conn_type Call Home overall max reconnect attempts.
156 * @return 0 on success, -1 on error.
157 */
158int nc_server_ch_client_set_max_attempts(const char *client_name, uint8_t max_attempts);
159
160/**
161 * @brief Establish a Call Home connection with a listening NETCONF client.
162 *
163 * @param[in] client_name Existing client name.
164 * @param[out] session_clb Function that is called for every established session on the client. \p new_session
165 * pointer is internally discarded afterwards.
166 * @return 0 if the thread was successfully created, -1 on error.
167 */
168int nc_connect_ch_client_dispatch(const char *client_name,
169 void (*session_clb)(const char *client_name, struct nc_session *new_session));
170
171#endif /* NC_ENABLED_SSH || NC_ENABLED_TLS */
172
173#ifdef NC_ENABLED_SSH
Michal Vasko45f298f2016-01-29 10:26:26 +0100174
175/**
Michal Vaskoe2713da2016-08-22 16:06:40 +0200176 * @brief Add Call Home SSH host keys the server will identify itself with. Any RSA, DSA, and
177 * ECDSA keys can be added. However, a maximum of one key of each type will be used
178 * during SSH authentication, later keys replacing earlier ones.
179 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200180 * @param[in] client_name Existing Call Home client name.
Michal Vaskod6829ce2016-09-22 09:45:13 +0200181 * @param[in] privkey_path Path to a private key.
Michal Vaskoe2713da2016-08-22 16:06:40 +0200182 * @return 0 on success, -1 on error.
183 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200184int nc_server_ssh_ch_client_add_hostkey(const char *client_name, const char *privkey_path);
Michal Vaskoe2713da2016-08-22 16:06:40 +0200185
186/**
187 * @brief Delete Call Home SSH host keys. Their order is preserved.
Michal Vasko45f298f2016-01-29 10:26:26 +0100188 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200189 * @param[in] client_name Existing Call Home client name.
Michal Vaskod6829ce2016-09-22 09:45:13 +0200190 * @param[in] privkey_path Path to a private key. NULL matches all the keys.
Michal Vasko45f298f2016-01-29 10:26:26 +0100191 * @return 0 on success, -1 on error.
192 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200193int nc_server_ssh_ch_client_del_hostkey(const char *client_name, const char *privkey_path);
Michal Vasko45f298f2016-01-29 10:26:26 +0100194
195/**
196 * @brief Set Call Home SSH banner the server will send to every client.
197 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200198 * @param[in] client_name Existing Call Home client name.
Michal Vasko45f298f2016-01-29 10:26:26 +0100199 * @param[in] banner SSH banner.
200 * @return 0 on success, -1 on error.
201 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200202int nc_server_ssh_ch_client_set_banner(const char *client_name, const char *banner);
Michal Vasko45f298f2016-01-29 10:26:26 +0100203
204/**
205 * @brief Set accepted Call Home SSH authentication methods. All (publickey, password, interactive)
Michal Vaskof0537d82016-01-29 14:42:38 +0100206 * are supported by default.
Michal Vasko45f298f2016-01-29 10:26:26 +0100207 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200208 * @param[in] client_name Existing Call Home client name.
Michal Vasko45f298f2016-01-29 10:26:26 +0100209 * @param[in] auth_methods Accepted authentication methods bit field of NC_SSH_AUTH_TYPE.
210 * @return 0 on success, -1 on error.
211 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200212int nc_server_ssh_ch_client_set_auth_methods(const char *client_name, int auth_methods);
Michal Vasko45f298f2016-01-29 10:26:26 +0100213
214/**
215 * @brief Set Call Home SSH authentication attempts of every client. 3 by default.
216 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200217 * @param[in] client_name Existing Call Home client name.
Michal Vasko45f298f2016-01-29 10:26:26 +0100218 * @param[in] auth_attempts Failed authentication attempts before a client is dropped.
219 * @return 0 on success, -1 on error.
220 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200221int nc_server_ssh_ch_client_set_auth_attempts(const char *client_name, uint16_t auth_attempts);
Michal Vasko45f298f2016-01-29 10:26:26 +0100222
223/**
224 * @brief Set Call Home SSH authentication timeout. 10 seconds by default.
225 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200226 * @param[in] client_name Existing Call Home client name.
Michal Vasko45f298f2016-01-29 10:26:26 +0100227 * @param[in] auth_timeout Number of seconds before an unauthenticated client is dropped.
228 * @return 0 on success, -1 on error.
229 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200230int nc_server_ssh_ch_client_set_auth_timeout(const char *client_name, uint16_t auth_timeout);
Michal Vasko45f298f2016-01-29 10:26:26 +0100231
Radek Krejci53691be2016-02-22 13:58:37 +0100232#endif /* NC_ENABLED_SSH */
Michal Vasko45f298f2016-01-29 10:26:26 +0100233
Radek Krejci53691be2016-02-22 13:58:37 +0100234#ifdef NC_ENABLED_TLS
Michal Vasko45f298f2016-01-29 10:26:26 +0100235
236/**
Michal Vaskoa8748792016-11-22 14:34:26 +0100237 * @brief Set the server Call Home TLS certificate. Alternative to nc_tls_server_set_cert_path().
Michal Vasko45f298f2016-01-29 10:26:26 +0100238 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200239 * @param[in] client_name Existing Call Home client name.
Michal Vaskoa8748792016-11-22 14:34:26 +0100240 * @param[in] cert Base64-encoded certificate in ASN.1 DER encoding. If NULL, the used certificate is cleared.
Michal Vasko45f298f2016-01-29 10:26:26 +0100241 * @return 0 on success, -1 on error.
242 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200243int nc_server_tls_ch_client_set_cert(const char *client_name, const char *cert);
Michal Vasko45f298f2016-01-29 10:26:26 +0100244
245/**
Michal Vaskoa8748792016-11-22 14:34:26 +0100246 * @brief Set the server Call Home TLS certificate. Alternative to nc_tls_server_set_cert().
Michal Vasko45f298f2016-01-29 10:26:26 +0100247 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200248 * @param[in] client_name Existing Call Home client name.
Michal Vaskoa8748792016-11-22 14:34:26 +0100249 * @param[in] cert_path Path to a certificate file in PEM format. If NULL, the used certificate is cleared.
Michal Vasko45f298f2016-01-29 10:26:26 +0100250 * @return 0 on success, -1 on error.
251 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200252int nc_server_tls_ch_client_set_cert_path(const char *client_name, const char *cert_path);
Michal Vasko45f298f2016-01-29 10:26:26 +0100253
254/**
Michal Vaskoa8748792016-11-22 14:34:26 +0100255 * @brief Set the server Call Home TLS private key matching the certificate.
Michal Vasko2e6defd2016-10-07 15:48:15 +0200256 * Alternative to nc_server_tls_ch_client_set_key_path().
Michal Vasko45f298f2016-01-29 10:26:26 +0100257 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200258 * @param[in] client_name Existing Call Home client name.
Michal Vaskoa8748792016-11-22 14:34:26 +0100259 * @param[in] privkey Base64-encoded certificate in ASN.1 DER encoding. If NULL, the used key is cleared.
Michal Vasko45f298f2016-01-29 10:26:26 +0100260 * @param[in] is_rsa Whether \p privkey are the data of an RSA (1) or DSA (0) key.
261 * @return 0 on success, -1 on error.
262 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200263int nc_server_tls_ch_client_set_key(const char *client_name, const char *privkey, int is_rsa);
Michal Vasko45f298f2016-01-29 10:26:26 +0100264
265/**
Michal Vaskoa8748792016-11-22 14:34:26 +0100266 * @brief Set the server Call Home TLS private key matching the certificate.
Michal Vasko2e6defd2016-10-07 15:48:15 +0200267 * Alternative to nc_server_tls_ch_client_set_key().
Michal Vasko45f298f2016-01-29 10:26:26 +0100268 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200269 * @param[in] client_name Existing Call Home client name.
Michal Vaskoa8748792016-11-22 14:34:26 +0100270 * @param[in] privkey_path Path to a private key file in PEM format. If NULL, the used certificate is cleared.
Michal Vasko45f298f2016-01-29 10:26:26 +0100271 * @return 0 on success, -1 on error.
272 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200273int nc_server_tls_ch_client_set_key_path(const char *client_name, const char *privkey_path);
Michal Vasko45f298f2016-01-29 10:26:26 +0100274
275/**
276 * @brief Add a Call Home trusted certificate. Can be both a CA or a client one.
277 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200278 * @param[in] client_name Existing Call Home client name.
Michal Vaskoe2713da2016-08-22 16:06:40 +0200279 * @param[in] cert_name Arbitary name identifying this certificate.
Michal Vaskof0537d82016-01-29 14:42:38 +0100280 * @param[in] cert Base64-enocded certificate in ASN.1 DER encoding.
Michal Vasko45f298f2016-01-29 10:26:26 +0100281 * @return 0 on success, -1 on error.
282 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200283int nc_server_tls_ch_client_add_trusted_cert(const char *client_name, const char *cert_name, const char *cert);
Michal Vasko45f298f2016-01-29 10:26:26 +0100284
285/**
286 * @brief Add a Call Home trusted certificate. Can be both a CA or a client one.
287 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200288 * @param[in] client_name Existing Call Home client name.
Michal Vaskoe2713da2016-08-22 16:06:40 +0200289 * @param[in] cert_name Arbitary name identifying this certificate.
Michal Vasko45f298f2016-01-29 10:26:26 +0100290 * @param[in] cert_path Path to a trusted certificate file in PEM format.
291 * @return 0 on success, -1 on error.
292 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200293int nc_server_tls_ch_client_add_trusted_cert_path(const char *client_name, const char *cert_name, const char *cert_path);
Michal Vasko45f298f2016-01-29 10:26:26 +0100294
295/**
296 * @brief Set trusted Call Home Certificate Authority certificate locations. There
Michal Vaskof0537d82016-01-29 14:42:38 +0100297 * can only be one file and one directory, they are replaced if already set.
Michal Vasko45f298f2016-01-29 10:26:26 +0100298 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200299 * @param[in] client_name Existing Call Home client name.
Michal Vaskob34b3e82016-02-26 15:04:58 +0100300 * @param[in] ca_file Path to a trusted CA cert store file in PEM format.
301 * Can be NULL.
302 * @param[in] ca_dir Path to a trusted CA cert store hashed directory
303 * (c_rehash utility can be used to create hashes)
304 * with PEM files. Can be NULL.
Michal Vasko45f298f2016-01-29 10:26:26 +0100305 * @return 0 on success, -1 on error.
306 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200307int nc_server_tls_ch_client_set_trusted_ca_paths(const char *client_name, const char *ca_file, const char *ca_dir);
Michal Vasko45f298f2016-01-29 10:26:26 +0100308
309/**
Michal Vasko2e6defd2016-10-07 15:48:15 +0200310 * @brief Remove a set Call Home trusted certificate.
Michal Vaskof0537d82016-01-29 14:42:38 +0100311 * CRLs and CTN entries are not affected.
Michal Vaskoe2713da2016-08-22 16:06:40 +0200312 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200313 * @param[in] client_name Existing Call Home client name.
Michal Vaskoe2713da2016-08-22 16:06:40 +0200314 * @param[in] cert_name Name of the certificate to delete. NULL deletes all the certificates.
315 * @return 0 on success, -1 on not found.
Michal Vasko45f298f2016-01-29 10:26:26 +0100316 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200317int nc_server_tls_ch_client_del_trusted_cert(const char *client_name, const char *cert_name);
Michal Vasko45f298f2016-01-29 10:26:26 +0100318
319/**
320 * @brief Set Call Home Certificate Revocation List locations. There can only be
Michal Vaskof0537d82016-01-29 14:42:38 +0100321 * one file and one directory, they are replaced if already set.
Michal Vasko45f298f2016-01-29 10:26:26 +0100322 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200323 * @param[in] client_name Existing Call Home client name.
Michal Vaskob34b3e82016-02-26 15:04:58 +0100324 * @param[in] crl_file Path to a CRL store file in PEM format. Can be NULL.
325 * @param[in] crl_dir Path to a CRL store hashed directory (c_rehash utility
326 * can be used to create hashes) with PEM files. Can be NULL.
Michal Vasko45f298f2016-01-29 10:26:26 +0100327 * @return 0 on success, -1 on error.
328 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200329int nc_server_tls_ch_client_set_crl_paths(const char *client_name, const char *crl_file, const char *crl_dir);
Michal Vasko45f298f2016-01-29 10:26:26 +0100330
331/**
332 * @brief Destroy and clean Call Home CRLs. Call Home certificates, private keys,
Michal Vaskof0537d82016-01-29 14:42:38 +0100333 * and CTN entries are not affected.
Michal Vasko2e6defd2016-10-07 15:48:15 +0200334 *
335 * @param[in] client_name Existing Call Home client name.
Michal Vasko45f298f2016-01-29 10:26:26 +0100336 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200337void nc_server_tls_ch_client_clear_crls(const char *client_name);
Michal Vasko45f298f2016-01-29 10:26:26 +0100338
339/**
Michal Vasko58c22a22016-11-23 13:49:53 +0100340 * @brief Add a Call Home cert-to-name entry.
Michal Vasko45f298f2016-01-29 10:26:26 +0100341 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200342 * @param[in] client_name Existing Call Home client name.
Michal Vasko45f298f2016-01-29 10:26:26 +0100343 * @param[in] id Priority of the entry.
344 * @param[in] fingerprint Matching certificate fingerprint.
345 * @param[in] map_type Type of username-certificate mapping.
346 * @param[in] name Specific username if \p map_type == NC_TLS_CTN_SPECIFED. Must be NULL otherwise.
347 * @return 0 on success, -1 on error.
348 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200349int nc_server_tls_ch_client_add_ctn(const char *client_name, uint32_t id, const char *fingerprint,
350 NC_TLS_CTN_MAPTYPE map_type, const char *name);
Michal Vasko45f298f2016-01-29 10:26:26 +0100351
352/**
Michal Vasko58c22a22016-11-23 13:49:53 +0100353 * @brief Remove a Call Home cert-to-name entry.
Michal Vasko45f298f2016-01-29 10:26:26 +0100354 *
Michal Vasko2e6defd2016-10-07 15:48:15 +0200355 * @param[in] client_name Existing Call Home client name.
Michal Vasko45f298f2016-01-29 10:26:26 +0100356 * @param[in] id Priority of the entry. -1 matches all the priorities.
357 * @param[in] fingerprint Fingerprint fo the entry. NULL matches all the fingerprints.
358 * @param[in] map_type Mapping type of the entry. 0 matches all the mapping types.
359 * @param[in] name Specific username for the entry. NULL matches all the usernames.
360 * @return 0 on success, -1 on not finding any match.
361 */
Michal Vasko2e6defd2016-10-07 15:48:15 +0200362int nc_server_tls_ch_client_del_ctn(const char *client_name, int64_t id, const char *fingerprint,
363 NC_TLS_CTN_MAPTYPE map_type, const char *name);
Michal Vasko45f298f2016-01-29 10:26:26 +0100364
Michal Vaskodf5e6af2016-11-23 13:50:56 +0100365/**
366 * @brief Get a Call Home cert-to-name entry.
367 *
368 * If a parameter is NULL, it is ignored. If its dereferenced value is NULL,
369 * it is filled and returned. If the value is set, it is used as a filter.
370 * Returns first matching entry.
371 *
372 * @param[in] client_name Existing Call Home client name.
373 * @param[in,out] id Priority of the entry.
374 * @param[in,out] fingerprint Fingerprint fo the entry.
375 * @param[in,out] map_type Mapping type of the entry.
376 * @param[in,out] name Specific username for the entry.
377 * @return 0 on success, -1 on not finding any match.
378 */
Michal Vaskof585ac72016-11-25 15:16:38 +0100379int nc_server_tls_ch_client_get_ctn(const char *client_name, uint32_t *id, char **fingerprint,
380 NC_TLS_CTN_MAPTYPE *map_type, char **name);
Michal Vaskodf5e6af2016-11-23 13:50:56 +0100381
Radek Krejci53691be2016-02-22 13:58:37 +0100382#endif /* NC_ENABLED_TLS */
Michal Vasko45f298f2016-01-29 10:26:26 +0100383
384#endif /* NC_SESSION_SERVER_CH_H_ */