forked from wolfSSL/wolfssl
Added new 256-byte max fragment option WOLFSSL_MFL_2_8
.
This commit is contained in:
@@ -10259,9 +10259,11 @@ WOLFSSL_API int wolfSSL_UseMaxFragment(WOLFSSL* ssl, unsigned char mfl);
|
|||||||
\param ctx pointer to a SSL context, created with wolfSSL_CTX_new().
|
\param ctx pointer to a SSL context, created with wolfSSL_CTX_new().
|
||||||
\param mfl indicates which is the Maximum Fragment Length requested
|
\param mfl indicates which is the Maximum Fragment Length requested
|
||||||
for the session. The available options are:
|
for the session. The available options are:
|
||||||
enum { WOLFSSL_MFL_2_9 = 1, 512 bytes WOLFSSL_MFL_2_10 = 2,
|
enum { WOLFSSL_MFL_2_9 = 1 512 bytes, WOLFSSL_MFL_2_10 = 2 1024 bytes,
|
||||||
1024 bytes WOLFSSL_MFL_2_11 = 3, 2048 bytes WOLFSSL_MFL_2_12 = 4,
|
WOLFSSL_MFL_2_11 = 3 2048 bytes WOLFSSL_MFL_2_12 = 4 4096 bytes,
|
||||||
4096 bytes WOLFSSL_MFL_2_13 = 5, 8192 bytes wolfSSL ONLY!!! };
|
WOLFSSL_MFL_2_13 = 5 8192 bytes wolfSSL ONLY!!!,
|
||||||
|
WOLFSSL_MFL_2_13 = 6 256 bytes wolfSSL ONLY!!!
|
||||||
|
};
|
||||||
|
|
||||||
_Example_
|
_Example_
|
||||||
\code
|
\code
|
||||||
|
@@ -858,7 +858,7 @@ static void Usage(void)
|
|||||||
printf("-S <str> Use Host Name Indication\n");
|
printf("-S <str> Use Host Name Indication\n");
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_MAX_FRAGMENT
|
#ifdef HAVE_MAX_FRAGMENT
|
||||||
printf("-F <num> Use Maximum Fragment Length [1-5]\n");
|
printf("-F <num> Use Maximum Fragment Length [0-5]\n");
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_TRUNCATED_HMAC
|
#ifdef HAVE_TRUNCATED_HMAC
|
||||||
printf("-T Use Truncated HMAC\n");
|
printf("-T Use Truncated HMAC\n");
|
||||||
@@ -1341,8 +1341,8 @@ THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
|
|||||||
case 'F' :
|
case 'F' :
|
||||||
#ifdef HAVE_MAX_FRAGMENT
|
#ifdef HAVE_MAX_FRAGMENT
|
||||||
maxFragment = atoi(myoptarg);
|
maxFragment = atoi(myoptarg);
|
||||||
if (maxFragment < WOLFSSL_MFL_2_9 ||
|
if (maxFragment < WOLFSSL_MFL_MIN ||
|
||||||
maxFragment > WOLFSSL_MFL_2_13) {
|
maxFragment > WOLFSSL_MFL_MAX) {
|
||||||
Usage();
|
Usage();
|
||||||
XEXIT_T(MY_EX_USAGE);
|
XEXIT_T(MY_EX_USAGE);
|
||||||
}
|
}
|
||||||
|
@@ -2464,6 +2464,7 @@ static int TLSX_MFL_Parse(WOLFSSL* ssl, byte* input, word16 length,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (*input) {
|
switch (*input) {
|
||||||
|
case WOLFSSL_MFL_2_8 : ssl->max_fragment = 256; break;
|
||||||
case WOLFSSL_MFL_2_9 : ssl->max_fragment = 512; break;
|
case WOLFSSL_MFL_2_9 : ssl->max_fragment = 512; break;
|
||||||
case WOLFSSL_MFL_2_10: ssl->max_fragment = 1024; break;
|
case WOLFSSL_MFL_2_10: ssl->max_fragment = 1024; break;
|
||||||
case WOLFSSL_MFL_2_11: ssl->max_fragment = 2048; break;
|
case WOLFSSL_MFL_2_11: ssl->max_fragment = 2048; break;
|
||||||
@@ -2495,7 +2496,7 @@ int TLSX_UseMaxFragment(TLSX** extensions, byte mfl, void* heap)
|
|||||||
byte* data = NULL;
|
byte* data = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (extensions == NULL || mfl < WOLFSSL_MFL_2_9 || WOLFSSL_MFL_2_13 < mfl)
|
if (extensions == NULL || mfl < WOLFSSL_MFL_MIN || mfl > WOLFSSL_MFL_MAX)
|
||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
|
|
||||||
data = (byte*)XMALLOC(ENUM_LEN, heap, DYNAMIC_TYPE_TLSX);
|
data = (byte*)XMALLOC(ENUM_LEN, heap, DYNAMIC_TYPE_TLSX);
|
||||||
|
@@ -2875,11 +2875,13 @@ static void test_wolfSSL_UseMaxFragment(void)
|
|||||||
AssertIntNE(WOLFSSL_SUCCESS, wolfSSL_UseMaxFragment(ssl, 6));
|
AssertIntNE(WOLFSSL_SUCCESS, wolfSSL_UseMaxFragment(ssl, 6));
|
||||||
|
|
||||||
/* success case */
|
/* success case */
|
||||||
|
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_8));
|
||||||
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_9));
|
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_9));
|
||||||
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_10));
|
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_10));
|
||||||
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_11));
|
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_11));
|
||||||
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_12));
|
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_12));
|
||||||
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_13));
|
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_13));
|
||||||
|
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_UseMaxFragment( ssl, WOLFSSL_MFL_2_8));
|
||||||
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_UseMaxFragment( ssl, WOLFSSL_MFL_2_9));
|
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_UseMaxFragment( ssl, WOLFSSL_MFL_2_9));
|
||||||
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_UseMaxFragment( ssl, WOLFSSL_MFL_2_10));
|
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_UseMaxFragment( ssl, WOLFSSL_MFL_2_10));
|
||||||
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_UseMaxFragment( ssl, WOLFSSL_MFL_2_11));
|
AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_UseMaxFragment( ssl, WOLFSSL_MFL_2_11));
|
||||||
|
@@ -2275,7 +2275,10 @@ enum {
|
|||||||
WOLFSSL_MFL_2_10 = 2, /* 1024 bytes */
|
WOLFSSL_MFL_2_10 = 2, /* 1024 bytes */
|
||||||
WOLFSSL_MFL_2_11 = 3, /* 2048 bytes */
|
WOLFSSL_MFL_2_11 = 3, /* 2048 bytes */
|
||||||
WOLFSSL_MFL_2_12 = 4, /* 4096 bytes */
|
WOLFSSL_MFL_2_12 = 4, /* 4096 bytes */
|
||||||
WOLFSSL_MFL_2_13 = 5 /* 8192 bytes *//* wolfSSL ONLY!!! */
|
WOLFSSL_MFL_2_13 = 5, /* 8192 bytes *//* wolfSSL ONLY!!! */
|
||||||
|
WOLFSSL_MFL_2_8 = 6, /* 256 bytes *//* wolfSSL ONLY!!! */
|
||||||
|
WOLFSSL_MFL_MIN = WOLFSSL_MFL_2_9,
|
||||||
|
WOLFSSL_MFL_MAX = WOLFSSL_MFL_2_8,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef NO_WOLFSSL_CLIENT
|
#ifndef NO_WOLFSSL_CLIENT
|
||||||
@@ -2284,7 +2287,7 @@ WOLFSSL_API int wolfSSL_UseMaxFragment(WOLFSSL* ssl, unsigned char mfl);
|
|||||||
WOLFSSL_API int wolfSSL_CTX_UseMaxFragment(WOLFSSL_CTX* ctx, unsigned char mfl);
|
WOLFSSL_API int wolfSSL_CTX_UseMaxFragment(WOLFSSL_CTX* ctx, unsigned char mfl);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif /* HAVE_MAX_FRAGMENT */
|
||||||
|
|
||||||
/* Truncated HMAC */
|
/* Truncated HMAC */
|
||||||
#ifdef HAVE_TRUNCATED_HMAC
|
#ifdef HAVE_TRUNCATED_HMAC
|
||||||
|
Reference in New Issue
Block a user