From f7c5c9f7138cd8d948f12c504122b48d8dd9e373 Mon Sep 17 00:00:00 2001 From: Chris Conlon Date: Fri, 21 Jan 2022 13:07:33 -0700 Subject: [PATCH] extra checks for OPENSSL_VERSION_NUMBER for API prototype differences --- src/ssl.c | 8 ++++++++ wolfssl/openssl/opensslv.h | 3 ++- wolfssl/openssl/x509v3.h | 9 +++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/ssl.c b/src/ssl.c index 57ef9e9f5..c1712dc45 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -10529,7 +10529,11 @@ int wolfSSL_X509_EXTENSION_set_critical(WOLFSSL_X509_EXTENSION* ex, int crit) * other extension types return a pointer to a v3_ext_method struct that contains * only the NID. */ +#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L const WOLFSSL_v3_ext_method* wolfSSL_X509V3_EXT_get(WOLFSSL_X509_EXTENSION* ex) +#else +WOLFSSL_v3_ext_method* wolfSSL_X509V3_EXT_get(WOLFSSL_X509_EXTENSION* ex) +#endif { int nid; WOLFSSL_v3_ext_method method; @@ -10585,7 +10589,11 @@ const WOLFSSL_v3_ext_method* wolfSSL_X509V3_EXT_get(WOLFSSL_X509_EXTENSION* ex) method.ext_nid = nid; ex->ext_method = method; +#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L return (const WOLFSSL_v3_ext_method*)&ex->ext_method; +#else + return (WOLFSSL_v3_ext_method*)&ex->ext_method; +#endif } /* Parses and returns an x509v3 extension internal structure. diff --git a/wolfssl/openssl/opensslv.h b/wolfssl/openssl/opensslv.h index 1e2a82e7d..9ab5ffebd 100644 --- a/wolfssl/openssl/opensslv.h +++ b/wolfssl/openssl/opensslv.h @@ -27,7 +27,8 @@ #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) /* api version compatibility */ -#if defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x0090810fL) ||\ +#if defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x009070dfL) ||\ + defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x0090810fL) ||\ defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x10100000L) ||\ defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x10001040L) /* valid version */ diff --git a/wolfssl/openssl/x509v3.h b/wolfssl/openssl/x509v3.h index 2e3298226..cd711bf88 100644 --- a/wolfssl/openssl/x509v3.h +++ b/wolfssl/openssl/x509v3.h @@ -62,7 +62,11 @@ /* Forward reference */ +#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x0090801fL typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +#else +typedef void *(*X509V3_EXT_D2I)(void *, unsigned char **, long); +#endif typedef int (*X509V3_EXT_I2D) (void *, unsigned char **); typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V) ( struct WOLFSSL_v3_ext_method *method, @@ -117,8 +121,13 @@ WOLFSSL_API WOLFSSL_BASIC_CONSTRAINTS* wolfSSL_BASIC_CONSTRAINTS_new(void); WOLFSSL_API void wolfSSL_BASIC_CONSTRAINTS_free(WOLFSSL_BASIC_CONSTRAINTS *bc); WOLFSSL_API WOLFSSL_AUTHORITY_KEYID* wolfSSL_AUTHORITY_KEYID_new(void); WOLFSSL_API void wolfSSL_AUTHORITY_KEYID_free(WOLFSSL_AUTHORITY_KEYID *id); +#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L WOLFSSL_API const WOLFSSL_v3_ext_method* wolfSSL_X509V3_EXT_get( WOLFSSL_X509_EXTENSION* ex); +#else +WOLFSSL_API WOLFSSL_v3_ext_method* wolfSSL_X509V3_EXT_get( + WOLFSSL_X509_EXTENSION* ex); +#endif WOLFSSL_API void* wolfSSL_X509V3_EXT_d2i(WOLFSSL_X509_EXTENSION* ex); WOLFSSL_API char* wolfSSL_i2s_ASN1_STRING(WOLFSSL_v3_ext_method *method, const WOLFSSL_ASN1_STRING *s);