Changes for ED25519 and HAVE_SECRET_CALLBACK

- `HAVE_SECRET_CALLBACK` needs to have `wolfSSL_SSL_CTX_get_timeout` and `wolfSSL_SSL_get_timeout` available
- Call `wolfSSL_KeepArrays` for `HAVE_SECRET_CALLBACK`
- Increase the default `DTLS_MTU_ADDITIONAL_READ_BUFFER` and make it adjustable by the user
- Don't truncate application data returned to user in `wolfSSL_read_internal`
This commit is contained in:
Juliusz Sosinowicz 2021-09-02 15:52:35 +02:00
parent 56843fbefd
commit 4a26b53dfc
6 changed files with 37 additions and 30 deletions

View File

@ -6773,11 +6773,11 @@ AM_CONDITIONAL([BUILD_SHA512],[test "x$ENABLED_SHA512" = "xyes" || test "x$ENABL
AM_CONDITIONAL([BUILD_DSA],[test "x$ENABLED_DSA" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
AM_CONDITIONAL([BUILD_ECC],[test "x$ENABLED_ECC" != "xno" || test "x$ENABLED_USERSETTINGS" = "xyes"])
AM_CONDITIONAL([BUILD_ED25519],[test "x$ENABLED_ED25519" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
AM_CONDITIONAL([BUILD_ED25519_SMALL],[test "x$ENABLED_ED25519_SMALL" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
AM_CONDITIONAL([BUILD_ED25519_SMALL],[test "x$ENABLED_ED25519_SMALL" = "xyes"])
AM_CONDITIONAL([BUILD_FEMATH], [test "x$ENABLED_FEMATH" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
AM_CONDITIONAL([BUILD_GEMATH], [test "x$ENABLED_GEMATH" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
AM_CONDITIONAL([BUILD_CURVE25519],[test "x$ENABLED_CURVE25519" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
AM_CONDITIONAL([BUILD_CURVE25519_SMALL],[test "x$ENABLED_CURVE25519_SMALL" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
AM_CONDITIONAL([BUILD_CURVE25519_SMALL],[test "x$ENABLED_CURVE25519_SMALL" = "xyes"])
AM_CONDITIONAL([BUILD_ED448],[test "x$ENABLED_ED448" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
AM_CONDITIONAL([BUILD_ED448_SMALL],[test "x$ENABLED_ED448_SMALL" = "xyes"])
AM_CONDITIONAL([BUILD_FE448], [test "x$ENABLED_FE448" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])

View File

@ -3228,7 +3228,7 @@ THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
}
#endif /* !NO_CERTS */
#ifdef OPENSSL_EXTRA
#if defined(OPENSSL_EXTRA) || defined(HAVE_SECRET_CALLBACK)
wolfSSL_KeepArrays(ssl);
#endif

View File

@ -2531,7 +2531,7 @@ THREAD_RETURN WOLFSSL_THREAD server_test(void* args)
if (ssl == NULL)
err_sys_ex(catastrophic, "unable to create an SSL object");
#ifdef OPENSSL_EXTRA
#if defined(OPENSSL_EXTRA) || defined(HAVE_SECRET_CALLBACK)
wolfSSL_KeepArrays(ssl);
#endif

View File

@ -2160,8 +2160,6 @@ static int wolfSSL_read_internal(WOLFSSL* ssl, void* data, int sz, int peek)
}
#endif
sz = wolfSSL_GetMaxRecordSize(ssl, sz);
ret = ReceiveData(ssl, (byte*)data, sz, peek);
#ifdef HAVE_WRITE_DUP
@ -48164,27 +48162,9 @@ int wolfSSL_X509_check_email(WOLFSSL_X509 *x, const char *chk, size_t chkLen,
}
#endif /* OPENSSL_EXTRA && WOLFSSL_CERT_GEN */
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) \
|| defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY)
int wolfSSL_X509_NAME_digest(const WOLFSSL_X509_NAME *name,
const WOLFSSL_EVP_MD *type, unsigned char *md, unsigned int *len)
{
WOLFSSL_ENTER("wolfSSL_X509_NAME_digest");
if (name == NULL || type == NULL)
return WOLFSSL_FAILURE;
#if !defined(NO_FILESYSTEM) && !defined(NO_PWDBASED)
return wolfSSL_EVP_Digest((unsigned char*)name->name,
name->sz, md, len, type, NULL);
#else
(void)md;
(void)len;
return NOT_COMPILED_IN;
#endif
}
|| defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) || defined(HAVE_SECRET_CALLBACK)
long wolfSSL_SSL_CTX_get_timeout(const WOLFSSL_CTX *ctx)
{
WOLFSSL_ENTER("wolfSSL_SSL_CTX_get_timeout");
@ -48205,6 +48185,28 @@ long wolfSSL_get_timeout(WOLFSSL* ssl)
return 0;
return ssl->timeout;
}
#endif
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) \
|| defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY)
int wolfSSL_X509_NAME_digest(const WOLFSSL_X509_NAME *name,
const WOLFSSL_EVP_MD *type, unsigned char *md, unsigned int *len)
{
WOLFSSL_ENTER("wolfSSL_X509_NAME_digest");
if (name == NULL || type == NULL)
return WOLFSSL_FAILURE;
#if !defined(NO_FILESYSTEM) && !defined(NO_PWDBASED)
return wolfSSL_EVP_Digest((unsigned char*)name->name,
name->sz, md, len, type, NULL);
#else
(void)md;
(void)len;
return NOT_COMPILED_IN;
#endif
}
#ifdef HAVE_ECC
int wolfSSL_SSL_CTX_set_tmp_ecdh(WOLFSSL_CTX *ctx, WOLFSSL_EC_KEY *ecdh)

View File

@ -1171,6 +1171,10 @@ enum {
#define WOLFSSL_MAX_MTU 1400
#endif /* WOLFSSL_MAX_MTU */
#ifndef WOLFSSL_DTLS_MTU_ADDITIONAL_READ_BUFFER
#define WOLFSSL_DTLS_MTU_ADDITIONAL_READ_BUFFER 500
#endif /* WOLFSSL_DTLS_MTU_ADDITIONAL_READ_BUFFER */
/* set minimum DH key size allowed */
#ifndef WOLFSSL_MIN_DHKEY_BITS
@ -1363,9 +1367,10 @@ enum Misc {
DTLS_EXPORT_SPC_SZ = 16, /* amount of bytes used from CipherSpecs */
DTLS_EXPORT_LEN = 2, /* 2 bytes for length and protocol */
DTLS_EXPORT_IP = 46, /* max ip size IPv4 mapped IPv6 */
DTLS_MTU_ADDITIONAL_READ_BUFFER = 100, /* Additional bytes to read so that
* we can work with a peer that has
* a slightly different MTU than us. */
DTLS_MTU_ADDITIONAL_READ_BUFFER = WOLFSSL_DTLS_MTU_ADDITIONAL_READ_BUFFER,
/* Additional bytes to read so that
* we can work with a peer that has
* a slightly different MTU than us. */
MAX_EXPORT_BUFFER = 514, /* max size of buffer for exporting */
MAX_EXPORT_STATE_BUFFER = (DTLS_EXPORT_MIN_KEY_SZ) + (3 * DTLS_EXPORT_LEN),
/* max size of buffer for exporting state */

View File

@ -4423,7 +4423,7 @@ WOLFSSL_API int wolfSSL_X509_set_ex_data_with_cleanup(
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL || WOLFSSL_WPAS_SMALL */
#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) \
|| defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY)
|| defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) || defined(HAVE_SECRET_CALLBACK)
WOLFSSL_API WOLF_STACK_OF(WOLFSSL_CIPHER) *wolfSSL_get_ciphers_compat(const WOLFSSL *ssl);
WOLFSSL_API int wolfSSL_X509_get_ex_new_index(int idx, void *arg, void *a,
void *b, void *c);