mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-02 12:14:38 +02:00
add getter for max output size
This commit is contained in:
@@ -11138,6 +11138,9 @@ const char* wolfSSL_ERR_reason_error_string(unsigned long e)
|
|||||||
case DTLS_EXPORT_VER_E:
|
case DTLS_EXPORT_VER_E:
|
||||||
return "Version needs updated after code change or version mismatch";
|
return "Version needs updated after code change or version mismatch";
|
||||||
|
|
||||||
|
case INPUT_SIZE_E:
|
||||||
|
return "Input size too large Error";
|
||||||
|
|
||||||
default :
|
default :
|
||||||
return "unknown error number";
|
return "unknown error number";
|
||||||
}
|
}
|
||||||
|
31
src/ssl.c
31
src/ssl.c
@@ -619,16 +619,20 @@ int wolfSSL_GetObjectSize(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* return record layer size of plaintext input size */
|
/* return max record layer size plaintext input size */
|
||||||
int wolfSSL_GetOutputSize(WOLFSSL* ssl, int inSz)
|
int wolfSSL_GetMaxOutputSize(WOLFSSL* ssl)
|
||||||
{
|
{
|
||||||
int maxSize = OUTPUT_RECORD_SIZE;
|
int maxSize = OUTPUT_RECORD_SIZE;
|
||||||
|
|
||||||
if (ssl == NULL || inSz < 0)
|
WOLFSSL_ENTER("wolfSSL_GetMaxOutputSize");
|
||||||
|
|
||||||
|
if (ssl == NULL)
|
||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
|
|
||||||
if (ssl->options.handShakeState != HANDSHAKE_DONE)
|
if (ssl->options.handShakeState != HANDSHAKE_DONE) {
|
||||||
|
WOLFSSL_MSG("Handshake not complete yet");
|
||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_MAX_FRAGMENT
|
#ifdef HAVE_MAX_FRAGMENT
|
||||||
maxSize = min(maxSize, ssl->max_fragment);
|
maxSize = min(maxSize, ssl->max_fragment);
|
||||||
@@ -640,9 +644,26 @@ int wolfSSL_GetOutputSize(WOLFSSL* ssl, int inSz)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (inSz > maxSize)
|
return maxSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* return record layer size of plaintext input size */
|
||||||
|
int wolfSSL_GetOutputSize(WOLFSSL* ssl, int inSz)
|
||||||
|
{
|
||||||
|
int maxSize;
|
||||||
|
|
||||||
|
WOLFSSL_ENTER("wolfSSL_GetOutputSize");
|
||||||
|
|
||||||
|
if (inSz < 0)
|
||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
|
|
||||||
|
maxSize = wolfSSL_GetMaxOutputSize(ssl);
|
||||||
|
if (maxSize < 0)
|
||||||
|
return maxSize; /* error */
|
||||||
|
if (inSz > maxSize)
|
||||||
|
return INPUT_SIZE_E;
|
||||||
|
|
||||||
return BuildMessage(ssl, NULL, 0, NULL, inSz, application_data, 0, 1);
|
return BuildMessage(ssl, NULL, 0, NULL, inSz, application_data, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -148,6 +148,7 @@ enum wolfSSL_ErrorCodes {
|
|||||||
ECC_KEY_SIZE_E = -410, /* ECC key too small */
|
ECC_KEY_SIZE_E = -410, /* ECC key too small */
|
||||||
|
|
||||||
DTLS_EXPORT_VER_E = -411, /* export version error */
|
DTLS_EXPORT_VER_E = -411, /* export version error */
|
||||||
|
INPUT_SIZE_E = -412, /* input size too big error */
|
||||||
/* add strings to wolfSSL_ERR_reason_error_string in internal.c !!!!! */
|
/* add strings to wolfSSL_ERR_reason_error_string in internal.c !!!!! */
|
||||||
|
|
||||||
/* begin negotiation parameter errors */
|
/* begin negotiation parameter errors */
|
||||||
|
@@ -1143,6 +1143,7 @@ WOLFSSL_API int wolfSSL_CTX_SetMinVersion(WOLFSSL_CTX* ctx, int version);
|
|||||||
WOLFSSL_API int wolfSSL_SetMinVersion(WOLFSSL* ssl, int version);
|
WOLFSSL_API int wolfSSL_SetMinVersion(WOLFSSL* ssl, int version);
|
||||||
WOLFSSL_API int wolfSSL_GetObjectSize(void); /* object size based on build */
|
WOLFSSL_API int wolfSSL_GetObjectSize(void); /* object size based on build */
|
||||||
WOLFSSL_API int wolfSSL_GetOutputSize(WOLFSSL*, int);
|
WOLFSSL_API int wolfSSL_GetOutputSize(WOLFSSL*, int);
|
||||||
|
WOLFSSL_API int wolfSSL_GetMaxOutputSize(WOLFSSL*);
|
||||||
WOLFSSL_API int wolfSSL_SetVersion(WOLFSSL* ssl, int version);
|
WOLFSSL_API int wolfSSL_SetVersion(WOLFSSL* ssl, int version);
|
||||||
WOLFSSL_API int wolfSSL_KeyPemToDer(const unsigned char*, int,
|
WOLFSSL_API int wolfSSL_KeyPemToDer(const unsigned char*, int,
|
||||||
unsigned char*, int, const char*);
|
unsigned char*, int, const char*);
|
||||||
|
Reference in New Issue
Block a user