Add documentation explaining get_ex_new_index API limitations

This commit is contained in:
Juliusz Sosinowicz 2022-08-19 16:17:52 +02:00
parent 969ad96dee
commit 8b2fcd0643
4 changed files with 43 additions and 28 deletions

View File

@ -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);
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*);

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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,