Various improvements for testing
Fix wc_ecc_fp_free() to be called when using HAVE_STACK_SIZE. Increase size of replyin client.c so all HTTP reply is displayed. Fix api.c to support only Ed25519 (not RSA and ECC) Fix suites.c to detect when CA for client won't work (Ed25519 only) For Static Memory add debugging and small profile. Also allow realloc to be called with NULL. Add more Ed25519 certs and keys. Fix names of Ed25519 filenames for client and server. Do NOT turn on ECC_SHAMIR by default with lowresource. Enable WOLFSSL_STATIC_MEMORY_SMALL if low resource and no RSA.
This commit is contained in:
parent
5801e7773b
commit
8bb4e23f8d
@ -1466,7 +1466,7 @@ fi
|
||||
if test "$ENABLED_ECC" = "yes"
|
||||
then
|
||||
AM_CFLAGS="$AM_CFLAGS -DHAVE_ECC -DTFM_ECC256"
|
||||
if test "$ENABLED_ECC_SHAMIR" = "yes"
|
||||
if test "$ENABLED_ECC_SHAMIR" = "yes" && test "$ENABLED_LOWRESOURCE" = "no"
|
||||
then
|
||||
AM_CFLAGS="$AM_CFLAGS -DECC_SHAMIR"
|
||||
fi
|
||||
@ -4202,6 +4202,10 @@ then
|
||||
then
|
||||
AC_MSG_ERROR([please use --enable-fastmath if enabling staticmemory.])
|
||||
fi
|
||||
if test "$ENABLED_LOWRESOURCE" = "yes" && test "$ENABLED_RSA" = "no"
|
||||
then
|
||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_STATIC_MEMORY_SMALL"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
@ -1304,7 +1304,7 @@ THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
|
||||
char resumeMsg[32] = "resuming wolfssl!\n";
|
||||
#endif
|
||||
|
||||
char reply[80];
|
||||
char reply[128];
|
||||
int msgSz = (int)XSTRLEN(msg);
|
||||
int resumeSz = (int)XSTRLEN(resumeMsg);
|
||||
|
||||
@ -3183,6 +3183,11 @@ exit:
|
||||
wolfAsync_DevClose(&devId);
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_ECC) && defined(FP_ECC) && defined(HAVE_THREAD_LS) \
|
||||
&& defined(HAVE_STACK_SIZE)
|
||||
wc_ecc_fp_free(); /* free per thread cache */
|
||||
#endif
|
||||
|
||||
/* There are use cases when these assignments are not read. To avoid
|
||||
* potential confusion those warnings have been handled here.
|
||||
*/
|
||||
|
@ -2279,8 +2279,8 @@ THREAD_RETURN WOLFSSL_THREAD server_test(void* args)
|
||||
|
||||
exit:
|
||||
|
||||
#if defined(NO_MAIN_DRIVER) && defined(HAVE_ECC) && defined(FP_ECC) \
|
||||
&& defined(HAVE_THREAD_LS)
|
||||
#if defined(HAVE_ECC) && defined(FP_ECC) && defined(HAVE_THREAD_LS) \
|
||||
&& (defined(NO_MAIN_DRIVER) || defined(HAVE_STACK_SIZE))
|
||||
wc_ecc_fp_free(); /* free per thread cache */
|
||||
#endif
|
||||
|
||||
|
@ -1284,11 +1284,16 @@ static void test_wolfSSL_SetTmpDH_file(void)
|
||||
WOLFSSL_FILETYPE_PEM));
|
||||
AssertTrue(wolfSSL_CTX_use_PrivateKey_file(ctx, svrKeyFile,
|
||||
WOLFSSL_FILETYPE_PEM));
|
||||
#else
|
||||
#elif defined(HAVE_ECC)
|
||||
AssertTrue(wolfSSL_CTX_use_certificate_file(ctx, eccCertFile,
|
||||
WOLFSSL_FILETYPE_PEM));
|
||||
AssertTrue(wolfSSL_CTX_use_PrivateKey_file(ctx, eccKeyFile,
|
||||
WOLFSSL_FILETYPE_PEM));
|
||||
#elif defined(HAVE_ED25519)
|
||||
AssertTrue(wolfSSL_CTX_use_certificate_file(ctx, edCertFile,
|
||||
WOLFSSL_FILETYPE_PEM));
|
||||
AssertTrue(wolfSSL_CTX_use_PrivateKey_file(ctx, edKeyFile,
|
||||
WOLFSSL_FILETYPE_PEM));
|
||||
#endif
|
||||
AssertNotNull(ssl = wolfSSL_new(ctx));
|
||||
|
||||
@ -21587,9 +21592,11 @@ static void test_CheckCertSignature(void)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(NO_FILESYSTEM) && (!defined(NO_RSA) || defined(HAVE_ECC))
|
||||
(void)fp;
|
||||
(void)cert;
|
||||
(void)certSz;
|
||||
#endif
|
||||
|
||||
wolfSSL_CertManagerFree(cm);
|
||||
#endif
|
||||
|
@ -193,6 +193,36 @@ static int IsValidCert(const char* line)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int IsValidCA(const char* line)
|
||||
{
|
||||
int ret = 1;
|
||||
#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS)
|
||||
WOLFSSL_CTX* ctx;
|
||||
size_t i;
|
||||
const char* begin;
|
||||
char cert[80];
|
||||
|
||||
begin = XSTRSTR(line, "-A ");
|
||||
if (begin == NULL)
|
||||
return 1;
|
||||
|
||||
begin += 3;
|
||||
for (i = 0; i < sizeof(cert) - 1 && *begin != ' ' && *begin != '\0'; i++)
|
||||
cert[i] = *(begin++);
|
||||
cert[i] = '\0';
|
||||
|
||||
ctx = wolfSSL_CTX_new(wolfSSLv23_server_method_ex(NULL));
|
||||
if (ctx == NULL)
|
||||
return 0;
|
||||
ret = wolfSSL_CTX_use_certificate_chain_file(ctx, cert) == WOLFSSL_SUCCESS;
|
||||
wolfSSL_CTX_free(ctx);
|
||||
#endif /* !NO_FILESYSTEM && !NO_CERTS */
|
||||
|
||||
(void)line;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int execute_test_case(int svr_argc, char** svr_argv,
|
||||
int cli_argc, char** cli_argv,
|
||||
int addNoVerify, int addNonBlocking,
|
||||
@ -392,6 +422,12 @@ static int execute_test_case(int svr_argc, char** svr_argv,
|
||||
strcat(commandLine, cli_argv[i]);
|
||||
strcat(commandLine, flagSep);
|
||||
}
|
||||
if (!IsValidCA(commandLine)) {
|
||||
#ifdef DEBUG_SUITE_TESTS
|
||||
printf("certificate %s not supported in build\n", commandLine);
|
||||
#endif
|
||||
return NOT_BUILT_IN;
|
||||
}
|
||||
printf("trying client command line[%d]: %s\n", tests, commandLine);
|
||||
|
||||
/* determine based on args if this test is expected to fail */
|
||||
|
@ -669,6 +669,12 @@ void* wolfSSL_Malloc(size_t size, void* heap, int type)
|
||||
mem->ava[i] = pt->next;
|
||||
break;
|
||||
}
|
||||
#ifdef WOLFSSL_DEBUG_STATIC_MEMORY
|
||||
else {
|
||||
printf("Size: %ld, Empty: %d\n", size,
|
||||
mem->sizeList[i]);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -864,6 +870,14 @@ void* wolfSSL_Realloc(void *ptr, size_t size, void* heap, int type)
|
||||
WOLFSSL_HEAP* mem = hint->memory;
|
||||
word32 padSz = -(int)sizeof(wc_Memory) & (WOLFSSL_STATIC_ALIGN - 1);
|
||||
|
||||
if (ptr == NULL) {
|
||||
#ifdef WOLFSSL_DEBUG_MEMORY
|
||||
return wolfSSL_Malloc(size, heap, type, func, line);
|
||||
#else
|
||||
return wolfSSL_Malloc(size, heap, type);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (wc_LockMutex(&(mem->memory_mutex)) != 0) {
|
||||
WOLFSSL_MSG("Bad memory_mutex lock");
|
||||
return NULL;
|
||||
|
@ -3036,6 +3036,17 @@ static const unsigned char server_ed25519_cert[] =
|
||||
};
|
||||
static const int sizeof_server_ed25519_cert = sizeof(server_ed25519_cert);
|
||||
|
||||
static const unsigned char server_ed25519_key[] =
|
||||
{
|
||||
0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06,
|
||||
0x03, 0x2b, 0x65, 0x70, 0x04, 0x22, 0x04, 0x20,
|
||||
0x02, 0x2f, 0xc5, 0xff, 0xba, 0x8e, 0xd0, 0xd2,
|
||||
0xbf, 0x03, 0x8e, 0x76, 0x8f, 0xc8, 0x86, 0x80,
|
||||
0x71, 0x87, 0x97, 0x31, 0xe2, 0x40, 0xac, 0xdf,
|
||||
0xbb, 0x90, 0x15, 0x52, 0x6e, 0x24, 0xa1, 0x39
|
||||
};
|
||||
static const int sizeof_server_ed25519_key = sizeof(server_ed25519_key);
|
||||
|
||||
/* ./certs/ed25519/ca-ed25519.der, ED25519 */
|
||||
static const unsigned char ca_ed25519_cert[] =
|
||||
{
|
||||
@ -3104,6 +3115,100 @@ static const unsigned char ca_ed25519_cert[] =
|
||||
};
|
||||
static const int sizeof_ca_ed25519_cert = sizeof(ca_ed25519_cert);
|
||||
|
||||
/* ./certs/ed25519/client-ed25519.der, ED25519 */
|
||||
static unsigned char client_ed25519_cert[] =
|
||||
{
|
||||
0x30, 0x82, 0x02, 0x58, 0x30, 0x82, 0x02, 0x0a,
|
||||
0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x00,
|
||||
0x8f, 0x2f, 0x35, 0xb2, 0x53, 0xbd, 0x4f, 0x92,
|
||||
0xd1, 0xff, 0x1d, 0x4b, 0x40, 0xa5, 0x49, 0x30,
|
||||
0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x30, 0x81,
|
||||
0xa1, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
|
||||
0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10,
|
||||
0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c,
|
||||
0x07, 0x4d, 0x6f, 0x6e, 0x74, 0x61, 0x6e, 0x61,
|
||||
0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04,
|
||||
0x07, 0x0c, 0x07, 0x42, 0x6f, 0x7a, 0x65, 0x6d,
|
||||
0x61, 0x6e, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03,
|
||||
0x55, 0x04, 0x04, 0x0c, 0x06, 0x63, 0x6c, 0x69,
|
||||
0x65, 0x6e, 0x74, 0x31, 0x10, 0x30, 0x0e, 0x06,
|
||||
0x03, 0x55, 0x04, 0x0a, 0x0c, 0x07, 0x77, 0x6f,
|
||||
0x6c, 0x66, 0x53, 0x53, 0x4c, 0x31, 0x10, 0x30,
|
||||
0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x07,
|
||||
0x45, 0x44, 0x32, 0x35, 0x35, 0x31, 0x39, 0x31,
|
||||
0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03,
|
||||
0x0c, 0x0f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x6f,
|
||||
0x6c, 0x66, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f,
|
||||
0x6d, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x09, 0x2a,
|
||||
0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01,
|
||||
0x16, 0x10, 0x69, 0x6e, 0x66, 0x6f, 0x40, 0x77,
|
||||
0x6f, 0x6c, 0x66, 0x73, 0x73, 0x6c, 0x2e, 0x63,
|
||||
0x6f, 0x6d, 0x30, 0x22, 0x18, 0x0f, 0x32, 0x30,
|
||||
0x31, 0x38, 0x30, 0x34, 0x31, 0x32, 0x31, 0x36,
|
||||
0x32, 0x32, 0x31, 0x37, 0x5a, 0x18, 0x0f, 0x32,
|
||||
0x30, 0x32, 0x31, 0x30, 0x31, 0x30, 0x37, 0x31,
|
||||
0x35, 0x32, 0x32, 0x31, 0x37, 0x5a, 0x30, 0x81,
|
||||
0xa1, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
|
||||
0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10,
|
||||
0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c,
|
||||
0x07, 0x4d, 0x6f, 0x6e, 0x74, 0x61, 0x6e, 0x61,
|
||||
0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04,
|
||||
0x07, 0x0c, 0x07, 0x42, 0x6f, 0x7a, 0x65, 0x6d,
|
||||
0x61, 0x6e, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03,
|
||||
0x55, 0x04, 0x04, 0x0c, 0x06, 0x63, 0x6c, 0x69,
|
||||
0x65, 0x6e, 0x74, 0x31, 0x10, 0x30, 0x0e, 0x06,
|
||||
0x03, 0x55, 0x04, 0x0a, 0x0c, 0x07, 0x77, 0x6f,
|
||||
0x6c, 0x66, 0x53, 0x53, 0x4c, 0x31, 0x10, 0x30,
|
||||
0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x07,
|
||||
0x45, 0x44, 0x32, 0x35, 0x35, 0x31, 0x39, 0x31,
|
||||
0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03,
|
||||
0x0c, 0x0f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x6f,
|
||||
0x6c, 0x66, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f,
|
||||
0x6d, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x09, 0x2a,
|
||||
0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01,
|
||||
0x16, 0x10, 0x69, 0x6e, 0x66, 0x6f, 0x40, 0x77,
|
||||
0x6f, 0x6c, 0x66, 0x73, 0x73, 0x6c, 0x2e, 0x63,
|
||||
0x6f, 0x6d, 0x30, 0x2a, 0x30, 0x05, 0x06, 0x03,
|
||||
0x2b, 0x65, 0x70, 0x03, 0x21, 0x00, 0xa2, 0xf1,
|
||||
0x26, 0x40, 0x9b, 0xa2, 0x59, 0xda, 0xdb, 0xe6,
|
||||
0x15, 0x7f, 0x9a, 0x11, 0xb5, 0x48, 0x5f, 0x55,
|
||||
0xba, 0x5e, 0xed, 0x46, 0xf7, 0x98, 0x67, 0xbe,
|
||||
0x0c, 0x93, 0xe3, 0xa4, 0x8e, 0x18, 0xa3, 0x52,
|
||||
0x30, 0x50, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
|
||||
0x0e, 0x04, 0x16, 0x04, 0x14, 0xfe, 0x01, 0x46,
|
||||
0x7f, 0x6f, 0x2b, 0x3e, 0x1c, 0xb0, 0x6f, 0xe1,
|
||||
0xcc, 0x4d, 0x02, 0x25, 0xf7, 0x4d, 0x0a, 0x95,
|
||||
0xb8, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23,
|
||||
0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfe, 0x01,
|
||||
0x46, 0x7f, 0x6f, 0x2b, 0x3e, 0x1c, 0xb0, 0x6f,
|
||||
0xe1, 0xcc, 0x4d, 0x02, 0x25, 0xf7, 0x4d, 0x0a,
|
||||
0x95, 0xb8, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
|
||||
0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02,
|
||||
0x06, 0xc0, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65,
|
||||
0x70, 0x03, 0x41, 0x00, 0x29, 0xf6, 0x69, 0xe2,
|
||||
0xb9, 0x73, 0x12, 0xd1, 0x64, 0xeb, 0x8f, 0xe9,
|
||||
0x6b, 0x61, 0xdb, 0x5f, 0xe9, 0xa7, 0x62, 0x6c,
|
||||
0x10, 0x89, 0x41, 0x80, 0xe3, 0xe8, 0xfd, 0x1f,
|
||||
0xd0, 0x13, 0xae, 0x95, 0x00, 0xaf, 0xf7, 0x77,
|
||||
0xe1, 0x22, 0x32, 0xad, 0x46, 0x4f, 0xdc, 0x7e,
|
||||
0xfe, 0xae, 0xbc, 0x8a, 0x1f, 0x96, 0x0a, 0xda,
|
||||
0x9f, 0xc9, 0x93, 0x52, 0x27, 0x18, 0xb0, 0x8b,
|
||||
0xda, 0xbe, 0x81, 0x09
|
||||
};
|
||||
static const int sizeof_client_ed25519_cert = sizeof(client_ed25519_cert);
|
||||
|
||||
/* ./certs/ed25519/client-ed25519-key.der, ED25519 */
|
||||
static unsigned char client_ed25519_key[] =
|
||||
{
|
||||
0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06,
|
||||
0x03, 0x2b, 0x65, 0x70, 0x04, 0x22, 0x04, 0x20,
|
||||
0x27, 0xa3, 0x34, 0x2a, 0x35, 0xd4, 0xbb, 0xb8,
|
||||
0xe1, 0xdc, 0xd8, 0xec, 0x0f, 0xc1, 0xa0, 0xd1,
|
||||
0xa2, 0x5c, 0xf9, 0x06, 0xf0, 0x44, 0x5d, 0x3b,
|
||||
0x97, 0x4d, 0xbd, 0xdf, 0x4a, 0x3b, 0xa3, 0x4e
|
||||
};
|
||||
static const int sizeof_client_ed25519_key = sizeof(client_ed25519_key);
|
||||
|
||||
#endif /* HAVE_ED25519 */
|
||||
|
||||
#endif /* WOLFSSL_CERTS_TEST_H */
|
||||
|
@ -327,11 +327,11 @@
|
||||
#define cliEccCertFile "./certs/client-ecc-cert.pem"
|
||||
#define caEccCertFile "./certs/ca-ecc-cert.pem"
|
||||
#define crlPemDir "./certs/crl"
|
||||
#define edCertFile "./certs/ed25519/server-ed25519.pem"
|
||||
#define edCertFile "./certs/ed25519/server-ed25519-cert.pem"
|
||||
#define edKeyFile "./certs/ed25519/server-ed25519-priv.pem"
|
||||
#define cliEdCertFile "./certs/ed25519/client-ed25519.pem"
|
||||
#define cliEdKeyFile "./certs/ed25519/client-ed25519-priv.pem"
|
||||
#define caEdCertFile "./certs/ed25519/root-ed25519.pem"
|
||||
#define caEdCertFile "./certs/ed25519/ca-ed25519.pem"
|
||||
#ifdef HAVE_WNR
|
||||
/* Whitewood netRandom default config file */
|
||||
#define wnrConfig "./wnr-example.conf"
|
||||
|
@ -110,7 +110,12 @@ WOLFSSL_API int wolfSSL_GetAllocators(wolfSSL_Malloc_cb*,
|
||||
#endif
|
||||
#endif
|
||||
#ifndef WOLFMEM_DIST
|
||||
#define WOLFMEM_DIST 49,10,6,14,5,6,9,1,1
|
||||
#ifndef WOLFSSL_STATIC_MEMORY_SMALL
|
||||
#define WOLFMEM_DIST 49,10,6,14,5,6,9,1,1
|
||||
#else
|
||||
/* Low resource and not RSA */
|
||||
#define WOLFMEM_DIST 29, 7,6, 9,4,4,0,0,0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* flags for loading static memory (one hot bit) */
|
||||
|
Loading…
x
Reference in New Issue
Block a user