diff --git a/doc/dox_comments/header_files/ssl.h b/doc/dox_comments/header_files/ssl.h index 4a07cb192..6650d7817 100644 --- a/doc/dox_comments/header_files/ssl.h +++ b/doc/dox_comments/header_files/ssl.h @@ -14346,4 +14346,23 @@ int wolfSSL_dtls13_has_pending_msg(WOLFSSL *ssl); \sa wolfSSL_write_early_data \sa wolfSSL_read_early_data */ -unsigned int wolfSSL_SESSION_get_max_early_data(const WOLFSSL_SESSION *s); \ No newline at end of file +unsigned int wolfSSL_SESSION_get_max_early_data(const WOLFSSL_SESSION *s); + +/*! + \ingroup SSL + \brief Get a new index for external data. This entry applies also for the + following API: + - wolfSSL_CTX_get_ex_new_index + - wolfSSL_get_ex_new_index + - wolfSSL_SESSION_get_ex_new_index + - wolfSSL_X509_get_ex_new_index + + \param [in] All input parameters are ignored. The callback functions are not + supported with wolfSSL. + + \return The new index value to be used with the external data API for this + object class. + */ +int wolfSSL_CRYPTO_get_ex_new_index(int, void*, void*, void*, void*); + + diff --git a/src/ssl.c b/src/ssl.c index 6f4855f8d..c423c1b14 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -30628,11 +30628,8 @@ int wolfSSL_CTX_get_ex_new_index(long idx, void* arg, void* a, void* b, { WOLFSSL_ENTER("wolfSSL_CTX_get_ex_new_index"); - (void)idx; - (void)arg; - (void)a; - (void)b; - (void)c; + + WOLFSSL_CRYPTO_EX_DATA_IGNORE_PARAMS(idx, arg, a, b, c); return wolfssl_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_SSL_CTX); } @@ -30645,14 +30642,9 @@ int wolfSSL_get_ex_new_index(long argValue, void* arg, WOLFSSL_CRYPTO_EX_new* cb1, WOLFSSL_CRYPTO_EX_dup* cb2, WOLFSSL_CRYPTO_EX_free* cb3) { - WOLFSSL_ENTER("wolfSSL_get_ex_new_index"); - (void)argValue; - (void)arg; - (void)cb1; - (void)cb2; - (void)cb3; + WOLFSSL_CRYPTO_EX_DATA_IGNORE_PARAMS(argValue, arg, cb1, cb2, cb3); return wolfssl_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_SSL); } @@ -31400,11 +31392,7 @@ int wolfSSL_SESSION_get_ex_new_index(long idx, void* data, void* cb1, void* cb2, CRYPTO_free_func* cb3) { WOLFSSL_ENTER("wolfSSL_SESSION_get_ex_new_index"); - (void)idx; - (void)cb1; - (void)cb2; - (void)cb3; - (void)data; + WOLFSSL_CRYPTO_EX_DATA_IGNORE_PARAMS(idx, data, cb1, cb2, cb3); return wolfssl_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_SSL_SESSION); } #endif @@ -38116,11 +38104,9 @@ int wolfSSL_CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, WOLFSSL_CRYPTO_EX_free* free_func) { WOLFSSL_ENTER("wolfSSL_CRYPTO_get_ex_new_index"); - (void)argl; - (void)argp; - (void)new_func; - (void)dup_func; - (void)free_func; + + WOLFSSL_CRYPTO_EX_DATA_IGNORE_PARAMS(argl, argp, new_func, dup_func, + free_func); return wolfssl_get_ex_new_index(class_index); } diff --git a/src/x509.c b/src/x509.c index bfa5af079..7357e412d 100644 --- a/src/x509.c +++ b/src/x509.c @@ -11763,13 +11763,9 @@ int wolfSSL_sk_X509_num(const WOLF_STACK_OF(WOLFSSL_X509) *s) int wolfSSL_X509_get_ex_new_index(int idx, void *arg, void *a, void *b, void *c) { - WOLFSSL_ENTER("wolfSSL_X509_get_ex_new_index"); - (void)idx; - (void)arg; - (void)a; - (void)b; - (void)c; + + WOLFSSL_CRYPTO_EX_DATA_IGNORE_PARAMS(idx, arg, a, b, c); return wolfssl_get_ex_new_index(CRYPTO_EX_INDEX_X509); } diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index a26257c46..c1c123978 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -1264,6 +1264,20 @@ typedef void (CallbackInfoState)(const WOLFSSL* ssl, int, int); #define WOLF_CRYPTO_EX_INDEX__COUNT 16 #ifdef HAVE_EX_DATA +/* Helper macro to log that input arguments should not be used */ +#define WOLFSSL_CRYPTO_EX_DATA_IGNORE_PARAMS(a1, a2, a3, a4, a5) \ + (void)a1; \ + (void)a2; \ + (void)a3; \ + (void)a4; \ + (void)a5; \ + do { \ + if (a3 != NULL || a4 != NULL || a5 != NULL) { \ + WOLFSSL_MSG("get_ex_new_index API does not support " \ + "new, dup, or free callbacks"); \ + } \ + } while(0) + typedef int (WOLFSSL_CRYPTO_EX_new)(void* p, void* ptr, WOLFSSL_CRYPTO_EX_DATA* a, int idx, long argValue, void* arg); typedef int (WOLFSSL_CRYPTO_EX_dup)(WOLFSSL_CRYPTO_EX_DATA* out,