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-2024 OpenVPN Inc <sales@openvpn.net>
9 * Copyright (C) 2010-2021 Fox Crypto B.V. <openvpn@foxcrypto.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, write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 */
24
30#ifndef SSL_MBEDTLS_H_
31#define SSL_MBEDTLS_H_
32
33#include "syshead.h"
34
35#include <mbedtls/ssl.h>
36#include <mbedtls/x509_crt.h>
37#include <mbedtls/version.h>
38
39#if defined(ENABLE_PKCS11)
40#include <pkcs11-helper-1.0/pkcs11h-certificate.h>
41#endif
42
43#include "mbedtls_compat.h"
44
46
48 size_t length;
49 uint8_t *data;
51};
52
58
63
77typedef bool (*external_sign_func)(
78 void *sign_ctx, const void *src, size_t src_size,
79 void *dst, size_t dst_size);
80
87
88#ifdef HAVE_EXPORT_KEYING_MATERIAL
92struct tls_key_cache {
93 unsigned char client_server_random[64];
94 mbedtls_tls_prf_types tls_prf_type;
95 unsigned char master_secret[48];
96};
97#else /* ifdef HAVE_EXPORT_KEYING_MATERIAL */
98struct tls_key_cache { };
99#endif
100
112 mbedtls_dhm_context *dhm_ctx;
113 mbedtls_x509_crt *crt_chain;
114 mbedtls_x509_crt *ca_chain;
115 mbedtls_pk_context *priv_key;
116 mbedtls_x509_crl *crl;
119#ifdef ENABLE_PKCS11
120 pkcs11h_certificate_t pkcs11_cert;
121#endif
125 mbedtls_x509_crt_profile cert_profile;
126};
127
129 mbedtls_ssl_config *ssl_config;
130 mbedtls_ssl_context *ctx;
132
134};
135
147 external_sign_func sign_func,
148 void *sign_ctx);
149
150static inline void
152{
153}
154#endif /* SSL_MBEDTLS_H_ */
mbedtls compatibility stub.
mbedtls_ecp_group_id mbedtls_compat_group_id
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:77
Definition ssl_mbedtls.h:47
size_t length
Definition ssl_mbedtls.h:48
uint8_t * data
Definition ssl_mbedtls.h:49
buffer_entry * next_block
Definition ssl_mbedtls.h:50
endless_buffer out
Definition ssl_mbedtls.h:61
endless_buffer in
Definition ssl_mbedtls.h:60
Definition buffer.h:1115
size_t data_start
Definition ssl_mbedtls.h:54
buffer_entry * first_block
Definition ssl_mbedtls.h:55
buffer_entry * last_block
Definition ssl_mbedtls.h:56
Context used by external_pkcs1_sign()
Definition ssl_mbedtls.h:82
external_sign_func sign
Definition ssl_mbedtls.h:84
size_t signature_length
Definition ssl_mbedtls.h:83
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.
mbedtls_x509_crl * crl
Certificate Revocation List.
off_t crl_last_size
size of last loaded CRL
mbedtls_x509_crt * crt_chain
Local Certificate chain.
mbedtls_x509_crt * ca_chain
CA chain for remote verification.
mbedtls_compat_group_id * groups
List of allowed groups for this connection.
int * allowed_ciphers
List of allowed ciphers for this connection.
mbedtls_dhm_context * dhm_ctx
Diffie-Helmann-Merkle context.
time_t crl_last_mtime
CRL last modification time.
mbedtls_x509_crt_profile cert_profile
Allowed certificate types.
bool initialised
True if the context has been initialised.
int endpoint
Whether or not this is a server or a client.
struct external_context external_key
External key context.
mbedtls_pk_context * priv_key
Local private key.