[Openvpn-devel] Fix compilation with older mbed TLS versions (mbedtls_tls_prf_types undefined)
Commit Message
The usage of the new keying material methods was not properly guarded.
To avoid a number of ifdefs this commit uses a dummy struct and function.
When we eventually drop support for non-EKM mbed TLS version we can remove
these.
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
---
src/openvpn/ssl_mbedtls.c | 10 ++++++++++
src/openvpn/ssl_mbedtls.h | 5 ++++-
2 files changed, 14 insertions(+), 1 deletion(-)
Comments
Acked-by: Gert Doering <gert@greenie.muc.de>
Thanks for this. I have tried to review it without having to understand
all of the EKM/PRF stuff, and it sort of looks reasonable. The approach
of not having more #ifdefs in the common code is certainly welcome.
I have *tested* it, though, on some of the buildbots that failed before,
and this looks all reasonable (NetBSD 8.1 with mbedtls-2.14.1), plus
Linux with a very recent mbedtls (2.22.0). All succeeded.
Your patch has been applied to the master branch.
commit 136c5f015c3e7eceecc07a45655d5da5616e9131
Author: Arne Schwabe
Date: Tue Aug 25 06:16:47 2020 +0200
Fix compilation with older mbed TLS versions (mbedtls_tls_prf_types undefined)
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <20200825041647.26235-1-arne@rfc2549.org>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg20812.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
--
kind regards,
Gert Doering
@@ -253,6 +253,16 @@ key_state_export_keying_material(struct tls_session *session,
return NULL;
}
}
+#else
+unsigned char*
+key_state_export_keying_material(struct tls_session *session,
+ const char* label, size_t label_size,
+ size_t ekm_size,
+ struct gc_arena *gc)
+{
+ /* Dummy function to avoid ifdefs in the common code */
+ return NULL;
+}
#endif /* HAVE_EXPORT_KEYING_MATERIAL */
bool
@@ -82,6 +82,7 @@ struct external_context {
void *sign_ctx;
};
+#ifdef HAVE_EXPORT_KEYING_MATERIAL
/** struct to cache TLS secrets for keying material exporter (RFC 5705).
* The constants (64 and 48) are inherent to TLS version and
* the whole keying material export will likely change when they change */
@@ -90,6 +91,9 @@ struct tls_key_cache {
mbedtls_tls_prf_types tls_prf_type;
unsigned char master_secret[48];
};
+#else
+struct tls_key_cache { };
+#endif
/**
* Structure that wraps the TLS context. Contents differ depending on the
@@ -124,7 +128,6 @@ struct key_state_ssl {
bio_ctx *bio_ctx;
struct tls_key_cache tls_key_cache;
-
};
/**