18#ifndef COAP_DTLS_INTERNAL_H_
19#define COAP_DTLS_INTERNAL_H_
31#ifndef COAP_DTLS_RETRANSMIT_MS
32#define COAP_DTLS_RETRANSMIT_MS 1000
34#ifndef COAP_DTLS_RETRANSMIT_TOTAL_MS
35#define COAP_DTLS_RETRANSMIT_TOTAL_MS 60000
38#define COAP_DTLS_RETRANSMIT_COAP_TICKS (COAP_DTLS_RETRANSMIT_MS * COAP_TICKS_PER_SECOND / 1000)
41#ifndef COAP_DTLS_CID_LENGTH
42#define COAP_DTLS_CID_LENGTH 6
55#if COAP_SERVER_SUPPORT
71#if COAP_CLIENT_SUPPORT
142#if COAP_CLIENT_SUPPORT
154#if COAP_SERVER_SUPPORT
250#if COAP_SERVER_SUPPORT
298#if COAP_CLIENT_SUPPORT
310#if COAP_SERVER_SUPPORT
Pulls together all the internal only header files.
uint64_t coap_tick_t
This data type represents internal timer ticks with COAP_TICKS_PER_SECOND resolution.
void coap_tls_free_session(coap_session_t *coap_session)
Terminates the TLS session (may send an ALERT if necessary) then frees the underlying TLS library obj...
void * coap_tls_new_server_session(coap_session_t *coap_session)
Create a TLS new server-side session.
coap_tick_t coap_dtls_get_context_timeout(void *dtls_context)
Do all pending retransmits and get next timeout.
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.
coap_tick_t coap_dtls_get_timeout(coap_session_t *coap_session, coap_tick_t now)
Get next timeout for this session.
void * coap_dtls_new_client_session(coap_session_t *coap_session)
Create a new client-side session.
void coap_dtls_session_update_mtu(coap_session_t *coap_session)
Notify of a change in the CoAP session's MTU, for example after a PMTU update.
void coap_tls_establish(coap_session_t *session)
Layer function interface for layer below TLS accept/connect being established.
unsigned int coap_dtls_get_overhead(coap_session_t *coap_session)
Get DTLS overhead over cleartext PDUs.
ssize_t coap_tls_write(coap_session_t *coap_session, const uint8_t *data, size_t data_len)
Send data to a TLS peer, with implicit flush.
void coap_dtls_establish(coap_session_t *session)
Layer function interface for layer below DTLS connect being established.
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.
void coap_dtls_free_session(coap_session_t *coap_session)
Terminates the DTLS session (may send an ALERT if necessary) then frees the underlying TLS library ob...
int coap_dtls_is_context_timeout(void)
Check if timeout is handled per CoAP session or per CoAP context.
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.
int coap_dtls_handle_timeout(coap_session_t *coap_session)
Handle a DTLS timeout expiration.
int coap_dtls_context_set_pki_root_cas(coap_context_t *coap_context, const char *ca_file, const char *ca_dir)
Set the dtls context's default Root CA information for a client or server.
void * coap_dtls_new_context(coap_context_t *coap_context)
Creates a new DTLS context for the given coap_context.
void coap_dtls_shutdown(void)
Close down the underlying (D)TLS Library layer.
const coap_bin_const_t * coap_get_session_client_psk_key(const coap_session_t *coap_session)
Get the current client's PSK key.
ssize_t coap_tls_read(coap_session_t *coap_session, uint8_t *data, size_t data_len)
Read some data from a TLS peer.
void * coap_tls_new_client_session(coap_session_t *coap_session)
Create a new TLS client-side session.
const coap_bin_const_t * coap_get_session_server_psk_key(const coap_session_t *coap_session)
Get the current server's PSK key.
int coap_dtls_context_set_pki(coap_context_t *coap_context, const coap_dtls_pki_t *setup_data, const coap_dtls_role_t role)
Set the DTLS context's default server PKI information.
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_dtls_free_context(void *dtls_context)
Releases the storage allocated for dtls_context.
void coap_tls_close(coap_session_t *session)
Layer function interface for TLS close for a session.
void * coap_dtls_get_tls(const coap_session_t *session, coap_tls_library_t *tls_lib)
Get the actual (D)TLS object for the session.
int coap_dtls_receive(coap_session_t *coap_session, const uint8_t *data, size_t data_len)
Handling incoming data from a DTLS peer.
int coap_dtls_context_check_keys_enabled(coap_context_t *coap_context)
Check whether one of the coap_dtls_context_set_{psk|pki}() functions have been called.
void coap_dtls_close(coap_session_t *session)
Layer function interface for DTLS close for a session.
ssize_t coap_dtls_send(coap_session_t *coap_session, const uint8_t *data, size_t data_len)
Send data to a DTLS peer.
CoAP binary data definition with const data.
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.
The structure used for defining the PKI setup data to be used.
The structure used for defining the Server PSK setup data to be used.
Abstraction of virtual session that can be attached to coap_context_t (client) or coap_endpoint_t (se...