32#ifndef MBEDTLS_COMPAT_H_
33#define MBEDTLS_COMPAT_H_
39#include <mbedtls/cipher.h>
40#include <mbedtls/ctr_drbg.h>
41#include <mbedtls/dhm.h>
42#include <mbedtls/ecp.h>
43#include <mbedtls/md.h>
44#include <mbedtls/pem.h>
45#include <mbedtls/pk.h>
46#include <mbedtls/ssl.h>
47#include <mbedtls/version.h>
48#include <mbedtls/x509_crt.h>
50#ifdef HAVE_PSA_CRYPTO_H
51#include <psa/crypto.h>
54#if MBEDTLS_VERSION_NUMBER >= 0x03000000
63#if defined(HAVE_PSA_CRYPTO_H) && defined(MBEDTLS_PSA_CRYPTO_C)
64 if (psa_crypto_init() != PSA_SUCCESS)
66 msg(
M_FATAL,
"mbedtls: psa_crypto_init() failed");
76#if MBEDTLS_VERSION_NUMBER >= 0x03000000
77 return curve_info->tls_id;
79 return curve_info->grp_id;
95#if MBEDTLS_VERSION_NUMBER > 0x03000000
96 return mbedtls_ctr_drbg_update(ctx, additional, add_len);
97#elif defined(HAVE_MBEDTLS_CTR_DRBG_UPDATE_RET)
98 return mbedtls_ctr_drbg_update_ret(ctx, additional, add_len);
100 mbedtls_ctr_drbg_update(ctx, additional, add_len);
107 int (*f_rng)(
void *,
unsigned char *,
size_t),
void *p_rng)
109#if MBEDTLS_VERSION_NUMBER < 0x03020100
110 return mbedtls_pk_check_pair(pub, prv);
112 return mbedtls_pk_check_pair(pub, prv, f_rng, p_rng);
118 const unsigned char *pwd,
size_t pwdlen,
119 int (*f_rng)(
void *,
unsigned char *,
size_t),
void *p_rng)
121#if MBEDTLS_VERSION_NUMBER < 0x03020100
122 return mbedtls_pk_parse_key(ctx,
key, keylen, pwd, pwdlen);
124 return mbedtls_pk_parse_key(ctx,
key, keylen, pwd, pwdlen, f_rng, p_rng);
130 int (*f_rng)(
void *,
unsigned char *,
size_t),
void *p_rng)
132#if MBEDTLS_VERSION_NUMBER < 0x03020100
133 return mbedtls_pk_parse_keyfile(ctx, path, password);
135 return mbedtls_pk_parse_keyfile(ctx, path, password, f_rng, p_rng);
139#if MBEDTLS_VERSION_NUMBER < 0x03020100
150 int major = (tls_version >> 8) & 0xff;
151 int minor = tls_version & 0xff;
152 mbedtls_ssl_conf_min_version(conf, major, minor);
158 int major = (tls_version >> 8) & 0xff;
159 int minor = tls_version & 0xff;
160 mbedtls_ssl_conf_max_version(conf, major, minor);
166 mbedtls_ssl_conf_curves(conf, groups);
172 return (
size_t)cipher->block_size;
178 return (
size_t)cipher->iv_size;
184 return (
size_t)cipher->key_bitlen;
187static inline mbedtls_cipher_mode_t
193static inline const char *
199static inline mbedtls_cipher_type_t
211static inline const mbedtls_md_info_t *
217static inline const unsigned char *
220 *buf_size = ctx->buflen;
227 return ctx->ext_types & ext_type;
static int mbedtls_compat_pk_parse_key(mbedtls_pk_context *ctx, const unsigned char *key, size_t keylen, const unsigned char *pwd, size_t pwdlen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
static const char * mbedtls_cipher_info_get_name(const mbedtls_cipher_info_t *cipher)
static size_t mbedtls_cipher_info_get_key_bitlen(const mbedtls_cipher_info_t *cipher)
static const mbedtls_md_info_t * mbedtls_md_info_from_ctx(const mbedtls_md_context_t *ctx)
mbedtls_ssl_protocol_version
@ MBEDTLS_SSL_VERSION_TLS1_2
@ MBEDTLS_SSL_VERSION_TLS1_3
@ MBEDTLS_SSL_VERSION_UNKNOWN
static int mbedtls_x509_crt_has_ext_type(const mbedtls_x509_crt *ctx, int ext_type)
static size_t mbedtls_cipher_info_get_iv_size(const mbedtls_cipher_info_t *cipher)
static void mbedtls_compat_psa_crypto_init(void)
static mbedtls_compat_group_id mbedtls_compat_get_group_id(const mbedtls_ecp_curve_info *curve_info)
static int mbedtls_compat_ctr_drbg_update(mbedtls_ctr_drbg_context *ctx, const unsigned char *additional, size_t add_len)
static int mbedtls_compat_pk_check_pair(const mbedtls_pk_context *pub, const mbedtls_pk_context *prv, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
static void mbedtls_ssl_conf_groups(mbedtls_ssl_config *conf, mbedtls_compat_group_id *groups)
static mbedtls_cipher_type_t mbedtls_cipher_info_get_type(const mbedtls_cipher_info_t *cipher)
static size_t mbedtls_dhm_get_bitlen(const mbedtls_dhm_context *ctx)
static void mbedtls_ssl_conf_max_tls_version(mbedtls_ssl_config *conf, mbedtls_ssl_protocol_version tls_version)
mbedtls_ecp_group_id mbedtls_compat_group_id
static size_t mbedtls_cipher_info_get_block_size(const mbedtls_cipher_info_t *cipher)
static mbedtls_cipher_mode_t mbedtls_cipher_info_get_mode(const mbedtls_cipher_info_t *cipher)
static const unsigned char * mbedtls_pem_get_buffer(const mbedtls_pem_context *ctx, size_t *buf_size)
static void mbedtls_ssl_conf_min_tls_version(mbedtls_ssl_config *conf, mbedtls_ssl_protocol_version tls_version)
static int mbedtls_compat_pk_parse_keyfile(mbedtls_pk_context *ctx, const char *path, const char *password, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
Container for unidirectional cipher and HMAC key material.