ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_tls.h
Go to the documentation of this file.
1
72
73#pragma once
74
75#ifdef __cplusplus
76extern "C" {
77#endif
78
79#include <stddef.h>
80#include <stdint.h>
81
82#include "ra8_err.h"
83
84/* =============================================================================
85 * Limits
86 * =============================================================================
87 */
88
116
140
160
161/* =============================================================================
162 * BIO callback signatures
163 * =============================================================================
164 */
165
184typedef int (*ra8_tls_bio_send_fn)(void* ctx, const uint8_t* buf, size_t len);
185
203typedef int (*ra8_tls_bio_recv_fn)(void* ctx, uint8_t* buf, size_t len);
204
205/* =============================================================================
206 * Configuration
207 * =============================================================================
208 */
209
248
249/* =============================================================================
250 * Opaque session handle
251 * =============================================================================
252 */
253
264
278
279/* =============================================================================
280 * Public API
281 * =============================================================================
282 */
283
330
354
391
422
458
490ra8_err_t ra8_tls_send(ra8_tls_session_t session, const uint8_t* buf, size_t len, size_t* out_sent);
491
523ra8_err_t ra8_tls_recv(ra8_tls_session_t session, uint8_t* buf, size_t len, size_t* out_received);
524
525/* =============================================================================
526 * Session introspection
527 * =============================================================================
528 */
529
568 uint16_t* out_id,
569 char* out_name,
570 size_t name_cap);
571
599ra8_err_t ra8_tls_get_verify_result(ra8_tls_session_t session, uint32_t* out_flags);
600
640ra8_err_t ra8_tls_mss_clamp(uint16_t mtu, uint16_t* out_mss);
641
642#ifdef __cplusplus
643}
644#endif
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
ra8_err_t ra8_tls_get_verify_result(ra8_tls_session_t session, uint32_t *out_flags)
Report the peer-certificate verification result for a session.
Definition ra8_tls.c:631
int(* ra8_tls_bio_send_fn)(void *ctx, const uint8_t *buf, size_t len)
BIO send callback signature (write ciphertext to transport).
Definition ra8_tls.h:184
struct ra8_tls_session_handle * ra8_tls_session_t
Opaque TLS session handle (typed pointer into the static pool).
Definition ra8_tls.h:277
int(* ra8_tls_bio_recv_fn)(void *ctx, uint8_t *buf, size_t len)
BIO receive callback signature (read ciphertext from transport).
Definition ra8_tls.h:203
ra8_err_t ra8_tls_send(ra8_tls_session_t session, const uint8_t *buf, size_t len, size_t *out_sent)
Encrypt and send application data.
Definition ra8_tls.c:517
ra8_err_t ra8_tls_recv(ra8_tls_session_t session, uint8_t *buf, size_t len, size_t *out_received)
Decrypt and receive application data.
Definition ra8_tls.c:557
ra8_tls_limits_t
Static-pool sizing constants for the TLS facade.
Definition ra8_tls.h:101
@ k_ra8_tls_cipher_name_cap
Capacity (bytes) a caller must reserve for a cipher-suite name.
Definition ra8_tls.h:114
@ k_ra8_tls_max_sessions
Maximum simultaneous TLS sessions handed out by the pool.
Definition ra8_tls.h:107
ra8_err_t ra8_tls_session_open(ra8_tls_session_t *out_session, const ra8_tls_session_cfg_t *cfg)
Allocate a TLS session from the static pool.
Definition ra8_tls.c:432
ra8_err_t ra8_tls_session_close(ra8_tls_session_t session)
Release a TLS session back to the pool.
Definition ra8_tls.c:461
ra8_tls_verify_mode_t
Peer-certificate verification policy for a session.
Definition ra8_tls.h:154
@ k_ra8_tls_verify_default
Facade default – same as required.
Definition ra8_tls.h:155
@ k_ra8_tls_verify_required
Verify and abort the handshake on fail.
Definition ra8_tls.h:158
@ k_ra8_tls_verify_none
Do not verify the peer certificate.
Definition ra8_tls.h:156
@ k_ra8_tls_verify_optional
Verify but do not abort on failure.
Definition ra8_tls.h:157
ra8_err_t ra8_tls_handshake(ra8_tls_session_t session)
Iterative TLS handshake driver.
Definition ra8_tls.c:479
ra8_err_t ra8_tls_get_cipher_suite(ra8_tls_session_t session, uint16_t *out_id, char *out_name, size_t name_cap)
Report the negotiated cipher suite for a session.
Definition ra8_tls.c:600
ra8_err_t ra8_tls_mss_clamp(uint16_t mtu, uint16_t *out_mss)
Compute the TCP MSS that keeps a segment inside one MTU frame.
Definition ra8_tls.c:651
ra8_err_t ra8_tls_global_deinit(void)
Symmetric tear-down for ra8_tls_global_init.
Definition ra8_tls.c:249
ra8_tls_net_const_t
Transport-sizing constants used by ra8_tls_mss_clamp.
Definition ra8_tls.h:134
@ k_ra8_tls_mtu_min
#21 pinned MTU floor (bytes).
Definition ra8_tls.h:137
@ k_ra8_tls_tcp_hdr_bytes
TCP header with no options.
Definition ra8_tls.h:136
@ k_ra8_tls_mss_min
Smallest MSS worth clamping to.
Definition ra8_tls.h:138
@ k_ra8_tls_ipv4_hdr_bytes
IPv4 header with no options.
Definition ra8_tls.h:135
ra8_err_t ra8_tls_global_init(void)
One-shot facade initialisation.
Definition ra8_tls.c:222
Per-session configuration handed to ra8_tls_session_open.
const char * server_name
Optional SNI hostname; NULL disables SNI.
Definition ra8_tls.h:243
ra8_tls_verify_mode_t verify_mode
Peer-cert policy; 0 == required (default).
Definition ra8_tls.h:244
ra8_tls_bio_recv_fn bio_recv
Transport read callback (required).
Definition ra8_tls.h:241
const char * ca_pem
Optional trust anchor, PEM; NULL == none.
Definition ra8_tls.h:245
ra8_tls_bio_send_fn bio_send
Transport write callback (required).
Definition ra8_tls.h:240
void * bio_ctx
Opaque ctx passed back to BIO callbacks.
Definition ra8_tls.h:242
size_t ca_pem_len
ca_pem length incl.
Definition ra8_tls.h:246
Forward declaration of the pool slot type.
Definition ra8_tls.c:78
ra8_tls_session_cfg_t cfg
Cached caller configuration.
Definition ra8_tls.c:82