libcoap 4.3.5-develop-dfd5545
Loading...
Searching...
No Matches
coap_notls.c
Go to the documentation of this file.
1/*
2 * coap_notls.c -- Stub Datagram Transport Layer Support for libcoap
3 *
4 * Copyright (C) 2016 Olaf Bergmann <bergmann@tzi.org>
5 * Copyright (C) 2021-2026 Jon Shallow <supjps-libcoap@jpshallow.com>
6 *
7 * SPDX-License-Identifier: BSD-2-Clause
8 *
9 * This file is part of the CoAP library libcoap. Please see README for terms
10 * of use.
11 */
12
17
19
20#if ! COAP_WITH_LIBOPENSSL
21int
23 (void)conf_mem;
24 return 0;
25}
26
27int
29 return 0;
30}
31#endif /* ! COAP_WITH_LIBOPENSSL */
32
33#if ! COAP_WITH_LIBTINYDTLS && ! COAP_WITH_LIBOPENSSL && ! COAP_WITH_LIBWOLFSSL && ! COAP_WITH_LIBGNUTLS && ! COAP_WITH_LIBMBEDTLS && ! COAP_WITH_LIBOPENHITLS
34
35int
37 return 0;
38}
39
40int
42 return 0;
43}
44
45/*
46 * return 0 failed
47 * 1 passed
48 */
49int
51 return 0;
52}
53
54/*
55 * return 0 failed
56 * 1 passed
57 */
58int
60 return 0;
61}
62
63/*
64 * return 0 failed
65 * 1 passed
66 */
67int
69 return 0;
70}
71
72/*
73 * return 0 failed
74 * 1 passed
75 */
76int
78 return 0;
79}
80
81/*
82 * return 0 failed
83 * 1 passed
84 */
85int
87 return 0;
88}
89
90#if COAP_CLIENT_SUPPORT
91int
92coap_dtls_set_cid_tuple_change(coap_context_t *c_context, uint8_t every) {
93 (void)c_context;
94 (void)every;
95 return 0;
96}
97#endif /* COAP_CLIENT_SUPPORT */
98
99#if ! COAP_WITH_LIBMBEDTLS_OSCORE && ! COAP_WITH_LIBOPENHITLS_OSCORE
102 static coap_tls_version_t version;
103 version.version = 0;
105 return &version;
106}
107
108void
110}
111
112void
116
117void
120
121#if COAP_WS_SUPPORT
122int
124 const coap_bin_const_t *data,
125 coap_bin_const_t **hash) {
126 SHA1Context sha1_context;
128
129 (void)alg;
130
131 SHA1Reset(&sha1_context);
132 if (SHA1Input(&sha1_context, data->s, data->length) != shaSuccess)
133 return 0;
135 if (!dummy)
136 return 0;
137 if (SHA1Result(&sha1_context, dummy->s) != shaSuccess) {
139 return 0;
140 }
141 *hash = (coap_bin_const_t *)(dummy);
142 return 1;
143}
144#endif /* COAP_WS_SUPPORT */
145
146#if COAP_OSCORE_SUPPORT
147
148int
150 return 0;
151}
152
153int
155 (void)alg;
156 return 0;
157}
158
159int
161 (void)hkdf_alg;
162 return 0;
163}
164
165int
167 coap_bin_const_t *data,
168 coap_bin_const_t *aad,
169 uint8_t *result,
170 size_t *max_result_len) {
171 (void)params;
172 (void)data;
173 (void)aad;
174 (void)result;
175 *max_result_len = 0;
176 return 0;
177}
178
179int
181 coap_bin_const_t *data,
182 coap_bin_const_t *aad,
183 uint8_t *result,
184 size_t *max_result_len) {
185 (void)params;
186 (void)data;
187 (void)aad;
188 (void)result;
189 *max_result_len = 0;
190 return 0;
191}
192
193int
195 coap_bin_const_t *key,
196 coap_bin_const_t *data,
197 coap_bin_const_t **hmac) {
198 (void)hmac_alg;
199 (void)key;
200 (void)data;
201 (void)hmac;
202 return 0;
203}
204
205#endif /* COAP_OSCORE_SUPPORT */
206
207#if COAP_SERVER_SUPPORT
208coap_digest_ctx_t *
209coap_digest_setup(void) {
211
212 if (digest_ctx) {
213 SHA1Reset(digest_ctx);
214 }
215
216 return digest_ctx;
217}
218
219void
220coap_digest_free(coap_digest_ctx_t *digest_ctx) {
221 coap_free_type(COAP_DIGEST_CTX, digest_ctx);
222}
223
224int
225coap_digest_update(coap_digest_ctx_t *digest_ctx,
226 const uint8_t *data,
227 size_t data_len) {
228 if (SHA1Input(digest_ctx, data, data_len) != shaSuccess)
229 return 0;
230 return 1;
231}
232
233int
234coap_digest_final(coap_digest_ctx_t *digest_ctx,
235 coap_digest_t *digest_buffer) {
236 int ret = 1;
237
238 memset(digest_buffer, 0, sizeof(coap_digest_t));
239 if (SHA1Result(digest_ctx, (uint8_t *)digest_buffer) != shaSuccess) {
240 ret = 0;
241 }
242 coap_digest_free(digest_ctx);
243 return ret;
244}
245#endif /* COAP_SERVER_SUPPORT */
246
247#endif /* ! COAP_WITH_LIBMBEDTLS_OSCORE && ! COAP_WITH_LIBOPENHITLS_OSCORE */
248
249/* (D)TLS specific functions */
250
251int
253 const coap_dtls_pki_t *setup_data COAP_UNUSED,
255 ) {
256 return 0;
257}
258
259int
261 const char *ca_file COAP_UNUSED,
262 const char *ca_path COAP_UNUSED
263 ) {
264 return 0;
265}
266
267int
271
272#if COAP_CLIENT_SUPPORT
273int
274coap_dtls_context_set_cpsk(coap_context_t *ctx COAP_UNUSED,
275 coap_dtls_cpsk_t *setup_data COAP_UNUSED
276 ) {
277 return 0;
278}
279#endif /* COAP_CLIENT_SUPPORT */
280
281#if COAP_SERVER_SUPPORT
282int
283coap_dtls_context_set_spsk(coap_context_t *ctx COAP_UNUSED,
284 coap_dtls_spsk_t *setup_data COAP_UNUSED
285 ) {
286 return 0;
287}
288#endif /* COAP_SERVER_SUPPORT */
289
290int
294
296
297void *
299 coap_tls_library_t *tls_lib) {
300 if (tls_lib)
301 *tls_lib = COAP_TLS_LIBRARY_NOTLS;
302 return NULL;
303}
304
305void
309
314
315void *
317 return NULL;
318}
319
320void
323
324#if COAP_SERVER_SUPPORT
325void *
326coap_dtls_new_server_session(coap_session_t *session COAP_UNUSED) {
327 return NULL;
328}
329#endif /* COAP_SERVER_SUPPORT */
330
331#if COAP_CLIENT_SUPPORT
332void *
333coap_dtls_new_client_session(coap_session_t *session COAP_UNUSED) {
334 return NULL;
335}
336#endif /* COAP_CLIENT_SUPPORT */
337
338void
341
342void
345
346ssize_t
348 const uint8_t *data COAP_UNUSED,
349 size_t data_len COAP_UNUSED) {
350 return -1;
351}
352
353int
355 return 1;
356}
357
360 return 0;
361}
362
367
368/*
369 * return 1 timed out
370 * 0 still timing out
371 */
372int
376
377int
379 const uint8_t *data COAP_UNUSED,
380 size_t data_len COAP_UNUSED
381 ) {
382 return -1;
383}
384
385#if COAP_SERVER_SUPPORT
386int
387coap_dtls_hello(coap_session_t *session COAP_UNUSED,
388 const uint8_t *data COAP_UNUSED,
389 size_t data_len COAP_UNUSED
390 ) {
391 return 0;
392}
393#endif /* COAP_SERVER_SUPPORT */
394
395unsigned int
397 return 0;
398}
399
400#if COAP_CLIENT_SUPPORT
401void *
402coap_tls_new_client_session(coap_session_t *session COAP_UNUSED) {
403 return NULL;
404}
405#endif /* COAP_CLIENT_SUPPORT */
406
407#if COAP_SERVER_SUPPORT
408void *
409coap_tls_new_server_session(coap_session_t *session COAP_UNUSED) {
410 return NULL;
411}
412#endif /* COAP_SERVER_SUPPORT */
413
414void
417
418/*
419 * strm
420 * return +ve Number of bytes written.
421 * -1 Error (error in errno).
422 */
423ssize_t
425 const uint8_t *data COAP_UNUSED,
426 size_t data_len COAP_UNUSED) {
427 return -1;
428}
429
430/*
431 * strm
432 * return >=0 Number of bytes read.
433 * -1 Error (error in errno).
434 */
435ssize_t
437 uint8_t *data COAP_UNUSED,
438 size_t data_len COAP_UNUSED) {
439 return -1;
440}
441
442#else /* !COAP_WITH_LIBTINYDTLS && !COAP_WITH_LIBOPENSSL && !COAP_WITH_LIBWOLFSSL && !COAP_WITH_LIBGNUTLS */
443
444#ifdef __clang__
445/* Make compilers happy that do not like empty modules. As this function is
446 * never used, we ignore -Wunused-function at the end of compiling this file
447 */
448#pragma GCC diagnostic ignored "-Wunused-function"
449#endif
450static inline void
451dummy(void) {
452}
453
454#endif /* !COAP_WITH_LIBTINYDTLS && !COAP_WITH_LIBOPENSSL && !COAP_WITH_LIBWOLFSSL && !COAP_WITH_LIBGNUTLS && !COAP_WITH_LIBMBEDTLS */
static void dummy(void)
Library specific build wrapper for coap_internal.h.
@ COAP_DIGEST_CTX
Definition coap_mem.h:52
void * coap_malloc_type(coap_memory_tag_t type, size_t size)
Allocates a chunk of size bytes and returns a pointer to the newly allocated memory.
void coap_free_type(coap_memory_tag_t type, void *p)
Releases the memory that was allocated by coap_malloc_type().
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:252
coap_tick_t coap_dtls_get_timeout(coap_session_t *session COAP_UNUSED, coap_tick_t now COAP_UNUSED)
Definition coap_notls.c:364
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:436
coap_tick_t coap_dtls_get_context_timeout(void *dtls_context COAP_UNUSED)
Definition coap_notls.c:359
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:378
void * coap_dtls_get_tls(const coap_session_t *c_session COAP_UNUSED, coap_tls_library_t *tls_lib)
Definition coap_notls.c:298
unsigned int coap_dtls_get_overhead(coap_session_t *session COAP_UNUSED)
Definition coap_notls.c:396
int coap_dtls_context_load_pki_trust_store(coap_context_t *ctx COAP_UNUSED)
Definition coap_notls.c:268
static coap_log_t dtls_log_level
Definition coap_notls.c:295
int coap_dtls_context_check_keys_enabled(coap_context_t *ctx COAP_UNUSED)
Definition coap_notls.c:291
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:347
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:424
void coap_dtls_session_update_mtu(coap_session_t *session COAP_UNUSED)
Definition coap_notls.c:343
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:260
int coap_dtls_handle_timeout(coap_session_t *session COAP_UNUSED)
Definition coap_notls.c:373
void coap_dtls_free_context(void *handle COAP_UNUSED)
Definition coap_notls.c:321
void coap_dtls_free_session(coap_session_t *coap_session COAP_UNUSED)
Definition coap_notls.c:339
void * coap_dtls_new_context(coap_context_t *coap_context COAP_UNUSED)
Definition coap_notls.c:316
void coap_tls_free_session(coap_session_t *coap_session COAP_UNUSED)
Definition coap_notls.c:415
#define NULL
Definition coap_option.h:30
int SHA1Reset(SHA1Context *context)
Definition coap_sha1.c:100
int SHA1Input(SHA1Context *context, const uint8_t *message_array, unsigned length)
Definition coap_sha1.c:193
int SHA1Result(SHA1Context *context, uint8_t Message_Digest[SHA1HashSize])
Definition coap_sha1.c:141
@ shaSuccess
#define SHA1HashSize
uint64_t coap_tick_t
This data type represents internal timer ticks with COAP_TICKS_PER_SECOND resolution.
Definition coap_time.h:149
int coap_crypto_hmac(cose_hmac_alg_t hmac_alg, coap_bin_const_t *key, coap_bin_const_t *data, coap_bin_const_t **hmac)
Create a HMAC hash of the provided data.
int coap_crypto_aead_decrypt(const coap_crypto_param_t *params, coap_bin_const_t *data, coap_bin_const_t *aad, uint8_t *result, size_t *max_result_len)
Decrypt the provided encrypted data into plaintext.
int coap_crypto_aead_encrypt(const coap_crypto_param_t *params, coap_bin_const_t *data, coap_bin_const_t *aad, uint8_t *result, size_t *max_result_len)
Encrypt the provided plaintext data.
int coap_crypto_hash(cose_alg_t alg, const coap_bin_const_t *data, coap_bin_const_t **hash)
Create a hash of the provided data.
int coap_crypto_check_hkdf_alg(cose_hkdf_alg_t hkdf_alg)
Check whether the defined hkdf algorithm is supported by the underlying crypto library.
int coap_crypto_check_cipher_alg(cose_alg_t alg)
Check whether the defined cipher algorithm is supported by the underlying crypto library.
void coap_dtls_startup(void)
Initialize the underlying (D)TLS Library layer.
Definition coap_notls.c:109
void coap_dtls_thread_shutdown(void)
Close down the underlying (D)TLS Library layer.
Definition coap_notls.c:118
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:354
void coap_dtls_shutdown(void)
Close down the underlying (D)TLS Library layer.
Definition coap_notls.c:113
int coap_tls_engine_configure(coap_str_const_t *conf_mem)
Configure an ENGINE for a TLS library.
Definition coap_notls.c:22
coap_tls_version_t * coap_get_tls_library_version(void)
Determine the type and version of the underlying (D)TLS library.
Definition coap_notls.c:101
coap_dtls_role_t
Definition coap_dtls.h:48
int coap_tls_engine_remove(void)
Remove a previously configured ENGINE from a TLS library.
Definition coap_notls.c:28
coap_tls_library_t
Definition coap_dtls.h:74
@ COAP_TLS_LIBRARY_NOTLS
No DTLS library.
Definition coap_dtls.h:75
coap_log_t
Logging type.
Definition coap_debug.h:56
coap_log_t coap_dtls_get_log_level(void)
Get the current (D)TLS logging.
Definition coap_notls.c:311
void coap_dtls_set_log_level(coap_log_t level)
Sets the (D)TLS logging level to the specified level.
Definition coap_notls.c:306
@ COAP_LOG_EMERG
Definition coap_debug.h:57
cose_hkdf_alg_t
cose_hmac_alg_t
cose_alg_t
coap_binary_t * coap_new_binary(size_t size)
Returns a new binary object with at least size bytes storage allocated.
Definition coap_str.c:81
void coap_delete_binary(coap_binary_t *s)
Deletes the given coap_binary_t object and releases any memory allocated.
Definition coap_str.c:114
int coap_dtls_cid_is_supported(void)
Check whether (D)TLS CID is available.
Definition coap_notls.c:86
int coap_dtls_psk_is_supported(void)
Check whether (D)TLS PSK is available.
Definition coap_notls.c:50
int coap_tls_is_supported(void)
Check whether TLS is available.
Definition coap_notls.c:41
int coap_oscore_is_supported(void)
Check whether OSCORE is available.
int coap_dtls_is_supported(void)
Check whether DTLS is available.
Definition coap_notls.c:36
int coap_dtls_pki_is_supported(void)
Check whether (D)TLS PKI is available.
Definition coap_notls.c:59
int coap_dtls_rpk_is_supported(void)
Check whether (D)TLS RPK is available.
Definition coap_notls.c:77
int coap_dtls_pkcs11_is_supported(void)
Check whether (D)TLS PKCS11 is available.
Definition coap_notls.c:68
#define COAP_UNUSED
Definition libcoap.h:74
CoAP binary data definition with const data.
Definition coap_str.h:65
size_t length
length of binary data
Definition coap_str.h:66
const uint8_t * s
read-only binary data
Definition coap_str.h:67
CoAP binary data definition.
Definition coap_str.h:57
The CoAP stack's global state is stored in a coap_context_t object.
The common structure that holds the Crypto information.
The structure used for defining the Client PSK setup data to be used.
Definition coap_dtls.h:418
The structure used for defining the PKI setup data to be used.
Definition coap_dtls.h:317
The structure used for defining the Server PSK setup data to be used.
Definition coap_dtls.h:509
Abstraction of virtual session that can be attached to coap_context_t (client) or coap_endpoint_t (se...
CoAP string data definition with const data.
Definition coap_str.h:47
The structure used for returning the underlying (D)TLS library information.
Definition coap_dtls.h:88
coap_tls_library_t type
Library type.
Definition coap_dtls.h:90
uint64_t version
(D)TLS runtime Library Version
Definition coap_dtls.h:89