Skip to content

Commit 03bafdf

Browse files
Merge pull request wolfSSL#8208 from dgarske/engine_compat
Fixes from compatibility header decoupling (make install)
2 parents 39d4832 + 3444d5c commit 03bafdf

5 files changed

Lines changed: 74 additions & 55 deletions

File tree

configure.ac

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2298,7 +2298,7 @@ fi
22982298

22992299
# OPENSSL Extra Compatibility
23002300
AC_ARG_ENABLE([opensslextra],
2301-
[AS_HELP_STRING([--enable-opensslextra],[Enable extra OpenSSL API, size+ (default: disabled)])],
2301+
[AS_HELP_STRING([--enable-opensslextra],[Enable extra OpenSSL API, size+ (default: disabled). Skip compat header install using "noinstall"])],
23022302
[ ENABLED_OPENSSLEXTRA=$enableval ],
23032303
[ ENABLED_OPENSSLEXTRA=no ]
23042304
)
@@ -9859,7 +9859,7 @@ fi
98599859
# Some of these affect build targets and objects, some trigger different
98609860
# test scripts for make check.
98619861
AM_CONDITIONAL([BUILD_DISTRO],[test "x$ENABLED_DISTRO" = "xyes"])
9862-
AM_CONDITIONAL([BUILD_OPENSSL_COMPAT],[test "x$ENABLED_OPENSSLEXTRA" != "xno" && test "x$ENABLED_OPENSSLCOEXIST" = "xno"])
9862+
AM_CONDITIONAL([BUILD_OPENSSL_COMPAT],[test "x$ENABLED_OPENSSLEXTRA" != "xnoinstall"])
98639863
AM_CONDITIONAL([BUILD_ALL],[test "x$ENABLED_ALL" = "xyes"])
98649864
AM_CONDITIONAL([BUILD_TLS13],[test "x$ENABLED_TLS13" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
98659865
AM_CONDITIONAL([BUILD_RNG],[test "x$ENABLED_RNG" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])

src/x509.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3295,6 +3295,7 @@ int wolfSSL_X509_pubkey_digest(const WOLFSSL_X509 *x509,
32953295
#endif /* OPENSSL_EXTRA */
32963296

32973297
#if defined(KEEP_PEER_CERT) || defined(SESSION_CERTS) || \
3298+
defined(KEEP_OUR_CERT) || \
32983299
defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
32993300

33003301
/* user externally called free X509, if dynamic go ahead with free, otherwise
@@ -3317,9 +3318,6 @@ static void ExternalFreeX509(WOLFSSL_X509* x509)
33173318
if (ret != 0) {
33183319
WOLFSSL_MSG("Couldn't lock x509 mutex");
33193320
}
3320-
#endif /* OPENSSL_EXTRA_X509_SMALL || OPENSSL_EXTRA */
3321-
3322-
#if defined(OPENSSL_EXTRA_X509_SMALL) || defined(OPENSSL_EXTRA)
33233321
if (doFree)
33243322
#endif /* OPENSSL_EXTRA_X509_SMALL || OPENSSL_EXTRA */
33253323
{
@@ -3337,10 +3335,13 @@ static void ExternalFreeX509(WOLFSSL_X509* x509)
33373335
WOLFSSL_ABI
33383336
void wolfSSL_X509_free(WOLFSSL_X509* x509)
33393337
{
3340-
WOLFSSL_ENTER("wolfSSL_FreeX509");
3338+
WOLFSSL_ENTER("wolfSSL_X509_free");
33413339
ExternalFreeX509(x509);
33423340
}
3341+
#endif
33433342

3343+
#if defined(KEEP_PEER_CERT) || defined(SESSION_CERTS) || \
3344+
defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
33443345

33453346
/* copy name into in buffer, at most sz bytes, if buffer is null will
33463347
malloc buffer, call responsible for freeing */
@@ -3766,7 +3767,7 @@ int wolfSSL_X509_NAME_entry_count(WOLFSSL_X509_NAME* name)
37663767
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
37673768

37683769
#if defined(OPENSSL_EXTRA) || \
3769-
defined(KEEP_OUR_CERT) || defined(KEEP_PEER_CERT) || defined(SESSION_CERTS)
3770+
defined(KEEP_OUR_CERT) || defined(KEEP_PEER_CERT)
37703771

37713772
/* return the next, if any, altname from the peer cert */
37723773
WOLFSSL_ABI
@@ -5354,7 +5355,8 @@ WOLFSSL_X509* wolfSSL_X509_REQ_load_certificate_buffer(
53545355
}
53555356
#endif
53565357

5357-
#endif /* KEEP_PEER_CERT || SESSION_CERTS */
5358+
#endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL || KEEP_PEER_CERT || \
5359+
SESSION_CERTS */
53585360

53595361
#if defined(OPENSSL_EXTRA_X509_SMALL) || defined(KEEP_PEER_CERT) || \
53605362
defined(SESSION_CERTS)
@@ -14405,7 +14407,7 @@ int wolfSSL_X509_check_issued(WOLFSSL_X509 *issuer, WOLFSSL_X509 *subject)
1440514407
#endif /* WOLFSSL_NGINX || WOLFSSL_HAPROXY || OPENSSL_EXTRA || OPENSSL_ALL */
1440614408

1440714409
#if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) || \
14408-
defined(KEEP_PEER_CERT)
14410+
defined(KEEP_PEER_CERT) || defined(SESSION_CERTS)
1440914411
WOLFSSL_X509* wolfSSL_X509_dup(WOLFSSL_X509 *x)
1441014412
{
1441114413
WOLFSSL_ENTER("wolfSSL_X509_dup");
@@ -14423,7 +14425,8 @@ WOLFSSL_X509* wolfSSL_X509_dup(WOLFSSL_X509 *x)
1442314425
return wolfSSL_X509_d2i_ex(NULL, x->derCert->buffer, x->derCert->length,
1442414426
x->heap);
1442514427
}
14426-
#endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */
14428+
#endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL || KEEP_PEER_CERT || \
14429+
SESSION_CERTS */
1442714430

1442814431
#if defined(OPENSSL_EXTRA)
1442914432
int wolfSSL_X509_check_ca(WOLFSSL_X509 *x509)

src/x509_str.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,9 @@ int wolfSSL_X509_STORE_CTX_init(WOLFSSL_X509_STORE_CTX* ctx,
221221
wolfSSL_sk_X509_free(ctx->chain);
222222
ctx->chain = NULL;
223223
}
224+
#ifdef SESSION_CERTS
224225
ctx->sesChain = NULL;
226+
#endif
225227
ctx->domain = NULL;
226228
#ifdef HAVE_EX_DATA
227229
XMEMSET(&ctx->ex_data, 0, sizeof(ctx->ex_data));

wolfssl/ssl.h

Lines changed: 59 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -553,14 +553,16 @@ struct WOLFSSL_X509_STORE_CTX {
553553
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
554554
WOLFSSL_X509_STORE* store; /* Store full of a CA cert chain */
555555
WOLFSSL_X509* current_cert; /* current X509 (OPENSSL_EXTRA) */
556-
#if defined(WOLFSSL_ASIO) || defined(OPENSSL_EXTRA)
556+
#if defined(WOLFSSL_ASIO) || defined(OPENSSL_EXTRA)
557557
WOLFSSL_X509* current_issuer; /* asio dereference */
558-
#endif
558+
#endif
559+
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
559560
WOLFSSL_X509_CHAIN* sesChain; /* pointer to WOLFSSL_SESSION peer chain */
561+
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
560562
WOLFSSL_STACK* chain;
561-
#ifdef OPENSSL_EXTRA
563+
#ifdef OPENSSL_EXTRA
562564
WOLFSSL_X509_VERIFY_PARAM* param; /* certificate validation parameter */
563-
#endif
565+
#endif
564566
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
565567

566568
char* domain; /* subject CN domain name */
@@ -1408,11 +1410,6 @@ WOLFSSL_API int wolfSSL_GetSessionIndex(WOLFSSL* ssl);
14081410
WOLFSSL_API int wolfSSL_GetSessionAtIndex(int index, WOLFSSL_SESSION* session);
14091411
#endif /* SESSION_INDEX */
14101412

1411-
#ifdef SESSION_CERTS
1412-
WOLFSSL_API
1413-
WOLFSSL_X509_CHAIN* wolfSSL_SESSION_get_peer_chain(WOLFSSL_SESSION* session);
1414-
WOLFSSL_API WOLFSSL_X509* wolfSSL_SESSION_get0_peer(WOLFSSL_SESSION* session);
1415-
#endif /* SESSION_CERTS */
14161413

14171414
#ifdef OPENSSL_EXTRA
14181415
/* compatibility callback for TLS state */
@@ -1864,9 +1861,6 @@ WOLFSSL_API int wolfSSL_sk_X509_EXTENSION_num(WOLF_STACK_OF(WOLFSSL_X509_EXTENSI
18641861
WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_sk_X509_EXTENSION_value(
18651862
const WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* sk, int idx);
18661863

1867-
WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_new(void);
1868-
WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_new_ex(void* heap);
1869-
WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_dup(WOLFSSL_X509* x);
18701864
#if defined(OPENSSL_EXTRA_X509_SMALL) || defined(OPENSSL_EXTRA)
18711865
WOLFSSL_API int wolfSSL_RSA_up_ref(WOLFSSL_RSA* rsa);
18721866
WOLFSSL_API int wolfSSL_X509_up_ref(WOLFSSL_X509* x509);
@@ -2101,7 +2095,6 @@ WOLFSSL_API unsigned long wolfSSL_X509_subject_name_hash(const WOLFSSL_X509* x5
21012095
WOLFSSL_API int wolfSSL_X509_ext_isSet_by_NID(WOLFSSL_X509* x509, int nid);
21022096
WOLFSSL_API int wolfSSL_X509_ext_get_critical_by_NID(WOLFSSL_X509* x509, int nid);
21032097
WOLFSSL_API int wolfSSL_X509_EXTENSION_set_critical(WOLFSSL_X509_EXTENSION* ex, int crit);
2104-
WOLFSSL_API int wolfSSL_X509_get_isCA(WOLFSSL_X509* x509);
21052098
WOLFSSL_API int wolfSSL_X509_get_isSet_pathLength(WOLFSSL_X509* x509);
21062099
WOLFSSL_API unsigned int wolfSSL_X509_get_pathLength(WOLFSSL_X509* x509);
21072100
WOLFSSL_API unsigned int wolfSSL_X509_get_keyUsage(WOLFSSL_X509* x509);
@@ -2164,11 +2157,6 @@ WOLFSSL_API int wolfSSL_ASN1_STRING_copy(WOLFSSL_ASN1_STRING* dst,
21642157
const WOLFSSL_ASN1_STRING* src);
21652158
WOLFSSL_API int wolfSSL_X509_verify_cert(WOLFSSL_X509_STORE_CTX* ctx);
21662159
WOLFSSL_API const char* wolfSSL_X509_verify_cert_error_string(long err);
2167-
WOLFSSL_API int wolfSSL_X509_get_signature_type(WOLFSSL_X509* x509);
2168-
WOLFSSL_API int wolfSSL_X509_get_signature(WOLFSSL_X509* x509, unsigned char* buf, int* bufSz);
2169-
WOLFSSL_API int wolfSSL_X509_get_pubkey_buffer(WOLFSSL_X509* x509, unsigned char* buf,
2170-
int* bufSz);
2171-
WOLFSSL_API int wolfSSL_X509_get_pubkey_type(WOLFSSL_X509* x509);
21722160

21732161
WOLFSSL_API int wolfSSL_X509_LOOKUP_add_dir(WOLFSSL_X509_LOOKUP* lookup,const char* dir,long type);
21742162
WOLFSSL_API int wolfSSL_X509_LOOKUP_load_file(WOLFSSL_X509_LOOKUP* lookup, const char* file,
@@ -2774,10 +2762,6 @@ WOLFSSL_API void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX* ctx);
27742762
WOLFSSL_API long wolfSSL_set_options(WOLFSSL *s, long op);
27752763
WOLFSSL_API long wolfSSL_get_options(const WOLFSSL *s);
27762764

2777-
WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name(
2778-
WOLFSSL_X509* cert);
2779-
WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name(
2780-
WOLFSSL_X509* cert);
27812765
WOLFSSL_ABI WOLFSSL_API char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME* name,
27822766
char* in, int sz);
27832767

@@ -3118,6 +3102,21 @@ WOLFSSL_API unsigned long wolfSSL_SESSION_get_ticket_lifetime_hint(
31183102
WOLFSSL_API long wolfSSL_SESSION_get_timeout(const WOLFSSL_SESSION* session);
31193103
WOLFSSL_API long wolfSSL_SESSION_get_time(const WOLFSSL_SESSION* session);
31203104

3105+
3106+
#ifdef SESSION_CERTS
3107+
#ifdef OPENSSL_EXTRA
3108+
WOLFSSL_API const char *wolfSSL_get0_peername(WOLFSSL *ssl);
3109+
#endif
3110+
3111+
WOLFSSL_API
3112+
WOLFSSL_X509_CHAIN* wolfSSL_SESSION_get_peer_chain(WOLFSSL_SESSION* session);
3113+
WOLFSSL_API WOLFSSL_X509* wolfSSL_SESSION_get0_peer(WOLFSSL_SESSION* session);
3114+
3115+
WOLFSSL_API int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN* chain, int idx,
3116+
unsigned char* buf, int inLen, int* outLen);
3117+
#endif /* SESSION_CERTS */
3118+
3119+
31213120
/* extra ends */
31223121

31233122

@@ -3127,9 +3126,6 @@ WOLFSSL_API long wolfSSL_SESSION_get_time(const WOLFSSL_SESSION* session);
31273126
date check and signature check */
31283127
WOLFSSL_ABI WOLFSSL_API int wolfSSL_check_domain_name(WOLFSSL* ssl, const char* dn);
31293128

3130-
#if defined(SESSION_CERTS) && defined(OPENSSL_EXTRA)
3131-
WOLFSSL_API const char *wolfSSL_get0_peername(WOLFSSL *ssl);
3132-
#endif
31333129

31343130
/* need to call once to load library (session cache) */
31353131
WOLFSSL_ABI WOLFSSL_API int wolfSSL_Init(void);
@@ -3171,13 +3167,49 @@ WOLFSSL_API int wolfSSL_get_chain_length(WOLFSSL_X509_CHAIN* chain, int idx);
31713167
WOLFSSL_API unsigned char* wolfSSL_get_chain_cert(WOLFSSL_X509_CHAIN* chain, int idx);
31723168
/* index cert in X509 */
31733169
WOLFSSL_API WOLFSSL_X509* wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN* chain, int idx);
3170+
3171+
3172+
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \
3173+
defined(KEEP_PEER_CERT) || defined(KEEP_OUR_CERT) || defined(SESSION_CERTS)
3174+
3175+
WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_new(void);
3176+
WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_new_ex(void* heap);
3177+
WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_dup(WOLFSSL_X509* x);
3178+
3179+
WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name(
3180+
WOLFSSL_X509* cert);
3181+
WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name(
3182+
WOLFSSL_X509* cert);
3183+
3184+
WOLFSSL_API int wolfSSL_X509_get_signature_type(WOLFSSL_X509* x509);
3185+
WOLFSSL_API int wolfSSL_X509_get_isCA(WOLFSSL_X509* x509);
3186+
WOLFSSL_API int wolfSSL_X509_get_signature(WOLFSSL_X509* x509,
3187+
unsigned char* buf, int* bufSz);
3188+
WOLFSSL_API int wolfSSL_X509_get_pubkey_buffer(WOLFSSL_X509* x509,
3189+
unsigned char* buf, int* bufSz);
3190+
WOLFSSL_API int wolfSSL_X509_get_pubkey_type(WOLFSSL_X509* x509);
3191+
3192+
#ifndef NO_FILESYSTEM
3193+
WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509*
3194+
wolfSSL_X509_load_certificate_file(const char* fname, int format);
3195+
#endif
3196+
WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_load_certificate_buffer(
3197+
const unsigned char* buf, int sz, int format);
3198+
#ifdef WOLFSSL_CERT_REQ
3199+
WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_REQ_load_certificate_buffer(
3200+
const unsigned char* buf, int sz, int format);
3201+
#endif
3202+
31743203
/* free X509 */
31753204
#define wolfSSL_FreeX509(x509) wolfSSL_X509_free((x509))
31763205
WOLFSSL_ABI WOLFSSL_API void wolfSSL_X509_free(WOLFSSL_X509* x509);
31773206

3207+
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL || KEEP_PEER_CERT || \
3208+
KEEP_OUR_CERT || SESSION_CERTS */
3209+
3210+
31783211
/* get index cert in PEM */
3179-
WOLFSSL_API int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN* chain, int idx,
3180-
unsigned char* buf, int inLen, int* outLen);
3212+
31813213
WOLFSSL_ABI WOLFSSL_API const unsigned char* wolfSSL_get_sessionID(
31823214
const WOLFSSL_SESSION* s);
31833215
WOLFSSL_API int wolfSSL_X509_get_serial_number(WOLFSSL_X509* x509,unsigned char* in,int* inOutSz);
@@ -3302,17 +3334,6 @@ const WOLFSSL_ASN1_TIME* wolfSSL_X509_REVOKED_get0_revocation_date(const
33023334
/* connect enough to get peer cert */
33033335
WOLFSSL_API int wolfSSL_connect_cert(WOLFSSL* ssl);
33043336

3305-
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
3306-
WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509*
3307-
wolfSSL_X509_load_certificate_file(const char* fname, int format);
3308-
WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_load_certificate_buffer(
3309-
const unsigned char* buf, int sz, int format);
3310-
#ifdef WOLFSSL_CERT_REQ
3311-
WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_REQ_load_certificate_buffer(
3312-
const unsigned char* buf, int sz, int format);
3313-
#endif
3314-
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
3315-
33163337

33173338
#ifdef OPENSSL_EXTRA
33183339
/* PKCS12 compatibility */

wolfssl/wolfcrypt/settings.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3721,13 +3721,6 @@ extern void uITRON4_free(void *p) ;
37213721
#define WOLFSSL_HAVE_TLS_UNIQUE
37223722
#endif
37233723

3724-
/* Keep peer cert, keep our cert and session certs requires WOLFSSL_X509 */
3725-
#if (defined(KEEP_PEER_CERT) || defined(KEEP_OUR_CERT) || \
3726-
defined(SESSION_CERTS)) && \
3727-
!defined(OPENSSL_EXTRA) && !defined(OPENSSL_EXTRA_X509_SMALL)
3728-
#define OPENSSL_EXTRA_X509_SMALL
3729-
#endif
3730-
37313724
/* WPAS Small option requires OPENSSL_EXTRA_X509_SMALL */
37323725
#if defined(WOLFSSL_WPAS_SMALL) && !defined(OPENSSL_EXTRA_X509_SMALL)
37333726
#define OPENSSL_EXTRA_X509_SMALL

0 commit comments

Comments
 (0)