OpenVPN
ssl_mbedtls.h
Go to the documentation of this file.
1/*
2 * OpenVPN -- An application to securely tunnel IP networks
3 * over a single TCP/UDP port, with support for SSL/TLS-based
4 * session authentication and key exchange,
5 * packet encryption, packet authentication, and
6 * packet compression.
7 *
8 * Copyright (C) 2002-2026 OpenVPN Inc <sales@openvpn.net>
9 * Copyright (C) 2010-2026 Sentyron B.V. <openvpn@sentyron.com>
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2
13 * as published by the Free Software Foundation.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License along
21 * with this program; if not, see <https://www.gnu.org/licenses/>.
22 */
23
28
29#ifndef SSL_MBEDTLS_H_
30#define SSL_MBEDTLS_H_
31
32#include "syshead.h"
33
34#include <mbedtls/ssl.h>
35#include <mbedtls/x509_crt.h>
36
37#if defined(ENABLE_PKCS11)
38#include <pkcs11-helper-1.0/pkcs11h-certificate.h>
39#endif
40
42
44{
45 size_t length;
46 uint8_t *data;
48};
49
56
62
76typedef bool (*external_sign_func)(void *sign_ctx, const void *src, size_t src_size, void *dst,
77 size_t dst_size);
78
86{
88
89 mbedtls_x509_crt *crt_chain;
90 mbedtls_x509_crt *ca_chain;
91 mbedtls_pk_context *priv_key;
92 mbedtls_x509_crl *crl;
95#ifdef ENABLE_PKCS11
96 pkcs11h_certificate_t pkcs11_cert;
97#endif
99 uint16_t *groups;
100 mbedtls_x509_crt_profile cert_profile;
101};
102
104{
105 mbedtls_ssl_config *ssl_config;
106 mbedtls_ssl_context *ctx;
108};
109
121 void *sign_ctx);
122
123static inline void
125{
126}
127#endif /* SSL_MBEDTLS_H_ */
int tls_ctx_use_external_signing_func(struct tls_root_ctx *ctx, external_sign_func sign_func, void *sign_ctx)
Call the supplied signing function to create a TLS signature during the TLS handshake.
static void tls_clear_error(void)
bool(* external_sign_func)(void *sign_ctx, const void *src, size_t src_size, void *dst, size_t dst_size)
External signing function prototype.
Definition ssl_mbedtls.h:76
struct _buffer_entry buffer_entry
Definition ssl_mbedtls.h:41
Definition ssl_mbedtls.h:44
size_t length
Definition ssl_mbedtls.h:45
uint8_t * data
Definition ssl_mbedtls.h:46
buffer_entry * next_block
Definition ssl_mbedtls.h:47
endless_buffer out
Definition ssl_mbedtls.h:60
endless_buffer in
Definition ssl_mbedtls.h:59
One node in a buffer_list linked list.
Definition buffer.h:2152
size_t data_start
Definition ssl_mbedtls.h:52
buffer_entry * first_block
Definition ssl_mbedtls.h:53
buffer_entry * last_block
Definition ssl_mbedtls.h:54
bio_ctx * bio_ctx
mbedtls_ssl_config * ssl_config
mbedTLS global ssl config
mbedtls_ssl_context * ctx
mbedTLS connection context
Structure that wraps the TLS context.
Definition ssl_mbedtls.h:86
mbedtls_x509_crl * crl
Certificate Revocation List.
Definition ssl_mbedtls.h:92
off_t crl_last_size
size of last loaded CRL
Definition ssl_mbedtls.h:94
mbedtls_x509_crt * crt_chain
Local Certificate chain.
Definition ssl_mbedtls.h:89
uint16_t * groups
List of allowed groups for this connection.
Definition ssl_mbedtls.h:99
mbedtls_x509_crt * ca_chain
CA chain for remote verification.
Definition ssl_mbedtls.h:90
int * allowed_ciphers
List of allowed ciphers for this connection.
Definition ssl_mbedtls.h:98
time_t crl_last_mtime
CRL last modification time.
Definition ssl_mbedtls.h:93
mbedtls_x509_crt_profile cert_profile
Allowed certificate types.
bool initialised
True if the context has been initialised.
Definition ssl_mbedtls.h:87
mbedtls_pk_context * priv_key
Local private key.
Definition ssl_mbedtls.h:91