libcoap 4.3.5
Loading...
Searching...
No Matches
coap_dtls_internal.h
Go to the documentation of this file.
1/*
2 * coap_dtls_internal.h -- (Datagram) Transport Layer Support for libcoap
3 *
4 * Copyright (C) 2016 Olaf Bergmann <bergmann@tzi.org>
5 * Copyright (C) 2017 Jean-Claude Michelou <jcm@spinetix.com>
6 * Copyright (C) 2023-2024 Jon Shallow <supjps-libcoap@jpshallow.com>
7 *
8 * SPDX-License-Identifier: BSD-2-Clause
9 *
10 * This file is part of the CoAP library libcoap. Please see README for terms
11 * of use.
12 */
13
18
19#ifndef COAP_DTLS_INTERNAL_H_
20#define COAP_DTLS_INTERNAL_H_
21
22#include "coap_internal.h"
23
30
31/* https://rfc-editor.org/rfc/rfc6347#section-4.2.4.1 */
32#ifndef COAP_DTLS_RETRANSMIT_MS
33#define COAP_DTLS_RETRANSMIT_MS 1000
34#endif
35#ifndef COAP_DTLS_RETRANSMIT_TOTAL_MS
36#define COAP_DTLS_RETRANSMIT_TOTAL_MS 60000
37#endif
38
39#define COAP_DTLS_RETRANSMIT_COAP_TICKS (COAP_DTLS_RETRANSMIT_MS * COAP_TICKS_PER_SECOND / 1000)
40
41/* For RFC9146 Connection ID support */
42#ifndef COAP_DTLS_CID_LENGTH
43#define COAP_DTLS_CID_LENGTH 8
44#endif
45
52
58
68
69#if COAP_SERVER_SUPPORT
80
82 coap_dtls_spsk_t *setup_data);
83#endif /* COAP_SERVER_SUPPORT */
84
85#if COAP_CLIENT_SUPPORT
96
98 coap_dtls_cpsk_t *setup_data);
99#endif /* COAP_CLIENT_SUPPORT */
100
117
119 const coap_dtls_pki_t *setup_data,
120 const coap_dtls_role_t role);
121
133
135 const char *ca_file,
136 const char *ca_dir);
137
146
148
154void coap_dtls_free_context(void *dtls_context);
155
156#if COAP_CLIENT_SUPPORT
166#endif /* COAP_CLIENT_SUPPORT */
167
168#if COAP_SERVER_SUPPORT
181#endif /* COAP_SERVER_SUPPORT */
182
190
198
209ssize_t coap_dtls_send(coap_session_t *coap_session,
210 const uint8_t *data,
211 size_t data_len);
212
220
229
239 coap_tick_t now);
240
249
261 const uint8_t *data,
262 size_t data_len);
263
264#if COAP_SERVER_SUPPORT
278 const uint8_t *data,
279 size_t data_len);
280#endif /* COAP_SERVER_SUPPORT */
281
295
301void coap_dtls_close(coap_session_t *session);
302
310unsigned int coap_dtls_get_overhead(coap_session_t *coap_session);
311
312#if COAP_CLIENT_SUPPORT
322#endif /* COAP_CLIENT_SUPPORT */
323
324#if COAP_SERVER_SUPPORT
334#endif /* COAP_SERVER_SUPPORT */
335
343
354ssize_t coap_tls_write(coap_session_t *coap_session,
355 const uint8_t *data,
356 size_t data_len
357 );
358
369ssize_t coap_tls_read(coap_session_t *coap_session,
370 uint8_t *data,
371 size_t data_len
372 );
373
387
393void coap_tls_close(coap_session_t *session);
394
403 const coap_session_t *coap_session);
404
413 const coap_session_t *coap_session);
414
423 const coap_session_t *coap_session);
424
433 const coap_session_t *coap_session);
434
439void coap_dtls_startup(void);
440
445void coap_dtls_shutdown(void);
446
456 coap_tls_library_t *tls_lib);
457
466 coap_dtls_key_t *key);
467
481 coap_dtls_key_t *key,
482 const coap_dtls_role_t role,
483 int ret);
484
494
496
497#endif /* COAP_DTLS_INTERNAL_H */
Pulls together all the internal only header files.
int coap_dtls_context_set_pki(coap_context_t *ctx COAP_UNUSED, const coap_dtls_pki_t *setup_data COAP_UNUSED, const coap_dtls_role_t role COAP_UNUSED)
Definition coap_notls.c:108
coap_tick_t coap_dtls_get_timeout(coap_session_t *session COAP_UNUSED, coap_tick_t now COAP_UNUSED)
Definition coap_notls.c:224
ssize_t coap_tls_read(coap_session_t *session COAP_UNUSED, uint8_t *data COAP_UNUSED, size_t data_len COAP_UNUSED)
Definition coap_notls.c:296
coap_tick_t coap_dtls_get_context_timeout(void *dtls_context COAP_UNUSED)
Definition coap_notls.c:219
int coap_dtls_receive(coap_session_t *session COAP_UNUSED, const uint8_t *data COAP_UNUSED, size_t data_len COAP_UNUSED)
Definition coap_notls.c:238
void * coap_dtls_get_tls(const coap_session_t *c_session COAP_UNUSED, coap_tls_library_t *tls_lib)
Definition coap_notls.c:153
unsigned int coap_dtls_get_overhead(coap_session_t *session COAP_UNUSED)
Definition coap_notls.c:256
int coap_dtls_context_check_keys_enabled(coap_context_t *ctx COAP_UNUSED)
Definition coap_notls.c:142
ssize_t coap_dtls_send(coap_session_t *session COAP_UNUSED, const uint8_t *data COAP_UNUSED, size_t data_len COAP_UNUSED)
Definition coap_notls.c:207
ssize_t coap_tls_write(coap_session_t *session COAP_UNUSED, const uint8_t *data COAP_UNUSED, size_t data_len COAP_UNUSED)
Definition coap_notls.c:284
void coap_dtls_session_update_mtu(coap_session_t *session COAP_UNUSED)
Definition coap_notls.c:203
int coap_dtls_context_set_pki_root_cas(coap_context_t *ctx COAP_UNUSED, const char *ca_file COAP_UNUSED, const char *ca_path COAP_UNUSED)
Definition coap_notls.c:116
int coap_dtls_handle_timeout(coap_session_t *session COAP_UNUSED)
Definition coap_notls.c:233
void coap_dtls_free_context(void *handle COAP_UNUSED)
Definition coap_notls.c:181
void coap_dtls_free_session(coap_session_t *coap_session COAP_UNUSED)
Definition coap_notls.c:199
void * coap_dtls_new_context(coap_context_t *coap_context COAP_UNUSED)
Definition coap_notls.c:176
void coap_tls_free_session(coap_session_t *coap_session COAP_UNUSED)
Definition coap_notls.c:275
uint64_t coap_tick_t
This data type represents internal timer ticks with COAP_TICKS_PER_SECOND resolution.
Definition coap_time.h:143
void * coap_tls_new_server_session(coap_session_t *coap_session)
Create a TLS new server-side session.
const coap_bin_const_t * coap_get_session_client_psk_identity(const coap_session_t *coap_session)
Get the current client's PSK identity.
void coap_dtls_startup(void)
Initialize the underlying (D)TLS Library layer.
Definition coap_notls.c:149
int coap_dtls_define_issue(coap_define_issue_key_t type, coap_define_issue_fail_t fail, coap_dtls_key_t *key, const coap_dtls_role_t role, int ret)
Report PKI DEFINE type issue.
Definition coap_dtls.c:165
coap_define_issue_key_t
void * coap_dtls_new_client_session(coap_session_t *coap_session)
Create a new client-side session.
void coap_tls_establish(coap_session_t *session)
Layer function interface for layer below TLS accept/connect being established.
Definition coap_dtls.c:295
void coap_dtls_establish(coap_session_t *session)
Layer function interface for layer below DTLS connect being established.
Definition coap_dtls.c:266
void * coap_dtls_new_server_session(coap_session_t *coap_session)
Create a new DTLS server-side session.
int coap_dtls_hello(coap_session_t *coap_session, const uint8_t *data, size_t data_len)
Handling client HELLO messages from a new candiate peer.
int coap_dtls_set_cid_tuple_change(coap_context_t *context, uint8_t every)
Set the Connection ID client tuple frequency change for testing CIDs.
int coap_dtls_is_context_timeout(void)
Check if timeout is handled per CoAP session or per CoAP context.
Definition coap_notls.c:214
int coap_dtls_context_set_cpsk(coap_context_t *coap_context, coap_dtls_cpsk_t *setup_data)
Set the DTLS context's default client PSK information.
int coap_dtls_context_set_spsk(coap_context_t *coap_context, coap_dtls_spsk_t *setup_data)
Set the DTLS context's default server PSK information.
void coap_dtls_shutdown(void)
Close down the underlying (D)TLS Library layer.
Definition coap_notls.c:161
const coap_bin_const_t * coap_get_session_client_psk_key(const coap_session_t *coap_session)
Get the current client's PSK key.
coap_define_issue_fail_t
void * coap_tls_new_client_session(coap_session_t *coap_session)
Create a new TLS client-side session.
void coap_dtls_map_key_type_to_define(const coap_dtls_pki_t *setup_data, coap_dtls_key_t *key)
Map the PKI key definitions to the new DEFINE format.
Definition coap_dtls.c:26
const coap_bin_const_t * coap_get_session_server_psk_key(const coap_session_t *coap_session)
Get the current server's PSK key.
const coap_bin_const_t * coap_get_session_server_psk_hint(const coap_session_t *coap_session)
Get the current server's PSK identity hint.
void coap_tls_close(coap_session_t *session)
Layer function interface for TLS close for a session.
Definition coap_dtls.c:314
void coap_dtls_close(coap_session_t *session)
Layer function interface for DTLS close for a session.
Definition coap_dtls.c:285
@ COAP_DEFINE_KEY_PRIVATE
@ COAP_DEFINE_KEY_ROOT_CA
@ COAP_DEFINE_KEY_CA
@ COAP_DEFINE_KEY_PUBLIC
@ COAP_DEFINE_FAIL_NONE
@ COAP_DEFINE_FAIL_NOT_SUPPORTED
@ COAP_DEFINE_FAIL_BAD
coap_dtls_role_t
Definition coap_dtls.h:44
coap_tls_library_t
Definition coap_dtls.h:70
CoAP binary data definition with const data.
Definition coap_str.h:64
The CoAP stack's global state is stored in a coap_context_t object.
The structure used for defining the Client PSK setup data to be used.
Definition coap_dtls.h:410
The structure that holds the PKI key information.
Definition coap_dtls.h:279
The structure used for defining the PKI setup data to be used.
Definition coap_dtls.h:312
The structure used for defining the Server PSK setup data to be used.
Definition coap_dtls.h:501
Abstraction of virtual session that can be attached to coap_context_t (client) or coap_endpoint_t (se...