From 578f56e60cae50fc363c42d451be55c9423a8e75 Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Thu, 22 Jun 2023 08:11:50 +1000 Subject: [PATCH] Test api.c: change more tests to use Expect instead of Assert bio.c: wolfSSL_BIO_flush(): check allocation to bio->ip succeeded. internal.c: InitSSL_Ctx(): set ctx->heap to heap if value passed in ProcessPeerCerts(): check for error MEMORY_E too as a fatal parsing error ssl.c: wolfSSL_shutdown(): SOCKET_ERROR_E is also an indication that the socket is done, MEMORY_E is a fatal error wolfSSL_Cleanup(): move free of memory fail couting to wolfSSL API SessionTicketNoncePrealloc(): eror return must be non-zero AddSessionToCache(): XFREE checks for NULL no need to do it before call wolfSSL_set_psk_use_session_callback(): ensure ssl is not NULL before dereferencing wolfSSL_SMIME_read_PKCS7(): check for error return from wolfSSL_BIO_gets() asn.c: wc_MIME_parse_headers(): check allocation succeeded into nextHdr compress.c: wc_DeCompressDynamic(): free tmp on inflateInit2 failure memory.c: rework where memory allocation failure counting code for when WOFLSSL_STATIC_MEMORY is defined wc_port.c: wolfCrypt_Cleanup(): only call wc_MemFailCount_Free() when no wolfSSL_Cleanup() --- src/bio.c | 12 +- src/internal.c | 18 +- src/ssl.c | 51 +- tests/api.c | 27322 ++++++++++++++----------------------- tests/unit.h | 68 + wolfcrypt/src/asn.c | 16 +- wolfcrypt/src/compress.c | 1 + wolfcrypt/src/memory.c | 111 +- wolfcrypt/src/wc_port.c | 2 +- 9 files changed, 10676 insertions(+), 16925 deletions(-) diff --git a/src/bio.c b/src/bio.c index 5f845cf0b..eb635bc28 100644 --- a/src/bio.c +++ b/src/bio.c @@ -2069,9 +2069,15 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio) bio->ip = (char*)XMALLOC((port - str) + 1, /* +1 for null char */ bio->heap, DYNAMIC_TYPE_OPENSSL); - XMEMCPY(bio->ip, str, port - str); - bio->ip[port - str] = '\0'; - bio->type = WOLFSSL_BIO_SOCKET; + if (bio->ip != NULL) { + XMEMCPY(bio->ip, str, port - str); + bio->ip[port - str] = '\0'; + bio->type = WOLFSSL_BIO_SOCKET; + } + else { + BIO_free(bio); + bio = NULL; + } } return bio; } diff --git a/src/internal.c b/src/internal.c index c6a781afb..d69d5cbc8 100644 --- a/src/internal.c +++ b/src/internal.c @@ -2154,7 +2154,12 @@ int InitSSL_Ctx(WOLFSSL_CTX* ctx, WOLFSSL_METHOD* method, void* heap) XMEMSET(ctx, 0, sizeof(WOLFSSL_CTX)); ctx->method = method; - ctx->heap = ctx; /* defaults to self */ + if (heap == NULL) { + ctx->heap = ctx; /* defaults to self */ + } + else { + ctx->heap = heap; /* wolfSSL_CTX_load_static_memory sets */ + } ctx->timeout = WOLFSSL_SESSION_TIMEOUT; #ifdef WOLFSSL_DTLS @@ -13591,6 +13596,12 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx, if (ret == 0) { ret = ProcessPeerCertCheckKey(ssl, args); } + else if (ret == ASN_PARSE_E || ret == BUFFER_E || + ret == MEMORY_E) { + WOLFSSL_MSG( + "Got Peer cert ASN PARSE_E, BUFFER E, MEMORY_E"); + ERROR_OUT(ret, exit_ppc); + } if (ret == 0 && args->dCert->isCA == 0) { WOLFSSL_MSG("Chain cert is not a CA, not adding as one"); @@ -13875,8 +13886,9 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx, args->fatal = 0; } } - else if (ret == ASN_PARSE_E || ret == BUFFER_E) { - WOLFSSL_MSG("Got Peer cert ASN PARSE or BUFFER ERROR"); + else if (ret == ASN_PARSE_E || ret == BUFFER_E || + ret == MEMORY_E) { + WOLFSSL_MSG("Got Peer cert ASN PARSE_E, BUFFER E, MEMORY_E"); #if defined(WOLFSSL_EXTRA_ALERTS) || defined(OPENSSL_EXTRA) || \ defined(OPENSSL_EXTRA_X509_SMALL) DoCertFatalAlert(ssl, ret); diff --git a/src/ssl.c b/src/ssl.c index fb8ee5c6a..5be68609e 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -4446,12 +4446,14 @@ int wolfSSL_shutdown(WOLFSSL* ssl) /* call wolfSSL_shutdown again for bidirectional shutdown */ if (ssl->options.sentNotify && !ssl->options.closeNotify) { ret = ProcessReply(ssl); - if (ret == ZERO_RETURN) { + if ((ret == ZERO_RETURN) || (ret == SOCKET_ERROR_E)) { /* simulate OpenSSL behavior */ ssl->options.shutdownDone = 1; /* Clear error */ ssl->error = WOLFSSL_ERROR_NONE; ret = WOLFSSL_SUCCESS; + } else if (ret == MEMORY_E) { + ret = WOLFSSL_FATAL_ERROR; } else if (ssl->error == WOLFSSL_ERROR_NONE) { ret = WOLFSSL_SHUTDOWN_NOT_DONE; } else { @@ -14479,6 +14481,10 @@ int wolfSSL_Cleanup(void) crypto_ex_cb_ctx_session = NULL; #endif +#ifdef WOLFSSL_MEM_FAIL_COUNT + wc_MemFailCount_Free(); +#endif + return ret; } @@ -14777,7 +14783,7 @@ static int SessionTicketNoncePrealloc(byte** buf, byte* len, void *heap) if (*buf == NULL) { WOLFSSL_MSG("Failed to preallocate ticket nonce buffer"); *len = 0; - return WOLFSSL_FAILURE; + return 1; } *len = PREALLOC_SESSION_TICKET_NONCE_LEN; @@ -15548,9 +15554,8 @@ int AddSessionToCache(WOLFSSL_CTX* ctx, WOLFSSL_SESSION* addSession, WOLFSSL_MSG("Hash session failed"); #ifdef HAVE_SESSION_TICKET XFREE(ticBuff, NULL, DYNAMIC_TYPE_SESSION_TICK); - #if defined(WOLFSSL_TLS13) && defined(WOLFSSL_TICKE_NONCE_MALLOC) - if (preallocNonce != NULL) - XFREE(preallocNonce, addSession->heap, DYNAMIC_TYPE_SESSION_TICK); + #if defined(WOLFSSL_TLS13) && defined(WOLFSSL_TICKET_NONCE_MALLOC) + XFREE(preallocNonce, addSession->heap, DYNAMIC_TYPE_SESSION_TICK); #endif #endif return ret; @@ -15560,9 +15565,8 @@ int AddSessionToCache(WOLFSSL_CTX* ctx, WOLFSSL_SESSION* addSession, if (SESSION_ROW_WR_LOCK(sessRow) != 0) { #ifdef HAVE_SESSION_TICKET XFREE(ticBuff, NULL, DYNAMIC_TYPE_SESSION_TICK); - #if defined(WOLFSSL_TLS13) && defined(WOLFSSL_TICKE_NONCE_MALLOC) - if (preallocNonce != NULL) - XFREE(preallocNonce, addSession->heap, DYNAMIC_TYPE_SESSION_TICK); + #if defined(WOLFSSL_TLS13) && defined(WOLFSSL_TICKET_NONCE_MALLOC) + XFREE(preallocNonce, addSession->heap, DYNAMIC_TYPE_SESSION_TICK); #endif #endif WOLFSSL_MSG("Session row lock failed"); @@ -15600,9 +15604,8 @@ int AddSessionToCache(WOLFSSL_CTX* ctx, WOLFSSL_SESSION* addSession, if (cacheSession == NULL) { #ifdef HAVE_SESSION_TICKET XFREE(ticBuff, NULL, DYNAMIC_TYPE_SESSION_TICK); - #if defined(WOLFSSL_TLS13) && defined(WOLFSSL_TICKE_NONCE_MALLOC) - if (preallocNonce != NULL) - XFREE(preallocNonce, addSession->heap, DYNAMIC_TYPE_SESSION_TICK); + #if defined(WOLFSSL_TLS13) && defined(WOLFSSL_TICKET_NONCE_MALLOC) + XFREE(preallocNonce, addSession->heap, DYNAMIC_TYPE_SESSION_TICK); #endif #endif SESSION_ROW_UNLOCK(sessRow); @@ -15757,14 +15760,11 @@ int AddSessionToCache(WOLFSSL_CTX* ctx, WOLFSSL_SESSION* addSession, #ifdef HAVE_SESSION_TICKET if (ticBuff != NULL && !ticBuffUsed) XFREE(ticBuff, NULL, DYNAMIC_TYPE_SESSION_TICK); - if (cacheTicBuff != NULL) - XFREE(cacheTicBuff, NULL, DYNAMIC_TYPE_SESSION_TICK); + XFREE(cacheTicBuff, NULL, DYNAMIC_TYPE_SESSION_TICK); #if defined(WOLFSSL_TLS13) && defined(WOLFSSL_TICKET_NONCE_MALLOC) && \ (!defined(HAVE_FIPS) || (defined(FIPS_VERSION_GE) && FIPS_VERSION_GE(5,3))) - if (preallocNonce != NULL) - XFREE(preallocNonce, addSession->heap, DYNAMIC_TYPE_SESSION_TICK); - if (toFree != NULL) - XFREE(toFree, addSession->heap, DYNAMIC_TYPE_SESSION_TICK); + XFREE(preallocNonce, addSession->heap, DYNAMIC_TYPE_SESSION_TICK); + XFREE(toFree, addSession->heap, DYNAMIC_TYPE_SESSION_TICK); #endif /* WOLFSSL_TLS13 && WOLFSSL_TICKET_NONCE_MALLOC && FIPS_VERSION_GE(5,3)*/ #endif @@ -16503,8 +16503,10 @@ int wolfSSL_set_compression(WOLFSSL* ssl) { WOLFSSL_ENTER("wolfSSL_set_psk_use_session_callback"); - ssl->options.havePSK = 1; - ssl->options.session_psk_cb = cb; + if (ssl != NULL) { + ssl->options.havePSK = 1; + ssl->options.session_psk_cb = cb; + } WOLFSSL_LEAVE("wolfSSL_set_psk_use_session_callback", WOLFSSL_SUCCESS); } @@ -31030,7 +31032,8 @@ int wolfSSL_SESSION_get_ex_new_index(long ctx_l,void* ctx_ptr, } #endif -#if defined(USE_WOLFSSL_MEMORY) && !defined(WOLFSSL_DEBUG_MEMORY) +#if defined(USE_WOLFSSL_MEMORY) && !defined(WOLFSSL_DEBUG_MEMORY) && \ + !defined(WOLFSSL_STATIC_MEMORY) static wolfSSL_OSSL_Malloc_cb ossl_malloc = NULL; static wolfSSL_OSSL_Free_cb ossl_free = NULL; static wolfSSL_OSSL_Realloc_cb ossl_realloc = NULL; @@ -31056,14 +31059,15 @@ static void* OSSL_Realloc(void *ptr, size_t size) else return NULL; } -#endif /* USE_WOLFSSL_MEMORY && !WOLFSSL_DEBUG_MEMORY */ +#endif /* USE_WOLFSSL_MEMORY && !WOLFSSL_DEBUG_MEMORY && + * !WOLFSSL_STATIC_MEMORY */ int wolfSSL_CRYPTO_set_mem_functions( wolfSSL_OSSL_Malloc_cb m, wolfSSL_OSSL_Realloc_cb r, wolfSSL_OSSL_Free_cb f) { -#ifdef USE_WOLFSSL_MEMORY +#if defined(USE_WOLFSSL_MEMORY) && !defined(WOLFSSL_STATIC_MEMORY) #ifdef WOLFSSL_DEBUG_MEMORY WOLFSSL_MSG("mem functions will receive function name instead of " "file name"); @@ -37777,6 +37781,9 @@ PKCS7* wolfSSL_SMIME_read_PKCS7(WOLFSSL_BIO* in, } lineLen = wolfSSL_BIO_gets(in, section, remainLen); + if (lineLen < 0) { + goto error; + } while (XSTRNCMP(§ion[sectionLen], boundary, boundLen) && remainLen > 0) { canonLineLen = lineLen; diff --git a/tests/api.c b/tests/api.c index 4426459c7..2642f276c 100644 --- a/tests/api.c +++ b/tests/api.c @@ -592,23 +592,17 @@ static WOLFSSL_BIO_METHOD* wolfSSL_BIO_s_fixed_mem(void) static int test_wolfSSL_Init(void) { - int result; - - result = wolfSSL_Init(); - - result = TEST_RES_CHECK(result == WOLFSSL_SUCCESS); - return result; + EXPECT_DECLS; + ExpectIntEQ(wolfSSL_Init(), WOLFSSL_SUCCESS); + return EXPECT_RESULT(); } static int test_wolfSSL_Cleanup(void) { - int result; - - result = wolfSSL_Cleanup(); - - result = TEST_RES_CHECK(result == WOLFSSL_SUCCESS); - return result; + EXPECT_DECLS; + ExpectIntEQ(wolfSSL_Cleanup(), WOLFSSL_SUCCESS); + return EXPECT_RESULT(); } @@ -617,23 +611,17 @@ static int test_wolfSSL_Cleanup(void) */ static int test_wolfCrypt_Init(void) { - int result; - - result = wolfCrypt_Init(); - - result = TEST_RES_CHECK(result == 0); - return result; + EXPECT_DECLS; + ExpectIntEQ(wolfCrypt_Init(), 0); + return EXPECT_RESULT(); } /* END test_wolfCrypt_Init */ static int test_wolfCrypt_Cleanup(void) { - int result; - - result = wolfCrypt_Cleanup(); - - result = TEST_RES_CHECK(result == 0); - return result; + EXPECT_DECLS; + ExpectIntEQ(wolfCrypt_Cleanup(), 0); + return EXPECT_RESULT(); } /*----------------------------------------------------------------------------* @@ -659,7 +647,7 @@ static int test_fileAccess(void) int i; ExpectTrue(XFOPEN("badfilename", "rb") == XBADFILE); - for (i=0; fname[i] != NULL ; i++) { + for (i=0; EXPECT_SUCCESS() && fname[i] != NULL ; i++) { ExpectTrue((f = XFOPEN(fname[i], "rb")) != XBADFILE); XFCLOSE(f); } @@ -1218,21 +1206,18 @@ static int test_wolfSSL_CTX_use_certificate_file(void) #if (defined(OPENSSL_ALL) || defined(WOLFSSL_ASIO)) && !defined(NO_RSA) static int test_wolfSSL_CTX_use_certificate_ASN1(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_CERTS) && !defined(NO_WOLFSSL_SERVER) && !defined(NO_ASN) - WOLFSSL_CTX* ctx; - int ret; + WOLFSSL_CTX* ctx = NULL; - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); - ret = SSL_CTX_use_certificate_ASN1(ctx, sizeof_server_cert_der_2048, - server_cert_der_2048); + ExpectIntEQ(SSL_CTX_use_certificate_ASN1(ctx, sizeof_server_cert_der_2048, + server_cert_der_2048), WOLFSSL_SUCCESS); wolfSSL_CTX_free(ctx); - - res = TEST_RES_CHECK(ret == WOLFSSL_SUCCESS); #endif - return res; + return EXPECT_RESULT(); } #endif /* (OPENSSL_ALL || WOLFSSL_ASIO) && !NO_RSA */ @@ -1259,7 +1244,7 @@ static int test_wolfSSL_CTX_use_certificate_buffer(void) #endif return EXPECT_RESULT(); -} /*END test_wolfSSL_CTX_use_certificate_buffer*/ +} /* END test_wolfSSL_CTX_use_certificate_buffer */ static int test_wolfSSL_CTX_use_PrivateKey_file(void) { @@ -2176,7 +2161,7 @@ static int test_wolfSSL_CertManagerGetCerts(void) ExpectNotNull(sk = wolfSSL_CertManagerGetCerts(cm)); - for (i = 0; i < sk_X509_num(sk); i++) { + for (i = 0; EXPECT_SUCCESS() && i < sk_X509_num(sk); i++) { ExpectNotNull(x509 = sk_X509_value(sk, i)); ExpectIntEQ(0, wolfSSL_X509_cmp(x509, cert1)); @@ -3379,14 +3364,14 @@ static int test_wolfSSL_CTX_add1_chain_cert(void) ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())); ExpectNotNull(ssl = wolfSSL_new(ctx)); - for (cert = certChain; *cert != NULL; cert++) { + for (cert = certChain; EXPECT_SUCCESS() && *cert != NULL; cert++) { ExpectNotNull(x509 = wolfSSL_X509_load_certificate_file(*cert, WOLFSSL_FILETYPE_PEM)); ExpectIntEQ(SSL_CTX_add1_chain_cert(ctx, x509), 1); X509_free(x509); x509 = NULL; } - for (cert = certChain; *cert != NULL; cert++) { + for (cert = certChain; EXPECT_SUCCESS() && *cert != NULL; cert++) { ExpectNotNull(x509 = wolfSSL_X509_load_certificate_file(*cert, WOLFSSL_FILETYPE_PEM)); ExpectIntEQ(SSL_add1_chain_cert(ssl, x509), 1); @@ -4040,7 +4025,7 @@ static int test_wolfSSL_SetMinVersion(void) #ifdef OPENSSL_EXTRA static int test_ED25519(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) && \ defined(WOLFSSL_KEY_GEN) byte priv[ED25519_PRV_KEY_SIZE]; @@ -4054,30 +4039,28 @@ static int test_ED25519(void) unsigned int sigSz = (unsigned int)sizeof(sig); #endif /* HAVE_ED25519_SIGN && HAVE_ED25519_KEY_IMPORT */ - AssertIntEQ(wolfSSL_ED25519_generate_key(priv, &privSz, pub, &pubSz), - WOLFSSL_SUCCESS); - AssertIntEQ(privSz, ED25519_PRV_KEY_SIZE); - AssertIntEQ(pubSz, ED25519_PUB_KEY_SIZE); + ExpectIntEQ(wolfSSL_ED25519_generate_key(priv, &privSz, pub, &pubSz), + WOLFSSL_SUCCESS); + ExpectIntEQ(privSz, ED25519_PRV_KEY_SIZE); + ExpectIntEQ(pubSz, ED25519_PUB_KEY_SIZE); #if defined(HAVE_ED25519_SIGN) && defined(HAVE_ED25519_KEY_IMPORT) - AssertIntEQ(wolfSSL_ED25519_sign((byte*)msg, msglen, priv, privSz, sig, - &sigSz), WOLFSSL_SUCCESS); - AssertIntEQ(sigSz, ED25519_SIG_SIZE); + ExpectIntEQ(wolfSSL_ED25519_sign((byte*)msg, msglen, priv, privSz, sig, + &sigSz), WOLFSSL_SUCCESS); + ExpectIntEQ(sigSz, ED25519_SIG_SIZE); #ifdef HAVE_ED25519_VERIFY - AssertIntEQ(wolfSSL_ED25519_verify((byte*)msg, msglen, pub, pubSz, sig, - sigSz), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_ED25519_verify((byte*)msg, msglen, pub, pubSz, sig, + sigSz), WOLFSSL_SUCCESS); #endif /* HAVE_ED25519_VERIFY */ #endif /* HAVE_ED25519_SIGN && HAVE_ED25519_KEY_IMPORT */ - - res = TEST_RES_CHECK(1); #endif /* HAVE_ED25519 && HAVE_ED25519_KEY_EXPORT && WOLFSSL_KEY_GEN */ - return res; + return EXPECT_RESULT(); } static int test_ED448(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) && \ defined(WOLFSSL_KEY_GEN) byte priv[ED448_PRV_KEY_SIZE]; @@ -4091,25 +4074,23 @@ static int test_ED448(void) unsigned int sigSz = (unsigned int)sizeof(sig); #endif /* HAVE_ED448_SIGN && HAVE_ED448_KEY_IMPORT */ - AssertIntEQ(wolfSSL_ED448_generate_key(priv, &privSz, pub, &pubSz), - WOLFSSL_SUCCESS); - AssertIntEQ(privSz, ED448_PRV_KEY_SIZE); - AssertIntEQ(pubSz, ED448_PUB_KEY_SIZE); + ExpectIntEQ(wolfSSL_ED448_generate_key(priv, &privSz, pub, &pubSz), + WOLFSSL_SUCCESS); + ExpectIntEQ(privSz, ED448_PRV_KEY_SIZE); + ExpectIntEQ(pubSz, ED448_PUB_KEY_SIZE); #if defined(HAVE_ED448_SIGN) && defined(HAVE_ED448_KEY_IMPORT) - AssertIntEQ(wolfSSL_ED448_sign((byte*)msg, msglen, priv, privSz, sig, - &sigSz), WOLFSSL_SUCCESS); - AssertIntEQ(sigSz, ED448_SIG_SIZE); + ExpectIntEQ(wolfSSL_ED448_sign((byte*)msg, msglen, priv, privSz, sig, + &sigSz), WOLFSSL_SUCCESS); + ExpectIntEQ(sigSz, ED448_SIG_SIZE); #ifdef HAVE_ED448_VERIFY - AssertIntEQ(wolfSSL_ED448_verify((byte*)msg, msglen, pub, pubSz, sig, - sigSz), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_ED448_verify((byte*)msg, msglen, pub, pubSz, sig, + sigSz), WOLFSSL_SUCCESS); #endif /* HAVE_ED448_VERIFY */ #endif /* HAVE_ED448_SIGN && HAVE_ED448_KEY_IMPORT */ - - res = TEST_RES_CHECK(1); #endif /* HAVE_ED448 && HAVE_ED448_KEY_EXPORT && WOLFSSL_KEY_GEN */ - return res; + return EXPECT_RESULT(); } #endif /* OPENSSL_EXTRA */ @@ -4388,7 +4369,7 @@ static int test_wolfSSL_EVP_ENCODE_CTX_new(void) ExpectIntEQ(ctx->data[0],0); ExpectIntEQ(ctx->data[sizeof(ctx->data) -1],0); EVP_ENCODE_CTX_free(ctx); -#endif /* OPENSSL_EXTRA && (WOLFSSL_BASE64_ENCODE || WOLFSSL_BASE64_DECODE)*/ +#endif /* OPENSSL_EXTRA && (WOLFSSL_BASE64_ENCODE || WOLFSSL_BASE64_DECODE) */ return EXPECT_RESULT(); } static int test_wolfSSL_EVP_ENCODE_CTX_free(void) @@ -4400,7 +4381,7 @@ static int test_wolfSSL_EVP_ENCODE_CTX_free(void) ExpectNotNull(ctx = EVP_ENCODE_CTX_new()); EVP_ENCODE_CTX_free(ctx); -#endif /*OPENSSL_EXTRA && (WOLFSSL_BASE64_ENCODE || WOLFSSL_BASE64_DECODE)*/ +#endif /* OPENSSL_EXTRA && (WOLFSSL_BASE64_ENCODE || WOLFSSL_BASE64_DECODE) */ return EXPECT_RESULT(); } @@ -4922,109 +4903,110 @@ static int test_wolfSSL_EVP_DecodeFinal(void) #ifdef OPENSSL_EXTRA static int test_wolfSSL_EVP_get_cipherbynid(void) { + EXPECT_DECLS; #ifndef NO_AES const WOLFSSL_EVP_CIPHER* c; c = wolfSSL_EVP_get_cipherbynid(419); #if (defined(HAVE_AES_CBC) || defined(WOLFSSL_AES_DIRECT)) && \ defined(WOLFSSL_AES_128) - AssertNotNull(c); - AssertNotNull(strcmp("EVP_AES_128_CBC", c)); + ExpectNotNull(c); + ExpectNotNull(XSTRCMP("EVP_AES_128_CBC", c)); #else - AssertNull(c); + ExpectNull(c); #endif c = wolfSSL_EVP_get_cipherbynid(423); #if (defined(HAVE_AES_CBC) || defined(WOLFSSL_AES_DIRECT)) && \ defined(WOLFSSL_AES_192) - AssertNotNull(c); - AssertNotNull(strcmp("EVP_AES_192_CBC", c)); + ExpectNotNull(c); + ExpectNotNull(XSTRCMP("EVP_AES_192_CBC", c)); #else - AssertNull(c); + ExpectNull(c); #endif c = wolfSSL_EVP_get_cipherbynid(427); #if (defined(HAVE_AES_CBC) || defined(WOLFSSL_AES_DIRECT)) && \ defined(WOLFSSL_AES_256) - AssertNotNull(c); - AssertNotNull(strcmp("EVP_AES_256_CBC", c)); + ExpectNotNull(c); + ExpectNotNull(XSTRCMP("EVP_AES_256_CBC", c)); #else - AssertNull(c); + ExpectNull(c); #endif c = wolfSSL_EVP_get_cipherbynid(904); #if defined(WOLFSSL_AES_COUNTER) && defined(WOLFSSL_AES_128) - AssertNotNull(c); - AssertNotNull(strcmp("EVP_AES_128_CTR", c)); + ExpectNotNull(c); + ExpectNotNull(XSTRCMP("EVP_AES_128_CTR", c)); #else - AssertNull(c); + ExpectNull(c); #endif c = wolfSSL_EVP_get_cipherbynid(905); #if defined(WOLFSSL_AES_COUNTER) && defined(WOLFSSL_AES_192) - AssertNotNull(c); - AssertNotNull(strcmp("EVP_AES_192_CTR", c)); + ExpectNotNull(c); + ExpectNotNull(XSTRCMP("EVP_AES_192_CTR", c)); #else - AssertNull(c); + ExpectNull(c); #endif c = wolfSSL_EVP_get_cipherbynid(906); #if defined(WOLFSSL_AES_COUNTER) && defined(WOLFSSL_AES_256) - AssertNotNull(c); - AssertNotNull(strcmp("EVP_AES_256_CTR", c)); + ExpectNotNull(c); + ExpectNotNull(XSTRCMP("EVP_AES_256_CTR", c)); #else - AssertNull(c); + ExpectNull(c); #endif c = wolfSSL_EVP_get_cipherbynid(418); #if defined(HAVE_AES_ECB) && defined(WOLFSSL_AES_128) - AssertNotNull(c); - AssertNotNull(strcmp("EVP_AES_128_ECB", c)); + ExpectNotNull(c); + ExpectNotNull(XSTRCMP("EVP_AES_128_ECB", c)); #else - AssertNull(c); + ExpectNull(c); #endif c = wolfSSL_EVP_get_cipherbynid(422); #if defined(HAVE_AES_ECB) && defined(WOLFSSL_AES_192) - AssertNotNull(c); - AssertNotNull(strcmp("EVP_AES_192_ECB", c)); + ExpectNotNull(c); + ExpectNotNull(XSTRCMP("EVP_AES_192_ECB", c)); #else - AssertNull(c); + ExpectNull(c); #endif c = wolfSSL_EVP_get_cipherbynid(426); #if defined(HAVE_AES_ECB) && defined(WOLFSSL_AES_256) - AssertNotNull(c); - AssertNotNull(strcmp("EVP_AES_256_ECB", c)); + ExpectNotNull(c); + ExpectNotNull(XSTRCMP("EVP_AES_256_ECB", c)); #else - AssertNull(c); + ExpectNull(c); #endif #endif /* !NO_AES */ #ifndef NO_DES3 - AssertNotNull(strcmp("EVP_DES_CBC", wolfSSL_EVP_get_cipherbynid(31))); + ExpectNotNull(XSTRCMP("EVP_DES_CBC", wolfSSL_EVP_get_cipherbynid(31))); #ifdef WOLFSSL_DES_ECB - AssertNotNull(strcmp("EVP_DES_ECB", wolfSSL_EVP_get_cipherbynid(29))); + ExpectNotNull(XSTRCMP("EVP_DES_ECB", wolfSSL_EVP_get_cipherbynid(29))); #endif - AssertNotNull(strcmp("EVP_DES_EDE3_CBC", wolfSSL_EVP_get_cipherbynid(44))); + ExpectNotNull(XSTRCMP("EVP_DES_EDE3_CBC", wolfSSL_EVP_get_cipherbynid(44))); #ifdef WOLFSSL_DES_ECB - AssertNotNull(strcmp("EVP_DES_EDE3_ECB", wolfSSL_EVP_get_cipherbynid(33))); + ExpectNotNull(XSTRCMP("EVP_DES_EDE3_ECB", wolfSSL_EVP_get_cipherbynid(33))); #endif #endif /* !NO_DES3 */ #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) - AssertNotNull(strcmp("EVP_CHACHA20_POLY13O5", EVP_get_cipherbynid(1018))); + ExpectNotNull(XSTRCMP("EVP_CHACHA20_POLY13O5", EVP_get_cipherbynid(1018))); #endif /* test for nid is out of range */ - AssertNull(wolfSSL_EVP_get_cipherbynid(1)); + ExpectNull(wolfSSL_EVP_get_cipherbynid(1)); - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } static int test_wolfSSL_EVP_CIPHER_CTX(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_AES) && defined(HAVE_AES_CBC) && defined(WOLFSSL_AES_128) EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); const EVP_CIPHER *init = EVP_aes_128_cbc(); @@ -5032,23 +5014,21 @@ static int test_wolfSSL_EVP_CIPHER_CTX(void) byte key[AES_BLOCK_SIZE] = {0}; byte iv[AES_BLOCK_SIZE] = {0}; - AssertNotNull(ctx); + ExpectNotNull(ctx); wolfSSL_EVP_CIPHER_CTX_init(ctx); - AssertIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); test = EVP_CIPHER_CTX_cipher(ctx); - AssertTrue(init == test); - AssertIntEQ(EVP_CIPHER_nid(test), NID_aes_128_cbc); + ExpectTrue(init == test); + ExpectIntEQ(EVP_CIPHER_nid(test), NID_aes_128_cbc); - AssertIntEQ(EVP_CIPHER_CTX_reset(ctx), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_CIPHER_CTX_reset(NULL), WOLFSSL_FAILURE); + ExpectIntEQ(EVP_CIPHER_CTX_reset(ctx), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_CIPHER_CTX_reset(NULL), WOLFSSL_FAILURE); EVP_CIPHER_CTX_free(ctx); /* test EVP_CIPHER_CTX_cleanup with NULL */ - AssertIntEQ(EVP_CIPHER_CTX_cleanup(NULL), WOLFSSL_SUCCESS); - - res = TEST_RES_CHECK(1); + ExpectIntEQ(EVP_CIPHER_CTX_cleanup(NULL), WOLFSSL_SUCCESS); #endif /* !NO_AES && HAVE_AES_CBC && WOLFSSL_AES_128 */ - return res; + return EXPECT_RESULT(); } #endif /* OPENSSL_EXTRA */ @@ -5677,8 +5657,8 @@ static THREAD_RETURN WOLFSSL_THREAD test_server_nofail(void* args) word16 port; callback_functions* cbf; - WOLFSSL_CTX* ctx = 0; - WOLFSSL* ssl = 0; + WOLFSSL_CTX* ctx = NULL; + WOLFSSL* ssl = NULL; func_args* opts = (func_args*)args; char msg[] = "I hear you fa shizzle!"; @@ -6103,7 +6083,7 @@ static THREAD_RETURN WOLFSSL_THREAD test_server_loop(void* args) goto done; } if (sharedCtx && wolfSSL_use_certificate_file(ssl, svrCertFile, - WOLFSSL_FILETYPE_PEM) != WOLFSSL_SUCCESS) { + WOLFSSL_FILETYPE_PEM) != WOLFSSL_SUCCESS) { /*err_sys("can't load server cert chain file, " "Please run from wolfSSL home dir");*/ /* Release the wait for TCP ready. */ @@ -6114,7 +6094,7 @@ static THREAD_RETURN WOLFSSL_THREAD test_server_loop(void* args) goto done; } if (sharedCtx && wolfSSL_use_PrivateKey_file(ssl, svrKeyFile, - WOLFSSL_FILETYPE_PEM) != WOLFSSL_SUCCESS) { + WOLFSSL_FILETYPE_PEM) != WOLFSSL_SUCCESS) { /*err_sys("can't load server key file, " "Please run from wolfSSL home dir");*/ /* Release the wait for TCP ready. */ @@ -6135,7 +6115,8 @@ static THREAD_RETURN WOLFSSL_THREAD test_server_loop(void* args) cbf->ssl_ready(ssl); } /* do it here to detect failure */ - tcp_accept(&sockfd, &clientfd, (func_args*)args, port, 0, 0, 0, 0, 1, 0, 0); + tcp_accept(&sockfd, &clientfd, (func_args*)args, port, 0, 0, 0, 0, 1, 0, + 0); CloseSocket(sockfd); if (wolfSSL_set_fd(ssl, clientfd) != WOLFSSL_SUCCESS) { /*err_sys("SSL_set_fd failed");*/ @@ -6555,8 +6536,8 @@ static void test_client_reuse_WOLFSSLobj(void* args, cbType cb, tcp_connect(&sockfd, wolfSSLIP, ((func_args*)args)->signal->port, 0, 0, NULL); - if (wolfSSL_CTX_load_verify_locations(ctx, caCertFile, 0) != WOLFSSL_SUCCESS) - { + if (wolfSSL_CTX_load_verify_locations(ctx, caCertFile, 0) != + WOLFSSL_SUCCESS) { /* err_sys("can't load ca file, Please run from wolfSSL home dir");*/ goto done; } @@ -8131,9 +8112,250 @@ static int twcase_client_set_sess_ssl_ready(WOLFSSL* ssl) WOLFSSL_SUCCESS); return EXPECT_RESULT(); } + +struct test_add_session_ext_params { + method_provider client_meth; + method_provider server_meth; + const char* tls_version; +}; + +static int test_wolfSSL_CTX_add_session_ext( + struct test_add_session_ext_params* param) +{ + EXPECT_DECLS; + /* Test the default 33 sessions */ + int j; + + /* Clear cache before starting */ + wolfSSL_CTX_flush_sessions(NULL, -1); + + XMEMSET(&server_sessionCache, 0, sizeof(hashTable)); + if (wc_InitMutex(&server_sessionCache.htLock) != 0) + return BAD_MUTEX_E; + server_sessionCache.capacity = SESSION_CACHE_SIZE; + + fprintf(stderr, "\tBegin %s\n", param->tls_version); + for (j = 0; j < 5; j++) { + int tls13 = XSTRSTR(param->tls_version, "TLSv1_3") != NULL; + int dtls = XSTRSTR(param->tls_version, "DTLS") != NULL; + test_ssl_cbf client_cb; + test_ssl_cbf server_cb; + + (void)dtls; + + /* Test five cache configurations */ + twcase_client_first_session_ptr = NULL; + twcase_server_first_session_ptr = NULL; + twcase_server_current_ctx_ptr = NULL; + twcase_new_session_called = 0; + twcase_remove_session_called = 0; + twcase_get_session_called = 0; + + /* connection 1 - first connection */ + fprintf(stderr, "\tconnect: %s: j=%d\n", param->tls_version, j); + + XMEMSET(&client_cb, 0, sizeof(callback_functions)); + XMEMSET(&server_cb, 0, sizeof(callback_functions)); + client_cb.method = param->client_meth; + server_cb.method = param->server_meth; + + if (dtls) + client_cb.doUdp = server_cb.doUdp = 1; + + /* Setup internal and external cache */ + switch (j) { + case 0: + /* SSL_OP_NO_TICKET stateful ticket case */ + server_cb.ctx_ready = twcase_cache_intOn_extOn_noTicket; + break; + case 1: + server_cb.ctx_ready = twcase_cache_intOn_extOn; + break; + case 2: + server_cb.ctx_ready = twcase_cache_intOff_extOn; + break; + case 3: + server_cb.ctx_ready = twcase_cache_intOn_extOff; + break; + case 4: + server_cb.ctx_ready = twcase_cache_intOff_extOff; + break; + } + client_cb.ctx_ready = twcase_cache_intOff_extOff; + + /* Add session to internal cache and save SSL session for testing */ + server_cb.on_result = twcase_server_sess_ctx_pre_shutdown; + /* Save client SSL session for testing */ + client_cb.on_result = twcase_client_sess_ctx_pre_shutdown; + server_cb.ticNoInit = 1; /* Use default builtin */ + /* Don't free/release ctx */ + server_cb.ctx = twcase_server_current_ctx_ptr; + server_cb.isSharedCtx = 1; + + ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&client_cb, + &server_cb, NULL), TEST_SUCCESS); + + ExpectIntEQ(twcase_get_session_called, 0); + if (EXPECT_FAIL()) { + wolfSSL_SESSION_free(twcase_client_first_session_ptr); + wolfSSL_SESSION_free(twcase_server_first_session_ptr); + wolfSSL_CTX_free(twcase_server_current_ctx_ptr); + break; + } + + switch (j) { + case 0: + case 1: + case 2: + /* cache cannot be searched with out a connection */ + /* Add a new session */ + ExpectIntEQ(twcase_new_session_called, 1); + /* In twcase_server_sess_ctx_pre_shutdown + * wolfSSL_CTX_add_session which evicts the existing session + * in cache and adds it back in */ + ExpectIntLE(twcase_remove_session_called, 1); + break; + case 3: + case 4: + /* no external cache */ + ExpectIntEQ(twcase_new_session_called, 0); + ExpectIntEQ(twcase_remove_session_called, 0); + break; + } + + /* connection 2 - session resume */ + fprintf(stderr, "\tresume: %s: j=%d\n", param->tls_version, j); + twcase_new_session_called = 0; + twcase_remove_session_called = 0; + twcase_get_session_called = 0; + server_cb.on_result = 0; + client_cb.on_result = 0; + server_cb.ticNoInit = 1; /* Use default builtin */ + + server_cb.ctx = twcase_server_current_ctx_ptr; + + /* try session resumption */ + client_cb.ssl_ready = twcase_client_set_sess_ssl_ready; + + ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&client_cb, + &server_cb, NULL), TEST_SUCCESS); + + /* Clear cache before checking */ + wolfSSL_CTX_flush_sessions(NULL, -1); + + switch (j) { + case 0: + if (tls13) { + /* (D)TLSv1.3 stateful case */ + /* cache hit */ + /* DTLS accesses cache once for stateless parsing and + * once for stateful parsing */ + ExpectIntEQ(twcase_get_session_called, !dtls ? 1 : 2); + + /* (D)TLSv1.3 creates a new ticket, + * updates both internal and external cache */ + ExpectIntEQ(twcase_new_session_called, 1); + ExpectIntEQ(twcase_remove_session_called, 1); + + } + else { + /* non (D)TLSv1.3 case, no update */ + /* DTLS accesses cache once for stateless parsing and + * once for stateful parsing */ +#ifdef WOLFSSL_DTLS_NO_HVR_ON_RESUME + ExpectIntEQ(twcase_get_session_called, !dtls ? 1 : 2); +#else + ExpectIntEQ(twcase_get_session_called, 1); +#endif + ExpectIntEQ(twcase_new_session_called, 0); + /* Called on session added in + * twcase_server_sess_ctx_pre_shutdown */ + ExpectIntEQ(twcase_remove_session_called, 1); + } + break; + case 1: + if (tls13) { + /* (D)TLSv1.3 case */ + /* cache hit */ + ExpectIntEQ(twcase_get_session_called, 1); + /* (D)TLSv1.3 creates a new ticket, + * updates both internal and external cache */ + ExpectIntEQ(twcase_new_session_called, 1); + /* Called on session added in + * twcase_server_sess_ctx_pre_shutdown and by wolfSSL */ + ExpectIntEQ(twcase_remove_session_called, 1); + } + else { + /* non (D)TLSv1.3 case */ + /* cache hit */ + /* DTLS accesses cache once for stateless parsing and + * once for stateful parsing */ +#ifdef WOLFSSL_DTLS_NO_HVR_ON_RESUME + ExpectIntEQ(twcase_get_session_called, !dtls ? 1 : 2); +#else + ExpectIntEQ(twcase_get_session_called, 1); +#endif + ExpectIntEQ(twcase_new_session_called, 0); + /* Called on session added in + * twcase_server_sess_ctx_pre_shutdown */ + ExpectIntEQ(twcase_remove_session_called, 1); + } + break; + case 2: + if (tls13) { + /* (D)TLSv1.3 case */ + /* cache hit */ + ExpectIntEQ(twcase_get_session_called, 1); + /* (D)TLSv1.3 creates a new ticket, + * updates both internal and external cache */ + ExpectIntEQ(twcase_new_session_called, 1); + /* Called on session added in + * twcase_server_sess_ctx_pre_shutdown and by wolfSSL */ + ExpectIntEQ(twcase_remove_session_called, 1); + } + else { + /* non (D)TLSv1.3 case */ + /* cache hit */ + /* DTLS accesses cache once for stateless parsing and + * once for stateful parsing */ +#ifdef WOLFSSL_DTLS_NO_HVR_ON_RESUME + ExpectIntEQ(twcase_get_session_called, !dtls ? 1 : 2); +#else + ExpectIntEQ(twcase_get_session_called, 1); +#endif + ExpectIntEQ(twcase_new_session_called, 0); + /* Called on session added in + * twcase_server_sess_ctx_pre_shutdown */ + ExpectIntEQ(twcase_remove_session_called, 1); + } + break; + case 3: + case 4: + /* no external cache */ + ExpectIntEQ(twcase_get_session_called, 0); + ExpectIntEQ(twcase_new_session_called, 0); + ExpectIntEQ(twcase_remove_session_called, 0); + break; + } + wolfSSL_SESSION_free(twcase_client_first_session_ptr); + wolfSSL_SESSION_free(twcase_server_first_session_ptr); + wolfSSL_CTX_free(twcase_server_current_ctx_ptr); + + if (EXPECT_FAIL()) + break; + } + twcase_get_sessionCb_cleanup(); + XMEMSET(&server_sessionCache.entries, 0, + sizeof(server_sessionCache.entries)); + fprintf(stderr, "\tEnd %s\n", param->tls_version); + + wc_FreeMutex(&server_sessionCache.htLock); + + return EXPECT_RESULT(); +} #endif -static int test_wolfSSL_CTX_add_session_ext(void) +static int test_wolfSSL_CTX_add_session_ext_tls13(void) { EXPECT_DECLS; #if defined(HAVE_IO_TESTS_DEPENDENCIES) && defined(HAVE_EXT_CACHE) && \ @@ -8144,273 +8366,125 @@ static int test_wolfSSL_CTX_add_session_ext(void) !defined(HUGE_SESSION_CACHE) && \ !defined(BIG_SESSION_CACHE) && \ !defined(MEDIUM_SESSION_CACHE) - /* Test the default 33 sessions */ - - struct test_params { - method_provider client_meth; - method_provider server_meth; - const char* tls_version; - } params[] = { #if defined(WOLFSSL_TLS13) && !defined(WOLFSSL_NO_DEF_TICKET_ENC_CB) && \ defined(HAVE_SESSION_TICKET) && defined(WOLFSSL_TICKET_HAVE_ID) - { wolfTLSv1_3_client_method, wolfTLSv1_3_server_method, "TLSv1_3" }, -#ifdef WOLFSSL_DTLS13 - { wolfDTLSv1_3_client_method, wolfDTLSv1_3_server_method, "DTLSv1_3" }, -#endif -#endif -#ifndef WOLFSSL_NO_TLS12 - { wolfTLSv1_2_client_method, wolfTLSv1_2_server_method, "TLSv1_2" }, -#ifdef WOLFSSL_DTLS - { wolfDTLSv1_2_client_method, wolfDTLSv1_2_server_method, "DTLSv1_2" }, -#endif -#endif -#if !defined(NO_OLD_TLS) && ((!defined(NO_AES) && !defined(NO_AES_CBC)) || \ - !defined(NO_DES3)) - { wolfTLSv1_1_client_method, wolfTLSv1_1_server_method, "TLSv1_1" }, -#ifdef WOLFSSL_DTLS - { wolfDTLSv1_client_method, wolfDTLSv1_server_method, "DTLSv1_0" }, -#endif -#endif + struct test_add_session_ext_params param[1] = { + { wolfTLSv1_3_client_method, wolfTLSv1_3_server_method, "TLSv1_3" } }; - - const int paramsLen = sizeof(params)/sizeof(*params); - int i, j; - - /* Clear cache before starting */ - wolfSSL_CTX_flush_sessions(NULL, -1); - - XMEMSET(&server_sessionCache, 0, sizeof(hashTable)); - if (wc_InitMutex(&server_sessionCache.htLock) != 0) - return BAD_MUTEX_E; - server_sessionCache.capacity = SESSION_CACHE_SIZE; - - for (i = 0; i < paramsLen; i++) { - fprintf(stderr, "\tBegin %s\n", params[i].tls_version); - for (j = 0; j < 5; j++) { - int tls13 = XSTRSTR(params[i].tls_version, "TLSv1_3") != NULL; - int dtls = XSTRSTR(params[i].tls_version, "DTLS") != NULL; - test_ssl_cbf client_cb; - test_ssl_cbf server_cb; - - (void)dtls; - - /* Test five cache configurations */ - twcase_client_first_session_ptr = NULL; - twcase_server_first_session_ptr = NULL; - twcase_server_current_ctx_ptr = NULL; - twcase_new_session_called = 0; - twcase_remove_session_called = 0; - twcase_get_session_called = 0; - - /* connection 1 - first connection */ - fprintf(stderr, "\tconnect: %s: j=%d, methodsLen=%d\n", - params[i].tls_version, j, paramsLen); - - XMEMSET(&client_cb, 0, sizeof(callback_functions)); - XMEMSET(&server_cb, 0, sizeof(callback_functions)); - client_cb.method = params[i].client_meth; - server_cb.method = params[i].server_meth; - - if (dtls) - client_cb.doUdp = server_cb.doUdp = 1; - - /* Setup internal and external cache */ - switch (j) { - case 0: - /* SSL_OP_NO_TICKET stateful ticket case */ - server_cb.ctx_ready = twcase_cache_intOn_extOn_noTicket; - break; - case 1: - server_cb.ctx_ready = twcase_cache_intOn_extOn; - break; - case 2: - server_cb.ctx_ready = twcase_cache_intOff_extOn; - break; - case 3: - server_cb.ctx_ready = twcase_cache_intOn_extOff; - break; - case 4: - server_cb.ctx_ready = twcase_cache_intOff_extOff; - break; - } - client_cb.ctx_ready = twcase_cache_intOff_extOff; - - /* Add session to internal cache and save SSL session for testing */ - server_cb.on_result = twcase_server_sess_ctx_pre_shutdown; - /* Save client SSL session for testing */ - client_cb.on_result = twcase_client_sess_ctx_pre_shutdown; - server_cb.ticNoInit = 1; /* Use default builtin */ - /* Don't free/release ctx */ - server_cb.ctx = twcase_server_current_ctx_ptr; - server_cb.isSharedCtx = 1; - - ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&client_cb, - &server_cb, NULL), TEST_SUCCESS); - - ExpectIntEQ(twcase_get_session_called, 0); - if (EXPECT_FAIL()) { - wolfSSL_SESSION_free(twcase_client_first_session_ptr); - wolfSSL_SESSION_free(twcase_server_first_session_ptr); - wolfSSL_CTX_free(twcase_server_current_ctx_ptr); - break; - } - - switch (j) { - case 0: - case 1: - case 2: - /* cache cannot be searched with out a connection */ - /* Add a new session */ - ExpectIntEQ(twcase_new_session_called, 1); - /* In twcase_server_sess_ctx_pre_shutdown - * wolfSSL_CTX_add_session which evicts the existing session - * in cache and adds it back in */ - ExpectIntLE(twcase_remove_session_called, 1); - break; - case 3: - case 4: - /* no external cache */ - ExpectIntEQ(twcase_new_session_called, 0); - ExpectIntEQ(twcase_remove_session_called, 0); - break; - } - - /* connection 2 - session resume */ - fprintf(stderr, "\tresume: %s: j=%d, methodsLen=%d\n", - params[i].tls_version, j, paramsLen); - twcase_new_session_called = 0; - twcase_remove_session_called = 0; - twcase_get_session_called = 0; - server_cb.on_result = 0; - client_cb.on_result = 0; - server_cb.ticNoInit = 1; /* Use default builtin */ - - server_cb.ctx = twcase_server_current_ctx_ptr; - - /* try session resumption */ - client_cb.ssl_ready = twcase_client_set_sess_ssl_ready; - - ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&client_cb, - &server_cb, NULL), TEST_SUCCESS); - - /* Clear cache before checking */ - wolfSSL_CTX_flush_sessions(NULL, -1); - - switch (j) { - case 0: - if (tls13) { - /* (D)TLSv1.3 stateful case */ - /* cache hit */ - /* DTLS accesses cache once for stateless parsing and - * once for stateful parsing */ - ExpectIntEQ(twcase_get_session_called, !dtls ? 1 : 2); - - /* (D)TLSv1.3 creates a new ticket, - * updates both internal and external cache */ - ExpectIntEQ(twcase_new_session_called, 1); - ExpectIntEQ(twcase_remove_session_called, 1); - - } - else { - /* non (D)TLSv1.3 case, no update */ - /* DTLS accesses cache once for stateless parsing and - * once for stateful parsing */ -#ifdef WOLFSSL_DTLS_NO_HVR_ON_RESUME - ExpectIntEQ(twcase_get_session_called, !dtls ? 1 : 2); -#else - ExpectIntEQ(twcase_get_session_called, 1); + ExpectIntEQ(test_wolfSSL_CTX_add_session_ext(param), TEST_SUCCESS); +#endif +#endif + return EXPECT_RESULT(); +} +static int test_wolfSSL_CTX_add_session_ext_dtls13(void) +{ + EXPECT_DECLS; +#if defined(HAVE_IO_TESTS_DEPENDENCIES) && defined(HAVE_EXT_CACHE) && \ + defined(WOLFSSL_TLS13) && !defined(NO_SESSION_CACHE) && \ + defined(OPENSSL_EXTRA) && defined(SESSION_CERTS) && \ + defined(HAVE_SESSION_TICKET) && \ + !defined(TITAN_SESSION_CACHE) && \ + !defined(HUGE_SESSION_CACHE) && \ + !defined(BIG_SESSION_CACHE) && \ + !defined(MEDIUM_SESSION_CACHE) +#if defined(WOLFSSL_TLS13) && !defined(WOLFSSL_NO_DEF_TICKET_ENC_CB) && \ + defined(HAVE_SESSION_TICKET) && defined(WOLFSSL_TICKET_HAVE_ID) +#ifdef WOLFSSL_DTLS13 + struct test_add_session_ext_params param[1] = { + { wolfDTLSv1_3_client_method, wolfDTLSv1_3_server_method, "DTLSv1_3" } + }; + ExpectIntEQ(test_wolfSSL_CTX_add_session_ext(param), TEST_SUCCESS); +#endif +#endif +#endif + return EXPECT_RESULT(); +} +static int test_wolfSSL_CTX_add_session_ext_tls12(void) +{ + EXPECT_DECLS; +#if defined(HAVE_IO_TESTS_DEPENDENCIES) && defined(HAVE_EXT_CACHE) && \ + defined(WOLFSSL_TLS13) && !defined(NO_SESSION_CACHE) && \ + defined(OPENSSL_EXTRA) && defined(SESSION_CERTS) && \ + defined(HAVE_SESSION_TICKET) && \ + !defined(TITAN_SESSION_CACHE) && \ + !defined(HUGE_SESSION_CACHE) && \ + !defined(BIG_SESSION_CACHE) && \ + !defined(MEDIUM_SESSION_CACHE) +#ifndef WOLFSSL_NO_TLS12 + struct test_add_session_ext_params param[1] = { + { wolfTLSv1_2_client_method, wolfTLSv1_2_server_method, "TLSv1_2" } + }; + ExpectIntEQ(test_wolfSSL_CTX_add_session_ext(param), TEST_SUCCESS); +#endif +#endif + return EXPECT_RESULT(); +} +static int test_wolfSSL_CTX_add_session_ext_dtls12(void) +{ + EXPECT_DECLS; +#if defined(HAVE_IO_TESTS_DEPENDENCIES) && defined(HAVE_EXT_CACHE) && \ + defined(WOLFSSL_TLS13) && !defined(NO_SESSION_CACHE) && \ + defined(OPENSSL_EXTRA) && defined(SESSION_CERTS) && \ + defined(HAVE_SESSION_TICKET) && \ + !defined(TITAN_SESSION_CACHE) && \ + !defined(HUGE_SESSION_CACHE) && \ + !defined(BIG_SESSION_CACHE) && \ + !defined(MEDIUM_SESSION_CACHE) +#ifndef WOLFSSL_NO_TLS12 +#ifdef WOLFSSL_DTLS + struct test_add_session_ext_params param[1] = { + { wolfDTLSv1_2_client_method, wolfDTLSv1_2_server_method, "DTLSv1_2" } + }; + ExpectIntEQ(test_wolfSSL_CTX_add_session_ext(param), TEST_SUCCESS); +#endif +#endif +#endif + return EXPECT_RESULT(); +} +static int test_wolfSSL_CTX_add_session_ext_tls11(void) +{ + EXPECT_DECLS; +#if defined(HAVE_IO_TESTS_DEPENDENCIES) && defined(HAVE_EXT_CACHE) && \ + defined(WOLFSSL_TLS13) && !defined(NO_SESSION_CACHE) && \ + defined(OPENSSL_EXTRA) && defined(SESSION_CERTS) && \ + defined(HAVE_SESSION_TICKET) && \ + !defined(TITAN_SESSION_CACHE) && \ + !defined(HUGE_SESSION_CACHE) && \ + !defined(BIG_SESSION_CACHE) && \ + !defined(MEDIUM_SESSION_CACHE) +#if !defined(NO_OLD_TLS) && ((!defined(NO_AES) && !defined(NO_AES_CBC)) || \ + !defined(NO_DES3)) + struct test_add_session_ext_params param[1] = { + { wolfTLSv1_1_client_method, wolfTLSv1_1_server_method, "TLSv1_1" } + }; + ExpectIntEQ(test_wolfSSL_CTX_add_session_ext(param), TEST_SUCCESS); +#endif +#endif + return EXPECT_RESULT(); +} +static int test_wolfSSL_CTX_add_session_ext_dtls1(void) +{ + EXPECT_DECLS; +#if defined(HAVE_IO_TESTS_DEPENDENCIES) && defined(HAVE_EXT_CACHE) && \ + defined(WOLFSSL_TLS13) && !defined(NO_SESSION_CACHE) && \ + defined(OPENSSL_EXTRA) && defined(SESSION_CERTS) && \ + defined(HAVE_SESSION_TICKET) && \ + !defined(TITAN_SESSION_CACHE) && \ + !defined(HUGE_SESSION_CACHE) && \ + !defined(BIG_SESSION_CACHE) && \ + !defined(MEDIUM_SESSION_CACHE) +#if !defined(NO_OLD_TLS) && ((!defined(NO_AES) && !defined(NO_AES_CBC)) || \ + !defined(NO_DES3)) +#ifdef WOLFSSL_DTLS + struct test_add_session_ext_params param[1] = { + { wolfDTLSv1_client_method, wolfDTLSv1_server_method, "DTLSv1_0" } + }; + ExpectIntEQ(test_wolfSSL_CTX_add_session_ext(param), TEST_SUCCESS); +#endif #endif - ExpectIntEQ(twcase_new_session_called, 0); - /* Called on session added in - * twcase_server_sess_ctx_pre_shutdown */ - ExpectIntEQ(twcase_remove_session_called, 1); - } - break; - case 1: - if (tls13) { - /* (D)TLSv1.3 case */ - /* cache hit */ - ExpectIntEQ(twcase_get_session_called, 1); - /* (D)TLSv1.3 creates a new ticket, - * updates both internal and external cache */ - ExpectIntEQ(twcase_new_session_called, 1); - /* Called on session added in - * twcase_server_sess_ctx_pre_shutdown and by wolfSSL */ - ExpectIntEQ(twcase_remove_session_called, 1); - } - else { - /* non (D)TLSv1.3 case */ - /* cache hit */ - /* DTLS accesses cache once for stateless parsing and - * once for stateful parsing */ -#ifdef WOLFSSL_DTLS_NO_HVR_ON_RESUME - ExpectIntEQ(twcase_get_session_called, !dtls ? 1 : 2); -#else - ExpectIntEQ(twcase_get_session_called, 1); #endif - ExpectIntEQ(twcase_new_session_called, 0); - /* Called on session added in - * twcase_server_sess_ctx_pre_shutdown */ - ExpectIntEQ(twcase_remove_session_called, 1); - } - break; - case 2: - if (tls13) { - /* (D)TLSv1.3 case */ - /* cache hit */ - ExpectIntEQ(twcase_get_session_called, 1); - /* (D)TLSv1.3 creates a new ticket, - * updates both internal and external cache */ - ExpectIntEQ(twcase_new_session_called, 1); - /* Called on session added in - * twcase_server_sess_ctx_pre_shutdown and by wolfSSL */ - ExpectIntEQ(twcase_remove_session_called, 1); - } - else { - /* non (D)TLSv1.3 case */ - /* cache hit */ - /* DTLS accesses cache once for stateless parsing and - * once for stateful parsing */ -#ifdef WOLFSSL_DTLS_NO_HVR_ON_RESUME - ExpectIntEQ(twcase_get_session_called, !dtls ? 1 : 2); -#else - ExpectIntEQ(twcase_get_session_called, 1); -#endif - ExpectIntEQ(twcase_new_session_called, 0); - /* Called on session added in - * twcase_server_sess_ctx_pre_shutdown */ - ExpectIntEQ(twcase_remove_session_called, 1); - } - break; - case 3: - case 4: - /* no external cache */ - ExpectIntEQ(twcase_get_session_called, 0); - ExpectIntEQ(twcase_new_session_called, 0); - ExpectIntEQ(twcase_remove_session_called, 0); - break; - } - wolfSSL_SESSION_free(twcase_client_first_session_ptr); - wolfSSL_SESSION_free(twcase_server_first_session_ptr); - wolfSSL_CTX_free(twcase_server_current_ctx_ptr); - - if (EXPECT_FAIL()) - break; - } - twcase_get_sessionCb_cleanup(); - XMEMSET(&server_sessionCache.entries, 0, - sizeof(server_sessionCache.entries)); - fprintf(stderr, "\tEnd %s\n", params[i].tls_version); - - if (EXPECT_FAIL()) - break; - } - wc_FreeMutex(&server_sessionCache.htLock); -#endif - return EXPECT_RESULT(); } - #if defined(WOLFSSL_DTLS) && defined(WOLFSSL_SESSION_EXPORT) /* canned export of a session using older version 3 */ @@ -8616,7 +8690,7 @@ static int test_wolfSSL_dtls_export(void) ExpectIntGT(wolfSSL_dtls_export_state_only(ssl, window, &windowSz), 0); wolfSSL_free(ssl); - for (i = 1; i < server_args.argc; i++) { + for (i = 1; EXPECT_SUCCESS() && i < server_args.argc; i++) { /* restore state */ ExpectNotNull(ssl = wolfSSL_new(ctx)); ExpectIntGT(wolfSSL_dtls_import(ssl, session, sessionSz), 0); @@ -9296,8 +9370,9 @@ static int test_wolfSSL_UseSNI_connection(void) {wolfTLSv1_3_client_method, wolfTLSv1_3_server_method}, #endif }; + size_t methodsSz = sizeof(methods) / sizeof(*methods); - for (i = 0; i < (sizeof(methods)/sizeof(*methods)); i++) { + for (i = 0; i < methodsSz; i++) { XMEMSET(&client_cb, 0, sizeof(callback_functions)); XMEMSET(&server_cb, 0, sizeof(callback_functions)); client_cb.method = methods[i].client_meth; @@ -11535,7 +11610,7 @@ static int test_wolfSSL_UseOCSPStapling(void) wolfSSL_CTX_free(ctx); #endif return EXPECT_RESULT(); -} /*END test_wolfSSL_UseOCSPStapling */ +} /* END test_wolfSSL_UseOCSPStapling */ /* Testing OCSP stapling version 2, wolfSSL_UseOCSPStaplingV2 function. OCSP @@ -11633,186 +11708,89 @@ static int test_wolfSSL_mcast(void) */ static int test_wc_InitBlake2b(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_BLAKE2 Blake2b blake; - int ret = 0; /* Test good arg. */ - ret = wc_InitBlake2b(&blake, 64); - if (ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - + ExpectIntEQ(wc_InitBlake2b(&blake, 64), 0); /* Test bad arg. */ - if (!ret) { - ret = wc_InitBlake2b(NULL, 64); - if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } - - if (!ret) { - ret = wc_InitBlake2b(NULL, 128); - if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } - - if (!ret) { - ret = wc_InitBlake2b(&blake, 128); - if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } - - if (!ret) { - ret = wc_InitBlake2b(NULL, 0); - if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } - - if (!ret) { - ret = wc_InitBlake2b(&blake, 0); - if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } - - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_InitBlake2b(NULL, 64), BAD_FUNC_ARG); + ExpectIntEQ(wc_InitBlake2b(NULL, 128), BAD_FUNC_ARG); + ExpectIntEQ(wc_InitBlake2b(&blake, 128), BAD_FUNC_ARG); + ExpectIntEQ(wc_InitBlake2b(NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_InitBlake2b(&blake, 0), BAD_FUNC_ARG); #endif - return res; -} /*END test_wc_InitBlake2b*/ + return EXPECT_RESULT(); +} /* END test_wc_InitBlake2b*/ /* * Unit test for the wc_InitBlake2b_WithKey() */ static int test_wc_InitBlake2b_WithKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_BLAKE2 Blake2b blake; word32 digestSz = BLAKE2B_KEYBYTES; byte key[BLAKE2B_KEYBYTES]; word32 keylen = BLAKE2B_KEYBYTES; - int ret = 0; XMEMSET(key, 0, sizeof(key)); /* Test good arg. */ - ret = wc_InitBlake2b_WithKey(&blake, digestSz, key, keylen); - if (ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_InitBlake2b_WithKey(&blake, digestSz, key, keylen), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_InitBlake2b_WithKey(NULL, digestSz, key, keylen); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_InitBlake2b_WithKey(&blake, digestSz, key, 256); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_InitBlake2b_WithKey(&blake, digestSz, NULL, keylen); - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_InitBlake2b_WithKey(NULL, digestSz, key, keylen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_InitBlake2b_WithKey(&blake, digestSz, key, 256), + BAD_FUNC_ARG); + ExpectIntEQ(wc_InitBlake2b_WithKey(&blake, digestSz, NULL, keylen), 0); #endif - return res; -} /*END wc_InitBlake2b_WithKey*/ + return EXPECT_RESULT(); +} /* END wc_InitBlake2b_WithKey*/ /* * Unit test for the wc_InitBlake2s_WithKey() */ static int test_wc_InitBlake2s_WithKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_BLAKE2S Blake2s blake; word32 digestSz = BLAKE2S_KEYBYTES; byte *key = (byte*)"01234567890123456789012345678901"; word32 keylen = BLAKE2S_KEYBYTES; - int ret = 0; /* Test good arg. */ - ret = wc_InitBlake2s_WithKey(&blake, digestSz, key, keylen); - if (ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_InitBlake2s_WithKey(&blake, digestSz, key, keylen), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_InitBlake2s_WithKey(NULL, digestSz, key, keylen); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_InitBlake2s_WithKey(&blake, digestSz, key, 256); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_InitBlake2s_WithKey(&blake, digestSz, NULL, keylen); - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_InitBlake2s_WithKey(NULL, digestSz, key, keylen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_InitBlake2s_WithKey(&blake, digestSz, key, 256), + BAD_FUNC_ARG); + ExpectIntEQ(wc_InitBlake2s_WithKey(&blake, digestSz, NULL, keylen), 0); #endif - return res; -} /*END wc_InitBlake2s_WithKey*/ + return EXPECT_RESULT(); +} /* END wc_InitBlake2s_WithKey*/ /* * Unit test for the wc_InitMd5() */ static int test_wc_InitMd5(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_MD5 wc_Md5 md5; - int ret; - int flag = 0; /* Test good arg. */ - ret = wc_InitMd5(&md5); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - + ExpectIntEQ(wc_InitMd5(&md5), 0); /* Test bad arg. */ - if (!flag) { - ret = wc_InitMd5(NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitMd5(NULL), BAD_FUNC_ARG); wc_Md5Free(&md5); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_InitMd5 */ @@ -11821,97 +11799,44 @@ static int test_wc_InitMd5(void) */ static int test_wc_Md5Update(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_MD5 wc_Md5 md5; byte hash[WC_MD5_DIGEST_SIZE]; testVector a, b, c; - int ret; - int flag = 0; - ret = wc_InitMd5(&md5); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_InitMd5(&md5), 0); /* Input */ - if (!flag) { - a.input = "a"; - a.inLen = XSTRLEN(a.input); - - ret = wc_Md5Update(&md5, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Md5Final(&md5, hash); - if (ret != 0) { - flag = ret; - } - } + a.input = "a"; + a.inLen = XSTRLEN(a.input); + ExpectIntEQ(wc_Md5Update(&md5, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_Md5Final(&md5, hash), 0); /* Update input. */ - if (!flag) { - a.input = "abc"; - a.output = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0\xd6\x96\x3f\x7d\x28\xe1\x7f" - "\x72"; - a.inLen = XSTRLEN(a.input); - a.outLen = XSTRLEN(a.output); + a.input = "abc"; + a.output = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0\xd6\x96\x3f\x7d\x28\xe1\x7f" + "\x72"; + a.inLen = XSTRLEN(a.input); + a.outLen = XSTRLEN(a.output); + ExpectIntEQ(wc_Md5Update(&md5, (byte*) a.input, (word32) a.inLen), 0); + ExpectIntEQ(wc_Md5Final(&md5, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_MD5_DIGEST_SIZE), 0); - ret = wc_Md5Update(&md5, (byte*) a.input, (word32) a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Md5Final(&md5, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_MD5_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - /*Pass in bad values. */ - if (!flag) { - b.input = NULL; - b.inLen = 0; - - ret = wc_Md5Update(&md5, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - c.input = NULL; - c.inLen = WC_MD5_DIGEST_SIZE; - - ret = wc_Md5Update(&md5, (byte*)c.input, (word32)c.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Md5Update(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + /* Pass in bad values. */ + b.input = NULL; + b.inLen = 0; + ExpectIntEQ(wc_Md5Update(&md5, (byte*)b.input, (word32)b.inLen), 0); + c.input = NULL; + c.inLen = WC_MD5_DIGEST_SIZE; + ExpectIntEQ(wc_Md5Update(&md5, (byte*)c.input, (word32)c.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Md5Update(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); wc_Md5Free(&md5); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Md5Update() */ @@ -11920,7 +11845,7 @@ static int test_wc_Md5Update(void) */ static int test_wc_Md5Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_MD5 /* Instantiate */ wc_Md5 md5; @@ -11928,59 +11853,27 @@ static int test_wc_Md5Final(void) byte hash1[WC_MD5_DIGEST_SIZE]; byte hash2[2*WC_MD5_DIGEST_SIZE]; byte hash3[5*WC_MD5_DIGEST_SIZE]; - int times, i, ret; - int flag = 0; + int times, i; /* Initialize */ - ret = wc_InitMd5(&md5); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + ExpectIntEQ(wc_InitMd5(&md5), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test)/sizeof(byte*); - for (i = 0; i < times; i++) { - if (!flag) { - ret = wc_Md5Final(&md5, hash_test[i]); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Md5Final(&md5, hash_test[i]), 0); } /* Test bad args. */ - if (!flag) { - ret = wc_Md5Final(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Md5Final(NULL, hash1); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Md5Final(&md5, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Md5Final(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Md5Final(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Md5Final(&md5, NULL), BAD_FUNC_ARG); wc_Md5Free(&md5); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* @@ -11988,32 +11881,18 @@ static int test_wc_Md5Final(void) */ static int test_wc_InitSha(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_SHA wc_Sha sha; - int ret; - int flag = 0; /* Test good arg. */ - ret = wc_InitSha(&sha); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - + ExpectIntEQ(wc_InitSha(&sha), 0); /* Test bad arg. */ - if (!flag) { - ret = wc_InitSha(NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitSha(NULL), BAD_FUNC_ARG); wc_ShaFree(&sha); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_InitSha */ /* @@ -12021,108 +11900,48 @@ static int test_wc_InitSha(void) */ static int test_wc_ShaUpdate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_SHA wc_Sha sha; byte hash[WC_SHA_DIGEST_SIZE]; testVector a, b, c; - int flag = 0; - int ret; - ret = wc_InitSha(&sha); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_InitSha(&sha), 0); /* Input. */ - if (!flag) { - a.input = "a"; - a.inLen = XSTRLEN(a.input); + a.input = "a"; + a.inLen = XSTRLEN(a.input); - ret = wc_ShaUpdate(&sha, NULL, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_ShaUpdate(&sha, (byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_ShaUpdate(&sha, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_ShaFinal(&sha, hash); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_ShaUpdate(&sha, NULL, 0), 0); + ExpectIntEQ(wc_ShaUpdate(&sha, (byte*)a.input, 0), 0); + ExpectIntEQ(wc_ShaUpdate(&sha, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_ShaFinal(&sha, hash), 0); /* Update input. */ - if (!flag) { - a.input = "abc"; - a.output = "\xA9\x99\x3E\x36\x47\x06\x81\x6A\xBA\x3E\x25\x71\x78\x50\xC2" - "\x6C\x9C\xD0\xD8\x9D"; - a.inLen = XSTRLEN(a.input); - a.outLen = XSTRLEN(a.output); + a.input = "abc"; + a.output = "\xA9\x99\x3E\x36\x47\x06\x81\x6A\xBA\x3E\x25\x71\x78\x50\xC2" + "\x6C\x9C\xD0\xD8\x9D"; + a.inLen = XSTRLEN(a.input); + a.outLen = XSTRLEN(a.output); - ret = wc_ShaUpdate(&sha, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_ShaFinal(&sha, hash); - if (ret !=0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ShaUpdate(&sha, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_ShaFinal(&sha, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA_DIGEST_SIZE), 0); /* Try passing in bad values. */ - if (!flag) { - b.input = NULL; - b.inLen = 0; - - ret = wc_ShaUpdate(&sha, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - c.input = NULL; - c.inLen = WC_SHA_DIGEST_SIZE; - - ret = wc_ShaUpdate(&sha, (byte*)c.input, (word32)c.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_ShaUpdate(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + b.input = NULL; + b.inLen = 0; + ExpectIntEQ(wc_ShaUpdate(&sha, (byte*)b.input, (word32)b.inLen), 0); + c.input = NULL; + c.inLen = WC_SHA_DIGEST_SIZE; + ExpectIntEQ(wc_ShaUpdate(&sha, (byte*)c.input, (word32)c.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ShaUpdate(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); wc_ShaFree(&sha); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_ShaUpdate() */ @@ -12131,66 +11950,34 @@ static int test_wc_ShaUpdate(void) */ static int test_wc_ShaFinal(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_SHA wc_Sha sha; byte* hash_test[3]; byte hash1[WC_SHA_DIGEST_SIZE]; byte hash2[2*WC_SHA_DIGEST_SIZE]; byte hash3[5*WC_SHA_DIGEST_SIZE]; - int times, i, ret; - int flag = 0; + int times, i; - /*Initialize*/ - ret = wc_InitSha(&sha); - if (ret) { - flag = ret; - } - - if (!flag) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + /* Initialize*/ + ExpectIntEQ(wc_InitSha(&sha), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test)/sizeof(byte*); - for (i = 0; i < times; i++) { - if (!flag) { - ret = wc_ShaFinal(&sha, hash_test[i]); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ShaFinal(&sha, hash_test[i]), 0); } /* Test bad args. */ - if (!flag) { - ret = wc_ShaFinal(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_ShaFinal(NULL, hash1); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_ShaFinal(&sha, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ShaFinal(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ShaFinal(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_ShaFinal(&sha, NULL), BAD_FUNC_ARG); wc_ShaFree(&sha); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ShaFinal */ @@ -12199,31 +11986,18 @@ static int test_wc_ShaFinal(void) */ static int test_wc_InitSha256(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_SHA256 wc_Sha256 sha256; - int ret; - int flag = 0; /* Test good arg. */ - ret = wc_InitSha256(&sha256); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - + ExpectIntEQ(wc_InitSha256(&sha256), 0); /* Test bad arg. */ - if (!flag) { - ret = wc_InitSha256(NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitSha256(NULL), BAD_FUNC_ARG); wc_Sha256Free(&sha256); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_InitSha256 */ @@ -12232,109 +12006,47 @@ static int test_wc_InitSha256(void) */ static int test_wc_Sha256Update(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_SHA256 wc_Sha256 sha256; byte hash[WC_SHA256_DIGEST_SIZE]; testVector a, b, c; - int ret; - int flag = 0; - ret = wc_InitSha256(&sha256); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_InitSha256(&sha256), 0); /* Input. */ - if (!flag) { - a.input = "a"; - a.inLen = XSTRLEN(a.input); - - ret = wc_Sha256Update(&sha256, NULL, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha256Update(&sha256, (byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha256Update(&sha256, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Sha256Final(&sha256, hash); - if (ret != 0) { - flag = ret; - } - } + a.input = "a"; + a.inLen = XSTRLEN(a.input); + ExpectIntEQ(wc_Sha256Update(&sha256, NULL, 0), 0); + ExpectIntEQ(wc_Sha256Update(&sha256, (byte*)a.input, 0), 0); + ExpectIntEQ(wc_Sha256Update(&sha256, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_Sha256Final(&sha256, hash), 0); /* Update input. */ - if (!flag) { - a.input = "abc"; - a.output = "\xBA\x78\x16\xBF\x8F\x01\xCF\xEA\x41\x41\x40\xDE\x5D\xAE\x22" - "\x23\xB0\x03\x61\xA3\x96\x17\x7A\x9C\xB4\x10\xFF\x61\xF2\x00" - "\x15\xAD"; - a.inLen = XSTRLEN(a.input); - a.outLen = XSTRLEN(a.output); - - ret = wc_Sha256Update(&sha256, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Sha256Final(&sha256, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA256_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + a.input = "abc"; + a.output = "\xBA\x78\x16\xBF\x8F\x01\xCF\xEA\x41\x41\x40\xDE\x5D\xAE\x22" + "\x23\xB0\x03\x61\xA3\x96\x17\x7A\x9C\xB4\x10\xFF\x61\xF2\x00" + "\x15\xAD"; + a.inLen = XSTRLEN(a.input); + a.outLen = XSTRLEN(a.output); + ExpectIntEQ(wc_Sha256Update(&sha256, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_Sha256Final(&sha256, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA256_DIGEST_SIZE), 0); /* Try passing in bad values */ - if (!flag) { - b.input = NULL; - b.inLen = 0; - - ret = wc_Sha256Update(&sha256, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - c.input = NULL; - c.inLen = WC_SHA256_DIGEST_SIZE; - - ret = wc_Sha256Update(&sha256, (byte*)c.input, (word32)c.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha256Update(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + b.input = NULL; + b.inLen = 0; + ExpectIntEQ(wc_Sha256Update(&sha256, (byte*)b.input, (word32)b.inLen), 0); + c.input = NULL; + c.inLen = WC_SHA256_DIGEST_SIZE; + ExpectIntEQ(wc_Sha256Update(&sha256, (byte*)c.input, (word32)c.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha256Update(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); wc_Sha256Free(&sha256); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha256Update */ @@ -12343,74 +12055,41 @@ static int test_wc_Sha256Update(void) */ static int test_wc_Sha256Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_SHA256 wc_Sha256 sha256; byte* hash_test[3]; byte hash1[WC_SHA256_DIGEST_SIZE]; byte hash2[2*WC_SHA256_DIGEST_SIZE]; byte hash3[5*WC_SHA256_DIGEST_SIZE]; - int times, i, ret; - int flag = 0; + int times, i; /* Initialize */ - ret = wc_InitSha256(&sha256); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + ExpectIntEQ(wc_InitSha256(&sha256), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test) / sizeof(byte*); - for (i = 0; i < times; i++) { - if (!flag) { - ret = wc_Sha256Final(&sha256, hash_test[i]); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha256Final(&sha256, hash_test[i]), 0); } /* Test bad args. */ - if (!flag ) { - ret = wc_Sha256Final(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha256Final(NULL, hash1); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha256Final(&sha256, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha256Final(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha256Final(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha256Final(&sha256, NULL), BAD_FUNC_ARG); wc_Sha256Free(&sha256); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha256Final */ /* * Unit test function for wc_Sha256FinalRaw() */ static int test_wc_Sha256FinalRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_SHA256) && !defined(HAVE_SELFTEST) && !defined(WOLFSSL_DEVCRYPTO) && (!defined(HAVE_FIPS) || \ (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 3))) && \ !defined(WOLFSSL_NO_HASH_RAW) @@ -12419,59 +12098,27 @@ static int test_wc_Sha256FinalRaw(void) byte hash1[WC_SHA256_DIGEST_SIZE]; byte hash2[2*WC_SHA256_DIGEST_SIZE]; byte hash3[5*WC_SHA256_DIGEST_SIZE]; - int times, i, ret; - int flag = 0; + int times, i; /* Initialize */ - ret = wc_InitSha256(&sha256); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + ExpectIntEQ(wc_InitSha256(&sha256), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test) / sizeof(byte*); - for (i = 0; i < times; i++) { - if (!flag) { - ret = wc_Sha256FinalRaw(&sha256, hash_test[i]); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha256FinalRaw(&sha256, hash_test[i]), 0); } /* Test bad args. */ - if (!flag) { - ret = wc_Sha256FinalRaw(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha256FinalRaw(NULL, hash1); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha256FinalRaw(&sha256, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha256FinalRaw(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha256FinalRaw(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha256FinalRaw(&sha256, NULL), BAD_FUNC_ARG); wc_Sha256Free(&sha256); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha256FinalRaw */ /* @@ -12479,28 +12126,20 @@ static int test_wc_Sha256FinalRaw(void) */ static int test_wc_Sha256GetFlags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_SHA256) && defined(WOLFSSL_HASH_FLAGS) wc_Sha256 sha256; word32 flags = 0; - int flag = 0; /* Initialize */ - flag = wc_InitSha256(&sha256); - if (flag == 0) { - flag = wc_Sha256GetFlags(&sha256, &flags); - } - if (flag == 0) { - if (flags & WC_HASH_FLAG_ISCOPY) { - flag = 0; - } - } + ExpectIntEQ(wc_InitSha256(&sha256), 0); + + ExpectIntEQ(wc_Sha256GetFlags(&sha256, &flags), 0); + ExpectTrue((flags & WC_HASH_FLAG_ISCOPY) == 0); wc_Sha256Free(&sha256); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha256GetFlags */ /* @@ -12508,136 +12147,84 @@ static int test_wc_Sha256GetFlags(void) */ static int test_wc_Sha256Free(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_SHA256 wc_Sha256Free(NULL); - - res = TEST_RES_CHECK(1); + /* Set result to SUCCESS. */ + ExpectTrue(1); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha256Free */ /* * Unit test function for wc_Sha256GetHash() */ static int test_wc_Sha256GetHash(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_SHA256 wc_Sha256 sha256; byte hash1[WC_SHA256_DIGEST_SIZE]; - int flag = 0; /* Initialize */ - flag = wc_InitSha256(&sha256); + ExpectIntEQ(wc_InitSha256(&sha256), 0); - if (flag == 0) { - flag = wc_Sha256GetHash(&sha256, hash1); - } - /*test bad arguments*/ - if (flag == 0) { - flag = wc_Sha256GetHash(NULL, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha256GetHash(NULL, hash1); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha256GetHash(&sha256, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } + ExpectIntEQ(wc_Sha256GetHash(&sha256, hash1), 0); + + /* test bad arguments*/ + ExpectIntEQ(wc_Sha256GetHash(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha256GetHash(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha256GetHash(&sha256, NULL), BAD_FUNC_ARG); wc_Sha256Free(&sha256); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha256GetHash */ /* * Unit test function for wc_Sha256Copy() */ static int test_wc_Sha256Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_SHA256 wc_Sha256 sha256; wc_Sha256 temp; - int flag = 0; + + XMEMSET(&sha256, 0, sizeof(sha256)); + XMEMSET(&temp, 0, sizeof(temp)); /* Initialize */ - flag = wc_InitSha256(&sha256); - if (flag == 0) { - flag = wc_InitSha256(&temp); - } - if (flag == 0) { - flag = wc_Sha256Copy(&sha256, &temp); - } - /*test bad arguments*/ - if (flag == 0) { - flag = wc_Sha256Copy(NULL, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha256Copy(NULL, &temp); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha256Copy(&sha256, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } + ExpectIntEQ(wc_InitSha256(&sha256), 0); + ExpectIntEQ(wc_InitSha256(&temp), 0); + + ExpectIntEQ(wc_Sha256Copy(&sha256, &temp), 0); + + /* test bad arguments*/ + ExpectIntEQ(wc_Sha256Copy(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha256Copy(NULL, &temp), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha256Copy(&sha256, NULL), BAD_FUNC_ARG); wc_Sha256Free(&sha256); wc_Sha256Free(&temp); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha256Copy */ /* * Testing wc_InitSha512() */ static int test_wc_InitSha512(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA512 wc_Sha512 sha512; - int ret; - int flag = 0; /* Test good arg. */ - ret = wc_InitSha512(&sha512); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - + ExpectIntEQ(wc_InitSha512(&sha512), 0); /* Test bad arg. */ - if (!flag) { - ret = wc_InitSha512(NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitSha512(NULL), BAD_FUNC_ARG); wc_Sha512Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_InitSha512 */ @@ -12646,108 +12233,50 @@ static int test_wc_InitSha512(void) */ static int test_wc_Sha512Update(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA512 wc_Sha512 sha512; byte hash[WC_SHA512_DIGEST_SIZE]; testVector a, b, c; - int ret; - int flag = 0; - ret = wc_InitSha512(&sha512); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_InitSha512(&sha512), 0); /* Input. */ - if (!flag) { - a.input = "a"; - a.inLen = XSTRLEN(a.input); - - ret = wc_Sha512Update(&sha512, NULL, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha512Update(&sha512,(byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha512Update(&sha512, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha512Final(&sha512, hash); - if (ret != 0) { - flag = ret; - } - } + a.input = "a"; + a.inLen = XSTRLEN(a.input); + ExpectIntEQ(wc_Sha512Update(&sha512, NULL, 0), 0); + ExpectIntEQ(wc_Sha512Update(&sha512,(byte*)a.input, 0), 0); + ExpectIntEQ(wc_Sha512Update(&sha512, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_Sha512Final(&sha512, hash), 0); /* Update input. */ - if (!flag) { - a.input = "abc"; - a.output = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba\xcc\x41\x73\x49\xae\x20\x41" - "\x31\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2\x0a\x9e\xee\xe6\x4b" - "\x55\xd3\x9a\x21\x92\x99\x2a\x27\x4f\xc1\xa8\x36\xba\x3c" - "\x23\xa3\xfe\xeb\xbd\x45\x4d\x44\x23\x64\x3c\xe8\x0e\x2a" - "\x9a\xc9\x4f\xa5\x4c\xa4\x9f"; - a.inLen = XSTRLEN(a.input); - a.outLen = XSTRLEN(a.output); + a.input = "abc"; + a.output = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba\xcc\x41\x73\x49\xae\x20\x41" + "\x31\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2\x0a\x9e\xee\xe6\x4b" + "\x55\xd3\x9a\x21\x92\x99\x2a\x27\x4f\xc1\xa8\x36\xba\x3c" + "\x23\xa3\xfe\xeb\xbd\x45\x4d\x44\x23\x64\x3c\xe8\x0e\x2a" + "\x9a\xc9\x4f\xa5\x4c\xa4\x9f"; + a.inLen = XSTRLEN(a.input); + a.outLen = XSTRLEN(a.output); + ExpectIntEQ(wc_Sha512Update(&sha512, (byte*) a.input, (word32) a.inLen), 0); + ExpectIntEQ(wc_Sha512Final(&sha512, hash), 0); - ret = wc_Sha512Update(&sha512, (byte*) a.input, (word32) a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Sha512Final(&sha512, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA512_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA512_DIGEST_SIZE), 0); /* Try passing in bad values */ - if (!flag) { - b.input = NULL; - b.inLen = 0; - - ret = wc_Sha512Update(&sha512, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - c.input = NULL; - c.inLen = WC_SHA512_DIGEST_SIZE; - - ret = wc_Sha512Update(&sha512, (byte*)c.input, (word32)c.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha512Update(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + b.input = NULL; + b.inLen = 0; + ExpectIntEQ(wc_Sha512Update(&sha512, (byte*)b.input, (word32)b.inLen), 0); + c.input = NULL; + c.inLen = WC_SHA512_DIGEST_SIZE; + ExpectIntEQ(wc_Sha512Update(&sha512, (byte*)c.input, (word32)c.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512Update(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); wc_Sha512Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha512Update */ @@ -12766,12 +12295,13 @@ static int test_wc_Sha512Update(void) */ static int test_Sha512_Family_Final(int type, int isRaw) { + EXPECT_DECLS; wc_Sha512 sha512; byte* hash_test[3]; byte hash1[WC_SHA512_DIGEST_SIZE]; byte hash2[2*WC_SHA512_DIGEST_SIZE]; byte hash3[5*WC_SHA512_DIGEST_SIZE]; - int times, i, ret; + int times, i; int(*initFp)(wc_Sha512*); int(*finalFp)(wc_Sha512*, byte*); @@ -12815,41 +12345,25 @@ static int test_Sha512_Family_Final(int type, int isRaw) return TEST_FAIL; /* Initialize */ - ret = initFp(&sha512); - - if (!ret) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + ExpectIntEQ(initFp(&sha512), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test) / sizeof(byte *); /* Good test args. */ - for (i = 0; i < times && ret == 0; i++) { - ret = finalFp(&sha512, hash_test[i]); + for (i = 0; i < times; i++) { + ExpectIntEQ(finalFp(&sha512, hash_test[i]), 0); } /* Test bad args. */ - if (!ret) { - if (finalFp(NULL, NULL) != BAD_FUNC_ARG) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (!ret) { - if (finalFp(NULL, hash1) != BAD_FUNC_ARG) { - ret = WOLFSSL_FATAL_ERROR; - } - } - - if (!ret) { - if (finalFp(&sha512, NULL) != BAD_FUNC_ARG) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(finalFp(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(finalFp(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(finalFp(&sha512, NULL), BAD_FUNC_ARG); freeFp(&sha512); - return ret; + return EXPECT_RESULT(); } #endif /* !HAVE_FIPS && !HAVE_SELFTEST && (!WOLFSSL_NOSHA512_224 || !WOLFSSL_NOSHA512_256) */ @@ -12859,100 +12373,61 @@ static int test_Sha512_Family_Final(int type, int isRaw) */ static int test_wc_Sha512Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA512 wc_Sha512 sha512; byte* hash_test[3]; byte hash1[WC_SHA512_DIGEST_SIZE]; byte hash2[2*WC_SHA512_DIGEST_SIZE]; byte hash3[5*WC_SHA512_DIGEST_SIZE]; - int times, i, ret; - int flag = 0; + int times, i; /* Initialize */ - ret = wc_InitSha512(&sha512); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + ExpectIntEQ(wc_InitSha512(&sha512), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test) / sizeof(byte *); - for (i = 0; i < times; i++) { - if (!flag) { - ret = wc_Sha512Final(&sha512, hash_test[i]); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha512Final(&sha512, hash_test[i]), 0); } + /* Test bad args. */ - if (!flag) { - ret = wc_Sha512Final(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha512Final(NULL, hash1); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha512Final(&sha512, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha512Final(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512Final(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512Final(&sha512, NULL), BAD_FUNC_ARG); wc_Sha512Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha512Final */ /* * Unit test function for wc_Sha512GetFlags() */ static int test_wc_Sha512GetFlags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA512) && defined(WOLFSSL_HASH_FLAGS) wc_Sha512 sha512; word32 flags = 0; - int flag = 0; /* Initialize */ - flag = wc_InitSha512(&sha512); - if (flag == 0) { - flag = wc_Sha512GetFlags(&sha512, &flags); - } - if (flag == 0) { - if (flags & WC_HASH_FLAG_ISCOPY) { - flag = 0; - } - } + ExpectIntEQ(wc_InitSha512(&sha512), 0); + + ExpectIntEQ(wc_Sha512GetFlags(&sha512, &flags), 0); + ExpectIntEQ((flags & WC_HASH_FLAG_ISCOPY), 0); wc_Sha512Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha512GetFlags */ /* * Unit test function for wc_Sha512FinalRaw() */ static int test_wc_Sha512FinalRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if (defined(WOLFSSL_SHA512) && !defined(HAVE_SELFTEST) && (!defined(HAVE_FIPS) || \ (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 3)))) && \ !defined(WOLFSSL_NO_HASH_RAW) @@ -12961,60 +12436,28 @@ static int test_wc_Sha512FinalRaw(void) byte hash1[WC_SHA512_DIGEST_SIZE]; byte hash2[2*WC_SHA512_DIGEST_SIZE]; byte hash3[5*WC_SHA512_DIGEST_SIZE]; - int times, i, ret; - int flag = 0; + int times, i; /* Initialize */ - ret = wc_InitSha512(&sha512); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + ExpectIntEQ(wc_InitSha512(&sha512), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test) / sizeof(byte*); - /* Good test args. */ for (i = 0; i < times; i++) { - if (!flag) { - ret = wc_Sha512FinalRaw(&sha512, hash_test[i]); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha512FinalRaw(&sha512, hash_test[i]), 0); } /* Test bad args. */ - if (!flag ) { - ret = wc_Sha512FinalRaw(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha512FinalRaw(NULL, hash1); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha512FinalRaw(&sha512, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha512FinalRaw(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512FinalRaw(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512FinalRaw(&sha512, NULL), BAD_FUNC_ARG); wc_Sha512Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha512FinalRaw */ /* @@ -13022,13 +12465,13 @@ static int test_wc_Sha512FinalRaw(void) */ static int test_wc_Sha512Free(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA512 wc_Sha512Free(NULL); - - res = TEST_RES_CHECK(1); + /* Set result to SUCCESS. */ + ExpectTrue(1); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha512Free */ #ifdef WOLFSSL_SHA512 @@ -13036,7 +12479,7 @@ static int test_wc_Sha512Free(void) (!defined(WOLFSSL_NOSHA512_224) || !defined(WOLFSSL_NOSHA512_256)) static int test_Sha512_Family_GetHash(int type ) { - int flag = 0; + EXPECT_DECLS; int(*initFp)(wc_Sha512*); int(*ghashFp)(wc_Sha512*, byte*); wc_Sha512 sha512; @@ -13068,32 +12511,16 @@ static int test_Sha512_Family_GetHash(int type ) if (initFp == NULL || ghashFp == NULL) return TEST_FAIL; - if (!flag) { - flag = initFp(&sha512); - } + ExpectIntEQ(initFp(&sha512), 0); + ExpectIntEQ(ghashFp(&sha512, hash1), 0); - if (!flag) { - flag = ghashFp(&sha512, hash1); - } - - /*test bad arguments*/ - if (!flag) { - if (ghashFp(NULL, NULL) != BAD_FUNC_ARG ) - flag = WOLFSSL_FATAL_ERROR; - } - - if (!flag) { - if (ghashFp(NULL, hash1) != BAD_FUNC_ARG ) - flag = WOLFSSL_FATAL_ERROR; - } - - if (!flag) { - if (ghashFp(&sha512, NULL) != BAD_FUNC_ARG ) - flag = WOLFSSL_FATAL_ERROR; - } + /* test bad arguments*/ + ExpectIntEQ(ghashFp(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(ghashFp(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(ghashFp(&sha512, NULL), BAD_FUNC_ARG); wc_Sha512Free(&sha512); - return flag; + return EXPECT_RESULT(); } #endif /* !HAVE_FIPS && !HAVE_SELFTEST && (!WOLFSSL_NOSHA512_224 || !WOLFSSL_NOSHA512_256) */ @@ -13103,43 +12530,24 @@ static int test_Sha512_Family_GetHash(int type ) */ static int test_wc_Sha512GetHash(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA512 wc_Sha512 sha512; byte hash1[WC_SHA512_DIGEST_SIZE]; - int flag = 0; /* Initialize */ - flag = wc_InitSha512(&sha512); + ExpectIntEQ(wc_InitSha512(&sha512), 0); - if (flag == 0) { - flag = wc_Sha512GetHash(&sha512, hash1); - } - /*test bad arguments*/ - if (flag == 0) { - flag = wc_Sha512GetHash(NULL, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha512GetHash(NULL, hash1); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha512GetHash(&sha512, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } + ExpectIntEQ(wc_Sha512GetHash(&sha512, hash1), 0); + + /* test bad arguments*/ + ExpectIntEQ(wc_Sha512GetHash(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512GetHash(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512GetHash(&sha512, NULL), BAD_FUNC_ARG); wc_Sha512Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha512GetHash */ /* @@ -13147,552 +12555,365 @@ static int test_wc_Sha512GetHash(void) */ static int test_wc_Sha512Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA512 wc_Sha512 sha512; wc_Sha512 temp; - int flag; + + XMEMSET(&sha512, 0, sizeof(wc_Sha512)); + XMEMSET(&temp, 0, sizeof(wc_Sha512)); /* Initialize */ - flag = wc_InitSha512(&sha512); - if (flag == 0) { - flag = wc_InitSha512(&temp); - } - if (flag == 0) { - flag = wc_Sha512Copy(&sha512, &temp); - } - /*test bad arguments*/ - if (flag == 0) { - flag = wc_Sha512Copy(NULL, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha512Copy(NULL, &temp); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha512Copy(&sha512, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } + ExpectIntEQ(wc_InitSha512(&sha512), 0); + ExpectIntEQ(wc_InitSha512(&temp), 0); + + ExpectIntEQ(wc_Sha512Copy(&sha512, &temp), 0); + + /* test bad arguments*/ + ExpectIntEQ(wc_Sha512Copy(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512Copy(NULL, &temp), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512Copy(&sha512, NULL), BAD_FUNC_ARG); wc_Sha512Free(&sha512); wc_Sha512Free(&temp); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha512Copy */ static int test_wc_InitSha512_224(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224) wc_Sha512 sha512; - int ret; - int flag = 0; /* Test good arg. */ - ret = wc_InitSha512_224(&sha512); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - + ExpectIntEQ(wc_InitSha512_224(&sha512), 0); /* Test bad arg. */ - if (!flag) { - ret = wc_InitSha512_224(NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitSha512_224(NULL), BAD_FUNC_ARG); wc_Sha512_224Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif /* WOLFSSL_SHA512 && !WOLFSSL_NOSHA512_224 */ #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_224Update(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224) wc_Sha512 sha512; byte hash[WC_SHA512_DIGEST_SIZE]; testVector a, c; - int ret; - int flag = 0; - ret = wc_InitSha512_224(&sha512); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_InitSha512_224(&sha512), 0); /* Input. */ - if (!flag) { - a.input = "a"; - a.inLen = XSTRLEN(a.input); - - ret = wc_Sha512_224Update(&sha512, NULL, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha512_224Update(&sha512,(byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha512_224Update(&sha512, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha512_224Final(&sha512, hash); - if (ret != 0) { - flag = ret; - } - } + a.input = "a"; + a.inLen = XSTRLEN(a.input); + ExpectIntEQ(wc_Sha512_224Update(&sha512, NULL, 0), 0); + ExpectIntEQ(wc_Sha512_224Update(&sha512,(byte*)a.input, 0), 0); + ExpectIntEQ(wc_Sha512_224Update(&sha512, (byte*)a.input, (word32)a.inLen), + 0); + ExpectIntEQ(wc_Sha512_224Final(&sha512, hash), 0); /* Update input. */ - if (!flag) { - a.input = "abc"; - a.output = "\x46\x34\x27\x0f\x70\x7b\x6a\x54\xda\xae\x75\x30\x46\x08" - "\x42\xe2\x0e\x37\xed\x26\x5c\xee\xe9\xa4\x3e\x89\x24\xaa"; + a.input = "abc"; + a.output = "\x46\x34\x27\x0f\x70\x7b\x6a\x54\xda\xae\x75\x30\x46\x08" + "\x42\xe2\x0e\x37\xed\x26\x5c\xee\xe9\xa4\x3e\x89\x24\xaa"; + a.inLen = XSTRLEN(a.input); + a.outLen = XSTRLEN(a.output); + ExpectIntEQ(wc_Sha512_224Update(&sha512, (byte*) a.input, (word32) a.inLen), + 0); + ExpectIntEQ(wc_Sha512_224Final(&sha512, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA512_224_DIGEST_SIZE), 0); - a.inLen = XSTRLEN(a.input); - a.outLen = XSTRLEN(a.output); - - ret = wc_Sha512_224Update(&sha512, (byte*) a.input, (word32) a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Sha512_224Final(&sha512, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA512_224_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - c.input = NULL; - c.inLen = WC_SHA512_224_DIGEST_SIZE; - - ret = wc_Sha512_224Update(&sha512, (byte*)c.input, (word32)c.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha512_224Update(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + c.input = NULL; + c.inLen = WC_SHA512_224_DIGEST_SIZE; + ExpectIntEQ(wc_Sha512_224Update(&sha512, (byte*)c.input, (word32)c.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512_224Update(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); wc_Sha512_224Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif /* WOLFSSL_SHA512 && !WOLFSSL_NOSHA512_224 */ #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_224Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224) - int ret = test_Sha512_Family_Final(WC_HASH_TYPE_SHA512_224, 0); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(test_Sha512_Family_Final(WC_HASH_TYPE_SHA512_224, 0), + TEST_SUCCESS); #endif /* WOLFSSL_SHA512 && !WOLFSSL_NOSHA512_224 */ #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_224GetFlags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224) && defined(WOLFSSL_HASH_FLAGS) - wc_Sha512 sha512, copy; + wc_Sha512 sha512; + wc_Sha512 copy; word32 flags = 0; - int flag = 0; + + XMEMSET(&sha512, 0, sizeof(wc_Sha512)); + XMEMSET(©, 0, sizeof(wc_Sha512)); /* Initialize */ - flag = wc_InitSha512_224(&sha512); - if (!flag) { - flag = wc_InitSha512_224(©); - } - if (!flag) { - flag = wc_Sha512_224Copy(&sha512, ©); - } - if (!flag) { - flag = wc_Sha512_224GetFlags(©, &flags); - } - if (!flag) { - if (flags & WC_HASH_FLAG_ISCOPY) - flag = 0; - else - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_InitSha512_224(&sha512), 0); + ExpectIntEQ(wc_InitSha512_224(©), 0); + + ExpectIntEQ(wc_Sha512_224GetFlags(&sha512, &flags), 0); + ExpectTrue((flags & WC_HASH_FLAG_ISCOPY) == 0); + + ExpectIntEQ(wc_Sha512_224Copy(&sha512, ©), 0); + ExpectIntEQ(wc_Sha512_224GetFlags(©, &flags), 0); + ExpectTrue((flags & WC_HASH_FLAG_ISCOPY) == WC_HASH_FLAG_ISCOPY); + wc_Sha512_224Free(©); wc_Sha512_224Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_224FinalRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) && \ defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224) && \ !defined(WOLFSSL_NO_HASH_RAW) - int ret = test_Sha512_Family_Final(WC_HASH_TYPE_SHA512_224, 1); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(test_Sha512_Family_Final(WC_HASH_TYPE_SHA512_224, 1), + TEST_SUCCESS); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_224Free(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224) wc_Sha512_224Free(NULL); - - res = TEST_RES_CHECK(1); + /* Set result to SUCCESS. */ + ExpectTrue(1); #endif #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_224GetHash(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224) - int ret = test_Sha512_Family_GetHash(WC_HASH_TYPE_SHA512_224); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(test_Sha512_Family_GetHash(WC_HASH_TYPE_SHA512_224), + TEST_SUCCESS); #endif #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_224Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224) wc_Sha512 sha512; wc_Sha512 temp; - int flag = 0; + + XMEMSET(&sha512, 0, sizeof(wc_Sha512)); + XMEMSET(&temp, 0, sizeof(wc_Sha512)); /* Initialize */ - flag = wc_InitSha512_224(&sha512); - if (flag == 0) { - flag = wc_InitSha512_224(&temp); - } - if (flag == 0) { - flag = wc_Sha512_224Copy(&sha512, &temp); - } - /*test bad arguments*/ - if (flag == 0) { - if (wc_Sha512_224Copy(NULL, NULL) != BAD_FUNC_ARG) - flag = WOLFSSL_FATAL_ERROR; - } - if (flag == 0) { - if (wc_Sha512_224Copy(NULL, &temp) != BAD_FUNC_ARG) - flag = WOLFSSL_FATAL_ERROR; - } - if (flag == 0) { - if (wc_Sha512_224Copy(&sha512, NULL) != BAD_FUNC_ARG) - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_InitSha512_224(&sha512), 0); + ExpectIntEQ(wc_InitSha512_224(&temp), 0); + + ExpectIntEQ(wc_Sha512_224Copy(&sha512, &temp), 0); + /* test bad arguments*/ + ExpectIntEQ(wc_Sha512_224Copy(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512_224Copy(NULL, &temp), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512_224Copy(&sha512, NULL), BAD_FUNC_ARG); wc_Sha512_224Free(&sha512); wc_Sha512_224Free(&temp); - - res = TEST_RES_CHECK(flag == 0); #endif #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_InitSha512_256(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256) wc_Sha512 sha512; - int ret; - int flag = 0; /* Test good arg. */ - ret = wc_InitSha512_256(&sha512); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - + ExpectIntEQ(wc_InitSha512_256(&sha512), 0); /* Test bad arg. */ - if (!flag) { - ret = wc_InitSha512_256(NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitSha512_256(NULL), BAD_FUNC_ARG); wc_Sha512_256Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif /* WOLFSSL_SHA512 && !WOLFSSL_NOSHA512_256 */ #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_256Update(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256) wc_Sha512 sha512; byte hash[WC_SHA512_DIGEST_SIZE]; testVector a, c; - int ret; - int flag = 0; - ret = wc_InitSha512_256(&sha512); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_InitSha512_256(&sha512), 0); /* Input. */ - if (!flag) { - a.input = "a"; - a.inLen = XSTRLEN(a.input); - - ret = wc_Sha512_256Update(&sha512, NULL, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha512_256Update(&sha512,(byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha512_256Update(&sha512, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha512_256Final(&sha512, hash); - if (ret != 0) { - flag = ret; - } - } + a.input = "a"; + a.inLen = XSTRLEN(a.input); + ExpectIntEQ(wc_Sha512_256Update(&sha512, NULL, 0), 0); + ExpectIntEQ(wc_Sha512_256Update(&sha512,(byte*)a.input, 0), 0); + ExpectIntEQ(wc_Sha512_256Update(&sha512, (byte*)a.input, (word32)a.inLen), + 0); + ExpectIntEQ(wc_Sha512_256Final(&sha512, hash), 0); /* Update input. */ - if (!flag) { - a.input = "abc"; - a.output = "\x53\x04\x8e\x26\x81\x94\x1e\xf9\x9b\x2e\x29\xb7\x6b\x4c" - "\x7d\xab\xe4\xc2\xd0\xc6\x34\xfc\x6d\x46\xe0\xe2\xf1\x31" - "\x07\xe7\xaf\x23"; + a.input = "abc"; + a.output = "\x53\x04\x8e\x26\x81\x94\x1e\xf9\x9b\x2e\x29\xb7\x6b\x4c" + "\x7d\xab\xe4\xc2\xd0\xc6\x34\xfc\x6d\x46\xe0\xe2\xf1\x31" + "\x07\xe7\xaf\x23"; + a.inLen = XSTRLEN(a.input); + a.outLen = XSTRLEN(a.output); + ExpectIntEQ(wc_Sha512_256Update(&sha512, (byte*) a.input, (word32) a.inLen), + 0); + ExpectIntEQ(wc_Sha512_256Final(&sha512, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA512_256_DIGEST_SIZE), 0); - a.inLen = XSTRLEN(a.input); - a.outLen = XSTRLEN(a.output); - - ret = wc_Sha512_256Update(&sha512, (byte*) a.input, (word32) a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Sha512_256Final(&sha512, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA512_256_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - c.input = NULL; - c.inLen = WC_SHA512_256_DIGEST_SIZE; - - ret = wc_Sha512_256Update(&sha512, (byte*)c.input, (word32)c.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha512_256Update(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + c.input = NULL; + c.inLen = WC_SHA512_256_DIGEST_SIZE; + ExpectIntEQ(wc_Sha512_256Update(&sha512, (byte*)c.input, (word32)c.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512_256Update(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); wc_Sha512_256Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif /* WOLFSSL_SHA512 && !WOLFSSL_NOSHA512_256 */ #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_256Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256) - int ret = test_Sha512_Family_Final(WC_HASH_TYPE_SHA512_256, 0); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(test_Sha512_Family_Final(WC_HASH_TYPE_SHA512_256, 0), + TEST_SUCCESS); #endif /* WOLFSSL_SHA512 && !WOLFSSL_NOSHA512_256 */ #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_256GetFlags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256) && defined(WOLFSSL_HASH_FLAGS) wc_Sha512 sha512, copy; word32 flags = 0; - int flag = 0; + + XMEMSET(&sha512, 0, sizeof(wc_Sha512)); + XMEMSET(©, 0, sizeof(wc_Sha512)); /* Initialize */ - flag = wc_InitSha512_256(&sha512); - if (!flag ) { - flag = wc_InitSha512_256(©); - } - if (!flag ) { - flag = wc_Sha512_256Copy(&sha512, ©); - } - if (!flag ) { - flag = wc_Sha512_256GetFlags(©, &flags); - } - if (!flag) { - if (flags & WC_HASH_FLAG_ISCOPY) - flag = 0; - else - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_InitSha512_256(&sha512), 0); + ExpectIntEQ(wc_InitSha512_256(©), 0); + + ExpectIntEQ(wc_Sha512_256GetFlags(&sha512, &flags), 0); + ExpectTrue((flags & WC_HASH_FLAG_ISCOPY) == 0); + + ExpectIntEQ(wc_Sha512_256Copy(&sha512, ©), 0); + ExpectIntEQ(wc_Sha512_256GetFlags(©, &flags), 0); + ExpectTrue((flags & WC_HASH_FLAG_ISCOPY) == WC_HASH_FLAG_ISCOPY); wc_Sha512_256Free(&sha512); - - res = TEST_RES_CHECK(flag == 0); #endif #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_256FinalRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) && \ defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256) && \ !defined(WOLFSSL_NO_HASH_RAW) - int ret = test_Sha512_Family_Final(WC_HASH_TYPE_SHA512_256, 1); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(test_Sha512_Family_Final(WC_HASH_TYPE_SHA512_256, 1), + TEST_SUCCESS); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_256Free(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256) wc_Sha512_256Free(NULL); - - res = TEST_RES_CHECK(1); + /* Set result to SUCCESS. */ + ExpectTrue(1); #endif #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_256GetHash(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256) - int ret = test_Sha512_Family_GetHash(WC_HASH_TYPE_SHA512_256); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(test_Sha512_Family_GetHash(WC_HASH_TYPE_SHA512_256), + TEST_SUCCESS); #endif #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } static int test_wc_Sha512_256Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256) wc_Sha512 sha512; wc_Sha512 temp; - int flag = 0; + + XMEMSET(&sha512, 0, sizeof(wc_Sha512)); + XMEMSET(&temp, 0, sizeof(wc_Sha512)); /* Initialize */ - flag = wc_InitSha512_256(&sha512); - if (flag == 0) { - flag = wc_InitSha512_256(&temp); - } - if (flag == 0) { - flag = wc_Sha512_256Copy(&sha512, &temp); - } - /*test bad arguments*/ - if (flag == 0) { - if (wc_Sha512_256Copy(NULL, NULL) != BAD_FUNC_ARG) - flag = WOLFSSL_FATAL_ERROR; - } - if (flag == 0) { - if (wc_Sha512_256Copy(NULL, &temp) != BAD_FUNC_ARG) - flag = WOLFSSL_FATAL_ERROR; - } - if (flag == 0) { - if (wc_Sha512_256Copy(&sha512, NULL) != BAD_FUNC_ARG) - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_InitSha512_256(&sha512), 0); + ExpectIntEQ(wc_InitSha512_256(&temp), 0); + + ExpectIntEQ(wc_Sha512_256Copy(&sha512, &temp), 0); + /* test bad arguments*/ + ExpectIntEQ(wc_Sha512_256Copy(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512_256Copy(NULL, &temp), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha512_256Copy(&sha512, NULL), BAD_FUNC_ARG); wc_Sha512_256Free(&sha512); wc_Sha512_256Free(&temp); - - res = TEST_RES_CHECK(flag == 0); #endif #endif /* !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } @@ -13702,31 +12923,18 @@ static int test_wc_Sha512_256Copy(void) */ static int test_wc_InitSha384(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA384 wc_Sha384 sha384; - int ret; - int flag = 0; /* Test good arg. */ - ret = wc_InitSha384(&sha384); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - + ExpectIntEQ(wc_InitSha384(&sha384), 0); /* Test bad arg. */ - if (!flag) { - ret = wc_InitSha384(NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitSha384(NULL), BAD_FUNC_ARG); wc_Sha384Free(&sha384); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_InitSha384 */ @@ -13735,109 +12943,48 @@ static int test_wc_InitSha384(void) */ static int test_wc_Sha384Update(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA384 wc_Sha384 sha384; byte hash[WC_SHA384_DIGEST_SIZE]; testVector a, b, c; - int ret; - int flag = 0; - ret = wc_InitSha384(&sha384); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_InitSha384(&sha384), 0); /* Input */ - if (!flag) { - a.input = "a"; - a.inLen = XSTRLEN(a.input); - - ret = wc_Sha384Update(&sha384, NULL, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha384Update(&sha384, (byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha384Update(&sha384, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Sha384Final(&sha384, hash); - if (ret != 0) { - flag = ret; - } - } + a.input = "a"; + a.inLen = XSTRLEN(a.input); + ExpectIntEQ(wc_Sha384Update(&sha384, NULL, 0), 0); + ExpectIntEQ(wc_Sha384Update(&sha384, (byte*)a.input, 0), 0); + ExpectIntEQ(wc_Sha384Update(&sha384, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_Sha384Final(&sha384, hash), 0); /* Update input. */ - if (!flag) { - a.input = "abc"; - a.output = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b\xb5\xa0\x3d\x69\x9a\xc6\x50" - "\x07\x27\x2c\x32\xab\x0e\xde\xd1\x63\x1a\x8b\x60\x5a\x43\xff" - "\x5b\xed\x80\x86\x07\x2b\xa1\xe7\xcc\x23\x58\xba\xec\xa1\x34" - "\xc8\x25\xa7"; - a.inLen = XSTRLEN(a.input); - a.outLen = XSTRLEN(a.output); - - ret = wc_Sha384Update(&sha384, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Sha384Final(&sha384, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA384_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + a.input = "abc"; + a.output = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b\xb5\xa0\x3d\x69\x9a\xc6\x50" + "\x07\x27\x2c\x32\xab\x0e\xde\xd1\x63\x1a\x8b\x60\x5a\x43\xff" + "\x5b\xed\x80\x86\x07\x2b\xa1\xe7\xcc\x23\x58\xba\xec\xa1\x34" + "\xc8\x25\xa7"; + a.inLen = XSTRLEN(a.input); + a.outLen = XSTRLEN(a.output); + ExpectIntEQ(wc_Sha384Update(&sha384, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_Sha384Final(&sha384, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA384_DIGEST_SIZE), 0); /* Pass in bad values. */ - if (!flag) { - b.input = NULL; - b.inLen = 0; - - ret = wc_Sha384Update(&sha384, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - c.input = NULL; - c.inLen = WC_SHA384_DIGEST_SIZE; - - ret = wc_Sha384Update(&sha384, (byte*)c.input, (word32)c.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha384Update(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + b.input = NULL; + b.inLen = 0; + ExpectIntEQ(wc_Sha384Update(&sha384, (byte*)b.input, (word32)b.inLen), 0); + c.input = NULL; + c.inLen = WC_SHA384_DIGEST_SIZE; + ExpectIntEQ( wc_Sha384Update(&sha384, (byte*)c.input, (word32)c.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha384Update(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); wc_Sha384Free(&sha384); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha384Update */ /* @@ -13845,96 +12992,54 @@ static int test_wc_Sha384Update(void) */ static int test_wc_Sha384Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA384 wc_Sha384 sha384; byte* hash_test[3]; byte hash1[WC_SHA384_DIGEST_SIZE]; byte hash2[2*WC_SHA384_DIGEST_SIZE]; byte hash3[5*WC_SHA384_DIGEST_SIZE]; - int times, i, ret; - int flag = 0; + int times, i; /* Initialize */ - ret = wc_InitSha384(&sha384); - if (ret) { - flag = ret; - } - - if (!flag) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + ExpectIntEQ(wc_InitSha384(&sha384), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test) / sizeof(byte*); - /* Good test args. */ for (i = 0; i < times; i++) { - if (!flag) { - ret = wc_Sha384Final(&sha384, hash_test[i]); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha384Final(&sha384, hash_test[i]), 0); } /* Test bad args. */ - if (!flag) { - ret = wc_Sha384Final(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha384Final(NULL, hash1); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha384Final(&sha384, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha384Final(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha384Final(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha384Final(&sha384, NULL), BAD_FUNC_ARG); wc_Sha384Free(&sha384); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha384Final */ /* * Unit test function for wc_Sha384GetFlags() */ static int test_wc_Sha384GetFlags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA384) && defined(WOLFSSL_HASH_FLAGS) wc_Sha384 sha384; word32 flags = 0; - int flag = 0; /* Initialize */ - flag = wc_InitSha384(&sha384); - if (flag == 0) { - flag = wc_Sha384GetFlags(&sha384, &flags); - } - if (flag == 0) { - if (flags & WC_HASH_FLAG_ISCOPY) { - flag = 0; - } - } + ExpectIntEQ(wc_InitSha384(&sha384), 0); + ExpectIntEQ(wc_Sha384GetFlags(&sha384, &flags), 0); + ExpectTrue((flags & WC_HASH_FLAG_ISCOPY) == 0); wc_Sha384Free(&sha384); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha384GetFlags */ /* @@ -13942,7 +13047,7 @@ static int test_wc_Sha384GetFlags(void) */ static int test_wc_Sha384FinalRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if (defined(WOLFSSL_SHA384) && !defined(HAVE_SELFTEST) && (!defined(HAVE_FIPS) || \ (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 3)))) && \ !defined(WOLFSSL_NO_HASH_RAW) @@ -13951,74 +13056,41 @@ static int test_wc_Sha384FinalRaw(void) byte hash1[WC_SHA384_DIGEST_SIZE]; byte hash2[2*WC_SHA384_DIGEST_SIZE]; byte hash3[5*WC_SHA384_DIGEST_SIZE]; - int times, i, ret; - int flag = 0; + int times, i; /* Initialize */ - ret = wc_InitSha384(&sha384); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + ExpectIntEQ(wc_InitSha384(&sha384), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test) / sizeof(byte*); - /* Good test args. */ for (i = 0; i < times; i++) { - if (!flag) { - ret = wc_Sha384FinalRaw(&sha384, hash_test[i]); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha384FinalRaw(&sha384, hash_test[i]), 0); } /* Test bad args. */ - if (!flag ) { - ret = wc_Sha384FinalRaw(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha384FinalRaw(NULL, hash1); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha384FinalRaw(&sha384, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha384FinalRaw(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha384FinalRaw(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha384FinalRaw(&sha384, NULL), BAD_FUNC_ARG); wc_Sha384Free(&sha384); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha384FinalRaw */ /* * Unit test function for wc_Sha384Free() */ static int test_wc_Sha384Free(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA384 wc_Sha384Free(NULL); - - res = TEST_RES_CHECK(1); + /* Set result to SUCCESS. */ + ExpectTrue(1); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha384Free */ /* @@ -14026,91 +13098,51 @@ static int test_wc_Sha384Free(void) */ static int test_wc_Sha384GetHash(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA384 wc_Sha384 sha384; byte hash1[WC_SHA384_DIGEST_SIZE]; - int flag = 0; /* Initialize */ - flag = wc_InitSha384(&sha384); + ExpectIntEQ(wc_InitSha384(&sha384), 0); - if (flag == 0) { - flag = wc_Sha384GetHash(&sha384, hash1); - } - /*test bad arguments*/ - if (flag == 0) { - flag = wc_Sha384GetHash(NULL, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha384GetHash(NULL, hash1); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha384GetHash(&sha384, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } + ExpectIntEQ(wc_Sha384GetHash(&sha384, hash1), 0); + /* test bad arguments*/ + ExpectIntEQ(wc_Sha384GetHash(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha384GetHash(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha384GetHash(&sha384, NULL), BAD_FUNC_ARG); wc_Sha384Free(&sha384); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha384GetHash */ /* * Unit test function for wc_Sha384Copy() */ static int test_wc_Sha384Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA384 wc_Sha384 sha384; wc_Sha384 temp; - int flag = 0; + + XMEMSET(&sha384, 0, sizeof(wc_Sha384)); + XMEMSET(&temp, 0, sizeof(wc_Sha384)); /* Initialize */ - flag = wc_InitSha384(&sha384); - if (flag == 0) { - flag = wc_InitSha384(&temp); - } - if (flag == 0) { - flag = wc_Sha384Copy(&sha384, &temp); - } - /*test bad arguments*/ - if (flag == 0) { - flag = wc_Sha384Copy(NULL, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha384Copy(NULL, &temp); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha384Copy(&sha384, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } + ExpectIntEQ(wc_InitSha384(&sha384), 0); + ExpectIntEQ(wc_InitSha384(&temp), 0); + + ExpectIntEQ(wc_Sha384Copy(&sha384, &temp), 0); + /* test bad arguments*/ + ExpectIntEQ(wc_Sha384Copy(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha384Copy(NULL, &temp), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha384Copy(&sha384, NULL), BAD_FUNC_ARG); wc_Sha384Free(&sha384); wc_Sha384Free(&temp); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha384Copy */ /* @@ -14118,31 +13150,18 @@ static int test_wc_Sha384Copy(void) */ static int test_wc_InitSha224(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA224 wc_Sha224 sha224; - int ret; - int flag = 0; /* Test good arg. */ - ret = wc_InitSha224(&sha224); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - + ExpectIntEQ(wc_InitSha224(&sha224), 0); /* Test bad arg. */ - if (!flag) { - ret = wc_InitSha224(NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitSha224(NULL), BAD_FUNC_ARG); wc_Sha224Free(&sha224); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_InitSha224 */ /* @@ -14150,108 +13169,46 @@ static int test_wc_InitSha224(void) */ static int test_wc_Sha224Update(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA224 wc_Sha224 sha224; byte hash[WC_SHA224_DIGEST_SIZE]; testVector a, b, c; - int ret; - int flag = 0; - ret = wc_InitSha224(&sha224); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_InitSha224(&sha224), 0); /* Input. */ - if (!flag) { - a.input = "a"; - a.inLen = XSTRLEN(a.input); - - ret = wc_Sha224Update(&sha224, NULL, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha224Update(&sha224, (byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - - ret = wc_Sha224Update(&sha224, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Sha224Final(&sha224, hash); - if (ret != 0) { - flag = ret; - } - } + a.input = "a"; + a.inLen = XSTRLEN(a.input); + ExpectIntEQ(wc_Sha224Update(&sha224, NULL, 0), 0); + ExpectIntEQ(wc_Sha224Update(&sha224, (byte*)a.input, 0), 0); + ExpectIntEQ(wc_Sha224Update(&sha224, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_Sha224Final(&sha224, hash), 0); /* Update input. */ - if (!flag) { - a.input = "abc"; - a.output = "\x23\x09\x7d\x22\x34\x05\xd8\x22\x86\x42\xa4\x77\xbd\xa2" - "\x55\xb3\x2a\xad\xbc\xe4\xbd\xa0\xb3\xf7\xe3\x6c\x9d\xa7"; - a.inLen = XSTRLEN(a.input); - a.outLen = XSTRLEN(a.output); + a.input = "abc"; + a.output = "\x23\x09\x7d\x22\x34\x05\xd8\x22\x86\x42\xa4\x77\xbd\xa2" + "\x55\xb3\x2a\xad\xbc\xe4\xbd\xa0\xb3\xf7\xe3\x6c\x9d\xa7"; + a.inLen = XSTRLEN(a.input); + a.outLen = XSTRLEN(a.output); + ExpectIntEQ(wc_Sha224Update(&sha224, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_Sha224Final(&sha224, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA224_DIGEST_SIZE), 0); - ret = wc_Sha224Update(&sha224, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_Sha224Final(&sha224, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA224_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - /* Pass in bad values. */ - if (!flag) { - b.input = NULL; - b.inLen = 0; - - ret = wc_Sha224Update(&sha224, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - c.input = NULL; - c.inLen = WC_SHA224_DIGEST_SIZE; - - ret = wc_Sha224Update(&sha224, (byte*)c.input, (word32)c.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha224Update(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + /* Pass in bad values. */ + b.input = NULL; + b.inLen = 0; + ExpectIntEQ(wc_Sha224Update(&sha224, (byte*)b.input, (word32)b.inLen), 0); + c.input = NULL; + c.inLen = WC_SHA224_DIGEST_SIZE; + ExpectIntEQ(wc_Sha224Update(&sha224, (byte*)c.input, (word32)c.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha224Update(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); wc_Sha224Free(&sha224); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha224Update */ /* @@ -14259,68 +13216,36 @@ static int test_wc_Sha224Update(void) */ static int test_wc_Sha224Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA224 wc_Sha224 sha224; byte* hash_test[3]; byte hash1[WC_SHA224_DIGEST_SIZE]; byte hash2[2*WC_SHA224_DIGEST_SIZE]; byte hash3[5*WC_SHA224_DIGEST_SIZE]; - int times, i, ret; - int flag = 0; + int times, i; /* Initialize */ - ret = wc_InitSha224(&sha224); - if (ret) { - flag = ret; - } - - if (!flag) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + ExpectIntEQ(wc_InitSha224(&sha224), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test) / sizeof(byte*); - /* Good test args. */ /* Testing oversized buffers. */ for (i = 0; i < times; i++) { - if (!flag) { - ret = wc_Sha224Final(&sha224, hash_test[i]); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha224Final(&sha224, hash_test[i]), 0); } /* Test bad args. */ - if (!flag) { - ret = wc_Sha224Final(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha224Final(NULL, hash1); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_Sha224Final(&sha224, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha224Final(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha224Final(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha224Final(&sha224, NULL), BAD_FUNC_ARG); wc_Sha224Free(&sha224); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha224Final */ /* @@ -14328,28 +13253,22 @@ static int test_wc_Sha224Final(void) */ static int test_wc_Sha224SetFlags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA224) && defined(WOLFSSL_HASH_FLAGS) wc_Sha224 sha224; - word32 flags = 0; - int flag = 0; + word32 flags = WC_HASH_FLAG_WILLCOPY; /* Initialize */ - flag = wc_InitSha224(&sha224); - if (flag == 0) { - flag = wc_Sha224SetFlags(&sha224, flags); - } - if (flag == 0) { - if (flags & WC_HASH_FLAG_ISCOPY) { - flag = 0; - } - } + ExpectIntEQ(wc_InitSha224(&sha224), 0); + + ExpectIntEQ(wc_Sha224SetFlags(&sha224, flags), 0); + flags = 0; + ExpectIntEQ(wc_Sha224GetFlags(&sha224, &flags), 0); + ExpectTrue(flags == WC_HASH_FLAG_WILLCOPY); wc_Sha224Free(&sha224); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha224SetFlags */ /* @@ -14357,42 +13276,33 @@ static int test_wc_Sha224SetFlags(void) */ static int test_wc_Sha224GetFlags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA224) && defined(WOLFSSL_HASH_FLAGS) wc_Sha224 sha224; word32 flags = 0; - int flag = 0; /* Initialize */ - flag = wc_InitSha224(&sha224); - if (flag == 0) { - flag = wc_Sha224GetFlags(&sha224, &flags); - } - if (flag == 0) { - if (flags & WC_HASH_FLAG_ISCOPY) { - flag = 0; - } - } + ExpectIntEQ(wc_InitSha224(&sha224), 0); + + ExpectIntEQ(wc_Sha224GetFlags(&sha224, &flags), 0); + ExpectTrue((flags & WC_HASH_FLAG_ISCOPY) == 0); wc_Sha224Free(&sha224); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha224GetFlags */ /* * Unit test function for wc_Sha224Free() */ static int test_wc_Sha224Free(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA224 wc_Sha224Free(NULL); - - res = TEST_RES_CHECK(1); + /* Set result to SUCCESS. */ + ExpectTrue(1); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha224Free */ @@ -14401,43 +13311,23 @@ static int test_wc_Sha224Free(void) */ static int test_wc_Sha224GetHash(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA224 wc_Sha224 sha224; byte hash1[WC_SHA224_DIGEST_SIZE]; - int flag = 0; /* Initialize */ - flag = wc_InitSha224(&sha224); + ExpectIntEQ(wc_InitSha224(&sha224), 0); - if (flag == 0) { - flag = wc_Sha224GetHash(&sha224, hash1); - } - /*test bad arguments*/ - if (flag == 0) { - flag = wc_Sha224GetHash(NULL, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha224GetHash(NULL, hash1); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha224GetHash(&sha224, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } + ExpectIntEQ(wc_Sha224GetHash(&sha224, hash1), 0); + /* test bad arguments*/ + ExpectIntEQ(wc_Sha224GetHash(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha224GetHash(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha224GetHash(&sha224, NULL), BAD_FUNC_ARG); wc_Sha224Free(&sha224); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha224GetHash */ /* @@ -14445,47 +13335,28 @@ static int test_wc_Sha224GetHash(void) */ static int test_wc_Sha224Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHA224 wc_Sha224 sha224; wc_Sha224 temp; - int flag = 0; + + XMEMSET(&sha224, 0, sizeof(wc_Sha224)); + XMEMSET(&temp, 0, sizeof(wc_Sha224)); /* Initialize */ - flag = wc_InitSha224(&sha224); - if (flag == 0) { - flag = wc_InitSha224(&temp); - } - if (flag == 0) { - flag = wc_Sha224Copy(&sha224, &temp); - } - /*test bad arguments*/ - if (flag == 0) { - flag = wc_Sha224Copy(NULL, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha224Copy(NULL, &temp); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } - if (flag == 0) { - flag = wc_Sha224Copy(&sha224, NULL); - if (flag == BAD_FUNC_ARG) { - flag = 0; - } - } + ExpectIntEQ(wc_InitSha224(&sha224), 0); + ExpectIntEQ(wc_InitSha224(&temp), 0); + ExpectIntEQ(wc_Sha224Copy(&sha224, &temp), 0); + /* test bad arguments*/ + ExpectIntEQ(wc_Sha224Copy(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha224Copy(NULL, &temp), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha224Copy(&sha224, NULL), BAD_FUNC_ARG); wc_Sha224Free(&sha224); wc_Sha224Free(&temp); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha224Copy */ @@ -14494,29 +13365,16 @@ static int test_wc_Sha224Copy(void) */ static int test_wc_InitRipeMd(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_RIPEMD RipeMd ripemd; - int ret; - int flag = 0; /* Test good arg. */ - ret = wc_InitRipeMd(&ripemd); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - + ExpectIntEQ(wc_InitRipeMd(&ripemd), 0); /* Test bad arg. */ - if (!flag) { - ret = wc_InitRipeMd(NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - res = TEST_RES_CHECK(flag == 0); + ExpectIntEQ(wc_InitRipeMd(NULL), BAD_FUNC_ARG); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_InitRipeMd */ @@ -14525,96 +13383,42 @@ static int test_wc_InitRipeMd(void) */ static int test_wc_RipeMdUpdate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_RIPEMD RipeMd ripemd; byte hash[RIPEMD_DIGEST_SIZE]; testVector a, b, c; - int ret; - int flag = 0; - ret = wc_InitRipeMd(&ripemd); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_InitRipeMd(&ripemd), 0); /* Input */ - if (!flag) { - a.input = "a"; - a.inLen = XSTRLEN(a.input); - - ret = wc_RipeMdUpdate(&ripemd, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_RipeMdFinal(&ripemd, hash); - if (ret != 0) { - flag = ret; - } - } + a.input = "a"; + a.inLen = XSTRLEN(a.input); + ExpectIntEQ(wc_RipeMdUpdate(&ripemd, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_RipeMdFinal(&ripemd, hash), 0); /* Update input. */ - if (!flag) { - a.input = "abc"; - a.output = "\x8e\xb2\x08\xf7\xe0\x5d\x98\x7a\x9b\x04\x4a\x8e\x98\xc6" - "\xb0\x87\xf1\x5a\x0b\xfc"; - a.inLen = XSTRLEN(a.input); - a.outLen = XSTRLEN(a.output); - - ret = wc_RipeMdUpdate(&ripemd, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_RipeMdFinal(&ripemd, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, RIPEMD_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + a.input = "abc"; + a.output = "\x8e\xb2\x08\xf7\xe0\x5d\x98\x7a\x9b\x04\x4a\x8e\x98\xc6" + "\xb0\x87\xf1\x5a\x0b\xfc"; + a.inLen = XSTRLEN(a.input); + a.outLen = XSTRLEN(a.output); + ExpectIntEQ(wc_RipeMdUpdate(&ripemd, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_RipeMdFinal(&ripemd, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, RIPEMD_DIGEST_SIZE), 0); /* Pass in bad values. */ - if (!flag) { - b.input = NULL; - b.inLen = 0; - - ret = wc_RipeMdUpdate(&ripemd, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - c.input = NULL; - c.inLen = RIPEMD_DIGEST_SIZE; - - ret = wc_RipeMdUpdate(&ripemd, (byte*)c.input, (word32)c.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_RipeMdUpdate(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - res = TEST_RES_CHECK(flag == 0); + b.input = NULL; + b.inLen = 0; + ExpectIntEQ(wc_RipeMdUpdate(&ripemd, (byte*)b.input, (word32)b.inLen), 0); + c.input = NULL; + c.inLen = RIPEMD_DIGEST_SIZE; + ExpectIntEQ(wc_RipeMdUpdate(&ripemd, (byte*)c.input, (word32)c.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RipeMdUpdate(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_RipeMdUdpate */ /* @@ -14622,65 +13426,33 @@ static int test_wc_RipeMdUpdate(void) */ static int test_wc_RipeMdFinal(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_RIPEMD RipeMd ripemd; byte* hash_test[3]; byte hash1[RIPEMD_DIGEST_SIZE]; byte hash2[2*RIPEMD_DIGEST_SIZE]; byte hash3[5*RIPEMD_DIGEST_SIZE]; - int times, i, ret; - int flag = 0; + int times, i; /* Initialize */ - ret = wc_InitRipeMd(&ripemd); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - hash_test[0] = hash1; - hash_test[1] = hash2; - hash_test[2] = hash3; - } + ExpectIntEQ(wc_InitRipeMd(&ripemd), 0); + hash_test[0] = hash1; + hash_test[1] = hash2; + hash_test[2] = hash3; times = sizeof(hash_test) / sizeof(byte*); - /* Testing oversized buffers. */ for (i = 0; i < times; i++) { - if (!flag) { - ret = wc_RipeMdFinal(&ripemd, hash_test[i]); - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_RipeMdFinal(&ripemd, hash_test[i]), 0); } /* Test bad args. */ - if (!flag) { - ret = wc_RipeMdFinal(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_RipeMdFinal(NULL, hash1); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_RipeMdFinal(&ripemd, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - res = TEST_RES_CHECK(flag == 0); + ExpectIntEQ(wc_RipeMdFinal(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_RipeMdFinal(NULL, hash1), BAD_FUNC_ARG); + ExpectIntEQ(wc_RipeMdFinal(&ripemd, NULL), BAD_FUNC_ARG); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_RipeMdFinal */ @@ -14690,81 +13462,38 @@ static int test_wc_RipeMdFinal(void) */ static int test_wc_InitSha3(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) wc_Sha3 sha3; - int ret = 0; (void)sha3; - #if !defined(WOLFSSL_NOSHA3_224) - ret = wc_InitSha3_224(&sha3, HEAP_HINT, testDevId); - - /* Test bad args. */ - if (ret == 0) { - ret = wc_InitSha3_224(NULL, HEAP_HINT, testDevId); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - wc_Sha3_224_Free(&sha3); - #endif /* NOSHA3_224 */ - #if !defined(WOLFSSL_NOSHA3_256) - if (ret == 0) { - ret = wc_InitSha3_256(&sha3, HEAP_HINT, testDevId); - /* Test bad args. */ - if (ret == 0) { - ret = wc_InitSha3_256(NULL, HEAP_HINT, testDevId); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - wc_Sha3_256_Free(&sha3); - } /* END sha3_256 */ - #endif /* NOSHA3_256 */ - #if !defined(WOLFSSL_NOSHA3_384) - if (ret == 0) { - ret = wc_InitSha3_384(&sha3, HEAP_HINT, testDevId); - /* Test bad args. */ - if (ret == 0) { - ret = wc_InitSha3_384(NULL, HEAP_HINT, testDevId); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - wc_Sha3_384_Free(&sha3); - } /* END sha3_384 */ - #endif /* NOSHA3_384 */ - #if !defined(WOLFSSL_NOSHA3_512) - if (ret == 0) { - ret = wc_InitSha3_512(&sha3, HEAP_HINT, testDevId); - /* Test bad args. */ - if (ret == 0) { - ret = wc_InitSha3_512(NULL, HEAP_HINT, testDevId); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - wc_Sha3_512_Free(&sha3); - } /* END sha3_512 */ - #endif /* NOSHA3_512 */ - - res = TEST_RES_CHECK(ret == 0); +#if !defined(WOLFSSL_NOSHA3_224) + ExpectIntEQ(wc_InitSha3_224(&sha3, HEAP_HINT, testDevId), 0); + /* Test bad args. */ + ExpectIntEQ(wc_InitSha3_224(NULL, HEAP_HINT, testDevId), BAD_FUNC_ARG); + wc_Sha3_224_Free(&sha3); +#endif /* NOSHA3_224 */ +#if !defined(WOLFSSL_NOSHA3_256) + ExpectIntEQ(wc_InitSha3_256(&sha3, HEAP_HINT, testDevId), 0); + /* Test bad args. */ + ExpectIntEQ(wc_InitSha3_256(NULL, HEAP_HINT, testDevId), BAD_FUNC_ARG); + wc_Sha3_256_Free(&sha3); +#endif /* NOSHA3_256 */ +#if !defined(WOLFSSL_NOSHA3_384) + ExpectIntEQ(wc_InitSha3_384(&sha3, HEAP_HINT, testDevId), 0); + /* Test bad args. */ + ExpectIntEQ(wc_InitSha3_384(NULL, HEAP_HINT, testDevId), BAD_FUNC_ARG); + wc_Sha3_384_Free(&sha3); +#endif /* NOSHA3_384 */ +#if !defined(WOLFSSL_NOSHA3_512) + ExpectIntEQ(wc_InitSha3_512(&sha3, HEAP_HINT, testDevId), 0); + /* Test bad args. */ + ExpectIntEQ(wc_InitSha3_512(NULL, HEAP_HINT, testDevId), BAD_FUNC_ARG); + wc_Sha3_512_Free(&sha3); +#endif /* NOSHA3_512 */ #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_InitSha3 */ @@ -14773,7 +13502,7 @@ static int test_wc_InitSha3(void) */ static int testing_wc_Sha3_Update(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_XILINX_CRYPT) && \ !defined(WOLFSSL_AFALG_XILINX) wc_Sha3 sha3; @@ -14787,171 +13516,92 @@ static int testing_wc_Sha3_Update(void) word32 msglen = sizeof(msg) - 1; word32 msg2len = sizeof(msg2); word32 msgCmplen = sizeof(msgCmp); - int ret = 0; #if !defined(WOLFSSL_NOSHA3_224) - ret = wc_InitSha3_224(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitSha3_224(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_224_Update(&sha3, msg, msglen), 0); + ExpectIntEQ(XMEMCMP(msg, sha3.t, msglen), 0); + ExpectTrue(sha3.i == msglen); + + ExpectIntEQ(wc_Sha3_224_Update(&sha3, msg2, msg2len), 0); + ExpectIntEQ(XMEMCMP(sha3.t, msgCmp, msgCmplen), 0); - ret = wc_Sha3_224_Update(&sha3, msg, msglen); - if (XMEMCMP(msg, sha3.t, msglen) || sha3.i != msglen) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_Sha3_224_Update(&sha3, msg2, msg2len); - if (ret == 0 && XMEMCMP(sha3.t, msgCmp, msgCmplen) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Pass bad args. */ - if (ret == 0) { - ret = wc_Sha3_224_Update(NULL, msg2, msg2len); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_224_Update(&sha3, NULL, 5); - } - if (ret == BAD_FUNC_ARG) { - wc_Sha3_224_Free(&sha3); - if (wc_InitSha3_224(&sha3, HEAP_HINT, testDevId)) { - return TEST_FAIL; - } - ret = wc_Sha3_224_Update(&sha3, NULL, 0); - if (ret == 0) { - ret = wc_Sha3_224_Update(&sha3, msg2, msg2len); - } - if (ret == 0 && XMEMCMP(msg2, sha3.t, msg2len) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntEQ(wc_Sha3_224_Update(NULL, msg2, msg2len), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_224_Update(&sha3, NULL, 5), BAD_FUNC_ARG); + wc_Sha3_224_Free(&sha3); + + ExpectIntEQ(wc_InitSha3_224(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_224_Update(&sha3, NULL, 0), 0); + ExpectIntEQ(wc_Sha3_224_Update(&sha3, msg2, msg2len), 0); + ExpectIntEQ(XMEMCMP(msg2, sha3.t, msg2len), 0); wc_Sha3_224_Free(&sha3); #endif /* SHA3_224 */ #if !defined(WOLFSSL_NOSHA3_256) - if (ret == 0) { - ret = wc_InitSha3_256(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } - ret = wc_Sha3_256_Update(&sha3, msg, msglen); - if (XMEMCMP(msg, sha3.t, msglen) || sha3.i != msglen) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_Sha3_256_Update(&sha3, msg2, msg2len); - if (XMEMCMP(sha3.t, msgCmp, msgCmplen) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - /* Pass bad args. */ - if (ret == 0) { - ret = wc_Sha3_256_Update(NULL, msg2, msg2len); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_256_Update(&sha3, NULL, 5); - } - if (ret == BAD_FUNC_ARG) { - wc_Sha3_256_Free(&sha3); - if (wc_InitSha3_256(&sha3, HEAP_HINT, testDevId)) { - return TEST_FAIL; - } - ret = wc_Sha3_256_Update(&sha3, NULL, 0); - if (ret == 0) { - ret = wc_Sha3_256_Update(&sha3, msg2, msg2len); - } - if (ret == 0 && XMEMCMP(msg2, sha3.t, msg2len) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } - wc_Sha3_256_Free(&sha3); - } + ExpectIntEQ(wc_InitSha3_256(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_256_Update(&sha3, msg, msglen), 0); + ExpectIntEQ(XMEMCMP(msg, sha3.t, msglen), 0); + ExpectTrue(sha3.i == msglen); + + ExpectIntEQ(wc_Sha3_256_Update(&sha3, msg2, msg2len), 0); + ExpectIntEQ(XMEMCMP(sha3.t, msgCmp, msgCmplen), 0); + + /* Pass bad args. */ + ExpectIntEQ(wc_Sha3_256_Update(NULL, msg2, msg2len), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_256_Update(&sha3, NULL, 5), BAD_FUNC_ARG); + wc_Sha3_256_Free(&sha3); + + ExpectIntEQ(wc_InitSha3_256(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_256_Update(&sha3, NULL, 0), 0); + ExpectIntEQ(wc_Sha3_256_Update(&sha3, msg2, msg2len), 0); + ExpectIntEQ(XMEMCMP(msg2, sha3.t, msg2len), 0); + wc_Sha3_256_Free(&sha3); #endif /* SHA3_256 */ #if !defined(WOLFSSL_NOSHA3_384) - if (ret == 0) { - ret = wc_InitSha3_384(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } - ret = wc_Sha3_384_Update(&sha3, msg, msglen); - if (XMEMCMP(msg, sha3.t, msglen) || sha3.i != msglen) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_Sha3_384_Update(&sha3, msg2, msg2len); - if (XMEMCMP(sha3.t, msgCmp, msgCmplen) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - /* Pass bad args. */ - if (ret == 0) { - ret = wc_Sha3_384_Update(NULL, msg2, msg2len); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_384_Update(&sha3, NULL, 5); - } - if (ret == BAD_FUNC_ARG) { - wc_Sha3_384_Free(&sha3); - if (wc_InitSha3_384(&sha3, HEAP_HINT, testDevId)) { - return TEST_FAIL; - } - ret = wc_Sha3_384_Update(&sha3, NULL, 0); - if (ret == 0) { - ret = wc_Sha3_384_Update(&sha3, msg2, msg2len); - } - if (ret == 0 && XMEMCMP(msg2, sha3.t, msg2len) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } - wc_Sha3_384_Free(&sha3); - } + ExpectIntEQ(wc_InitSha3_384(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_384_Update(&sha3, msg, msglen), 0); + ExpectIntEQ(XMEMCMP(msg, sha3.t, msglen), 0); + ExpectTrue(sha3.i == msglen); + + ExpectIntEQ(wc_Sha3_384_Update(&sha3, msg2, msg2len), 0); + ExpectIntEQ(XMEMCMP(sha3.t, msgCmp, msgCmplen), 0); + + /* Pass bad args. */ + ExpectIntEQ(wc_Sha3_384_Update(NULL, msg2, msg2len), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_384_Update(&sha3, NULL, 5), BAD_FUNC_ARG); + wc_Sha3_384_Free(&sha3); + + ExpectIntEQ(wc_InitSha3_384(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_384_Update(&sha3, NULL, 0), 0); + ExpectIntEQ(wc_Sha3_384_Update(&sha3, msg2, msg2len), 0); + ExpectIntEQ(XMEMCMP(msg2, sha3.t, msg2len), 0); + wc_Sha3_384_Free(&sha3); #endif /* SHA3_384 */ #if !defined(WOLFSSL_NOSHA3_512) - if (ret == 0) { - ret = wc_InitSha3_512(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } - ret = wc_Sha3_512_Update(&sha3, msg, msglen); - if (XMEMCMP(msg, sha3.t, msglen) || sha3.i != msglen) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_Sha3_512_Update(&sha3, msg2, msg2len); - if (XMEMCMP(sha3.t, msgCmp, msgCmplen) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - /* Pass bad args. */ - if (ret == 0) { - ret = wc_Sha3_512_Update(NULL, msg2, msg2len); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_512_Update(&sha3, NULL, 5); - } - if (ret == BAD_FUNC_ARG) { - wc_Sha3_512_Free(&sha3); - if (wc_InitSha3_512(&sha3, HEAP_HINT, testDevId)) { - return TEST_FAIL; - } - ret = wc_Sha3_512_Update(&sha3, NULL, 0); - if (ret == 0) { - ret = wc_Sha3_512_Update(&sha3, msg2, msg2len); - } - if (ret == 0 && XMEMCMP(msg2, sha3.t, msg2len) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } - wc_Sha3_512_Free(&sha3); - } + ExpectIntEQ(wc_InitSha3_512(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_512_Update(&sha3, msg, msglen), 0); + ExpectIntEQ(XMEMCMP(msg, sha3.t, msglen), 0); + ExpectTrue(sha3.i == msglen); + + ExpectIntEQ(wc_Sha3_512_Update(&sha3, msg2, msg2len), 0); + ExpectIntEQ(XMEMCMP(sha3.t, msgCmp, msgCmplen), 0); + + /* Pass bad args. */ + ExpectIntEQ(wc_Sha3_512_Update(NULL, msg2, msg2len), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_512_Update(&sha3, NULL, 5), BAD_FUNC_ARG); + wc_Sha3_512_Free(&sha3); + + ExpectIntEQ(wc_InitSha3_512(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_512_Update(&sha3, NULL, 0), 0); + ExpectIntEQ(wc_Sha3_512_Update(&sha3, msg2, msg2len), 0); + ExpectIntEQ(XMEMCMP(msg2, sha3.t, msg2len), 0); + wc_Sha3_512_Free(&sha3); #endif /* SHA3_512 */ - - res = TEST_RES_CHECK(ret == 0); #endif /* WOLFSSL_SHA3 */ - return res; - + return EXPECT_RESULT(); } /* END testing_wc_Sha3_Update */ /* @@ -14959,7 +13609,7 @@ static int testing_wc_Sha3_Update(void) */ static int test_wc_Sha3_224_Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_224) wc_Sha3 sha3; const char* msg = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnom" @@ -14969,79 +13619,36 @@ static int test_wc_Sha3_224_Final(void) "\x64\xea\xd0\xfc\xce\x33"; byte hash[WC_SHA3_224_DIGEST_SIZE]; byte hashRet[WC_SHA3_224_DIGEST_SIZE]; - int ret = 0; /* Init stack variables. */ XMEMSET(hash, 0, sizeof(hash)); - ret = wc_InitSha3_224(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitSha3_224(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_224_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)), 0); + ExpectIntEQ(wc_Sha3_224_Final(&sha3, hash), 0); + ExpectIntEQ(XMEMCMP(expOut, hash, WC_SHA3_224_DIGEST_SIZE), 0); - ret= wc_Sha3_224_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)); - if (ret == 0) { - ret = wc_Sha3_224_Final(&sha3, hash); - if (ret == 0 && XMEMCMP(expOut, hash, WC_SHA3_224_DIGEST_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_Sha3_224_Final(NULL, hash); - if (ret == 0) { - ret = wc_Sha3_224_Final(&sha3, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha3_224_Final(NULL, hash), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_224_Final(&sha3, NULL), BAD_FUNC_ARG); wc_Sha3_224_Free(&sha3); - if (ret == 0) { - ret = wc_InitSha3_224(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitSha3_224(&sha3, HEAP_HINT, testDevId), 0); + /* Init stack variables. */ + XMEMSET(hash, 0, sizeof(hash)); + XMEMSET(hashRet, 0, sizeof(hashRet)); + ExpectIntEQ(wc_Sha3_224_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)), 0); + ExpectIntEQ(wc_Sha3_224_GetHash(&sha3, hashRet), 0); + ExpectIntEQ(wc_Sha3_224_Final(&sha3, hash), 0); + ExpectIntEQ(XMEMCMP(hash, hashRet, WC_SHA3_224_DIGEST_SIZE), 0); - /* Init stack variables. */ - XMEMSET(hash, 0, sizeof(hash)); - XMEMSET(hashRet, 0, sizeof(hashRet)); - - ret= wc_Sha3_224_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)); - if (ret == 0) { - ret = wc_Sha3_224_GetHash(&sha3, hashRet); - } - - if (ret == 0) { - ret = wc_Sha3_224_Final(&sha3, hash); - if (ret == 0 && XMEMCMP(hash, hashRet, WC_SHA3_224_DIGEST_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - /* Test bad args. */ - ret = wc_Sha3_224_GetHash(NULL, hashRet); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_224_GetHash(&sha3, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + /* Test bad args. */ + ExpectIntEQ(wc_Sha3_224_GetHash(NULL, hashRet), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_224_GetHash(&sha3, NULL), BAD_FUNC_ARG); wc_Sha3_224_Free(&sha3); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha3_224_Final */ @@ -15050,7 +13657,7 @@ static int test_wc_Sha3_224_Final(void) */ static int test_wc_Sha3_256_Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_256) wc_Sha3 sha3; const char* msg = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnom" @@ -15060,77 +13667,36 @@ static int test_wc_Sha3_256_Final(void) "\xdd\x97\x49\x6d\x33\x76"; byte hash[WC_SHA3_256_DIGEST_SIZE]; byte hashRet[WC_SHA3_256_DIGEST_SIZE]; - int ret = 0; /* Init stack variables. */ XMEMSET(hash, 0, sizeof(hash)); - ret = wc_InitSha3_256(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitSha3_256(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_256_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)), 0); + ExpectIntEQ(wc_Sha3_256_Final(&sha3, hash), 0); + ExpectIntEQ(XMEMCMP(expOut, hash, WC_SHA3_256_DIGEST_SIZE), 0); - ret= wc_Sha3_256_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)); - if (ret == 0) { - ret = wc_Sha3_256_Final(&sha3, hash); - if (ret == 0 && XMEMCMP(expOut, hash, WC_SHA3_256_DIGEST_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_Sha3_256_Final(NULL, hash); - if (ret == 0) { - ret = wc_Sha3_256_Final(&sha3, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha3_256_Final(NULL, hash), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_256_Final(&sha3, NULL), BAD_FUNC_ARG); wc_Sha3_256_Free(&sha3); - if (ret == 0) { - ret = wc_InitSha3_256(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } - /* Init stack variables. */ - XMEMSET(hash, 0, sizeof(hash)); - XMEMSET(hashRet, 0, sizeof(hashRet)); + ExpectIntEQ(wc_InitSha3_256(&sha3, HEAP_HINT, testDevId), 0); + /* Init stack variables. */ + XMEMSET(hash, 0, sizeof(hash)); + XMEMSET(hashRet, 0, sizeof(hashRet)); + ExpectIntEQ(wc_Sha3_256_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)), 0); + ExpectIntEQ(wc_Sha3_256_GetHash(&sha3, hashRet), 0); + ExpectIntEQ(wc_Sha3_256_Final(&sha3, hash), 0); + ExpectIntEQ(XMEMCMP(hash, hashRet, WC_SHA3_256_DIGEST_SIZE), 0); - ret= wc_Sha3_256_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)); - if (ret == 0) { - ret = wc_Sha3_256_GetHash(&sha3, hashRet); - } - if (ret == 0) { - ret = wc_Sha3_256_Final(&sha3, hash); - if (ret == 0 && XMEMCMP(hash, hashRet, WC_SHA3_256_DIGEST_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - /* Test bad args. */ - ret = wc_Sha3_256_GetHash(NULL, hashRet); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_256_GetHash(&sha3, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + /* Test bad args. */ + ExpectIntEQ(wc_Sha3_256_GetHash(NULL, hashRet), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_256_GetHash(&sha3, NULL), BAD_FUNC_ARG); wc_Sha3_256_Free(&sha3); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha3_256_Final */ @@ -15139,7 +13705,7 @@ static int test_wc_Sha3_256_Final(void) */ static int test_wc_Sha3_384_Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_384) wc_Sha3 sha3; const char* msg = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnom" @@ -15150,77 +13716,36 @@ static int test_wc_Sha3_384_Final(void) "\xa1\x9e\xef\x51\xac\xd0\x65\x7c\x22"; byte hash[WC_SHA3_384_DIGEST_SIZE]; byte hashRet[WC_SHA3_384_DIGEST_SIZE]; - int ret = 0; /* Init stack variables. */ XMEMSET(hash, 0, sizeof(hash)); - ret = wc_InitSha3_384(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitSha3_384(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_384_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)), 0); + ExpectIntEQ(wc_Sha3_384_Final(&sha3, hash), 0); + ExpectIntEQ(XMEMCMP(expOut, hash, WC_SHA3_384_DIGEST_SIZE), 0); - ret= wc_Sha3_384_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)); - if (ret == 0) { - ret = wc_Sha3_384_Final(&sha3, hash); - if (ret == 0 && XMEMCMP(expOut, hash, WC_SHA3_384_DIGEST_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_Sha3_384_Final(NULL, hash); - if (ret == 0) { - ret = wc_Sha3_384_Final(&sha3, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha3_384_Final(NULL, hash), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_384_Final(&sha3, NULL), BAD_FUNC_ARG); wc_Sha3_384_Free(&sha3); - if (ret == 0) { - ret = wc_InitSha3_384(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } - /* Init stack variables. */ - XMEMSET(hash, 0, sizeof(hash)); - XMEMSET(hashRet, 0, sizeof(hashRet)); + ExpectIntEQ(wc_InitSha3_384(&sha3, HEAP_HINT, testDevId), 0); + /* Init stack variables. */ + XMEMSET(hash, 0, sizeof(hash)); + XMEMSET(hashRet, 0, sizeof(hashRet)); + ExpectIntEQ(wc_Sha3_384_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)), 0); + ExpectIntEQ(wc_Sha3_384_GetHash(&sha3, hashRet), 0); + ExpectIntEQ(wc_Sha3_384_Final(&sha3, hash), 0); + ExpectIntEQ(XMEMCMP(hash, hashRet, WC_SHA3_384_DIGEST_SIZE), 0); - ret= wc_Sha3_384_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)); - if (ret == 0) { - ret = wc_Sha3_384_GetHash(&sha3, hashRet); - } - if (ret == 0) { - ret = wc_Sha3_384_Final(&sha3, hash); - if (ret == 0 && XMEMCMP(hash, hashRet, WC_SHA3_384_DIGEST_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - /* Test bad args. */ - ret = wc_Sha3_384_GetHash(NULL, hashRet); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_384_GetHash(&sha3, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + /* Test bad args. */ + ExpectIntEQ(wc_Sha3_384_GetHash(NULL, hashRet), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_384_GetHash(&sha3, NULL), BAD_FUNC_ARG); wc_Sha3_384_Free(&sha3); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha3_384_Final */ @@ -15230,7 +13755,7 @@ static int test_wc_Sha3_384_Final(void) */ static int test_wc_Sha3_512_Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_512) && \ !defined(WOLFSSL_NOSHA3_384) wc_Sha3 sha3; @@ -15243,77 +13768,36 @@ static int test_wc_Sha3_512_Final(void) "\x9c\x03\x0d\x99\xa2\x7d\xaf\x11\x39\xd6\xe7\x5e"; byte hash[WC_SHA3_512_DIGEST_SIZE]; byte hashRet[WC_SHA3_512_DIGEST_SIZE]; - int ret = 0; /* Init stack variables. */ XMEMSET(hash, 0, sizeof(hash)); - ret = wc_InitSha3_512(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitSha3_512(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_512_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)), 0); + ExpectIntEQ(wc_Sha3_512_Final(&sha3, hash), 0); + ExpectIntEQ(XMEMCMP(expOut, hash, WC_SHA3_512_DIGEST_SIZE), 0); - ret= wc_Sha3_512_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)); - if (ret == 0) { - ret = wc_Sha3_512_Final(&sha3, hash); - if (ret == 0 && XMEMCMP(expOut, hash, WC_SHA3_512_DIGEST_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_Sha3_512_Final(NULL, hash); - if (ret == 0) { - ret = wc_Sha3_384_Final(&sha3, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha3_512_Final(NULL, hash), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_512_Final(&sha3, NULL), BAD_FUNC_ARG); wc_Sha3_512_Free(&sha3); - if (ret == 0) { - ret = wc_InitSha3_512(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } - /* Init stack variables. */ - XMEMSET(hash, 0, sizeof(hash)); - XMEMSET(hashRet, 0, sizeof(hashRet)); + ExpectIntEQ(wc_InitSha3_512(&sha3, HEAP_HINT, testDevId), 0); + /* Init stack variables. */ + XMEMSET(hash, 0, sizeof(hash)); + XMEMSET(hashRet, 0, sizeof(hashRet)); + ExpectIntEQ(wc_Sha3_512_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)), 0); + ExpectIntEQ(wc_Sha3_512_GetHash(&sha3, hashRet), 0); + ExpectIntEQ(wc_Sha3_512_Final(&sha3, hash), 0); + ExpectIntEQ(XMEMCMP(hash, hashRet, WC_SHA3_512_DIGEST_SIZE), 0); - ret= wc_Sha3_512_Update(&sha3, (byte*)msg, (word32)XSTRLEN(msg)); - if (ret == 0) { - ret = wc_Sha3_512_GetHash(&sha3, hashRet); - } - if (ret == 0) { - ret = wc_Sha3_512_Final(&sha3, hash); - if (ret == 0 && XMEMCMP(hash, hashRet, WC_SHA3_512_DIGEST_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - /* Test bad args. */ - ret = wc_Sha3_512_GetHash(NULL, hashRet); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_512_GetHash(&sha3, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + /* Test bad args. */ + ExpectIntEQ(wc_Sha3_512_GetHash(NULL, hashRet), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_512_GetHash(&sha3, NULL), BAD_FUNC_ARG); wc_Sha3_512_Free(&sha3); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha3_512_Final */ @@ -15322,61 +13806,35 @@ static int test_wc_Sha3_512_Final(void) */ static int test_wc_Sha3_224_Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_224) wc_Sha3 sha3, sha3Cpy; const char* msg = TEST_STRING; word32 msglen = (word32)TEST_STRING_SZ; byte hash[WC_SHA3_224_DIGEST_SIZE]; byte hashCpy[WC_SHA3_224_DIGEST_SIZE]; - int ret = 0; XMEMSET(hash, 0, sizeof(hash)); XMEMSET(hashCpy, 0, sizeof(hashCpy)); + XMEMSET(&sha3, 0, sizeof(wc_Sha3)); + XMEMSET(&sha3Cpy, 0, sizeof(wc_Sha3)); - ret = wc_InitSha3_224(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitSha3_224(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_InitSha3_224(&sha3Cpy, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_224_Update(&sha3, (byte*)msg, msglen), 0); + ExpectIntEQ(wc_Sha3_224_Copy(&sha3Cpy, &sha3), 0); + ExpectIntEQ(wc_Sha3_224_Final(&sha3, hash), 0); + ExpectIntEQ(wc_Sha3_224_Final(&sha3Cpy, hashCpy), 0); + ExpectIntEQ(XMEMCMP(hash, hashCpy, sizeof(hash)), 0); - ret = wc_InitSha3_224(&sha3Cpy, HEAP_HINT, testDevId); - if (ret != 0) { - wc_Sha3_224_Free(&sha3); - return TEST_FAIL; - } - - ret = wc_Sha3_224_Update(&sha3, (byte*)msg, msglen); - - if (ret == 0) { - ret = wc_Sha3_224_Copy(&sha3Cpy, &sha3); - if (ret == 0) { - ret = wc_Sha3_224_Final(&sha3, hash); - if (ret == 0) { - ret = wc_Sha3_224_Final(&sha3Cpy, hashCpy); - } - } - if (ret == 0 && XMEMCMP(hash, hashCpy, sizeof(hash)) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_Sha3_224_Copy(NULL, &sha3); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_224_Copy(&sha3Cpy, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha3_224_Copy(NULL, &sha3), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_224_Copy(&sha3Cpy, NULL), BAD_FUNC_ARG); - res = TEST_RES_CHECK(ret == 0); + wc_Sha3_224_Free(&sha3); + wc_Sha3_224_Free(&sha3Cpy); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha3_224_Copy */ @@ -15386,61 +13844,35 @@ static int test_wc_Sha3_224_Copy(void) */ static int test_wc_Sha3_256_Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_256) wc_Sha3 sha3, sha3Cpy; const char* msg = TEST_STRING; word32 msglen = (word32)TEST_STRING_SZ; byte hash[WC_SHA3_256_DIGEST_SIZE]; byte hashCpy[WC_SHA3_256_DIGEST_SIZE]; - int ret = 0; XMEMSET(hash, 0, sizeof(hash)); XMEMSET(hashCpy, 0, sizeof(hashCpy)); + XMEMSET(&sha3, 0, sizeof(wc_Sha3)); + XMEMSET(&sha3Cpy, 0, sizeof(wc_Sha3)); - ret = wc_InitSha3_256(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitSha3_256(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_InitSha3_256(&sha3Cpy, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_256_Update(&sha3, (byte*)msg, msglen), 0); + ExpectIntEQ(wc_Sha3_256_Copy(&sha3Cpy, &sha3), 0); + ExpectIntEQ(wc_Sha3_256_Final(&sha3, hash), 0); + ExpectIntEQ(wc_Sha3_256_Final(&sha3Cpy, hashCpy), 0); + ExpectIntEQ(XMEMCMP(hash, hashCpy, sizeof(hash)), 0); - ret = wc_InitSha3_256(&sha3Cpy, HEAP_HINT, testDevId); - if (ret != 0) { - wc_Sha3_256_Free(&sha3); - return TEST_FAIL; - } - - ret = wc_Sha3_256_Update(&sha3, (byte*)msg, msglen); - - if (ret == 0) { - ret = wc_Sha3_256_Copy(&sha3Cpy, &sha3); - if (ret == 0) { - ret = wc_Sha3_256_Final(&sha3, hash); - if (ret == 0) { - ret = wc_Sha3_256_Final(&sha3Cpy, hashCpy); - } - } - if (ret == 0 && XMEMCMP(hash, hashCpy, sizeof(hash)) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_Sha3_256_Copy(NULL, &sha3); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_256_Copy(&sha3Cpy, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha3_256_Copy(NULL, &sha3), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_256_Copy(&sha3Cpy, NULL), BAD_FUNC_ARG); - res = TEST_RES_CHECK(ret == 0); + wc_Sha3_256_Free(&sha3); + wc_Sha3_256_Free(&sha3Cpy); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha3_256_Copy */ @@ -15450,61 +13882,35 @@ static int test_wc_Sha3_256_Copy(void) */ static int test_wc_Sha3_384_Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_384) wc_Sha3 sha3, sha3Cpy; const char* msg = TEST_STRING; word32 msglen = (word32)TEST_STRING_SZ; byte hash[WC_SHA3_384_DIGEST_SIZE]; byte hashCpy[WC_SHA3_384_DIGEST_SIZE]; - int ret = 0; XMEMSET(hash, 0, sizeof(hash)); XMEMSET(hashCpy, 0, sizeof(hashCpy)); + XMEMSET(&sha3, 0, sizeof(wc_Sha3)); + XMEMSET(&sha3Cpy, 0, sizeof(wc_Sha3)); - ret = wc_InitSha3_384(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitSha3_384(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_InitSha3_384(&sha3Cpy, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_384_Update(&sha3, (byte*)msg, msglen), 0); + ExpectIntEQ(wc_Sha3_384_Copy(&sha3Cpy, &sha3), 0); + ExpectIntEQ(wc_Sha3_384_Final(&sha3, hash), 0); + ExpectIntEQ(wc_Sha3_384_Final(&sha3Cpy, hashCpy), 0); + ExpectIntEQ(XMEMCMP(hash, hashCpy, sizeof(hash)), 0); - ret = wc_InitSha3_384(&sha3Cpy, HEAP_HINT, testDevId); - if (ret != 0) { - wc_Sha3_384_Free(&sha3); - return TEST_FAIL; - } - - ret = wc_Sha3_384_Update(&sha3, (byte*)msg, msglen); - - if (ret == 0) { - ret = wc_Sha3_384_Copy(&sha3Cpy, &sha3); - if (ret == 0) { - ret = wc_Sha3_384_Final(&sha3, hash); - if (ret == 0) { - ret = wc_Sha3_384_Final(&sha3Cpy, hashCpy); - } - } - if (ret == 0 && XMEMCMP(hash, hashCpy, sizeof(hash)) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_Sha3_384_Copy(NULL, &sha3); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_384_Copy(&sha3Cpy, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha3_384_Copy(NULL, &sha3), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_384_Copy(&sha3Cpy, NULL), BAD_FUNC_ARG); - res = TEST_RES_CHECK(ret == 0); + wc_Sha3_384_Free(&sha3); + wc_Sha3_384_Free(&sha3Cpy); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha3_384_Copy */ @@ -15513,125 +13919,75 @@ static int test_wc_Sha3_384_Copy(void) */ static int test_wc_Sha3_512_Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_512) wc_Sha3 sha3, sha3Cpy; const char* msg = TEST_STRING; word32 msglen = (word32)TEST_STRING_SZ; byte hash[WC_SHA3_512_DIGEST_SIZE]; byte hashCpy[WC_SHA3_512_DIGEST_SIZE]; - int ret = 0; XMEMSET(hash, 0, sizeof(hash)); XMEMSET(hashCpy, 0, sizeof(hashCpy)); + XMEMSET(&sha3, 0, sizeof(wc_Sha3)); + XMEMSET(&sha3Cpy, 0, sizeof(wc_Sha3)); - ret = wc_InitSha3_512(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitSha3_512(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_InitSha3_512(&sha3Cpy, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_512_Update(&sha3, (byte*)msg, msglen), 0); + ExpectIntEQ(wc_Sha3_512_Copy(&sha3Cpy, &sha3), 0); + ExpectIntEQ(wc_Sha3_512_Final(&sha3, hash), 0); + ExpectIntEQ(wc_Sha3_512_Final(&sha3Cpy, hashCpy), 0); + ExpectIntEQ(XMEMCMP(hash, hashCpy, sizeof(hash)), 0); - ret = wc_InitSha3_512(&sha3Cpy, HEAP_HINT, testDevId); - if (ret != 0) { - wc_Sha3_512_Free(&sha3); - return TEST_FAIL; - } - - ret = wc_Sha3_512_Update(&sha3, (byte*)msg, msglen); - - if (ret == 0) { - ret = wc_Sha3_512_Copy(&sha3Cpy, &sha3); - if (ret == 0) { - ret = wc_Sha3_512_Final(&sha3, hash); - if (ret == 0) { - ret = wc_Sha3_512_Final(&sha3Cpy, hashCpy); - } - } - if (ret == 0 && XMEMCMP(hash, hashCpy, sizeof(hash)) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_Sha3_512_Copy(NULL, &sha3); - if (ret == BAD_FUNC_ARG) { - ret = wc_Sha3_512_Copy(&sha3Cpy, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Sha3_512_Copy(NULL, &sha3), BAD_FUNC_ARG); + ExpectIntEQ(wc_Sha3_512_Copy(&sha3Cpy, NULL), BAD_FUNC_ARG); - res = TEST_RES_CHECK(ret == 0); + wc_Sha3_512_Free(&sha3); + wc_Sha3_512_Free(&sha3Cpy); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha3_512_Copy */ /* * Unit test function for wc_Sha3_GetFlags() */ static int test_wc_Sha3_GetFlags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_SHA3) && defined(WOLFSSL_HASH_FLAGS) wc_Sha3 sha3; word32 flags = 0; - int ret = 0; /* Initialize */ - ret = wc_InitSha3_224(&sha3, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } - if (ret == 0) { - ret = wc_Sha3_GetFlags(&sha3, &flags); - } - if (ret == 0) { - if (flags & WC_HASH_FLAG_ISCOPY) { - ret = 0; - } - } + ExpectIntEQ(wc_InitSha3_224(&sha3, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Sha3_GetFlags(&sha3, &flags), 0); + ExpectTrue((flags & WC_HASH_FLAG_ISCOPY) == 0); wc_Sha3_224_Free(&sha3); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Sha3_GetFlags */ static int test_wc_InitShake256(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHAKE256 wc_Shake shake; - int ret = 0; - ret = wc_InitShake256(&shake, HEAP_HINT, testDevId); + ExpectIntEQ(wc_InitShake256(&shake, HEAP_HINT, testDevId), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_InitShake256(NULL, HEAP_HINT, testDevId); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitShake256(NULL, HEAP_HINT, testDevId), BAD_FUNC_ARG); + wc_Shake256_Free(&shake); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; - -} /* END test_wc_InitSha3 */ + return EXPECT_RESULT(); +} static int testing_wc_Shake256_Update(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHAKE256 wc_Shake shake; byte msg[] = "Everybody's working for the weekend."; @@ -15644,52 +14000,32 @@ static int testing_wc_Shake256_Update(void) word32 msglen = sizeof(msg) - 1; word32 msg2len = sizeof(msg2); word32 msgCmplen = sizeof(msgCmp); - int ret = 0; - ret = wc_InitShake256(&shake, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } - ret = wc_Shake256_Update(&shake, msg, msglen); - if (XMEMCMP(msg, shake.t, msglen) || shake.i != msglen) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_Shake256_Update(&shake, msg2, msg2len); - if (XMEMCMP(shake.t, msgCmp, msgCmplen) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitShake256(&shake, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Shake256_Update(&shake, msg, msglen), 0); + ExpectIntEQ(XMEMCMP(msg, shake.t, msglen), 0); + ExpectTrue(shake.i == msglen); + + ExpectIntEQ(wc_Shake256_Update(&shake, msg2, msg2len), 0); + ExpectIntEQ(XMEMCMP(shake.t, msgCmp, msgCmplen), 0); + /* Pass bad args. */ - if (ret == 0) { - ret = wc_Shake256_Update(NULL, msg2, msg2len); - if (ret == BAD_FUNC_ARG) { - ret = wc_Shake256_Update(&shake, NULL, 5); - } - if (ret == BAD_FUNC_ARG) { - wc_Shake256_Free(&shake); - if (wc_InitShake256(&shake, HEAP_HINT, testDevId)) { - return TEST_FAIL; - } - ret = wc_Shake256_Update(&shake, NULL, 0); - if (ret == 0) { - ret = wc_Shake256_Update(&shake, msg2, msg2len); - } - if (ret == 0 && XMEMCMP(msg2, shake.t, msg2len) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntEQ(wc_Shake256_Update(NULL, msg2, msg2len), BAD_FUNC_ARG); + ExpectIntEQ(wc_Shake256_Update(&shake, NULL, 5), BAD_FUNC_ARG); wc_Shake256_Free(&shake); - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_InitShake256(&shake, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Shake256_Update(&shake, NULL, 0), 0); + ExpectIntEQ(wc_Shake256_Update(&shake, msg2, msg2len), 0); + ExpectIntEQ(XMEMCMP(msg2, shake.t, msg2len), 0); + wc_Shake256_Free(&shake); #endif /* WOLFSSL_SHAKE256 */ - return res; + return EXPECT_RESULT(); } static int test_wc_Shake256_Final(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHAKE256 wc_Shake shake; const char* msg = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnom" @@ -15704,48 +14040,32 @@ static int test_wc_Shake256_Final(void) "\x08\xba\xf1\x9b\xe2\x12\x33\xf3\xde\xbe\x78\xd0\x67" "\x60\xcf\xa5\x51\xee\x1e\x07\x91\x41\xd4"; byte hash[114]; - int ret = 0; /* Init stack variables. */ XMEMSET(hash, 0, sizeof(hash)); - ret = wc_InitShake256(&shake, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitShake256(&shake, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_Shake256_Update(&shake, (byte*)msg, (word32)XSTRLEN(msg)), + 0); + ExpectIntEQ(wc_Shake256_Final(&shake, hash, (word32)sizeof(hash)), 0); + ExpectIntEQ(XMEMCMP(expOut, hash, (word32)sizeof(hash)), 0); - ret= wc_Shake256_Update(&shake, (byte*)msg, (word32)XSTRLEN(msg)); - if (ret == 0) { - ret = wc_Shake256_Final(&shake, hash, (word32)sizeof(hash)); - if (ret == 0 && XMEMCMP(expOut, hash, (word32)sizeof(hash)) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_Shake256_Final(NULL, hash, (word32)sizeof(hash)); - if (ret == 0) { - ret = wc_Shake256_Final(&shake, NULL, (word32)sizeof(hash)); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - wc_Shake256_Free(&shake); + ExpectIntEQ(wc_Shake256_Final(NULL, hash, (word32)sizeof(hash)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Shake256_Final(&shake, NULL, (word32)sizeof(hash)), + BAD_FUNC_ARG); - res = TEST_RES_CHECK(ret == 0); + wc_Shake256_Free(&shake); #endif - return res; + return EXPECT_RESULT(); } /* * Testing wc_Shake256_Copy() */ static int test_wc_Shake256_Copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHAKE256 wc_Shake shake, shakeCpy; const char* msg = TEST_STRING; @@ -15754,61 +14074,34 @@ static int test_wc_Shake256_Copy(void) byte hashCpy[144]; word32 hashLen = sizeof(hash); word32 hashLenCpy = sizeof(hashCpy); - int ret; XMEMSET(hash, 0, sizeof(hash)); XMEMSET(hashCpy, 0, sizeof(hashCpy)); - ret = wc_InitShake256(&shake, HEAP_HINT, testDevId); - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntEQ(wc_InitShake256(&shake, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_InitShake256(&shakeCpy, HEAP_HINT, testDevId), 0); - ret = wc_InitShake256(&shakeCpy, HEAP_HINT, testDevId); - if (ret != 0) { - wc_Shake256_Free(&shake); - return TEST_FAIL; - } + ExpectIntEQ(wc_Shake256_Update(&shake, (byte*)msg, msglen), 0); + ExpectIntEQ(wc_Shake256_Copy(&shakeCpy, &shake), 0); + ExpectIntEQ(wc_Shake256_Final(&shake, hash, hashLen), 0); + ExpectIntEQ(wc_Shake256_Final(&shakeCpy, hashCpy, hashLenCpy), 0); + ExpectIntEQ(XMEMCMP(hash, hashCpy, sizeof(hash)), 0); - ret = wc_Shake256_Update(&shake, (byte*)msg, msglen); - - if (ret == 0) { - ret = wc_Shake256_Copy(&shakeCpy, &shake); - if (ret == 0) { - ret = wc_Shake256_Final(&shake, hash, hashLen); - if (ret == 0) { - ret = wc_Shake256_Final(&shakeCpy, hashCpy, hashLenCpy); - } - } - if (ret == 0 && XMEMCMP(hash, hashCpy, sizeof(hash)) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_Shake256_Copy(NULL, &shake); - if (ret == BAD_FUNC_ARG) { - ret = wc_Shake256_Copy(&shakeCpy, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - wc_Shake256_Free(&shake); + ExpectIntEQ(wc_Shake256_Copy(NULL, &shake), BAD_FUNC_ARG); + ExpectIntEQ(wc_Shake256_Copy(&shakeCpy, NULL), BAD_FUNC_ARG); - res = TEST_RES_CHECK(ret == 0); + wc_Shake256_Free(&shake); + wc_Shake256_Free(&shakeCpy); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Shake256_Copy */ /* * Unit test function for wc_Shake256Hash() */ static int test_wc_Shake256Hash(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_SHAKE256 const byte data[] = { /* Hello World */ 0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f, @@ -15817,13 +14110,10 @@ static int test_wc_Shake256Hash(void) word32 len = sizeof(data); byte hash[144]; word32 hashLen = sizeof(hash); - int ret; - ret = wc_Shake256Hash(data, len, hash, hashLen); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_Shake256Hash(data, len, hash, hashLen), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Shake256Hash */ /* @@ -15831,11 +14121,10 @@ static int test_wc_Shake256Hash(void) */ static int test_wc_Md5HmacSetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && !defined(NO_MD5) Hmac hmac; int ret, times, itr; - int flag = 0; const char* keys[]= { @@ -15845,74 +14134,40 @@ static int test_wc_Md5HmacSetKey(void) #endif "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" }; - times = sizeof(keys) / sizeof(char*); - flag = 0; - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return TEST_FAIL; + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); for (itr = 0; itr < times; itr++) { ret = wc_HmacSetKey(&hmac, WC_MD5, (byte*)keys[itr], - (word32)XSTRLEN(keys[itr])); + (word32)XSTRLEN(keys[itr])); #if defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 5) wc_HmacFree(&hmac); - if (ret == BAD_FUNC_ARG) { - return TEST_SUCCESS; - } - else { - return TEST_FAIL; - } + ExpectIntEQ(ret, BAD_FUNC_ARG); #else - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(ret, 0); #endif } /* Bad args. */ - if (!flag) { - ret = wc_HmacSetKey(NULL, WC_MD5, (byte*)keys[0], - (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, WC_MD5, NULL, (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, 20, (byte*)keys[0], - (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, WC_MD5, (byte*)keys[0], 0); -#ifdef HAVE_FIPS - if (ret != HMAC_MIN_KEYLEN_E) { - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_HmacSetKey(NULL, WC_MD5, (byte*)keys[0], + (word32)XSTRLEN(keys[0])), BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_MD5, NULL, (word32)XSTRLEN(keys[0])), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacSetKey(&hmac, 20, (byte*)keys[0], + (word32)XSTRLEN(keys[0])), BAD_FUNC_ARG); + ret = wc_HmacSetKey(&hmac, WC_MD5, (byte*)keys[0], 0); +#if defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 5) + ExpectIntEQ(ret, BAD_FUNC_ARG); +#elif defined(HAVE_FIPS) + ExpectIntEQ(ret, HMAC_MIN_KEYLEN_E); #else - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(ret, 0); #endif - } wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Md5HmacSetKey */ @@ -15921,11 +14176,10 @@ static int test_wc_Md5HmacSetKey(void) */ static int test_wc_ShaHmacSetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && !defined(NO_SHA) Hmac hmac; int ret, times, itr; - int flag = 0; const char* keys[]= { @@ -15939,62 +14193,32 @@ static int test_wc_ShaHmacSetKey(void) }; times = sizeof(keys) / sizeof(char*); - flag = 0; - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); for (itr = 0; itr < times; itr++) { - ret = wc_HmacSetKey(&hmac, WC_SHA, (byte*)keys[itr], - (word32)XSTRLEN(keys[itr])); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA, (byte*)keys[itr], + (word32)XSTRLEN(keys[itr])), 0); } /* Bad args. */ - if (!flag) { - ret = wc_HmacSetKey(NULL, WC_SHA, (byte*)keys[0], - (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacSetKey(NULL, WC_SHA, (byte*)keys[0], + (word32)XSTRLEN(keys[0])), BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA, NULL, (word32)XSTRLEN(keys[0])), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacSetKey(&hmac, 20, (byte*)keys[0], + (word32)XSTRLEN(keys[0])), BAD_FUNC_ARG); - if (!flag) { - ret = wc_HmacSetKey(&hmac, WC_SHA, NULL, (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, 20, (byte*)keys[0], - (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, WC_SHA, (byte*)keys[0], 0); + ret = wc_HmacSetKey(&hmac, WC_SHA, (byte*)keys[0], 0); #ifdef HAVE_FIPS - if (ret != HMAC_MIN_KEYLEN_E) { - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(ret, HMAC_MIN_KEYLEN_E); #else - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(ret, 0); #endif - } wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ShaHmacSetKey() */ /* @@ -16002,11 +14226,10 @@ static int test_wc_ShaHmacSetKey(void) */ static int test_wc_Sha224HmacSetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && defined(WOLFSSL_SHA224) Hmac hmac; int ret, times, itr; - int flag = 0; const char* keys[]= { @@ -16018,64 +14241,32 @@ static int test_wc_Sha224HmacSetKey(void) "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" "\xAA\xAA\xAA" }; - times = sizeof(keys) / sizeof(char*); - flag = 0; - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); for (itr = 0; itr < times; itr++) { - ret = wc_HmacSetKey(&hmac, WC_SHA224, (byte*)keys[itr], - (word32)XSTRLEN(keys[itr])); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA224, (byte*)keys[itr], + (word32)XSTRLEN(keys[itr])), 0); } /* Bad args. */ - if (!flag) { - ret = wc_HmacSetKey(NULL, WC_SHA224, (byte*)keys[0], - (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, WC_SHA224, NULL, (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, 20, (byte*)keys[0], - (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, WC_SHA224, (byte*)keys[0], 0); + ExpectIntEQ(wc_HmacSetKey(NULL, WC_SHA224, (byte*)keys[0], + (word32)XSTRLEN(keys[0])), BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA224, NULL, (word32)XSTRLEN(keys[0])), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacSetKey(&hmac, 20, (byte*)keys[0], + (word32)XSTRLEN(keys[0])), BAD_FUNC_ARG); + ret = wc_HmacSetKey(&hmac, WC_SHA224, (byte*)keys[0], 0); #ifdef HAVE_FIPS - if (ret != HMAC_MIN_KEYLEN_E) { - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(ret, HMAC_MIN_KEYLEN_E); #else - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(ret, 0); #endif - } wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha224HmacSetKey() */ /* @@ -16083,11 +14274,10 @@ static int test_wc_Sha224HmacSetKey(void) */ static int test_wc_Sha256HmacSetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && !defined(NO_SHA256) Hmac hmac; int ret, times, itr; - int flag = 0; const char* keys[]= { @@ -16099,64 +14289,32 @@ static int test_wc_Sha256HmacSetKey(void) "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" "\xAA\xAA\xAA" }; - times = sizeof(keys) / sizeof(char*); - flag = 0; - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); for (itr = 0; itr < times; itr++) { - ret = wc_HmacSetKey(&hmac, WC_SHA256, (byte*)keys[itr], - (word32)XSTRLEN(keys[itr])); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA256, (byte*)keys[itr], + (word32)XSTRLEN(keys[itr])), 0); } /* Bad args. */ - if (!flag) { - ret = wc_HmacSetKey(NULL, WC_SHA256, (byte*)keys[0], - (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, WC_SHA256, NULL, (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, 20, (byte*)keys[0], - (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, WC_SHA256, (byte*)keys[0], 0); + ExpectIntEQ(wc_HmacSetKey(NULL, WC_SHA256, (byte*)keys[0], + (word32)XSTRLEN(keys[0])), BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA256, NULL, (word32)XSTRLEN(keys[0])), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacSetKey(&hmac, 20, (byte*)keys[0], + (word32)XSTRLEN(keys[0])), BAD_FUNC_ARG); + ret = wc_HmacSetKey(&hmac, WC_SHA256, (byte*)keys[0], 0); #ifdef HAVE_FIPS - if (ret != HMAC_MIN_KEYLEN_E) { - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(ret, HMAC_MIN_KEYLEN_E); #else - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(ret, 0); #endif - } wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha256HmacSetKey() */ @@ -16165,11 +14323,10 @@ static int test_wc_Sha256HmacSetKey(void) */ static int test_wc_Sha384HmacSetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && defined(WOLFSSL_SHA384) Hmac hmac; int ret, times, itr; - int flag = 0; const char* keys[]= { @@ -16181,64 +14338,32 @@ static int test_wc_Sha384HmacSetKey(void) "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" "\xAA\xAA\xAA" }; - times = sizeof(keys) / sizeof(char*); - flag = 0; - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); for (itr = 0; itr < times; itr++) { - ret = wc_HmacSetKey(&hmac, WC_SHA384, (byte*)keys[itr], - (word32)XSTRLEN(keys[itr])); - if (ret != 0) { - flag = ret; - } + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA384, (byte*)keys[itr], + (word32)XSTRLEN(keys[itr])), 0); } /* Bad args. */ - if (!flag) { - ret = wc_HmacSetKey(NULL, WC_SHA384, (byte*)keys[0], - (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, WC_SHA384, NULL, (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, 20, (byte*)keys[0], - (word32)XSTRLEN(keys[0])); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacSetKey(&hmac, WC_SHA384, (byte*)keys[0], 0); + ExpectIntEQ(wc_HmacSetKey(NULL, WC_SHA384, (byte*)keys[0], + (word32)XSTRLEN(keys[0])), BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA384, NULL, (word32)XSTRLEN(keys[0])), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacSetKey(&hmac, 20, (byte*)keys[0], + (word32)XSTRLEN(keys[0])), BAD_FUNC_ARG); + ret = wc_HmacSetKey(&hmac, WC_SHA384, (byte*)keys[0], 0); #ifdef HAVE_FIPS - if (ret != HMAC_MIN_KEYLEN_E) { - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(ret, HMAC_MIN_KEYLEN_E); #else - if (ret != 0) { - flag = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(ret, 0); #endif - } wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha384HmacSetKey() */ @@ -16247,12 +14372,10 @@ static int test_wc_Sha384HmacSetKey(void) */ static int test_wc_Md5HmacUpdate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && !defined(NO_MD5) && !(defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 5)) Hmac hmac; testVector a, b; - int ret; - int flag = 0; #ifdef HAVE_FIPS const char* keys = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"; @@ -16262,62 +14385,26 @@ static int test_wc_Md5HmacUpdate(void) a.input = "what do ya want for nothing?"; a.inLen = XSTRLEN(a.input); - b.input = "Hi There"; b.inLen = XSTRLEN(b.input); - flag = 0; - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - - ret = wc_HmacSetKey(&hmac, WC_MD5, (byte*)keys, (word32)XSTRLEN(keys)); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_MD5, (byte*)keys, + (word32)XSTRLEN(keys)), 0); + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)b.input, (word32)b.inLen), 0); /* Update Hmac. */ - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen), 0); /* Test bad args. */ - if (!flag) { - ret = wc_HmacUpdate(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacUpdate(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacUpdate(&hmac, NULL, (word32)a.inLen), BAD_FUNC_ARG); - if (!flag) { - ret = wc_HmacUpdate(&hmac, NULL, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, 0), 0); wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Md5HmacUpdate */ /* @@ -16325,12 +14412,10 @@ static int test_wc_Md5HmacUpdate(void) */ static int test_wc_ShaHmacUpdate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && !defined(NO_SHA) Hmac hmac; testVector a, b; - int ret; - int flag = 0; #ifdef HAVE_FIPS const char* keys = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"; @@ -16340,62 +14425,26 @@ static int test_wc_ShaHmacUpdate(void) a.input = "what do ya want for nothing?"; a.inLen = XSTRLEN(a.input); - b.input = "Hi There"; b.inLen = XSTRLEN(b.input); - flag = 0; - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - - ret = wc_HmacSetKey(&hmac, WC_SHA, (byte*)keys, (word32)XSTRLEN(keys)); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA, (byte*)keys, + (word32)XSTRLEN(keys)), 0); + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)b.input, (word32)b.inLen), 0); /* Update Hmac. */ - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen), 0); /* Test bad args. */ - if (!flag) { - ret = wc_HmacUpdate(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacUpdate(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacUpdate(&hmac, NULL, (word32)a.inLen), BAD_FUNC_ARG); - if (!flag) { - ret = wc_HmacUpdate(&hmac, NULL, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, 0), 0); wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ShaHmacUpdate */ /* @@ -16403,12 +14452,10 @@ static int test_wc_ShaHmacUpdate(void) */ static int test_wc_Sha224HmacUpdate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && defined(WOLFSSL_SHA224) Hmac hmac; testVector a, b; - int ret; - int flag = 0; #ifdef HAVE_FIPS const char* keys = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"; @@ -16418,62 +14465,26 @@ static int test_wc_Sha224HmacUpdate(void) a.input = "what do ya want for nothing?"; a.inLen = XSTRLEN(a.input); - b.input = "Hi There"; b.inLen = XSTRLEN(b.input); - flag = 0; - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - - ret = wc_HmacSetKey(&hmac, WC_SHA224, (byte*)keys, (word32)XSTRLEN(keys)); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA224, (byte*)keys, + (word32)XSTRLEN(keys)), 0); + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)b.input, (word32)b.inLen), 0); /* Update Hmac. */ - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen), 0); /* Test bad args. */ - if (!flag) { - ret = wc_HmacUpdate(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacUpdate(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacUpdate(&hmac, NULL, (word32)a.inLen), BAD_FUNC_ARG); - if (!flag) { - ret = wc_HmacUpdate(&hmac, NULL, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, 0), 0); wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha224HmacUpdate */ /* @@ -16481,12 +14492,10 @@ static int test_wc_Sha224HmacUpdate(void) */ static int test_wc_Sha256HmacUpdate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && !defined(NO_SHA256) Hmac hmac; testVector a, b; - int ret; - int flag = 0; #ifdef HAVE_FIPS const char* keys = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"; @@ -16496,62 +14505,26 @@ static int test_wc_Sha256HmacUpdate(void) a.input = "what do ya want for nothing?"; a.inLen = XSTRLEN(a.input); - b.input = "Hi There"; b.inLen = XSTRLEN(b.input); - flag = 0; - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - - ret = wc_HmacSetKey(&hmac, WC_SHA256, (byte*)keys, (word32)XSTRLEN(keys)); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA256, (byte*)keys, + (word32)XSTRLEN(keys)), 0); + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)b.input, (word32)b.inLen), 0); /* Update Hmac. */ - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen), 0); /* Test bad args. */ - if (!flag) { - ret = wc_HmacUpdate(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacUpdate(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacUpdate(&hmac, NULL, (word32)a.inLen), BAD_FUNC_ARG); - if (!flag) { - ret = wc_HmacUpdate(&hmac, NULL, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, 0), 0); wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha256HmacUpdate */ /* @@ -16559,12 +14532,10 @@ static int test_wc_Sha256HmacUpdate(void) */ static int test_wc_Sha384HmacUpdate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && defined(WOLFSSL_SHA384) Hmac hmac; testVector a, b; - int ret; - int flag = 0; #ifdef HAVE_FIPS const char* keys = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"; @@ -16574,62 +14545,26 @@ static int test_wc_Sha384HmacUpdate(void) a.input = "what do ya want for nothing?"; a.inLen = XSTRLEN(a.input); - b.input = "Hi There"; b.inLen = XSTRLEN(b.input); - flag = 0; - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - - ret = wc_HmacSetKey(&hmac, WC_SHA384, (byte*)keys, (word32)XSTRLEN(keys)); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)b.input, (word32)b.inLen); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA384, (byte*)keys, + (word32)XSTRLEN(keys)), 0); + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)b.input, (word32)b.inLen), 0); /* Update Hmac. */ - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen), 0); /* Test bad args. */ - if (!flag) { - ret = wc_HmacUpdate(NULL, (byte*)a.input, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacUpdate(NULL, (byte*)a.input, (word32)a.inLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HmacUpdate(&hmac, NULL, (word32)a.inLen), BAD_FUNC_ARG); - if (!flag) { - ret = wc_HmacUpdate(&hmac, NULL, (word32)a.inLen); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, 0); - if (ret != 0) { - flag = ret; - } - } + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, 0), 0); wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha384HmacUpdate */ /* @@ -16638,14 +14573,12 @@ static int test_wc_Sha384HmacUpdate(void) static int test_wc_Md5HmacFinal(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && !defined(NO_MD5) && !(defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 5)) Hmac hmac; byte hash[WC_MD5_DIGEST_SIZE]; testVector a; - int ret; const char* key; - int flag = 0; key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"; a.input = "Hi There"; @@ -16654,60 +14587,22 @@ static int test_wc_Md5HmacFinal(void) a.inLen = XSTRLEN(a.input); a.outLen = XSTRLEN(a.output); - flag = 0; - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - - ret = wc_HmacSetKey(&hmac, WC_MD5, (byte*)key, (word32)XSTRLEN(key)); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_HmacFinal(&hmac, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_MD5_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_MD5, (byte*)key, (word32)XSTRLEN(key)), + 0); + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_HmacFinal(&hmac, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_MD5_DIGEST_SIZE), 0); /* Try bad parameters. */ - if (!flag) { - ret = wc_HmacFinal(NULL, hash); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - + ExpectIntEQ(wc_HmacFinal(NULL, hash), BAD_FUNC_ARG); #ifndef HAVE_FIPS - if (!flag) { - ret = wc_HmacFinal(&hmac, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacFinal(&hmac, NULL), BAD_FUNC_ARG); #endif wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_Md5HmacFinal */ /* @@ -16715,13 +14610,11 @@ static int test_wc_Md5HmacFinal(void) */ static int test_wc_ShaHmacFinal(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && !defined(NO_SHA) Hmac hmac; byte hash[WC_SHA_DIGEST_SIZE]; testVector a; - int ret; - int flag = 0; const char* key; key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" @@ -16732,60 +14625,22 @@ static int test_wc_ShaHmacFinal(void) a.inLen = XSTRLEN(a.input); a.outLen = XSTRLEN(a.output); - flag = 0; - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - - ret = wc_HmacSetKey(&hmac, WC_SHA, (byte*)key, (word32)XSTRLEN(key)); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_HmacFinal(&hmac, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA, (byte*)key, (word32)XSTRLEN(key)), + 0); + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_HmacFinal(&hmac, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA_DIGEST_SIZE), 0); /* Try bad parameters. */ - if (!flag) { - ret = wc_HmacFinal(NULL, hash); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - + ExpectIntEQ(wc_HmacFinal(NULL, hash), BAD_FUNC_ARG); #ifndef HAVE_FIPS - if (!flag) { - ret = wc_HmacFinal(&hmac, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacFinal(&hmac, NULL), BAD_FUNC_ARG); #endif wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_ShaHmacFinal */ @@ -16794,13 +14649,11 @@ static int test_wc_ShaHmacFinal(void) */ static int test_wc_Sha224HmacFinal(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && defined(WOLFSSL_SHA224) Hmac hmac; byte hash[WC_SHA224_DIGEST_SIZE]; testVector a; - int ret; - int flag = 0; const char* key; key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" @@ -16811,59 +14664,22 @@ static int test_wc_Sha224HmacFinal(void) a.inLen = XSTRLEN(a.input); a.outLen = XSTRLEN(a.output); - flag = 0; - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - - ret = wc_HmacSetKey(&hmac, WC_SHA224, (byte*)key, (word32)XSTRLEN(key)); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_HmacFinal(&hmac, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA224_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA224, (byte*)key, + (word32)XSTRLEN(key)), 0); + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_HmacFinal(&hmac, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA224_DIGEST_SIZE), 0); /* Try bad parameters. */ - if (!flag) { - ret = wc_HmacFinal(NULL, hash); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - + ExpectIntEQ(wc_HmacFinal(NULL, hash), BAD_FUNC_ARG); #ifndef HAVE_FIPS - if (!flag) { - ret = wc_HmacFinal(&hmac, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacFinal(&hmac, NULL), BAD_FUNC_ARG); #endif wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha224HmacFinal */ /* @@ -16871,13 +14687,11 @@ static int test_wc_Sha224HmacFinal(void) */ static int test_wc_Sha256HmacFinal(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && !defined(NO_SHA256) Hmac hmac; byte hash[WC_SHA256_DIGEST_SIZE]; testVector a; - int ret; - int flag = 0; const char* key; key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" @@ -16889,59 +14703,22 @@ static int test_wc_Sha256HmacFinal(void) a.inLen = XSTRLEN(a.input); a.outLen = XSTRLEN(a.output); - flag = 0; - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return TEST_FAIL; - - ret = wc_HmacSetKey(&hmac, WC_SHA256, (byte*)key, (word32)XSTRLEN(key)); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_HmacFinal(&hmac, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA256_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA256, (byte*)key, + (word32)XSTRLEN(key)), 0); + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_HmacFinal(&hmac, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA256_DIGEST_SIZE), 0); /* Try bad parameters. */ - if (!flag) { - ret = wc_HmacFinal(NULL, hash); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } - + ExpectIntEQ(wc_HmacFinal(NULL, hash), BAD_FUNC_ARG); #ifndef HAVE_FIPS - if (!flag) { - ret = wc_HmacFinal(&hmac, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacFinal(&hmac, NULL), BAD_FUNC_ARG); #endif wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha256HmacFinal */ /* @@ -16949,13 +14726,11 @@ static int test_wc_Sha256HmacFinal(void) */ static int test_wc_Sha384HmacFinal(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_HMAC) && defined(WOLFSSL_SHA384) Hmac hmac; byte hash[WC_SHA384_DIGEST_SIZE]; testVector a; - int ret; - int flag = 0; const char* key; key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" @@ -16968,58 +14743,22 @@ static int test_wc_Sha384HmacFinal(void) a.inLen = XSTRLEN(a.input); a.outLen = XSTRLEN(a.output); - flag = 0; - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - - ret = wc_HmacSetKey(&hmac, WC_SHA384, (byte*)key, (word32)XSTRLEN(key)); - if (ret != 0) { - flag = ret; - } - - if (!flag) { - ret = wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - ret = wc_HmacFinal(&hmac, hash); - if (ret != 0) { - flag = ret; - } - } - - if (!flag) { - if (XMEMCMP(hash, a.output, WC_SHA384_DIGEST_SIZE) != 0) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacInit(&hmac, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_HmacSetKey(&hmac, WC_SHA384, (byte*)key, + (word32)XSTRLEN(key)), 0); + ExpectIntEQ(wc_HmacUpdate(&hmac, (byte*)a.input, (word32)a.inLen), 0); + ExpectIntEQ(wc_HmacFinal(&hmac, hash), 0); + ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA384_DIGEST_SIZE), 0); /* Try bad parameters. */ - if (!flag) { - ret = wc_HmacFinal(NULL, hash); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacFinal(NULL, hash), BAD_FUNC_ARG); #ifndef HAVE_FIPS - if (!flag) { - ret = wc_HmacFinal(&hmac, NULL); - if (ret != BAD_FUNC_ARG) { - flag = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_HmacFinal(&hmac, NULL), BAD_FUNC_ARG); #endif wc_HmacFree(&hmac); - - res = TEST_RES_CHECK(flag == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Sha384HmacFinal */ @@ -17029,9 +14768,11 @@ static int test_wc_Sha384HmacFinal(void) */ static int test_wc_InitCmac(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_CMAC) && !defined(NO_AES) - Cmac cmac1, cmac2, cmac3; + Cmac cmac1; + Cmac cmac2; + Cmac cmac3; /* AES 128 key. */ byte key1[] = "\x01\x02\x03\x04\x05\x06\x07\x08" "\x09\x10\x11\x12\x13\x14\x15\x16"; @@ -17039,67 +14780,45 @@ static int test_wc_InitCmac(void) byte key2[] = "\x01\x02\x03\x04\x05\x06\x07\x08" "\x09\x01\x11\x12\x13\x14\x15\x16" "\x01\x02\x03\x04\x05\x06\x07\x08"; - /* AES 256 key. */ byte key3[] = "\x01\x02\x03\x04\x05\x06\x07\x08" "\x09\x01\x11\x12\x13\x14\x15\x16" "\x01\x02\x03\x04\x05\x06\x07\x08" "\x09\x01\x11\x12\x13\x14\x15\x16"; - word32 key1Sz = (word32)sizeof(key1) - 1; word32 key2Sz = (word32)sizeof(key2) - 1; word32 key3Sz = (word32)sizeof(key3) - 1; int type = WC_CMAC_AES; - int ret = 0; - -#ifdef WOLFSSL_AES_128 - ret = wc_InitCmac(&cmac1, key1, key1Sz, type, NULL); -#endif -#ifdef WOLFSSL_AES_192 - if (ret == 0) { - wc_AesFree(&cmac1.aes); - ret = wc_InitCmac(&cmac2, key2, key2Sz, type, NULL); - } -#endif -#ifdef WOLFSSL_AES_256 - if (ret == 0) { - wc_AesFree(&cmac2.aes); - ret = wc_InitCmac(&cmac3, key3, key3Sz, type, NULL); - } -#endif - - /* Test bad args. */ - if (ret == 0) { - wc_AesFree(&cmac3.aes); - ret = wc_InitCmac(NULL, key3, key3Sz, type, NULL); - if (ret == BAD_FUNC_ARG) { - ret = wc_InitCmac(&cmac3, NULL, key3Sz, type, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_InitCmac(&cmac3, key3, 0, type, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_InitCmac(&cmac3, key3, key3Sz, 0, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } (void)key1; (void)key1Sz; (void)key2; (void)key2Sz; - (void)cmac1; - (void)cmac2; - res = TEST_RES_CHECK(ret == 0); + XMEMSET(&cmac1, 0, sizeof(Cmac)); + XMEMSET(&cmac2, 0, sizeof(Cmac)); + XMEMSET(&cmac3, 0, sizeof(Cmac)); + +#ifdef WOLFSSL_AES_128 + ExpectIntEQ(wc_InitCmac(&cmac1, key1, key1Sz, type, NULL), 0); +#endif +#ifdef WOLFSSL_AES_192 + wc_AesFree(&cmac1.aes); + ExpectIntEQ(wc_InitCmac(&cmac2, key2, key2Sz, type, NULL), 0); +#endif +#ifdef WOLFSSL_AES_256 + wc_AesFree(&cmac2.aes); + ExpectIntEQ(wc_InitCmac(&cmac3, key3, key3Sz, type, NULL), 0); #endif - return res; + wc_AesFree(&cmac3.aes); + /* Test bad args. */ + ExpectIntEQ(wc_InitCmac(NULL, key3, key3Sz, type, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_InitCmac(&cmac3, NULL, key3Sz, type, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_InitCmac(&cmac3, key3, 0, type, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_InitCmac(&cmac3, key3, key3Sz, 0, NULL), BAD_FUNC_ARG); +#endif + return EXPECT_RESULT(); } /* END test_wc_InitCmac */ @@ -17108,11 +14827,10 @@ static int test_wc_InitCmac(void) */ static int test_wc_CmacUpdate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_CMAC) && !defined(NO_AES) && defined(WOLFSSL_AES_128) Cmac cmac; - byte key[] = - { + byte key[] = { 0x64, 0x4c, 0xbf, 0x12, 0x85, 0x9d, 0xf0, 0x55, 0x7e, 0xa9, 0x1f, 0x08, 0xe0, 0x51, 0xff, 0x27 }; @@ -17121,38 +14839,21 @@ static int test_wc_CmacUpdate(void) "\xb3\x78\xcf\x85\x22\x41\x74\xd9" "\xa0\x97\x39\x71\x62\xf1\x8e\x8f" "\xf4"; - word32 inSz = (word32)sizeof(in) - 1; word32 keySz = (word32)sizeof(key); int type = WC_CMAC_AES; - int ret = 0; - ret = wc_InitCmac(&cmac, key, keySz, type, NULL); - if (ret != 0) { - return ret; - } + XMEMSET(&cmac, 0, sizeof(Cmac)); - ret = wc_CmacUpdate(&cmac, in, inSz); + ExpectIntEQ(wc_InitCmac(&cmac, key, keySz, type, NULL), 0); + ExpectIntEQ(wc_CmacUpdate(&cmac, in, inSz), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_CmacUpdate(NULL, in, inSz); - if (ret == BAD_FUNC_ARG) { - ret = wc_CmacUpdate(&cmac, NULL, 30); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - wc_AesFree(&cmac.aes); - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_CmacUpdate(NULL, in, inSz), BAD_FUNC_ARG); + ExpectIntEQ(wc_CmacUpdate(&cmac, NULL, 30), BAD_FUNC_ARG); + wc_AesFree(&cmac.aes); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_CmacUpdate */ @@ -17161,16 +14862,14 @@ static int test_wc_CmacUpdate(void) */ static int test_wc_CmacFinal(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_CMAC) && !defined(NO_AES) && defined(WOLFSSL_AES_128) Cmac cmac; - byte key[] = - { + byte key[] = { 0x64, 0x4c, 0xbf, 0x12, 0x85, 0x9d, 0xf0, 0x55, 0x7e, 0xa9, 0x1f, 0x08, 0xe0, 0x51, 0xff, 0x27 }; - byte msg[] = - { + byte msg[] = { 0xe2, 0xb4, 0xb6, 0xf9, 0x48, 0x44, 0x02, 0x64, 0x5c, 0x47, 0x80, 0x9e, 0xd5, 0xa8, 0x3a, 0x17, 0xb3, 0x78, 0xcf, 0x85, 0x22, 0x41, 0x74, 0xd9, @@ -17181,8 +14880,7 @@ static int test_wc_CmacFinal(void) * http://csrc.nist.gov/groups/STM/cavp/block-cipher-modes.html#cmac * Per RFC4493 truncation of lsb is possible. */ - byte expMac[] = - { + byte expMac[] = { 0x4e, 0x6e, 0xc5, 0x6f, 0xf9, 0x5d, 0x0e, 0xae, 0x1c, 0xf8, 0x3e, 0xfc, 0xf4, 0x4b, 0xeb }; @@ -17193,43 +14891,22 @@ static int test_wc_CmacFinal(void) word32 badMacSz = 17; int expMacSz = sizeof(expMac); int type = WC_CMAC_AES; - int ret = 0; + XMEMSET(&cmac, 0, sizeof(Cmac)); XMEMSET(mac, 0, macSz); - ret = wc_InitCmac(&cmac, key, keySz, type, NULL); - if (ret != 0) { - return ret; - } - ret = wc_CmacUpdate(&cmac, msg, msgSz); + ExpectIntEQ(wc_InitCmac(&cmac, key, keySz, type, NULL), 0); + ExpectIntEQ(wc_CmacUpdate(&cmac, msg, msgSz), 0); - if (ret == 0) { - ret = wc_CmacFinal(&cmac, mac, &macSz); - if (ret == 0 && XMEMCMP(mac, expMac, expMacSz) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - /* Pass in bad args. */ - if (ret == 0) { - ret = wc_CmacFinal(NULL, mac, &macSz); - if (ret == BAD_FUNC_ARG) { - ret = wc_CmacFinal(&cmac, NULL, &macSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_CmacFinal(&cmac, mac, &badMacSz); - if (ret == BUFFER_E) { - ret = 0; - } - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntEQ(wc_CmacFinal(&cmac, mac, &macSz), 0); + ExpectIntEQ(XMEMCMP(mac, expMac, expMacSz), 0); - res = TEST_RES_CHECK(ret == 0); + /* Pass in bad args. */ + ExpectIntEQ(wc_CmacFinal(NULL, mac, &macSz), BAD_FUNC_ARG); + ExpectIntEQ(wc_CmacFinal(&cmac, NULL, &macSz), BAD_FUNC_ARG); + ExpectIntEQ(wc_CmacFinal(&cmac, mac, &badMacSz), BUFFER_E); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_CmacFinal */ @@ -17238,11 +14915,9 @@ static int test_wc_CmacFinal(void) */ static int test_wc_AesCmacGenerate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_CMAC) && !defined(NO_AES) && defined(WOLFSSL_AES_128) - Cmac cmac; - byte key[] = - { + byte key[] = { 0x26, 0xef, 0x8b, 0x40, 0x34, 0x11, 0x7d, 0x9e, 0xbe, 0xc0, 0xc7, 0xfc, 0x31, 0x08, 0x54, 0x69 }; @@ -17255,77 +14930,36 @@ static int test_wc_AesCmacGenerate(void) word32 macSz = sizeof(mac); word32 msgSz = sizeof(msg) - 1; word32 expMacSz = sizeof(expMac) - 1; - int type = WC_CMAC_AES; - int ret = 0; XMEMSET(mac, 0, macSz); - ret = wc_InitCmac(&cmac, key, keySz, type, NULL); - if (ret != 0) { - return ret; - } + ExpectIntEQ(wc_AesCmacGenerate(mac, &macSz, msg, msgSz, key, keySz), 0); + ExpectIntEQ(XMEMCMP(mac, expMac, expMacSz), 0); - ret = wc_CmacUpdate(&cmac, msg, msgSz); - if (ret != 0) { - return ret; - } - else { - wc_AesFree(&cmac.aes); - } - - ret = wc_AesCmacGenerate(mac, &macSz, msg, msgSz, key, keySz); - if (ret == 0 && XMEMCMP(mac, expMac, expMacSz) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } /* Pass in bad args. */ - if (ret == 0) { - ret = wc_AesCmacGenerate(NULL, &macSz, msg, msgSz, key, keySz); - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCmacGenerate(mac, &macSz, msg, msgSz, NULL, keySz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCmacGenerate(mac, &macSz, msg, msgSz, key, 0); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCmacGenerate(mac, &macSz, NULL, msgSz, key, keySz); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_AesCmacGenerate(NULL, &macSz, msg, msgSz, key, keySz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCmacGenerate(mac, &macSz, msg, msgSz, NULL, keySz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCmacGenerate(mac, &macSz, msg, msgSz, key, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCmacGenerate(mac, &macSz, NULL, msgSz, key, keySz), + BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_AesCmacVerify(mac, macSz, msg, msgSz, key, keySz); - /* Test bad args. */ - if (ret == 0) { - ret = wc_AesCmacVerify(NULL, macSz, msg, msgSz, key, keySz); - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCmacVerify(mac, 0, msg, msgSz, key, keySz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCmacVerify(mac, macSz, msg, msgSz, NULL, keySz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCmacVerify(mac, macSz, msg, msgSz, key, 0); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCmacVerify(mac, macSz, NULL, msgSz, key, keySz); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_AesCmacVerify(mac, macSz, msg, msgSz, key, keySz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_AesCmacVerify(NULL, macSz, msg, msgSz, key, keySz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCmacVerify(mac, 0, msg, msgSz, key, keySz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCmacVerify(mac, macSz, msg, msgSz, NULL, keySz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCmacVerify(mac, macSz, msg, msgSz, key, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCmacVerify(mac, macSz, NULL, msgSz, key, keySz), + BAD_FUNC_ARG); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_AesCmacGenerate */ @@ -17335,10 +14969,9 @@ static int test_wc_AesCmacGenerate(void) */ static int test_wc_AesGcmStream(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_AES) && defined(WOLFSSL_AES_128) && defined(HAVE_AESGCM) && \ defined(WOLFSSL_AESGCM_STREAM) - int ret = 0; int i; WC_RNG rng[1]; Aes aesEnc[1]; @@ -17364,178 +14997,179 @@ static int test_wc_AesGcmStream(void) 0xe0, 0x31, 0x57, 0x60, 0xb7, 0x92, 0xa3, 0x6d }; + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(&aesEnc, 0, sizeof(Aes)); + XMEMSET(&aesDec, 0, sizeof(Aes)); + /* Create a random for generating IV/nonce. */ - AssertIntEQ(wc_InitRng(rng), 0); + ExpectIntEQ(wc_InitRng(rng), 0); /* Initialize data structures. */ - AssertIntEQ(wc_AesInit(aesEnc, NULL, INVALID_DEVID), 0); - AssertIntEQ(wc_AesInit(aesDec, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_AesInit(aesEnc, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_AesInit(aesDec, NULL, INVALID_DEVID), 0); /* BadParameters to streaming init. */ - AssertIntEQ(wc_AesGcmEncryptInit(NULL, NULL, 0, NULL, 0), BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptInit(NULL, NULL, 0, NULL, 0), BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptInit(aesEnc, NULL, AES_128_KEY_SIZE, NULL, 0), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptInit(aesEnc, NULL, 0, NULL, GCM_NONCE_MID_SZ), - BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptInit(NULL, NULL, 0, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptInit(NULL, NULL, 0, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptInit(aesEnc, NULL, AES_128_KEY_SIZE, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptInit(aesEnc, NULL, 0, NULL, GCM_NONCE_MID_SZ), + BAD_FUNC_ARG); /* Bad parameters to encrypt update. */ - AssertIntEQ(wc_AesGcmEncryptUpdate(NULL, NULL, NULL, 0, NULL, 0), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 1, NULL, 0), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, in, 1, NULL, 0), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, out, NULL, 1, NULL, 0), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 0, NULL, 1), - BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptUpdate(NULL, NULL, NULL, 0, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 1, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, in, 1, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, out, NULL, 1, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 0, NULL, 1), + BAD_FUNC_ARG); /* Bad parameters to decrypt update. */ - AssertIntEQ(wc_AesGcmDecryptUpdate(NULL, NULL, NULL, 0, NULL, 0), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 1, NULL, 0), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, in, 1, NULL, 0), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, out, NULL, 1, NULL, 0), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 0, NULL, 1), - BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptUpdate(NULL, NULL, NULL, 0, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 1, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, in, 1, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, out, NULL, 1, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 0, NULL, 1), + BAD_FUNC_ARG); /* Bad parameters to encrypt final. */ - AssertIntEQ(wc_AesGcmEncryptFinal(NULL, NULL, 0), BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmEncryptFinal(NULL, tag, 0), BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmEncryptFinal(NULL, NULL, AES_BLOCK_SIZE), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, 0), BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmEncryptFinal(aesEnc, NULL, AES_BLOCK_SIZE), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE + 1), - BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptFinal(NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptFinal(NULL, tag, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptFinal(NULL, NULL, AES_BLOCK_SIZE), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesEnc, NULL, AES_BLOCK_SIZE), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE + 1), + BAD_FUNC_ARG); /* Bad parameters to decrypt final. */ - AssertIntEQ(wc_AesGcmDecryptFinal(NULL, NULL, 0), BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptFinal(NULL, tag, 0), BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptFinal(NULL, NULL, AES_BLOCK_SIZE), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, 0), BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptFinal(aesDec, NULL, AES_BLOCK_SIZE), - BAD_FUNC_ARG); - AssertIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE + 1), - BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptFinal(NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptFinal(NULL, tag, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptFinal(NULL, NULL, AES_BLOCK_SIZE), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptFinal(aesDec, NULL, AES_BLOCK_SIZE), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE + 1), + BAD_FUNC_ARG); /* Check calling final before setting key fails. */ - AssertIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, sizeof(tag)), MISSING_KEY); - AssertIntEQ(wc_AesGcmEncryptFinal(aesDec, tag, sizeof(tag)), MISSING_KEY); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, sizeof(tag)), MISSING_KEY); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesDec, tag, sizeof(tag)), MISSING_KEY); /* Check calling update before setting key else fails. */ - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 0, aad, 1), - MISSING_KEY); - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 0, aad, 1), - MISSING_KEY); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 0, aad, 1), + MISSING_KEY); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 0, aad, 1), + MISSING_KEY); /* Set key but not IV. */ - AssertIntEQ(wc_AesGcmInit(aesEnc, key, sizeof(key), NULL, 0), 0); - AssertIntEQ(wc_AesGcmInit(aesDec, key, sizeof(key), NULL, 0), 0); + ExpectIntEQ(wc_AesGcmInit(aesEnc, key, sizeof(key), NULL, 0), 0); + ExpectIntEQ(wc_AesGcmInit(aesDec, key, sizeof(key), NULL, 0), 0); /* Check calling final before setting IV fails. */ - AssertIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, sizeof(tag)), MISSING_IV); - AssertIntEQ(wc_AesGcmEncryptFinal(aesDec, tag, sizeof(tag)), MISSING_IV); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, sizeof(tag)), MISSING_IV); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesDec, tag, sizeof(tag)), MISSING_IV); /* Check calling update before setting IV else fails. */ - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 0, aad, 1), - MISSING_IV); - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 0, aad, 1), - MISSING_IV); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 0, aad, 1), + MISSING_IV); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 0, aad, 1), + MISSING_IV); /* Set IV using fixed part IV and external IV APIs. */ - AssertIntEQ(wc_AesGcmSetIV(aesEnc, GCM_NONCE_MID_SZ, iv, AES_IV_FIXED_SZ, - rng), 0); - AssertIntEQ(wc_AesGcmEncryptInit_ex(aesEnc, NULL, 0, ivOut, - GCM_NONCE_MID_SZ), 0); - AssertIntEQ(wc_AesGcmSetExtIV(aesDec, ivOut, GCM_NONCE_MID_SZ), 0); - AssertIntEQ(wc_AesGcmInit(aesDec, NULL, 0, NULL, 0), 0); + ExpectIntEQ(wc_AesGcmSetIV(aesEnc, GCM_NONCE_MID_SZ, iv, AES_IV_FIXED_SZ, + rng), 0); + ExpectIntEQ(wc_AesGcmEncryptInit_ex(aesEnc, NULL, 0, ivOut, + GCM_NONCE_MID_SZ), 0); + ExpectIntEQ(wc_AesGcmSetExtIV(aesDec, ivOut, GCM_NONCE_MID_SZ), 0); + ExpectIntEQ(wc_AesGcmInit(aesDec, NULL, 0, NULL, 0), 0); /* Encrypt and decrypt data. */ - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, out, in, 1, aad, 1), 0); - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, plain, out, 1, aad, 1), 0); - AssertIntEQ(XMEMCMP(plain, in, 1), 0); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, out, in, 1, aad, 1), 0); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, plain, out, 1, aad, 1), 0); + ExpectIntEQ(XMEMCMP(plain, in, 1), 0); /* Finalize and check tag matches. */ - AssertIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE), 0); - AssertIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE), 0); /* Set key and IV through streaming init API. */ - AssertIntEQ(wc_AesGcmInit(aesEnc, key, sizeof(key), iv, AES_IV_SIZE), 0); - AssertIntEQ(wc_AesGcmInit(aesDec, key, sizeof(key), iv, AES_IV_SIZE), 0); + ExpectIntEQ(wc_AesGcmInit(aesEnc, key, sizeof(key), iv, AES_IV_SIZE), 0); + ExpectIntEQ(wc_AesGcmInit(aesDec, key, sizeof(key), iv, AES_IV_SIZE), 0); /* Encrypt/decrypt one block and AAD of one block. */ - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, out, in, AES_BLOCK_SIZE, aad, - AES_BLOCK_SIZE), 0); - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, plain, out, AES_BLOCK_SIZE, aad, - AES_BLOCK_SIZE), 0); - AssertIntEQ(XMEMCMP(plain, in, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, out, in, AES_BLOCK_SIZE, aad, + AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, plain, out, AES_BLOCK_SIZE, aad, + AES_BLOCK_SIZE), 0); + ExpectIntEQ(XMEMCMP(plain, in, AES_BLOCK_SIZE), 0); /* Finalize and check tag matches. */ - AssertIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE), 0); - AssertIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE), 0); /* Set key and IV through streaming init API. */ - AssertIntEQ(wc_AesGcmInit(aesEnc, key, sizeof(key), iv, AES_IV_SIZE), 0); - AssertIntEQ(wc_AesGcmInit(aesDec, key, sizeof(key), iv, AES_IV_SIZE), 0); + ExpectIntEQ(wc_AesGcmInit(aesEnc, key, sizeof(key), iv, AES_IV_SIZE), 0); + ExpectIntEQ(wc_AesGcmInit(aesDec, key, sizeof(key), iv, AES_IV_SIZE), 0); /* No data to encrypt/decrypt one byte of AAD. */ - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 0, aad, 1), 0); - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 0, aad, 1), 0); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 0, aad, 1), 0); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 0, aad, 1), 0); /* Finalize and check tag matches. */ - AssertIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE), 0); - AssertIntEQ(XMEMCMP(tag, expTagAAD1, AES_BLOCK_SIZE), 0); - AssertIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(XMEMCMP(tag, expTagAAD1, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE), 0); /* Set key and IV through streaming init API. */ - AssertIntEQ(wc_AesGcmInit(aesEnc, key, sizeof(key), iv, AES_IV_SIZE), 0); - AssertIntEQ(wc_AesGcmInit(aesDec, key, sizeof(key), iv, AES_IV_SIZE), 0); + ExpectIntEQ(wc_AesGcmInit(aesEnc, key, sizeof(key), iv, AES_IV_SIZE), 0); + ExpectIntEQ(wc_AesGcmInit(aesDec, key, sizeof(key), iv, AES_IV_SIZE), 0); /* Encrypt/decrypt one byte and no AAD. */ - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, out, in, 1, NULL, 0), 0); - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, plain, out, 1, NULL, 0), 0); - AssertIntEQ(XMEMCMP(plain, in, 1), 0); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, out, in, 1, NULL, 0), 0); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, plain, out, 1, NULL, 0), 0); + ExpectIntEQ(XMEMCMP(plain, in, 1), 0); /* Finalize and check tag matches. */ - AssertIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE), 0); - AssertIntEQ(XMEMCMP(tag, expTagPlain1, AES_BLOCK_SIZE), 0); - AssertIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(XMEMCMP(tag, expTagPlain1, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE), 0); /* Set key and IV through streaming init API. */ - AssertIntEQ(wc_AesGcmInit(aesEnc, key, sizeof(key), iv, AES_IV_SIZE), 0); - AssertIntEQ(wc_AesGcmInit(aesDec, key, sizeof(key), iv, AES_IV_SIZE), 0); + ExpectIntEQ(wc_AesGcmInit(aesEnc, key, sizeof(key), iv, AES_IV_SIZE), 0); + ExpectIntEQ(wc_AesGcmInit(aesDec, key, sizeof(key), iv, AES_IV_SIZE), 0); /* Encryption AES is one byte at a time */ for (i = 0; i < (int)sizeof(aad); i++) { - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 0, aad + i, 1), + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, NULL, NULL, 0, aad + i, 1), 0); } for (i = 0; i < (int)sizeof(in); i++) { - AssertIntEQ(wc_AesGcmEncryptUpdate(aesEnc, out + i, in + i, 1, NULL, 0), - 0); + ExpectIntEQ(wc_AesGcmEncryptUpdate(aesEnc, out + i, in + i, 1, NULL, 0), + 0); } /* Decryption AES is two bytes at a time */ for (i = 0; i < (int)sizeof(aad); i += 2) { - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 0, aad + i, 2), + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, NULL, NULL, 0, aad + i, 2), 0); } for (i = 0; i < (int)sizeof(aad); i += 2) { - AssertIntEQ(wc_AesGcmDecryptUpdate(aesDec, plain + i, out + i, 2, NULL, - 0), 0); + ExpectIntEQ(wc_AesGcmDecryptUpdate(aesDec, plain + i, out + i, 2, NULL, + 0), 0); } - AssertIntEQ(XMEMCMP(plain, in, sizeof(in)), 0); + ExpectIntEQ(XMEMCMP(plain, in, sizeof(in)), 0); /* Finalize and check tag matches. */ - AssertIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE), 0); - AssertIntEQ(XMEMCMP(tag, expTag, AES_BLOCK_SIZE), 0); - AssertIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmEncryptFinal(aesEnc, tag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(XMEMCMP(tag, expTag, AES_BLOCK_SIZE), 0); + ExpectIntEQ(wc_AesGcmDecryptFinal(aesDec, tag, AES_BLOCK_SIZE), 0); /* Check streaming encryption can be decrypted with one shot. */ - AssertIntEQ(wc_AesGcmSetKey(aesDec, key, sizeof(key)), 0); - AssertIntEQ(wc_AesGcmDecrypt(aesDec, plain, out, sizeof(in), iv, + ExpectIntEQ(wc_AesGcmSetKey(aesDec, key, sizeof(key)), 0); + ExpectIntEQ(wc_AesGcmDecrypt(aesDec, plain, out, sizeof(in), iv, AES_IV_SIZE, tag, AES_BLOCK_SIZE, aad, sizeof(aad)), 0); - AssertIntEQ(XMEMCMP(plain, in, sizeof(in)), 0); + ExpectIntEQ(XMEMCMP(plain, in, sizeof(in)), 0); wc_AesFree(aesEnc); wc_AesFree(aesDec); wc_FreeRng(rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_AesGcmStream */ @@ -17544,55 +15178,36 @@ static int test_wc_AesGcmStream(void) */ static int test_wc_Des3_SetIV(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_DES3 Des3 des; - int ret = 0; - const byte key[] = - { + const byte key[] = { 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef, 0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10, 0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 }; - - const byte iv[] = - { + const byte iv[] = { 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81 }; - ret = wc_Des3Init(&des, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + XMEMSET(&des, 0, sizeof(Des3)); + + ExpectIntEQ(wc_Des3Init(&des, NULL, INVALID_DEVID), 0); /* DES_ENCRYPTION or DES_DECRYPTION */ - ret = wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION); - - if (ret == 0) { - if (XMEMCMP(iv, des.reg, DES_BLOCK_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION), 0); + ExpectIntEQ(XMEMCMP(iv, des.reg, DES_BLOCK_SIZE), 0); #ifndef HAVE_FIPS /* no sanity checks with FIPS wrapper */ /* Test explicitly wc_Des3_SetIV() */ - if (ret == 0) { - ret = wc_Des3_SetIV(NULL, iv); - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_SetIV(&des, NULL); - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Des3_SetIV(NULL, iv), BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_SetIV(&des, NULL), 0); #endif - wc_Des3Free(&des); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Des3_SetIV */ @@ -17601,56 +15216,38 @@ static int test_wc_Des3_SetIV(void) */ static int test_wc_Des3_SetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_DES3 Des3 des; - int ret = 0; - const byte key[] = - { + const byte key[] = { 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef, 0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10, 0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 }; - - const byte iv[] = - { + const byte iv[] = { 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81 }; - ret = wc_Des3Init(&des, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + XMEMSET(&des, 0, sizeof(Des3)); + + ExpectIntEQ(wc_Des3Init(&des, NULL, INVALID_DEVID), 0); /* DES_ENCRYPTION or DES_DECRYPTION */ - ret = wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION); - if (ret == 0) { - if (XMEMCMP(iv, des.reg, DES_BLOCK_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION), 0); + ExpectIntEQ(XMEMCMP(iv, des.reg, DES_BLOCK_SIZE), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_Des3_SetKey(NULL, key, iv, DES_ENCRYPTION); - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_SetKey(&des, NULL, iv, DES_ENCRYPTION); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_SetKey(&des, key, iv, -1); - } - if (ret == BAD_FUNC_ARG) { - /* Default case. Should return 0. */ - ret = wc_Des3_SetKey(&des, key, NULL, DES_ENCRYPTION); - } - } /* END if ret != 0 */ + ExpectIntEQ(wc_Des3_SetKey(NULL, key, iv, DES_ENCRYPTION), BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_SetKey(&des, NULL, iv, DES_ENCRYPTION), BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_SetKey(&des, key, iv, -1), BAD_FUNC_ARG); + /* Default case. Should return 0. */ + ExpectIntEQ(wc_Des3_SetKey(&des, key, NULL, DES_ENCRYPTION), 0); wc_Des3Free(&des); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Des3_SetKey */ @@ -17660,94 +15257,50 @@ static int test_wc_Des3_SetKey(void) */ static int test_wc_Des3_CbcEncryptDecrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_DES3 Des3 des; - int ret = 0; byte cipher[24]; byte plain[24]; - - const byte key[] = - { + const byte key[] = { 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef, 0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10, 0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 }; - - const byte iv[] = - { + const byte iv[] = { 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81 }; - const byte vector[] = { /* "Now is the time for all " w/o trailing 0 */ 0x4e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 }; - ret = wc_Des3Init(&des, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + XMEMSET(&des, 0, sizeof(Des3)); - ret = wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION); + ExpectIntEQ(wc_Des3Init(&des, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION), 0); - if (ret == 0) { - ret = wc_Des3_CbcEncrypt(&des, cipher, vector, 24); - - if (ret == 0) { - ret = wc_Des3_SetKey(&des, key, iv, DES_DECRYPTION); - } - if (ret == 0) { - ret = wc_Des3_CbcDecrypt(&des, plain, cipher, 24); - } - } - - if (ret == 0) { - if (XMEMCMP(plain, vector, 24) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Des3_CbcEncrypt(&des, cipher, vector, 24), 0); + ExpectIntEQ(wc_Des3_SetKey(&des, key, iv, DES_DECRYPTION), 0); + ExpectIntEQ(wc_Des3_CbcDecrypt(&des, plain, cipher, 24), 0); + ExpectIntEQ(XMEMCMP(plain, vector, 24), 0); /* Pass in bad args. */ - if (ret == 0) { - ret = wc_Des3_CbcEncrypt(NULL, cipher, vector, 24); - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_CbcEncrypt(&des, NULL, vector, 24); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_CbcEncrypt(&des, cipher, NULL, sizeof(vector)); - } - if (ret != BAD_FUNC_ARG) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } + ExpectIntEQ(wc_Des3_CbcEncrypt(NULL, cipher, vector, 24), BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_CbcEncrypt(&des, NULL, vector, 24), BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_CbcEncrypt(&des, cipher, NULL, sizeof(vector)), + BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_Des3_CbcDecrypt(NULL, plain, cipher, 24); - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_CbcDecrypt(&des, NULL, cipher, 24); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_CbcDecrypt(&des, plain, NULL, 24); - } - if (ret != BAD_FUNC_ARG) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } + ExpectIntEQ(wc_Des3_CbcDecrypt(NULL, plain, cipher, 24), BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_CbcDecrypt(&des, NULL, cipher, 24), BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_CbcDecrypt(&des, plain, NULL, 24), BAD_FUNC_ARG); wc_Des3Free(&des); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END wc_Des3_CbcEncrypt */ @@ -17756,166 +15309,101 @@ static int test_wc_Des3_CbcEncryptDecrypt(void) */ static int test_wc_Des3_CbcEncryptDecryptWithKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_DES3 - int ret = 0; word32 vectorSz, cipherSz; byte cipher[24]; byte plain[24]; - - byte vector[] = /* Now is the time for all w/o trailing 0 */ - { + byte vector[] = { /* Now is the time for all w/o trailing 0 */ 0x4e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 }; - - byte key[] = - { + byte key[] = { 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef, 0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10, 0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 }; - - byte iv[] = - { + byte iv[] = { 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81 }; - vectorSz = sizeof(byte) * 24; cipherSz = sizeof(byte) * 24; - ret = wc_Des3_CbcEncryptWithKey(cipher, vector, vectorSz, key, iv); - if (ret == 0) { - ret = wc_Des3_CbcDecryptWithKey(plain, cipher, cipherSz, key, iv); - if (ret == 0) { - if (XMEMCMP(plain, vector, 24) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntEQ(wc_Des3_CbcEncryptWithKey(cipher, vector, vectorSz, key, iv), + 0); + ExpectIntEQ(wc_Des3_CbcDecryptWithKey(plain, cipher, cipherSz, key, iv), 0); + ExpectIntEQ(XMEMCMP(plain, vector, 24), 0); /* pass in bad args. */ - if (ret == 0) { - ret = wc_Des3_CbcEncryptWithKey(NULL, vector, vectorSz, key, iv); - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_CbcEncryptWithKey(cipher, NULL, vectorSz, key, iv); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_CbcEncryptWithKey(cipher, vector, vectorSz, NULL, iv); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_CbcEncryptWithKey(cipher, vector, vectorSz, - key, NULL); - } - else { - /* Return code catch. */ - ret = WOLFSSL_FAILURE; - } - } + ExpectIntEQ(wc_Des3_CbcEncryptWithKey(NULL, vector, vectorSz, key, iv), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_CbcEncryptWithKey(cipher, NULL, vectorSz, key, iv), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_CbcEncryptWithKey(cipher, vector, vectorSz, NULL, iv), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_CbcEncryptWithKey(cipher, vector, vectorSz, key, NULL), + 0); - if (ret == 0) { - ret = wc_Des3_CbcDecryptWithKey(NULL, cipher, cipherSz, key, iv); - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_CbcDecryptWithKey(plain, NULL, cipherSz, key, iv); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_CbcDecryptWithKey(plain, cipher, cipherSz, NULL, iv); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_Des3_CbcDecryptWithKey(plain, cipher, cipherSz, key, NULL); - } - else { - ret = WOLFSSL_FAILURE; - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_Des3_CbcDecryptWithKey(NULL, cipher, cipherSz, key, iv), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_CbcDecryptWithKey(plain, NULL, cipherSz, key, iv), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_CbcDecryptWithKey(plain, cipher, cipherSz, NULL, iv), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_CbcDecryptWithKey(plain, cipher, cipherSz, key, NULL), + 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Des3_CbcEncryptDecryptWithKey */ /* * Unit test for wc_Des3_EcbEncrypt */ static int test_wc_Des3_EcbEncrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DES3) && defined(WOLFSSL_DES_ECB) Des3 des; - int ret = 0; byte cipher[24]; word32 cipherSz = sizeof(cipher); - - const byte key[] = - { + const byte key[] = { 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef, 0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10, 0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 }; - - const byte iv[] = - { + const byte iv[] = { 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81 }; - const byte vector[] = { /* "Now is the time for all " w/o trailing 0 */ 0x4e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 }; - ret = wc_Des3Init(&des, NULL, INVALID_DEVID); - if (ret != 0) { - return ret; - } - if (ret == 0 ) { - ret = wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION); - } - /* Bad Cases */ - if (ret == 0) { - ret = wc_Des3_EcbEncrypt(NULL, cipher, vector, cipherSz); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Des3_EcbEncrypt(&des, 0, vector, cipherSz); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Des3_EcbEncrypt(&des, cipher, NULL, cipherSz); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Des3_EcbEncrypt(&des, cipher, vector, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Des3_EcbEncrypt(NULL, 0, NULL, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - /* Good Cases */ - if (ret == 0) { - ret = wc_Des3_EcbEncrypt(&des, cipher, vector, cipherSz); - } - wc_Des3Free(&des); + XMEMSET(&des, 0, sizeof(Des3)); - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_Des3Init(&des, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION), 0); + + /* Bad Cases */ + ExpectIntEQ(wc_Des3_EcbEncrypt(NULL, 0, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_EcbEncrypt(NULL, cipher, vector, cipherSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_EcbEncrypt(&des, 0, vector, cipherSz), BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_EcbEncrypt(&des, cipher, NULL, cipherSz), BAD_FUNC_ARG); + ExpectIntEQ(wc_Des3_EcbEncrypt(&des, cipher, vector, 0), 0); + + /* Good Cases */ + ExpectIntEQ(wc_Des3_EcbEncrypt(&des, cipher, vector, cipherSz), 0); + + wc_Des3Free(&des); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Des3_EcbEncrypt */ /* @@ -17923,51 +15411,28 @@ static int test_wc_Des3_EcbEncrypt(void) */ static int test_wc_Chacha_SetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_CHACHA - ChaCha ctx; - const byte key[] = - { + ChaCha ctx; + const byte key[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01 }; - byte cipher[128]; - int ret = 0; + word32 keySz = (word32)(sizeof(key)/sizeof(byte)); + byte cipher[128]; - ret = wc_Chacha_SetKey(&ctx, key, (word32)(sizeof(key)/sizeof(byte))); + ExpectIntEQ(wc_Chacha_SetKey(&ctx, key, keySz), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_Chacha_SetKey(NULL, key, (word32)(sizeof(key)/sizeof(byte))); - if (ret == BAD_FUNC_ARG) { - ret = wc_Chacha_SetKey(&ctx, key, 18); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Chacha_SetKey(NULL, key, keySz), BAD_FUNC_ARG); + ExpectIntEQ(wc_Chacha_SetKey(&ctx, key, 18), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_Chacha_SetIV(&ctx, cipher, 0); - } - if (ret == 0) { - /* Test bad args. */ - ret = wc_Chacha_SetIV(NULL, cipher, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FAILURE; - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_Chacha_SetIV(&ctx, cipher, 0), 0); + /* Test bad args. */ + ExpectIntEQ(wc_Chacha_SetIV(NULL, cipher, 0), BAD_FUNC_ARG); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Chacha_SetKey */ /* @@ -17975,9 +15440,9 @@ static int test_wc_Chacha_SetKey(void) */ static int test_wc_Poly1305SetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_POLY1305 - Poly1305 ctx; + Poly1305 ctx; const byte key[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, @@ -17985,29 +15450,16 @@ static int test_wc_Poly1305SetKey(void) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01 }; - int ret = 0; + word32 keySz = (word32)(sizeof(key)/sizeof(byte)); + + ExpectIntEQ(wc_Poly1305SetKey(&ctx, key, keySz), 0); - ret = wc_Poly1305SetKey(&ctx, key, (word32)(sizeof(key)/sizeof(byte))); /* Test bad args. */ - if (ret == 0) { - ret = wc_Poly1305SetKey(NULL, key, (word32)(sizeof(key)/sizeof(byte))); - if (ret == BAD_FUNC_ARG) { - ret = wc_Poly1305SetKey(&ctx, NULL, (word32)(sizeof(key)/sizeof(byte))); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_Poly1305SetKey(&ctx, key, 18); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_Poly1305SetKey(NULL, key,keySz), BAD_FUNC_ARG); + ExpectIntEQ(wc_Poly1305SetKey(&ctx, NULL, keySz), BAD_FUNC_ARG); + ExpectIntEQ(wc_Poly1305SetKey(&ctx, key, 18), BAD_FUNC_ARG); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Poly1305_SetKey() */ /* @@ -18015,7 +15467,7 @@ static int test_wc_Poly1305SetKey(void) */ static int test_wc_Chacha_Process(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_CHACHA ChaCha enc, dec; byte cipher[128]; @@ -18030,47 +15482,35 @@ static int test_wc_Chacha_Process(void) const char* input = "Everybody gets Friday off."; word32 keySz = sizeof(key)/sizeof(byte); unsigned long int inlen = XSTRLEN(input); - int ret = 0; - /*Initialize stack varialbes.*/ + /* Initialize stack varialbes.*/ XMEMSET(cipher, 0, 128); XMEMSET(plain, 0, 128); - ret = wc_Chacha_SetKey(&enc, key, keySz); - AssertIntEQ(ret, 0); - ret = wc_Chacha_SetKey(&dec, key, keySz); - AssertIntEQ(ret, 0); - ret = wc_Chacha_SetIV(&enc, cipher, 0); - AssertIntEQ(ret, 0); - ret = wc_Chacha_SetIV(&dec, cipher, 0); - AssertIntEQ(ret, 0); + ExpectIntEQ(wc_Chacha_SetKey(&enc, key, keySz), 0); + ExpectIntEQ(wc_Chacha_SetKey(&dec, key, keySz), 0); + ExpectIntEQ(wc_Chacha_SetIV(&enc, cipher, 0), 0); + ExpectIntEQ(wc_Chacha_SetIV(&dec, cipher, 0), 0); - ret = wc_Chacha_Process(&enc, cipher, (byte*)input, (word32)inlen); - AssertIntEQ(ret, 0); - ret = wc_Chacha_Process(&dec, plain, cipher, (word32)inlen); - AssertIntEQ(ret, 0); - ret = XMEMCMP(input, plain, (int)inlen); - AssertIntEQ(ret, 0); + ExpectIntEQ(wc_Chacha_Process(&enc, cipher, (byte*)input, (word32)inlen), + 0); + ExpectIntEQ(wc_Chacha_Process(&dec, plain, cipher, (word32)inlen), 0); + ExpectIntEQ(XMEMCMP(input, plain, (int)inlen), 0); #if !defined(USE_INTEL_CHACHA_SPEEDUP) && !defined(WOLFSSL_ARMASM) /* test checking and using leftovers, currently just in C code */ - ret = wc_Chacha_SetIV(&enc, cipher, 0); - AssertIntEQ(ret, 0); - ret = wc_Chacha_SetIV(&dec, cipher, 0); - AssertIntEQ(ret, 0); + ExpectIntEQ(wc_Chacha_SetIV(&enc, cipher, 0), 0); + ExpectIntEQ(wc_Chacha_SetIV(&dec, cipher, 0), 0); - ret = wc_Chacha_Process(&enc, cipher, (byte*)input, (word32)inlen - 2); - AssertIntEQ(ret, 0); - ret = wc_Chacha_Process(&enc, cipher + (inlen - 2), - (byte*)input + (inlen - 2), 2); - AssertIntEQ(ret, 0); - ret = wc_Chacha_Process(&dec, plain, (byte*)cipher, (word32)inlen - 2); - AssertIntEQ(ret, 0); - ret = wc_Chacha_Process(&dec, cipher + (inlen - 2), - (byte*)input + (inlen - 2), 2); - AssertIntEQ(ret, 0); - ret = XMEMCMP(input, plain, (int)inlen); - AssertIntEQ(ret, 0); + ExpectIntEQ(wc_Chacha_Process(&enc, cipher, (byte*)input, + (word32)inlen - 2), 0); + ExpectIntEQ(wc_Chacha_Process(&enc, cipher + (inlen - 2), + (byte*)input + (inlen - 2), 2), 0); + ExpectIntEQ(wc_Chacha_Process(&dec, plain, (byte*)cipher, + (word32)inlen - 2), 0); + ExpectIntEQ(wc_Chacha_Process(&dec, cipher + (inlen - 2), + (byte*)input + (inlen - 2), 2), 0); + ExpectIntEQ(XMEMCMP(input, plain, (int)inlen), 0); /* check edge cases with counter increment */ { @@ -18119,38 +15559,28 @@ static int test_wc_Chacha_Process(void) for (i = 0; i < 256; i++) input2[i] = i; - ret = wc_Chacha_SetIV(&enc, iv2, 0); - AssertIntEQ(ret, 0); + ExpectIntEQ(wc_Chacha_SetIV(&enc, iv2, 0), 0); - ret = wc_Chacha_Process(&enc, cipher, input2, 64); - AssertIntEQ(ret, 0); - AssertIntEQ(XMEMCMP(expected, cipher, 64), 0); + ExpectIntEQ(wc_Chacha_Process(&enc, cipher, input2, 64), 0); + ExpectIntEQ(XMEMCMP(expected, cipher, 64), 0); - ret = wc_Chacha_Process(&enc, cipher, input2 + 64, 128); - AssertIntEQ(ret, 0); - AssertIntEQ(XMEMCMP(expected + 64, cipher, 128), 0); + ExpectIntEQ(wc_Chacha_Process(&enc, cipher, input2 + 64, 128), 0); + ExpectIntEQ(XMEMCMP(expected + 64, cipher, 128), 0); /* partial */ - ret = wc_Chacha_Process(&enc, cipher, input2 + 192, 32); - AssertIntEQ(ret, 0); - AssertIntEQ(XMEMCMP(expected + 192, cipher, 32), 0); + ExpectIntEQ(wc_Chacha_Process(&enc, cipher, input2 + 192, 32), 0); + ExpectIntEQ(XMEMCMP(expected + 192, cipher, 32), 0); - ret = wc_Chacha_Process(&enc, cipher, input2 + 224, 32); - AssertIntEQ(ret, 0); - AssertIntEQ(XMEMCMP(expected + 224, cipher, 32), 0); + ExpectIntEQ(wc_Chacha_Process(&enc, cipher, input2 + 224, 32), 0); + ExpectIntEQ(XMEMCMP(expected + 224, cipher, 32), 0); } #endif /* Test bad args. */ - ret = wc_Chacha_Process(NULL, cipher, (byte*)input, (word32)inlen); - AssertIntEQ(ret, BAD_FUNC_ARG); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_Chacha_Process(NULL, cipher, (byte*)input, (word32)inlen), + BAD_FUNC_ARG); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Chacha_Process */ /* @@ -18158,7 +15588,7 @@ static int test_wc_Chacha_Process(void) */ static int test_wc_ChaCha20Poly1305_aead(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) const byte key[] = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, @@ -18166,7 +15596,6 @@ static int test_wc_ChaCha20Poly1305_aead(void) 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f }; - const byte plaintext[] = { 0x4c, 0x61, 0x64, 0x69, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x47, 0x65, 0x6e, 0x74, 0x6c, @@ -18184,12 +15613,10 @@ static int test_wc_ChaCha20Poly1305_aead(void) 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x69, 0x74, 0x2e }; - const byte iv[] = { 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 }; - const byte aad[] = { /* additional data */ 0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7 @@ -18218,78 +15645,57 @@ static int test_wc_ChaCha20Poly1305_aead(void) byte generatedCiphertext[272]; byte generatedPlaintext[272]; byte generatedAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]; - int ret = 0; /* Initialize stack variables. */ XMEMSET(generatedCiphertext, 0, 272); XMEMSET(generatedPlaintext, 0, 272); /* Test Encrypt */ - ret = wc_ChaCha20Poly1305_Encrypt(key, iv, aad, sizeof(aad), plaintext, - sizeof(plaintext), generatedCiphertext, generatedAuthTag); - AssertIntEQ(ret, 0); - ret = XMEMCMP(generatedCiphertext, cipher, sizeof(cipher)/sizeof(byte)); - AssertIntEQ(ret, 0); + ExpectIntEQ(wc_ChaCha20Poly1305_Encrypt(key, iv, aad, sizeof(aad), + plaintext, sizeof(plaintext), generatedCiphertext, generatedAuthTag), + 0); + ExpectIntEQ(XMEMCMP(generatedCiphertext, cipher, + sizeof(cipher)/sizeof(byte)), 0); /* Test bad args. */ - ret = wc_ChaCha20Poly1305_Encrypt(NULL, iv, aad, sizeof(aad), plaintext, - sizeof(plaintext), generatedCiphertext, generatedAuthTag); - AssertIntEQ(ret, BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Encrypt(key, NULL, aad, sizeof(aad), - plaintext, sizeof(plaintext), - generatedCiphertext, generatedAuthTag); - AssertIntEQ(ret, BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Encrypt(key, iv, aad, sizeof(aad), NULL, - sizeof(plaintext), generatedCiphertext, generatedAuthTag); - AssertIntEQ(ret, BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Encrypt(key, iv, aad, sizeof(aad), - NULL, sizeof(plaintext), generatedCiphertext, generatedAuthTag); - AssertIntEQ(ret, BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Encrypt(key, iv, aad, sizeof(aad), - plaintext, sizeof(plaintext), NULL, generatedAuthTag); - AssertIntEQ(ret, BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Encrypt(key, iv, aad, sizeof(aad), - plaintext, sizeof(plaintext), generatedCiphertext, NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - (void)ret; /* suppress never read */ - } + ExpectIntEQ(wc_ChaCha20Poly1305_Encrypt(NULL, iv, aad, sizeof(aad), + plaintext, sizeof(plaintext), generatedCiphertext, generatedAuthTag), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ChaCha20Poly1305_Encrypt(key, NULL, aad, sizeof(aad), + plaintext, sizeof(plaintext), generatedCiphertext, generatedAuthTag), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ChaCha20Poly1305_Encrypt(key, iv, aad, sizeof(aad), NULL, + sizeof(plaintext), generatedCiphertext, generatedAuthTag), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ChaCha20Poly1305_Encrypt(key, iv, aad, sizeof(aad), + NULL, sizeof(plaintext), generatedCiphertext, generatedAuthTag), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ChaCha20Poly1305_Encrypt(key, iv, aad, sizeof(aad), + plaintext, sizeof(plaintext), NULL, generatedAuthTag), BAD_FUNC_ARG); + ExpectIntEQ(wc_ChaCha20Poly1305_Encrypt(key, iv, aad, sizeof(aad), + plaintext, sizeof(plaintext), generatedCiphertext, NULL), BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Decrypt(key, iv, aad, sizeof(aad), cipher, - sizeof(cipher), authTag, generatedPlaintext); - AssertIntEQ(ret, 0); - ret = XMEMCMP(generatedPlaintext, plaintext, - sizeof(plaintext)/sizeof(byte)); - AssertIntEQ(ret, 0); + ExpectIntEQ(wc_ChaCha20Poly1305_Decrypt(key, iv, aad, sizeof(aad), cipher, + sizeof(cipher), authTag, generatedPlaintext), 0); + ExpectIntEQ(XMEMCMP(generatedPlaintext, plaintext, + sizeof(plaintext)/sizeof(byte)), 0); /* Test bad args. */ - ret = wc_ChaCha20Poly1305_Decrypt(NULL, iv, aad, sizeof(aad), cipher, - sizeof(cipher), authTag, generatedPlaintext); - AssertIntEQ(ret, BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Decrypt(key, NULL, aad, sizeof(aad), - cipher, sizeof(cipher), authTag, generatedPlaintext); - AssertIntEQ(ret, BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Decrypt(key, iv, aad, sizeof(aad), NULL, - sizeof(cipher), authTag, generatedPlaintext); - AssertIntEQ(ret, BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Decrypt(key, iv, aad, sizeof(aad), cipher, - sizeof(cipher), NULL, generatedPlaintext); - AssertIntEQ(ret, BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Decrypt(key, iv, aad, sizeof(aad), cipher, - sizeof(cipher), authTag, NULL); - AssertIntEQ(ret, BAD_FUNC_ARG); - ret = wc_ChaCha20Poly1305_Decrypt(key, iv, aad, sizeof(aad), NULL, - sizeof(cipher), authTag, generatedPlaintext); - AssertIntEQ(ret, BAD_FUNC_ARG); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_ChaCha20Poly1305_Decrypt(NULL, iv, aad, sizeof(aad), cipher, + sizeof(cipher), authTag, generatedPlaintext), BAD_FUNC_ARG); + ExpectIntEQ(wc_ChaCha20Poly1305_Decrypt(key, NULL, aad, sizeof(aad), + cipher, sizeof(cipher), authTag, generatedPlaintext), BAD_FUNC_ARG); + ExpectIntEQ(wc_ChaCha20Poly1305_Decrypt(key, iv, aad, sizeof(aad), NULL, + sizeof(cipher), authTag, generatedPlaintext), BAD_FUNC_ARG); + ExpectIntEQ(wc_ChaCha20Poly1305_Decrypt(key, iv, aad, sizeof(aad), cipher, + sizeof(cipher), NULL, generatedPlaintext), BAD_FUNC_ARG); + ExpectIntEQ(wc_ChaCha20Poly1305_Decrypt(key, iv, aad, sizeof(aad), cipher, + sizeof(cipher), authTag, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ChaCha20Poly1305_Decrypt(key, iv, aad, sizeof(aad), NULL, + sizeof(cipher), authTag, generatedPlaintext), BAD_FUNC_ARG); #endif - return res; - -} /* END test-wc_ChaCha20Poly1305_EncryptDecrypt */ + return EXPECT_RESULT(); +} /* END test_wc_ChaCha20Poly1305_aead */ /* @@ -18297,78 +15703,38 @@ static int test_wc_ChaCha20Poly1305_aead(void) */ static int test_wc_Rc2SetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WC_RC2 - Rc2 rc2; - byte key40[] = { 0x01, 0x02, 0x03, 0x04, 0x05 }; - byte iv[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; - int ret = 0; + Rc2 rc2; + byte key40[] = { 0x01, 0x02, 0x03, 0x04, 0x05 }; + byte iv[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; /* valid key and IV */ - ret = wc_Rc2SetKey(&rc2, key40, (word32) sizeof(key40) / sizeof(byte), - iv, 40); - if (ret == 0) { - /* valid key, no IV */ - ret = wc_Rc2SetKey(&rc2, key40, (word32) sizeof(key40) / sizeof(byte), - NULL, 40); - } + ExpectIntEQ(wc_Rc2SetKey(&rc2, key40, (word32) sizeof(key40) / sizeof(byte), + iv, 40), 0); + /* valid key, no IV */ + ExpectIntEQ(wc_Rc2SetKey(&rc2, key40, (word32) sizeof(key40) / sizeof(byte), + NULL, 40), 0); /* bad arguments */ - if (ret == 0) { - /* null Rc2 struct */ - ret = wc_Rc2SetKey(NULL, key40, (word32) sizeof(key40) / sizeof(byte), - iv, 40); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* null key */ - ret = wc_Rc2SetKey(&rc2, NULL, (word32) sizeof(key40) / sizeof(byte), - iv, 40); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* key size == 0 */ - ret = wc_Rc2SetKey(&rc2, key40, 0, iv, 40); - if (ret == WC_KEY_SIZE_E) { - ret = 0; - } - } - - if (ret == 0) { - /* key size > 128 */ - ret = wc_Rc2SetKey(&rc2, key40, 129, iv, 40); - if (ret == WC_KEY_SIZE_E) { - ret = 0; - } - } - - if (ret == 0) { - /* effective bits == 0 */ - ret = wc_Rc2SetKey(&rc2, key40, (word32)sizeof(key40) / sizeof(byte), - iv, 0); - if (ret == WC_KEY_SIZE_E) { - ret = 0; - } - } - - if (ret == 0) { - /* effective bits > 1024 */ - ret = wc_Rc2SetKey(&rc2, key40, (word32)sizeof(key40) / sizeof(byte), - iv, 1025); - if (ret == WC_KEY_SIZE_E) { - ret = 0; - } - } - - res = TEST_RES_CHECK(ret == 0); + /* null Rc2 struct */ + ExpectIntEQ(wc_Rc2SetKey(NULL, key40, (word32) sizeof(key40) / sizeof(byte), + iv, 40), BAD_FUNC_ARG); + /* null key */ + ExpectIntEQ(wc_Rc2SetKey(&rc2, NULL, (word32) sizeof(key40) / sizeof(byte), + iv, 40), BAD_FUNC_ARG); + /* key size == 0 */ + ExpectIntEQ(wc_Rc2SetKey(&rc2, key40, 0, iv, 40), WC_KEY_SIZE_E); + /* key size > 128 */ + ExpectIntEQ(wc_Rc2SetKey(&rc2, key40, 129, iv, 40), WC_KEY_SIZE_E); + /* effective bits == 0 */ + ExpectIntEQ(wc_Rc2SetKey(&rc2, key40, (word32)sizeof(key40) / sizeof(byte), + iv, 0), WC_KEY_SIZE_E); + /* effective bits > 1024 */ + ExpectIntEQ(wc_Rc2SetKey(&rc2, key40, (word32)sizeof(key40) / sizeof(byte), + iv, 1025), WC_KEY_SIZE_E); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Rc2SetKey */ /* @@ -18376,46 +15742,34 @@ static int test_wc_Rc2SetKey(void) */ static int test_wc_Rc2SetIV(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WC_RC2 - Rc2 rc2; - byte iv[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; - int ret = 0; + Rc2 rc2; + byte iv[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; /* valid IV */ - ret = wc_Rc2SetIV(&rc2, iv); - if (ret == 0) { - /* valid NULL IV */ - ret = wc_Rc2SetIV(&rc2, NULL); - } + ExpectIntEQ(wc_Rc2SetIV(&rc2, iv), 0); + /* valid NULL IV */ + ExpectIntEQ(wc_Rc2SetIV(&rc2, NULL), 0); /* bad arguments */ - if (ret == 0) { - ret = wc_Rc2SetIV(NULL, iv); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_Rc2SetIV(NULL, iv), BAD_FUNC_ARG); + ExpectIntEQ(wc_Rc2SetIV(NULL, NULL), BAD_FUNC_ARG); #endif - return res; -} /* END test_wc_Rc2SetKey */ + return EXPECT_RESULT(); +} /* END test_wc_Rc2SetIV */ /* - * Testing function for wc_Rc2EcbEncrypt(). + * Testing function for wc_Rc2EcbEncrypt() and wc_Rc2EcbDecrypt(). */ static int test_wc_Rc2EcbEncryptDecrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WC_RC2 - Rc2 rc2; - int ret = 0; + Rc2 rc2; int effectiveKeyBits = 63; - byte cipher[RC2_BLOCK_SIZE]; byte plain[RC2_BLOCK_SIZE]; - byte key[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; byte input[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; byte output[] = { 0xeb, 0xb7, 0x73, 0xf9, 0x93, 0x27, 0x8e, 0xff }; @@ -18423,115 +15777,62 @@ static int test_wc_Rc2EcbEncryptDecrypt(void) XMEMSET(cipher, 0, sizeof(cipher)); XMEMSET(plain, 0, sizeof(plain)); - ret = wc_Rc2SetKey(&rc2, key, (word32) sizeof(key) / sizeof(byte), - NULL, effectiveKeyBits); - if (ret == 0) { - ret = wc_Rc2EcbEncrypt(&rc2, cipher, input, RC2_BLOCK_SIZE); - if (ret != 0 || XMEMCMP(cipher, output, RC2_BLOCK_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_Rc2SetKey(&rc2, key, (word32) sizeof(key) / sizeof(byte), + NULL, effectiveKeyBits), 0); + ExpectIntEQ(wc_Rc2EcbEncrypt(&rc2, cipher, input, RC2_BLOCK_SIZE), 0); + ExpectIntEQ(XMEMCMP(cipher, output, RC2_BLOCK_SIZE), 0); - if (ret == 0) { - ret = wc_Rc2EcbDecrypt(&rc2, plain, cipher, RC2_BLOCK_SIZE); - if (ret != 0 || XMEMCMP(plain, input, RC2_BLOCK_SIZE) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntEQ(wc_Rc2EcbDecrypt(&rc2, plain, cipher, RC2_BLOCK_SIZE), 0); + ExpectIntEQ(XMEMCMP(plain, input, RC2_BLOCK_SIZE), 0); /* Rc2EcbEncrypt bad arguments */ - if (ret == 0) { - /* null Rc2 struct */ - ret = wc_Rc2EcbEncrypt(NULL, cipher, input, RC2_BLOCK_SIZE); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* null out buffer */ - ret = wc_Rc2EcbEncrypt(&rc2, NULL, input, RC2_BLOCK_SIZE); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* null input buffer */ - ret = wc_Rc2EcbEncrypt(&rc2, cipher, NULL, RC2_BLOCK_SIZE); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* output buffer sz != RC2_BLOCK_SIZE (8) */ - ret = wc_Rc2EcbEncrypt(&rc2, cipher, input, 7); - if (ret == BUFFER_E) { - ret = 0; - } - } + /* null Rc2 struct */ + ExpectIntEQ(wc_Rc2EcbEncrypt(NULL, cipher, input, RC2_BLOCK_SIZE), + BAD_FUNC_ARG); + /* null out buffer */ + ExpectIntEQ(wc_Rc2EcbEncrypt(&rc2, NULL, input, RC2_BLOCK_SIZE), + BAD_FUNC_ARG); + /* null input buffer */ + ExpectIntEQ(wc_Rc2EcbEncrypt(&rc2, cipher, NULL, RC2_BLOCK_SIZE), + BAD_FUNC_ARG); + /* output buffer sz != RC2_BLOCK_SIZE (8) */ + ExpectIntEQ(wc_Rc2EcbEncrypt(&rc2, cipher, input, 7), BUFFER_E); /* Rc2EcbDecrypt bad arguments */ - if (ret == 0) { - /* null Rc2 struct */ - ret = wc_Rc2EcbDecrypt(NULL, plain, output, RC2_BLOCK_SIZE); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* null out buffer */ - ret = wc_Rc2EcbDecrypt(&rc2, NULL, output, RC2_BLOCK_SIZE); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* null input buffer */ - ret = wc_Rc2EcbDecrypt(&rc2, plain, NULL, RC2_BLOCK_SIZE); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* output buffer sz != RC2_BLOCK_SIZE (8) */ - ret = wc_Rc2EcbDecrypt(&rc2, plain, output, 7); - if (ret == BUFFER_E) { - ret = 0; - } - } - - res = TEST_RES_CHECK(ret == 0); + /* null Rc2 struct */ + ExpectIntEQ(wc_Rc2EcbDecrypt(NULL, plain, output, RC2_BLOCK_SIZE), + BAD_FUNC_ARG); + /* null out buffer */ + ExpectIntEQ(wc_Rc2EcbDecrypt(&rc2, NULL, output, RC2_BLOCK_SIZE), + BAD_FUNC_ARG); + /* null input buffer */ + ExpectIntEQ(wc_Rc2EcbDecrypt(&rc2, plain, NULL, RC2_BLOCK_SIZE), + BAD_FUNC_ARG); + /* output buffer sz != RC2_BLOCK_SIZE (8) */ + ExpectIntEQ(wc_Rc2EcbDecrypt(&rc2, plain, output, 7), BUFFER_E); #endif - return res; -} /* END test_wc_Rc2SetKey */ + return EXPECT_RESULT(); +} /* END test_wc_Rc2EcbEncryptDecrypt */ /* - * Testing function for wc_Rc2CbcEncrypt(). + * Testing function for wc_Rc2CbcEncrypt() and wc_Rc2CbcDecrypt(). */ static int test_wc_Rc2CbcEncryptDecrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WC_RC2 - Rc2 rc2; - int ret = 0; + Rc2 rc2; int effectiveKeyBits = 63; - byte cipher[RC2_BLOCK_SIZE*2]; byte plain[RC2_BLOCK_SIZE*2]; - /* vector taken from test.c */ - byte key[] = { + byte key[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; byte iv[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - byte input[] = { + byte input[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; @@ -18543,88 +15844,42 @@ static int test_wc_Rc2CbcEncryptDecrypt(void) XMEMSET(cipher, 0, sizeof(cipher)); XMEMSET(plain, 0, sizeof(plain)); - ret = wc_Rc2SetKey(&rc2, key, (word32) sizeof(key) / sizeof(byte), - iv, effectiveKeyBits); - if (ret == 0) { - ret = wc_Rc2CbcEncrypt(&rc2, cipher, input, sizeof(input)); - if (ret != 0 || XMEMCMP(cipher, output, sizeof(output)) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - /* reset IV for decrypt */ - ret = wc_Rc2SetIV(&rc2, iv); - } + ExpectIntEQ(wc_Rc2SetKey(&rc2, key, (word32) sizeof(key) / sizeof(byte), + iv, effectiveKeyBits), 0); + ExpectIntEQ(wc_Rc2CbcEncrypt(&rc2, cipher, input, sizeof(input)), 0); + ExpectIntEQ(XMEMCMP(cipher, output, sizeof(output)), 0); - if (ret == 0) { - ret = wc_Rc2CbcDecrypt(&rc2, plain, cipher, sizeof(cipher)); - if (ret != 0 || XMEMCMP(plain, input, sizeof(input)) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + /* reset IV for decrypt */ + ExpectIntEQ(wc_Rc2SetIV(&rc2, iv), 0); + ExpectIntEQ(wc_Rc2CbcDecrypt(&rc2, plain, cipher, sizeof(cipher)), 0); + ExpectIntEQ(XMEMCMP(plain, input, sizeof(input)), 0); /* Rc2CbcEncrypt bad arguments */ - if (ret == 0) { - /* null Rc2 struct */ - ret = wc_Rc2CbcEncrypt(NULL, cipher, input, sizeof(input)); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* null out buffer */ - ret = wc_Rc2CbcEncrypt(&rc2, NULL, input, sizeof(input)); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* null input buffer */ - ret = wc_Rc2CbcEncrypt(&rc2, cipher, NULL, sizeof(input)); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + /* null Rc2 struct */ + ExpectIntEQ(wc_Rc2CbcEncrypt(NULL, cipher, input, sizeof(input)), + BAD_FUNC_ARG); + /* null out buffer */ + ExpectIntEQ(wc_Rc2CbcEncrypt(&rc2, NULL, input, sizeof(input)), + BAD_FUNC_ARG); + /* null input buffer */ + ExpectIntEQ(wc_Rc2CbcEncrypt(&rc2, cipher, NULL, sizeof(input)), + BAD_FUNC_ARG); /* Rc2CbcDecrypt bad arguments */ - if (ret == 0) { - /* in size is 0 */ - ret = wc_Rc2CbcDecrypt(&rc2, plain, output, 0); - if (ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - - if (ret == 0) { - /* null Rc2 struct */ - ret = wc_Rc2CbcDecrypt(NULL, plain, output, sizeof(output)); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* null out buffer */ - ret = wc_Rc2CbcDecrypt(&rc2, NULL, output, sizeof(output)); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - if (ret == 0) { - /* null input buffer */ - ret = wc_Rc2CbcDecrypt(&rc2, plain, NULL, sizeof(output)); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - - res = TEST_RES_CHECK(ret == 0); + /* in size is 0 */ + ExpectIntEQ(wc_Rc2CbcDecrypt(&rc2, plain, output, 0), 0); + /* null Rc2 struct */ + ExpectIntEQ(wc_Rc2CbcDecrypt(NULL, plain, output, sizeof(output)), + BAD_FUNC_ARG); + /* null out buffer */ + ExpectIntEQ(wc_Rc2CbcDecrypt(&rc2, NULL, output, sizeof(output)), + BAD_FUNC_ARG); + /* null input buffer */ + ExpectIntEQ(wc_Rc2CbcDecrypt(&rc2, plain, NULL, sizeof(output)), + BAD_FUNC_ARG); #endif - return res; -} /* END test_wc_Rc2SetKey */ + return EXPECT_RESULT(); +} /* END test_wc_Rc2CbcEncryptDecrypt */ /* @@ -18678,82 +15933,61 @@ static int test_wc_AesSetIV(void) */ static int test_wc_AesSetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_AES - Aes aes; - int ret = 0; - byte key16[] = - { + Aes aes; + byte key16[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; #ifdef WOLFSSL_AES_192 - byte key24[] = - { + byte key24[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 }; #endif #ifdef WOLFSSL_AES_256 - byte key32[] = - { + byte key32[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; #endif - byte badKey16[] = - { + byte badKey16[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65 }; - byte iv[] = "1234567890abcdef"; + byte iv[] = "1234567890abcdef"; - ret = wc_AesInit(&aes, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + XMEMSET(&aes, 0, sizeof(Aes)); + + ExpectIntEQ(wc_AesInit(&aes, NULL, INVALID_DEVID), 0); #ifdef WOLFSSL_AES_128 - ret = wc_AesSetKey(&aes, key16, (word32) sizeof(key16) / sizeof(byte), - iv, AES_ENCRYPTION); + ExpectIntEQ(wc_AesSetKey(&aes, key16, (word32)sizeof(key16) / sizeof(byte), + iv, AES_ENCRYPTION), 0); #endif #ifdef WOLFSSL_AES_192 - if (ret == 0) { - ret = wc_AesSetKey (&aes, key24, (word32) sizeof(key24) / sizeof(byte), - iv, AES_ENCRYPTION); - } + ExpectIntEQ(wc_AesSetKey(&aes, key24, (word32)sizeof(key24) / sizeof(byte), + iv, AES_ENCRYPTION), 0); #endif #ifdef WOLFSSL_AES_256 - if (ret == 0) { - ret = wc_AesSetKey (&aes, key32, (word32) sizeof(key32) / sizeof(byte), - iv, AES_ENCRYPTION); - } + ExpectIntEQ(wc_AesSetKey(&aes, key32, (word32)sizeof(key32) / sizeof(byte), + iv, AES_ENCRYPTION), 0); #endif /* Pass in bad args. */ - if (ret == 0) { - ret = wc_AesSetKey (NULL, key16, (word32) sizeof(key16) / sizeof(byte), - iv, AES_ENCRYPTION); - if (ret == BAD_FUNC_ARG) { - ret = wc_AesSetKey(&aes, badKey16, - (word32) sizeof(badKey16) / sizeof(byte), - iv, AES_ENCRYPTION); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_AesSetKey(NULL, key16, (word32)sizeof(key16) / sizeof(byte), + iv, AES_ENCRYPTION), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesSetKey(&aes, badKey16, + (word32)sizeof(badKey16) / sizeof(byte), iv, AES_ENCRYPTION), + BAD_FUNC_ARG); wc_AesFree(&aes); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_AesSetKey */ @@ -18764,192 +15998,111 @@ static int test_wc_AesSetKey(void) */ static int test_wc_AesCbcEncryptDecrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_AES) && defined(HAVE_AES_CBC) && defined(HAVE_AES_DECRYPT)&& \ defined(WOLFSSL_AES_256) - Aes aes; - int ret = 0; - byte key32[] = - { + Aes aes; + byte key32[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; - byte vector[] = /* Now is the time for all good men w/o trailing 0 */ - { - 0x4e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, - 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, - 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20, - 0x67,0x6f,0x6f,0x64,0x20,0x6d,0x65,0x6e + byte vector[] = { /* Now is the time for all good men w/o trailing 0 */ + 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, + 0x67, 0x6f, 0x6f, 0x64, 0x20, 0x6d, 0x65, 0x6e }; - byte iv[] = "1234567890abcdef"; + byte iv[] = "1234567890abcdef"; byte enc[sizeof(vector)]; byte dec[sizeof(vector)]; - int cbcE = WOLFSSL_FATAL_ERROR; - int cbcD = WOLFSSL_FATAL_ERROR; - int cbcDWK = WOLFSSL_FATAL_ERROR; byte dec2[sizeof(vector)]; /* Init stack variables. */ + XMEMSET(&aes, 0, sizeof(Aes)); XMEMSET(enc, 0, sizeof(enc)); XMEMSET(dec, 0, sizeof(vector)); XMEMSET(dec2, 0, sizeof(vector)); - ret = wc_AesInit(&aes, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - - ret = wc_AesSetKey(&aes, key32, AES_BLOCK_SIZE * 2, iv, AES_ENCRYPTION); - if (ret == 0) { - ret = wc_AesCbcEncrypt(&aes, enc, vector, sizeof(vector)); - if (ret == 0) { - /* Re init for decrypt and set flag. */ - cbcE = 0; - wc_AesFree(&aes); - ret = wc_AesSetKey(&aes, key32, AES_BLOCK_SIZE * 2, - iv, AES_DECRYPTION); - } - if (ret == 0) { - ret = wc_AesCbcDecrypt(&aes, dec, enc, sizeof(vector)); - if (ret != 0 || XMEMCMP(vector, dec, sizeof(vector)) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - /* Set flag. */ - cbcD = 0; - } - } - } - /* If encrypt succeeds but cbc decrypt fails, we can still test. */ - if (ret == 0 || cbcE == 0) { - ret = wc_AesCbcDecryptWithKey(dec2, enc, AES_BLOCK_SIZE, - key32, sizeof(key32)/sizeof(byte), iv); - if (ret == 0 || XMEMCMP(vector, dec2, AES_BLOCK_SIZE) == 0) { - cbcDWK = 0; - } - } - - /* Pass in bad args */ - if (cbcE == 0) { - cbcE = wc_AesCbcEncrypt(NULL, enc, vector, sizeof(vector)); - if (cbcE == BAD_FUNC_ARG) { - cbcE = wc_AesCbcEncrypt(&aes, NULL, vector, sizeof(vector)); - } - if (cbcE == BAD_FUNC_ARG) { - cbcE = wc_AesCbcEncrypt(&aes, enc, NULL, sizeof(vector)); - } - if (cbcE == BAD_FUNC_ARG) { - cbcE = 0; - } - else { - cbcE = WOLFSSL_FATAL_ERROR; - } -#ifdef WOLFSSL_AES_CBC_LENGTH_CHECKS - if (cbcE == 0) { - cbcE = wc_AesCbcEncrypt(&aes, enc, vector, sizeof(vector) - 1); - } - if (cbcE == BAD_LENGTH_E) { - cbcE = 0; - } - else { - cbcE = WOLFSSL_FATAL_ERROR; - } -#endif - } - if (cbcE == 0) { - #if defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \ - (HAVE_FIPS_VERSION == 2) && defined(WOLFSSL_AESNI) - fprintf(stderr, "Zero length inputs not supported with AESNI in FIPS " - "mode (v2), skip test"); - #else - /* Test passing in size of 0 */ - XMEMSET(enc, 0, sizeof(enc)); - cbcE = wc_AesCbcEncrypt(&aes, enc, vector, 0); - if (cbcE == 0) { - /* Check enc was not modified */ - int i; - for (i = 0; i < (int)sizeof(enc); i++) - cbcE |= enc[i]; - } - #endif - } - if (cbcE != 0) { - wc_AesFree(&aes); - return TEST_FAIL; - } - - if (cbcD == 0) { - cbcD = wc_AesCbcDecrypt(NULL, dec, enc, AES_BLOCK_SIZE); - if (cbcD == BAD_FUNC_ARG) { - cbcD = wc_AesCbcDecrypt(&aes, NULL, enc, AES_BLOCK_SIZE); - } - if (cbcD == BAD_FUNC_ARG) { - cbcD = wc_AesCbcDecrypt(&aes, dec, NULL, AES_BLOCK_SIZE); - } - if (cbcD == BAD_FUNC_ARG) { - cbcD = wc_AesCbcDecrypt(&aes, dec, enc, AES_BLOCK_SIZE * 2 - 1); - } -#ifdef WOLFSSL_AES_CBC_LENGTH_CHECKS - if (cbcD == BAD_LENGTH_E) { - cbcD = 0; - } - else { - cbcD = WOLFSSL_FATAL_ERROR; - } -#else - if (cbcD == BAD_FUNC_ARG) { - cbcD = 0; - } - else { - cbcD = WOLFSSL_FATAL_ERROR; - } -#endif - } - if (cbcD == 0) { - /* Test passing in size of 0 */ - XMEMSET(dec, 0, sizeof(dec)); - cbcD = wc_AesCbcDecrypt(&aes, dec, enc, 0); - if (cbcD == 0) { - /* Check dec was not modified */ - int i; - for (i = 0; i < (int)sizeof(dec); i++) - cbcD |= dec[i]; - } - } - if (cbcD != 0) { - wc_AesFree(&aes); - return TEST_FAIL; - } - - if (cbcDWK == 0) { - cbcDWK = wc_AesCbcDecryptWithKey(NULL, enc, AES_BLOCK_SIZE, - key32, sizeof(key32)/sizeof(byte), iv); - if (cbcDWK == BAD_FUNC_ARG) { - cbcDWK = wc_AesCbcDecryptWithKey(dec2, NULL, AES_BLOCK_SIZE, - key32, sizeof(key32)/sizeof(byte), iv); - } - if (cbcDWK == BAD_FUNC_ARG) { - cbcDWK = wc_AesCbcDecryptWithKey(dec2, enc, AES_BLOCK_SIZE, - NULL, sizeof(key32)/sizeof(byte), iv); - } - if (cbcDWK == BAD_FUNC_ARG) { - cbcDWK = wc_AesCbcDecryptWithKey(dec2, enc, AES_BLOCK_SIZE, - key32, sizeof(key32)/sizeof(byte), NULL); - } - if (cbcDWK == BAD_FUNC_ARG) { - cbcDWK = 0; - } - else { - cbcDWK = WOLFSSL_FATAL_ERROR; - } - } - + ExpectIntEQ(wc_AesInit(&aes, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_AesSetKey(&aes, key32, AES_BLOCK_SIZE * 2, iv, + AES_ENCRYPTION), 0); + ExpectIntEQ(wc_AesCbcEncrypt(&aes, enc, vector, sizeof(vector)), 0); wc_AesFree(&aes); - res = TEST_RES_CHECK(cbcDWK == 0); + /* Re init for decrypt and set flag. */ + ExpectIntEQ(wc_AesSetKey(&aes, key32, AES_BLOCK_SIZE * 2, iv, + AES_DECRYPTION), 0); + ExpectIntEQ(wc_AesCbcDecrypt(&aes, dec, enc, sizeof(vector)), 0); + ExpectIntEQ(XMEMCMP(vector, dec, sizeof(vector)), 0); + + ExpectIntEQ(wc_AesCbcDecryptWithKey(dec2, enc, AES_BLOCK_SIZE, key32, + sizeof(key32)/sizeof(byte), iv), 0); + ExpectIntEQ(XMEMCMP(vector, dec2, AES_BLOCK_SIZE), 0); + + /* Pass in bad args */ + ExpectIntEQ(wc_AesCbcEncrypt(NULL, enc, vector, sizeof(vector)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCbcEncrypt(&aes, NULL, vector, sizeof(vector)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCbcEncrypt(&aes, enc, NULL, sizeof(vector)), + BAD_FUNC_ARG); +#ifdef WOLFSSL_AES_CBC_LENGTH_CHECKS + ExpectIntEQ(wc_AesCbcEncrypt(&aes, enc, vector, sizeof(vector) - 1), + BAD_LENGTH_E); #endif - return res; +#if defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \ + (HAVE_FIPS_VERSION == 2) && defined(WOLFSSL_AESNI) + fprintf(stderr, "Zero length inputs not supported with AESNI in FIPS " + "mode (v2), skip test"); +#else + /* Test passing in size of 0 */ + XMEMSET(enc, 0, sizeof(enc)); + ExpectIntEQ(wc_AesCbcEncrypt(&aes, enc, vector, 0), 0); + /* Check enc was not modified */ + { + int i; + for (i = 0; i < (int)sizeof(enc); i++) + ExpectIntEQ(enc[i], 0); + } +#endif + + ExpectIntEQ(wc_AesCbcDecrypt(NULL, dec, enc, AES_BLOCK_SIZE), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCbcDecrypt(&aes, NULL, enc, AES_BLOCK_SIZE), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCbcDecrypt(&aes, dec, NULL, AES_BLOCK_SIZE), + BAD_FUNC_ARG); +#ifdef WOLFSSL_AES_CBC_LENGTH_CHECKS + ExpectIntEQ(wc_AesCbcDecrypt(&aes, dec, enc, AES_BLOCK_SIZE * 2 - 1), + BAD_LENGTH_E); +#else + ExpectIntEQ(wc_AesCbcDecrypt(&aes, dec, enc, AES_BLOCK_SIZE * 2 - 1), + BAD_FUNC_ARG); +#endif + + /* Test passing in size of 0 */ + XMEMSET(dec, 0, sizeof(dec)); + ExpectIntEQ(wc_AesCbcDecrypt(&aes, dec, enc, 0), 0); + /* Check dec was not modified */ + { + int i; + for (i = 0; i < (int)sizeof(dec); i++) + ExpectIntEQ(dec[i], 0); + } + + ExpectIntEQ(wc_AesCbcDecryptWithKey(NULL, enc, AES_BLOCK_SIZE, + key32, sizeof(key32)/sizeof(byte), iv), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCbcDecryptWithKey(dec2, NULL, AES_BLOCK_SIZE, + key32, sizeof(key32)/sizeof(byte), iv), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCbcDecryptWithKey(dec2, enc, AES_BLOCK_SIZE, + NULL, sizeof(key32)/sizeof(byte), iv), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCbcDecryptWithKey(dec2, enc, AES_BLOCK_SIZE, + key32, sizeof(key32)/sizeof(byte), NULL), BAD_FUNC_ARG); + + wc_AesFree(&aes); +#endif + return EXPECT_RESULT(); } /* END test_wc_AesCbcEncryptDecrypt */ /* @@ -18957,82 +16110,57 @@ static int test_wc_AesCbcEncryptDecrypt(void) */ static int test_wc_AesCtrEncryptDecrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_AES) && defined(WOLFSSL_AES_COUNTER) && defined(WOLFSSL_AES_256) - Aes aesEnc, aesDec; - int ret = 0; - byte key32[] = - { + Aes aesEnc; + Aes aesDec; + byte key32[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; - byte vector[] = /* Now is the time for all w/o trailing 0 */ - { + byte vector[] = { /* Now is the time for all w/o trailing 0 */ 0x4e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 }; - byte iv[] = "1234567890abcdef"; - byte enc[AES_BLOCK_SIZE * 2]; - byte dec[AES_BLOCK_SIZE * 2]; + byte iv[] = "1234567890abcdef"; + byte enc[AES_BLOCK_SIZE * 2]; + byte dec[AES_BLOCK_SIZE * 2]; /* Init stack variables. */ + XMEMSET(&aesEnc, 0, sizeof(Aes)); + XMEMSET(&aesDec, 0, sizeof(Aes)); XMEMSET(enc, 0, AES_BLOCK_SIZE * 2); XMEMSET(dec, 0, AES_BLOCK_SIZE * 2); - ret = wc_AesInit(&aesEnc, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - ret = wc_AesInit(&aesDec, NULL, INVALID_DEVID); - if (ret != 0) { - wc_AesFree(&aesEnc); - return ret; - } + ExpectIntEQ(wc_AesInit(&aesEnc, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_AesInit(&aesDec, NULL, INVALID_DEVID), 0); - ret = wc_AesSetKey(&aesEnc, key32, AES_BLOCK_SIZE * 2, - iv, AES_ENCRYPTION); - if (ret == 0) { - ret = wc_AesCtrEncrypt(&aesEnc, enc, vector, - sizeof(vector)/sizeof(byte)); - if (ret == 0) { - /* Decrypt with wc_AesCtrEncrypt() */ - ret = wc_AesSetKey(&aesDec, key32, AES_BLOCK_SIZE * 2, - iv, AES_ENCRYPTION); - } - if (ret == 0) { - ret = wc_AesCtrEncrypt(&aesDec, dec, enc, sizeof(enc)/sizeof(byte)); - if (ret != 0 || XMEMCMP(vector, dec, sizeof(vector))) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntEQ(wc_AesSetKey(&aesEnc, key32, AES_BLOCK_SIZE * 2, iv, + AES_ENCRYPTION), 0); + ExpectIntEQ(wc_AesCtrEncrypt(&aesEnc, enc, vector, + sizeof(vector)/sizeof(byte)), 0); + /* Decrypt with wc_AesCtrEncrypt() */ + ExpectIntEQ(wc_AesSetKey(&aesDec, key32, AES_BLOCK_SIZE * 2, iv, + AES_ENCRYPTION), 0); + ExpectIntEQ(wc_AesCtrEncrypt(&aesDec, dec, enc, sizeof(enc)/sizeof(byte)), + 0); + ExpectIntEQ(XMEMCMP(vector, dec, sizeof(vector)), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_AesCtrEncrypt(NULL, dec, enc, sizeof(enc)/sizeof(byte)); - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCtrEncrypt(&aesDec, NULL, enc, sizeof(enc)/sizeof(byte)); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCtrEncrypt(&aesDec, dec, NULL, sizeof(enc)/sizeof(byte)); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_AesCtrEncrypt(NULL, dec, enc, sizeof(enc)/sizeof(byte)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCtrEncrypt(&aesDec, NULL, enc, sizeof(enc)/sizeof(byte)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCtrEncrypt(&aesDec, dec, NULL, sizeof(enc)/sizeof(byte)), + BAD_FUNC_ARG); wc_AesFree(&aesEnc); wc_AesFree(&aesDec); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_AesCtrEncryptDecrypt */ /* @@ -19040,93 +16168,69 @@ static int test_wc_AesCtrEncryptDecrypt(void) */ static int test_wc_AesGcmSetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_AES) && defined(HAVE_AESGCM) - Aes aes; - int ret = 0; + Aes aes; #ifdef WOLFSSL_AES_128 - byte key16[] = - { + byte key16[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; #endif #ifdef WOLFSSL_AES_192 - byte key24[] = - { + byte key24[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 }; #endif #ifdef WOLFSSL_AES_256 - byte key32[] = - { + byte key32[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; #endif - byte badKey16[] = - { + byte badKey16[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65 }; - byte badKey24[] = - { + byte badKey24[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36 }; - byte badKey32[] = - { + byte badKey32[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x37, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65 }; - ret = wc_AesInit(&aes, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + ExpectIntEQ(wc_AesInit(&aes, NULL, INVALID_DEVID), 0); #ifdef WOLFSSL_AES_128 - ret = wc_AesGcmSetKey(&aes, key16, sizeof(key16)/sizeof(byte)); + ExpectIntEQ(wc_AesGcmSetKey(&aes, key16, sizeof(key16)/sizeof(byte)), 0); #endif #ifdef WOLFSSL_AES_192 - if (ret == 0) { - ret = wc_AesGcmSetKey(&aes, key24, sizeof(key24)/sizeof(byte)); - } + ExpectIntEQ(wc_AesGcmSetKey(&aes, key24, sizeof(key24)/sizeof(byte)), 0); #endif #ifdef WOLFSSL_AES_256 - if (ret == 0) { - ret = wc_AesGcmSetKey(&aes, key32, sizeof(key32)/sizeof(byte)); - } + ExpectIntEQ(wc_AesGcmSetKey(&aes, key32, sizeof(key32)/sizeof(byte)), 0); #endif /* Pass in bad args. */ - if (ret == 0) { - ret = wc_AesGcmSetKey(&aes, badKey16, sizeof(badKey16)/sizeof(byte)); - if (ret == BAD_FUNC_ARG) { - ret = wc_AesGcmSetKey(&aes, badKey24, sizeof(badKey24)/sizeof(byte)); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_AesGcmSetKey(&aes, badKey32, sizeof(badKey32)/sizeof(byte)); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_AesGcmSetKey(&aes, badKey16, sizeof(badKey16)/sizeof(byte)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmSetKey(&aes, badKey24, sizeof(badKey24)/sizeof(byte)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmSetKey(&aes, badKey32, sizeof(badKey32)/sizeof(byte)), + BAD_FUNC_ARG); wc_AesFree(&aes); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_AesGcmSetKey */ /* @@ -19134,97 +16238,67 @@ static int test_wc_AesGcmSetKey(void) */ static int test_wc_AesGcmEncryptDecrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; /* WOLFSSL_AFALG requires 12 byte IV */ #if !defined(NO_AES) && defined(HAVE_AESGCM) && defined(WOLFSSL_AES_256) && \ !defined(WOLFSSL_AFALG) && !defined(WOLFSSL_DEVCRYPTO_AES) - - Aes aes; - byte key32[] = - { + Aes aes; + byte key32[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; - byte vector[] = /* Now is the time for all w/o trailing 0 */ - { + byte vector[] = { /* Now is the time for all w/o trailing 0 */ 0x4e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 }; - const byte a[] = - { + const byte a[] = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 0xab, 0xad, 0xda, 0xd2 }; - byte iv[] = "1234567890a"; - byte longIV[] = "1234567890abcdefghij"; - byte enc[sizeof(vector)]; - byte resultT[AES_BLOCK_SIZE]; - byte dec[sizeof(vector)]; - int gcmD = WOLFSSL_FATAL_ERROR; - int gcmE = WOLFSSL_FATAL_ERROR; - int ret = 0; + byte iv[] = "1234567890a"; + byte longIV[] = "1234567890abcdefghij"; + byte enc[sizeof(vector)]; + byte resultT[AES_BLOCK_SIZE]; + byte dec[sizeof(vector)]; /* Init stack variables. */ + XMEMSET(&aes, 0, sizeof(Aes)); XMEMSET(enc, 0, sizeof(vector)); XMEMSET(dec, 0, sizeof(vector)); XMEMSET(resultT, 0, AES_BLOCK_SIZE); - ret = wc_AesInit(&aes, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + ExpectIntEQ(wc_AesInit(&aes, NULL, INVALID_DEVID), 0); - ret = wc_AesGcmSetKey(&aes, key32, sizeof(key32)/sizeof(byte)); - if (ret == 0) { - gcmE = wc_AesGcmEncrypt(&aes, enc, vector, sizeof(vector), - iv, sizeof(iv)/sizeof(byte), resultT, - sizeof(resultT), a, sizeof(a)); - } - if (gcmE == 0) { /* If encrypt fails, no decrypt. */ - gcmD = wc_AesGcmDecrypt(&aes, dec, enc, sizeof(vector), - iv, sizeof(iv)/sizeof(byte), resultT, - sizeof(resultT), a, sizeof(a)); - if (gcmD == 0 && (XMEMCMP(vector, dec, sizeof(vector)) != 0)) { - gcmD = WOLFSSL_FATAL_ERROR; - } - } - /*Test bad args for wc_AesGcmEncrypt and wc_AesGcmDecrypt */ - if (gcmE == 0) { - gcmE = wc_AesGcmEncrypt(NULL, enc, vector, sizeof(vector), - iv, sizeof(iv)/sizeof(byte), resultT, sizeof(resultT), - a, sizeof(a)); - if (gcmE == BAD_FUNC_ARG) { - gcmE = wc_AesGcmEncrypt(&aes, enc, vector, - sizeof(vector), iv, sizeof(iv)/sizeof(byte), - resultT, sizeof(resultT) + 1, a, sizeof(a)); - } - if (gcmE == BAD_FUNC_ARG) { - gcmE = wc_AesGcmEncrypt(&aes, enc, vector, - sizeof(vector), iv, sizeof(iv)/sizeof(byte), - resultT, sizeof(resultT) - 5, a, sizeof(a)); - } + ExpectIntEQ(wc_AesGcmSetKey(&aes, key32, sizeof(key32)/sizeof(byte)), 0); + ExpectIntEQ(wc_AesGcmEncrypt(&aes, enc, vector, sizeof(vector), iv, + sizeof(iv)/sizeof(byte), resultT, sizeof(resultT), a, sizeof(a)), 0); + ExpectIntEQ(wc_AesGcmDecrypt(&aes, dec, enc, sizeof(vector), iv, + sizeof(iv)/sizeof(byte), resultT, sizeof(resultT), a, sizeof(a)), 0); + ExpectIntEQ(XMEMCMP(vector, dec, sizeof(vector)), 0); + + /* Test bad args for wc_AesGcmEncrypt and wc_AesGcmDecrypt */ + ExpectIntEQ(wc_AesGcmEncrypt(NULL, enc, vector, sizeof(vector), iv, + sizeof(iv)/sizeof(byte), resultT, sizeof(resultT), a, sizeof(a)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncrypt(&aes, enc, vector, sizeof(vector), iv, + sizeof(iv)/sizeof(byte), resultT, sizeof(resultT) + 1, a, sizeof(a)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmEncrypt(&aes, enc, vector, sizeof(vector), iv, + sizeof(iv)/sizeof(byte), resultT, sizeof(resultT) - 5, a, sizeof(a)), + BAD_FUNC_ARG); #if (defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \ (HAVE_FIPS_VERSION == 2)) || defined(HAVE_SELFTEST) || \ defined(WOLFSSL_AES_GCM_FIXED_IV_AAD) /* FIPS does not check the lower bound of ivSz */ #else - if (gcmE == BAD_FUNC_ARG) { - gcmE = wc_AesGcmEncrypt(&aes, enc, vector, - sizeof(vector), iv, 0, - resultT, sizeof(resultT), a, sizeof(a)); - } + ExpectIntEQ(wc_AesGcmEncrypt(&aes, enc, vector, sizeof(vector), iv, 0, + resultT, sizeof(resultT), a, sizeof(a)), BAD_FUNC_ARG); #endif - if (gcmE == BAD_FUNC_ARG) { - gcmE = 0; - } - else { - gcmE = WOLFSSL_FATAL_ERROR; - } - } /* This case is now considered good. Long IVs are now allowed. * Except for the original FIPS release, it still has an upper @@ -19232,76 +16306,46 @@ static int test_wc_AesGcmEncryptDecrypt(void) #if (!defined(HAVE_FIPS) || \ (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2))) && \ !defined(WOLFSSL_AES_GCM_FIXED_IV_AAD) - if (gcmE == 0) { - gcmE = wc_AesGcmEncrypt(&aes, enc, vector, sizeof(vector), longIV, - sizeof(longIV)/sizeof(byte), resultT, sizeof(resultT), - a, sizeof(a)); - } + ExpectIntEQ(wc_AesGcmEncrypt(&aes, enc, vector, sizeof(vector), longIV, + sizeof(longIV)/sizeof(byte), resultT, sizeof(resultT), a, sizeof(a)), + 0); #else (void)longIV; #endif /* Old FIPS */ /* END wc_AesGcmEncrypt */ - if (gcmE != 0) { - wc_AesFree(&aes); - return TEST_FAIL; - } - - #ifdef HAVE_AES_DECRYPT - if (gcmD == 0) { - gcmD = wc_AesGcmDecrypt(NULL, dec, enc, sizeof(enc)/sizeof(byte), - iv, sizeof(iv)/sizeof(byte), resultT, - sizeof(resultT), a, sizeof(a)); - if (gcmD == BAD_FUNC_ARG) { - gcmD = wc_AesGcmDecrypt(&aes, NULL, enc, sizeof(enc)/sizeof(byte), - iv, sizeof(iv)/sizeof(byte), resultT, - sizeof(resultT), a, sizeof(a)); - } - if (gcmD == BAD_FUNC_ARG) { - gcmD = wc_AesGcmDecrypt(&aes, dec, NULL, sizeof(enc)/sizeof(byte), - iv, sizeof(iv)/sizeof(byte), resultT, - sizeof(resultT), a, sizeof(a)); - } - if (gcmD == BAD_FUNC_ARG) { - gcmD = wc_AesGcmDecrypt(&aes, dec, enc, sizeof(enc)/sizeof(byte), - NULL, sizeof(iv)/sizeof(byte), resultT, - sizeof(resultT), a, sizeof(a)); - } - if (gcmD == BAD_FUNC_ARG) { - gcmD = wc_AesGcmDecrypt(&aes, dec, enc, sizeof(enc)/sizeof(byte), - iv, sizeof(iv)/sizeof(byte), NULL, - sizeof(resultT), a, sizeof(a)); - } - if (gcmD == BAD_FUNC_ARG) { - gcmD = wc_AesGcmDecrypt(&aes, dec, enc, sizeof(enc)/sizeof(byte), - iv, sizeof(iv)/sizeof(byte), resultT, - sizeof(resultT) + 1, a, sizeof(a)); - } - #if ((defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \ - (HAVE_FIPS_VERSION == 2)) || defined(HAVE_SELFTEST)) && \ - !defined(WOLFSSL_AES_GCM_FIXED_IV_AAD) - /* FIPS does not check the lower bound of ivSz */ - #else - if (gcmD == BAD_FUNC_ARG) { - gcmD = wc_AesGcmDecrypt(&aes, dec, enc, sizeof(enc)/sizeof(byte), - iv, 0, resultT, - sizeof(resultT), a, sizeof(a)); - } - #endif - if (gcmD == BAD_FUNC_ARG) { - gcmD = 0; - } - else { - gcmD = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(gcmD == 0); - } /* END wc_AesGcmDecrypt */ - #endif /* HAVE_AES_DECRYPT */ +#ifdef HAVE_AES_DECRYPT + ExpectIntEQ(wc_AesGcmDecrypt(NULL, dec, enc, sizeof(enc)/sizeof(byte), iv, + sizeof(iv)/sizeof(byte), resultT, sizeof(resultT), a, sizeof(a)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecrypt(&aes, NULL, enc, sizeof(enc)/sizeof(byte), iv, + sizeof(iv)/sizeof(byte), resultT, sizeof(resultT), a, sizeof(a)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecrypt(&aes, dec, NULL, sizeof(enc)/sizeof(byte), iv, + sizeof(iv)/sizeof(byte), resultT, sizeof(resultT), a, sizeof(a)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecrypt(&aes, dec, enc, sizeof(enc)/sizeof(byte), NULL, + sizeof(iv)/sizeof(byte), resultT, sizeof(resultT), a, sizeof(a)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecrypt(&aes, dec, enc, sizeof(enc)/sizeof(byte), iv, + sizeof(iv)/sizeof(byte), NULL, sizeof(resultT), a, sizeof(a)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesGcmDecrypt(&aes, dec, enc, sizeof(enc)/sizeof(byte), iv, + sizeof(iv)/sizeof(byte), resultT, sizeof(resultT) + 1, a, sizeof(a)), + BAD_FUNC_ARG); + #if ((defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \ + (HAVE_FIPS_VERSION == 2)) || defined(HAVE_SELFTEST)) && \ + !defined(WOLFSSL_AES_GCM_FIXED_IV_AAD) + /* FIPS does not check the lower bound of ivSz */ + #else + ExpectIntEQ(wc_AesGcmDecrypt(&aes, dec, enc, sizeof(enc)/sizeof(byte), + iv, 0, resultT, sizeof(resultT), a, sizeof(a)), BAD_FUNC_ARG); + #endif +#endif /* HAVE_AES_DECRYPT */ wc_AesFree(&aes); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_AesGcmEncryptDecrypt */ @@ -19311,64 +16355,58 @@ static int test_wc_AesGcmEncryptDecrypt(void) */ static int test_wc_AesGcmMixedEncDecLongIV(void) { - int ret = TEST_SKIPPED; - + EXPECT_DECLS; #if (!defined(HAVE_FIPS) || \ (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2))) && \ !defined(NO_AES) && defined(HAVE_AESGCM) && defined(WOLFSSL_AESGCM_STREAM) - const byte key[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; - const byte in[] = { 0x4e,0x6f,0x77,0x20,0x69,0x73,0x20,0x74, 0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x20, 0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20 }; - const byte aad[] = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 0xab, 0xad, 0xda, 0xd2 }; + Aes aesEnc; + Aes aesDec; + byte iv[] = "1234567890abcdefghij"; + byte out[sizeof(in)]; + byte plain[sizeof(in)]; + byte tag[AES_BLOCK_SIZE]; - Aes aesEnc, aesDec; - byte iv[] = "1234567890abcdefghij"; - byte out[sizeof(in)]; - byte plain[sizeof(in)]; - byte tag[AES_BLOCK_SIZE]; - + XMEMSET(&aesEnc, 0, sizeof(Aes)); + XMEMSET(&aesDec, 0, sizeof(Aes)); XMEMSET(out, 0, sizeof(out)); XMEMSET(plain, 0, sizeof(plain)); XMEMSET(tag, 0, sizeof(tag)); /* Perform one-shot encryption using long IV */ - AssertIntEQ(wc_AesInit(&aesEnc, NULL, INVALID_DEVID), 0); - AssertIntEQ(wc_AesGcmSetKey(&aesEnc, key, sizeof(key)), 0); - AssertIntEQ(wc_AesGcmEncrypt(&aesEnc, out, in, sizeof(in), iv, sizeof(iv), - tag, sizeof(tag), aad, sizeof(aad)), 0); + ExpectIntEQ(wc_AesInit(&aesEnc, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_AesGcmSetKey(&aesEnc, key, sizeof(key)), 0); + ExpectIntEQ(wc_AesGcmEncrypt(&aesEnc, out, in, sizeof(in), iv, sizeof(iv), + tag, sizeof(tag), aad, sizeof(aad)), 0); /* Perform streaming decryption using long IV */ - AssertIntEQ(wc_AesInit(&aesDec, NULL, INVALID_DEVID), 0); - AssertIntEQ(wc_AesGcmInit(&aesDec, key, sizeof(key), iv, sizeof(iv)), 0); - AssertIntEQ(wc_AesGcmDecryptUpdate(&aesDec, plain, out, sizeof(out), aad, - sizeof(aad)), 0); - AssertIntEQ(wc_AesGcmDecryptFinal(&aesDec, tag, sizeof(tag)), 0); - AssertIntEQ(XMEMCMP(plain, in, sizeof(in)), 0); + ExpectIntEQ(wc_AesInit(&aesDec, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_AesGcmInit(&aesDec, key, sizeof(key), iv, sizeof(iv)), 0); + ExpectIntEQ(wc_AesGcmDecryptUpdate(&aesDec, plain, out, sizeof(out), aad, + sizeof(aad)), 0); + ExpectIntEQ(wc_AesGcmDecryptFinal(&aesDec, tag, sizeof(tag)), 0); + ExpectIntEQ(XMEMCMP(plain, in, sizeof(in)), 0); /* Free resources */ wc_AesFree(&aesEnc); wc_AesFree(&aesDec); - - ret = TEST_SUCCESS; - #endif - - return ret; + return EXPECT_RESULT(); } /* END wc_AesGcmMixedEncDecLongIV */ @@ -19377,98 +16415,73 @@ static int test_wc_AesGcmMixedEncDecLongIV(void) */ static int test_wc_GmacSetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_AES) && defined(HAVE_AESGCM) - Gmac gmac; - byte key16[] = - { + Gmac gmac; + byte key16[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; #ifdef WOLFSSL_AES_192 - byte key24[] = - { + byte key24[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 }; #endif #ifdef WOLFSSL_AES_256 - byte key32[] = - { + byte key32[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; #endif - byte badKey16[] = - { + byte badKey16[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x66 }; - byte badKey24[] = - { + byte badKey24[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 }; - byte badKey32[] = - { + byte badKey32[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; - int ret = 0; - ret = wc_AesInit(&gmac.aes, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + XMEMSET(&gmac, 0, sizeof(Gmac)); + + ExpectIntEQ(wc_AesInit(&gmac.aes, NULL, INVALID_DEVID), 0); #ifdef WOLFSSL_AES_128 - ret = wc_GmacSetKey(&gmac, key16, sizeof(key16)/sizeof(byte)); + ExpectIntEQ(wc_GmacSetKey(&gmac, key16, sizeof(key16)/sizeof(byte)), 0); #endif #ifdef WOLFSSL_AES_192 - if (ret == 0) { - ret = wc_GmacSetKey(&gmac, key24, sizeof(key24)/sizeof(byte)); - } + ExpectIntEQ(wc_GmacSetKey(&gmac, key24, sizeof(key24)/sizeof(byte)), 0); #endif #ifdef WOLFSSL_AES_256 - if (ret == 0) { - ret = wc_GmacSetKey(&gmac, key32, sizeof(key32)/sizeof(byte)); - } + ExpectIntEQ(wc_GmacSetKey(&gmac, key32, sizeof(key32)/sizeof(byte)), 0); #endif /* Pass in bad args. */ - if (ret == 0) { - ret = wc_GmacSetKey(NULL, key16, sizeof(key16)/sizeof(byte)); - if (ret == BAD_FUNC_ARG) { - ret = wc_GmacSetKey(&gmac, NULL, sizeof(key16)/sizeof(byte)); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_GmacSetKey(&gmac, badKey16, sizeof(badKey16)/sizeof(byte)); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_GmacSetKey(&gmac, badKey24, sizeof(badKey24)/sizeof(byte)); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_GmacSetKey(&gmac, badKey32, sizeof(badKey32)/sizeof(byte)); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_GmacSetKey(NULL, key16, sizeof(key16)/sizeof(byte)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_GmacSetKey(&gmac, NULL, sizeof(key16)/sizeof(byte)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_GmacSetKey(&gmac, badKey16, sizeof(badKey16)/sizeof(byte)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_GmacSetKey(&gmac, badKey24, sizeof(badKey24)/sizeof(byte)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_GmacSetKey(&gmac, badKey32, sizeof(badKey32)/sizeof(byte)), + BAD_FUNC_ARG); wc_AesFree(&gmac.aes); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_GmacSetKey */ /* @@ -19476,27 +16489,24 @@ static int test_wc_GmacSetKey(void) */ static int test_wc_GmacUpdate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_AES) && defined(HAVE_AESGCM) - Gmac gmac; + Gmac gmac; #ifdef WOLFSSL_AES_128 - const byte key16[] = - { + const byte key16[] = { 0x89, 0xc9, 0x49, 0xe9, 0xc8, 0x04, 0xaf, 0x01, 0x4d, 0x56, 0x04, 0xb3, 0x94, 0x59, 0xf2, 0xc8 }; #endif #ifdef WOLFSSL_AES_192 - byte key24[] = - { + byte key24[] = { 0x41, 0xc5, 0xda, 0x86, 0x67, 0xef, 0x72, 0x52, 0x20, 0xff, 0xe3, 0x9a, 0xe0, 0xac, 0x59, 0x0a, 0xc9, 0xfc, 0xa7, 0x29, 0xab, 0x60, 0xad, 0xa0 }; #endif #ifdef WOLFSSL_AES_256 - byte key32[] = - { + byte key32[] = { 0x78, 0xdc, 0x4e, 0x0a, 0xaf, 0x52, 0xd9, 0x35, 0xc3, 0xc0, 0x1e, 0xea, 0x57, 0x42, 0x8f, 0x00, 0xca, 0x1f, 0xd4, 0x75, 0xf5, 0xda, 0x86, 0xa4, @@ -19504,144 +16514,99 @@ static int test_wc_GmacUpdate(void) }; #endif #ifdef WOLFSSL_AES_128 - const byte authIn[] = - { + const byte authIn[] = { 0x82, 0xad, 0xcd, 0x63, 0x8d, 0x3f, 0xa9, 0xd9, 0xf3, 0xe8, 0x41, 0x00, 0xd6, 0x1e, 0x07, 0x77 }; #endif #ifdef WOLFSSL_AES_192 - const byte authIn2[] = - { + const byte authIn2[] = { 0x8b, 0x5c, 0x12, 0x4b, 0xef, 0x6e, 0x2f, 0x0f, 0xe4, 0xd8, 0xc9, 0x5c, 0xd5, 0xfa, 0x4c, 0xf1 }; #endif - const byte authIn3[] = - { + const byte authIn3[] = { 0xb9, 0x6b, 0xaa, 0x8c, 0x1c, 0x75, 0xa6, 0x71, 0xbf, 0xb2, 0xd0, 0x8d, 0x06, 0xbe, 0x5f, 0x36 }; #ifdef WOLFSSL_AES_128 - const byte tag1[] = /* Known. */ - { + const byte tag1[] = { /* Known. */ 0x88, 0xdb, 0x9d, 0x62, 0x17, 0x2e, 0xd0, 0x43, 0xaa, 0x10, 0xf1, 0x6d, 0x22, 0x7d, 0xc4, 0x1b }; #endif #ifdef WOLFSSL_AES_192 - const byte tag2[] = /* Known */ - { + const byte tag2[] = { /* Known */ 0x20, 0x4b, 0xdb, 0x1b, 0xd6, 0x21, 0x54, 0xbf, 0x08, 0x92, 0x2a, 0xaa, 0x54, 0xee, 0xd7, 0x05 }; #endif - const byte tag3[] = /* Known */ - { + const byte tag3[] = { /* Known */ 0x3e, 0x5d, 0x48, 0x6a, 0xa2, 0xe3, 0x0b, 0x22, 0xe0, 0x40, 0xb8, 0x57, 0x23, 0xa0, 0x6e, 0x76 }; #ifdef WOLFSSL_AES_128 - const byte iv[] = - { + const byte iv[] = { 0xd1, 0xb1, 0x04, 0xc8, 0x15, 0xbf, 0x1e, 0x94, 0xe2, 0x8c, 0x8f, 0x16 }; #endif #ifdef WOLFSSL_AES_192 - const byte iv2[] = - { + const byte iv2[] = { 0x05, 0xad, 0x13, 0xa5, 0xe2, 0xc2, 0xab, 0x66, 0x7e, 0x1a, 0x6f, 0xbc }; #endif - const byte iv3[] = - { + const byte iv3[] = { 0xd7, 0x9c, 0xf2, 0x2d, 0x50, 0x4c, 0xc7, 0x93, 0xc3, 0xfb, 0x6c, 0x8a }; - byte tagOut[16]; - byte tagOut2[24]; - byte tagOut3[32]; - int ret = 0; + byte tagOut[16]; + byte tagOut2[24]; + byte tagOut3[32]; /* Init stack variables. */ + XMEMSET(&gmac, 0, sizeof(Gmac)); XMEMSET(tagOut, 0, sizeof(tagOut)); XMEMSET(tagOut2, 0, sizeof(tagOut2)); XMEMSET(tagOut3, 0, sizeof(tagOut3)); - ret = wc_AesInit(&gmac.aes, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + ExpectIntEQ(wc_AesInit(&gmac.aes, NULL, INVALID_DEVID), 0); #ifdef WOLFSSL_AES_128 - ret = wc_GmacSetKey(&gmac, key16, sizeof(key16)); - if (ret == 0) { - ret = wc_GmacUpdate(&gmac, iv, sizeof(iv), authIn, sizeof(authIn), - tagOut, sizeof(tag1)); - if (ret == 0) { - ret = XMEMCMP(tag1, tagOut, sizeof(tag1)); - } - wc_AesFree(&gmac.aes); - } - + ExpectIntEQ(wc_GmacSetKey(&gmac, key16, sizeof(key16)), 0); + ExpectIntEQ(wc_GmacUpdate(&gmac, iv, sizeof(iv), authIn, sizeof(authIn), + tagOut, sizeof(tag1)), 0); + ExpectIntEQ(XMEMCMP(tag1, tagOut, sizeof(tag1)), 0); #endif #ifdef WOLFSSL_AES_192 - if (ret == 0) { - XMEMSET(&gmac, 0, sizeof(Gmac)); - ret = wc_GmacSetKey(&gmac, key24, sizeof(key24)/sizeof(byte)); - } - if (ret == 0) { - ret = wc_GmacUpdate(&gmac, iv2, sizeof(iv2), authIn2, - sizeof(authIn2), tagOut2, sizeof(tag2)); - } - if (ret == 0) { - ret = XMEMCMP(tagOut2, tag2, sizeof(tag2)); - wc_AesFree(&gmac.aes); - } + ExpectNotNull(XMEMSET(&gmac, 0, sizeof(Gmac))); + ExpectIntEQ(wc_GmacSetKey(&gmac, key24, sizeof(key24)/sizeof(byte)), 0); + ExpectIntEQ(wc_GmacUpdate(&gmac, iv2, sizeof(iv2), authIn2, sizeof(authIn2), + tagOut2, sizeof(tag2)), 0); + ExpectIntEQ(XMEMCMP(tagOut2, tag2, sizeof(tag2)), 0); #endif #ifdef WOLFSSL_AES_256 - if (ret == 0) { - XMEMSET(&gmac, 0, sizeof(Gmac)); - ret = wc_GmacSetKey(&gmac, key32, sizeof(key32)/sizeof(byte)); - } - if (ret == 0) { - ret = wc_GmacUpdate(&gmac, iv3, sizeof(iv3), authIn3, - sizeof(authIn3), tagOut3, sizeof(tag3)); - } - if (ret == 0) { - ret = XMEMCMP(tag3, tagOut3, sizeof(tag3)); - } + ExpectNotNull(XMEMSET(&gmac, 0, sizeof(Gmac))); + ExpectIntEQ(wc_GmacSetKey(&gmac, key32, sizeof(key32)/sizeof(byte)), 0); + ExpectIntEQ(wc_GmacUpdate(&gmac, iv3, sizeof(iv3), authIn3, sizeof(authIn3), + tagOut3, sizeof(tag3)), 0); + ExpectIntEQ(XMEMCMP(tag3, tagOut3, sizeof(tag3)), 0); #endif - /*Pass bad args. */ - if (ret == 0) { - ret = wc_GmacUpdate(NULL, iv3, sizeof(iv3), authIn3, - sizeof(authIn3), tagOut3, sizeof(tag3)); - if (ret == BAD_FUNC_ARG) { - ret = wc_GmacUpdate(&gmac, iv3, sizeof(iv3), authIn3, - sizeof(authIn3), tagOut3, sizeof(tag3) - 5); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_GmacUpdate(&gmac, iv3, sizeof(iv3), authIn3, - sizeof(authIn3), tagOut3, sizeof(tag3) + 1); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + /* Pass bad args. */ + ExpectIntEQ(wc_GmacUpdate(NULL, iv3, sizeof(iv3), authIn3, sizeof(authIn3), + tagOut3, sizeof(tag3)), BAD_FUNC_ARG); + ExpectIntEQ(wc_GmacUpdate(&gmac, iv3, sizeof(iv3), authIn3, sizeof(authIn3), + tagOut3, sizeof(tag3) - 5), BAD_FUNC_ARG); + ExpectIntEQ(wc_GmacUpdate(&gmac, iv3, sizeof(iv3), authIn3, sizeof(authIn3), + tagOut3, sizeof(tag3) + 1), BAD_FUNC_ARG); wc_AesFree(&gmac.aes); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_GmacUpdate */ @@ -19650,73 +16615,50 @@ static int test_wc_GmacUpdate(void) */ static int test_wc_CamelliaSetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_CAMELLIA Camellia camellia; /*128-bit key*/ - static const byte key16[] = - { + static const byte key16[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }; /* 192-bit key */ - static const byte key24[] = - { + static const byte key24[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }; /* 256-bit key */ - static const byte key32[] = - { + static const byte key32[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; - static const byte iv[] = - { + static const byte iv[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; - int ret = 0; - ret = wc_CamelliaSetKey(&camellia, key16, (word32)sizeof(key16), iv); - if (ret == 0) { - ret = wc_CamelliaSetKey(&camellia, key16, - (word32)sizeof(key16), NULL); - if (ret == 0) { - ret = wc_CamelliaSetKey(&camellia, key24, - (word32)sizeof(key24), iv); - } - if (ret == 0) { - ret = wc_CamelliaSetKey(&camellia, key24, - (word32)sizeof(key24), NULL); - } - if (ret == 0) { - ret = wc_CamelliaSetKey(&camellia, key32, - (word32)sizeof(key32), iv); - } - if (ret == 0) { - ret = wc_CamelliaSetKey(&camellia, key32, - (word32)sizeof(key32), NULL); - } - } + ExpectIntEQ(wc_CamelliaSetKey(&camellia, key16, (word32)sizeof(key16), iv), + 0); + ExpectIntEQ(wc_CamelliaSetKey(&camellia, key16, (word32)sizeof(key16), + NULL), 0); + ExpectIntEQ(wc_CamelliaSetKey(&camellia, key24, (word32)sizeof(key24), iv), + 0); + ExpectIntEQ(wc_CamelliaSetKey(&camellia, key24, (word32)sizeof(key24), + NULL), 0); + ExpectIntEQ(wc_CamelliaSetKey(&camellia, key32, (word32)sizeof(key32), iv), + 0); + ExpectIntEQ(wc_CamelliaSetKey(&camellia, key32, (word32)sizeof(key32), + NULL), 0); + /* Bad args. */ - if (ret == 0) { - ret = wc_CamelliaSetKey(NULL, key32, (word32)sizeof(key32), iv); - if (ret != BAD_FUNC_ARG) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } /* END bad args. */ - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_CamelliaSetKey(NULL, key32, (word32)sizeof(key32), iv), + BAD_FUNC_ARG); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_CammeliaSetKey */ /* @@ -19724,121 +16666,69 @@ static int test_wc_CamelliaSetKey(void) */ static int test_wc_CamelliaSetIV(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_CAMELLIA Camellia camellia; - static const byte iv[] = - { + static const byte iv[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; - int ret = 0; - ret = wc_CamelliaSetIV(&camellia, iv); - if (ret == 0) { - ret = wc_CamelliaSetIV(&camellia, NULL); - } + ExpectIntEQ(wc_CamelliaSetIV(&camellia, iv), 0); + ExpectIntEQ(wc_CamelliaSetIV(&camellia, NULL), 0); + /* Bad args. */ - if (ret == 0) { - ret = wc_CamelliaSetIV(NULL, NULL); - if (ret != BAD_FUNC_ARG) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_CamelliaSetIV(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_CamelliaSetIV(NULL, iv), BAD_FUNC_ARG); #endif - return res; -} /*END test_wc_CamelliaSetIV*/ + return EXPECT_RESULT(); +} /* END test_wc_CamelliaSetIV*/ /* * Test wc_CamelliaEncryptDirect and wc_CamelliaDecryptDirect */ static int test_wc_CamelliaEncryptDecryptDirect(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_CAMELLIA Camellia camellia; - static const byte key24[] = - { + static const byte key24[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }; - static const byte iv[] = - { + static const byte iv[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; - static const byte plainT[] = - { + static const byte plainT[] = { 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96, 0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A }; byte enc[sizeof(plainT)]; byte dec[sizeof(enc)]; - int camE = WOLFSSL_FATAL_ERROR; - int camD = WOLFSSL_FATAL_ERROR; - int ret = 0; - /*Init stack variables.*/ + /* Init stack variables.*/ XMEMSET(enc, 0, 16); XMEMSET(enc, 0, 16); - ret = wc_CamelliaSetKey(&camellia, key24, (word32)sizeof(key24), iv); - if (ret == 0) { - ret = wc_CamelliaEncryptDirect(&camellia, enc, plainT); - if (ret == 0) { - ret = wc_CamelliaDecryptDirect(&camellia, dec, enc); - if (XMEMCMP(plainT, dec, CAMELLIA_BLOCK_SIZE)) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntEQ(wc_CamelliaSetKey(&camellia, key24, (word32)sizeof(key24), iv), + 0); + ExpectIntEQ(wc_CamelliaEncryptDirect(&camellia, enc, plainT), 0); + ExpectIntEQ(wc_CamelliaDecryptDirect(&camellia, dec, enc), 0); + ExpectIntEQ(XMEMCMP(plainT, dec, CAMELLIA_BLOCK_SIZE), 0); + /* Pass bad args. */ - if (ret == 0) { - camE = wc_CamelliaEncryptDirect(NULL, enc, plainT); - if (camE == BAD_FUNC_ARG) { - camE = wc_CamelliaEncryptDirect(&camellia, NULL, plainT); - } - if (camE == BAD_FUNC_ARG) { - camE = wc_CamelliaEncryptDirect(&camellia, enc, NULL); - } - if (camE == BAD_FUNC_ARG) { - camE = 0; - } - else { - camE = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_CamelliaEncryptDirect(NULL, enc, plainT), BAD_FUNC_ARG); + ExpectIntEQ(wc_CamelliaEncryptDirect(&camellia, NULL, plainT), + BAD_FUNC_ARG); + ExpectIntEQ(wc_CamelliaEncryptDirect(&camellia, enc, NULL), BAD_FUNC_ARG); - if (camE != 0) { - return TEST_FAIL; - } - - if (ret == 0) { - camD = wc_CamelliaDecryptDirect(NULL, dec, enc); - if (camD == BAD_FUNC_ARG) { - camD = wc_CamelliaDecryptDirect(&camellia, NULL, enc); - } - if (camD == BAD_FUNC_ARG) { - camD = wc_CamelliaDecryptDirect(&camellia, dec, NULL); - } - if (camD == BAD_FUNC_ARG) { - camD = 0; - } - else { - camD = WOLFSSL_FATAL_ERROR; - } - } - - res = TEST_RES_CHECK(camD == 0); + ExpectIntEQ(wc_CamelliaDecryptDirect(NULL, dec, enc), BAD_FUNC_ARG); + ExpectIntEQ(wc_CamelliaDecryptDirect(&camellia, NULL, enc), BAD_FUNC_ARG); + ExpectIntEQ(wc_CamelliaDecryptDirect(&camellia, dec, NULL), BAD_FUNC_ARG); #endif - return res; - + return EXPECT_RESULT(); } /* END test-wc_CamelliaEncryptDecryptDirect */ /* @@ -19846,92 +16736,52 @@ static int test_wc_CamelliaEncryptDecryptDirect(void) */ static int test_wc_CamelliaCbcEncryptDecrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_CAMELLIA Camellia camellia; - static const byte key24[] = - { + static const byte key24[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }; - static const byte plainT[] = - { + static const byte plainT[] = { 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96, 0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A }; byte enc[CAMELLIA_BLOCK_SIZE]; byte dec[CAMELLIA_BLOCK_SIZE]; - int camCbcE = WOLFSSL_FATAL_ERROR; - int camCbcD = WOLFSSL_FATAL_ERROR; - int ret = 0; /* Init stack variables. */ XMEMSET(enc, 0, CAMELLIA_BLOCK_SIZE); XMEMSET(enc, 0, CAMELLIA_BLOCK_SIZE); - ret = wc_CamelliaSetKey(&camellia, key24, (word32)sizeof(key24), NULL); - if (ret == 0) { - ret = wc_CamelliaCbcEncrypt(&camellia, enc, plainT, CAMELLIA_BLOCK_SIZE); - if (ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - ret = wc_CamelliaSetKey(&camellia, key24, (word32)sizeof(key24), NULL); - if (ret == 0) { - ret = wc_CamelliaCbcDecrypt(&camellia, dec, enc, CAMELLIA_BLOCK_SIZE); - if (XMEMCMP(plainT, dec, CAMELLIA_BLOCK_SIZE)) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntEQ(wc_CamelliaSetKey(&camellia, key24, (word32)sizeof(key24), + NULL), 0); + ExpectIntEQ(wc_CamelliaCbcEncrypt(&camellia, enc, plainT, + CAMELLIA_BLOCK_SIZE), 0); + + ExpectIntEQ(wc_CamelliaSetKey(&camellia, key24, (word32)sizeof(key24), + NULL), 0); + ExpectIntEQ(wc_CamelliaCbcDecrypt(&camellia, dec, enc, CAMELLIA_BLOCK_SIZE), + 0); + ExpectIntEQ(XMEMCMP(plainT, dec, CAMELLIA_BLOCK_SIZE), 0); /* Pass in bad args. */ - if (ret == 0) { - camCbcE = wc_CamelliaCbcEncrypt(NULL, enc, plainT, CAMELLIA_BLOCK_SIZE); - if (camCbcE == BAD_FUNC_ARG) { - camCbcE = wc_CamelliaCbcEncrypt(&camellia, NULL, plainT, - CAMELLIA_BLOCK_SIZE); - } - if (camCbcE == BAD_FUNC_ARG) { - camCbcE = wc_CamelliaCbcEncrypt(&camellia, enc, NULL, - CAMELLIA_BLOCK_SIZE); - } - if (camCbcE == BAD_FUNC_ARG) { - camCbcE = 0; - } - else { - camCbcE = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_CamelliaCbcEncrypt(NULL, enc, plainT, CAMELLIA_BLOCK_SIZE), + BAD_FUNC_ARG); + ExpectIntEQ(wc_CamelliaCbcEncrypt(&camellia, NULL, plainT, + CAMELLIA_BLOCK_SIZE), BAD_FUNC_ARG); + ExpectIntEQ(wc_CamelliaCbcEncrypt(&camellia, enc, NULL, + CAMELLIA_BLOCK_SIZE), BAD_FUNC_ARG); - if (camCbcE != 0) { - return TEST_FAIL; - } - - if (ret == 0) { - camCbcD = wc_CamelliaCbcDecrypt(NULL, dec, enc, CAMELLIA_BLOCK_SIZE); - if (camCbcD == BAD_FUNC_ARG) { - camCbcD = wc_CamelliaCbcDecrypt(&camellia, NULL, enc, - CAMELLIA_BLOCK_SIZE); - } - if (camCbcD == BAD_FUNC_ARG) { - camCbcD = wc_CamelliaCbcDecrypt(&camellia, dec, NULL, - CAMELLIA_BLOCK_SIZE); - } - if (camCbcD == BAD_FUNC_ARG) { - camCbcD = 0; - } - else { - camCbcD = WOLFSSL_FATAL_ERROR; - } - } /* END bad args. */ - - res = TEST_RES_CHECK(camCbcD == 0); + ExpectIntEQ(wc_CamelliaCbcDecrypt(NULL, dec, enc, CAMELLIA_BLOCK_SIZE), + BAD_FUNC_ARG); + ExpectIntEQ(wc_CamelliaCbcDecrypt(&camellia, NULL, enc, + CAMELLIA_BLOCK_SIZE), BAD_FUNC_ARG); + ExpectIntEQ(wc_CamelliaCbcDecrypt(&camellia, dec, NULL, + CAMELLIA_BLOCK_SIZE), BAD_FUNC_ARG); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_CamelliaCbcEncryptDecrypt */ @@ -19940,30 +16790,19 @@ static int test_wc_CamelliaCbcEncryptDecrypt(void) */ static int test_wc_Arc4SetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_RC4 Arc4 arc; const char* key = "\x01\x23\x45\x67\x89\xab\xcd\xef"; int keyLen = 8; - int ret = 0; - ret = wc_Arc4SetKey(&arc, (byte*)key, keyLen); + ExpectIntEQ(wc_Arc4SetKey(&arc, (byte*)key, keyLen), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_Arc4SetKey(NULL, (byte*)key, keyLen); - if (ret == BAD_FUNC_ARG) - ret = wc_Arc4SetKey(&arc, NULL, keyLen); /* NULL key */ - if (ret == BAD_FUNC_ARG) - ret = wc_Arc4SetKey(&arc, (byte*)key, 0); /* length == 0 */ - if (ret == BAD_FUNC_ARG) - ret = WOLFSSL_ERROR_NONE; - else - ret = WOLFSSL_FATAL_ERROR; - } /* END test bad args. */ - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_Arc4SetKey(NULL, (byte*)key, keyLen), BAD_FUNC_ARG); + ExpectIntEQ(wc_Arc4SetKey(&arc, NULL , keyLen), BAD_FUNC_ARG); + ExpectIntEQ(wc_Arc4SetKey(&arc, (byte*)key, 0 ), BAD_FUNC_ARG); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_Arc4SetKey */ @@ -19972,70 +16811,44 @@ static int test_wc_Arc4SetKey(void) */ static int test_wc_Arc4Process(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_RC4 - Arc4 enc, dec; + Arc4 enc; + Arc4 dec; const char* key = "\x01\x23\x45\x67\x89\xab\xcd\xef"; int keyLen = 8; const char* input = "\x01\x23\x45\x67\x89\xab\xcd\xef"; byte cipher[8]; byte plain[8]; - int ret; /* Init stack variables */ + XMEMSET(&enc, 0, sizeof(Arc4)); + XMEMSET(&dec, 0, sizeof(Arc4)); XMEMSET(cipher, 0, sizeof(cipher)); XMEMSET(plain, 0, sizeof(plain)); /* Use for async. */ - ret = wc_Arc4Init(&enc, NULL, INVALID_DEVID); - if (ret == 0) { - ret = wc_Arc4Init(&dec, NULL, INVALID_DEVID); - } + ExpectIntEQ(wc_Arc4Init(&enc, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_Arc4Init(&dec, NULL, INVALID_DEVID), 0); - if (ret == 0) { - ret = wc_Arc4SetKey(&enc, (byte*)key, keyLen); - } - if (ret == 0) { - ret = wc_Arc4SetKey(&dec, (byte*)key, keyLen); - } - if (ret == 0) { - ret = wc_Arc4Process(&enc, cipher, (byte*)input, keyLen); - } - if (ret == 0) { - ret = wc_Arc4Process(&dec, plain, cipher, keyLen); - if (ret != 0 || XMEMCMP(plain, input, keyLen)) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } + ExpectIntEQ(wc_Arc4SetKey(&enc, (byte*)key, keyLen), 0); + ExpectIntEQ(wc_Arc4SetKey(&dec, (byte*)key, keyLen), 0); + + ExpectIntEQ(wc_Arc4Process(&enc, cipher, (byte*)input, keyLen), 0); + ExpectIntEQ(wc_Arc4Process(&dec, plain, cipher, keyLen), 0); + ExpectIntEQ(XMEMCMP(plain, input, keyLen), 0); /* Bad args. */ - if (ret == 0) { - ret = wc_Arc4Process(NULL, plain, cipher, keyLen); - if (ret == BAD_FUNC_ARG) { - ret = wc_Arc4Process(&dec, NULL, cipher, keyLen); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_Arc4Process(&dec, plain, NULL, keyLen); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_Arc4Process(NULL, plain, cipher, keyLen), BAD_FUNC_ARG); + ExpectIntEQ(wc_Arc4Process(&dec, NULL, cipher, keyLen), BAD_FUNC_ARG); + ExpectIntEQ(wc_Arc4Process(&dec, plain, NULL, keyLen), BAD_FUNC_ARG); wc_Arc4Free(&enc); wc_Arc4Free(&dec); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); -}/* END test_wc_Arc4Process */ +} /* END test_wc_Arc4Process */ /* @@ -20043,38 +16856,24 @@ static int test_wc_Arc4Process(void) */ static int test_wc_InitRsaKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_RSA - RsaKey key; - int ret = 0; + RsaKey key; - ret = wc_InitRsaKey(&key, HEAP_HINT); + XMEMSET(&key, 0, sizeof(RsaKey)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_InitRsaKey(NULL, HEAP_HINT); - #ifndef HAVE_USER_RSA - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - #else - if (ret == USER_CRYPTO_ERROR) { - ret = 0; - } - else { - #endif - ret = WOLFSSL_FATAL_ERROR; - } - } /* end if */ - - if (wc_FreeRsaKey(&key) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); +#ifndef HAVE_USER_RSA + ExpectIntEQ(wc_InitRsaKey(NULL, HEAP_HINT), BAD_FUNC_ARG); +#else + ExpectIntEQ(wc_InitRsaKey(NULL, HEAP_HINT), USER_CRYPTO_ERROR); #endif - return res; + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); +#endif + return EXPECT_RESULT(); } /* END test_wc_InitRsaKey */ @@ -20083,79 +16882,52 @@ static int test_wc_InitRsaKey(void) */ static int test_wc_RsaPrivateKeyDecode(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && (defined(USE_CERT_BUFFERS_1024)\ || defined(USE_CERT_BUFFERS_2048)) && !defined(HAVE_FIPS) - RsaKey key; - byte* tmp; - word32 idx = 0; - int bytes = 0; - int ret = 0; + RsaKey key; + byte* tmp = NULL; + word32 idx = 0; + int bytes = 0; - tmp = (byte*)XMALLOC(FOURK_BUF, NULL, DYNAMIC_TYPE_TMP_BUFFER); - if (tmp == NULL) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_InitRsaKey(&key, HEAP_HINT); - } - if (ret == 0) { - #ifdef USE_CERT_BUFFERS_1024 - XMEMCPY(tmp, client_key_der_1024, sizeof_client_key_der_1024); - bytes = sizeof_client_key_der_1024; - #else - XMEMCPY(tmp, client_key_der_2048, sizeof_client_key_der_2048); - bytes = sizeof_client_key_der_2048; - #endif /* Use cert buffers. */ - - ret = wc_RsaPrivateKeyDecode(tmp, &idx, &key, (word32)bytes); - } - #ifndef HAVE_USER_RSA - /* Test bad args. */ - if (ret == 0) { - ret = wc_RsaPrivateKeyDecode(NULL, &idx, &key, (word32)bytes); - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaPrivateKeyDecode(tmp, NULL, &key, (word32)bytes); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaPrivateKeyDecode(tmp, &idx, NULL, (word32)bytes); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #else - /* Test bad args. User RSA. */ - if (ret == 0) { - ret = wc_RsaPrivateKeyDecode(NULL, &idx, &key, (word32)bytes); - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaPrivateKeyDecode(tmp, NULL, &key, (word32)bytes); - } - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaPrivateKeyDecode(tmp, &idx, NULL, (word32)bytes); - } - if (ret == USER_CRYPTO_ERROR) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #endif + XMEMSET(&key, 0, sizeof(RsaKey)); + ExpectNotNull(tmp = (byte*)XMALLOC(FOURK_BUF, NULL, + DYNAMIC_TYPE_TMP_BUFFER)); + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); if (tmp != NULL) { - XFREE(tmp, NULL, DYNAMIC_TYPE_TMP_BUFFER); - } - if (wc_FreeRsaKey(&key) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; + #ifdef USE_CERT_BUFFERS_1024 + XMEMCPY(tmp, client_key_der_1024, sizeof_client_key_der_1024); + bytes = sizeof_client_key_der_1024; + #else + XMEMCPY(tmp, client_key_der_2048, sizeof_client_key_der_2048); + bytes = sizeof_client_key_der_2048; + #endif /* Use cert buffers. */ } - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, &idx, &key, (word32)bytes), 0); +#ifndef HAVE_USER_RSA + /* Test bad args. */ + ExpectIntEQ(wc_RsaPrivateKeyDecode(NULL, &idx, &key, (word32)bytes), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, NULL, &key, (word32)bytes), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, &idx, NULL, (word32)bytes), + BAD_FUNC_ARG); +#else + /* Test bad args. User RSA. */ + ExpectIntEQ(wc_RsaPrivateKeyDecode(NULL, &idx, &key, (word32)bytes), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, NULL, &key, (word32)bytes), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, &idx, NULL, (word32)bytes), + USER_CRYPTO_ERROR); #endif - return res; + + XFREE(tmp, NULL, DYNAMIC_TYPE_TMP_BUFFER); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); +#endif + return EXPECT_RESULT(); } /* END test_wc_RsaPrivateKeyDecode */ @@ -20164,115 +16936,87 @@ static int test_wc_RsaPrivateKeyDecode(void) */ static int test_wc_RsaPublicKeyDecode(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && (defined(USE_CERT_BUFFERS_1024)\ || defined(USE_CERT_BUFFERS_2048)) && !defined(HAVE_FIPS) - RsaKey keyPub; - byte* tmp; - word32 idx = 0; - int bytes = 0; - word32 keySz = 0; - word32 tstKeySz = 0; - int ret = 0; + RsaKey keyPub; + byte* tmp = NULL; + word32 idx = 0; + int bytes = 0; + word32 keySz = 0; + word32 tstKeySz = 0; #if defined(WC_RSA_PSS) && !defined(NO_FILESYSTEM) - XFILE f; + XFILE f = XBADFILE; const char* rsaPssPubKey = "./certs/rsapss/ca-rsapss-key.der"; const char* rsaPssPubKeyNoParams = "./certs/rsapss/ca-3072-rsapss-key.der"; byte buf[4096]; #endif - tmp = (byte*)XMALLOC(GEN_BUF, NULL, DYNAMIC_TYPE_TMP_BUFFER); - if (tmp == NULL) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_InitRsaKey(&keyPub, HEAP_HINT); - } - if (ret == 0) { - #ifdef USE_CERT_BUFFERS_1024 - XMEMCPY(tmp, client_keypub_der_1024, sizeof_client_keypub_der_1024); - bytes = sizeof_client_keypub_der_1024; - keySz = 1024; - #else - XMEMCPY(tmp, client_keypub_der_2048, sizeof_client_keypub_der_2048); - bytes = sizeof_client_keypub_der_2048; - keySz = 2048; - #endif + XMEMSET(&keyPub, 0, sizeof(RsaKey)); - ret = wc_RsaPublicKeyDecode(tmp, &idx, &keyPub, (word32)bytes); - } - #ifndef HAVE_USER_RSA - /* Pass in bad args. */ - if (ret == 0) { - ret = wc_RsaPublicKeyDecode(NULL, &idx, &keyPub, (word32)bytes); - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaPublicKeyDecode(tmp, NULL, &keyPub, (word32)bytes); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaPublicKeyDecode(tmp, &idx, NULL, (word32)bytes); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectNotNull(tmp = (byte*)XMALLOC(GEN_BUF, NULL, DYNAMIC_TYPE_TMP_BUFFER)); + ExpectIntEQ(wc_InitRsaKey(&keyPub, HEAP_HINT), 0); + if (tmp != NULL) { + #ifdef USE_CERT_BUFFERS_1024 + XMEMCPY(tmp, client_keypub_der_1024, sizeof_client_keypub_der_1024); + bytes = sizeof_client_keypub_der_1024; + keySz = 1024; #else - /* Pass in bad args. */ - if (ret == 0) { - ret = wc_RsaPublicKeyDecode(NULL, &idx, &keyPub, (word32)bytes); - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaPublicKeyDecode(tmp, NULL, &keyPub, (word32)bytes); - } - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaPublicKeyDecode(tmp, &idx, NULL, (word32)bytes); - } - if (ret == USER_CRYPTO_ERROR) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + XMEMCPY(tmp, client_keypub_der_2048, sizeof_client_keypub_der_2048); + bytes = sizeof_client_keypub_der_2048; + keySz = 2048; #endif - - if (wc_FreeRsaKey(&keyPub) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; } - if (ret == 0) { - /* Test for getting modulus key size */ - idx = 0; - ret = wc_RsaPublicKeyDecode_ex(tmp, &idx, (word32)bytes, NULL, - &tstKeySz, NULL, NULL); - ret = (ret == 0 && tstKeySz == keySz/8) ? 0 : WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, &idx, &keyPub, (word32)bytes), 0); +#ifndef HAVE_USER_RSA + /* Pass in bad args. */ + ExpectIntEQ(wc_RsaPublicKeyDecode(NULL, &idx, &keyPub, (word32)bytes), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, NULL, &keyPub, (word32)bytes), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, &idx, NULL, (word32)bytes), + BAD_FUNC_ARG); +#else + /* Pass in bad args. */ + ExpectIntEQ(wc_RsaPublicKeyDecode(NULL, &idx, &keyPub, (word32)bytes), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, NULL, &keyPub, (word32)bytes), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaPublicKeyDecode(tmp, &idx, NULL, (word32)bytes), + USER_CRYPTO_ERROR); +#endif + + DoExpectIntEQ(wc_FreeRsaKey(&keyPub), 0); + + /* Test for getting modulus key size */ + idx = 0; + ExpectIntEQ(wc_RsaPublicKeyDecode_ex(tmp, &idx, (word32)bytes, NULL, + &tstKeySz, NULL, NULL), 0); + ExpectIntEQ(tstKeySz, keySz/8); #if defined(WC_RSA_PSS) && !defined(NO_FILESYSTEM) - f = XFOPEN(rsaPssPubKey, "rb"); - AssertTrue((f != XBADFILE)); - bytes = (int)XFREAD(buf, 1, sizeof(buf), f); - XFCLOSE(f); - idx = 0; - AssertIntEQ(wc_RsaPublicKeyDecode_ex(buf, &idx, bytes, NULL, NULL, NULL, - NULL), 0); - f = XFOPEN(rsaPssPubKeyNoParams, "rb"); - AssertTrue((f != XBADFILE)); - bytes = (int)XFREAD(buf, 1, sizeof(buf), f); - XFCLOSE(f); - idx = 0; - AssertIntEQ(wc_RsaPublicKeyDecode_ex(buf, &idx, bytes, NULL, NULL, NULL, - NULL), 0); -#endif - - if (tmp != NULL) { - XFREE(tmp, NULL, DYNAMIC_TYPE_TMP_BUFFER); + ExpectTrue((f = XFOPEN(rsaPssPubKey, "rb")) != XBADFILE); + ExpectIntGT(bytes = (int)XFREAD(buf, 1, sizeof(buf), f), 0); + if (f != XBADFILE) { + XFCLOSE(f); + f = XBADFILE; } - - res = TEST_RES_CHECK(ret == 0); + idx = 0; + ExpectIntEQ(wc_RsaPublicKeyDecode_ex(buf, &idx, bytes, NULL, NULL, NULL, + NULL), 0); + ExpectTrue((f = XFOPEN(rsaPssPubKeyNoParams, "rb")) != XBADFILE); + ExpectIntGT(bytes = (int)XFREAD(buf, 1, sizeof(buf), f), 0); + if (f != XBADFILE) + XFCLOSE(f); + idx = 0; + ExpectIntEQ(wc_RsaPublicKeyDecode_ex(buf, &idx, bytes, NULL, NULL, NULL, + NULL), 0); #endif - return res; + + XFREE(tmp, NULL, DYNAMIC_TYPE_TMP_BUFFER); +#endif + return EXPECT_RESULT(); } /* END test_wc_RsaPublicKeyDecode */ /* @@ -20280,62 +17024,37 @@ static int test_wc_RsaPublicKeyDecode(void) */ static int test_wc_RsaPublicKeyDecodeRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) - RsaKey key; - const byte n = 0x23; - const byte e = 0x03; - int nSz = sizeof(n); - int eSz = sizeof(e); - int ret; + RsaKey key; + const byte n = 0x23; + const byte e = 0x03; + int nSz = sizeof(n); + int eSz = sizeof(e); - ret = wc_InitRsaKey(&key, HEAP_HINT); - if (ret == 0) { - ret = wc_RsaPublicKeyDecodeRaw(&n, nSz, &e, eSz, &key); - } + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, &e, eSz, &key), 0); #ifndef HAVE_USER_RSA /* Pass in bad args. */ - if (ret == 0) { - ret = wc_RsaPublicKeyDecodeRaw(NULL, nSz, &e, eSz, &key); - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaPublicKeyDecodeRaw(&n, nSz, NULL, eSz, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaPublicKeyDecodeRaw(&n, nSz, &e, eSz, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(NULL, nSz, &e, eSz, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, NULL, eSz, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, &e, eSz, NULL), + BAD_FUNC_ARG); #else /* Pass in bad args. User RSA. */ - if (ret == 0) { - ret = wc_RsaPublicKeyDecodeRaw(NULL, nSz, &e, eSz, &key); - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaPublicKeyDecodeRaw(&n, nSz, NULL, eSz, &key); - } - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaPublicKeyDecodeRaw(&n, nSz, &e, eSz, NULL); - } - if (ret == USER_CRYPTO_ERROR) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(NULL, nSz, &e, eSz, &key), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, NULL, eSz, &key), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaPublicKeyDecodeRaw(&n, nSz, &e, eSz, NULL), + USER_CRYPTO_ERROR); #endif - if (wc_FreeRsaKey(&key) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_RsaPublicKeyDecodeRaw */ @@ -20370,83 +17089,50 @@ static int test_wc_RsaPublicKeyDecodeRaw(void) */ static int test_wc_MakeRsaKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey genKey; - WC_RNG rng; - #if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) - int bits = 1024; - #else - int bits = 2048; - #endif - int ret = 0; - - ret = wc_InitRsaKey(&genKey, HEAP_HINT); - if (ret == 0) { - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, &rng); - if (ret == 0 && wc_FreeRsaKey(&genKey) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } - #ifndef HAVE_USER_RSA - /* Test bad args. */ - if (ret == 0) { - ret = MAKE_RSA_KEY(NULL, bits, WC_RSA_EXPONENT, &rng); - if (ret == BAD_FUNC_ARG) { - ret = MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, NULL); - } - if (ret == BAD_FUNC_ARG) { - /* e < 3 */ - ret = MAKE_RSA_KEY(&genKey, bits, 2, &rng); - } - if (ret == BAD_FUNC_ARG) { - /* e & 1 == 0 */ - ret = MAKE_RSA_KEY(&genKey, bits, 6, &rng); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #else - /* Test bad args. */ - if (ret == 0) { - ret = MAKE_RSA_KEY(NULL, bits, WC_RSA_EXPONENT, &rng); - if (ret == USER_CRYPTO_ERROR) { - ret = MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, NULL); - } - if (ret == USER_CRYPTO_ERROR) { - /* e < 3 */ - ret = MAKE_RSA_KEY(&genKey, bits, 2, &rng); - } - if (ret == USER_CRYPTO_ERROR) { - /* e & 1 == 0 */ - ret = MAKE_RSA_KEY(&genKey, bits, 6, &rng); - } - if (ret == USER_CRYPTO_ERROR) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #endif - - if (wc_FreeRng(&rng) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); + RsaKey genKey; + WC_RNG rng; +#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) + int bits = 1024; +#else + int bits = 2048; #endif - return res; + XMEMSET(&genKey, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&genKey, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, &rng), 0); + DoExpectIntEQ(wc_FreeRsaKey(&genKey), 0); + +#ifndef HAVE_USER_RSA + /* Test bad args. */ + ExpectIntEQ(MAKE_RSA_KEY(NULL, bits, WC_RSA_EXPONENT, &rng), BAD_FUNC_ARG); + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, NULL), + BAD_FUNC_ARG); + /* e < 3 */ + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, 2, &rng), BAD_FUNC_ARG); + /* e & 1 == 0 */ + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, 6, &rng), BAD_FUNC_ARG); +#else + /* Test bad args. */ + ExpectIntEQ(MAKE_RSA_KEY(NULL, bits, WC_RSA_EXPONENT, &rng), + USER_CRYPTO_ERROR); + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, NULL), + USER_CRYPTO_ERROR); + /* e < 3 */ + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, 2, &rng), USER_CRYPTO_ERROR); + /* e & 1 == 0 */ + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, 6, &rng), USER_CRYPTO_ERROR); +#endif /* HAVE_USER_RSA */ + + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); } /* END test_wc_MakeRsaKey */ /* @@ -20460,7 +17146,7 @@ static int test_wc_MakeRsaKey(void) */ static int test_RsaDecryptBoundsCheck(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WC_RSA_NO_PADDING) && \ (defined(USE_CERT_BUFFERS_1024) || defined(USE_CERT_BUFFERS_2048)) && \ defined(WOLFSSL_PUBLIC_MP) && !defined(NO_RSA_BOUNDS_CHECK) @@ -20470,16 +17156,14 @@ static int test_RsaDecryptBoundsCheck(void) word32 flatCSz; byte out[256]; word32 outSz = sizeof(out); - int ret; - XMEMSET(&rng, 0, sizeof(rng)); + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_InitRng(&rng); + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); - if (ret == 0) - ret = wc_InitRsaKey(&key, HEAP_HINT); - - if (ret == 0) { + if (EXPECT_SUCCESS()) { const byte* derKey; word32 derKeySz; word32 idx = 0; @@ -20494,37 +17178,30 @@ static int test_RsaDecryptBoundsCheck(void) flatCSz = 256; #endif - ret = wc_RsaPrivateKeyDecode(derKey, &idx, &key, derKeySz); + ExpectIntEQ(wc_RsaPrivateKeyDecode(derKey, &idx, &key, derKeySz), 0); } - if (ret == 0) { + if (EXPECT_SUCCESS()) { XMEMSET(flatC, 0, flatCSz); flatC[flatCSz-1] = 1; - ret = wc_RsaDirect(flatC, flatCSz, out, &outSz, &key, - RSA_PRIVATE_DECRYPT, &rng); - - if (ret == RSA_OUT_OF_RANGE_E) { + ExpectIntEQ(wc_RsaDirect(flatC, flatCSz, out, &outSz, &key, + RSA_PRIVATE_DECRYPT, &rng), RSA_OUT_OF_RANGE_E); + if (EXPECT_SUCCESS()) { mp_int c; - mp_init_copy(&c, &key.n); - mp_sub_d(&c, 1, &c); - mp_to_unsigned_bin(&c, flatC); - ret = wc_RsaDirect(flatC, flatCSz, out, &outSz, &key, - RSA_PRIVATE_DECRYPT, NULL); + ExpectIntEQ(mp_init_copy(&c, &key.n), 0); + ExpectIntEQ(mp_sub_d(&c, 1, &c), 0); + ExpectIntEQ(mp_to_unsigned_bin(&c, flatC), 0); + ExpectIntEQ(wc_RsaDirect(flatC, flatCSz, out, &outSz, &key, + RSA_PRIVATE_DECRYPT, NULL), RSA_OUT_OF_RANGE_E); mp_clear(&c); } - if (ret == RSA_OUT_OF_RANGE_E) - ret = 0; - else - ret = WOLFSSL_FATAL_ERROR; } - if (wc_FreeRsaKey(&key) || wc_FreeRng(&rng) || ret != 0) - ret = WOLFSSL_FATAL_ERROR; - - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_RsaDecryptBoundsCheck */ /* @@ -20532,67 +17209,38 @@ static int test_RsaDecryptBoundsCheck(void) */ static int test_wc_SetKeyUsage(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_CERT_GEN) && !defined(HAVE_FIPS) - Cert myCert; - int ret = 0; + Cert myCert; - ret = wc_InitCert(&myCert); + ExpectIntEQ(wc_InitCert(&myCert), 0); + + ExpectIntEQ(wc_SetKeyUsage(&myCert, "keyEncipherment,keyAgreement"), 0); + ExpectIntEQ(wc_SetKeyUsage(&myCert, "digitalSignature,nonRepudiation"), 0); + ExpectIntEQ(wc_SetKeyUsage(&myCert, "contentCommitment,encipherOnly"), 0); + ExpectIntEQ(wc_SetKeyUsage(&myCert, "decipherOnly"), 0); + ExpectIntEQ(wc_SetKeyUsage(&myCert, "cRLSign,keyCertSign"), 0); - if (ret == 0) { - ret = wc_SetKeyUsage(&myCert, "keyEncipherment,keyAgreement"); - if (ret == 0) { - ret = wc_SetKeyUsage(&myCert, "digitalSignature,nonRepudiation"); - } - if (ret == 0) { - ret = wc_SetKeyUsage(&myCert, "contentCommitment,encipherOnly"); - } - if (ret == 0) { - ret = wc_SetKeyUsage(&myCert, "decipherOnly"); - } - if (ret == 0) { - ret = wc_SetKeyUsage(&myCert, "cRLSign,keyCertSign"); - } - } /* Test bad args. */ - if (ret == 0) { - ret = wc_SetKeyUsage(NULL, "decipherOnly"); - if (ret == BAD_FUNC_ARG) { - ret = wc_SetKeyUsage(&myCert, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_SetKeyUsage(&myCert, ""); - } - if (ret == KEYUSAGE_E) { - ret = wc_SetKeyUsage(&myCert, ","); - } - if (ret == KEYUSAGE_E) { - ret = wc_SetKeyUsage(&myCert, "digitalSignature, cRLSign"); - } - if (ret == KEYUSAGE_E) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_SetKeyUsage(NULL, "decipherOnly"), BAD_FUNC_ARG); + ExpectIntEQ(wc_SetKeyUsage(&myCert, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_SetKeyUsage(&myCert, ""), KEYUSAGE_E); + ExpectIntEQ(wc_SetKeyUsage(&myCert, ","), KEYUSAGE_E); + ExpectIntEQ(wc_SetKeyUsage(&myCert, "digitalSignature, cRLSign"), + KEYUSAGE_E); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_SetKeyUsage */ + /* * Testing wc_CheckProbablePrime() */ static int test_wc_CheckProbablePrime(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) - #define CHECK_PROBABLE_PRIME_KEY_BITS 2048 - RsaKey key; WC_RNG rng; byte e[3]; @@ -20606,360 +17254,204 @@ static int test_wc_CheckProbablePrime(void) byte q[CHECK_PROBABLE_PRIME_KEY_BITS / 8 / 2]; word32 qSz = (word32)sizeof(q); int nlen = CHECK_PROBABLE_PRIME_KEY_BITS; - int ret = 0; int* isPrime; int test[5]; isPrime = test; - ret = wc_InitRsaKey(&key, HEAP_HINT); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { - ret = wc_RsaSetRNG(&key, &rng); - } - if (ret == 0) { - ret = wc_MakeRsaKey(&key, CHECK_PROBABLE_PRIME_KEY_BITS, WC_RSA_EXPONENT, &rng); - } - if (ret == 0) { - PRIVATE_KEY_UNLOCK(); - ret = wc_RsaExportKey(&key, e, &eSz, n, &nSz, d, &dSz, - p, &pSz, q, &qSz); - PRIVATE_KEY_LOCK(); - } + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); + ExpectIntEQ(wc_MakeRsaKey(&key, CHECK_PROBABLE_PRIME_KEY_BITS, + WC_RSA_EXPONENT, &rng), 0); + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_RsaExportKey(&key, e, &eSz, n, &nSz, d, &dSz, p, &pSz, q, + &qSz), 0); + PRIVATE_KEY_LOCK(); + /* Bad cases */ - if (ret == 0) { - ret = wc_CheckProbablePrime(NULL, pSz, q, qSz, e, eSz, - nlen, isPrime); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_CheckProbablePrime(p, 0, q, qSz, e, eSz, - nlen, isPrime); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_CheckProbablePrime(p, pSz, NULL, qSz, e, eSz, - nlen, isPrime); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_CheckProbablePrime(p, pSz, q, 0, e, eSz, - nlen, isPrime); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_CheckProbablePrime(p, pSz, q, qSz, NULL, eSz, - nlen, isPrime); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_CheckProbablePrime(p, pSz, q, qSz, e, 0, - nlen, isPrime); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_CheckProbablePrime(NULL, 0, NULL, 0, NULL, 0, - nlen, isPrime); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_CheckProbablePrime(NULL, pSz, q, qSz, e, eSz, nlen, isPrime), + BAD_FUNC_ARG); + ExpectIntEQ(wc_CheckProbablePrime(p, 0, q, qSz, e, eSz, nlen, isPrime), + BAD_FUNC_ARG); + ExpectIntEQ(wc_CheckProbablePrime(p, pSz, NULL, qSz, e, eSz, nlen, isPrime), + BAD_FUNC_ARG); + ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, 0, e, eSz, nlen, isPrime), + BAD_FUNC_ARG); + ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, qSz, NULL, eSz, nlen, isPrime), + BAD_FUNC_ARG); + ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, qSz, e, 0, nlen, isPrime), + BAD_FUNC_ARG); + ExpectIntEQ(wc_CheckProbablePrime(NULL, 0, NULL, 0, NULL, 0, nlen, isPrime), + BAD_FUNC_ARG); /* Good case */ - if (ret == 0) { - ret = wc_CheckProbablePrime(p, pSz, q, qSz, e, eSz, - nlen, isPrime); - } - wc_FreeRsaKey(&key); + ExpectIntEQ(wc_CheckProbablePrime(p, pSz, q, qSz, e, eSz, nlen, isPrime), + 0); + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); wc_FreeRng(&rng); - #undef CHECK_PROBABLE_PRIME_KEY_BITS - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_CheckProbablePrime */ /* * Testing wc_RsaPSS_Verify() */ static int test_wc_RsaPSS_Verify(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) && defined(WC_RSA_PSS) RsaKey key; WC_RNG rng; int sz = 256; - byte* pt; const char* szMessage = "This is the string to be signed"; unsigned char pSignature[2048/8]; /* 2048 is RSA_KEY_SIZE */ unsigned char pDecrypted[2048/8]; + byte* pt = pDecrypted; word32 outLen = sizeof(pDecrypted); - int ret = 0; - pt = pDecrypted; - ret = wc_InitRsaKey(&key, HEAP_HINT); + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { - ret = wc_RsaSetRNG(&key, &rng); - } - if (ret == 0) { - ret = wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng); - } + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); + ExpectIntEQ(wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng), 0); + + ExpectIntGT(sz = wc_RsaPSS_Sign((byte*)szMessage, + (word32)XSTRLEN(szMessage)+1, pSignature, sizeof(pSignature), + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng), 0); - if (ret == 0) { - ret = wc_RsaPSS_Sign((byte*)szMessage, (word32)XSTRLEN(szMessage)+1, - pSignature, sizeof(pSignature), - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng); - if (ret > 0) { - sz = ret; - ret = 0; - } - } /* Bad cases */ - if (ret == 0) { - ret = wc_RsaPSS_Verify(NULL, sz, pt, outLen, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_RsaPSS_Verify(pSignature, 0, pt, outLen, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_RsaPSS_Verify(pSignature, sz, NULL, outLen, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_RsaPSS_Verify(NULL, 0, NULL, outLen, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - /* Good case */ - if (ret == 0) { - ret = wc_RsaPSS_Verify(pSignature, sz, pt, outLen, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret > 0) { - ret = 0; - } - } - wc_FreeRsaKey(&key); - wc_FreeRng(&rng); + ExpectIntEQ(wc_RsaPSS_Verify(NULL, sz, pt, outLen, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPSS_Verify(pSignature, 0, pt, outLen, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPSS_Verify(pSignature, sz, NULL, outLen, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPSS_Verify(NULL, 0, NULL, outLen, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); - res = TEST_RES_CHECK(ret == 0); + /* Good case */ + ExpectIntGT(wc_RsaPSS_Verify(pSignature, sz, pt, outLen, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), 0); + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + wc_FreeRng(&rng); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_RsaPSS_Verify */ /* * Testing wc_RsaPSS_VerifyCheck() */ static int test_wc_RsaPSS_VerifyCheck(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) && defined(WC_RSA_PSS) RsaKey key; WC_RNG rng; int sz = 256; /* 2048/8 */ - byte* pt; byte digest[32]; word32 digestSz = sizeof(digest); unsigned char pSignature[2048/8]; /* 2048 is RSA_KEY_SIZE */ word32 pSignatureSz = sizeof(pSignature); unsigned char pDecrypted[2048/8]; + byte* pt = pDecrypted; word32 outLen = sizeof(pDecrypted); - int ret = 0; - pt = pDecrypted; + + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(digest, 0, sizeof(digest)); XMEMSET(pSignature, 0, sizeof(pSignature)); - ret = wc_InitRsaKey(&key, HEAP_HINT); + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); + ExpectIntEQ(wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng), 0); + ExpectTrue((digestSz = wc_HashGetDigestSize(WC_HASH_TYPE_SHA256)) > 0); + ExpectIntEQ(wc_Hash(WC_HASH_TYPE_SHA256, pSignature, sz, digest, digestSz), + 0); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { - ret = wc_RsaSetRNG(&key, &rng); - } - if (ret == 0) { - ret = wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng); - } - if (ret == 0) { - digestSz = wc_HashGetDigestSize(WC_HASH_TYPE_SHA256); - ret = wc_Hash(WC_HASH_TYPE_SHA256, pSignature, sz, digest, digestSz); + ExpectIntGT(sz = wc_RsaPSS_Sign(digest, digestSz, pSignature, pSignatureSz, + WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng), 0); - } - - if (ret == 0) { - ret = wc_RsaPSS_Sign(digest, digestSz, pSignature, pSignatureSz, - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng); - if (ret > 0) { - sz = ret; - ret = 0; - } - } /* Bad cases */ - if (ret == 0) { - ret = wc_RsaPSS_VerifyCheck(NULL, sz, pt, outLen, - digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_RsaPSS_VerifyCheck(pSignature, 0, pt, outLen, - digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_RsaPSS_VerifyCheck(pSignature, sz, NULL, outLen, - digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_RsaPSS_VerifyCheck(NULL, 0, NULL, outLen, - digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_RsaPSS_VerifyCheck(NULL, sz, pt, outLen, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPSS_VerifyCheck(pSignature, 0, pt, outLen, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPSS_VerifyCheck(pSignature, sz, NULL, outLen, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPSS_VerifyCheck(NULL, 0, NULL, outLen, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); /* Good case */ - if (ret == 0) { - ret = wc_RsaPSS_VerifyCheck(pSignature, sz, pt, outLen, - digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret > 0) { - ret = 0; - } - } - wc_FreeRsaKey(&key); - wc_FreeRng(&rng); + ExpectIntGT(wc_RsaPSS_VerifyCheck(pSignature, sz, pt, outLen, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), 0); - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_FreeRsaKey(&key), 0); + wc_FreeRng(&rng); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_RsaPSS_VerifyCheck */ /* * Testing wc_RsaPSS_VerifyCheckInline() */ static int test_wc_RsaPSS_VerifyCheckInline(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_SELFTEST) && \ !defined(HAVE_FIPS) && defined(WC_RSA_BLINDING) && defined(WC_RSA_PSS) - RsaKey key; - WC_RNG rng; - int sz = 256; - byte* pt; - byte digest[32]; - word32 digestSz = sizeof(digest); - unsigned char pSignature[2048/8]; /* 2048 is RSA_KEY_SIZE */ - unsigned char pDecrypted[2048/8]; - int ret; - pt = pDecrypted; + RsaKey key; + WC_RNG rng; + int sz = 256; + byte digest[32]; + word32 digestSz = sizeof(digest); + unsigned char pSignature[2048/8]; /* 2048 is RSA_KEY_SIZE */ + unsigned char pDecrypted[2048/8]; + byte* pt = pDecrypted; - ret = wc_InitRsaKey(&key, HEAP_HINT); + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(digest, 0, sizeof(digest)); XMEMSET(pSignature, 0, sizeof(pSignature)); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { - ret = wc_RsaSetRNG(&key, &rng); - } - if (ret == 0) { - ret = wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng); - } - if (ret == 0) { - digestSz = wc_HashGetDigestSize(WC_HASH_TYPE_SHA256); - ret = wc_Hash(WC_HASH_TYPE_SHA256, pSignature, sz, digest, digestSz); + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); + ExpectIntEQ(wc_MakeRsaKey(&key, 2048, WC_RSA_EXPONENT, &rng), 0); + ExpectTrue((digestSz = wc_HashGetDigestSize(WC_HASH_TYPE_SHA256)) > 0); + ExpectIntEQ(wc_Hash(WC_HASH_TYPE_SHA256, pSignature, sz, digest, digestSz), + 0); - } + ExpectIntGT(sz = wc_RsaPSS_Sign(digest, digestSz, pSignature, + sizeof(pSignature), WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng), 0); - if (ret == 0) { - ret = wc_RsaPSS_Sign(digest, digestSz, pSignature, sizeof(pSignature), - WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key, &rng); - if (ret > 0) { - sz = ret; - ret = 0; - } - } /* Bad Cases */ - if (ret == 0) { - ret = wc_RsaPSS_VerifyCheckInline(NULL, sz, &pt, - digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_RsaPSS_VerifyCheckInline(pSignature, 0, NULL, - digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_RsaPSS_VerifyCheckInline(NULL, 0, &pt, - digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_RsaPSS_VerifyCheckInline(pSignature, sz, &pt, - digest, digestSz, WC_HASH_TYPE_SHA, WC_MGF1SHA256, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - /* Good case */ - if (ret == 0) { - ret = wc_RsaPSS_VerifyCheckInline(pSignature, sz, &pt, - digest, digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key); - if (ret > 0) { - ret = 0; - } - } - wc_FreeRsaKey(&key); - wc_FreeRng(&rng); + ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(NULL, sz, &pt, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(pSignature, 0, NULL, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(NULL, 0, &pt, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaPSS_VerifyCheckInline(pSignature, sz, &pt, digest, + digestSz, WC_HASH_TYPE_SHA, WC_MGF1SHA256, &key), BAD_FUNC_ARG); - res = TEST_RES_CHECK(ret == 0); + /* Good case */ + ExpectIntGT(wc_RsaPSS_VerifyCheckInline(pSignature, sz, &pt, digest, + digestSz, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, &key), 0); + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + wc_FreeRng(&rng); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_RsaPSS_VerifyCheckInline */ #if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) @@ -20976,162 +17468,100 @@ static void sample_mutex_cb (int flag, int type, const char* file, int line) */ static int test_wc_LockMutex_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) - int ret = 0; int flag = CRYPTO_LOCK; int type = 0; const char* file = "./test-LockMutex_ex.txt"; int line = 0; /* without SetMutexCb */ - ret = wc_LockMutex_ex(flag, type, file, line); - if (ret == BAD_STATE_E) { - ret = 0; - } + ExpectIntEQ(wc_LockMutex_ex(flag, type, file, line), BAD_STATE_E); /* with SetMutexCb */ - if (ret == 0) { - ret = wc_SetMutexCb(sample_mutex_cb); - if (ret == 0) { - ret = wc_LockMutex_ex(flag, type, file, line); - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_SetMutexCb(sample_mutex_cb), 0); + ExpectIntEQ(wc_LockMutex_ex(flag, type, file, line), 0); + ExpectIntEQ(wc_SetMutexCb(NULL), 0); #endif - return res; -}/*End test_wc_LockMutex_ex*/ + return EXPECT_RESULT(); +} /* End test_wc_LockMutex_ex*/ /* * Testing wc_SetMutexCb */ static int test_wc_SetMutexCb(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) - int ret = wc_SetMutexCb(sample_mutex_cb); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_SetMutexCb(sample_mutex_cb), 0); + ExpectIntEQ(wc_SetMutexCb(NULL), 0); #endif - return res; -}/*End test_wc_SetMutexCb*/ + return EXPECT_RESULT(); +} /* End test_wc_SetMutexCb*/ /* * Testing wc_RsaKeyToDer() */ static int test_wc_RsaKeyToDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey genKey; - WC_RNG rng; - byte* der; - int ret = 0; - #if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) + RsaKey genKey; + WC_RNG rng; + byte* der = NULL; +#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) int bits = 1024; word32 derSz = 611; /* (2 x 128) + 2 (possible leading 00) + (5 x 64) + 5 (possible leading 00) + 3 (e) + 8 (ASN tag) + 10 (ASN length) + 4 seqSz + 3 version */ - #else +#else int bits = 2048; word32 derSz = 1196; /* (2 x 256) + 2 (possible leading 00) + (5 x 128) + 5 (possible leading 00) + 3 (e) + 8 (ASN tag) + 17 (ASN length) + 4 seqSz + 3 version */ - #endif +#endif + XMEMSET(&rng, 0, sizeof(rng)); XMEMSET(&genKey, 0, sizeof(genKey)); - der = (byte*)XMALLOC(derSz, NULL, DYNAMIC_TYPE_TMP_BUFFER); - if (der == NULL) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectNotNull(der = (byte*)XMALLOC(derSz, NULL, DYNAMIC_TYPE_TMP_BUFFER)); /* Init structures. */ - if (ret == 0) { - ret = wc_InitRsaKey(&genKey, HEAP_HINT); - } - if (ret == 0) { - ret = wc_InitRng(&rng); - } + ExpectIntEQ(wc_InitRsaKey(&genKey, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); /* Make key. */ - if (ret == 0) { - ret = MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, &rng); - if (ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(MAKE_RSA_KEY(&genKey, bits, WC_RSA_EXPONENT, &rng), 0); - if (ret == 0) { - ret = wc_RsaKeyToDer(&genKey, der, derSz); - if (ret > 0) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #ifndef HAVE_USER_RSA - /* Pass good/bad args. */ - if (ret == 0) { - ret = wc_RsaKeyToDer(NULL, der, FOURK_BUF); - if (ret == BAD_FUNC_ARG) { - /* Get just the output length */ - ret = wc_RsaKeyToDer(&genKey, NULL, 0); - } - if (ret > 0) { - /* Try Public Key. */ - genKey.type = 0; - ret = wc_RsaKeyToDer(&genKey, der, FOURK_BUF); - #ifdef WOLFSSL_CHECK_MEM_ZERO - /* Put back to Private Key */ - genKey.type = 1; - #endif - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #else - /* Pass good/bad args. */ - if (ret == 0) { - ret = wc_RsaKeyToDer(NULL, der, FOURK_BUF); - if (ret == USER_CRYPTO_ERROR) { - /* Get just the output length */ - ret = wc_RsaKeyToDer(&genKey, NULL, 0); - } - if (ret > 0) { - /* Try Public Key. */ - genKey.type = 0; - ret = wc_RsaKeyToDer(&genKey, der, FOURK_BUF); - #ifdef WOLFSSL_CHECK_MEM_ZERO - /* Put back to Private Key */ - genKey.type = 1; - #endif - } - if (ret == USER_CRYPTO_ERROR) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntGT(wc_RsaKeyToDer(&genKey, der, derSz), 0); +#ifndef HAVE_USER_RSA + /* Pass good/bad args. */ + ExpectIntEQ(wc_RsaKeyToDer(NULL, der, FOURK_BUF), BAD_FUNC_ARG); + /* Get just the output length */ + ExpectIntGT(wc_RsaKeyToDer(&genKey, NULL, 0), 0); + /* Try Public Key. */ + genKey.type = 0; + ExpectIntEQ(wc_RsaKeyToDer(&genKey, der, FOURK_BUF), BAD_FUNC_ARG); + #ifdef WOLFSSL_CHECK_MEM_ZERO + /* Put back to Private Key */ + genKey.type = 1; + #endif +#else + /* Pass good/bad args. */ + ExpectIntEQ(wc_RsaKeyToDer(NULL, der, FOURK_BUF), USER_CRYPTO_ERROR); + /* Get just the output length */ + ExpectIntGT(wc_RsaKeyToDer(&genKey, NULL, 0), 0); + /* Try Public Key. */ + genKey.type = 0; + ExpectIntEQ(wc_RsaKeyToDer(&genKey, der, FOURK_BUF), USER_CRYPTO_ERROR); + #ifdef WOLFSSL_CHECK_MEM_ZERO + /* Put back to Private Key */ + genKey.type = 1; #endif - - if (der != NULL) { - XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); - } - if (wc_FreeRsaKey(&genKey) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - if (wc_FreeRng(&rng) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + + XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); + DoExpectIntEQ(wc_FreeRsaKey(&genKey), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); } /* END test_wc_RsaKeyToDer */ /* @@ -21139,113 +17569,55 @@ static int test_wc_RsaKeyToDer(void) */ static int test_wc_RsaKeyToPublicDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey key; - WC_RNG rng; - byte* der; - int ret = 0; - #if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) - int bits = 1024; - word32 derLen = 162; - #else - int bits = 2048; - word32 derLen = 294; - #endif + RsaKey key; + WC_RNG rng; + byte* der = NULL; +#if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ + (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) + int bits = 1024; + word32 derLen = 162; +#else + int bits = 2048; + word32 derLen = 294; +#endif +#ifndef HAVE_USER_RSA + int ret; +#endif XMEMSET(&rng, 0, sizeof(rng)); XMEMSET(&key, 0, sizeof(key)); - der = (byte*)XMALLOC(derLen, NULL, DYNAMIC_TYPE_TMP_BUFFER); - if (der == NULL) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_InitRsaKey(&key, HEAP_HINT); - } - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { - ret = MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng); - } + ExpectNotNull(der = (byte*)XMALLOC(derLen, NULL, DYNAMIC_TYPE_TMP_BUFFER)); + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); - if (ret == 0) { - /* test getting size only */ - ret = wc_RsaKeyToPublicDer(&key, NULL, derLen); - if (ret >= 0) - ret = 0; - } - if (ret == 0) { - ret = wc_RsaKeyToPublicDer(&key, der, derLen); - if (ret >= 0) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + /* test getting size only */ + ExpectIntGT(wc_RsaKeyToPublicDer(&key, NULL, derLen), 0); + ExpectIntGT(wc_RsaKeyToPublicDer(&key, der, derLen), 0); - if (ret == 0) { - /* test getting size only */ - ret = wc_RsaKeyToPublicDer_ex(&key, NULL, derLen, 0); - if (ret >= 0) - ret = 0; - } - if (ret == 0) { - ret = wc_RsaKeyToPublicDer_ex(&key, der, derLen, 0); - if (ret >= 0) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + /* test getting size only */ + ExpectIntGT(wc_RsaKeyToPublicDer_ex(&key, NULL, derLen, 0), 0); + ExpectIntGT(wc_RsaKeyToPublicDer_ex(&key, der, derLen, 0), 0); - #ifndef HAVE_USER_RSA - /* Pass in bad args. */ - if (ret == 0) { - ret = wc_RsaKeyToPublicDer(NULL, der, derLen); - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaKeyToPublicDer(&key, der, -1); - } - if (ret == BUFFER_E || ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #else - /* Pass in bad args. */ - if (ret == 0) { - ret = wc_RsaKeyToPublicDer(NULL, der, derLen); - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaKeyToPublicDer(&key, der, -1); - } - if (ret == USER_CRYPTO_ERROR) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #endif - - if (der != NULL) { - XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); - } - if (wc_FreeRsaKey(&key) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - if (wc_FreeRng(&rng) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); +#ifndef HAVE_USER_RSA + /* Pass in bad args. */ + ExpectIntEQ(wc_RsaKeyToPublicDer(NULL, der, derLen), BAD_FUNC_ARG); + ExpectIntLT(ret = wc_RsaKeyToPublicDer(&key, der, -1), 0); + ExpectTrue((ret == BUFFER_E) || (ret == BAD_FUNC_ARG)); +#else + /* Pass in bad args. */ + ExpectIntEQ(wc_RsaKeyToPublicDer(NULL, der, derLen), USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaKeyToPublicDer(&key, der, -1), USER_CRYPTO_ERROR); #endif - return res; + + XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); } /* END test_wc_RsaKeyToPublicDer */ @@ -21254,86 +17626,57 @@ static int test_wc_RsaKeyToPublicDer(void) */ static int test_wc_RsaPublicEncryptDecrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey key; - WC_RNG rng; - int ret = 0; + RsaKey key; + WC_RNG rng; const char inStr[] = TEST_STRING; const word32 plainLen = (word32)TEST_STRING_SZ; const word32 inLen = (word32)TEST_STRING_SZ; int bits = TEST_RSA_BITS; const word32 cipherLen = TEST_RSA_BYTES; word32 cipherLenResult = cipherLen; - WC_DECLARE_VAR(in, byte, TEST_STRING_SZ, NULL); WC_DECLARE_VAR(plain, byte, TEST_STRING_SZ, NULL); WC_DECLARE_VAR(cipher, byte, TEST_RSA_BYTES, NULL); #ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC - if (in == NULL || plain == NULL || cipher == NULL) { - fprintf(stderr, "test_wc_RsaPublicEncryptDecrypt malloc failed\n"); - return MEMORY_E; -} + ExpectNotNull(in); + ExpectNotNull(plain); + ExpectNotNull(cipher); #endif - XMEMCPY(in, inStr, inLen); + ExpectNotNull(XMEMCPY(in, inStr, inLen)); + + /* Initialize stack structures. */ + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); - ret = wc_InitRsaKey(&key, HEAP_HINT); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { - ret = MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng); - } /* Encrypt. */ - - if (ret == 0) { - ret = wc_RsaPublicEncrypt(in, inLen, cipher, cipherLen, &key, &rng); - if (ret >= 0) { - cipherLenResult = ret; - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - - /* Pass bad args. */ - /* Tests PsaPublicEncryptEx() which, is tested by another fn. No need dup.*/ - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntGT(cipherLenResult = wc_RsaPublicEncrypt(in, inLen, cipher, + cipherLen, &key, &rng), 0); + /* Pass bad args - tested in another testing function.*/ /* Decrypt */ - #if defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS) - /* Bind rng */ - if (ret == 0) { - ret = wc_RsaSetRNG(&key, &rng); - } - #endif - if (ret == 0) { - ret = wc_RsaPrivateDecrypt(cipher, cipherLenResult, plain, plainLen, &key); - } - if (ret >= 0) { - ret = XMEMCMP(plain, inStr, plainLen); - } - - /* Pass in bad args. */ - /* Tests RsaPrivateDecryptEx() which, is tested by another fn. No need dup.*/ +#if defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS) + /* Bind rng */ + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); +#endif + ExpectIntGE(wc_RsaPrivateDecrypt(cipher, cipherLenResult, plain, plainLen, + &key), 0); + ExpectIntEQ(XMEMCMP(plain, inStr, plainLen), 0); + /* Pass bad args - tested in another testing function.*/ WC_FREE_VAR(in, NULL); WC_FREE_VAR(plain, NULL); WC_FREE_VAR(cipher, NULL); - if (wc_FreeRsaKey(&key) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - if (wc_FreeRng(&rng) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_RsaPublicEncryptDecrypt */ @@ -21342,13 +17685,12 @@ static int test_wc_RsaPublicEncryptDecrypt(void) */ static int test_wc_RsaPublicEncryptDecrypt_ex(void) { - int result = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && !defined(HAVE_FIPS)\ && !defined(WC_NO_RSA_OAEP) && !defined(HAVE_USER_RSA)\ && !defined(NO_SHA256) RsaKey key; WC_RNG rng; - int ret; const char inStr[] = TEST_STRING; const word32 inLen = (word32)TEST_STRING_SZ; const word32 plainSz = (word32)TEST_STRING_SZ; @@ -21362,99 +17704,47 @@ static int test_wc_RsaPublicEncryptDecrypt_ex(void) WC_DECLARE_VAR(cipher, byte, TEST_RSA_BYTES, NULL); #ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC - if (in == NULL || plain == NULL || cipher == NULL) { - fprintf(stderr, "test_wc_RsaPublicEncryptDecrypt_exmalloc failed\n"); - return TEST_FAIL; - } + ExpectNotNull(in); + ExpectNotNull(plain); + ExpectNotNull(cipher); #endif - XMEMCPY(in, inStr, inLen); + ExpectNotNull(XMEMCPY(in, inStr, inLen)); /* Initialize stack structures. */ - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_InitRsaKey_ex(&key, HEAP_HINT, INVALID_DEVID), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); - ret = wc_InitRsaKey_ex(&key, HEAP_HINT, INVALID_DEVID); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { - ret = MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng); - } /* Encrypt */ - if (ret == 0) { - ret = wc_RsaPublicEncrypt_ex(in, inLen, cipher, cipherSz, &key, &rng, - WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, NULL, 0); - if (ret >= 0) { - idx = ret; - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - - /* Pass bad args. */ - /* Tests RsaPublicEncryptEx again. No need duplicate. */ - if (ret != 0) { - return TEST_FAIL; - } + ExpectIntGE(idx = wc_RsaPublicEncrypt_ex(in, inLen, cipher, cipherSz, &key, + &rng, WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, NULL, 0), 0); + /* Pass bad args - tested in another testing function.*/ #ifndef WOLFSSL_RSA_PUBLIC_ONLY /* Decrypt */ #if defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS) - if (ret == 0) { - ret = wc_RsaSetRNG(&key, &rng); - } + ExpectIntEQ(wc_RsaSetRNG(&key, &rng), 0); #endif - if (ret == 0) { - ret = wc_RsaPrivateDecrypt_ex(cipher, (word32)idx, - plain, plainSz, &key, WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, - WC_MGF1SHA256, NULL, 0); - } - if (ret >= 0) { - if (!XMEMCMP(plain, inStr, plainSz)) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntGE(wc_RsaPrivateDecrypt_ex(cipher, (word32)idx, plain, plainSz, + &key, WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, NULL, 0), 0); + ExpectIntEQ(XMEMCMP(plain, inStr, plainSz), 0); + /* Pass bad args - tested in another testing function.*/ - /*Pass bad args.*/ - /* Tests RsaPrivateDecryptEx() again. No need duplicate. */ - if (ret != 0) { - return TEST_FAIL; - } - - if (ret == 0) { - ret = wc_RsaPrivateDecryptInline_ex(cipher, (word32)idx, - &res, &key, WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, - WC_MGF1SHA256, NULL, 0); - - if (ret >= 0) { - if (!XMEMCMP(inStr, res, plainSz)) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntGE(wc_RsaPrivateDecryptInline_ex(cipher, (word32)idx, &res, &key, + WC_RSA_OAEP_PAD, WC_HASH_TYPE_SHA256, WC_MGF1SHA256, NULL, 0), 0); + ExpectIntEQ(XMEMCMP(inStr, res, plainSz), 0); #endif WC_FREE_VAR(in, NULL); WC_FREE_VAR(plain, NULL); WC_FREE_VAR(cipher, NULL); - if (wc_FreeRsaKey(&key) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - if (wc_FreeRng(&rng) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - result = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return result; + return EXPECT_RESULT(); } /* END test_wc_RsaPublicEncryptDecrypt_ex */ @@ -21463,16 +17753,15 @@ static int test_wc_RsaPublicEncryptDecrypt_ex(void) */ static int test_wc_RsaSSL_SignVerify(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey key; - WC_RNG rng; - int ret = 0; + RsaKey key; + WC_RNG rng; const char inStr[] = TEST_STRING; const word32 plainSz = (word32)TEST_STRING_SZ; const word32 inLen = (word32)TEST_STRING_SZ; - word32 idx = 0; - int bits = TEST_RSA_BITS; + word32 idx = 0; + int bits = TEST_RSA_BITS; const word32 outSz = TEST_RSA_BYTES; WC_DECLARE_VAR(in, byte, TEST_STRING_SZ, NULL); @@ -21480,142 +17769,75 @@ static int test_wc_RsaSSL_SignVerify(void) WC_DECLARE_VAR(plain, byte, TEST_STRING_SZ, NULL); #ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC - if (in == NULL || out == NULL || plain == NULL) { - fprintf(stderr, "test_wc_RsaSSL_SignVerify failed\n"); - return TEST_FAIL; - } + ExpectNotNull(in); + ExpectNotNull(out); + ExpectNotNull(plain); #endif - XMEMCPY(in, inStr, inLen); + ExpectNotNull(XMEMCPY(in, inStr, inLen)); - ret = wc_InitRsaKey(&key, HEAP_HINT); + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_InitRng(&rng); - } + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); - if (ret == 0) { - ret = MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng); - } /* Sign. */ - - if (ret == 0) { - ret = wc_RsaSSL_Sign(in, inLen, out, outSz, &key, &rng); - if (ret == (int)outSz) { - idx = ret; - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, out, outSz, &key, &rng), (int)outSz); + idx = (int)outSz; #ifndef HAVE_USER_RSA /* Test bad args. */ - if (ret == 0) { - ret = wc_RsaSSL_Sign(NULL, inLen, out, outSz, &key, &rng); - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaSSL_Sign(in, 0, out, outSz, &key, &rng); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaSSL_Sign(in, inLen, NULL, outSz, &key, &rng); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaSSL_Sign(in, inLen, out, outSz, NULL, &rng); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_RsaSSL_Sign(NULL, inLen, out, outSz, &key, &rng), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaSSL_Sign(in, 0, out, outSz, &key, &rng), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, NULL, outSz, &key, &rng), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, out, outSz, NULL, &rng), + BAD_FUNC_ARG); #else /* Test bad args. */ - if (ret == 0) { - ret = wc_RsaSSL_Sign(NULL, inLen, out, outSz, &key, &rng); - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaSSL_Sign(in, 0, out, outSz, &key, &rng); - } - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaSSL_Sign(in, inLen, NULL, outSz, &key, &rng); - } - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaSSL_Sign(in, inLen, out, outSz, NULL, &rng); - } - if (ret == USER_CRYPTO_ERROR) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_RsaSSL_Sign(NULL, inLen, out, outSz, &key, &rng), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaSSL_Sign(in, 0, out, outSz, &key, &rng), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, NULL, outSz, &key, &rng), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaSSL_Sign(in, inLen, out, outSz, NULL, &rng), + USER_CRYPTO_ERROR); #endif - if (ret != 0) { - return TEST_FAIL; - } /* Verify. */ - ret = wc_RsaSSL_Verify(out, idx, plain, plainSz, &key); - if (ret == (int)inLen) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - #ifndef HAVE_USER_RSA - /* Pass bad args. */ - if (ret == 0) { - ret = wc_RsaSSL_Verify(NULL, idx, plain, plainSz, &key); - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaSSL_Verify(out, 0, plain, plainSz, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaSSL_Verify(out, idx, NULL, plainSz, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaSSL_Verify(out, idx, plain, plainSz, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #else - /* Pass bad args. */ - if (ret == 0) { - ret = wc_RsaSSL_Verify(NULL, idx, plain, plainSz, &key); - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaSSL_Verify(out, 0, plain, plainSz, &key); - } - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaSSL_Verify(out, idx, NULL, plainSz, &key); - } - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaSSL_Verify(out, idx, plain, plainSz, NULL); - } - if (ret == USER_CRYPTO_ERROR) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #endif + ExpectIntEQ(wc_RsaSSL_Verify(out, idx, plain, plainSz, &key), (int)inLen); +#ifndef HAVE_USER_RSA + /* Pass bad args. */ + ExpectIntEQ(wc_RsaSSL_Verify(NULL, idx, plain, plainSz, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaSSL_Verify(out, 0, plain, plainSz, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaSSL_Verify(out, idx, NULL, plainSz, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaSSL_Verify(out, idx, plain, plainSz, NULL), + BAD_FUNC_ARG); +#else + /* Pass bad args. */ + ExpectIntEQ(wc_RsaSSL_Verify(NULL, idx, plain, plainSz, &key), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaSSL_Verify(out, 0, plain, plainSz, &key), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaSSL_Verify(out, idx, NULL, plainSz, &key), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaSSL_Verify(out, idx, plain, plainSz, NULL), + USER_CRYPTO_ERROR); +#endif WC_FREE_VAR(in, NULL); WC_FREE_VAR(out, NULL); WC_FREE_VAR(plain, NULL); - if (wc_FreeRsaKey(&key) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - if (wc_FreeRng(&rng) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_RsaSSL_SignVerify */ @@ -21624,76 +17846,39 @@ static int test_wc_RsaSSL_SignVerify(void) */ static int test_wc_RsaEncryptSize(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey key; - WC_RNG rng; - int ret; + RsaKey key; + WC_RNG rng; - ret = wc_InitRsaKey(&key, HEAP_HINT); + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_InitRng(&rng); - } + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); #if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) - if (ret == 0) { - ret = MAKE_RSA_KEY(&key, 1024, WC_RSA_EXPONENT, &rng); - if (ret == 0) { - ret = wc_RsaEncryptSize(&key); - } - if (ret == 128) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (wc_FreeRsaKey(&key) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } + ExpectIntEQ(MAKE_RSA_KEY(&key, 1024, WC_RSA_EXPONENT, &rng), 0); + + ExpectIntEQ(wc_RsaEncryptSize(&key), 128); + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); #endif - if (ret == 0) { - ret = MAKE_RSA_KEY(&key, 2048, WC_RSA_EXPONENT, &rng); - if (ret == 0) { - ret = wc_RsaEncryptSize(&key); - } - if (ret == 256) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(MAKE_RSA_KEY(&key, 2048, WC_RSA_EXPONENT, &rng), 0); + ExpectIntEQ(wc_RsaEncryptSize(&key), 256); /* Pass in bad arg. */ - if (ret == 0) { - ret = wc_RsaEncryptSize(NULL); - #ifndef HAVE_USER_RSA - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - #endif - } - - if (wc_FreeRsaKey(&key) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - if (wc_FreeRng(&rng) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); +#ifndef HAVE_USER_RSA + ExpectIntEQ(wc_RsaEncryptSize(NULL), BAD_FUNC_ARG); +#else + ExpectIntEQ(wc_RsaEncryptSize(NULL), 0); #endif - return res; + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); } /* END test_wc_RsaEncryptSize*/ @@ -21702,97 +17887,59 @@ static int test_wc_RsaEncryptSize(void) */ static int test_wc_RsaFlattenPublicKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) - RsaKey key; - WC_RNG rng; - int ret = 0; - byte e[256]; - byte n[256]; - word32 eSz = sizeof(e); - word32 nSz = sizeof(n); + RsaKey key; + WC_RNG rng; + byte e[256]; + byte n[256]; + word32 eSz = sizeof(e); + word32 nSz = sizeof(n); #if (!defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL)) && \ (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 4)) - int bits = 1024; + int bits = 1024; #else - int bits = 2048; + int bits = 2048; #endif - ret = wc_InitRsaKey(&key, HEAP_HINT); - if (ret == 0) { - ret = wc_InitRng(&rng); - } + XMEMSET(&key, 0, sizeof(RsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng); - if (ret >= 0) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(MAKE_RSA_KEY(&key, bits, WC_RSA_EXPONENT, &rng), 0); - if (ret == 0) { - ret = wc_RsaFlattenPublicKey(&key, e, &eSz, n, &nSz); - } - #ifndef HAVE_USER_RSA - /* Pass bad args. */ - if (ret == 0) { - ret = wc_RsaFlattenPublicKey(NULL, e, &eSz, n, &nSz); - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaFlattenPublicKey(&key, NULL, &eSz, n, &nSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaFlattenPublicKey(&key, e, NULL, n, &nSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaFlattenPublicKey(&key, e, &eSz, NULL, &nSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_RsaFlattenPublicKey(&key, e, &eSz, n, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #else - /* Pass bad args. */ - if (ret == 0) { - ret = wc_RsaFlattenPublicKey(NULL, e, &eSz, n, &nSz); - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaFlattenPublicKey(&key, NULL, &eSz, n, &nSz); - } - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaFlattenPublicKey(&key, e, NULL, n, &nSz); - } - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaFlattenPublicKey(&key, e, &eSz, NULL, &nSz); - } - if (ret == USER_CRYPTO_ERROR) { - ret = wc_RsaFlattenPublicKey(&key, e, &eSz, n, NULL); - } - if (ret == USER_CRYPTO_ERROR) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #endif - if (wc_FreeRsaKey(&key) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - if (wc_FreeRng(&rng) || ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, n, &nSz), 0); +#ifndef HAVE_USER_RSA + /* Pass bad args. */ + ExpectIntEQ(wc_RsaFlattenPublicKey(NULL, e, &eSz, n, &nSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, NULL, &eSz, n, &nSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, NULL, n, &nSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, NULL, &nSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, n, NULL), + BAD_FUNC_ARG); +#else + /* Pass bad args. */ + ExpectIntEQ(wc_RsaFlattenPublicKey(NULL, e, &eSz, n, &nSz), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, NULL, &eSz, n, &nSz), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, NULL, n, &nSz), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, NULL, &nSz), + USER_CRYPTO_ERROR); + ExpectIntEQ(wc_RsaFlattenPublicKey(&key, e, &eSz, n, NULL), + USER_CRYPTO_ERROR); #endif - return res; + + DoExpectIntEQ(wc_FreeRsaKey(&key), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif + return EXPECT_RESULT(); } /* END test_wc_RsaFlattenPublicKey */ @@ -21803,69 +17950,47 @@ static int test_wc_RsaFlattenPublicKey(void) */ static int test_wc_AesCcmSetKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_AESCCM Aes aes; - int ret = 0; - const byte key16[] = - { + const byte key16[] = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf }; - const byte key24[] = - { + const byte key24[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 }; - const byte key32[] = - { + const byte key32[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; - ret = wc_AesInit(&aes, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + XMEMSET(&aes, 0, sizeof(Aes)); + + ExpectIntEQ(wc_AesInit(&aes, NULL, INVALID_DEVID), 0); #ifdef WOLFSSL_AES_128 - ret = wc_AesCcmSetKey(&aes, key16, sizeof(key16)); + ExpectIntEQ(wc_AesCcmSetKey(&aes, key16, sizeof(key16)), 0); #endif #ifdef WOLFSSL_AES_192 - if (ret == 0) { - ret = wc_AesCcmSetKey(&aes, key24, sizeof(key24)); - } + ExpectIntEQ(wc_AesCcmSetKey(&aes, key24, sizeof(key24)), 0); #endif #ifdef WOLFSSL_AES_256 - if (ret == 0) { - ret = wc_AesCcmSetKey(&aes, key32, sizeof(key32)); - } + ExpectIntEQ(wc_AesCcmSetKey(&aes, key32, sizeof(key32)), 0); #endif /* Test bad args. */ - if (ret == 0) { - ret = wc_AesCcmSetKey(&aes, key16, sizeof(key16) - 1); - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCcmSetKey(&aes, key24, sizeof(key24) - 1); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_AesCcmSetKey(&aes, key32, sizeof(key32) - 1); - } - if (ret != BAD_FUNC_ARG) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } + ExpectIntEQ(wc_AesCcmSetKey(&aes, key16, sizeof(key16) - 1), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmSetKey(&aes, key24, sizeof(key24) - 1), BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmSetKey(&aes, key32, sizeof(key32) - 1), BAD_FUNC_ARG); wc_AesFree(&aes); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_AesCcmSetKey */ @@ -21874,178 +17999,107 @@ static int test_wc_AesCcmSetKey(void) */ static int test_wc_AesCcmEncryptDecrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_AESCCM) && defined(WOLFSSL_AES_128) Aes aes; - int ret = 0; - const byte key16[] = - { + const byte key16[] = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf }; /* plaintext */ - const byte plainT[] = - { + const byte plainT[] = { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e }; /* nonce */ - const byte iv[] = - { + const byte iv[] = { 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5 }; - const byte c[] = /* cipher text. */ - { + const byte c[] = { /* cipher text. */ 0x58, 0x8c, 0x97, 0x9a, 0x61, 0xc6, 0x63, 0xd2, 0xf0, 0x66, 0xd0, 0xc2, 0xc0, 0xf9, 0x89, 0x80, 0x6d, 0x5f, 0x6b, 0x61, 0xda, 0xc3, 0x84 }; - const byte t[] = /* Auth tag */ - { + const byte t[] = { /* Auth tag */ 0x17, 0xe8, 0xd1, 0x2c, 0xfd, 0xf9, 0x26, 0xe0 }; - const byte authIn[] = - { + const byte authIn[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }; byte cipherOut[sizeof(plainT)]; byte authTag[sizeof(t)]; - int ccmE = WOLFSSL_FATAL_ERROR; - #ifdef HAVE_AES_DECRYPT - int ccmD = WOLFSSL_FATAL_ERROR; - byte plainOut[sizeof(cipherOut)]; - #endif +#ifdef HAVE_AES_DECRYPT + byte plainOut[sizeof(cipherOut)]; +#endif - ret = wc_AesInit(&aes, NULL, INVALID_DEVID); - if (ret != 0) - return ret; + XMEMSET(&aes, 0, sizeof(Aes)); - ret = wc_AesCcmSetKey(&aes, key16, sizeof(key16)); - if (ret == 0) { - ccmE = wc_AesCcmEncrypt(&aes, cipherOut, plainT, sizeof(cipherOut), - iv, sizeof(iv), authTag, sizeof(authTag), - authIn , sizeof(authIn)); - if ((XMEMCMP(cipherOut, c, sizeof(c)) && ccmE == 0) || - XMEMCMP(t, authTag, sizeof(t))) { - ccmE = WOLFSSL_FATAL_ERROR; - ret = WOLFSSL_FATAL_ERROR; - } - #ifdef HAVE_AES_DECRYPT - if (ret == 0) { - ccmD = wc_AesCcmDecrypt(&aes, plainOut, cipherOut, - sizeof(plainOut), iv, sizeof(iv), - authTag, sizeof(authTag), - authIn, sizeof(authIn)); - if (XMEMCMP(plainOut, plainT, sizeof(plainT)) && ccmD == 0) { - ccmD = WOLFSSL_FATAL_ERROR; - } - } - #endif - } + ExpectIntEQ(wc_AesInit(&aes, NULL, INVALID_DEVID), 0); + ExpectIntEQ(wc_AesCcmSetKey(&aes, key16, sizeof(key16)), 0); + + ExpectIntEQ(wc_AesCcmEncrypt(&aes, cipherOut, plainT, sizeof(cipherOut), + iv, sizeof(iv), authTag, sizeof(authTag), authIn , sizeof(authIn)), 0); + ExpectIntEQ(XMEMCMP(cipherOut, c, sizeof(c)), 0); + ExpectIntEQ(XMEMCMP(t, authTag, sizeof(t)), 0); +#ifdef HAVE_AES_DECRYPT + ExpectIntEQ(wc_AesCcmDecrypt(&aes, plainOut, cipherOut, sizeof(plainOut), + iv, sizeof(iv), authTag, sizeof(authTag), authIn, sizeof(authIn)), 0); + ExpectIntEQ(XMEMCMP(plainOut, plainT, sizeof(plainT)), 0); +#endif /* Pass in bad args. Encrypt*/ - if (ret == 0 && ccmE == 0) { - ccmE = wc_AesCcmEncrypt(NULL, cipherOut, plainT, sizeof(cipherOut), - iv, sizeof(iv), authTag, sizeof(authTag), - authIn , sizeof(authIn)); - if (ccmE == BAD_FUNC_ARG) { - ccmE = wc_AesCcmEncrypt(&aes, NULL, plainT, sizeof(cipherOut), - iv, sizeof(iv), authTag, sizeof(authTag), - authIn , sizeof(authIn)); - } - if (ccmE == BAD_FUNC_ARG) { - ccmE = wc_AesCcmEncrypt(&aes, cipherOut, NULL, sizeof(cipherOut), - iv, sizeof(iv), authTag, sizeof(authTag), - authIn , sizeof(authIn)); - } - if (ccmE == BAD_FUNC_ARG) { - ccmE = wc_AesCcmEncrypt(&aes, cipherOut, plainT, sizeof(cipherOut), - NULL, sizeof(iv), authTag, sizeof(authTag), - authIn , sizeof(authIn)); - } - if (ccmE == BAD_FUNC_ARG) { - ccmE = wc_AesCcmEncrypt(&aes, cipherOut, plainT, sizeof(cipherOut), - iv, sizeof(iv), NULL, sizeof(authTag), - authIn , sizeof(authIn)); - } - if (ccmE == BAD_FUNC_ARG) { - ccmE = wc_AesCcmEncrypt(&aes, cipherOut, plainT, sizeof(cipherOut), - iv, sizeof(iv) + 1, authTag, sizeof(authTag), - authIn , sizeof(authIn)); - } - if (ccmE == BAD_FUNC_ARG) { - ccmE = wc_AesCcmEncrypt(&aes, cipherOut, plainT, sizeof(cipherOut), - iv, sizeof(iv) - 7, authTag, sizeof(authTag), - authIn , sizeof(authIn)); - } + ExpectIntEQ(wc_AesCcmEncrypt(NULL, cipherOut, plainT, sizeof(cipherOut), + iv, sizeof(iv), authTag, sizeof(authTag), authIn , sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmEncrypt(&aes, NULL, plainT, sizeof(cipherOut), + iv, sizeof(iv), authTag, sizeof(authTag), authIn , sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmEncrypt(&aes, cipherOut, NULL, sizeof(cipherOut), + iv, sizeof(iv), authTag, sizeof(authTag), authIn , sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmEncrypt(&aes, cipherOut, plainT, sizeof(cipherOut), + NULL, sizeof(iv), authTag, sizeof(authTag), authIn , sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmEncrypt(&aes, cipherOut, plainT, sizeof(cipherOut), + iv, sizeof(iv), NULL, sizeof(authTag), authIn , sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmEncrypt(&aes, cipherOut, plainT, sizeof(cipherOut), + iv, sizeof(iv) + 1, authTag, sizeof(authTag), authIn , sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmEncrypt(&aes, cipherOut, plainT, sizeof(cipherOut), + iv, sizeof(iv) - 7, authTag, sizeof(authTag), authIn , sizeof(authIn)), + BAD_FUNC_ARG); - if (ccmE != BAD_FUNC_ARG) { - ccmE = WOLFSSL_FATAL_ERROR; - } - else { - ccmE = 0; - } - } /* End Encrypt */ - - if (ccmE != 0) { - wc_AesFree(&aes); - return TEST_FAIL; - } - #ifdef HAVE_AES_DECRYPT - /* Pass in bad args. Decrypt*/ - if (ret == 0 && ccmD == 0) { - ccmD = wc_AesCcmDecrypt(NULL, plainOut, cipherOut, sizeof(plainOut), - iv, sizeof(iv), authTag, sizeof(authTag), - authIn, sizeof(authIn)); - if (ccmD == BAD_FUNC_ARG) { - ccmD = wc_AesCcmDecrypt(&aes, NULL, cipherOut, sizeof(plainOut), - iv, sizeof(iv), authTag, sizeof(authTag), - authIn, sizeof(authIn)); - } - if (ccmD == BAD_FUNC_ARG) { - ccmD = wc_AesCcmDecrypt(&aes, plainOut, NULL, sizeof(plainOut), - iv, sizeof(iv), authTag, sizeof(authTag), - authIn, sizeof(authIn)); - } - if (ccmD == BAD_FUNC_ARG) { - ccmD = wc_AesCcmDecrypt(&aes, plainOut, cipherOut, - sizeof(plainOut), NULL, sizeof(iv), - authTag, sizeof(authTag), - authIn, sizeof(authIn)); - } - if (ccmD == BAD_FUNC_ARG) { - ccmD = wc_AesCcmDecrypt(&aes, plainOut, cipherOut, - sizeof(plainOut), iv, sizeof(iv), NULL, - sizeof(authTag), authIn, sizeof(authIn)); - } - if (ccmD == BAD_FUNC_ARG) { - ccmD = wc_AesCcmDecrypt(&aes, plainOut, cipherOut, - sizeof(plainOut), iv, sizeof(iv) + 1, - authTag, sizeof(authTag), - authIn, sizeof(authIn)); - } - if (ccmD == BAD_FUNC_ARG) { - ccmD = wc_AesCcmDecrypt(&aes, plainOut, cipherOut, - sizeof(plainOut), iv, sizeof(iv) - 7, - authTag, sizeof(authTag), - authIn, sizeof(authIn)); - } - if (ccmD != BAD_FUNC_ARG) { - ccmD = WOLFSSL_FATAL_ERROR; - } - else { - ccmD = 0; - } - } /* END Decrypt */ - - res = TEST_RES_CHECK(ccmD == 0); +#ifdef HAVE_AES_DECRYPT + /* Pass in bad args. Decrypt*/ + ExpectIntEQ(wc_AesCcmDecrypt(NULL, plainOut, cipherOut, sizeof(plainOut), + iv, sizeof(iv), authTag, sizeof(authTag), authIn, sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmDecrypt(&aes, NULL, cipherOut, sizeof(plainOut), + iv, sizeof(iv), authTag, sizeof(authTag), authIn, sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmDecrypt(&aes, plainOut, NULL, sizeof(plainOut), + iv, sizeof(iv), authTag, sizeof(authTag), authIn, sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmDecrypt(&aes, plainOut, cipherOut, sizeof(plainOut), + NULL, sizeof(iv), authTag, sizeof(authTag), authIn, sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmDecrypt(&aes, plainOut, cipherOut, sizeof(plainOut), + iv, sizeof(iv), NULL, sizeof(authTag), authIn, sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmDecrypt(&aes, plainOut, cipherOut, sizeof(plainOut), + iv, sizeof(iv) + 1, authTag, sizeof(authTag), authIn, sizeof(authIn)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_AesCcmDecrypt(&aes, plainOut, cipherOut, sizeof(plainOut), + iv, sizeof(iv) - 7, authTag, sizeof(authTag), authIn, sizeof(authIn)), + BAD_FUNC_ARG); #endif wc_AesFree(&aes); #endif /* HAVE_AESCCM */ - return res; + return EXPECT_RESULT(); } /* END test_wc_AesCcmEncryptDecrypt */ @@ -22054,29 +18108,20 @@ static int test_wc_AesCcmEncryptDecrypt(void) */ static int test_wc_InitDsaKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_DSA - DsaKey key; - int ret = 0; + DsaKey key; - ret = wc_InitDsaKey(&key); + XMEMSET(&key, 0, sizeof(DsaKey)); + + ExpectIntEQ(wc_InitDsaKey(&key), 0); /* Pass in bad args. */ - if (ret == 0) { - ret = wc_InitDsaKey(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_InitDsaKey(NULL), BAD_FUNC_ARG); wc_FreeDsaKey(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_InitDsaKey */ @@ -22085,131 +18130,78 @@ static int test_wc_InitDsaKey(void) */ static int test_wc_DsaSignVerify(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DSA) - DsaKey key; - WC_RNG rng; - wc_Sha sha; - int ret = 0; - byte signature[DSA_SIG_SIZE]; - byte hash[WC_SHA_DIGEST_SIZE]; - word32 idx = 0; - word32 bytes; - int answer; + DsaKey key; + WC_RNG rng; + wc_Sha sha; + byte signature[DSA_SIG_SIZE]; + byte hash[WC_SHA_DIGEST_SIZE]; + word32 idx = 0; + word32 bytes; + int answer; #ifdef USE_CERT_BUFFERS_1024 - byte tmp[ONEK_BUF]; + byte tmp[ONEK_BUF]; + XMEMSET(tmp, 0, sizeof(tmp)); XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024); bytes = sizeof_dsa_key_der_1024; #elif defined(USE_CERT_BUFFERS_2048) - byte tmp[TWOK_BUF]; + byte tmp[TWOK_BUF]; + XMEMSET(tmp, 0, sizeof(tmp)); XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048); bytes = sizeof_dsa_key_der_2048; #else - byte tmp[TWOK_BUF]; + byte tmp[TWOK_BUF]; + XFILE fp = XBADFILE; + XMEMSET(tmp, 0, sizeof(tmp)); - XFILE fp = XFOPEN("./certs/dsa2048.der", "rb"); - if (fp == XBADFILE) { - return WOLFSSL_BAD_FILE; - } - bytes = (word32) XFREAD(tmp, 1, sizeof(tmp), fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/dsa2048.der", "rb")) != XBADFILE); + ExpectTrue((bytes = (word32)XFREAD(tmp, 1, sizeof(tmp), fp)) > 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif /* END USE_CERT_BUFFERS_1024 */ - ret = wc_InitSha(&sha); - if (ret == 0) { - ret = wc_ShaUpdate(&sha, tmp, bytes); - if (ret == 0) { - ret = wc_ShaFinal(&sha, hash); - } - if (ret == 0) { - ret = wc_InitDsaKey(&key); - } - if (ret == 0) { - ret = wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes); - } - if (ret == 0) { - ret = wc_InitRng(&rng); - } - } + ExpectIntEQ(wc_InitSha(&sha), 0); + ExpectIntEQ(wc_ShaUpdate(&sha, tmp, bytes), 0); + ExpectIntEQ(wc_ShaFinal(&sha, hash), 0); + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); /* Sign. */ - if (ret == 0) { - ret = wc_DsaSign(hash, signature, &key, &rng); - } - + ExpectIntEQ(wc_DsaSign(hash, signature, &key, &rng), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_DsaSign(NULL, signature, &key, &rng); - if (ret == BAD_FUNC_ARG) { - ret = wc_DsaSign(hash, NULL, &key, &rng); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_DsaSign(hash, signature, NULL, &rng); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_DsaSign(hash, signature, &key, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - - if (ret == 0) { - /* Verify. */ - ret = wc_DsaVerify(hash, signature, &key, &answer); - if (ret != 0 || answer != 1) { - ret = WOLFSSL_FATAL_ERROR; - } - else { - ret = 0; - } - } + ExpectIntEQ(wc_DsaSign(NULL, signature, &key, &rng), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaSign(hash, NULL, &key, &rng), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaSign(hash, signature, NULL, &rng), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaSign(hash, signature, &key, NULL), BAD_FUNC_ARG); + /* Verify. */ + ExpectIntEQ(wc_DsaVerify(hash, signature, &key, &answer), 0); + ExpectIntEQ(answer, 1); /* Pass in bad args. */ - if (ret == 0) { - ret = wc_DsaVerify(NULL, signature, &key, &answer); - if (ret == BAD_FUNC_ARG) { - ret = wc_DsaVerify(hash, NULL, &key, &answer); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_DsaVerify(hash, signature, NULL, &answer); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_DsaVerify(hash, signature, &key, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_DsaVerify(NULL, signature, &key, &answer), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaVerify(hash, NULL, &key, &answer), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaVerify(hash, signature, NULL, &answer), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaVerify(hash, signature, &key, NULL), BAD_FUNC_ARG); #if !defined(HAVE_FIPS) && defined(WOLFSSL_PUBLIC_MP) /* hard set q to 0 and test fail case */ mp_free(&key.q); mp_init(&key.q); - AssertIntEQ(wc_DsaSign(hash, signature, &key, &rng), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaSign(hash, signature, &key, &rng), BAD_FUNC_ARG); mp_set(&key.q, 1); - AssertIntEQ(wc_DsaSign(hash, signature, &key, &rng), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaSign(hash, signature, &key, &rng), BAD_FUNC_ARG); #endif - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - + DoExpectIntEQ(wc_FreeRng(&rng),0); wc_FreeDsaKey(&key); wc_ShaFree(&sha); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_DsaSign */ @@ -22218,95 +18210,55 @@ static int test_wc_DsaSignVerify(void) */ static int test_wc_DsaPublicPrivateKeyDecode(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DSA) - DsaKey key; - word32 bytes; - word32 idx = 0; - int priv = 0; - int pub = 0; - int ret = 0; - + DsaKey key; + word32 bytes; + word32 idx = 0; + int ret; #ifdef USE_CERT_BUFFERS_1024 - byte tmp[ONEK_BUF]; + byte tmp[ONEK_BUF]; + XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024); bytes = sizeof_dsa_key_der_1024; #elif defined(USE_CERT_BUFFERS_2048) - byte tmp[TWOK_BUF]; + byte tmp[TWOK_BUF]; + XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048); bytes = sizeof_dsa_key_der_2048; #else - byte tmp[TWOK_BUF]; + byte tmp[TWOK_BUF]; + XFILE fp = XBADFILE; + XMEMSET(tmp, 0, sizeof(tmp)); - XFILE fp = XFOPEN("./certs/dsa2048.der", "rb"); - if (fp == XBADFILE) - { - return WOLFSSL_BAD_FILE; - } - bytes = (word32) XFREAD(tmp, 1, sizeof(tmp), fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/dsa2048.der", "rb")) != XBADFILE); + ExpectTrue((bytes = (word32) XFREAD(tmp, 1, sizeof(tmp), fp)) > 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif /* END USE_CERT_BUFFERS_1024 */ - ret = wc_InitDsaKey(&key); - - if (ret == 0) { - priv = wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes); - - /* Test bad args. */ - if (priv == 0) { - priv = wc_DsaPrivateKeyDecode(NULL, &idx, &key, bytes); - if (priv == BAD_FUNC_ARG) { - priv = wc_DsaPrivateKeyDecode(tmp, NULL, &key, bytes); - } - if (priv == BAD_FUNC_ARG) { - priv = wc_DsaPrivateKeyDecode(tmp, &idx, NULL, bytes); - } - if (priv == BAD_FUNC_ARG) { - priv = wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes); - } - if (priv == ASN_PARSE_E || priv == BUFFER_E) { - priv = 0; - } - else { - priv = WOLFSSL_FATAL_ERROR; - } - } - - wc_FreeDsaKey(&key); - ret = wc_InitDsaKey(&key); - } - - if (ret == 0) { - idx = 0; /* Reset */ - pub = wc_DsaPublicKeyDecode(tmp, &idx, &key, bytes); - - /* Test bad args. */ - if (pub == 0) { - pub = wc_DsaPublicKeyDecode(NULL, &idx, &key, bytes); - if (pub == BAD_FUNC_ARG) { - pub = wc_DsaPublicKeyDecode(tmp, NULL, &key, bytes); - } - if (pub == BAD_FUNC_ARG) { - pub = wc_DsaPublicKeyDecode(tmp, &idx, NULL, bytes); - } - if (pub == BAD_FUNC_ARG) { - pub = wc_DsaPublicKeyDecode(tmp, &idx, &key, bytes); - } - if (pub == ASN_PARSE_E || pub == BUFFER_E) { - pub = 0; - } - else { - pub = WOLFSSL_FATAL_ERROR; - } - } - - } /* END Public Key */ - + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); + /* Test bad args. */ + ExpectIntEQ(wc_DsaPrivateKeyDecode(NULL, &idx, &key, bytes), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, NULL, &key, bytes), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, NULL, bytes), BAD_FUNC_ARG); + ExpectIntLT(ret = wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); + ExpectTrue((ret == ASN_PARSE_E) || (ret == BUFFER_E)); wc_FreeDsaKey(&key); - res = TEST_RES_CHECK(ret == 0 && pub == 0 && priv == 0); + ExpectIntEQ(wc_InitDsaKey(&key), 0); + idx = 0; /* Reset */ + ExpectIntEQ(wc_DsaPublicKeyDecode(tmp, &idx, &key, bytes), 0); + /* Test bad args. */ + ExpectIntEQ(wc_DsaPublicKeyDecode(NULL, &idx, &key, bytes), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaPublicKeyDecode(tmp, NULL, &key, bytes), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaPublicKeyDecode(tmp, &idx, NULL, bytes), BAD_FUNC_ARG); + ExpectIntLT(ret = wc_DsaPublicKeyDecode(tmp, &idx, &key, bytes), 0); + ExpectTrue((ret == ASN_PARSE_E) || (ret == BUFFER_E)); + wc_FreeDsaKey(&key); #endif /* !NO_DSA */ - return res; + return EXPECT_RESULT(); } /* END test_wc_DsaPublicPrivateKeyDecode */ @@ -22316,67 +18268,33 @@ static int test_wc_DsaPublicPrivateKeyDecode(void) */ static int test_wc_MakeDsaKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) - DsaKey genKey; - WC_RNG rng; - int ret = 0; + DsaKey genKey; + WC_RNG rng; - XMEMSET(&rng, 0, sizeof(rng)); XMEMSET(&genKey, 0, sizeof(genKey)); + XMEMSET(&rng, 0, sizeof(rng)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_InitDsaKey(&genKey); - } + ExpectIntEQ(wc_InitDsaKey(&genKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); - if (ret == 0) { - ret = wc_MakeDsaParameters(&rng, ONEK_BUF, &genKey); - } + ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF, &genKey), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_MakeDsaParameters(NULL, ONEK_BUF, &genKey); - if (ret == BAD_FUNC_ARG) { - ret = wc_MakeDsaParameters(&rng, ONEK_BUF, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_MakeDsaParameters(&rng, ONEK_BUF + 1, &genKey); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - - if (ret == 0) { - ret = wc_MakeDsaKey(&rng, &genKey); - } + ExpectIntEQ(wc_MakeDsaParameters(NULL, ONEK_BUF, &genKey), BAD_FUNC_ARG); + ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF + 1, &genKey), + BAD_FUNC_ARG); + ExpectIntEQ(wc_MakeDsaKey(&rng, &genKey), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_MakeDsaKey(NULL, &genKey); - if (ret == BAD_FUNC_ARG) { - ret = wc_MakeDsaKey(&rng, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FAILURE; - } + ExpectIntEQ(wc_MakeDsaKey(NULL, &genKey), BAD_FUNC_ARG); + ExpectIntEQ(wc_MakeDsaKey(&rng, NULL), BAD_FUNC_ARG); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_FreeDsaKey(&genKey); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_MakeDsaKey */ /* @@ -22384,88 +18302,54 @@ static int test_wc_MakeDsaKey(void) */ static int test_wc_DsaKeyToDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) - DsaKey genKey; - WC_RNG rng; - word32 bytes; - word32 idx = 0; - int ret = 0; + DsaKey key; + word32 bytes; + word32 idx = 0; #ifdef USE_CERT_BUFFERS_1024 - byte tmp[ONEK_BUF]; - byte der[ONEK_BUF]; + byte tmp[ONEK_BUF]; + byte der[ONEK_BUF]; + XMEMSET(tmp, 0, sizeof(tmp)); XMEMSET(der, 0, sizeof(der)); XMEMCPY(tmp, dsa_key_der_1024, sizeof_dsa_key_der_1024); bytes = sizeof_dsa_key_der_1024; #elif defined(USE_CERT_BUFFERS_2048) - byte tmp[TWOK_BUF]; - byte der[TWOK_BUF]; + byte tmp[TWOK_BUF]; + byte der[TWOK_BUF]; + XMEMSET(tmp, 0, sizeof(tmp)); XMEMSET(der, 0, sizeof(der)); XMEMCPY(tmp, dsa_key_der_2048, sizeof_dsa_key_der_2048); bytes = sizeof_dsa_key_der_2048; #else - byte tmp[TWOK_BUF]; - byte der[TWOK_BUF]; + byte tmp[TWOK_BUF]; + byte der[TWOK_BUF]; + XFILE fp = XBADFILE; + XMEMSET(tmp, 0, sizeof(tmp)); XMEMSET(der, 0, sizeof(der)); - XFILE fp = XFOPEN("./certs/dsa2048.der", "rb"); - if (fp == XBADFILE) { - return WOLFSSL_BAD_FILE; - } - bytes = (word32) XFREAD(tmp, 1, sizeof(tmp), fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/dsa2048.der", "rb")) != XBADFILE); + ExpectTrue((bytes = (word32) XFREAD(tmp, 1, sizeof(tmp), fp)) > 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif /* END USE_CERT_BUFFERS_1024 */ - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&genKey, 0, sizeof(genKey)); + XMEMSET(&key, 0, sizeof(DsaKey)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_InitDsaKey(&genKey); - } - if (ret == 0) { - ret = wc_MakeDsaParameters(&rng, sizeof(tmp), &genKey); - if (ret == 0) { - wc_FreeDsaKey(&genKey); - ret = wc_InitDsaKey(&genKey); - } - } - if (ret == 0) { - ret = wc_DsaPrivateKeyDecode(tmp, &idx, &genKey, bytes); - } - - if (ret == 0) { - ret = wc_DsaKeyToDer(&genKey, der, bytes); - if ( ret >= 0 && ( ret = XMEMCMP(der, tmp, bytes) ) == 0 ) { - ret = 0; - } - } + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_DsaPrivateKeyDecode(tmp, &idx, &key, bytes), 0); + ExpectIntGE(wc_DsaKeyToDer(&key, der, bytes), 0); + ExpectIntEQ(XMEMCMP(der, tmp, bytes), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_DsaKeyToDer(NULL, der, FOURK_BUF); - if (ret == BAD_FUNC_ARG) { - ret = wc_DsaKeyToDer(&genKey, NULL, FOURK_BUF); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_DsaKeyToDer(NULL, der, FOURK_BUF), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaKeyToDer(&key, NULL, FOURK_BUF), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - wc_FreeDsaKey(&genKey); - - res = TEST_RES_CHECK(ret == 0); + wc_FreeDsaKey(&key); #endif /* !NO_DSA && WOLFSSL_KEY_GEN */ - return res; + return EXPECT_RESULT(); } /* END test_wc_DsaKeyToDer */ @@ -22475,89 +18359,47 @@ static int test_wc_DsaKeyToDer(void) */ static int test_wc_DsaKeyToPublicDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef HAVE_SELFTEST #if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) - DsaKey genKey; - WC_RNG rng; - byte* der; - word32 sz; - int ret = 0; + DsaKey key; + WC_RNG rng; + byte* der = NULL; + word32 sz; + word32 idx = 0; - der = (byte*)XMALLOC(ONEK_BUF, NULL, DYNAMIC_TYPE_TMP_BUFFER); - if (der == NULL) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_InitDsaKey(&genKey); - } - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { - ret = wc_MakeDsaParameters(&rng, ONEK_BUF, &genKey); - } - if (ret == 0) { - ret = wc_MakeDsaKey(&rng, &genKey); - } + XMEMSET(&key, 0, sizeof(DsaKey)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectNotNull(der = (byte*)XMALLOC(ONEK_BUF, NULL, + DYNAMIC_TYPE_TMP_BUFFER)); + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_MakeDsaParameters(&rng, ONEK_BUF, &key), 0); + ExpectIntEQ(wc_MakeDsaKey(&rng, &key), 0); + + ExpectIntGE(sz = wc_DsaKeyToPublicDer(&key, der, ONEK_BUF), 0); + wc_FreeDsaKey(&key); + + idx = 0; + ExpectIntEQ(wc_DsaPublicKeyDecode(der, &idx, &key, sz), 0); - if (ret == 0) { - ret = wc_DsaKeyToPublicDer(&genKey, der, ONEK_BUF); - if (ret >= 0) { - sz = ret; - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - word32 idx = 0; - wc_FreeDsaKey(&genKey); - ret = wc_DsaPublicKeyDecode(der, &idx, &genKey, sz); - } /* Test without the SubjectPublicKeyInfo header */ - if (ret == 0) { - ret = wc_SetDsaPublicKey(der, &genKey, ONEK_BUF, 0); - if (ret >= 0) { - sz = ret; - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - word32 idx = 0; - wc_FreeDsaKey(&genKey); - ret = wc_DsaPublicKeyDecode(der, &idx, &genKey, sz); - } + ExpectIntGE(sz = wc_SetDsaPublicKey(der, &key, ONEK_BUF, 0), 0); + wc_FreeDsaKey(&key); + idx = 0; + ExpectIntEQ(wc_DsaPublicKeyDecode(der, &idx, &key, sz), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_DsaKeyToPublicDer(NULL, der, FOURK_BUF); - if (ret == BAD_FUNC_ARG) { - ret = wc_DsaKeyToPublicDer(&genKey, NULL, FOURK_BUF); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_DsaKeyToPublicDer(NULL, der, FOURK_BUF), BAD_FUNC_ARG); + ExpectIntEQ(wc_DsaKeyToPublicDer(&key, NULL, FOURK_BUF), BAD_FUNC_ARG); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_FreeDsaKey(&key); XFREE(der, NULL, DYNAMIC_TYPE_TMP_BUFFER); - wc_FreeDsaKey(&genKey); - - res = TEST_RES_CHECK(ret == 0); #endif /* !NO_DSA && WOLFSSL_KEY_GEN */ #endif /* !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } /* END test_wc_DsaKeyToPublicDer */ @@ -22566,11 +18408,9 @@ static int test_wc_DsaKeyToPublicDer(void) */ static int test_wc_DsaImportParamsRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DSA) - DsaKey key; - int ret = 0; - + DsaKey key; /* [mod = L=1024, N=160], from CAVP KeyPair */ const char* p = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d" "4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c" @@ -22585,44 +18425,28 @@ static int test_wc_DsaImportParamsRaw(void) "07610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c" "61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc0" "76341a7e7d9"; - /* invalid p and q parameters */ const char* invalidP = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d"; const char* invalidQ = "96c5390a"; - ret = wc_InitDsaKey(&key); - if (ret == 0) { - ret = wc_DsaImportParamsRaw(&key, p, q, g); - } + XMEMSET(&key, 0, sizeof(DsaKey)); + + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_DsaImportParamsRaw(&key, p, q, g), 0); /* test bad args */ - if (ret == 0) { - /* null key struct */ - ret = wc_DsaImportParamsRaw(NULL, p, q, g); - if (ret == BAD_FUNC_ARG) { - /* null param pointers */ - ret = wc_DsaImportParamsRaw(&key, NULL, NULL, NULL); - } - - if (ret == BAD_FUNC_ARG) { - /* illegal p length */ - ret = wc_DsaImportParamsRaw(&key, invalidP, q, g); - } - - if (ret == BAD_FUNC_ARG) { - /* illegal q length */ - ret = wc_DsaImportParamsRaw(&key, p, invalidQ, g); - if (ret == BAD_FUNC_ARG) - ret = 0; - } - - } + /* null key struct */ + ExpectIntEQ(wc_DsaImportParamsRaw(NULL, p, q, g), BAD_FUNC_ARG); + /* null param pointers */ + ExpectIntEQ(wc_DsaImportParamsRaw(&key, NULL, NULL, NULL), BAD_FUNC_ARG); + /* illegal p length */ + ExpectIntEQ(wc_DsaImportParamsRaw(&key, invalidP, q, g), BAD_FUNC_ARG); + /* illegal q length */ + ExpectIntEQ(wc_DsaImportParamsRaw(&key, p, invalidQ, g), BAD_FUNC_ARG); wc_FreeDsaKey(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_DsaImportParamsRaw */ @@ -22631,11 +18455,10 @@ static int test_wc_DsaImportParamsRaw(void) */ static int test_wc_DsaImportParamsRawCheck(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DSA) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - DsaKey key; - int ret = 0; - int trusted = 0; + DsaKey key; + int trusted = 0; /* [mod = L=1024, N=160], from CAVP KeyPair */ const char* p = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d" "4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c" @@ -22650,44 +18473,30 @@ static int test_wc_DsaImportParamsRawCheck(void) "07610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c" "61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc0" "76341a7e7d9"; - /* invalid p and q parameters */ const char* invalidP = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d"; const char* invalidQ = "96c5390a"; - ret = wc_InitDsaKey(&key); - if (ret == 0) { - ret = wc_DsaImportParamsRawCheck(&key, p, q, g, trusted, NULL); - } + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, p, q, g, trusted, NULL), 0); /* test bad args */ - if (ret == 0) { - /* null key struct */ - ret = wc_DsaImportParamsRawCheck(NULL, p, q, g, trusted, NULL); - if (ret == BAD_FUNC_ARG) { - /* null param pointers */ - ret = wc_DsaImportParamsRawCheck(&key, NULL, NULL, NULL, trusted, NULL); - } - - if (ret == BAD_FUNC_ARG) { - /* illegal p length */ - ret = wc_DsaImportParamsRawCheck(&key, invalidP, q, g, trusted, NULL); - } - - if (ret == BAD_FUNC_ARG) { - /* illegal q length */ - ret = wc_DsaImportParamsRawCheck(&key, p, invalidQ, g, trusted, NULL); - if (ret == BAD_FUNC_ARG) - ret = 0; - } - - } + /* null key struct */ + ExpectIntEQ(wc_DsaImportParamsRawCheck(NULL, p, q, g, trusted, NULL), + BAD_FUNC_ARG); + /* null param pointers */ + ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, NULL, NULL, NULL, trusted, + NULL), BAD_FUNC_ARG); + /* illegal p length */ + ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, invalidP, q, g, trusted, NULL), + BAD_FUNC_ARG); + /* illegal q length */ + ExpectIntEQ(wc_DsaImportParamsRawCheck(&key, p, invalidQ, g, trusted, NULL), + BAD_FUNC_ARG); wc_FreeDsaKey(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_DsaImportParamsRawCheck */ /* @@ -22695,11 +18504,9 @@ static int test_wc_DsaImportParamsRawCheck(void) */ static int test_wc_DsaExportParamsRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DSA) - DsaKey key; - int ret = 0; - + DsaKey key; /* [mod = L=1024, N=160], from CAVP KeyPair */ const char* p = "d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d" "4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c" @@ -22714,7 +18521,6 @@ static int test_wc_DsaExportParamsRaw(void) "07610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c" "61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc0" "76341a7e7d9"; - const char* pCompare = "\xd3\x83\x11\xe2\xcd\x38\x8c\x3e\xd6\x98\xe8\x2f" "\xdf\x88\xeb\x92\xb5\xa9\xa4\x83\xdc\x88\x00\x5d" "\x4b\x72\x5e\xf3\x41\xea\xbb\x47\xcf\x8a\x7a\x8a" @@ -22739,84 +18545,56 @@ static int test_wc_DsaExportParamsRaw(void) "\xb0\x0c\x61\xd3\x9e\x7d\xa8\x90\x22\x91\xc4\x43" "\x4a\x4e\x22\x24\xc3\xf4\xfd\x9f\x93\xcd\x6f\x4f" "\x17\xfc\x07\x63\x41\xa7\xe7\xd9"; - byte pOut[MAX_DSA_PARAM_SIZE]; byte qOut[MAX_DSA_PARAM_SIZE]; byte gOut[MAX_DSA_PARAM_SIZE]; - word32 pOutSz, qOutSz, gOutSz; + word32 pOutSz; + word32 qOutSz; + word32 gOutSz; - ret = wc_InitDsaKey(&key); - if (ret == 0) { - /* first test using imported raw parameters, for expected */ - ret = wc_DsaImportParamsRaw(&key, p, q, g); - } + XMEMSET(&key, 0, sizeof(DsaKey)); - if (ret == 0) { - pOutSz = sizeof(pOut); - qOutSz = sizeof(qOut); - gOutSz = sizeof(gOut); - ret = wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, - gOut, &gOutSz); - } - - if (ret == 0) { - /* validate exported parameters are correct */ - if ((XMEMCMP(pOut, pCompare, pOutSz) != 0) || - (XMEMCMP(qOut, qCompare, qOutSz) != 0) || - (XMEMCMP(gOut, gCompare, gOutSz) != 0) ) { - ret = -1; - } - } + ExpectIntEQ(wc_InitDsaKey(&key), 0); + /* first test using imported raw parameters, for expected */ + ExpectIntEQ(wc_DsaImportParamsRaw(&key, p, q, g), 0); + pOutSz = sizeof(pOut); + qOutSz = sizeof(qOut); + gOutSz = sizeof(gOut); + ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, + &gOutSz), 0); + /* validate exported parameters are correct */ + ExpectIntEQ(XMEMCMP(pOut, pCompare, pOutSz), 0); + ExpectIntEQ(XMEMCMP(qOut, qCompare, qOutSz), 0); + ExpectIntEQ(XMEMCMP(gOut, gCompare, gOutSz), 0); /* test bad args */ - if (ret == 0) { - /* null key struct */ - ret = wc_DsaExportParamsRaw(NULL, pOut, &pOutSz, qOut, &qOutSz, - gOut, &gOutSz); - - if (ret == BAD_FUNC_ARG) { - /* null output pointers */ - ret = wc_DsaExportParamsRaw(&key, NULL, &pOutSz, NULL, &qOutSz, - NULL, &gOutSz); - } - - if (ret == LENGTH_ONLY_E) { - /* null output size pointers */ - ret = wc_DsaExportParamsRaw(&key, pOut, NULL, qOut, NULL, - gOut, NULL); - } - - if (ret == BAD_FUNC_ARG) { - /* p output buffer size too small */ - pOutSz = 1; - ret = wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, - gOut, &gOutSz); - pOutSz = sizeof(pOut); - } - - if (ret == BUFFER_E) { - /* q output buffer size too small */ - qOutSz = 1; - ret = wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, - gOut, &gOutSz); - qOutSz = sizeof(qOut); - } - - if (ret == BUFFER_E) { - /* g output buffer size too small */ - gOutSz = 1; - ret = wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, - gOut, &gOutSz); - if (ret == BUFFER_E) - ret = 0; - } - } + /* null key struct */ + ExpectIntEQ(wc_DsaExportParamsRaw(NULL, pOut, &pOutSz, qOut, &qOutSz, gOut, + &gOutSz), BAD_FUNC_ARG); + /* null output pointers */ + ExpectIntEQ(wc_DsaExportParamsRaw(&key, NULL, &pOutSz, NULL, &qOutSz, NULL, + &gOutSz), LENGTH_ONLY_E); + /* null output size pointers */ + ExpectIntEQ( wc_DsaExportParamsRaw(&key, pOut, NULL, qOut, NULL, gOut, + NULL), BAD_FUNC_ARG); + /* p output buffer size too small */ + pOutSz = 1; + ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, + &gOutSz), BUFFER_E); + pOutSz = sizeof(pOut); + /* q output buffer size too small */ + qOutSz = 1; + ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, + &gOutSz), BUFFER_E); + qOutSz = sizeof(qOut); + /* g output buffer size too small */ + gOutSz = 1; + ExpectIntEQ(wc_DsaExportParamsRaw(&key, pOut, &pOutSz, qOut, &qOutSz, gOut, + &gOutSz), BUFFER_E); wc_FreeDsaKey(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_DsaExportParamsRaw */ /* @@ -22824,77 +18602,51 @@ static int test_wc_DsaExportParamsRaw(void) */ static int test_wc_DsaExportKeyRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DSA) && defined(WOLFSSL_KEY_GEN) - DsaKey key; - WC_RNG rng; - int ret = 0; - + DsaKey key; + WC_RNG rng; byte xOut[MAX_DSA_PARAM_SIZE]; byte yOut[MAX_DSA_PARAM_SIZE]; word32 xOutSz, yOutSz; - XMEMSET(&rng, 0, sizeof(rng)); XMEMSET(&key, 0, sizeof(key)); + XMEMSET(&rng, 0, sizeof(rng)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_InitDsaKey(&key); - } - - if (ret == 0) { - ret = wc_MakeDsaParameters(&rng, 1024, &key); - - if (ret == 0) { - ret = wc_MakeDsaKey(&rng, &key); - } - } + ExpectIntEQ(wc_InitDsaKey(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_MakeDsaParameters(&rng, 1024, &key), 0); + ExpectIntEQ(wc_MakeDsaKey(&rng, &key), 0); /* try successful export */ - if (ret == 0) { - xOutSz = sizeof(xOut); - yOutSz = sizeof(yOut); - ret = wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz); - } + xOutSz = sizeof(xOut); + yOutSz = sizeof(yOut); + ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz), 0); /* test bad args */ - if (ret == 0) { - /* null key struct */ - ret = wc_DsaExportKeyRaw(NULL, xOut, &xOutSz, yOut, &yOutSz); - - if (ret == BAD_FUNC_ARG) { - /* null output pointers */ - ret = wc_DsaExportKeyRaw(&key, NULL, &xOutSz, NULL, &yOutSz); - } - - if (ret == LENGTH_ONLY_E) { - /* null output size pointers */ - ret = wc_DsaExportKeyRaw(&key, xOut, NULL, yOut, NULL); - } - - if (ret == BAD_FUNC_ARG) { - /* x output buffer size too small */ - xOutSz = 1; - ret = wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz); - xOutSz = sizeof(xOut); - } - - if (ret == BUFFER_E) { - /* y output buffer size too small */ - yOutSz = 1; - ret = wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz); - - if (ret == BUFFER_E) - ret = 0; - } - } + /* null key struct */ + ExpectIntEQ(wc_DsaExportKeyRaw(NULL, xOut, &xOutSz, yOut, &yOutSz), + BAD_FUNC_ARG); + /* null output pointers */ + ExpectIntEQ(wc_DsaExportKeyRaw(&key, NULL, &xOutSz, NULL, &yOutSz), + LENGTH_ONLY_E); + /* null output size pointers */ + ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, NULL, yOut, NULL), + BAD_FUNC_ARG); + /* x output buffer size too small */ + xOutSz = 1; + ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz), + BUFFER_E); + xOutSz = sizeof(xOut); + /* y output buffer size too small */ + yOutSz = 1; + ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz), + BUFFER_E); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_FreeDsaKey(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_DsaExportParamsRaw */ @@ -22903,89 +18655,56 @@ static int test_wc_DsaExportKeyRaw(void) */ static int test_wc_ed25519_make_key(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) - ed25519_key key; - WC_RNG rng; - unsigned char pubkey[ED25519_PUB_KEY_SIZE]; - int ret = 0; + ed25519_key key; + WC_RNG rng; + unsigned char pubkey[ED25519_PUB_KEY_SIZE]; + + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_ed25519_make_public(&key, pubkey, sizeof(pubkey)), + ECC_PRIV_KEY_E); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ed25519_init(&key); - } - if (ret == 0) { - ret = wc_ed25519_make_public(&key, pubkey, sizeof(pubkey)); - if (ret == ECC_PRIV_KEY_E) { - ret = 0; - } - else if (ret == 0) { - ret = -1; - } - } - if (ret == 0) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key); - } /* Test bad args. */ - if (ret == 0) { - ret = wc_ed25519_make_key(NULL, ED25519_KEY_SIZE, &key); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE - 1, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE + 1, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed25519_make_key(NULL, ED25519_KEY_SIZE, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, NULL), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE - 1, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE + 1, &key), + BAD_FUNC_ARG); - - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed25519_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed25519_make_key */ - /* * Testing wc_ed25519_init() */ static int test_wc_ed25519_init(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) - ed25519_key key; - int ret = 0; + ed25519_key key; - ret = wc_ed25519_init(&key); + XMEMSET(&key, 0, sizeof(ed25519_key)); + ExpectIntEQ(wc_ed25519_init(&key), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ed25519_init(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed25519_init(NULL), BAD_FUNC_ARG); wc_ed25519_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed25519_init */ /* @@ -22993,116 +18712,72 @@ static int test_wc_ed25519_init(void) */ static int test_wc_ed25519_sign_msg(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) && defined(HAVE_ED25519_SIGN) - WC_RNG rng; - ed25519_key key; - int ret = 0; - byte msg[] = "Everybody gets Friday off.\n"; - byte sig[ED25519_SIG_SIZE]; - word32 msglen = sizeof(msg); - word32 siglen = sizeof(sig); - word32 badSigLen = sizeof(sig) - 1; + WC_RNG rng; + ed25519_key key; + byte msg[] = "Everybody gets Friday off.\n"; + byte sig[ED25519_SIG_SIZE]; + word32 msglen = sizeof(msg); + word32 siglen = sizeof(sig); + word32 badSigLen = sizeof(sig) - 1; #ifdef HAVE_ED25519_VERIFY - int verify_ok = 0; /*1 = Verify success.*/ + int verify_ok = 0; /*1 = Verify success.*/ #endif /* Initialize stack variables. */ + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(sig, 0, siglen); /* Initialize key. */ - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ed25519_init(&key); - if (ret == 0) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key); - } - } + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, &siglen, &key), 0); + ExpectIntEQ(siglen, ED25519_SIG_SIZE); - if (ret == 0) { - ret = wc_ed25519_sign_msg(msg, msglen, sig, &siglen, &key); - } /* Test bad args. */ - if (ret == 0 && siglen == ED25519_SIG_SIZE) { - ret = wc_ed25519_sign_msg(NULL, msglen, sig, &siglen, &key); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_sign_msg(msg, msglen, NULL, &siglen, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_sign_msg(msg, msglen, sig, NULL, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_sign_msg(msg, msglen, sig, &siglen, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_sign_msg(msg, msglen, sig, &badSigLen, &key); - } - if (ret == BUFFER_E && badSigLen == ED25519_SIG_SIZE) { - badSigLen -= 1; - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* END sign */ + ExpectIntEQ(wc_ed25519_sign_msg(NULL, msglen, sig, &siglen, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, NULL, &siglen, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, NULL, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, &siglen, NULL), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, &badSigLen, &key), + BUFFER_E); + ExpectIntEQ(badSigLen, ED25519_SIG_SIZE); + badSigLen -= 1; #ifdef HAVE_ED25519_VERIFY - if (ret == 0) { + ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen, msg, msglen, &verify_ok, + &key), 0); + ExpectIntEQ(verify_ok, 1); - ret = wc_ed25519_verify_msg(sig, siglen, msg, msglen, &verify_ok, &key); - if (ret == 0 && verify_ok == 1) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - /* Test bad args. */ - if (ret == 0) { - AssertIntEQ(wc_ed25519_verify_msg(sig, siglen - 1, msg, - msglen, &verify_ok, &key), - BAD_FUNC_ARG); - AssertIntEQ(wc_ed25519_verify_msg(sig, siglen + 1, msg, - msglen, &verify_ok, &key), - BAD_FUNC_ARG); - - ret = wc_ed25519_verify_msg(NULL, siglen, msg, msglen, &verify_ok, - &key); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_verify_msg(sig, siglen, NULL, msglen, - &verify_ok, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_verify_msg(sig, siglen, msg, msglen, - NULL, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_verify_msg(sig, siglen, msg, msglen, - &verify_ok, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_verify_msg(sig, badSigLen, msg, msglen, - &verify_ok, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - - } /* END verify. */ + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen - 1, msg, msglen, &verify_ok, + &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen + 1, msg, msglen, &verify_ok, + &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_verify_msg(NULL, siglen, msg, msglen, &verify_ok, + &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen, NULL, msglen, &verify_ok, + &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen, msg, msglen, NULL, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen, msg, msglen, &verify_ok, + NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_verify_msg(sig, badSigLen, msg, msglen, &verify_ok, + &key), BAD_FUNC_ARG); #endif /* Verify. */ - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed25519_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed25519_sign_msg */ @@ -23111,58 +18786,32 @@ static int test_wc_ed25519_sign_msg(void) */ static int test_wc_ed25519_import_public(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_IMPORT) - WC_RNG rng; - ed25519_key pubKey; - const byte in[] = "Ed25519PublicKeyUnitTest......\n"; - word32 inlen = sizeof(in); - int ret = 0; + ed25519_key pubKey; + WC_RNG rng; + const byte in[] = "Ed25519PublicKeyUnitTest......\n"; + word32 inlen = sizeof(in); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ed25519_init(&pubKey); - if (ret == 0) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &pubKey); - } - } + XMEMSET(&pubKey, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_ed25519_import_public_ex(in, inlen, &pubKey, 1); + ExpectIntEQ(wc_ed25519_init(&pubKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &pubKey), 0); - if (ret == 0 && XMEMCMP(in, pubKey.p, inlen) == 0) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_ed25519_import_public_ex(in, inlen, &pubKey, 1), 0); + ExpectIntEQ(XMEMCMP(in, pubKey.p, inlen), 0); - /* Test bad args. */ - if (ret == 0) { - ret = wc_ed25519_import_public(NULL, inlen, &pubKey); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_import_public(in, inlen, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_import_public(in, inlen - 1, &pubKey); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_import_public(NULL, inlen, &pubKey), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_import_public(in, inlen, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_import_public(in, inlen - 1, &pubKey), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed25519_free(&pubKey); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END wc_ed25519_import_public */ /* @@ -23170,11 +18819,10 @@ static int test_wc_ed25519_import_public(void) */ static int test_wc_ed25519_import_private_key(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_IMPORT) - WC_RNG rng; ed25519_key key; - int ret; + WC_RNG rng; const byte privKey[] = "Ed25519PrivateKeyUnitTest.....\n"; const byte pubKey[] = "Ed25519PublicKeyUnitTest......\n"; word32 privKeySz = sizeof(privKey); @@ -23184,80 +18832,44 @@ static int test_wc_ed25519_import_private_key(void) word32 bothKeysSz = sizeof(bothKeys); #endif - ret = wc_InitRng(&rng); - if (ret != 0) { - return ret; - } - ret = wc_ed25519_init(&key); - if (ret != 0) { - wc_FreeRng(&rng); - return ret; - } - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key); + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_ed25519_import_private_key_ex(privKey, privKeySz, pubKey, - pubKeySz, &key, 1); - if (ret == 0 && (XMEMCMP(pubKey, key.p, privKeySz) != 0 - || XMEMCMP(privKey, key.k, pubKeySz) != 0)) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_ed25519_import_private_key_ex(privKey, privKeySz, pubKey, + pubKeySz, &key, 1), 0); + ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); + ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); #ifdef HAVE_ED25519_KEY_EXPORT - if (ret == 0) - ret = wc_ed25519_export_private(&key, bothKeys, &bothKeysSz); - - if (ret == 0) { - ret = wc_ed25519_import_private_key_ex(bothKeys, bothKeysSz, NULL, 0, - &key, 1); - if (ret == 0 && (XMEMCMP(pubKey, key.p, privKeySz) != 0 - || XMEMCMP(privKey, key.k, pubKeySz) != 0)) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed25519_export_private(&key, bothKeys, &bothKeysSz), 0); + ExpectIntEQ(wc_ed25519_import_private_key_ex(bothKeys, bothKeysSz, NULL, 0, + &key, 1), 0); + ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); + ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); #endif /* Test bad args. */ - if (ret == 0) { - ret = wc_ed25519_import_private_key(NULL, privKeySz, pubKey, pubKeySz, - &key); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_import_private_key(privKey, privKeySz, NULL, - pubKeySz, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_import_private_key(privKey, privKeySz, pubKey, - pubKeySz, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_import_private_key(privKey, privKeySz - 1, pubKey, - pubKeySz, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_import_private_key(privKey, privKeySz, pubKey, - pubKeySz - 1, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_import_private_key(privKey, privKeySz, NULL, - 0, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed25519_import_private_key(NULL, privKeySz, pubKey, pubKeySz, + &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, NULL, + pubKeySz, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, pubKey, + pubKeySz, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz - 1, pubKey, + pubKeySz, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, pubKey, + pubKeySz - 1, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_import_private_key(privKey, privKeySz, NULL, 0, + &key), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed25519_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed25519_import_private_key */ /* @@ -23265,85 +18877,45 @@ static int test_wc_ed25519_import_private_key(void) */ static int test_wc_ed25519_export(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) - WC_RNG rng; - ed25519_key key; - int ret = 0; - byte priv[ED25519_PRV_KEY_SIZE]; - byte pub[ED25519_PUB_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); + ed25519_key key; + WC_RNG rng; + byte priv[ED25519_PRV_KEY_SIZE]; + byte pub[ED25519_PUB_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); - ret = wc_InitRng(&rng); - if (ret != 0) { - return ret; - } + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_ed25519_init(&key); - if (ret != 0) { - wc_FreeRng(&rng); - return ret; - } + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); - if (ret == 0) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key); - } + ExpectIntEQ(wc_ed25519_export_public(&key, pub, &pubSz), 0); + ExpectIntEQ(pubSz, ED25519_KEY_SIZE); + ExpectIntEQ(XMEMCMP(key.p, pub, pubSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_export_public(NULL, pub, &pubSz), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_export_public(&key, NULL, &pubSz), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_export_public(&key, pub, NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed25519_export_public(&key, pub, &pubSz); - if (ret == 0 && (pubSz != ED25519_KEY_SIZE - || XMEMCMP(key.p, pub, pubSz) != 0)) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_ed25519_export_public(NULL, pub, &pubSz); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_export_public(&key, NULL, &pubSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_export_public(&key, pub, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntEQ(wc_ed25519_export_private_only(&key, priv, &privSz), 0); + ExpectIntEQ(privSz, ED25519_KEY_SIZE); + ExpectIntEQ(XMEMCMP(key.k, priv, privSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_export_private_only(NULL, priv, &privSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_export_private_only(&key, NULL, &privSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_export_private_only(&key, priv, NULL), + BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed25519_export_private_only(&key, priv, &privSz); - if (ret == 0 && (privSz != ED25519_KEY_SIZE - || XMEMCMP(key.k, priv, privSz) != 0)) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_ed25519_export_private_only(NULL, priv, &privSz); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_export_private_only(&key, NULL, &privSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_export_private_only(&key, priv, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } - - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed25519_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed25519_export */ /* @@ -23351,86 +18923,38 @@ static int test_wc_ed25519_export(void) */ static int test_wc_ed25519_size(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) - WC_RNG rng; - ed25519_key key; - int ret; + ed25519_key key; + WC_RNG rng; - ret = wc_InitRng(&rng); - if (ret != 0) { - return ret; - } - ret = wc_ed25519_init(&key); - if (ret != 0) { - wc_FreeRng(&rng); - return ret; - } + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key); - if (ret != 0) { - wc_FreeRng(&rng); - wc_ed25519_free(&key); - return ret; - } + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); - ret = wc_ed25519_size(&key); + ExpectIntEQ(wc_ed25519_size(&key), ED25519_KEY_SIZE); /* Test bad args. */ - if (ret == ED25519_KEY_SIZE) { - ret = wc_ed25519_size(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_ed25519_size(NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed25519_sig_size(&key); - if (ret == ED25519_SIG_SIZE) { - ret = 0; - } - /* Test bad args. */ - if (ret == 0) { - ret = wc_ed25519_sig_size(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - } /* END wc_ed25519_sig_size() */ + ExpectIntEQ(wc_ed25519_sig_size(&key), ED25519_SIG_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_sig_size(NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed25519_pub_size(&key); - if (ret == ED25519_PUB_KEY_SIZE) { - ret = 0; - } - if (ret == 0) { - ret = wc_ed25519_pub_size(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - } /* END wc_ed25519_pub_size */ + ExpectIntEQ(wc_ed25519_pub_size(&key), ED25519_PUB_KEY_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_pub_size(NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed25519_priv_size(&key); - if (ret == ED25519_PRV_KEY_SIZE) { - ret = 0; - } - if (ret == 0) { - ret = wc_ed25519_priv_size(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - } /* END wc_ed25519_pub_size */ + ExpectIntEQ(wc_ed25519_priv_size(&key), ED25519_PRV_KEY_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_priv_size(NULL), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed25519_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed25519_size */ /* @@ -23438,90 +18962,52 @@ static int test_wc_ed25519_size(void) */ static int test_wc_ed25519_exportKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) - WC_RNG rng; - ed25519_key key; - int ret = 0; - byte priv[ED25519_PRV_KEY_SIZE]; - byte pub[ED25519_PUB_KEY_SIZE]; - byte privOnly[ED25519_PRV_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - word32 privOnlySz = sizeof(privOnly); + WC_RNG rng; + ed25519_key key; + byte priv[ED25519_PRV_KEY_SIZE]; + byte pub[ED25519_PUB_KEY_SIZE]; + byte privOnly[ED25519_PRV_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); + word32 privOnlySz = sizeof(privOnly); - ret = wc_InitRng(&rng); - if (ret != 0) { - return TEST_FAIL; - } - ret = wc_ed25519_init(&key); - if (ret != 0) { - wc_FreeRng(&rng); - return TEST_FAIL; - } + XMEMSET(&key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key); - if (ret != 0) { - wc_FreeRng(&rng); - wc_ed25519_free(&key); - return TEST_FAIL; - } + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); - ret = wc_ed25519_export_private(&key, privOnly, &privOnlySz); - if (ret == 0) { - ret = wc_ed25519_export_private(NULL, privOnly, &privOnlySz); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_export_private(&key, NULL, &privOnlySz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_export_private(&key, privOnly, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed25519_export_private(&key, privOnly, &privOnlySz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_export_private(NULL, privOnly, &privOnlySz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_export_private(&key, NULL, &privOnlySz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_export_private(&key, privOnly, NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed25519_export_key(&key, priv, &privSz, pub, &pubSz); - if (ret == 0) { - ret = wc_ed25519_export_key(NULL, priv, &privSz, pub, &pubSz); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_export_key(&key, NULL, &privSz, pub, &pubSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_export_key(&key, priv, NULL, pub, &pubSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_export_key(&key, priv, &privSz, NULL, &pubSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed25519_export_key(&key, priv, &privSz, pub, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } /* END wc_ed25519_export_key() */ + ExpectIntEQ(wc_ed25519_export_key(&key, priv, &privSz, pub, &pubSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed25519_export_key(NULL, priv, &privSz, pub, &pubSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_export_key(&key, NULL, &privSz, pub, &pubSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_export_key(&key, priv, NULL, pub, &pubSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_export_key(&key, priv, &privSz, NULL, &pubSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_export_key(&key, priv, &privSz, pub, NULL), + BAD_FUNC_ARG); /* Cross check output. */ - if (ret == 0 && XMEMCMP(priv, privOnly, privSz) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(XMEMCMP(priv, privOnly, privSz), 0); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed25519_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed25519_exportKey */ /* @@ -23529,61 +19015,36 @@ static int test_wc_ed25519_exportKey(void) */ static int test_wc_Ed25519PublicKeyToDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) && \ (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - int tmp; ed25519_key key; - byte derBuf[1024]; - int ret = 0; + byte derBuf[1024]; + + XMEMSET(&key, 0, sizeof(ed25519_key)); /* Test bad args */ - tmp = wc_Ed25519PublicKeyToDer(NULL, NULL, 0, 0); - if (tmp != BAD_FUNC_ARG) { - ret = WOLFSSL_FATAL_ERROR; - } - - if (ret == 0) { - wc_ed25519_init(&key); - tmp = wc_Ed25519PublicKeyToDer(&key, derBuf, 0, 0); - if (tmp != BUFFER_E) { - ret = WOLFSSL_FATAL_ERROR; - } - wc_ed25519_free(&key); - } + ExpectIntEQ(wc_Ed25519PublicKeyToDer(NULL, NULL, 0, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_Ed25519PublicKeyToDer(&key, derBuf, 0, 0), BUFFER_E); + wc_ed25519_free(&key); /* Test good args */ - if (ret == 0) { - WC_RNG rng; - ret = wc_InitRng(&rng); - if (ret != 0) { - return TEST_FAIL; - } - ret = wc_ed25519_init(&key); - if (ret != 0) { - wc_FreeRng(&rng); - return TEST_FAIL; - } + if (EXPECT_SUCCESS()) { + WC_RNG rng; - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key); - if (ret != 0) { - wc_FreeRng(&rng); - wc_ed25519_free(&key); - return TEST_FAIL; - } + XMEMSET(&rng, 0, sizeof(WC_RNG)); - tmp = wc_Ed25519PublicKeyToDer(&key, derBuf, 1024, 1); - if (tmp <= 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_ed25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0); + ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, derBuf, 1024, 1), 0); - wc_FreeRng(&rng); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed25519_free(&key); } - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END testing wc_Ed25519PublicKeyToDer */ /* @@ -23591,59 +19052,40 @@ static int test_wc_Ed25519PublicKeyToDer(void) */ static int test_wc_curve25519_init(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE25519) - curve25519_key key; - int ret = 0; + curve25519_key key; - ret = wc_curve25519_init(&key); + ExpectIntEQ(wc_curve25519_init(&key), 0); /* Test bad args for wc_curve25519_init */ - if (ret == 0) { - ret = wc_curve25519_init(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_curve25519_init(NULL), BAD_FUNC_ARG); - /* Test good args for wc_curve_25519_free */ + /* Test good args for wc_curve_25519_free */ wc_curve25519_free(&key); - + /* Test bad args for wc_curve25519 free. */ wc_curve25519_free(NULL); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_curve25519_init and wc_curve_25519_free*/ /* * Testing test_wc_curve25519_size. */ static int test_wc_curve25519_size(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE25519) - curve25519_key key; - int ret = 0; + curve25519_key key; - ret = wc_curve25519_init(&key); - - /* Test good args for wc_curve25519_size */ - if (ret == 0) { - ret = wc_curve25519_size(&key); - } + ExpectIntEQ(wc_curve25519_init(&key), 0); + /* Test good args for wc_curve25519_size */ + ExpectIntEQ(wc_curve25519_size(&key), CURVE25519_KEYSIZE); /* Test bad args for wc_curve25519_size */ - if (ret != 0) { - ret = wc_curve25519_size(NULL); - } + ExpectIntEQ(wc_curve25519_size(NULL), 0); wc_curve25519_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_curve25519_size*/ /* @@ -23651,120 +19093,67 @@ static int test_wc_curve25519_size(void) */ static int test_wc_curve25519_export_key_raw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE25519) && defined(HAVE_CURVE25519_KEY_EXPORT) - curve25519_key key; - WC_RNG rng; - int ret = 0; + curve25519_key key; + WC_RNG rng; + byte privateKey[CURVE25519_KEYSIZE]; + byte publicKey[CURVE25519_KEYSIZE]; + word32 prvkSz; + word32 pubkSz; + byte prik[CURVE25519_KEYSIZE]; + byte pubk[CURVE25519_KEYSIZE]; + word32 prksz; + word32 pbksz; - byte privateKey[CURVE25519_KEYSIZE]; - byte publicKey[CURVE25519_KEYSIZE]; - word32 prvkSz; - word32 pubkSz; + XMEMSET(&rng, 0, sizeof(WC_RNG)); - byte prik[CURVE25519_KEYSIZE]; - byte pubk[CURVE25519_KEYSIZE]; - word32 prksz; - word32 pbksz; + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); - if (0 != wc_InitRng(&rng)) { - return TEST_FAIL; - } - if (0 != wc_curve25519_init(&key)) { - wc_FreeRng(&rng); - return TEST_FAIL; - } + /* bad-argument-test cases - target function should return BAD_FUNC_ARG */ + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw(NULL, privateKey, &prvkSz, + publicKey, &pubkSz), BAD_FUNC_ARG); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw(&key, NULL, &prvkSz, publicKey, + &pubkSz), BAD_FUNC_ARG); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, NULL, + publicKey, &pubkSz), BAD_FUNC_ARG); + /* prvkSz = CURVE25519_KEYSIZE; */ + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, &prvkSz, + NULL, &pubkSz), BAD_FUNC_ARG); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, &prvkSz, + publicKey, NULL), BAD_FUNC_ARG); - ret = wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key); - - /* - bad-argument-test cases - target function sould return BAD_FUNC_ARG - */ - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw( - NULL, privateKey, &prvkSz, publicKey, &pubkSz)) { - ret = -1; - } - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw( - &key, NULL, &prvkSz, publicKey, &pubkSz)) { - ret = -1; - } - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw( - &key, privateKey, NULL, publicKey, &pubkSz)) { - ret = -1; - } - } - - if (ret == 0) { - /* prvkSz = CURVE25519_KEYSIZE; */ - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw( - &key, privateKey, &prvkSz, NULL, &pubkSz)) { - ret = -1; - } - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw( - &key, privateKey, &prvkSz, publicKey, NULL )) { - ret = -1; - } - } - - /* - cross-testing - */ - if (ret == 0) { - prksz = CURVE25519_KEYSIZE; - ret = wc_curve25519_export_private_raw(&key, prik, &prksz); - } - - if (ret == 0) { - pbksz = CURVE25519_KEYSIZE; - ret = wc_curve25519_export_public(&key, pubk, &pbksz); - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - /* pubkSz = CURVE25519_KEYSIZE; */ - ret = wc_curve25519_export_key_raw(&key, privateKey, &prvkSz, - publicKey, &pubkSz); - } - - if (ret == 0) { - if ((prksz == CURVE25519_KEYSIZE) && - (pbksz == CURVE25519_KEYSIZE) && - (prvkSz == CURVE25519_KEYSIZE) && - (pubkSz == CURVE25519_KEYSIZE)) { - - if (0 != XMEMCMP(privateKey, prik, CURVE25519_KEYSIZE) || - 0 != XMEMCMP(publicKey, pubk, CURVE25519_KEYSIZE)) { - ret = -1; - } - } - } + /* cross-testing */ + prksz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_private_raw(&key, prik, &prksz), 0); + pbksz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_public(&key, pubk, &pbksz), 0); + prvkSz = CURVE25519_KEYSIZE; + /* pubkSz = CURVE25519_KEYSIZE; */ + ExpectIntEQ(wc_curve25519_export_key_raw(&key, privateKey, &prvkSz, + publicKey, &pubkSz), 0); + ExpectIntEQ(prksz, CURVE25519_KEYSIZE); + ExpectIntEQ(pbksz, CURVE25519_KEYSIZE); + ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(XMEMCMP(privateKey, prik, CURVE25519_KEYSIZE), 0); + ExpectIntEQ(XMEMCMP(publicKey, pubk, CURVE25519_KEYSIZE), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve25519_free(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* end of test_wc_curve25519_export_key_raw */ /* @@ -23772,198 +19161,105 @@ static int test_wc_curve25519_export_key_raw(void) */ static int test_wc_curve25519_export_key_raw_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE25519) && defined(HAVE_CURVE25519_KEY_EXPORT) - curve25519_key key; - WC_RNG rng; - int ret; + curve25519_key key; + WC_RNG rng; + byte privateKey[CURVE25519_KEYSIZE]; + byte publicKey[CURVE25519_KEYSIZE]; + word32 prvkSz; + word32 pubkSz; + byte prik[CURVE25519_KEYSIZE]; + byte pubk[CURVE25519_KEYSIZE]; + word32 prksz; + word32 pbksz; - byte privateKey[CURVE25519_KEYSIZE]; - byte publicKey[CURVE25519_KEYSIZE]; - word32 prvkSz; - word32 pubkSz; + XMEMSET(&rng, 0, sizeof(WC_RNG)); - byte prik[CURVE25519_KEYSIZE]; - byte pubk[CURVE25519_KEYSIZE]; - word32 prksz; - word32 pbksz; + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); - if (0 != wc_InitRng(&rng)) { - return TEST_FAIL; - } - if (0 != wc_curve25519_init(&key)) { - wc_FreeRng(&rng); - return TEST_FAIL; - } - - ret = wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key); - - /* - bad-argument-test cases - target function sould return BAD_FUNC_ARG - */ - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex( NULL , privateKey, - &prvkSz, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN)) { - ret = -1; - } - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex( &key , NULL, - &prvkSz, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN)) { - ret = -1; - } - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex( &key,privateKey, - NULL, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN)) { - ret = -1; - } - } - - if (ret == 0) { - /* prvkSz = CURVE25519_KEYSIZE; */ - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex( &key, privateKey, - &prvkSz, NULL, &pubkSz, EC25519_LITTLE_ENDIAN)) { - ret = -1; - } - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex( &key, privateKey, - &prvkSz, publicKey, NULL, EC25519_LITTLE_ENDIAN)) { - ret = -1; - } - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - /* pubkSz = CURVE25519_KEYSIZE; */ - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex( NULL, privateKey, - &prvkSz, publicKey, &pubkSz, EC25519_BIG_ENDIAN)) { - ret = -1; - } - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex( &key, NULL, - &prvkSz, publicKey, &pubkSz, EC25519_BIG_ENDIAN)) { - ret = -1; - } - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex( &key, privateKey, - NULL, publicKey, &pubkSz, EC25519_BIG_ENDIAN)) { - ret = -1; - } - } - - if (ret == 0) { - /* prvkSz = CURVE25519_KEYSIZE; */ - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex( &key, privateKey, - &prvkSz, NULL, &pubkSz, EC25519_BIG_ENDIAN)) { - ret = -1; - } - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex( &key, privateKey, - &prvkSz, publicKey, NULL, EC25519_BIG_ENDIAN)) { - ret = -1; - } - } + /* bad-argument-test cases - target function should return BAD_FUNC_ARG */ + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(NULL, privateKey, + &prvkSz, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), BAD_FUNC_ARG); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, NULL, + &prvkSz, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), BAD_FUNC_ARG); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + NULL, publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), BAD_FUNC_ARG); + /* prvkSz = CURVE25519_KEYSIZE; */ + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + &prvkSz, NULL, &pubkSz, EC25519_LITTLE_ENDIAN), BAD_FUNC_ARG); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + &prvkSz, publicKey, NULL, EC25519_LITTLE_ENDIAN), BAD_FUNC_ARG); + prvkSz = CURVE25519_KEYSIZE; + /* pubkSz = CURVE25519_KEYSIZE; */ + ExpectIntEQ(wc_curve25519_export_key_raw_ex(NULL, privateKey, + &prvkSz, publicKey, &pubkSz, EC25519_BIG_ENDIAN), BAD_FUNC_ARG); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, NULL, + &prvkSz, publicKey, &pubkSz, EC25519_BIG_ENDIAN), BAD_FUNC_ARG); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + NULL, publicKey, &pubkSz, EC25519_BIG_ENDIAN), BAD_FUNC_ARG); + /* prvkSz = CURVE25519_KEYSIZE; */ + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + &prvkSz, NULL, &pubkSz, EC25519_BIG_ENDIAN), BAD_FUNC_ARG); + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, + &prvkSz, publicKey, NULL, EC25519_BIG_ENDIAN), BAD_FUNC_ARG); /* illegal value for endien */ + prvkSz = CURVE25519_KEYSIZE; + /* pubkSz = CURVE25519_KEYSIZE; */ + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, &prvkSz, + publicKey, NULL, EC25519_BIG_ENDIAN + 10), BAD_FUNC_ARG); - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - /* pubkSz = CURVE25519_KEYSIZE; */ - if (BAD_FUNC_ARG != wc_curve25519_export_key_raw_ex(&key, privateKey, - &prvkSz, publicKey, NULL, EC25519_BIG_ENDIAN + 10)) { - ret = -1; - } - } + /* cross-testing */ + prksz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_private_raw( &key, prik, &prksz), 0); + pbksz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_public( &key, pubk, &pbksz), 0); + prvkSz = CURVE25519_KEYSIZE; + /* pubkSz = CURVE25519_KEYSIZE; */ + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, &prvkSz, + publicKey, &pubkSz, EC25519_BIG_ENDIAN), 0); + ExpectIntEQ(prksz, CURVE25519_KEYSIZE); + ExpectIntEQ(pbksz, CURVE25519_KEYSIZE); + ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(XMEMCMP(privateKey, prik, CURVE25519_KEYSIZE), 0); + ExpectIntEQ(XMEMCMP(publicKey, pubk, CURVE25519_KEYSIZE), 0); + ExpectIntEQ(wc_curve25519_export_key_raw_ex(&key, privateKey, &prvkSz, + publicKey, &pubkSz, EC25519_LITTLE_ENDIAN), 0); + ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); - /* - cross-testing - */ - if (ret == 0) { - prksz = CURVE25519_KEYSIZE; - ret = wc_curve25519_export_private_raw( &key, prik, &prksz); - } - - if (ret == 0) { - pbksz = CURVE25519_KEYSIZE; - ret = wc_curve25519_export_public( &key, pubk, &pbksz); - } - - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - /* pubkSz = CURVE25519_KEYSIZE; */ - ret = wc_curve25519_export_key_raw_ex( &key, privateKey, &prvkSz, - publicKey, &pubkSz, EC25519_BIG_ENDIAN); - } - - if (ret == 0 && (prksz != CURVE25519_KEYSIZE || - pbksz != CURVE25519_KEYSIZE || - prvkSz != CURVE25519_KEYSIZE || - pubkSz != CURVE25519_KEYSIZE)) { - ret = -1; - } - - if (ret == 0 && (0 != XMEMCMP(privateKey, prik, CURVE25519_KEYSIZE) || - 0 != XMEMCMP(publicKey, pubk, CURVE25519_KEYSIZE))) { - ret = -1; - } - - if (ret == 0) { - ret = wc_curve25519_export_key_raw_ex(&key, privateKey, &prvkSz, - publicKey, &pubkSz, EC25519_LITTLE_ENDIAN); - } - if (ret == 0 && (prvkSz != CURVE25519_KEYSIZE || - pubkSz != CURVE25519_KEYSIZE)) { - ret = -1; - } - - /* - try once with another endian - */ - if (ret == 0) { - prvkSz = CURVE25519_KEYSIZE; - pubkSz = CURVE25519_KEYSIZE; - ret = wc_curve25519_export_key_raw_ex( &key, privateKey, &prvkSz, - publicKey, &pubkSz, EC25519_BIG_ENDIAN); - } - if (ret == 0 && (prvkSz != CURVE25519_KEYSIZE || - pubkSz != CURVE25519_KEYSIZE)) { - ret = -1; - } + /* try once with another endian */ + prvkSz = CURVE25519_KEYSIZE; + pubkSz = CURVE25519_KEYSIZE; + ExpectIntEQ(wc_curve25519_export_key_raw_ex( &key, privateKey, &prvkSz, + publicKey, &pubkSz, EC25519_BIG_ENDIAN), 0); + ExpectIntEQ(prvkSz, CURVE25519_KEYSIZE); + ExpectIntEQ(pubkSz, CURVE25519_KEYSIZE); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve25519_free(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* end of test_wc_curve25519_export_key_raw_ex */ /* @@ -23971,559 +19267,312 @@ static int test_wc_curve25519_export_key_raw_ex(void) */ static int test_wc_curve25519_make_key(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE25519) - WC_RNG rng; - curve25519_key key; - int keysize; - int ret; + curve25519_key key; + WC_RNG rng; + int keysize; - ret = wc_curve25519_init(&key); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key); - if (ret == 0) { - keysize = wc_curve25519_size(&key); - if (keysize != CURVE25519_KEYSIZE) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - ret = wc_curve25519_make_key(&rng, keysize, &key); - } - } - /*test bad cases*/ - if (ret == 0) { - ret = wc_curve25519_make_key(NULL, 0, NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_make_key(&rng, keysize, NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_make_key(NULL, keysize, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_make_key(&rng, 0, &key); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + ExpectIntEQ(keysize = wc_curve25519_size(&key), CURVE25519_KEYSIZE); + ExpectIntEQ(wc_curve25519_make_key(&rng, keysize, &key), 0); + /* test bad cases*/ + ExpectIntEQ(wc_curve25519_make_key(NULL, 0, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_make_key(&rng, keysize, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_make_key(NULL, keysize, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_make_key(&rng, 0, &key), ECC_BAD_ARG_E); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve25519_free(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -} /*END test_wc_curve25519_make_key*/ + return EXPECT_RESULT(); +} /* END test_wc_curve25519_make_key*/ + /* * Testing wc_curve25519_shared_secret_ex */ static int test_wc_curve25519_shared_secret_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE25519) - WC_RNG rng; - curve25519_key private_key, public_key; - byte out[CURVE25519_KEYSIZE]; - word32 outLen = sizeof(out); - int endian = EC25519_BIG_ENDIAN; - int ret; + curve25519_key private_key; + curve25519_key public_key; + WC_RNG rng; + byte out[CURVE25519_KEYSIZE]; + word32 outLen = sizeof(out); + int endian = EC25519_BIG_ENDIAN; - ret = wc_curve25519_init(&private_key); - if (ret == 0) { - ret = wc_curve25519_init(&public_key); - } - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { - ret = wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &private_key); - } - if (ret == 0) { - ret = wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &public_key); - } - if (ret == 0) { - ret = wc_curve25519_shared_secret_ex(&private_key, &public_key, out, - &outLen, endian); - } - /*test bad cases*/ - if (ret == 0) { - ret = wc_curve25519_shared_secret_ex(NULL, NULL, NULL, - 0, endian); - if (ret == 0) { - ret = -1; - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_shared_secret_ex(NULL, &public_key, out, - &outLen, endian); - if (ret == 0) { - ret = -1; - } - else if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_shared_secret_ex(&private_key, NULL, out, - &outLen, endian); - if (ret == 0) { - ret = -1; - } - else if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_shared_secret_ex(&private_key, &public_key, NULL, - &outLen, endian); - if (ret == 0) { - ret = -1; - } - else if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_shared_secret_ex(&private_key, &public_key, out, - NULL, endian); - if (ret == 0) { - ret = -1; - } - else if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_curve25519_init(&private_key), 0); + ExpectIntEQ(wc_curve25519_init(&public_key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); - if (ret == 0) { - /*curve25519.c is checking for public_key size less than or equal to 0x7f, - *increasing to 0x8f checks for error being returned*/ - public_key.p.point[CURVE25519_KEYSIZE-1] = 0x8F; - ret = wc_curve25519_shared_secret_ex(&private_key, &public_key, out, - &outLen, endian); - if (ret == 0) { - ret = -1; - } - else if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &private_key), + 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &public_key), + 0); + + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, + &outLen, endian), 0); + + /* test bad cases*/ + ExpectIntEQ(wc_curve25519_shared_secret_ex(NULL, NULL, NULL, 0, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_shared_secret_ex(NULL, &public_key, out, &outLen, + endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, NULL, out, &outLen, + endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, NULL, + &outLen, endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, + NULL, endian), BAD_FUNC_ARG); + + /* curve25519.c is checking for public_key size less than or equal to 0x7f, + * increasing to 0x8f checks for error being returned*/ + public_key.p.point[CURVE25519_KEYSIZE-1] = 0x8F; + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, + &outLen, endian), ECC_BAD_ARG_E); outLen = outLen - 2; - if (ret == 0) { - ret = wc_curve25519_shared_secret_ex(&private_key, &public_key, out, - &outLen, endian); - if (ret == 0) { - ret = -1; - } - else if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_curve25519_shared_secret_ex(&private_key, &public_key, out, + &outLen, endian), BAD_FUNC_ARG); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve25519_free(&private_key); wc_curve25519_free(&public_key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -} /*END test_wc_curve25519_shared_secret_ex*/ + return EXPECT_RESULT(); +} /* END test_wc_curve25519_shared_secret_ex*/ + /* * Testing wc_curve25519_make_pub */ static int test_wc_curve25519_make_pub(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_CURVE25519 - WC_RNG rng; - curve25519_key key; - byte out[CURVE25519_KEYSIZE]; - int ret; + curve25519_key key; + WC_RNG rng; + byte out[CURVE25519_KEYSIZE]; - ret = wc_curve25519_init(&key); - if (ret == 0) { - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key); - } - } - if (ret == 0) { - ret = wc_curve25519_make_pub((int)sizeof(out), out, (int)sizeof(key.k), key.k); - } - /*test bad cases*/ - if (ret == 0) { - ret = wc_curve25519_make_pub((int)sizeof(key.k) - 1, key.k, (int)sizeof out, out); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), NULL); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_make_pub((int)sizeof out - 1, out, (int)sizeof(key.k), key.k); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_make_pub((int)sizeof out, NULL, (int)sizeof(key.k), key.k); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } - if (ret == 0) { - /* verify clamping test */ - key.k[0] |= ~248; - ret = wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), key.k); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - key.k[0] &= 248; - } + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof(out), out, + (int)sizeof(key.k), key.k), 0); + /* test bad cases*/ + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof(key.k) - 1, key.k, + (int)sizeof out, out), ECC_BAD_ARG_E); + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), + NULL), ECC_BAD_ARG_E); + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out - 1, out, + (int)sizeof(key.k), key.k), ECC_BAD_ARG_E); + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, NULL, + (int)sizeof(key.k), key.k), ECC_BAD_ARG_E); + /* verify clamping test */ + key.k[0] |= ~248; + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), + key.k), ECC_BAD_ARG_E); + key.k[0] &= 248; /* repeat the expected-to-succeed test. */ - if (ret == 0) { - ret = wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), key.k); - } + ExpectIntEQ(wc_curve25519_make_pub((int)sizeof out, out, (int)sizeof(key.k), + key.k), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve25519_free(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -} /*END test_wc_curve25519_make_pub */ + return EXPECT_RESULT(); +} /* END test_wc_curve25519_make_pub */ + /* * Testing test_wc_curve25519_export_public_ex */ static int test_wc_curve25519_export_public_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE25519) - WC_RNG rng; - curve25519_key key; - byte out[CURVE25519_KEYSIZE]; - word32 outLen = sizeof(out); - int endian = EC25519_BIG_ENDIAN; - int ret; + curve25519_key key; + WC_RNG rng; + byte out[CURVE25519_KEYSIZE]; + word32 outLen = sizeof(out); + int endian = EC25519_BIG_ENDIAN; - ret = wc_curve25519_init(&key); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key); - if (ret == 0) { - ret = wc_curve25519_export_public(&key, out, &outLen); - } - if (ret == 0) { - ret = wc_curve25519_export_public_ex(&key, out, &outLen, endian); - } - } - /*test bad cases*/ - if (ret == 0) { - ret = wc_curve25519_export_public_ex(NULL, NULL, NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_export_public_ex(NULL, out, &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_export_public_ex(&key, NULL, &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_export_public_ex(&key, out, NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + + ExpectIntEQ(wc_curve25519_export_public(&key, out, &outLen), 0); + ExpectIntEQ(wc_curve25519_export_public_ex(&key, out, &outLen, endian), 0); + /* test bad cases*/ + ExpectIntEQ(wc_curve25519_export_public_ex(NULL, NULL, NULL, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_export_public_ex(NULL, out, &outLen, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_export_public_ex(&key, NULL, &outLen, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_export_public_ex(&key, out, NULL, endian), + BAD_FUNC_ARG); outLen = outLen - 2; - if (ret == 0) { - ret = wc_curve25519_export_public_ex(&key, out, &outLen, endian); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } + ExpectIntEQ(wc_curve25519_export_public_ex(&key, out, &outLen, endian), + ECC_BAD_ARG_E); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve25519_free(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; - -} /*END test_wc_curve25519_export_public_ex*/ + return EXPECT_RESULT(); +} /* END test_wc_curve25519_export_public_ex*/ /* * Testing test_wc_curve25519_import_private_raw_ex */ static int test_wc_curve25519_import_private_raw_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE25519) - WC_RNG rng; - curve25519_key key; - byte priv[CURVE25519_KEYSIZE]; - byte pub[CURVE25519_KEYSIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - int endian = EC25519_BIG_ENDIAN; - int ret; + curve25519_key key; + WC_RNG rng; + byte priv[CURVE25519_KEYSIZE]; + byte pub[CURVE25519_KEYSIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); + int endian = EC25519_BIG_ENDIAN; - ret = wc_curve25519_init(&key); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key); - if (ret == 0) { - ret = wc_curve25519_export_private_raw_ex(&key, priv, &privSz, endian); - } - if (ret == 0) { - ret = wc_curve25519_export_public(&key, pub, &pubSz); - } - if (ret == 0) { - ret = wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, - &key, endian); - } - } - /*test bad cases*/ - if (ret == 0) { - ret = wc_curve25519_import_private_raw_ex(NULL, 0, NULL, 0, NULL, - endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_import_private_raw_ex(NULL, privSz, pub, pubSz, - &key, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_import_private_raw_ex(priv, privSz, NULL, pubSz, - &key, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, - NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_import_private_raw_ex(priv, 0, pub, pubSz, - &key, endian); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_import_private_raw_ex(priv, privSz, pub, 0, - &key, endian); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, - &key, EC25519_LITTLE_ENDIAN); + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); - } + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, priv, &privSz, + endian), 0); + ExpectIntEQ(wc_curve25519_export_public(&key, pub, &pubSz), 0); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, + &key, endian), 0); + /* test bad cases*/ + ExpectIntEQ(wc_curve25519_import_private_raw_ex(NULL, 0, NULL, 0, NULL, + endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(NULL, privSz, pub, pubSz, + &key, endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, NULL, pubSz, + &key, endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, + NULL, endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, 0, pub, pubSz, + &key, endian), ECC_BAD_ARG_E); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, 0, + &key, endian), ECC_BAD_ARG_E); + ExpectIntEQ(wc_curve25519_import_private_raw_ex(priv, privSz, pub, pubSz, + &key, EC25519_LITTLE_ENDIAN), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve25519_free(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -} /*END test_wc_curve25519_import_private_raw_ex*/ + return EXPECT_RESULT(); +} /* END test_wc_curve25519_import_private_raw_ex*/ /* * Testing test_wc_curve25519_import_private */ static int test_wc_curve25519_import_private(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE25519) - curve25519_key key; - WC_RNG rng; - byte priv[CURVE25519_KEYSIZE]; - word32 privSz = sizeof(priv); - int ret; + curve25519_key key; + WC_RNG rng; + byte priv[CURVE25519_KEYSIZE]; + word32 privSz = sizeof(priv); - ret = wc_curve25519_init(&key); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key); - if (ret == 0) { - ret = wc_curve25519_export_private_raw(&key, priv, &privSz); - } - } - if (ret == 0) { - ret = wc_curve25519_import_private(priv, privSz, &key); - } + ExpectIntEQ(wc_curve25519_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, &key), 0); + + ExpectIntEQ(wc_curve25519_export_private_raw(&key, priv, &privSz), 0); + ExpectIntEQ(wc_curve25519_import_private(priv, privSz, &key), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve25519_free(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -} /*END test_wc_curve25519_import*/ + return EXPECT_RESULT(); +} /* END test_wc_curve25519_import*/ /* * Testing test_wc_curve25519_export_private_raw_ex */ static int test_wc_curve25519_export_private_raw_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE25519) - curve25519_key key; - byte out[CURVE25519_KEYSIZE]; - word32 outLen = sizeof(out); - int endian = EC25519_BIG_ENDIAN; - int ret; + curve25519_key key; + byte out[CURVE25519_KEYSIZE]; + word32 outLen = sizeof(out); + int endian = EC25519_BIG_ENDIAN; - ret = wc_curve25519_init(&key); - if (ret == 0) { - ret = wc_curve25519_export_private_raw_ex(&key, out, &outLen, endian); - } - /*test bad cases*/ - if (ret == 0) { - ret = wc_curve25519_export_private_raw_ex(NULL, NULL, NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_export_private_raw_ex(NULL, out, &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_export_private_raw_ex(&key, NULL, &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_export_private_raw_ex(&key, out, NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve25519_export_private_raw_ex(&key, out, &outLen, - EC25519_LITTLE_ENDIAN); - } + ExpectIntEQ(wc_curve25519_init(&key), 0); + + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, &outLen, endian), + 0); + /* test bad cases*/ + ExpectIntEQ(wc_curve25519_export_private_raw_ex(NULL, NULL, NULL, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_export_private_raw_ex(NULL, out, &outLen, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, NULL, &outLen, + endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, NULL, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, &outLen, + EC25519_LITTLE_ENDIAN), 0); outLen = outLen - 2; - if (ret == 0) { - ret = wc_curve25519_export_private_raw_ex(&key, out, &outLen, endian); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } + ExpectIntEQ(wc_curve25519_export_private_raw_ex(&key, out, &outLen, endian), + ECC_BAD_ARG_E); wc_curve25519_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -}/*END test_wc_curve25519_export_private_raw_ex*/ + return EXPECT_RESULT(); +} /* END test_wc_curve25519_export_private_raw_ex*/ /* * Testing wc_ed448_make_key(). */ static int test_wc_ed448_make_key(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) ed448_key key; WC_RNG rng; unsigned char pubkey[ED448_PUB_KEY_SIZE]; - int ret; - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ed448_init(&key); - } - if (ret == 0) { - ret = wc_ed448_make_public(&key, pubkey, sizeof(pubkey)); - if (ret == ECC_PRIV_KEY_E) { - ret = 0; - } - else if (ret == 0) { - ret = -1; - } - } - if (ret == 0) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key); - } + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_ed448_make_public(&key, pubkey, sizeof(pubkey)), + ECC_PRIV_KEY_E); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ed448_make_key(NULL, ED448_KEY_SIZE, &key); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE - 1, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE + 1, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed448_make_key(NULL, ED448_KEY_SIZE, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE - 1, &key), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE + 1, &key), + BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed448_make_key */ @@ -24532,29 +19581,19 @@ static int test_wc_ed448_make_key(void) */ static int test_wc_ed448_init(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) - ed448_key key; - int ret; + ed448_key key; - ret = wc_ed448_init(&key); + XMEMSET(&key, 0, sizeof(ed448_key)); + ExpectIntEQ(wc_ed448_init(&key), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ed448_init(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed448_init(NULL), BAD_FUNC_ARG); wc_ed448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed448_init */ /* @@ -24562,116 +19601,70 @@ static int test_wc_ed448_init(void) */ static int test_wc_ed448_sign_msg(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) && defined(HAVE_ED448_SIGN) - WC_RNG rng; - ed448_key key; - byte msg[] = "Everybody gets Friday off.\n"; - byte sig[ED448_SIG_SIZE]; - word32 msglen = sizeof(msg); - word32 siglen = sizeof(sig); - word32 badSigLen = sizeof(sig) - 1; + ed448_key key; + WC_RNG rng; + byte msg[] = "Everybody gets Friday off.\n"; + byte sig[ED448_SIG_SIZE]; + word32 msglen = sizeof(msg); + word32 siglen = sizeof(sig); + word32 badSigLen = sizeof(sig) - 1; #ifdef HAVE_ED448_VERIFY - int verify_ok = 0; /*1 = Verify success.*/ + int verify_ok = 0; /*1 = Verify success.*/ #endif - int ret; /* Initialize stack variables. */ + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(sig, 0, siglen); /* Initialize key. */ - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ed448_init(&key); - if (ret == 0) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key); - } - } + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - if (ret == 0) { - ret = wc_ed448_sign_msg(msg, msglen, sig, &siglen, &key, NULL, 0); - } + ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, &siglen, &key, NULL, 0), 0); + ExpectIntEQ(siglen, ED448_SIG_SIZE); /* Test bad args. */ - if (ret == 0 && siglen == ED448_SIG_SIZE) { - ret = wc_ed448_sign_msg(NULL, msglen, sig, &siglen, &key, NULL, 0); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_sign_msg(msg, msglen, NULL, &siglen, &key, NULL, 0); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_sign_msg(msg, msglen, sig, NULL, &key, NULL, 0); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_sign_msg(msg, msglen, sig, &siglen, NULL, NULL, 0); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_sign_msg(msg, msglen, sig, &badSigLen, &key, - NULL, 0); - } - if (ret == BUFFER_E && badSigLen == ED448_SIG_SIZE) { - badSigLen -= 1; - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } /* END sign */ + ExpectIntEQ(wc_ed448_sign_msg(NULL, msglen, sig, &siglen, &key, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, NULL, &siglen, &key, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, NULL, &key, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, &siglen, NULL, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_sign_msg(msg, msglen, sig, &badSigLen, &key, NULL, 0), + BUFFER_E); + ExpectIntEQ(badSigLen, ED448_SIG_SIZE); + badSigLen -= 1; #ifdef HAVE_ED448_VERIFY - if (ret == 0) { - - ret = wc_ed448_verify_msg(sig, siglen, msg, msglen, &verify_ok, - &key, NULL, 0); - if (ret == 0 && verify_ok == 1) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - /* Test bad args. */ - if (ret == 0) { - AssertIntEQ(wc_ed448_verify_msg(sig, siglen - 1, msg, - msglen, &verify_ok, &key, NULL, 0), BAD_FUNC_ARG); - AssertIntEQ(wc_ed448_verify_msg(sig, siglen + 1, msg, - msglen, &verify_ok, &key, NULL, 0), BAD_FUNC_ARG); - - ret = wc_ed448_verify_msg(NULL, siglen, msg, msglen, &verify_ok, - &key, NULL, 0); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_verify_msg(sig, siglen, NULL, msglen, - &verify_ok, &key, NULL, 0); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_verify_msg(sig, siglen, msg, msglen, - NULL, &key, NULL, 0); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_verify_msg(sig, siglen, msg, msglen, - &verify_ok, NULL, NULL, 0); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_verify_msg(sig, badSigLen, msg, msglen, - &verify_ok, &key, NULL, 0); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - - } /* END verify. */ + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, msg, msglen, &verify_ok, &key, + NULL, 0), 0); + ExpectIntEQ(verify_ok, 1); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen - 1, msg, msglen, &verify_ok, + &key, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen + 1, msg, msglen, &verify_ok, + &key, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_verify_msg(NULL, siglen, msg, msglen, &verify_ok, + &key, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, NULL, msglen, &verify_ok, + &key, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, msg, msglen, NULL, + &key, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_verify_msg(sig, siglen, msg, msglen, &verify_ok, + NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_verify_msg(sig, badSigLen, msg, msglen, &verify_ok, + &key, NULL, 0), BAD_FUNC_ARG); #endif /* Verify. */ - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed448_sign_msg */ /* @@ -24679,59 +19672,32 @@ static int test_wc_ed448_sign_msg(void) */ static int test_wc_ed448_import_public(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_IMPORT) - WC_RNG rng; - ed448_key pubKey; - const byte in[] = + ed448_key pubKey; + WC_RNG rng; + const byte in[] = "Ed448PublicKeyUnitTest.................................\n"; - word32 inlen = sizeof(in); - int ret = 0; + word32 inlen = sizeof(in); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ed448_init(&pubKey); - if (ret == 0) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &pubKey); - } - } + XMEMSET(&pubKey, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_ed448_import_public_ex(in, inlen, &pubKey, 1); + ExpectIntEQ(wc_ed448_init(&pubKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &pubKey), 0); - if (ret == 0 && XMEMCMP(in, pubKey.p, inlen) == 0) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_ed448_import_public_ex(in, inlen, &pubKey, 1), 0); + ExpectIntEQ(XMEMCMP(in, pubKey.p, inlen), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_import_public(NULL, inlen, &pubKey), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_import_public(in, inlen, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_import_public(in, inlen - 1, &pubKey), BAD_FUNC_ARG); - /* Test bad args. */ - if (ret == 0) { - ret = wc_ed448_import_public(NULL, inlen, &pubKey); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_import_public(in, inlen, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_import_public(in, inlen - 1, &pubKey); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } - - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed448_free(&pubKey); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END wc_ed448_import_public */ /* @@ -24739,97 +19705,59 @@ static int test_wc_ed448_import_public(void) */ static int test_wc_ed448_import_private_key(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_IMPORT) - WC_RNG rng; - ed448_key key; - const byte privKey[] = - "Ed448PrivateKeyUnitTest................................\n"; - const byte pubKey[] = - "Ed448PublicKeyUnitTest.................................\n"; - word32 privKeySz = sizeof(privKey); - word32 pubKeySz = sizeof(pubKey); + ed448_key key; + WC_RNG rng; + const byte privKey[] = + "Ed448PrivateKeyUnitTest................................\n"; + const byte pubKey[] = + "Ed448PublicKeyUnitTest.................................\n"; + word32 privKeySz = sizeof(privKey); + word32 pubKeySz = sizeof(pubKey); #ifdef HAVE_ED448_KEY_EXPORT - byte bothKeys[sizeof(privKey) + sizeof(pubKey)]; - word32 bothKeysSz = sizeof(bothKeys); + byte bothKeys[sizeof(privKey) + sizeof(pubKey)]; + word32 bothKeysSz = sizeof(bothKeys); #endif - int ret; - ret = wc_InitRng(&rng); - if (ret != 0) { - return TEST_FAIL; - } - ret = wc_ed448_init(&key); - if (ret != 0) { - wc_FreeRng(&rng); - return TEST_FAIL; - } - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key); + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_ed448_import_private_key_ex(privKey, privKeySz, pubKey, - pubKeySz, &key, 1); - if (ret == 0 && (XMEMCMP(pubKey, key.p, privKeySz) != 0 || - XMEMCMP(privKey, key.k, pubKeySz) != 0)) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_ed448_import_private_key_ex(privKey, privKeySz, pubKey, + pubKeySz, &key, 1), 0); + ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); + ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); #ifdef HAVE_ED448_KEY_EXPORT - if (ret == 0) - ret = wc_ed448_export_private(&key, bothKeys, &bothKeysSz); - - if (ret == 0) { - ret = wc_ed448_import_private_key_ex(bothKeys, bothKeysSz, NULL, 0, - &key, 1); - if (ret == 0 && (XMEMCMP(pubKey, key.p, privKeySz) != 0 || - XMEMCMP(privKey, key.k, pubKeySz) != 0)) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed448_export_private(&key, bothKeys, &bothKeysSz), 0); + ExpectIntEQ(wc_ed448_import_private_key_ex(bothKeys, bothKeysSz, NULL, 0, + &key, 1), 0); + ExpectIntEQ(XMEMCMP(pubKey, key.p, privKeySz), 0); + ExpectIntEQ(XMEMCMP(privKey, key.k, pubKeySz), 0); #endif /* Test bad args. */ - if (ret == 0) { - ret = wc_ed448_import_private_key(NULL, privKeySz, pubKey, pubKeySz, - &key); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_import_private_key(privKey, privKeySz, NULL, - pubKeySz, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_import_private_key(privKey, privKeySz, pubKey, - pubKeySz, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_import_private_key(privKey, privKeySz - 1, pubKey, - pubKeySz, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_import_private_key(privKey, privKeySz, pubKey, - pubKeySz - 1, &key); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_import_private_key(privKey, privKeySz, NULL, - 0, &key); - } + ExpectIntEQ(wc_ed448_import_private_key(NULL, privKeySz, pubKey, pubKeySz, + &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, NULL, pubKeySz, + &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, pubKey, + pubKeySz, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz - 1, pubKey, + pubKeySz, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, pubKey, + pubKeySz - 1, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_import_private_key(privKey, privKeySz, NULL, 0, &key), + BAD_FUNC_ARG); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed448_import_private_key */ /* @@ -24837,86 +19765,44 @@ static int test_wc_ed448_import_private_key(void) */ static int test_wc_ed448_export(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) - WC_RNG rng; - ed448_key key; - byte priv[ED448_PRV_KEY_SIZE]; - byte pub[ED448_PUB_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - int ret; + ed448_key key; + WC_RNG rng; + byte priv[ED448_PRV_KEY_SIZE]; + byte pub[ED448_PUB_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); - ret = wc_InitRng(&rng); - if (ret != 0) { - return TEST_FAIL; - } + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_ed448_init(&key); - if (ret != 0) { - wc_FreeRng(&rng); - return TEST_FAIL; - } + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - if (ret == 0) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key); - } + ExpectIntEQ(wc_ed448_export_public(&key, pub, &pubSz), 0); + ExpectIntEQ(pubSz, ED448_KEY_SIZE); + ExpectIntEQ(XMEMCMP(key.p, pub, pubSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_export_public(NULL, pub, &pubSz), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_export_public(&key, NULL, &pubSz), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_export_public(&key, pub, NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed448_export_public(&key, pub, &pubSz); - if (ret == 0 && (pubSz != ED448_KEY_SIZE || - XMEMCMP(key.p, pub, pubSz) != 0)) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_ed448_export_public(NULL, pub, &pubSz); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_export_public(&key, NULL, &pubSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_export_public(&key, pub, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + ExpectIntEQ(wc_ed448_export_private_only(&key, priv, &privSz), 0); + ExpectIntEQ(privSz, ED448_KEY_SIZE); + ExpectIntEQ(XMEMCMP(key.k, priv, privSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_export_private_only(NULL, priv, &privSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_export_private_only(&key, NULL, &privSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_export_private_only(&key, priv, NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed448_export_private_only(&key, priv, &privSz); - if (ret == 0 && (privSz != ED448_KEY_SIZE || - XMEMCMP(key.k, priv, privSz) != 0)) { - ret = WOLFSSL_FATAL_ERROR; - } - if (ret == 0) { - ret = wc_ed448_export_private_only(NULL, priv, &privSz); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_export_private_only(&key, NULL, &privSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_export_private_only(&key, priv, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } - - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_ed448_export */ /* @@ -24924,86 +19810,38 @@ static int test_wc_ed448_export(void) */ static int test_wc_ed448_size(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) - WC_RNG rng; - ed448_key key; - int ret = 0; + ed448_key key; + WC_RNG rng; - ret = wc_InitRng(&rng); - if (ret != 0) { - return TEST_FAIL; - } - ret = wc_ed448_init(&key); - if (ret != 0) { - wc_FreeRng(&rng); - return TEST_FAIL; - } + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key); - if (ret != 0) { - wc_FreeRng(&rng); - wc_ed448_free(&key); - return TEST_FAIL; - } + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - ret = wc_ed448_size(&key); + ExpectIntEQ(wc_ed448_size(&key), ED448_KEY_SIZE); /* Test bad args. */ - if (ret == ED448_KEY_SIZE) { - ret = wc_ed448_size(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_ed448_size(NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed448_sig_size(&key); - if (ret == ED448_SIG_SIZE) { - ret = 0; - } - /* Test bad args. */ - if (ret == 0) { - ret = wc_ed448_sig_size(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - } /* END wc_ed448_sig_size() */ + ExpectIntEQ(wc_ed448_sig_size(&key), ED448_SIG_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_sig_size(NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed448_pub_size(&key); - if (ret == ED448_PUB_KEY_SIZE) { - ret = 0; - } - if (ret == 0) { - ret = wc_ed448_pub_size(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - } /* END wc_ed448_pub_size */ + ExpectIntEQ(wc_ed448_pub_size(&key), ED448_PUB_KEY_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_pub_size(NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed448_priv_size(&key); - if (ret == ED448_PRV_KEY_SIZE) { - ret = 0; - } - if (ret == 0) { - ret = wc_ed448_priv_size(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - } /* END wc_ed448_pub_size */ + ExpectIntEQ(wc_ed448_priv_size(&key), ED448_PRV_KEY_SIZE); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_priv_size(NULL), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed448_size */ /* @@ -25011,90 +19849,51 @@ static int test_wc_ed448_size(void) */ static int test_wc_ed448_exportKey(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) - WC_RNG rng; - ed448_key key; - byte priv[ED448_PRV_KEY_SIZE]; - byte pub[ED448_PUB_KEY_SIZE]; - byte privOnly[ED448_PRV_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - word32 privOnlySz = sizeof(privOnly); - int ret; + ed448_key key; + WC_RNG rng; + byte priv[ED448_PRV_KEY_SIZE]; + byte pub[ED448_PUB_KEY_SIZE]; + byte privOnly[ED448_PRV_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); + word32 privOnlySz = sizeof(privOnly); - ret = wc_InitRng(&rng); - if (ret != 0) { - return TEST_FAIL; - } - ret = wc_ed448_init(&key); - if (ret != 0) { - wc_FreeRng(&rng); - return TEST_FAIL; - } + XMEMSET(&key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key); - if (ret != 0) { - wc_FreeRng(&rng); - wc_ed448_free(&key); - return TEST_FAIL; - } + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - ret = wc_ed448_export_private(&key, privOnly, &privOnlySz); - if (ret == 0) { - ret = wc_ed448_export_private(NULL, privOnly, &privOnlySz); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_export_private(&key, NULL, &privOnlySz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_export_private(&key, privOnly, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ed448_export_private(&key, privOnly, &privOnlySz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_export_private(NULL, privOnly, &privOnlySz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_export_private(&key, NULL, &privOnlySz), BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_export_private(&key, privOnly, NULL), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_ed448_export_key(&key, priv, &privSz, pub, &pubSz); - if (ret == 0) { - ret = wc_ed448_export_key(NULL, priv, &privSz, pub, &pubSz); - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_export_key(&key, NULL, &privSz, pub, &pubSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_export_key(&key, priv, NULL, pub, &pubSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_export_key(&key, priv, &privSz, NULL, &pubSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ed448_export_key(&key, priv, &privSz, pub, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } /* END wc_ed448_export_key() */ + ExpectIntEQ(wc_ed448_export_key(&key, priv, &privSz, pub, &pubSz), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ed448_export_key(NULL, priv, &privSz, pub, &pubSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_export_key(&key, NULL, &privSz, pub, &pubSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_export_key(&key, priv, NULL, pub, &pubSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_export_key(&key, priv, &privSz, NULL, &pubSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ed448_export_key(&key, priv, &privSz, pub, NULL), + BAD_FUNC_ARG); /* Cross check output. */ - if (ret == 0 && XMEMCMP(priv, privOnly, privSz) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(XMEMCMP(priv, privOnly, privSz), 0); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ed448_exportKey */ /* @@ -25102,61 +19901,38 @@ static int test_wc_ed448_exportKey(void) */ static int test_wc_Ed448PublicKeyToDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) && \ (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - int tmp; ed448_key key; byte derBuf[1024]; - int ret = 0; + + XMEMSET(&key, 0, sizeof(ed448_key)); /* Test bad args */ - tmp = wc_Ed448PublicKeyToDer(NULL, NULL, 0, 0); - if (tmp != BAD_FUNC_ARG) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_Ed448PublicKeyToDer(NULL, NULL, 0, 0), BAD_FUNC_ARG); - if (ret == 0) { - wc_ed448_init(&key); - tmp = wc_Ed448PublicKeyToDer(&key, derBuf, 0, 0); - if (tmp != BUFFER_E) { - ret = WOLFSSL_FATAL_ERROR; - } - wc_ed448_free(&key); - } + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_Ed448PublicKeyToDer(&key, derBuf, 0, 0), BUFFER_E); + wc_ed448_free(&key); /* Test good args */ - if (ret == 0) { - WC_RNG rng; - ret = wc_InitRng(&rng); - if (ret != 0) { - return TEST_FAIL; - } - ret = wc_ed448_init(&key); - if (ret != 0) { - wc_FreeRng(&rng); - return TEST_FAIL; - } + if (EXPECT_SUCCESS()) { + WC_RNG rng; - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key); - if (ret != 0) { - wc_FreeRng(&rng); - wc_ed448_free(&key); - return TEST_FAIL; - } + XMEMSET(&rng, 0, sizeof(WC_RNG)); - tmp = wc_Ed448PublicKeyToDer(&key, derBuf, 1024, 1); - if (tmp <= 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_ed448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0); - wc_FreeRng(&rng); + ExpectIntGT(wc_Ed448PublicKeyToDer(&key, derBuf, 1024, 1), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ed448_free(&key); } - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END testing wc_Ed448PublicKeyToDer */ /* @@ -25164,32 +19940,21 @@ static int test_wc_Ed448PublicKeyToDer(void) */ static int test_wc_curve448_init(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE448) - curve448_key key; - int ret = 0; - - ret = wc_curve448_init(&key); + curve448_key key; /* Test bad args for wc_curve448_init */ - if (ret == 0) { - ret = wc_curve448_init(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_curve448_init(&key), 0); + /* Test bad args for wc_curve448_init */ + ExpectIntEQ(wc_curve448_init(NULL), BAD_FUNC_ARG); - /* Test good args for wc_curve_448_free */ + /* Test good args for wc_curve_448_free */ wc_curve448_free(&key); - + /* Test bad args for wc_curve448_free */ wc_curve448_free(NULL); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_curve448_init and wc_curve_448_free*/ /* @@ -25197,479 +19962,276 @@ static int test_wc_curve448_init(void) */ static int test_wc_curve448_make_key(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE448) - WC_RNG rng; - curve448_key key; - int keysize; - int ret; + curve448_key key; + WC_RNG rng; + int keysize; - ret = wc_curve448_init(&key); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); + ExpectIntEQ(keysize = wc_curve448_size(&key), CURVE448_KEY_SIZE); + ExpectIntEQ(wc_curve448_make_key(&rng, keysize, &key), 0); - ret = wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key); - if (ret == 0) { - keysize = wc_curve448_size(&key); - if (keysize != CURVE448_KEY_SIZE) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - ret = wc_curve448_make_key(&rng, keysize, &key); - } - } /* test bad cases */ - if (ret == 0) { - ret = wc_curve448_make_key(NULL, 0, NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_make_key(&rng, keysize, NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_make_key(NULL, keysize, &key); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_make_key(&rng, 0, &key); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } - - if (wc_FreeRng(&rng) != 0 && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_curve448_make_key(NULL, 0, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_make_key(&rng, keysize, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_make_key(NULL, keysize, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_make_key(&rng, 0, &key), ECC_BAD_ARG_E); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -} /*END test_wc_curve448_make_key*/ + return EXPECT_RESULT(); +} /* END test_wc_curve448_make_key*/ /* * Testing test_wc_curve448_shared_secret_ex */ static int test_wc_curve448_shared_secret_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE448) - WC_RNG rng; - curve448_key private_key, public_key; - byte out[CURVE448_KEY_SIZE]; - word32 outLen = sizeof(out); - int endian = EC448_BIG_ENDIAN; - int ret; + curve448_key private_key; + curve448_key public_key; + WC_RNG rng; + byte out[CURVE448_KEY_SIZE]; + word32 outLen = sizeof(out); + int endian = EC448_BIG_ENDIAN; - ret = wc_curve448_init(&private_key); - if (ret == 0) { - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &private_key); - } - } - if (ret == 0) { - ret = wc_curve448_init(&public_key); - } - if (ret == 0) { - if (ret == 0) { - ret = wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &public_key); - } - } + XMEMSET(&rng, 0, sizeof(WC_RNG)); + + ExpectIntEQ(wc_curve448_init(&private_key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &private_key), 0); + + ExpectIntEQ(wc_curve448_init(&public_key), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &public_key), 0); + ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, out, + &outLen, endian), 0); - if (ret == 0) { - ret = wc_curve448_shared_secret_ex(&private_key, &public_key, out, - &outLen, endian); - } /* test bad cases */ - if (ret == 0) { - ret = wc_curve448_shared_secret_ex(NULL, NULL, NULL, 0, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_shared_secret_ex(NULL, &public_key, out, - &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_shared_secret_ex(&private_key, NULL, out, - &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_shared_secret_ex(&private_key, &public_key, NULL, - &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_shared_secret_ex(&private_key, &public_key, out, - NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_curve448_shared_secret_ex(NULL, NULL, NULL, 0, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_shared_secret_ex(NULL, &public_key, out, &outLen, + endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, NULL, out, &outLen, + endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, NULL, + &outLen, endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, out, + NULL, endian), BAD_FUNC_ARG); outLen = outLen - 2; - if (ret == 0) { - ret = wc_curve448_shared_secret_ex(&private_key, &public_key, out, - &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_curve448_shared_secret_ex(&private_key, &public_key, out, + &outLen, endian), BAD_FUNC_ARG); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve448_free(&private_key); wc_curve448_free(&public_key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -} /*END test_wc_curve448_shared_secret_ex*/ + return EXPECT_RESULT(); +} /* END test_wc_curve448_shared_secret_ex*/ /* * Testing test_wc_curve448_export_public_ex */ static int test_wc_curve448_export_public_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE448) WC_RNG rng; curve448_key key; byte out[CURVE448_KEY_SIZE]; word32 outLen = sizeof(out); int endian = EC448_BIG_ENDIAN; - int ret; - ret = wc_curve448_init(&key); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key); - if (ret == 0) { - ret = wc_curve448_export_public(&key, out, &outLen); - } - if (ret == 0) { - ret = wc_curve448_export_public_ex(&key, out, &outLen, endian); - } - } - /*test bad cases*/ - if (ret == 0) { - ret = wc_curve448_export_public_ex(NULL, NULL, NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_export_public_ex(NULL, out, &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_export_public_ex(&key, NULL, &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_export_public_ex(&key, out, NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_curve448_export_public(&key, out, &outLen), 0); + ExpectIntEQ(wc_curve448_export_public_ex(&key, out, &outLen, endian), 0); + /* test bad cases*/ + ExpectIntEQ(wc_curve448_export_public_ex(NULL, NULL, NULL, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_export_public_ex(NULL, out, &outLen, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_export_public_ex(&key, NULL, &outLen, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_export_public_ex(&key, out, NULL, endian), + BAD_FUNC_ARG); outLen = outLen - 2; - if (ret == 0) { - ret = wc_curve448_export_public_ex(&key, out, &outLen, endian); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } + ExpectIntEQ(wc_curve448_export_public_ex(&key, out, &outLen, endian), + ECC_BAD_ARG_E); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve448_free(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; - -} /*END test_wc_curve448_export_public_ex*/ + return EXPECT_RESULT(); +} /* END test_wc_curve448_export_public_ex*/ /* * Testing test_wc_curve448_export_private_raw_ex */ static int test_wc_curve448_export_private_raw_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE448) - curve448_key key; - byte out[CURVE448_KEY_SIZE]; - word32 outLen = sizeof(out); - int endian = EC448_BIG_ENDIAN; - int ret; + curve448_key key; + byte out[CURVE448_KEY_SIZE]; + word32 outLen = sizeof(out); + int endian = EC448_BIG_ENDIAN; - ret = wc_curve448_init(&key); - if (ret == 0) { - ret = wc_curve448_export_private_raw_ex(&key, out, &outLen, endian); - } - /*test bad cases*/ - if (ret == 0) { - ret = wc_curve448_export_private_raw_ex(NULL, NULL, NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_export_private_raw_ex(NULL, out, &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_export_private_raw_ex(&key, NULL, &outLen, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_export_private_raw_ex(&key, out, NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_export_private_raw_ex(&key, out, &outLen, - EC448_LITTLE_ENDIAN); - } + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, &outLen, endian), + 0); + /* test bad cases*/ + ExpectIntEQ(wc_curve448_export_private_raw_ex(NULL, NULL, NULL, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_export_private_raw_ex(NULL, out, &outLen, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, NULL, &outLen, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, NULL, endian), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, &outLen, + EC448_LITTLE_ENDIAN), 0); outLen = outLen - 2; - if (ret == 0) { - ret = wc_curve448_export_private_raw_ex(&key, out, &outLen, endian); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } + ExpectIntEQ(wc_curve448_export_private_raw_ex(&key, out, &outLen, endian), + ECC_BAD_ARG_E); wc_curve448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -}/*END test_wc_curve448_export_private_raw_ex*/ + return EXPECT_RESULT(); +} /* END test_wc_curve448_export_private_raw_ex*/ /* * Testing test_wc_curve448_import_private_raw_ex */ static int test_wc_curve448_import_private_raw_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE448) - WC_RNG rng; - curve448_key key; - byte priv[CURVE448_KEY_SIZE]; - byte pub[CURVE448_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - int endian = EC448_BIG_ENDIAN; - int ret; + curve448_key key; + WC_RNG rng; + byte priv[CURVE448_KEY_SIZE]; + byte pub[CURVE448_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); + int endian = EC448_BIG_ENDIAN; - ret = wc_curve448_init(&key); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key); - if (ret == 0) { - ret = wc_curve448_export_private_raw(&key, priv, &privSz); - } - if (ret == 0) { - ret = wc_curve448_export_public(&key, pub, &pubSz); - } - if (ret == 0) { - ret = wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, - &key, endian); - } - } + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_curve448_export_private_raw(&key, priv, &privSz), 0); + ExpectIntEQ(wc_curve448_export_public(&key, pub, &pubSz), 0); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, + &key, endian), 0); /* test bad cases */ - if (ret == 0) { - ret = wc_curve448_import_private_raw_ex(NULL, 0, NULL, 0, NULL, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_import_private_raw_ex(NULL, privSz, pub, pubSz, - &key, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_import_private_raw_ex(priv, privSz, NULL, pubSz, - &key, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, - NULL, endian); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_import_private_raw_ex(priv, 0, pub, pubSz, - &key, endian); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_import_private_raw_ex(priv, privSz, pub, 0, - &key, endian); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, - &key, EC448_LITTLE_ENDIAN); - - } - - if (wc_FreeRng(&rng) != 0 && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_curve448_import_private_raw_ex(NULL, 0, NULL, 0, NULL, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_import_private_raw_ex(NULL, privSz, pub, pubSz, + &key, endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, NULL, pubSz, + &key, endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, + NULL, endian), BAD_FUNC_ARG); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, 0, pub, pubSz, + &key, endian), ECC_BAD_ARG_E); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, 0, + &key, endian), ECC_BAD_ARG_E); + ExpectIntEQ(wc_curve448_import_private_raw_ex(priv, privSz, pub, pubSz, + &key, EC448_LITTLE_ENDIAN), 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -} /*END test_wc_curve448_import_private_raw_ex*/ + return EXPECT_RESULT(); +} /* END test_wc_curve448_import_private_raw_ex*/ /* * Testing test_curve448_export_key_raw */ static int test_wc_curve448_export_key_raw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE448) - WC_RNG rng; - curve448_key key; - byte priv[CURVE448_KEY_SIZE]; - byte pub[CURVE448_KEY_SIZE]; - word32 privSz = sizeof(priv); - word32 pubSz = sizeof(pub); - int ret; + curve448_key key; + WC_RNG rng; + byte priv[CURVE448_KEY_SIZE]; + byte pub[CURVE448_KEY_SIZE]; + word32 privSz = sizeof(priv); + word32 pubSz = sizeof(pub); - ret = wc_curve448_init(&key); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key); - if (ret == 0) { - ret = wc_curve448_export_private_raw(&key, priv, &privSz); - } - if (ret == 0) { - ret = wc_curve448_export_public(&key, pub, &pubSz); - } - if (ret == 0) { - ret = wc_curve448_export_key_raw(&key, priv, &privSz, pub, &pubSz); - } - } + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); + ExpectIntEQ(wc_curve448_export_private_raw(&key, priv, &privSz), 0); + ExpectIntEQ(wc_curve448_export_public(&key, pub, &pubSz), 0); + ExpectIntEQ(wc_curve448_export_key_raw(&key, priv, &privSz, pub, &pubSz), + 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve448_free(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -}/*END test_wc_curve448_import_private_raw_ex*/ - + return EXPECT_RESULT(); +} /* END test_wc_curve448_import_private_raw_ex*/ /* * Testing test_wc_curve448_import_private */ static int test_wc_curve448_import_private(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE448) - curve448_key key; - WC_RNG rng; - byte priv[CURVE448_KEY_SIZE]; - word32 privSz = sizeof(priv); - int ret; + curve448_key key; + WC_RNG rng; + byte priv[CURVE448_KEY_SIZE]; + word32 privSz = sizeof(priv); - ret = wc_curve448_init(&key); - if (ret == 0) { - ret = wc_InitRng(&rng); - } - if (ret == 0) { + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key); - if (ret == 0) { - ret = wc_curve448_export_private_raw(&key, priv, &privSz); - } - } - if (ret == 0) { - ret = wc_curve448_import_private(priv, privSz, &key); - } + ExpectIntEQ(wc_curve448_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, &key), 0); + + ExpectIntEQ(wc_curve448_export_private_raw(&key, priv, &privSz), 0); + ExpectIntEQ(wc_curve448_import_private(priv, privSz, &key), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_curve448_free(&key); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -} /*END test_wc_curve448_import*/ + return EXPECT_RESULT(); +} /* END test_wc_curve448_import*/ /* * Testing test_wc_curve448_size. */ static int test_wc_curve448_size(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_CURVE448) - curve448_key key; - int ret = 0; + curve448_key key; - ret = wc_curve448_init(&key); + ExpectIntEQ(wc_curve448_init(&key), 0); /* Test good args for wc_curve448_size */ - if (ret == 0) { - ret = wc_curve448_size(&key); - } - + ExpectIntEQ(wc_curve448_size(&key), CURVE448_KEY_SIZE); /* Test bad args for wc_curve448_size */ - if (ret != 0) { - ret = wc_curve448_size(NULL); - } + ExpectIntEQ(wc_curve448_size(NULL), 0); wc_curve448_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_curve448_size*/ /* @@ -25677,50 +20239,35 @@ static int test_wc_curve448_size(void) */ static int test_wc_ecc_make_key(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(WC_NO_RNG) - WC_RNG rng; ecc_key key; + WC_RNG rng; int ret; - ret = wc_InitRng(&rng); - if (ret != 0) - return TEST_FAIL; + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY14, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY14, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); - /* Pass in bad args. */ - if (ret == 0) { - ret = wc_ecc_make_key(NULL, KEY14, &key); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_make_key(&rng, KEY14, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - wc_ecc_free(&key); - } + /* Pass in bad args. */ + ExpectIntEQ(wc_ecc_make_key(NULL, KEY14, &key), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_make_key(&rng, KEY14, NULL), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) != 0 && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); #ifdef FP_ECC wc_ecc_fp_free(); #endif - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_make_key */ @@ -25729,28 +20276,19 @@ static int test_wc_ecc_make_key(void) */ static int test_wc_ecc_init(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_ECC - ecc_key key; - int ret; + ecc_key key; - ret = wc_ecc_init(&key); + XMEMSET(&key, 0, sizeof(ecc_key)); + + ExpectIntEQ(wc_ecc_init(&key), 0); /* Pass in bad args. */ - if (ret == 0) { - ret = wc_ecc_init(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_init(NULL), BAD_FUNC_ARG); wc_ecc_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_init */ /* @@ -25758,53 +20296,36 @@ static int test_wc_ecc_init(void) */ static int test_wc_ecc_check_key(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(WC_NO_RNG) - WC_RNG rng; - ecc_key key; - int ret; + ecc_key key; + WC_RNG rng; + int ret; XMEMSET(&rng, 0, sizeof(rng)); XMEMSET(&key, 0, sizeof(key)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY14, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY14, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); - if (ret == 0) { - ret = wc_ecc_check_key(&key); - } + ExpectIntEQ(wc_ecc_check_key(&key), 0); /* Pass in bad args. */ - if (ret == 0) { - ret = wc_ecc_check_key(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_check_key(NULL), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_free(&key); #ifdef FP_ECC wc_ecc_fp_free(); #endif - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_check_key */ /* @@ -25812,40 +20333,28 @@ static int test_wc_ecc_check_key(void) */ static int test_wc_ecc_get_generator(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) && \ !defined(HAVE_FIPS) && defined(OPENSSL_EXTRA) - ecc_point* pt; - int ret = 0; + ecc_point* pt = NULL; - pt = wc_ecc_new_point(); - if (!pt) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectNotNull(pt = wc_ecc_new_point()); - if (ret == 0) { - ret = wc_ecc_get_generator(pt, wc_ecc_get_curve_idx(ECC_SECP256R1)); - } + ExpectIntEQ(wc_ecc_get_generator(pt, wc_ecc_get_curve_idx(ECC_SECP256R1)), + MP_OKAY); /* Test bad args. */ - if (ret == MP_OKAY) { - /* Returns Zero for bad arg. */ - ret = wc_ecc_get_generator(pt, -1); - if (ret != MP_OKAY) - wc_ecc_get_generator(NULL, wc_ecc_get_curve_idx(ECC_SECP256R1)); - if (ret != MP_OKAY) - wc_ecc_get_generator(pt, 1000); /* If we ever get to 1000 curves - * increase this number */ - if (ret != MP_OKAY) - wc_ecc_get_generator(NULL, -1); - ret = (ret == MP_OKAY) ? WOLFSSL_FATAL_ERROR : 0; - } + /* Returns Zero for bad arg. */ + ExpectIntNE(wc_ecc_get_generator(pt, -1), MP_OKAY); + ExpectIntNE(wc_ecc_get_generator(NULL, wc_ecc_get_curve_idx(ECC_SECP256R1)), + MP_OKAY); + /* If we ever get to 1000 curves increase this number */ + ExpectIntNE(wc_ecc_get_generator(pt, 1000), MP_OKAY); + ExpectIntNE(wc_ecc_get_generator(NULL, -1), MP_OKAY); wc_ecc_del_point(pt); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_get_generator */ /* @@ -25853,54 +20362,37 @@ static int test_wc_ecc_get_generator(void) */ static int test_wc_ecc_size(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(WC_NO_RNG) WC_RNG rng; ecc_key key; int ret; - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY14, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } - - if (ret == 0) { - ret = wc_ecc_size(&key); - if (ret == KEY14) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - /* Test bad args. */ - if (ret == 0) { - /* Returns Zero for bad arg. */ - ret = wc_ecc_size(NULL); - } - - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - wc_ecc_free(&key); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY14, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); #endif - return res; + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_size(&key), KEY14); + /* Test bad args. */ + /* Returns Zero for bad arg. */ + ExpectIntEQ(wc_ecc_size(NULL), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); +#endif + return EXPECT_RESULT(); } /* END test_wc_ecc_size */ static int test_wc_ecc_params(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; /* FIPS/CAVP self-test modules do not have `wc_ecc_get_curve_params`. It was added after certifications */ #if defined(HAVE_ECC) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) @@ -25908,20 +20400,17 @@ static int test_wc_ecc_params(void) #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) /* Test for SECP256R1 curve */ int curve_id = ECC_SECP256R1; - int curve_idx = wc_ecc_get_curve_idx(curve_id); - AssertIntNE(curve_idx, ECC_CURVE_INVALID); - ecc_set = wc_ecc_get_curve_params(curve_idx); - AssertNotNull(ecc_set); - AssertIntEQ(ecc_set->id, curve_id); + int curve_idx; + + ExpectIntNE(curve_idx = wc_ecc_get_curve_idx(curve_id), ECC_CURVE_INVALID); + ExpectNotNull(ecc_set = wc_ecc_get_curve_params(curve_idx)); + ExpectIntEQ(ecc_set->id, curve_id); #endif /* Test case when SECP256R1 is not enabled */ /* Test that we get curve params for index 0 */ - ecc_set = wc_ecc_get_curve_params(0); - AssertNotNull(ecc_set); - - res = TEST_RES_CHECK(1); + ExpectNotNull(ecc_set = wc_ecc_get_curve_params(0)); #endif /* HAVE_ECC && !HAVE_FIPS && !HAVE_SELFTEST */ - return res; + return EXPECT_RESULT(); } /* @@ -25929,127 +20418,87 @@ static int test_wc_ecc_params(void) */ static int test_wc_ecc_signVerify_hash(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_SIGN) && !defined(NO_ASN) && !defined(WC_NO_RNG) - WC_RNG rng; - ecc_key key; - int ret; - int signH = WOLFSSL_FATAL_ERROR; - #ifdef HAVE_ECC_VERIFY - int verifyH = WOLFSSL_FATAL_ERROR; - int verify = 0; - #endif - word32 siglen = ECC_BUFSIZE; - byte sig[ECC_BUFSIZE]; - byte adjustedSig[ECC_BUFSIZE+1]; - byte digest[] = TEST_STRING; - word32 digestlen = (word32)TEST_STRING_SZ; + ecc_key key; + WC_RNG rng; + int ret; +#ifdef HAVE_ECC_VERIFY + int verify = 0; +#endif + word32 siglen = ECC_BUFSIZE; + byte sig[ECC_BUFSIZE]; + byte adjustedSig[ECC_BUFSIZE+1]; + byte digest[] = TEST_STRING; + word32 digestlen = (word32)TEST_STRING_SZ; /* Init stack var */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(sig, 0, siglen); - XMEMSET(&key, 0, sizeof(key)); XMEMSET(adjustedSig, 0, ECC_BUFSIZE+1); /* Init structs. */ - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY14, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY14, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); - if (ret == 0) { - ret = wc_ecc_sign_hash(digest, digestlen, sig, &siglen, &rng, &key); - } + ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, &siglen, &rng, &key), + 0); /* Check bad args. */ - if (ret == 0) { - signH = wc_ecc_sign_hash(NULL, digestlen, sig, &siglen, &rng, &key); - if (signH == ECC_BAD_ARG_E) { - signH = wc_ecc_sign_hash(digest, digestlen, NULL, &siglen, - &rng, &key); - } - if (signH == ECC_BAD_ARG_E) { - signH = wc_ecc_sign_hash(digest, digestlen, sig, NULL, - &rng, &key); - } - if (signH == ECC_BAD_ARG_E) { - signH = wc_ecc_sign_hash(digest, digestlen, sig, &siglen, - NULL, &key); - } - if (signH == ECC_BAD_ARG_E) { - signH = wc_ecc_sign_hash(digest, digestlen, sig, &siglen, - &rng, NULL); - } - if (signH == ECC_BAD_ARG_E) { - signH = 0; - } - else { - signH = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_sign_hash(NULL, digestlen, sig, &siglen, &rng, &key), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, NULL, &siglen, &rng, &key), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, NULL, &rng, &key), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, &siglen, NULL, &key), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sign_hash(digest, digestlen, sig, &siglen, &rng, NULL), + ECC_BAD_ARG_E); #ifdef HAVE_ECC_VERIFY - ret = wc_ecc_verify_hash(sig, siglen, digest, digestlen, &verify, &key); - if (verify != 1 && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, digest, digestlen, &verify, + &key), 0); + ExpectIntEQ(verify, 1); /* test check on length of signature passed in */ XMEMCPY(adjustedSig, sig, siglen); adjustedSig[1] = adjustedSig[1] + 1; /* add 1 to length for extra byte*/ #ifndef NO_STRICT_ECDSA_LEN - AssertIntNE(wc_ecc_verify_hash(adjustedSig, siglen+1, digest, digestlen, - &verify, &key), 0); + ExpectIntNE(wc_ecc_verify_hash(adjustedSig, siglen+1, digest, digestlen, + &verify, &key), 0); #else /* if NO_STRICT_ECDSA_LEN is set then extra bytes after the signature * is allowed */ - AssertIntEQ(wc_ecc_verify_hash(adjustedSig, siglen+1, digest, digestlen, - &verify, &key), 0); + ExpectIntEQ(wc_ecc_verify_hash(adjustedSig, siglen+1, digest, digestlen, + &verify, &key), 0); #endif /* Test bad args. */ - if (ret == 0) { - verifyH = wc_ecc_verify_hash(NULL, siglen, digest, digestlen, - &verify, &key); - if (verifyH == ECC_BAD_ARG_E) { - verifyH = wc_ecc_verify_hash(sig, siglen, NULL, digestlen, - &verify, &key); - } - if (verifyH == ECC_BAD_ARG_E) { - verifyH = wc_ecc_verify_hash(sig, siglen, digest, digestlen, - NULL, &key); - } - if (verifyH == ECC_BAD_ARG_E) { - verifyH = wc_ecc_verify_hash(sig, siglen, digest, digestlen, - &verify, NULL); - } - if (verifyH == ECC_BAD_ARG_E) { - verifyH = 0; - } - else { - verifyH = WOLFSSL_FATAL_ERROR; - } - } - + ExpectIntEQ(wc_ecc_verify_hash(NULL, siglen, digest, digestlen, &verify, + &key), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, NULL, digestlen, &verify, &key), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, digest, digestlen, NULL, &key), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_verify_hash(sig, siglen, digest, digestlen, &verify, + NULL), ECC_BAD_ARG_E); #endif /* HAVE_ECC_VERIFY */ - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_free(&key); #ifdef FP_ECC wc_ecc_fp_free(); #endif - - res = TEST_RES_CHECK(ret == 0 && signH == 0 && verifyH == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_sign_hash */ @@ -26058,11 +20507,14 @@ static int test_wc_ecc_signVerify_hash(void) */ static int test_wc_ecc_shared_secret(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_DHE) && !defined(WC_NO_RNG) - ecc_key key, pubKey; + ecc_key key; + ecc_key pubKey; WC_RNG rng; +#if defined(NO_ECC256) int ret; +#endif byte out[KEY32]; int keySz = sizeof(out); word32 outlen = (word32)sizeof(out); @@ -26087,102 +20539,68 @@ static int test_wc_ecc_shared_secret(void) PRIVATE_KEY_UNLOCK(); /* Initialize variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&pubKey, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(out, 0, keySz); - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); - XMEMSET(&pubKey, 0, sizeof(pubKey)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_init(&pubKey); - } - } + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_ecc_init(&pubKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); -#if defined(HAVE_ECC) && !defined(NO_ECC256) - if (ret == 0) { - ret = wc_ecc_import_raw(&key, qx, qy, d, curveName); - } - if (ret == 0) { - ret = wc_ecc_import_raw(&pubKey, qx, qy, NULL, curveName); - } +#if !defined(NO_ECC256) + ExpectIntEQ(wc_ecc_import_raw(&key, qx, qy, d, curveName), 0); + ExpectIntEQ(wc_ecc_import_raw(&pubKey, qx, qy, NULL, curveName), 0); #else - if (ret == 0) { - ret = wc_ecc_make_key(&rng, keySz, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - if (ret == 0) { - ret = wc_ecc_make_key(&rng, keySz, &pubKey); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &pubKey.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); #endif #if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \ (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2))) && \ !defined(HAVE_SELFTEST) - if (ret == 0) { - ret = wc_ecc_set_rng(&key, &rng); - } + ExpectIntEQ(wc_ecc_set_rng(&key, &rng), 0); #endif - if (ret == 0) { - ret = wc_ecc_shared_secret(&key, &pubKey, out, &outlen); + ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, out, &outlen), 0); -#if defined(HAVE_ECC) && !defined(NO_ECC256) - if (ret == 0) { - if (0 != XMEMCMP(out, expected_shared_secret, outlen)) { - ret = WOLFSSL_FATAL_ERROR; - } - } +#if !defined(NO_ECC256) + ExpectIntEQ(XMEMCMP(out, expected_shared_secret, outlen), 0); #endif - /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_shared_secret(NULL, &pubKey, out, &outlen); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_shared_secret(&key, NULL, out, &outlen); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_shared_secret(&key, &pubKey, NULL, &outlen); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_shared_secret(&key, &pubKey, out, NULL); - } - if (ret == BAD_FUNC_ARG) { - /* Invalid length */ - outlen = 1; - ret = wc_ecc_shared_secret(&key, &pubKey, out, &outlen); - } + /* Test bad args. */ + ExpectIntEQ(wc_ecc_shared_secret(NULL, &pubKey, out, &outlen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_shared_secret(&key, NULL, out, &outlen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, NULL, &outlen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, out, NULL), + BAD_FUNC_ARG); + /* Invalid length */ + outlen = 1; + ExpectIntEQ(wc_ecc_shared_secret(&key, &pubKey, out, &outlen), + BUFFER_E); - if (ret == BUFFER_E) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } - - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - wc_ecc_free(&key); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_free(&pubKey); + wc_ecc_free(&key); #ifdef FP_ECC wc_ecc_fp_free(); #endif PRIVATE_KEY_LOCK(); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END tests_wc_ecc_shared_secret */ /* @@ -26190,59 +20608,39 @@ static int test_wc_ecc_shared_secret(void) */ static int test_wc_ecc_export_x963(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) ecc_key key; WC_RNG rng; byte out[ECC_ASN963_MAX_BUF_SZ]; word32 outlen = sizeof(out); - int ret = 0; + int ret; PRIVATE_KEY_UNLOCK(); /* Initialize variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(out, 0, outlen); - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY20, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } - if (ret == 0) { - ret = wc_ecc_export_x963(&key, out, &outlen); - } + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY20, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_export_x963(&key, out, &outlen), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_export_x963(NULL, out, &outlen); - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_export_x963(&key, NULL, &outlen); - } - if (ret == LENGTH_ONLY_E) { - ret = wc_ecc_export_x963(&key, out, NULL); - } - if (ret == ECC_BAD_ARG_E) { - key.idx = -4; - ret = wc_ecc_export_x963(&key, out, &outlen); - } - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_export_x963(NULL, out, &outlen), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_export_x963(&key, NULL, &outlen), LENGTH_ONLY_E); + ExpectIntEQ(wc_ecc_export_x963(&key, out, NULL), ECC_BAD_ARG_E); + key.idx = -4; + ExpectIntEQ(wc_ecc_export_x963(&key, out, &outlen), ECC_BAD_ARG_E); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_free(&key); #ifdef FP_ECC @@ -26250,10 +20648,8 @@ static int test_wc_ecc_export_x963(void) #endif PRIVATE_KEY_LOCK(); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_export_x963 */ /* @@ -26262,11 +20658,11 @@ static int test_wc_ecc_export_x963(void) */ static int test_wc_ecc_export_x963_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) ecc_key key; WC_RNG rng; - int ret = 0; + int ret; byte out[ECC_ASN963_MAX_BUF_SZ]; word32 outlen = sizeof(out); #ifdef HAVE_COMP_KEY @@ -26274,97 +20670,58 @@ static int test_wc_ecc_export_x963_ex(void) #endif /* Init stack variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(out, 0, outlen); - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY64, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY64, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); - #ifdef HAVE_COMP_KEY - if (ret == 0) { - ret = wc_ecc_export_x963_ex(&key, out, &outlen, COMP); - } - #else - if (ret == 0) { - ret = wc_ecc_export_x963_ex(&key, out, &outlen, NOCOMP); - } - #endif +#ifdef HAVE_COMP_KEY + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, COMP), 0); +#else + ExpectIntEQ(ret = wc_ecc_export_x963_ex(&key, out, &outlen, NOCOMP), 0); +#endif /* Test bad args. */ - #ifdef HAVE_COMP_KEY - if (ret == 0) { - ret = wc_ecc_export_x963_ex(NULL, out, &outlen, COMP); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_export_x963_ex(&key, NULL, &outlen, COMP); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_export_x963_ex(&key, out, NULL, COMP); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_export_x963_ex(&key, out, &badOutLen, COMP); - } +#ifdef HAVE_COMP_KEY + ExpectIntEQ(wc_ecc_export_x963_ex(NULL, out, &outlen, COMP), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_export_x963_ex(&key, NULL, &outlen, COMP), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, NULL, COMP), BAD_FUNC_ARG); #if defined(HAVE_FIPS) && (!defined(FIPS_VERSION_LT) || FIPS_VERSION_LT(5,3)) - if (ret == BUFFER_E) + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &badOutLen, COMP), BUFFER_E); #else - if (ret == LENGTH_ONLY_E) + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &badOutLen, COMP), + LENGTH_ONLY_E); +#endif + key.idx = -4; + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, COMP), ECC_BAD_ARG_E); +#else + ExpectIntEQ(wc_ecc_export_x963_ex(NULL, out, &outlen, NOCOMP), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_export_x963_ex(&key, NULL, &outlen, NOCOMP), + LENGTH_ONLY_E); + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, 1), NOT_COMPILED_IN); + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, NULL, NOCOMP), + ECC_BAD_ARG_E); + key.idx = -4; + ExpectIntEQ(wc_ecc_export_x963_ex(&key, out, &outlen, NOCOMP), + ECC_BAD_ARG_E); #endif - { - key.idx = -4; - ret = wc_ecc_export_x963_ex(&key, out, &outlen, COMP); - } - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } - #else - if (ret == 0) { - ret = wc_ecc_export_x963_ex(NULL, out, &outlen, NOCOMP); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_export_x963_ex(&key, NULL, &outlen, NOCOMP); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_export_x963_ex(&key, out, &outlen, 1); - } - if (ret == NOT_COMPILED_IN) { - ret = wc_ecc_export_x963_ex(&key, out, NULL, NOCOMP); - } - if (ret == BAD_FUNC_ARG) { - key.idx = -4; - ret = wc_ecc_export_x963_ex(&key, out, &outlen, NOCOMP); - } - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - #endif - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_free(&key); #ifdef FP_ECC wc_ecc_fp_free(); #endif - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_export_x963_ex */ /* @@ -26372,85 +20729,63 @@ static int test_wc_ecc_export_x963_ex(void) */ static int test_wc_ecc_import_x963(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_IMPORT) && \ defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) - ecc_key pubKey, key; + ecc_key pubKey; + ecc_key key; WC_RNG rng; byte x963[ECC_ASN963_MAX_BUF_SZ]; word32 x963Len = (word32)sizeof(x963); int ret; /* Init stack variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&pubKey, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(x963, 0, x963Len); - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); - XMEMSET(&pubKey, 0, sizeof(pubKey)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&pubKey); - if (ret == 0) { - ret = wc_ecc_init(&key); - } - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY24, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - if (ret == 0) { - PRIVATE_KEY_UNLOCK(); - ret = wc_ecc_export_x963(&key, x963, &x963Len); - PRIVATE_KEY_LOCK(); - } - } + ExpectIntEQ(wc_ecc_init(&pubKey), 0); + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY24, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); - if (ret == 0) { - ret = wc_ecc_import_x963(x963, x963Len, &pubKey); - } + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_ecc_export_x963(&key, x963, &x963Len), 0); + PRIVATE_KEY_LOCK(); + + ExpectIntEQ(wc_ecc_import_x963(x963, x963Len, &pubKey), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_import_x963(NULL, x963Len, &pubKey); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_import_x963(x963, x963Len, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_import_x963(x963, x963Len + 1, &pubKey); - } - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_import_x963(NULL, x963Len, &pubKey), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_import_x963(x963, x963Len, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_import_x963(x963, x963Len + 1, &pubKey), ECC_BAD_ARG_E); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_free(&key); wc_ecc_free(&pubKey); #ifdef FP_ECC wc_ecc_fp_free(); #endif - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END wc_ecc_import_x963 */ /* * testing wc_ecc_import_private_key() */ -static int ecc_import_private_key(void) +static int test_wc_ecc_import_private_key(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_IMPORT) && \ defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) - ecc_key key, keyImp; + ecc_key key; + ecc_key keyImp; WC_RNG rng; byte privKey[ECC_PRIV_KEY_BUF]; /* Raw private key.*/ byte x963Key[ECC_ASN963_MAX_BUF_SZ]; @@ -26459,68 +20794,44 @@ static int ecc_import_private_key(void) int ret; /* Init stack variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&keyImp, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(privKey, 0, privKeySz); XMEMSET(x963Key, 0, x963KeySz); - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); - XMEMSET(&keyImp, 0, sizeof(keyImp)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_init(&keyImp); - } - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY48, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - if (ret == 0) { - PRIVATE_KEY_UNLOCK(); - ret = wc_ecc_export_x963(&key, x963Key, &x963KeySz); - PRIVATE_KEY_LOCK(); - } - if (ret == 0) { - ret = wc_ecc_export_private_only(&key, privKey, &privKeySz); - } - } + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_ecc_init(&keyImp), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY48, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); - if (ret == 0) { - ret = wc_ecc_import_private_key(privKey, privKeySz, x963Key, - x963KeySz, &keyImp); - } + PRIVATE_KEY_UNLOCK(); + ExpectIntEQ(wc_ecc_export_x963(&key, x963Key, &x963KeySz), 0); + PRIVATE_KEY_LOCK(); + ExpectIntEQ(wc_ecc_export_private_only(&key, privKey, &privKeySz), 0); + + ExpectIntEQ(wc_ecc_import_private_key(privKey, privKeySz, x963Key, + x963KeySz, &keyImp), 0); /* Pass in bad args. */ - if (ret == 0) { - ret = wc_ecc_import_private_key(privKey, privKeySz, x963Key, - x963KeySz, NULL); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_import_private_key(NULL, privKeySz, x963Key, - x963KeySz, &keyImp); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_import_private_key(privKey, privKeySz, x963Key, + x963KeySz, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_import_private_key(NULL, privKeySz, x963Key, x963KeySz, + &keyImp), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - wc_ecc_free(&key); + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_free(&keyImp); + wc_ecc_free(&key); #ifdef FP_ECC wc_ecc_fp_free(); #endif - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -} /* END wc_ecc_import_private_key */ + return EXPECT_RESULT(); +} /* END test_wc_ecc_import_private_key */ /* @@ -26528,7 +20839,7 @@ static int ecc_import_private_key(void) */ static int test_wc_ecc_export_private_only(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) ecc_key key; WC_RNG rng; @@ -26537,52 +20848,32 @@ static int test_wc_ecc_export_private_only(void) int ret; /* Init stack variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(out, 0, outlen); - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY32, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } - if (ret == 0) { - ret = wc_ecc_export_private_only(&key, out, &outlen); - } + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY32, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_export_private_only(&key, out, &outlen), 0); /* Pass in bad args. */ - if (ret == 0) { - ret = wc_ecc_export_private_only(NULL, out, &outlen); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_export_private_only(&key, NULL, &outlen); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_export_private_only(&key, out, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_export_private_only(NULL, out, &outlen), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_export_private_only(&key, NULL, &outlen), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_export_private_only(&key, out, NULL), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_free(&key); #ifdef FP_ECC wc_ecc_fp_free(); #endif - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_export_private_only */ @@ -26591,183 +20882,134 @@ static int test_wc_ecc_export_private_only(void) */ static int test_wc_ecc_rs_to_sig(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(NO_ASN) /* first [P-192,SHA-1] vector from FIPS 186-3 NIST vectors */ - const char* R = "6994d962bdd0d793ffddf855ec5bf2f91a9698b46258a63e"; - const char* S = "02ba6465a234903744ab02bc8521405b73cf5fc00e1a9f41"; - const char* zeroStr = "0"; - byte sig[ECC_MAX_SIG_SIZE]; - word32 siglen = (word32)sizeof(sig); - /*R and S max size is the order of curve. 2^192.*/ - int keySz = KEY24; - byte r[KEY24]; - byte s[KEY24]; - word32 rlen = (word32)sizeof(r); - word32 slen = (word32)sizeof(s); - int ret; + const char* R = "6994d962bdd0d793ffddf855ec5bf2f91a9698b46258a63e"; + const char* S = "02ba6465a234903744ab02bc8521405b73cf5fc00e1a9f41"; + const char* zeroStr = "0"; + byte sig[ECC_MAX_SIG_SIZE]; + word32 siglen = (word32)sizeof(sig); + /* R and S max size is the order of curve. 2^192.*/ + int keySz = KEY24; + byte r[KEY24]; + byte s[KEY24]; + word32 rlen = (word32)sizeof(r); + word32 slen = (word32)sizeof(s); /* Init stack variables. */ XMEMSET(sig, 0, ECC_MAX_SIG_SIZE); XMEMSET(r, 0, keySz); XMEMSET(s, 0, keySz); - ret = wc_ecc_rs_to_sig(R, S, sig, &siglen); - if (ret == 0) { - ret = wc_ecc_sig_to_rs(sig, siglen, r, &rlen, s, &slen); - #if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION > 2)) - if (ret == ASN_PARSE_E) { - ret = 0; - } - #endif - } + ExpectIntEQ(wc_ecc_rs_to_sig(R, S, sig, &siglen), 0); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, s, &slen), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_rs_to_sig(NULL, S, sig, &siglen); - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_rs_to_sig(R, NULL, sig, &siglen); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_rs_to_sig(R, S, sig, NULL); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_rs_to_sig(R, S, NULL, &siglen); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_rs_to_sig(R, zeroStr, sig, &siglen); - } - if (ret == MP_ZERO_E) { - ret = wc_ecc_rs_to_sig(zeroStr, S, sig, &siglen); - } - if (ret == MP_ZERO_E) { - ret = wc_ecc_sig_to_rs(NULL, siglen, r, &rlen, s, &slen); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_sig_to_rs(sig, siglen, NULL, &rlen, s, &slen); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_sig_to_rs(sig, siglen, r, NULL, s, &slen); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_sig_to_rs(sig, siglen, r, &rlen, NULL, &slen); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_sig_to_rs(sig, siglen, r, &rlen, s, NULL); - } - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_ecc_rs_to_sig(NULL, S, sig, &siglen), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_rs_to_sig(R, NULL, sig, &siglen), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_rs_to_sig(R, S, sig, NULL), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_rs_to_sig(R, S, NULL, &siglen), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_rs_to_sig(R, zeroStr, sig, &siglen), MP_ZERO_E); + ExpectIntEQ(wc_ecc_rs_to_sig(zeroStr, S, sig, &siglen), MP_ZERO_E); + ExpectIntEQ(wc_ecc_sig_to_rs(NULL, siglen, r, &rlen, s, &slen), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, NULL, &rlen, s, &slen), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, NULL, s, &slen), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, NULL, &slen), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sig_to_rs(sig, siglen, r, &rlen, s, NULL), + ECC_BAD_ARG_E); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_rs_to_sig */ static int test_wc_ecc_import_raw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(NO_ECC256) ecc_key key; - int ret = 0; const char* qx = - "bb33ac4c27504ac64aa504c33cde9f36db722dce94ea2bfacb2009392c16e861"; + "bb33ac4c27504ac64aa504c33cde9f36db722dce94ea2bfacb2009392c16e861"; const char* qy = - "02e9af4dd302939a315b9792217ff0cf18da9111023486e82058330b803489d8"; + "02e9af4dd302939a315b9792217ff0cf18da9111023486e82058330b803489d8"; const char* d = - "45b66902739c6c85a1385b72e8e8c7acc4038d533504fa6c28dc348de1a8098c"; + "45b66902739c6c85a1385b72e8e8c7acc4038d533504fa6c28dc348de1a8098c"; const char* curveName = "SECP256R1"; #ifdef WOLFSSL_VALIDATE_ECC_IMPORT const char* kNullStr = ""; + int ret; #endif - ret = wc_ecc_init(&key); + XMEMSET(&key, 0, sizeof(ecc_key)); + + ExpectIntEQ(wc_ecc_init(&key), 0); /* Test good import */ - if (ret == 0) { - ret = wc_ecc_import_raw(&key, qx, qy, d, curveName); - } + ExpectIntEQ(wc_ecc_import_raw(&key, qx, qy, d, curveName), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_import_raw(NULL, qx, qy, d, curveName); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_import_raw(&key, NULL, qy, d, curveName); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_import_raw(&key, qx, NULL, d, curveName); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_import_raw(&key, qx, qy, d, NULL); - } - #ifdef WOLFSSL_VALIDATE_ECC_IMPORT - if (ret == BAD_FUNC_ARG) { - #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) - wc_ecc_free(&key); - #endif - ret = wc_ecc_import_raw(&key, kNullStr, kNullStr, kNullStr, curveName); - if (ret == ECC_INF_E) - ret = BAD_FUNC_ARG; /* This is expected by other tests */ - } + ExpectIntEQ(wc_ecc_import_raw(NULL, qx, qy, d, curveName), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_import_raw(&key, NULL, qy, d, curveName), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_import_raw(&key, qx, NULL, d, curveName), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_import_raw(&key, qx, qy, d, NULL), BAD_FUNC_ARG); +#ifdef WOLFSSL_VALIDATE_ECC_IMPORT + #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) + wc_ecc_free(&key); #endif - #if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) - if (ret == BAD_FUNC_ARG) { - #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) - wc_ecc_free(&key); - #endif - ret = wc_ecc_import_raw(&key, "0", qy, d, curveName); - /* Note: SP math "is point" failure returns MP_VAL */ - if (ret == ECC_INF_E || ret == MP_VAL) { - ret = BAD_FUNC_ARG; /* This is expected by other tests */ - } - } - if (ret == BAD_FUNC_ARG) { - #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) - wc_ecc_free(&key); - #endif - ret = wc_ecc_import_raw(&key, qx, "0", d, curveName); - /* Note: SP math "is point" failure returns MP_VAL */ - if (ret == ECC_INF_E || ret == MP_VAL) { - ret = BAD_FUNC_ARG; /* This is expected by other tests */ - } - } + ExpectIntLT(ret = wc_ecc_import_raw(&key, kNullStr, kNullStr, kNullStr, + curveName), 0); + ExpectTrue((ret == ECC_INF_E) || (ret == BAD_FUNC_ARG)); +#endif +#if !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) + #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) + wc_ecc_free(&key); #endif - - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } +#ifdef WOLFSSL_VALIDATE_ECC_IMPORT + ExpectIntEQ(wc_ecc_import_raw(&key, "0", qy, d, curveName), BAD_FUNC_ARG); +#else + ExpectIntEQ(wc_ecc_import_raw(&key, "0", qy, d, curveName), 0); +#endif + #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) + wc_ecc_free(&key); + #endif +#ifdef WOLFSSL_VALIDATE_ECC_IMPORT + ExpectIntEQ(wc_ecc_import_raw(&key, qx, "0", d, curveName), BAD_FUNC_ARG); +#else + ExpectIntEQ(wc_ecc_import_raw(&key, qx, "0", d, curveName), 0); +#endif + #if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH) + wc_ecc_free(&key); + #endif + ExpectIntEQ(wc_ecc_import_raw(&key, "0", "0", d, curveName), ECC_INF_E); +#endif wc_ecc_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_import_raw */ static int test_wc_ecc_import_unsigned(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(NO_ECC256) && !defined(HAVE_SELFTEST) && \ - (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && HAVE_FIPS_VERSION >= 2)) - ecc_key key; - const byte qx[] = { + (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \ + HAVE_FIPS_VERSION >= 2)) + ecc_key key; + const byte qx[] = { 0xbb, 0x33, 0xac, 0x4c, 0x27, 0x50, 0x4a, 0xc6, 0x4a, 0xa5, 0x04, 0xc3, 0x3c, 0xde, 0x9f, 0x36, 0xdb, 0x72, 0x2d, 0xce, 0x94, 0xea, 0x2b, 0xfa, 0xcb, 0x20, 0x09, 0x39, 0x2c, 0x16, 0xe8, 0x61 }; - const byte qy[] = { + const byte qy[] = { 0x02, 0xe9, 0xaf, 0x4d, 0xd3, 0x02, 0x93, 0x9a, 0x31, 0x5b, 0x97, 0x92, 0x21, 0x7f, 0xf0, 0xcf, 0x18, 0xda, 0x91, 0x11, 0x02, 0x34, 0x86, 0xe8, 0x20, 0x58, 0x33, 0x0b, 0x80, 0x34, 0x89, 0xd8 }; - const byte d[] = { + const byte d[] = { 0x45, 0xb6, 0x69, 0x02, 0x73, 0x9c, 0x6c, 0x85, 0xa1, 0x38, 0x5b, 0x72, 0xe8, 0xe8, 0xc7, 0xac, 0xc4, 0x03, 0x8d, 0x53, 0x35, 0x04, 0xfa, 0x6c, @@ -26775,48 +21017,34 @@ static int test_wc_ecc_import_unsigned(void) }; #ifdef WOLFSSL_VALIDATE_ECC_IMPORT const byte nullBytes[32] = {0}; -#endif - int curveId = ECC_SECP256R1; int ret; +#endif + int curveId = ECC_SECP256R1; - ret = wc_ecc_init(&key); + XMEMSET(&key, 0, sizeof(ecc_key)); - if (ret == 0) { - ret = wc_ecc_import_unsigned(&key, (byte*)qx, (byte*)qy, (byte*)d, - curveId); - } + ExpectIntEQ(wc_ecc_init(&key), 0); + + ExpectIntEQ(wc_ecc_import_unsigned(&key, (byte*)qx, (byte*)qy, (byte*)d, + curveId), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_import_unsigned(NULL, (byte*)qx, (byte*)qy, (byte*)d, - curveId); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_import_unsigned(&key, NULL, (byte*)qy, (byte*)d, - curveId); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_import_unsigned(&key, (byte*)qx, NULL, (byte*)d, - curveId); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_import_unsigned(&key, (byte*)qx, (byte*)qy, (byte*)d, - ECC_CURVE_INVALID); - } - #ifdef WOLFSSL_VALIDATE_ECC_IMPORT - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_import_unsigned(&key, (byte*)nullBytes, - (byte*)nullBytes, (byte*)nullBytes, curveId); - } - #endif - if (ret == BAD_FUNC_ARG || ret == ECC_INF_E) { - ret = 0; - } - } + ExpectIntEQ(wc_ecc_import_unsigned(NULL, (byte*)qx, (byte*)qy, (byte*)d, + curveId), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_import_unsigned(&key, NULL, (byte*)qy, (byte*)d, + curveId), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_import_unsigned(&key, (byte*)qx, NULL, (byte*)d, + curveId), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_import_unsigned(&key, (byte*)qx, (byte*)qy, (byte*)d, + ECC_CURVE_INVALID), BAD_FUNC_ARG); +#ifdef WOLFSSL_VALIDATE_ECC_IMPORT + ExpectIntLT(ret = wc_ecc_import_unsigned(&key, (byte*)nullBytes, + (byte*)nullBytes, (byte*)nullBytes, curveId), 0); + ExpectTrue((ret == ECC_INF_E) || (ret == BAD_FUNC_ARG)); +#endif wc_ecc_free(&key); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_import_unsigned */ @@ -26825,41 +21053,31 @@ static int test_wc_ecc_import_unsigned(void) */ static int test_wc_ecc_sig_size(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(WC_NO_RNG) - ecc_key key; - WC_RNG rng; - int keySz = KEY16; - int ret = 0; + ecc_key key; + WC_RNG rng; + int keySz = KEY16; + int ret; XMEMSET(&rng, 0, sizeof(rng)); XMEMSET(&key, 0, sizeof(key)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, keySz, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } - if (ret == 0) { - ret = wc_ecc_sig_size(&key); - if (ret <= (2 * keySz + SIG_HEADER_SZ + ECC_MAX_PAD_SZ)) { - ret = 0; - } - } - - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - wc_ecc_free(&key); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); #endif - return res; + ExpectIntEQ(ret, 0); + + ExpectIntLE(wc_ecc_sig_size(&key), + (2 * keySz + SIG_HEADER_SZ + ECC_MAX_PAD_SZ)); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); +#endif + return EXPECT_RESULT(); } /* END test_wc_ecc_sig_size */ /* @@ -26867,47 +21085,30 @@ static int test_wc_ecc_sig_size(void) */ static int test_wc_ecc_ctx_new(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) - WC_RNG rng; - int ret = 0; - ecEncCtx* cli = NULL; - ecEncCtx* srv = NULL; + WC_RNG rng; + ecEncCtx* cli = NULL; + ecEncCtx* srv = NULL; - ret = wc_InitRng(&rng); - - if (ret == 0) { - cli = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng); - srv = wc_ecc_ctx_new(REQ_RESP_SERVER, &rng); - } - if (ret == 0 && (cli == NULL || srv == NULL)) { - ret = WOLFSSL_FATAL_ERROR; - } + XMEMSET(&rng, 0, sizeof(WC_RNG)); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectNotNull(cli = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); + ExpectNotNull(srv = wc_ecc_ctx_new(REQ_RESP_SERVER, &rng)); wc_ecc_ctx_free(cli); + cli = NULL; wc_ecc_ctx_free(srv); /* Test bad args. */ - if (ret == 0) { - /* wc_ecc_ctx_new_ex() will free if returned NULL. */ - cli = wc_ecc_ctx_new(0, &rng); - if (cli != NULL) { - ret = WOLFSSL_FATAL_ERROR; - } - cli = wc_ecc_ctx_new(REQ_RESP_CLIENT, NULL); - if (cli != NULL) { - ret = WOLFSSL_FATAL_ERROR; - } - } + /* wc_ecc_ctx_new_ex() will free if returned NULL. */ + ExpectNull(cli = wc_ecc_ctx_new(0, &rng)); + ExpectNull(cli = wc_ecc_ctx_new(REQ_RESP_CLIENT, NULL)); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_ctx_free(cli); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_ctx_new */ /* @@ -26915,45 +21116,26 @@ static int test_wc_ecc_ctx_new(void) */ static int test_wc_ecc_ctx_reset(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) - ecEncCtx* ctx = NULL; - WC_RNG rng; - int ret = 0; + ecEncCtx* ctx = NULL; + WC_RNG rng; - ret = wc_InitRng(&rng); - if (ret == 0) { - if ( (ctx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)) == NULL ) { - ret = WOLFSSL_FATAL_ERROR; - } - } + XMEMSET(&rng, 0, sizeof(rng)); - if (ret == 0) { - ret = wc_ecc_ctx_reset(ctx, &rng); - } + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectNotNull(ctx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); + + ExpectIntEQ(wc_ecc_ctx_reset(ctx, &rng), 0); /* Pass in bad args. */ - if (ret == 0) { - ret = wc_ecc_ctx_reset(NULL, &rng); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_ctx_reset(ctx, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_ctx_reset(NULL, &rng), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_ctx_reset(ctx, NULL), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } wc_ecc_ctx_free(ctx); - - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_ctx_reset */ /* @@ -26961,65 +21143,36 @@ static int test_wc_ecc_ctx_reset(void) */ static int test_wc_ecc_ctx_set_peer_salt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) - WC_RNG rng; - ecEncCtx* cliCtx = NULL; - ecEncCtx* servCtx = NULL; - const byte* cliSalt = NULL; - const byte* servSalt = NULL; - int ret = 0; + WC_RNG rng; + ecEncCtx* cliCtx = NULL; + ecEncCtx* servCtx = NULL; + const byte* cliSalt = NULL; + const byte* servSalt = NULL; - ret = wc_InitRng(&rng); - if (ret == 0) { - if ( ( (cliCtx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)) == NULL ) || - ( (servCtx = wc_ecc_ctx_new(REQ_RESP_SERVER, &rng)) == NULL) ) { - ret = WOLFSSL_FATAL_ERROR; - } - } + XMEMSET(&rng, 0, sizeof(rng)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectNotNull(cliCtx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); + ExpectNotNull(servCtx = wc_ecc_ctx_new(REQ_RESP_SERVER, &rng)); /* Test bad args. */ - if (ret == 0) { - cliSalt = wc_ecc_ctx_get_own_salt(NULL); - if (cliSalt != NULL) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectNull(cliSalt = wc_ecc_ctx_get_own_salt(NULL)); - if (ret == 0) { - cliSalt = wc_ecc_ctx_get_own_salt(cliCtx); - servSalt = wc_ecc_ctx_get_own_salt(servCtx); - if (cliSalt == NULL || servSalt == NULL) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectNotNull(cliSalt = wc_ecc_ctx_get_own_salt(cliCtx)); + ExpectNotNull(servSalt = wc_ecc_ctx_get_own_salt(servCtx)); - if (ret == 0) { - ret = wc_ecc_ctx_set_peer_salt(cliCtx, servSalt); - } + ExpectIntEQ(wc_ecc_ctx_set_peer_salt(cliCtx, servSalt), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_ctx_set_peer_salt(NULL, servSalt); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_ctx_set_peer_salt(cliCtx, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_ctx_set_peer_salt(NULL, servSalt), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_ctx_set_peer_salt(cliCtx, NULL), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } wc_ecc_ctx_free(cliCtx); wc_ecc_ctx_free(servCtx); - - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_ctx_set_peer_salt */ @@ -27028,48 +21181,31 @@ static int test_wc_ecc_ctx_set_peer_salt(void) */ static int test_wc_ecc_ctx_set_info(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) ecEncCtx* ctx = NULL; WC_RNG rng; - int ret; const char* optInfo = "Optional Test Info."; int optInfoSz = (int)XSTRLEN(optInfo); const char* badOptInfo = NULL; - ret = wc_InitRng(&rng); - if ( (ctx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)) == NULL || ret != 0 ) { - ret = WOLFSSL_FATAL_ERROR; - } + XMEMSET(&rng, 0, sizeof(rng)); - if (ret == 0) { - ret = wc_ecc_ctx_set_info(ctx, (byte*)optInfo, optInfoSz); - } + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectNotNull(ctx = wc_ecc_ctx_new(REQ_RESP_CLIENT, &rng)); + + ExpectIntEQ(wc_ecc_ctx_set_info(ctx, (byte*)optInfo, optInfoSz), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_ctx_set_info(NULL, (byte*)optInfo, optInfoSz); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_ctx_set_info(ctx, (byte*)badOptInfo, optInfoSz); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_ctx_set_info(ctx, (byte*)optInfo, -1); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_ctx_set_info(NULL, (byte*)optInfo, optInfoSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_ctx_set_info(ctx, (byte*)badOptInfo, optInfoSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_ctx_set_info(ctx, (byte*)optInfo, -1), BAD_FUNC_ARG); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } wc_ecc_ctx_free(ctx); - - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_ctx_set_info */ /* @@ -27077,10 +21213,12 @@ static int test_wc_ecc_ctx_set_info(void) */ static int test_wc_ecc_encryptDecrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_ENCRYPT) && !defined(WC_NO_RNG) && \ defined(HAVE_AES_CBC) && defined(WOLFSSL_AES_128) - ecc_key srvKey, cliKey, tmpKey; + ecc_key srvKey; + ecc_key cliKey; + ecc_key tmpKey; WC_RNG rng; int ret; const char* msg = "EccBlock Size 16"; @@ -27091,7 +21229,8 @@ static int test_wc_ecc_encryptDecrypt(void) byte out[KEY20 * 2 + 1 + AES_BLOCK_SIZE + (sizeof("EccBlock Size 16") - 1) + WC_SHA256_DIGEST_SIZE]; #else - byte out[KEY20 * 2 + 1 + (sizeof("EccBlock Size 16") - 1) + WC_SHA256_DIGEST_SIZE]; + byte out[KEY20 * 2 + 1 + (sizeof("EccBlock Size 16") - 1) + + WC_SHA256_DIGEST_SIZE]; #endif word32 outSz = (word32)sizeof(out); byte plain[sizeof("EccBlock Size 16")]; @@ -27102,130 +21241,78 @@ static int test_wc_ecc_encryptDecrypt(void) XMEMSET(out, 0, outSz); XMEMSET(plain, 0, plainSz); XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&srvKey, 0, sizeof(srvKey)); - XMEMSET(&cliKey, 0, sizeof(cliKey)); + XMEMSET(&srvKey, 0, sizeof(ecc_key)); + XMEMSET(&cliKey, 0, sizeof(ecc_key)); + XMEMSET(&tmpKey, 0, sizeof(ecc_key)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&cliKey); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, keySz, &cliKey); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &cliKey.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - if (ret == 0) { - ret = wc_ecc_init(&srvKey); - } - if (ret == 0) { - ret = wc_ecc_make_key(&rng, keySz, &srvKey); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &srvKey.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - if (ret == 0) { - ret = wc_ecc_init(&tmpKey); - } - } + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ecc_init(&cliKey), 0); + ret = wc_ecc_make_key(&rng, keySz, &cliKey); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &cliKey.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_init(&srvKey), 0); + ret = wc_ecc_make_key(&rng, keySz, &srvKey); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &srvKey.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_init(&tmpKey), 0); #if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \ (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2))) && \ !defined(HAVE_SELFTEST) - if (ret == 0) { - ret = wc_ecc_set_rng(&srvKey, &rng); - } - if (ret == 0) { - ret = wc_ecc_set_rng(&cliKey, &rng); - } + ExpectIntEQ(wc_ecc_set_rng(&srvKey, &rng), 0); + ExpectIntEQ(wc_ecc_set_rng(&cliKey, &rng), 0); #endif - if (ret == 0) { - ret = wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, out, - &outSz, NULL); - } - if (ret == 0) { - ret = wc_ecc_encrypt(NULL, &srvKey, (byte*)msg, msgSz, out, - &outSz, NULL); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_encrypt(&cliKey, NULL, (byte*)msg, msgSz, out, - &outSz, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_encrypt(&cliKey, &srvKey, NULL, msgSz, out, - &outSz, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, NULL, - &outSz, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, out, - NULL, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, out, + &outSz, NULL), 0); + /* Test bad args. */ + ExpectIntEQ(wc_ecc_encrypt(NULL, &srvKey, (byte*)msg, msgSz, out, &outSz, + NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_encrypt(&cliKey, NULL, (byte*)msg, msgSz, out, &outSz, + NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, NULL, msgSz, out, &outSz, + NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, NULL, + &outSz, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_encrypt(&cliKey, &srvKey, (byte*)msg, msgSz, out, NULL, + NULL), BAD_FUNC_ARG); #ifdef WOLFSSL_ECIES_OLD - if (ret == 0) { - tmpKey.dp = cliKey.dp; - ret = wc_ecc_copy_point(&cliKey.pubkey, &tmpKey.pubkey); - } + tmpKey.dp = cliKey.dp; + ExpectIntEQ(wc_ecc_copy_point(&cliKey.pubkey, &tmpKey.pubkey), 0); #endif - if (ret == 0) { - ret = wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, plain, - &plainSz, NULL); - } - if (ret == 0) { - ret = wc_ecc_decrypt(NULL, &tmpKey, out, outSz, plain, - &plainSz, NULL); - #ifdef WOLFSSL_ECIES_OLD - /* NULL parameter allowed in new implementations - public key comes from - * the message. */ - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_decrypt(&srvKey, NULL, out, outSz, plain, - &plainSz, NULL); - } - #endif - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_decrypt(&srvKey, &tmpKey, NULL, outSz, plain, - &plainSz, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, NULL, - &plainSz, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, - plain, NULL, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, plain, &plainSz, + NULL), 0); + ExpectIntEQ(wc_ecc_decrypt(NULL, &tmpKey, out, outSz, plain, &plainSz, + NULL), BAD_FUNC_ARG); +#ifdef WOLFSSL_ECIES_OLD + /* NULL parameter allowed in new implementations - public key comes from + * the message. */ + ExpectIntEQ(wc_ecc_decrypt(&srvKey, NULL, out, outSz, plain, &plainSz, + NULL), BAD_FUNC_ARG); +#endif + ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, NULL, outSz, plain, &plainSz, + NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, NULL, &plainSz, + NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_decrypt(&srvKey, &tmpKey, out, outSz, plain, NULL, NULL), + BAD_FUNC_ARG); - if (XMEMCMP(msg, plain, msgSz) != 0) { - ret = WOLFSSL_FATAL_ERROR; - } + ExpectIntEQ(XMEMCMP(msg, plain, msgSz), 0); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } wc_ecc_free(&tmpKey); - wc_ecc_free(&cliKey); wc_ecc_free(&srvKey); - - res = TEST_RES_CHECK(ret == 0); + wc_ecc_free(&cliKey); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_encryptDecrypt */ /* @@ -27233,17 +21320,14 @@ static int test_wc_ecc_encryptDecrypt(void) */ static int test_wc_ecc_del_point(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) - ecc_point* pt; + ecc_point* pt = NULL; - pt = wc_ecc_new_point(); + ExpectNotNull(pt = wc_ecc_new_point()); wc_ecc_del_point(pt); - - res = TEST_RES_CHECK(pt != NULL); #endif - return res; - + return EXPECT_RESULT(); } /* END test_wc_ecc_del_point */ /* @@ -27253,179 +21337,88 @@ static int test_wc_ecc_del_point(void) */ static int test_wc_ecc_pointFns(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && \ !defined(WC_NO_RNG) && !defined(WOLFSSL_ATECC508A) && \ !defined(WOLFSSL_ATECC608A) - ecc_key key; - WC_RNG rng; - int ret; - ecc_point* point = NULL; - ecc_point* cpypt = NULL; - int idx = 0; - int keySz = KEY32; - byte der[DER_SZ(KEY32)]; - word32 derlenChk = 0; - word32 derSz = DER_SZ(KEY32); + ecc_key key; + WC_RNG rng; + int ret; + ecc_point* point = NULL; + ecc_point* cpypt = NULL; + int idx = 0; + int keySz = KEY32; + byte der[DER_SZ(KEY32)]; + word32 derlenChk = 0; + word32 derSz = DER_SZ(KEY32); /* Init stack variables. */ XMEMSET(der, 0, derSz); - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, keySz, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ecc_init(&key), 0); + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); - if (ret == 0) { - point = wc_ecc_new_point(); - if (!point) { - ret = WOLFSSL_FATAL_ERROR; - } - } - - if (ret == 0) { - cpypt = wc_ecc_new_point(); - if (!cpypt) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectNotNull(point = wc_ecc_new_point()); + ExpectNotNull(cpypt = wc_ecc_new_point()); /* Export */ - if (ret == 0) { - ret = wc_ecc_export_point_der((idx = key.idx), &key.pubkey, - NULL, &derlenChk); - /* Check length value. */ - if (derSz == derlenChk && ret == LENGTH_ONLY_E) { - ret = wc_ecc_export_point_der((idx = key.idx), &key.pubkey, - der, &derSz); - } - } + ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), &key.pubkey, NULL, + &derlenChk), LENGTH_ONLY_E); + /* Check length value. */ + ExpectIntEQ(derSz, derlenChk); + ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), &key.pubkey, der, + &derSz), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_export_point_der(-2, &key.pubkey, der, &derSz); - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_export_point_der((idx = key.idx), NULL, der, &derSz); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_export_point_der((idx = key.idx), &key.pubkey, - der, NULL); - } - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_export_point_der(-2, &key.pubkey, der, &derSz), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), NULL, der, &derSz), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_export_point_der((idx = key.idx), &key.pubkey, der, + NULL), ECC_BAD_ARG_E); /* Import */ - if (ret == 0) { - ret = wc_ecc_import_point_der(der, derSz, idx, point); - /* Condition double checks wc_ecc_cmp_point(). */ - if (ret == 0 && - XMEMCMP((void *)&key.pubkey, (void *)point, sizeof(key.pubkey))) { - ret = wc_ecc_cmp_point(&key.pubkey, point); - } - } + ExpectIntEQ(wc_ecc_import_point_der(der, derSz, idx, point), 0); + ExpectIntEQ(wc_ecc_cmp_point(&key.pubkey, point), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_import_point_der(NULL, derSz, idx, point); - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_import_point_der(der, derSz, idx, NULL); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_import_point_der(der, derSz, -1, point); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_import_point_der(der, derSz + 1, idx, point); - } - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ( wc_ecc_import_point_der(NULL, derSz, idx, point), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_import_point_der(der, derSz, idx, NULL), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_import_point_der(der, derSz, -1, point), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_import_point_der(der, derSz + 1, idx, point), + ECC_BAD_ARG_E); /* Copy */ - if (ret == 0) { - ret = wc_ecc_copy_point(point, cpypt); - } + ExpectIntEQ(wc_ecc_copy_point(point, cpypt), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_copy_point(NULL, cpypt); - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_copy_point(point, NULL); - } - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_copy_point(NULL, cpypt), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_copy_point(point, NULL), ECC_BAD_ARG_E); /* Compare point */ - if (ret == 0) { - ret = wc_ecc_cmp_point(point, cpypt); - } + ExpectIntEQ(wc_ecc_cmp_point(point, cpypt), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_cmp_point(NULL, cpypt); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_cmp_point(point, NULL); - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_cmp_point(NULL, cpypt), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_cmp_point(point, NULL), BAD_FUNC_ARG); /* At infinity if return == 1, otherwise return == 0. */ - if (ret == 0) { - ret = wc_ecc_point_is_at_infinity(point); - } + ExpectIntEQ(wc_ecc_point_is_at_infinity(point), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_point_is_at_infinity(NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_point_is_at_infinity(NULL), BAD_FUNC_ARG); #if !defined(HAVE_SELFTEST) && (!defined(HAVE_FIPS) || \ (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2))) #ifdef USE_ECC_B_PARAM /* On curve if ret == 0 */ - if (ret == 0) { - ret = wc_ecc_point_is_on_curve(point, idx); - } + ExpectIntEQ(wc_ecc_point_is_on_curve(point, idx), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_point_is_on_curve(NULL, idx); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_point_is_on_curve(point, 1000); - } - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_point_is_on_curve(NULL, idx), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_point_is_on_curve(point, 1000), ECC_BAD_ARG_E); #endif /* USE_ECC_B_PARAM */ #endif /* !HAVE_SELFTEST && (!HAVE_FIPS || HAVE_FIPS_VERSION > 2) */ @@ -27433,13 +21426,9 @@ static int test_wc_ecc_pointFns(void) wc_ecc_del_point(point); wc_ecc_del_point(cpypt); wc_ecc_free(&key); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_pointFns */ @@ -27448,101 +21437,73 @@ static int test_wc_ecc_pointFns(void) */ static int test_wc_ecc_shared_secret_ssh(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_DHE) && \ !defined(WC_NO_RNG) && !defined(WOLFSSL_ATECC508A) && \ !defined(WOLFSSL_ATECC608A) - ecc_key key, key2; - WC_RNG rng; - int ret; - int keySz = KEY32; - int key2Sz = KEY24; - byte secret[KEY32]; - word32 secretLen = keySz; + ecc_key key; + ecc_key key2; + WC_RNG rng; + int ret; + int keySz = KEY32; + int key2Sz = KEY24; + byte secret[KEY32]; + word32 secretLen = keySz; /* Init stack variables. */ + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&key2, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); XMEMSET(secret, 0, secretLen); - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); - XMEMSET(&key2, 0, sizeof(key2)); + /* Make keys */ - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, keySz, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key2); - } - if (ret == 0) { - ret = wc_ecc_make_key(&rng, key2Sz, &key2); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key2.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + + ExpectIntEQ(wc_ecc_init(&key2), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, key2Sz, &key2); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key2.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); #if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \ (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2))) && \ !defined(HAVE_SELFTEST) - if (ret == 0) { - ret = wc_ecc_set_rng(&key, &rng); - } + ExpectIntEQ(wc_ecc_set_rng(&key, &rng), 0); #endif - if (ret == 0) { - ret = wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, &secretLen); - } + ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, + &secretLen), 0); /* Pass in bad args. */ - if (ret == 0) { - ret = wc_ecc_shared_secret_ssh(NULL, &key2.pubkey, secret, &secretLen); - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_shared_secret_ssh(&key, NULL, secret, &secretLen); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_shared_secret_ssh(&key, &key2.pubkey, NULL, &secretLen); - } - if (ret == BAD_FUNC_ARG) { - ret = wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, NULL); - } - if (ret == BAD_FUNC_ARG) { - key.type = ECC_PUBLICKEY; - ret = wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, &secretLen); - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_shared_secret_ssh(NULL, &key2.pubkey, secret, + &secretLen), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, NULL, secret, &secretLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, NULL, &secretLen), + BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, NULL), + BAD_FUNC_ARG); + key.type = ECC_PUBLICKEY; + ExpectIntEQ(wc_ecc_shared_secret_ssh(&key, &key2.pubkey, secret, + &secretLen), ECC_BAD_ARG_E); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_free(&key); wc_ecc_free(&key2); #ifdef FP_ECC wc_ecc_fp_free(); #endif - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_shared_secret_ssh */ /* @@ -27550,142 +21511,93 @@ static int test_wc_ecc_shared_secret_ssh(void) */ static int test_wc_ecc_verify_hash_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_SIGN) && defined(WOLFSSL_PUBLIC_MP) \ && !defined(WC_NO_RNG) && !defined(WOLFSSL_ATECC508A) && \ !defined(WOLFSSL_ATECC608A) && !defined(WOLFSSL_KCAPI_ECC) - ecc_key key; - WC_RNG rng; - int ret; - mp_int r; - mp_int s; - mp_int z; - unsigned char hash[] = "Everyone gets Friday off.EccSig"; - unsigned char iHash[] = "Everyone gets Friday off......."; - unsigned char shortHash[] = TEST_STRING; - word32 hashlen = sizeof(hash); - word32 iHashLen = sizeof(iHash); - word32 shortHashLen = sizeof(shortHash); - int keySz = KEY32; - int sig = WOLFSSL_FATAL_ERROR; - int ver = WOLFSSL_FATAL_ERROR; - int verify_ok = 0; + ecc_key key; + WC_RNG rng; + int ret; + mp_int r; + mp_int s; + mp_int z; + unsigned char hash[] = "Everyone gets Friday off.EccSig"; + unsigned char iHash[] = "Everyone gets Friday off......."; + unsigned char shortHash[] = TEST_STRING; + word32 hashlen = sizeof(hash); + word32 iHashLen = sizeof(iHash); + word32 shortHashLen = sizeof(shortHash); + int keySz = KEY32; + int verify_ok = 0; - /* Initialize r and s. */ - ret = mp_init_multi(&r, &s, &z, NULL, NULL, NULL); - if (ret != MP_OKAY) { - return MP_INIT_E; - } + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(&r, 0, sizeof(mp_int)); + XMEMSET(&s, 0, sizeof(mp_int)); + XMEMSET(&z, 0, sizeof(mp_int)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, keySz, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } - if (ret == 0) { - ret = wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, &r, &s); - if (ret == 0) { - /* verify_ok should be 1. */ - ret = wc_ecc_verify_hash_ex(&r, &s, hash, hashlen, &verify_ok, &key); - if (verify_ok != 1 && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - /* verify_ok should be 0 */ - ret = wc_ecc_verify_hash_ex(&r, &s, iHash, iHashLen, - &verify_ok, &key); - if (verify_ok != 0 && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - if (ret == 0) { - /* verify_ok should be 0. */ - ret = wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, - &verify_ok, &key); - if (verify_ok != 0 && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } - } + /* Initialize r, s and z. */ + ExpectIntEQ(mp_init_multi(&r, &s, &z, NULL, NULL, NULL), MP_OKAY); + + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, keySz, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + + ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, &r, &s), 0); + /* verify_ok should be 1. */ + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, hash, hashlen, &verify_ok, &key), + 0); + ExpectIntEQ(verify_ok, 1); + + /* verify_ok should be 0 */ + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, iHash, iHashLen, &verify_ok, + &key), 0); + ExpectIntEQ(verify_ok, 0); + + /* verify_ok should be 0. */ + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, + &verify_ok, &key), 0); + ExpectIntEQ(verify_ok, 0); /* Test bad args. */ - if (ret == 0) { - if (wc_ecc_sign_hash_ex(NULL, hashlen, &rng, &key, &r, &s) - == ECC_BAD_ARG_E) { - sig = 0; - } - if (sig == 0 && wc_ecc_sign_hash_ex(hash, hashlen, NULL, &key, &r, &s) - != ECC_BAD_ARG_E) { - sig = WOLFSSL_FATAL_ERROR; - } - if (sig == 0 && wc_ecc_sign_hash_ex(hash, hashlen, &rng, NULL, &r, &s) - != ECC_BAD_ARG_E) { - sig = WOLFSSL_FATAL_ERROR; - } - if (sig == 0 && wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, NULL, &s) - != ECC_BAD_ARG_E) { - sig = WOLFSSL_FATAL_ERROR; - } - if (sig == 0 && wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, &r, NULL) - != ECC_BAD_ARG_E) { - sig = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_sign_hash_ex(NULL, hashlen, &rng, &key, &r, &s), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, NULL, &key, &r, &s), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, NULL, &r, &s), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, NULL, &s), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_sign_hash_ex(hash, hashlen, &rng, &key, &r, NULL), + ECC_BAD_ARG_E); /* Test bad args. */ - if (ret == 0) { - if (wc_ecc_verify_hash_ex(NULL, &s, shortHash, shortHashLen, &verify_ok, &key) - == ECC_BAD_ARG_E) { - ver = 0; - } - if (ver == 0 && wc_ecc_verify_hash_ex(&r, NULL, shortHash, shortHashLen, - &verify_ok, &key) != ECC_BAD_ARG_E) { - ver = WOLFSSL_FATAL_ERROR; - } - if (wc_ecc_verify_hash_ex(&z, &s, shortHash, shortHashLen, &verify_ok, &key) - != MP_ZERO_E) { - ver = WOLFSSL_FATAL_ERROR; - } - if (wc_ecc_verify_hash_ex(&r, &z, shortHash, shortHashLen, &verify_ok, &key) - != MP_ZERO_E) { - ver = WOLFSSL_FATAL_ERROR; - } - if (wc_ecc_verify_hash_ex(&z, &z, shortHash, shortHashLen, &verify_ok, &key) - != MP_ZERO_E) { - ver = WOLFSSL_FATAL_ERROR; - } - if (ver == 0 && wc_ecc_verify_hash_ex(&r, &s, NULL, shortHashLen, &verify_ok, - &key) != ECC_BAD_ARG_E) { - ver = WOLFSSL_FATAL_ERROR; - } - if (ver == 0 && wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, - NULL, &key) != ECC_BAD_ARG_E) { - ver = WOLFSSL_FATAL_ERROR; - } - if (ver == 0 && wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, - &verify_ok, NULL) != ECC_BAD_ARG_E) { - ver = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_verify_hash_ex(NULL, &s, shortHash, shortHashLen, + &verify_ok, &key), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, NULL, shortHash, shortHashLen, + &verify_ok, &key), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_verify_hash_ex(&z, &s, shortHash, shortHashLen, + &verify_ok, &key), MP_ZERO_E); + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &z, shortHash, shortHashLen, + &verify_ok, &key), MP_ZERO_E); + ExpectIntEQ(wc_ecc_verify_hash_ex(&z, &z, shortHash, shortHashLen, + &verify_ok, &key), MP_ZERO_E); + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, NULL, shortHashLen, &verify_ok, + &key), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, NULL, + &key), ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_verify_hash_ex(&r, &s, shortHash, shortHashLen, + &verify_ok, NULL), ECC_BAD_ARG_E); wc_ecc_free(&key); mp_free(&r); mp_free(&s); - if (wc_FreeRng(&rng)) { - return WOLFSSL_FATAL_ERROR; - } - if (ret == 0 && (sig != 0 || ver != 0)) { - ret = WOLFSSL_FATAL_ERROR; - } - - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_verify_hash_ex */ /* @@ -27694,73 +21606,53 @@ static int test_wc_ecc_verify_hash_ex(void) static int test_wc_ecc_mulmod(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(WC_NO_RNG) && \ !(defined(WOLFSSL_ATECC508A) || defined(WOLFSSL_ATECC608A) || \ defined(WOLFSSL_VALIDATE_ECC_IMPORT)) - ecc_key key1, key2, key3; + ecc_key key1; + ecc_key key2; + ecc_key key3; WC_RNG rng; - int ret = 0; + int ret; - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key1); - if (ret == 0) { - ret = wc_ecc_init(&key2); - } - if (ret == 0) { - ret = wc_ecc_init(&key3); - } - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY32, &key1); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key1.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - wc_FreeRng(&rng); - } - if (ret == 0) { - ret = wc_ecc_import_raw_ex(&key2, key1.dp->Gx, key1.dp->Gy, key1.dp->Af, - ECC_SECP256R1); - if (ret == 0) { - ret = wc_ecc_import_raw_ex(&key3, key1.dp->Gx, key1.dp->Gy, - key1.dp->prime, ECC_SECP256R1); - } - } + XMEMSET(&key1, 0, sizeof(ecc_key)); + XMEMSET(&key2, 0, sizeof(ecc_key)); + XMEMSET(&key3, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, - &key3.pubkey, wc_ecc_key_get_priv(&key2), - wc_ecc_key_get_priv(&key3), 1); - } + ExpectIntEQ(wc_ecc_init(&key1), 0); + ExpectIntEQ(wc_ecc_init(&key2), 0); + ExpectIntEQ(wc_ecc_init(&key3), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, KEY32, &key1); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key1.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + + ExpectIntEQ(wc_ecc_import_raw_ex(&key2, key1.dp->Gx, key1.dp->Gy, + key1.dp->Af, ECC_SECP256R1), 0); + ExpectIntEQ(wc_ecc_import_raw_ex(&key3, key1.dp->Gx, key1.dp->Gy, + key1.dp->prime, ECC_SECP256R1), 0); + + ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, + &key3.pubkey, wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), + 1), 0); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_mulmod(NULL, &key2.pubkey, &key3.pubkey, - wc_ecc_key_get_priv(&key2), - wc_ecc_key_get_priv(&key3), 1); - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), NULL, &key3.pubkey, - wc_ecc_key_get_priv(&key2), - wc_ecc_key_get_priv(&key3), 1); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, NULL, - wc_ecc_key_get_priv(&key2), - wc_ecc_key_get_priv(&key3), 1); - } - if (ret == ECC_BAD_ARG_E) { - ret = wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, - &key3.pubkey, wc_ecc_key_get_priv(&key2), NULL, - 1); - } - if (ret == ECC_BAD_ARG_E) { - ret = 0; - } - else if (ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(ret = wc_ecc_mulmod(NULL, &key2.pubkey, &key3.pubkey, + wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), 1), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), NULL, &key3.pubkey, + wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), 1), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, NULL, + wc_ecc_key_get_priv(&key2), wc_ecc_key_get_priv(&key3), 1), + ECC_BAD_ARG_E); + ExpectIntEQ(wc_ecc_mulmod(wc_ecc_key_get_priv(&key1), &key2.pubkey, + &key3.pubkey, wc_ecc_key_get_priv(&key2), NULL, 1), ECC_BAD_ARG_E); wc_ecc_free(&key1); wc_ecc_free(&key2); @@ -27769,10 +21661,8 @@ static int test_wc_ecc_mulmod(void) #ifdef FP_ECC wc_ecc_fp_free(); #endif - - res = TEST_RES_CHECK(ret == 0); #endif /* HAVE_ECC && !WOLFSSL_ATECC508A */ - return res; + return EXPECT_RESULT(); } /* END test_wc_ecc_mulmod */ /* @@ -27780,300 +21670,221 @@ static int test_wc_ecc_mulmod(void) */ static int test_wc_ecc_is_valid_idx(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(WC_NO_RNG) - ecc_key key; - WC_RNG rng; - int ret; - int iVal = -2; - int iVal2 = 3000; + ecc_key key; + WC_RNG rng; + int ret; + int iVal = -2; + int iVal2 = 3000; - XMEMSET(&rng, 0, sizeof(rng)); - XMEMSET(&key, 0, sizeof(key)); + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, 32, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - } + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, 32, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); +#endif + ExpectIntEQ(ret, 0); - if (ret == 0) { - ret = wc_ecc_is_valid_idx(key.idx); - if (ret == 1) { - ret = 0; - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_is_valid_idx(key.idx), 1); /* Test bad args. */ - if (ret == 0) { - ret = wc_ecc_is_valid_idx(iVal); /* should return 0 */ - if (ret == 0) { - ret = wc_ecc_is_valid_idx(iVal2); - } - if (ret != 0) { - ret = WOLFSSL_FATAL_ERROR; - } - } + ExpectIntEQ(wc_ecc_is_valid_idx(iVal), 0); + ExpectIntEQ(wc_ecc_is_valid_idx(iVal2), 0); - if (wc_FreeRng(&rng) && ret == 0) { - ret = WOLFSSL_FATAL_ERROR; - } + DoExpectIntEQ(wc_FreeRng(&rng), 0); wc_ecc_free(&key); + #ifdef FP_ECC wc_ecc_fp_free(); #endif - - res = TEST_RES_CHECK(ret == 0); #endif - return res; - - + return EXPECT_RESULT(); } /* END test_wc_ecc_is_valid_idx */ + /* * Testing wc_ecc_get_curve_id_from_oid() */ static int test_wc_ecc_get_curve_id_from_oid(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(NO_ECC256) && !defined(HAVE_SELFTEST) && \ !defined(HAVE_FIPS) const byte oid[] = {0x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x07}; word32 len = sizeof(oid); - int ret; /* Bad Cases */ - ret = wc_ecc_get_curve_id_from_oid(NULL, len); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - if (ret == 0) { - ret = wc_ecc_get_curve_id_from_oid(oid, 0); - if (ret == ECC_CURVE_INVALID) { - ret = 0; - } - } + ExpectIntEQ(wc_ecc_get_curve_id_from_oid(NULL, len), BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_get_curve_id_from_oid(oid, 0), ECC_CURVE_INVALID); /* Good Case */ - if (ret == 0) { - ret = wc_ecc_get_curve_id_from_oid(oid, len); - if (ret == ECC_SECP256R1) { - ret = 0; - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_ecc_get_curve_id_from_oid(oid, len), ECC_SECP256R1); #endif - return res; -}/* END test_wc_ecc_get_curve_id_from_oid */ + return EXPECT_RESULT(); +} /* END test_wc_ecc_get_curve_id_from_oid */ + /* * Testing wc_ecc_sig_size_calc() */ static int test_wc_ecc_sig_size_calc(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) - ecc_key key; - WC_RNG rng; - int sz = 0; - int ret = 0; + ecc_key key; + WC_RNG rng; + int sz = 0; + int ret; - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_init(&key); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, 16, &key); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - sz = key.dp->size; - } - if (ret == 0) { - ret = wc_ecc_sig_size_calc(sz); - if (ret > 0) { - ret = 0; - } - } - wc_ecc_free(&key); - wc_FreeRng(&rng); + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ret = wc_ecc_make_key(&rng, 16, &key); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_NONE); #endif - return res; + ExpectIntEQ(ret, 0); + sz = key.dp->size; + ExpectIntGT(wc_ecc_sig_size_calc(sz), 0); + + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ecc_free(&key); +#endif + return EXPECT_RESULT(); } /* END test_wc_ecc_sig_size_calc */ /* * Testing ToTraditional */ static int test_ToTraditional(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_ASN) && (defined(HAVE_PKCS8) || defined(HAVE_PKCS12)) && \ (defined(WOLFSSL_TEST_CERT) || defined(OPENSSL_EXTRA) || \ defined(OPENSSL_EXTRA_X509_SMALL)) + XFILE f = XBADFILE; + byte input[TWOK_BUF]; + word32 sz; - XFILE f; - byte input[TWOK_BUF]; - word32 sz; - int ret; - - f = XFOPEN("./certs/server-keyPkcs8.der", "rb"); - AssertTrue((f != XBADFILE)); - sz = (word32)XFREAD(input, 1, sizeof(input), f); - XFCLOSE(f); + ExpectTrue((f = XFOPEN("./certs/server-keyPkcs8.der", "rb")) != XBADFILE); + ExpectTrue((sz = (word32)XFREAD(input, 1, sizeof(input), f)) > 0); + if (f != XBADFILE) + XFCLOSE(f); /* Good case */ - ret = ToTraditional(input, sz); - if (ret > 0) { - ret = 0; - } + ExpectIntGT(ToTraditional(input, sz), 0); /* Bad cases */ - if (ret == 0) { - ret = ToTraditional(NULL, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = ToTraditional(NULL, sz); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = ToTraditional(input, 0); - if (ret == ASN_PARSE_E || ret == BUFFER_E) { - ret = 0; - } - } - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(ToTraditional(NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(ToTraditional(NULL, sz), BAD_FUNC_ARG); +#ifdef WOLFSSL_ASN_TEMPLATE + ExpectIntEQ(ToTraditional(input, 0), BUFFER_E); +#else + ExpectIntEQ(ToTraditional(input, 0), ASN_PARSE_E); #endif - return res; -}/* End test_ToTraditional*/ +#endif + return EXPECT_RESULT(); +} /* End test_ToTraditional*/ /* * Testing wc_EccPrivateKeyToDer */ static int test_wc_EccPrivateKeyToDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT) && !defined(WC_NO_RNG) - byte output[ONEK_BUF]; - ecc_key eccKey; - WC_RNG rng; - word32 inLen; - int ret; + byte output[ONEK_BUF]; + ecc_key eccKey; + WC_RNG rng; + word32 inLen; + word32 outLen = 0; + int ret; - ret = wc_InitRng(&rng); + XMEMSET(&eccKey, 0, sizeof(ecc_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_ecc_init(&eccKey); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY14, &eccKey); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &eccKey.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - inLen = (word32)sizeof(output); - /* Bad Cases */ - if (ret == 0) { - ret = wc_EccPrivateKeyToDer(NULL, NULL, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_EccPrivateKeyToDer(NULL, output, inLen); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_EccPrivateKeyToDer(&eccKey, NULL, inLen); - if (ret == LENGTH_ONLY_E) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_EccPrivateKeyToDer(&eccKey, output, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - /*Good Case */ - if (ret == 0) { - ret = wc_EccPrivateKeyToDer(&eccKey, output, inLen); - if (ret > 0) { - #if defined(OPENSSL_EXTRA) && defined(HAVE_ALL_CURVES) - /* test importing private only into a PKEY struct */ - EC_KEY* ec; - EVP_PKEY* pkey; - const unsigned char* der = output; - - pkey = d2i_PrivateKey(EVP_PKEY_EC, NULL, &der, ret); - AssertNotNull(pkey); - - der = output; - ec = d2i_ECPrivateKey(NULL, &der, ret); - AssertNotNull(ec); - AssertIntEQ(EVP_PKEY_assign_EC_KEY(pkey, ec), SSL_SUCCESS); - EVP_PKEY_free(pkey); /* EC_KEY should be free'd by free'ing pkey */ - #endif - ret = 0; - } - } - wc_ecc_free(&eccKey); - } - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ecc_init(&eccKey), 0); + ret = wc_ecc_make_key(&rng, KEY14, &eccKey); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &eccKey.asyncDev, WC_ASYNC_FLAG_NONE); #endif - return res; -}/* End test_wc_EccPrivateKeyToDer*/ + ExpectIntEQ(ret, 0); + + inLen = (word32)sizeof(output); + /* Bad Cases */ + ExpectIntEQ(wc_EccPrivateKeyToDer(NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_EccPrivateKeyToDer(NULL, output, inLen), BAD_FUNC_ARG); + ExpectIntEQ(wc_EccPrivateKeyToDer(&eccKey, NULL, inLen), LENGTH_ONLY_E); + ExpectIntEQ(wc_EccPrivateKeyToDer(&eccKey, output, 0), BAD_FUNC_ARG); + /* Good Case */ + ExpectIntGT(outLen = wc_EccPrivateKeyToDer(&eccKey, output, inLen), 0); + + wc_ecc_free(&eccKey); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + +#if defined(OPENSSL_EXTRA) && defined(HAVE_ALL_CURVES) + { + /* test importing private only into a PKEY struct */ + EC_KEY* ec = NULL; + EVP_PKEY* pkey = NULL; + const unsigned char* der; + + der = output; + ExpectNotNull(pkey = d2i_PrivateKey(EVP_PKEY_EC, NULL, &der, outLen)); + + der = output; + ExpectNotNull(ec = d2i_ECPrivateKey(NULL, &der, outLen)); + ExpectIntEQ(EVP_PKEY_assign_EC_KEY(pkey, ec), SSL_SUCCESS); + if (EXPECT_FAIL()) { + EC_KEY_free(ec); + } + EVP_PKEY_free(pkey); /* EC_KEY should be free'd by free'ing pkey */ + } +#endif +#endif + return EXPECT_RESULT(); +} /* End test_wc_EccPrivateKeyToDer*/ /* * Testing wc_DhPublicKeyDecode */ static int test_wc_DhPublicKeyDecode(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifndef NO_DH #if defined(WOLFSSL_DH_EXTRA) && defined(USE_CERT_BUFFERS_2048) DhKey key; word32 inOutIdx; - AssertIntEQ(wc_InitDhKey(&key), 0); + XMEMSET(&key, 0, sizeof(DhKey)); - AssertIntEQ(wc_DhPublicKeyDecode(NULL,NULL,NULL,0), - BAD_FUNC_ARG); - AssertIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,NULL,NULL,0), - BAD_FUNC_ARG); - AssertIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,NULL,NULL,0), - BAD_FUNC_ARG); - inOutIdx = 0; - AssertIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,NULL, 0), - BAD_FUNC_ARG); - inOutIdx = 0; - AssertIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,&key, 0), - BAD_FUNC_ARG); - inOutIdx = 0; - AssertIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,&key, - sizeof_dh_pub_key_der_2048), 0); - AssertTrue(key.p.used != 0 && key.g.used != 0 && key.q.used == 0 && - key.pub.used != 0 && key.priv.used == 0); + ExpectIntEQ(wc_InitDhKey(&key), 0); - wc_FreeDhKey(&key); + ExpectIntEQ(wc_DhPublicKeyDecode(NULL,NULL,NULL,0), BAD_FUNC_ARG); + ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,NULL,NULL,0), + BAD_FUNC_ARG); + ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,NULL,NULL,0), + BAD_FUNC_ARG); + inOutIdx = 0; + ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,NULL, 0), + BAD_FUNC_ARG); + inOutIdx = 0; + ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,&key, 0), + BAD_FUNC_ARG); + inOutIdx = 0; + ExpectIntEQ(wc_DhPublicKeyDecode(dh_pub_key_der_2048,&inOutIdx,&key, + sizeof_dh_pub_key_der_2048), 0); + ExpectIntNE(key.p.used, 0); + ExpectIntNE(key.g.used, 0); + ExpectIntEQ(key.q.used, 0); + ExpectIntNE(key.pub.used, 0); + ExpectIntEQ(key.priv.used, 0); - res = TEST_RES_CHECK(1); + DoExpectIntEQ(wc_FreeDhKey(&key), 0); #endif #endif /* !NO_DH */ - return res; + return EXPECT_RESULT(); } /* @@ -28081,505 +21892,352 @@ static int test_wc_DhPublicKeyDecode(void) */ static int test_wc_Ed25519KeyToDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) && \ (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - byte output[ONEK_BUF]; - ed25519_key ed25519Key; - WC_RNG rng; - word32 inLen; - int ret; + byte output[ONEK_BUF]; + ed25519_key ed25519Key; + WC_RNG rng; + word32 inLen; - ret = wc_InitRng(&rng); + XMEMSET(&ed25519Key, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_ed25519_init(&ed25519Key); - if (ret == 0) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519Key); - } - inLen = (word32)sizeof(output); + ExpectIntEQ(wc_ed25519_init(&ed25519Key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519Key), 0); + inLen = (word32)sizeof(output); - /* Bad Cases */ - if (ret == 0) { - ret = wc_Ed25519KeyToDer(NULL, NULL, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed25519KeyToDer(NULL, output, inLen); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed25519KeyToDer(&ed25519Key, output, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - /* Good Cases */ - if (ret == 0) { - /* length only */ - ret = wc_Ed25519KeyToDer(&ed25519Key, NULL, inLen); - if (ret > 0) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed25519KeyToDer(&ed25519Key, output, inLen); - if (ret > 0) { - ret = 0; - } - } - wc_ed25519_free(&ed25519Key); - } - wc_FreeRng(&rng); + /* Bad Cases */ + ExpectIntEQ(wc_Ed25519KeyToDer(NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_Ed25519KeyToDer(NULL, output, inLen), BAD_FUNC_ARG); + ExpectIntEQ(wc_Ed25519KeyToDer(&ed25519Key, output, 0), BAD_FUNC_ARG); + /* Good Cases */ + /* length only */ + ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, NULL, inLen), 0); + ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, output, inLen), 0); - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&ed25519Key); #endif - return res; -}/* End test_wc_Ed25519KeyToDer*/ + return EXPECT_RESULT(); +} /* End test_wc_Ed25519KeyToDer*/ + /* * Testing wc_Ed25519PrivateKeyToDer */ static int test_wc_Ed25519PrivateKeyToDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) && \ (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - byte output[ONEK_BUF]; - ed25519_key ed25519PrivKey; - WC_RNG rng; - word32 inLen; - int ret; + byte output[ONEK_BUF]; + ed25519_key ed25519PrivKey; + WC_RNG rng; + word32 inLen; - ret = wc_InitRng(&rng); + XMEMSET(&ed25519PrivKey, 0, sizeof(ed25519_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_ed25519_init(&ed25519PrivKey); - if (ret == 0) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519PrivKey); - } - inLen = (word32)sizeof(output); + ExpectIntEQ(wc_ed25519_init(&ed25519PrivKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519PrivKey), + 0); + inLen = (word32)sizeof(output); - /* Bad Cases */ - if (ret == 0) { - ret = wc_Ed25519PrivateKeyToDer(NULL, NULL, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed25519PrivateKeyToDer(NULL, output, inLen); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, output, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - /* Good Cases */ - if (ret == 0) { - /* length only */ - ret = wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, NULL, inLen); - if (ret > 0) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, output, inLen); - if (ret > 0) { - ret = 0; - } - } - wc_ed25519_free(&ed25519PrivKey); - } - wc_FreeRng(&rng); + /* Bad Cases */ + ExpectIntEQ(wc_Ed25519PrivateKeyToDer(NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_Ed25519PrivateKeyToDer(NULL, output, inLen), BAD_FUNC_ARG); + ExpectIntEQ(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, output, 0), + BAD_FUNC_ARG); + /* Good Cases */ + /* length only */ + ExpectIntGT(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, NULL, inLen), 0); + ExpectIntGT(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, output, inLen), 0); - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed25519_free(&ed25519PrivKey); #endif - return res; -}/* End test_wc_Ed25519PrivateKeyToDer*/ + return EXPECT_RESULT(); +} /* End test_wc_Ed25519PrivateKeyToDer*/ + /* * Testing wc_Ed448KeyToDer */ static int test_wc_Ed448KeyToDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) && \ (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - byte output[ONEK_BUF]; - ed448_key ed448Key; - WC_RNG rng; - word32 inLen; - int ret; + byte output[ONEK_BUF]; + ed448_key ed448Key; + WC_RNG rng; + word32 inLen; - ret = wc_InitRng(&rng); + XMEMSET(&ed448Key, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_ed448_init(&ed448Key); - if (ret == 0) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448Key); - } - inLen = sizeof(output); + ExpectIntEQ(wc_ed448_init(&ed448Key), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448Key), 0); + inLen = (word32)sizeof(output); - /* Bad Cases */ - if (ret == 0) { - ret = wc_Ed448KeyToDer(NULL, NULL, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed448KeyToDer(NULL, output, inLen); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed448KeyToDer(&ed448Key, output, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - /* Good Cases */ - if (ret == 0) { - /* length only */ - ret = wc_Ed448KeyToDer(&ed448Key, NULL, inLen); - if (ret > 0) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed448KeyToDer(&ed448Key, output, inLen); - if (ret > 0) { - ret = 0; - } - } - wc_ed448_free(&ed448Key); - } - wc_FreeRng(&rng); + /* Bad Cases */ + ExpectIntEQ(wc_Ed448KeyToDer(NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_Ed448KeyToDer(NULL, output, inLen), BAD_FUNC_ARG); + ExpectIntEQ(wc_Ed448KeyToDer(&ed448Key, output, 0), BAD_FUNC_ARG); + /* Good Cases */ + /* length only */ + ExpectIntGT(wc_Ed448KeyToDer(&ed448Key, NULL, inLen), 0); + ExpectIntGT(wc_Ed448KeyToDer(&ed448Key, output, inLen), 0); - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&ed448Key); #endif - return res; -}/* End test_wc_Ed448KeyToDer*/ + return EXPECT_RESULT(); +} /* End test_wc_Ed448KeyToDer*/ + /* * Testing wc_Ed448PrivateKeyToDer */ static int test_wc_Ed448PrivateKeyToDer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) && \ (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - byte output[ONEK_BUF]; - ed448_key ed448PrivKey; - WC_RNG rng; - word32 inLen; - int ret; + byte output[ONEK_BUF]; + ed448_key ed448PrivKey; + WC_RNG rng; + word32 inLen; - ret = wc_InitRng(&rng); + XMEMSET(&ed448PrivKey, 0, sizeof(ed448_key)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = wc_ed448_init(&ed448PrivKey); - if (ret == 0) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448PrivKey); - } - inLen = sizeof(output); + ExpectIntEQ(wc_ed448_init(&ed448PrivKey), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448PrivKey), + 0); + inLen = (word32)sizeof(output); - /* Bad Cases */ - if (ret == 0) { - ret = wc_Ed448PrivateKeyToDer(NULL, NULL, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed448PrivateKeyToDer(NULL, output, inLen); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed448PrivateKeyToDer(&ed448PrivKey, output, 0); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - /* Good cases */ - if (ret == 0) { - /* length only */ - ret = wc_Ed448PrivateKeyToDer(&ed448PrivKey, NULL, inLen); - if (ret > 0) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_Ed448PrivateKeyToDer(&ed448PrivKey, output, inLen); - if (ret > 0) { - ret = 0; - } - } - wc_ed448_free(&ed448PrivKey); - } - wc_FreeRng(&rng); + /* Bad Cases */ + ExpectIntEQ(wc_Ed448PrivateKeyToDer(NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_Ed448PrivateKeyToDer(NULL, output, inLen), BAD_FUNC_ARG); + ExpectIntEQ(wc_Ed448PrivateKeyToDer(&ed448PrivKey, output, 0), + BAD_FUNC_ARG); + /* Good cases */ + /* length only */ + ExpectIntGT(wc_Ed448PrivateKeyToDer(&ed448PrivKey, NULL, inLen), 0); + ExpectIntGT(wc_Ed448PrivateKeyToDer(&ed448PrivKey, output, inLen), 0); - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); + wc_ed448_free(&ed448PrivKey); #endif - return res; -}/* End test_wc_Ed448PrivateKeyToDer*/ + return EXPECT_RESULT(); +} /* End test_wc_Ed448PrivateKeyToDer*/ + /* * Testing wc_SetSubjectBuffer */ static int test_wc_SetSubjectBuffer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_CERT_GEN) && !defined(NO_RSA) && !defined(NO_FILESYSTEM) - Cert cert; - FILE* file; - byte* der; - word32 derSz; - int ret = 0; + Cert cert; + XFILE file = XBADFILE; + byte* der = NULL; + word32 derSz; derSz = FOURK_BUF; - der = (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); - if (der == NULL) { - ret = -1; - } - if (ret == 0) { - file = XFOPEN("./certs/ca-cert.der", "rb"); - if (file != NULL) { - derSz = (word32)XFREAD(der, 1, FOURK_BUF, file); - XFCLOSE(file); - } - else { - ret = -1; - } - } - if (ret == 0) { - ret = wc_InitCert(&cert); - } + ExpectNotNull(der = (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + ExpectTrue((file = XFOPEN("./certs/ca-cert.der", "rb")) != XBADFILE); + ExpectTrue((derSz = (word32)XFREAD(der, 1, FOURK_BUF, file)) > 0); + if (file != XBADFILE) + XFCLOSE(file); - if (ret == 0) { - ret = wc_SetSubjectBuffer(&cert, der, derSz); - } + ExpectIntEQ(wc_InitCert(&cert), 0); + ExpectIntEQ(wc_SetSubjectBuffer(&cert, der, derSz), 0); + ExpectIntEQ(wc_SetSubjectBuffer(NULL, der, derSz), BAD_FUNC_ARG); - if (ret == 0) { - ret = wc_SetSubjectBuffer(NULL, der, derSz); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } XFREE(der, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -}/* End test_wc_SetSubjectBuffer*/ + return EXPECT_RESULT(); +} /* End test_wc_SetSubjectBuffer*/ /* * Testing wc_SetSubjectKeyIdFromPublicKey_ex */ static int test_wc_SetSubjectKeyIdFromPublicKey_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_CERT_GEN) - WC_RNG rng; - Cert cert; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) - ed25519_key ed25519Key; -#endif + WC_RNG rng; + Cert cert; #if !defined(NO_RSA) && defined(HAVE_RSA) - RsaKey rsaKey; - int bits = 2048; + RsaKey rsaKey; + int bits = 2048; #endif #if defined(HAVE_ECC) - ecc_key eccKey; + ecc_key eccKey; + int ret; +#endif +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) + ed25519_key ed25519Key; #endif #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) - ed448_key ed448Key; + ed448_key ed448Key; #endif - int ret = 0; #ifndef HAVE_FIPS - ret = wc_InitRng_ex(&rng, HEAP_HINT, testDevId); + ExpectIntEQ(wc_InitRng_ex(&rng, HEAP_HINT, testDevId), 0); #else - ret = wc_InitRng(&rng); + ExpectIntEQ(wc_InitRng(&rng), 0); #endif - wc_InitCert(&cert); -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) - if (ret == 0) { /*ED25519*/ - ret = wc_ed25519_init(&ed25519Key); - if (ret == 0) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519Key); - } - if (ret == 0) { - ret = wc_SetSubjectKeyIdFromPublicKey_ex(&cert, ED25519_TYPE, - &ed25519Key); - } - wc_ed25519_free(&ed25519Key); - } -#endif + ExpectIntEQ(wc_InitCert(&cert), 0); + #if !defined(NO_RSA) && defined(HAVE_RSA) && defined(WOLFSSL_KEY_GEN) - if (ret == 0) { /*RSA*/ - ret = wc_InitRsaKey(&rsaKey, HEAP_HINT); - if (ret == 0) { - MAKE_RSA_KEY(&rsaKey, bits, WC_RSA_EXPONENT, &rng); - } - if (ret == 0) { - ret = wc_SetSubjectKeyIdFromPublicKey_ex(&cert, RSA_TYPE, &rsaKey); - } - wc_FreeRsaKey(&rsaKey); - } + /* RSA */ + XMEMSET(&rsaKey, 0, sizeof(RsaKey)); + ExpectIntEQ(wc_InitRsaKey(&rsaKey, HEAP_HINT), 0); + ExpectIntEQ(MAKE_RSA_KEY(&rsaKey, bits, WC_RSA_EXPONENT, &rng), 0); + ExpectIntEQ(wc_SetSubjectKeyIdFromPublicKey_ex(&cert, RSA_TYPE, &rsaKey), + 0); + DoExpectIntEQ(wc_FreeRsaKey(&rsaKey), 0); #endif + #if defined(HAVE_ECC) - if (ret == 0) { /*ECC*/ - ret = wc_ecc_init(&eccKey); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY14, &eccKey); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &eccKey.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - if (ret == 0) { - ret = wc_SetSubjectKeyIdFromPublicKey_ex(&cert, ECC_TYPE, &eccKey); - } - wc_ecc_free(&eccKey); - } + /* ECC */ + XMEMSET(&eccKey, 0, sizeof(ecc_key)); + ExpectIntEQ(wc_ecc_init(&eccKey), 0); + ret = wc_ecc_make_key(&rng, KEY14, &eccKey); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &eccKey.asyncDev, WC_ASYNC_FLAG_NONE); #endif + ExpectIntEQ(ret, 0); + ExpectIntEQ(wc_SetSubjectKeyIdFromPublicKey_ex(&cert, ECC_TYPE, &eccKey), + 0); + DoExpectIntEQ(wc_ecc_free(&eccKey), 0); +#endif + +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) + /* ED25519 */ + XMEMSET(&ed25519Key, 0, sizeof(ed25519_key)); + ExpectIntEQ(wc_ed25519_init(&ed25519Key), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519Key), 0); + ExpectIntEQ(wc_SetSubjectKeyIdFromPublicKey_ex(&cert, ED25519_TYPE, + &ed25519Key), 0); + wc_ed25519_free(&ed25519Key); +#endif + #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) - if (ret == 0) { /*ED448*/ - ret = wc_ed448_init(&ed448Key); - if (ret == 0) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448Key); - } - if (ret == 0) { - ret = wc_SetSubjectKeyIdFromPublicKey_ex(&cert, ED448_TYPE, - &ed448Key); - } - wc_ed448_free(&ed448Key); - } + /* ED448 */ + XMEMSET(&ed448Key, 0, sizeof(ed448_key)); + ExpectIntEQ(wc_ed448_init(&ed448Key), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448Key), 0); + ExpectIntEQ(wc_SetSubjectKeyIdFromPublicKey_ex(&cert, ED448_TYPE, + &ed448Key), 0); + wc_ed448_free(&ed448Key); #endif wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); -#endif - return res; -}/* End test_wc_SetSubjectKeyIdFromPublicKey_ex*/ + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif /* WOLFSSL_CERT_EXT && WOLFSSL_CERT_GEN */ + return EXPECT_RESULT(); +} /* End test_wc_SetSubjectKeyIdFromPublicKey_ex*/ /* * Testing wc_SetAuthKeyIdFromPublicKey_ex */ static int test_wc_SetAuthKeyIdFromPublicKey_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_CERT_GEN) - WC_RNG rng; - Cert cert; -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) - ed25519_key ed25519Key; -#endif + WC_RNG rng; + Cert cert; #if !defined(NO_RSA) && defined(HAVE_RSA) - RsaKey rsaKey; - int bits = 2048; + RsaKey rsaKey; + int bits = 2048; #endif #if defined(HAVE_ECC) - ecc_key eccKey; + ecc_key eccKey; + int ret; +#endif +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) + ed25519_key ed25519Key; #endif #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) - ed448_key ed448Key; + ed448_key ed448Key; #endif - int ret = 0; #ifndef HAVE_FIPS - ret = wc_InitRng_ex(&rng, HEAP_HINT, testDevId); + ExpectIntEQ(wc_InitRng_ex(&rng, HEAP_HINT, testDevId), 0); #else - ret = wc_InitRng(&rng); + ExpectIntEQ(wc_InitRng(&rng), 0); #endif - wc_InitCert(&cert); -#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) - if (ret == 0) { /*ED25519*/ - ret = wc_ed25519_init(&ed25519Key); - if (ret == 0) { - ret = wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519Key); - } - if (ret == 0) { - ret = wc_SetAuthKeyIdFromPublicKey_ex(&cert, ED25519_TYPE, - &ed25519Key); - } - wc_ed25519_free(&ed25519Key); - } -#endif + ExpectIntEQ(wc_InitCert(&cert), 0); + #if !defined(NO_RSA) && defined(HAVE_RSA) && defined(WOLFSSL_KEY_GEN) - if (ret == 0) { /*RSA*/ - ret = wc_InitRsaKey(&rsaKey, HEAP_HINT); - if (ret == 0) { - MAKE_RSA_KEY(&rsaKey, bits, WC_RSA_EXPONENT, &rng); - } - if (ret == 0) { - ret = wc_SetAuthKeyIdFromPublicKey_ex(&cert, RSA_TYPE, &rsaKey); - } - wc_FreeRsaKey(&rsaKey); - } + /* RSA */ + XMEMSET(&rsaKey, 0, sizeof(RsaKey)); + ExpectIntEQ(wc_InitRsaKey(&rsaKey, HEAP_HINT), 0); + ExpectIntEQ(MAKE_RSA_KEY(&rsaKey, bits, WC_RSA_EXPONENT, &rng), 0); + ExpectIntEQ(wc_SetAuthKeyIdFromPublicKey_ex(&cert, RSA_TYPE, &rsaKey), 0); + DoExpectIntEQ(wc_FreeRsaKey(&rsaKey), 0); #endif + #if defined(HAVE_ECC) - if (ret == 0) { /*ECC*/ - ret = wc_ecc_init(&eccKey); - if (ret == 0) { - ret = wc_ecc_make_key(&rng, KEY14, &eccKey); - #if defined(WOLFSSL_ASYNC_CRYPT) - ret = wc_AsyncWait(ret, &eccKey.asyncDev, WC_ASYNC_FLAG_NONE); - #endif - } - if (ret == 0) { - ret = wc_SetAuthKeyIdFromPublicKey_ex(&cert, ECC_TYPE, &eccKey); - } - wc_ecc_free(&eccKey); - } + /* ECC */ + XMEMSET(&eccKey, 0, sizeof(ecc_key)); + ExpectIntEQ(wc_ecc_init(&eccKey), 0); + ret = wc_ecc_make_key(&rng, KEY14, &eccKey); +#if defined(WOLFSSL_ASYNC_CRYPT) + ret = wc_AsyncWait(ret, &eccKey.asyncDev, WC_ASYNC_FLAG_NONE); #endif + ExpectIntEQ(ret, 0); + ExpectIntEQ(wc_SetAuthKeyIdFromPublicKey_ex(&cert, ECC_TYPE, &eccKey), 0); + DoExpectIntEQ(wc_ecc_free(&eccKey), 0); +#endif + +#if defined(HAVE_ED25519) && defined(HAVE_ED25519_KEY_EXPORT) + /* ED25519 */ + XMEMSET(&ed25519Key, 0, sizeof(ed25519_key)); + ExpectIntEQ(wc_ed25519_init(&ed25519Key), 0); + ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &ed25519Key), 0); + ExpectIntEQ(wc_SetAuthKeyIdFromPublicKey_ex(&cert, ED25519_TYPE, + &ed25519Key), 0); + wc_ed25519_free(&ed25519Key); +#endif + #if defined(HAVE_ED448) && defined(HAVE_ED448_KEY_EXPORT) - if (ret == 0) { /*ED448*/ - ret = wc_ed448_init(&ed448Key); - if (ret == 0) { - ret = wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448Key); - } - if (ret == 0) { - ret = wc_SetAuthKeyIdFromPublicKey_ex(&cert, ED448_TYPE, - &ed448Key); - } - wc_ed448_free(&ed448Key); - } + /* ED448 */ + XMEMSET(&ed448Key, 0, sizeof(ed448_key)); + ExpectIntEQ(wc_ed448_init(&ed448Key), 0); + ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &ed448Key), 0); + ExpectIntEQ(wc_SetAuthKeyIdFromPublicKey_ex(&cert, ED448_TYPE, &ed448Key), + 0); + wc_ed448_free(&ed448Key); #endif - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); -#endif /*defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_CERT_GEN)*/ - return res; -}/* End test_wc_SetAuthKeyIdFromPublicKey_ex*/ + DoExpectIntEQ(wc_FreeRng(&rng), 0); +#endif /* defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_CERT_GEN)*/ + return EXPECT_RESULT(); +} /* End test_wc_SetAuthKeyIdFromPublicKey_ex*/ /* * Testing wc_PKCS7_New() */ static int test_wc_PKCS7_New(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) - PKCS7* pkcs7; + PKCS7* pkcs7 = NULL; - pkcs7 = wc_PKCS7_New(NULL, testDevId); + ExpectNotNull(pkcs7 = wc_PKCS7_New(NULL, testDevId)); wc_PKCS7_Free(pkcs7); - - res = TEST_RES_CHECK(pkcs7 != NULL); #endif - return res; + return EXPECT_RESULT(); } /* END test-wc_PKCS7_New */ /* @@ -28587,24 +22245,20 @@ static int test_wc_PKCS7_New(void) */ static int test_wc_PKCS7_Init(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) - PKCS7* pkcs7; - void* heap = NULL; + PKCS7* pkcs7 = NULL; + void* heap = NULL; - pkcs7 = wc_PKCS7_New(heap, testDevId); - AssertNotNull(pkcs7); - - AssertIntEQ(wc_PKCS7_Init(pkcs7, heap, testDevId), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(heap, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, heap, testDevId), 0); /* Pass in bad args. */ - AssertIntEQ(wc_PKCS7_Init(NULL, heap, testDevId), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_Init(NULL, heap, testDevId), BAD_FUNC_ARG); wc_PKCS7_Free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } /* END test-wc_PKCS7_Init */ @@ -28613,47 +22267,53 @@ static int test_wc_PKCS7_Init(void) */ static int test_wc_PKCS7_InitWithCert(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) - PKCS7* pkcs7; + PKCS7* pkcs7 = NULL; #ifndef NO_RSA #if defined(USE_CERT_BUFFERS_2048) unsigned char cert[sizeof(client_cert_der_2048)]; int certSz = (int)sizeof(cert); + XMEMSET(cert, 0, certSz); XMEMCPY(cert, client_cert_der_2048, sizeof(client_cert_der_2048)); #elif defined(USE_CERT_BUFFERS_1024) unsigned char cert[sizeof(client_cert_der_1024)]; int certSz = (int)sizeof(cert); + XMEMSET(cert, 0, certSz); XMEMCPY(cert, client_cert_der_1024, sizeof_client_cert_der_1024); #else unsigned char cert[ONEK_BUF]; - XFILE fp; + XFILE fp = XBADFILE; int certSz; - fp = XFOPEN("./certs/1024/client-cert.der", "rb"); - AssertTrue(fp != XBADFILE); - certSz = (int)XFREAD(cert, 1, sizeof_client_cert_der_1024, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/1024/client-cert.der", "rb")) != + XBADFILE); + ExpectIntGT(certSz = (int)XFREAD(cert, 1, sizeof_client_cert_der_1024, + fp), 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif #elif defined(HAVE_ECC) #if defined(USE_CERT_BUFFERS_256) unsigned char cert[sizeof(cliecc_cert_der_256)]; int certSz = (int)sizeof(cert); + XMEMSET(cert, 0, certSz); XMEMCPY(cert, cliecc_cert_der_256, sizeof(cliecc_cert_der_256)); #else unsigned char cert[ONEK_BUF]; - XFILE fp; + XFILE fp = XBADFILE; int certSz; - fp = XFOPEN("./certs/client-ecc-cert.der", "rb"); - AssertTrue(fp != XBADFILE); - - certSz = (int)XFREAD(cert, 1, sizeof(cliecc_cert_der_256), fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/client-ecc-cert.der", "rb")) != + XBADFILE); + ExpectIntGT(certSz = (int)XFREAD(cert, 1, sizeof(cliecc_cert_der_256), + fp), 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif #else #error PKCS7 requires ECC or RSA @@ -28735,35 +22395,35 @@ static int test_wc_PKCS7_InitWithCert(void) 0x64, 0xAB, 0xA6, 0xBE, 0x02, 0x21, 0x00, 0xAA, 0xC5, 0xA3, 0x50, 0xF6, 0xF1, 0xA5, 0xDB, 0x05, 0xE0, 0x75, 0xD2, 0xF7, 0xBA, 0x49, 0x5F, 0x8F, 0x7D, 0x1C, 0x44, 0xB1, 0x6E, 0xDF, 0xC8, 0xDA, 0x10, 0x48, 0x2D, 0x53, - 0x08, 0xA8, 0xB4}; + 0x08, 0xA8, 0xB4 + }; #endif - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); /* If initialization is not successful, it's free'd in init func. */ - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, (byte*)cert, (word32)certSz), 0); - + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, (byte*)cert, (word32)certSz), + 0); wc_PKCS7_Free(pkcs7); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + pkcs7 = NULL; + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); /* Valid initialization usage. */ - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); /* Pass in bad args. No need free for null checks, free at end.*/ - AssertIntEQ(wc_PKCS7_InitWithCert(NULL, (byte*)cert, (word32)certSz), - BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, (word32)certSz), - BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_InitWithCert(NULL, (byte*)cert, (word32)certSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, (word32)certSz), + BAD_FUNC_ARG); #ifdef HAVE_ECC - AssertIntLT(wc_PKCS7_InitWithCert(pkcs7, certWithInvalidEccKey, - sizeof(certWithInvalidEccKey)), 0); + ExpectIntLT(wc_PKCS7_InitWithCert(pkcs7, certWithInvalidEccKey, + sizeof(certWithInvalidEccKey)), 0); } #endif wc_PKCS7_Free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_PKCS7_InitWithCert */ @@ -28772,11 +22432,11 @@ static int test_wc_PKCS7_InitWithCert(void) */ static int test_wc_PKCS7_EncodeData(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) - PKCS7* pkcs7; - byte output[FOURK_BUF]; - byte data[] = "My encoded DER cert."; + PKCS7* pkcs7 = NULL; + byte output[FOURK_BUF]; + byte data[] = "My encoded DER cert."; #ifndef NO_RSA #if defined(USE_CERT_BUFFERS_2048) @@ -28784,36 +22444,43 @@ static int test_wc_PKCS7_EncodeData(void) unsigned char key[sizeof(client_key_der_2048)]; int certSz = (int)sizeof(cert); int keySz = (int)sizeof(key); + XMEMSET(cert, 0, certSz); XMEMSET(key, 0, keySz); XMEMCPY(cert, client_cert_der_2048, certSz); XMEMCPY(key, client_key_der_2048, keySz); - #elif defined(USE_CERT_BUFFERS_1024) unsigned char cert[sizeof(sizeof_client_cert_der_1024)]; unsigned char key[sizeof_client_key_der_1024]; int certSz = (int)sizeof(cert); int keySz = (int)sizeof(key); + XMEMSET(cert, 0, certSz); XMEMSET(key, 0, keySz); XMEMCPY(cert, client_cert_der_1024, certSz); XMEMCPY(key, client_key_der_1024, keySz); #else - unsigned char cert[ONEK_BUF]; - unsigned char key[ONEK_BUF]; - XFILE fp; - int certSz; - int keySz; + unsigned char cert[ONEK_BUF]; + unsigned char key[ONEK_BUF]; + XFILE fp = XBADFILE; + int certSz; + int keySz; - fp = XFOPEN("./certs/1024/client-cert.der", "rb"); - AssertTrue(fp != XBADFILE); - certSz = (int)XFREAD(cert, 1, sizeof_client_cert_der_1024, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/1024/client-cert.der", "rb")) != + XBADFILE); + ExpectIntGT(certSz = (int)XFREAD(cert, 1, sizeof_client_cert_der_1024, + fp), 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } - fp = XFOPEN("./certs/1024/client-key.der", "rb"); - AssertTrue(fp != XBADFILE); - keySz = (int)XFREAD(key, 1, sizeof_client_key_der_1024, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/1024/client-key.der", "rb")) != + XBADFILE); + ExpectIntGT(keySz = (int)XFREAD(key, 1, sizeof_client_key_der_1024, fp), + 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif #elif defined(HAVE_ECC) #if defined(USE_CERT_BUFFERS_256) @@ -28828,46 +22495,52 @@ static int test_wc_PKCS7_EncodeData(void) #else unsigned char cert[ONEK_BUF]; unsigned char key[ONEK_BUF]; - XFILE fp; + XFILE fp = XBADFILE; int certSz, keySz; - fp = XFOPEN("./certs/client-ecc-cert.der", "rb"); - AssertTrue(fp != XBADFILE); - certSz = (int)XFREAD(cert, 1, sizeof_cliecc_cert_der_256, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/client-ecc-cert.der", "rb")) != + XBADFILE); + ExpectIntGT(certSz = (int)XFREAD(cert, 1, sizeof_cliecc_cert_der_256, + fp), 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } - fp = XFOPEN("./certs/client-ecc-key.der", "rb"); - AssertTrue(fp != XBADFILE); - keySz = (int)XFREAD(key, 1, sizeof_ecc_clikey_der_256, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/client-ecc-key.der", "rb")) != + XBADFILE); + ExpectIntGT(keySz = (int)XFREAD(key, 1, sizeof_ecc_clikey_der_256, fp), + 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif #endif XMEMSET(output, 0, sizeof(output)); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, (byte*)cert, certSz), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, (byte*)cert, certSz), 0); - pkcs7->content = data; - pkcs7->contentSz = sizeof(data); - pkcs7->privateKey = key; - pkcs7->privateKeySz = keySz; - AssertIntGT(wc_PKCS7_EncodeData(pkcs7, output, (word32)sizeof(output)), 0); + if (pkcs7 != NULL) { + pkcs7->content = data; + pkcs7->contentSz = sizeof(data); + pkcs7->privateKey = key; + pkcs7->privateKeySz = keySz; + } + ExpectIntGT(wc_PKCS7_EncodeData(pkcs7, output, (word32)sizeof(output)), 0); /* Test bad args. */ - AssertIntEQ(wc_PKCS7_EncodeData(NULL, output, (word32)sizeof(output)), + ExpectIntEQ(wc_PKCS7_EncodeData(NULL, output, (word32)sizeof(output)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeData(pkcs7, NULL, (word32)sizeof(output)), + ExpectIntEQ(wc_PKCS7_EncodeData(pkcs7, NULL, (word32)sizeof(output)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeData(pkcs7, output, 5), BUFFER_E); + ExpectIntEQ(wc_PKCS7_EncodeData(pkcs7, output, 5), BUFFER_E); wc_PKCS7_Free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_PKCS7_EncodeData */ @@ -28942,16 +22615,15 @@ static int rsaSignRawDigestCb(PKCS7* pkcs7, byte* digest, word32 digestSz, */ static int test_wc_PKCS7_EncodeSignedData(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) - PKCS7* pkcs7; - WC_RNG rng; - byte output[FOURK_BUF]; - byte badOut[1]; - word32 outputSz = (word32)sizeof(output); - word32 badOutSz = 0; - byte data[] = "Test data to encode."; - + PKCS7* pkcs7 = NULL; + WC_RNG rng; + byte output[FOURK_BUF]; + byte badOut[1]; + word32 outputSz = (word32)sizeof(output); + word32 badOutSz = 0; + byte data[] = "Test data to encode."; #ifndef NO_RSA #if defined(USE_CERT_BUFFERS_2048) byte key[sizeof(client_key_der_2048)]; @@ -28974,19 +22646,25 @@ static int test_wc_PKCS7_EncodeSignedData(void) #else unsigned char cert[ONEK_BUF]; unsigned char key[ONEK_BUF]; - XFILE fp; + XFILE fp = XBADFILE; int certSz; int keySz; - fp = XFOPEN("./certs/1024/client-cert.der", "rb"); - AssertTrue(fp != XBADFILE); - certSz = (int)XFREAD(cert, 1, sizeof_client_cert_der_1024, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/1024/client-cert.der", "rb")) != + XBADFILE); + ExpectIntGT(certSz = (int)XFREAD(cert, 1, sizeof_client_cert_der_1024, + fp), 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } - fp = XFOPEN("./certs/1024/client-key.der", "rb"); - AssertTrue(fp != XBADFILE); - keySz = (int)XFREAD(key, 1, sizeof_client_key_der_1024, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/1024/client-key.der", "rb")) != + XBADFILE); + ExpectIntGT(keySz = (int)XFREAD(key, 1, sizeof_client_key_der_1024, fp), + 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif #elif defined(HAVE_ECC) #if defined(USE_CERT_BUFFERS_256) @@ -29001,83 +22679,98 @@ static int test_wc_PKCS7_EncodeSignedData(void) #else unsigned char cert[ONEK_BUF]; unsigned char key[ONEK_BUF]; - XFILE fp; - int certSz, keySz; + XFILE fp = XBADFILE; + int certSz; + int keySz; - fp = XOPEN("./certs/client-ecc-cert.der", "rb"); - AssertTrue(fp != XBADFILE); - certSz = (int)XFREAD(cert, 1, ONEK_BUF, fp); - XFCLOSE(fp); + ExpectTrue((fp = XOPEN("./certs/client-ecc-cert.der", "rb")) != + XBADFILE); + ExpectIntGT(certSz = (int)XFREAD(cert, 1, ONEK_BUF, fp), 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } - fp = XFOPEN("./certs/client-ecc-key.der", "rb"); - AssertTrue(fp != XBADFILE); - keySz = (int)XFREAD(key, 1, ONEK_BUF, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/client-ecc-key.der", "rb")) != + XBADFILE); + ExpectIntGT(keySz = (int)XFREAD(key, 1, ONEK_BUF, fp), 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif #endif + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(output, 0, outputSz); - AssertIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); - pkcs7->content = data; - pkcs7->contentSz = (word32)sizeof(data); - pkcs7->privateKey = key; - pkcs7->privateKeySz = (word32)sizeof(key); - pkcs7->encryptOID = RSAk; -#ifdef NO_SHA - pkcs7->hashOID = SHA256h; -#else - pkcs7->hashOID = SHAh; -#endif - pkcs7->rng = &rng; + if (pkcs7 != NULL) { + pkcs7->content = data; + pkcs7->contentSz = (word32)sizeof(data); + pkcs7->privateKey = key; + pkcs7->privateKeySz = (word32)sizeof(key); + pkcs7->encryptOID = RSAk; + #ifdef NO_SHA + pkcs7->hashOID = SHA256h; + #else + pkcs7->hashOID = SHAh; + #endif + pkcs7->rng = &rng; + } - AssertIntGT(wc_PKCS7_EncodeSignedData(pkcs7, output, outputSz), 0); + ExpectIntGT(wc_PKCS7_EncodeSignedData(pkcs7, output, outputSz), 0); wc_PKCS7_Free(pkcs7); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); + pkcs7 = NULL; + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); /* Pass in bad args. */ - AssertIntEQ(wc_PKCS7_EncodeSignedData(NULL, output, outputSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeSignedData(pkcs7, NULL, outputSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeSignedData(pkcs7, badOut, + ExpectIntEQ(wc_PKCS7_EncodeSignedData(NULL, output, outputSz), + BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_EncodeSignedData(pkcs7, NULL, outputSz), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_EncodeSignedData(pkcs7, badOut, badOutSz), BAD_FUNC_ARG); - pkcs7->hashOID = 0; /* bad hashOID */ - AssertIntEQ(wc_PKCS7_EncodeSignedData(pkcs7, output, outputSz), BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->hashOID = 0; /* bad hashOID */ + } + ExpectIntEQ(wc_PKCS7_EncodeSignedData(pkcs7, output, outputSz), + BAD_FUNC_ARG); #if defined(HAVE_PKCS7) && defined(HAVE_PKCS7_RSA_RAW_SIGN_CALLBACK) && \ !defined(NO_RSA) && !defined(NO_SHA256) /* test RSA sign raw digest callback, if using RSA and compiled in. * Example callback assumes SHA-256, so only run test if compiled in. */ wc_PKCS7_Free(pkcs7); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); + pkcs7 = NULL; + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); - pkcs7->content = data; - pkcs7->contentSz = (word32)sizeof(data); - pkcs7->privateKey = key; - pkcs7->privateKeySz = (word32)sizeof(key); - pkcs7->encryptOID = RSAk; - pkcs7->hashOID = SHA256h; - pkcs7->rng = &rng; + if (pkcs7 != NULL) { + pkcs7->content = data; + pkcs7->contentSz = (word32)sizeof(data); + pkcs7->privateKey = key; + pkcs7->privateKeySz = (word32)sizeof(key); + pkcs7->encryptOID = RSAk; + pkcs7->hashOID = SHA256h; + pkcs7->rng = &rng; + } - AssertIntEQ(wc_PKCS7_SetRsaSignRawDigestCb(pkcs7, rsaSignRawDigestCb), 0); + ExpectIntEQ(wc_PKCS7_SetRsaSignRawDigestCb(pkcs7, rsaSignRawDigestCb), 0); - AssertIntGT(wc_PKCS7_EncodeSignedData(pkcs7, output, outputSz), 0); + ExpectIntGT(wc_PKCS7_EncodeSignedData(pkcs7, output, outputSz), 0); #endif wc_PKCS7_Free(pkcs7); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(1); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_PKCS7_EncodeSignedData */ @@ -29086,17 +22779,17 @@ static int test_wc_PKCS7_EncodeSignedData(void) */ static int test_wc_PKCS7_EncodeSignedData_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) - int ret, i; - PKCS7* pkcs7; - WC_RNG rng; - byte outputHead[FOURK_BUF/2]; - byte outputFoot[FOURK_BUF/2]; - word32 outputHeadSz = (word32)sizeof(outputHead); - word32 outputFootSz = (word32)sizeof(outputFoot); - byte data[FOURK_BUF]; - wc_HashAlg hash; + int i; + PKCS7* pkcs7 = NULL; + WC_RNG rng; + byte outputHead[FOURK_BUF/2]; + byte outputFoot[FOURK_BUF/2]; + word32 outputHeadSz = (word32)sizeof(outputHead); + word32 outputFootSz = (word32)sizeof(outputFoot); + byte data[FOURK_BUF]; + wc_HashAlg hash; #ifdef NO_SHA enum wc_HashType hashType = WC_HASH_TYPE_SHA256; #else @@ -29125,181 +22818,202 @@ static int test_wc_PKCS7_EncodeSignedData_ex(void) XMEMCPY(key, client_key_der_1024, keySz); XMEMCPY(cert, client_cert_der_1024, certSz); #else - unsigned char cert[ONEK_BUF]; - unsigned char key[ONEK_BUF]; - XFILE fp; - int certSz; - int keySz; + unsigned char cert[ONEK_BUF]; + unsigned char key[ONEK_BUF]; + XFILE fp = XBADFILE; + int certSz; + int keySz; - fp = XFOPEN("./certs/1024/client-cert.der", "rb"); - AssertTrue((fp != XBADFILE)); - certSz = (int)XFREAD(cert, 1, sizeof_client_cert_der_1024, fp); - XFCLOSE(fp); + ExpectTure((fp = XFOPEN("./certs/1024/client-cert.der", "rb")) != + XBADFILE); + ExpectIntGT(certSz = (int)XFREAD(cert, 1, sizeof_client_cert_der_1024, + fp), 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } - fp = XFOPEN("./certs/1024/client-key.der", "rb"); - AssertTrue(fp != XBADFILE); - keySz = (int)XFREAD(key, 1, sizeof_client_key_der_1024, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/1024/client-key.der", "rb")) != + XBADFILE); + ExpectIntGT(keySz = (int)XFREAD(key, 1, sizeof_client_key_der_1024, fp), + 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif #elif defined(HAVE_ECC) #if defined(USE_CERT_BUFFERS_256) - unsigned char cert[sizeof(cliecc_cert_der_256)]; - unsigned char key[sizeof(ecc_clikey_der_256)]; - int certSz = (int)sizeof(cert); - int keySz = (int)sizeof(key); + unsigned char cert[sizeof(cliecc_cert_der_256)]; + unsigned char key[sizeof(ecc_clikey_der_256)]; + int certSz = (int)sizeof(cert); + int keySz = (int)sizeof(key); + XMEMSET(cert, 0, certSz); XMEMSET(key, 0, keySz); XMEMCPY(cert, cliecc_cert_der_256, sizeof_cliecc_cert_der_256); XMEMCPY(key, ecc_clikey_der_256, sizeof_ecc_clikey_der_256); #else - unsigned char cert[ONEK_BUF]; - unsigned char key[ONEK_BUF]; - XFILE fp; - int certSz, keySz; + unsigned char cert[ONEK_BUF]; + unsigned char key[ONEK_BUF]; + XFILE fp = XBADFILE; + int certSz; + int keySz; - fp = XFOPEN("./certs/client-ecc-cert.der", "rb"); - AssertTrue(fp != XBADFILE); - certSz = (int)XFREAD(cert, 1, sizeof_cliecc_cert_der_256, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/client-ecc-cert.der", "rb")) != + XBADFILE); + ExpectIntGT(certSz = (int)XFREAD(cert, 1, sizeof_cliecc_cert_der_256, + fp), 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } - fp = XFOPEN("./certs/client-ecc-key.der", "rb"); - AssertTrue(fp != XBADFILE); - keySz = (int)XFREAD(key, 1, sizeof_ecc_clikey_der_256, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/client-ecc-key.der", "rb")) != + XBADFILE); + ExpectIntGT(keySz = (int)XFREAD(key, 1, sizeof_ecc_clikey_der_256, fp), + 0); + if (fp != XBADFILE) + XFCLOSE(fp); #endif #endif + XMEMSET(&rng, 0, sizeof(WC_RNG)); + /* initialize large data with sequence */ for (i=0; i<(int)sizeof(data); i++) data[i] = i & 0xff; XMEMSET(outputHead, 0, outputHeadSz); XMEMSET(outputFoot, 0, outputFootSz); - AssertIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); - pkcs7->content = NULL; /* not used for ex */ - pkcs7->contentSz = (word32)sizeof(data); - pkcs7->privateKey = key; - pkcs7->privateKeySz = (word32)sizeof(key); - pkcs7->encryptOID = RSAk; -#ifdef NO_SHA - pkcs7->hashOID = SHA256h; -#else - pkcs7->hashOID = SHAh; -#endif - pkcs7->rng = &rng; + if (pkcs7 != NULL) { + pkcs7->content = NULL; /* not used for ex */ + pkcs7->contentSz = (word32)sizeof(data); + pkcs7->privateKey = key; + pkcs7->privateKeySz = (word32)sizeof(key); + pkcs7->encryptOID = RSAk; + #ifdef NO_SHA + pkcs7->hashOID = SHA256h; + #else + pkcs7->hashOID = SHAh; + #endif + pkcs7->rng = &rng; + } /* calculate hash for content */ - ret = wc_HashInit(&hash, hashType); - if (ret == 0) { - ret = wc_HashUpdate(&hash, hashType, data, sizeof(data)); - if (ret == 0) { - ret = wc_HashFinal(&hash, hashType, hashBuf); - } - wc_HashFree(&hash, hashType); - } - AssertIntEQ(ret, 0); + XMEMSET(&hash, 0, sizeof(wc_HashAlg)); + ExpectIntEQ(wc_HashInit(&hash, hashType), 0); + ExpectIntEQ(wc_HashUpdate(&hash, hashType, data, sizeof(data)), 0); + ExpectIntEQ(wc_HashFinal(&hash, hashType, hashBuf), 0); + DoExpectIntEQ(wc_HashFree(&hash, hashType), 0); /* Perform PKCS7 sign using hash directly */ - AssertIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, + ExpectIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, outputHead, &outputHeadSz, outputFoot, &outputFootSz), 0); - AssertIntGT(outputHeadSz, 0); - AssertIntGT(outputFootSz, 0); + ExpectIntGT(outputHeadSz, 0); + ExpectIntGT(outputFootSz, 0); wc_PKCS7_Free(pkcs7); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + pkcs7 = NULL; + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); /* required parameter even on verify when using _ex, if using outputHead * and outputFoot */ - pkcs7->contentSz = (word32)sizeof(data); - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, + if (pkcs7 != NULL) { + pkcs7->contentSz = (word32)sizeof(data); + } + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, outputHead, outputHeadSz, outputFoot, outputFootSz), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; /* assembly complete PKCS7 sign and use normal verify */ { - byte* output = (byte*)XMALLOC( - outputHeadSz + sizeof(data) + outputFootSz, - HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); + byte* output = NULL; word32 outputSz = 0; - AssertNotNull(output); - XMEMCPY(&output[outputSz], outputHead, outputHeadSz); - outputSz += outputHeadSz; - XMEMCPY(&output[outputSz], data, sizeof(data)); - outputSz += sizeof(data); - XMEMCPY(&output[outputSz], outputFoot, outputFootSz); - outputSz += outputFootSz; - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); + ExpectNotNull(output = (byte*)XMALLOC( + outputHeadSz + sizeof(data) + outputFootSz, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + if (output != NULL) { + XMEMCPY(&output[outputSz], outputHead, outputHeadSz); + outputSz += outputHeadSz; + XMEMCPY(&output[outputSz], data, sizeof(data)); + outputSz += sizeof(data); + XMEMCPY(&output[outputSz], outputFoot, outputFootSz); + outputSz += outputFootSz; + } + + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); XFREE(output, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); } /* Pass in bad args. */ - AssertIntEQ(wc_PKCS7_EncodeSignedData_ex(NULL, hashBuf, hashSz, outputHead, + ExpectIntEQ(wc_PKCS7_EncodeSignedData_ex(NULL, hashBuf, hashSz, outputHead, &outputHeadSz, outputFoot, &outputFootSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, NULL, hashSz, outputHead, + ExpectIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, NULL, hashSz, outputHead, &outputHeadSz, outputFoot, &outputFootSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, 0, outputHead, + ExpectIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, 0, outputHead, &outputHeadSz, outputFoot, &outputFootSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, NULL, + ExpectIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, NULL, &outputHeadSz, outputFoot, &outputFootSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, + ExpectIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, outputHead, NULL, outputFoot, &outputFootSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, + ExpectIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, outputHead, &outputHeadSz, NULL, &outputFootSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, + ExpectIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, outputHead, &outputHeadSz, outputFoot, NULL), BAD_FUNC_ARG); - pkcs7->hashOID = 0; /* bad hashOID */ - AssertIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, + if (pkcs7 != NULL) { + pkcs7->hashOID = 0; /* bad hashOID */ + } + ExpectIntEQ(wc_PKCS7_EncodeSignedData_ex(pkcs7, hashBuf, hashSz, outputHead, &outputHeadSz, outputFoot, &outputFootSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(NULL, hashBuf, hashSz, outputHead, + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(NULL, hashBuf, hashSz, outputHead, outputHeadSz, outputFoot, outputFootSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, NULL, hashSz, outputHead, + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, NULL, hashSz, outputHead, outputHeadSz, outputFoot, outputFootSz), BAD_FUNC_ARG); #ifndef NO_PKCS7_STREAM - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, 0, outputHead, + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, 0, outputHead, outputHeadSz, outputFoot, outputFootSz), WC_PKCS7_WANT_READ_E); #else - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, 0, outputHead, + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, 0, outputHead, outputHeadSz, outputFoot, outputFootSz), BUFFER_E); #endif - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, NULL, + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, NULL, outputHeadSz, outputFoot, outputFootSz), BAD_FUNC_ARG); #ifndef NO_PKCS7_STREAM /* can pass in 0 buffer length with streaming API */ - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, outputHead, 0, outputFoot, outputFootSz), WC_PKCS7_WANT_READ_E); #else - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, outputHead, 0, outputFoot, outputFootSz), BAD_FUNC_ARG); #endif - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, outputHead, outputHeadSz, NULL, outputFootSz), BAD_FUNC_ARG); #ifndef NO_PKCS7_STREAM - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, outputHead, outputHeadSz, outputFoot, 0), WC_PKCS7_WANT_READ_E); #else - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, outputHead, outputHeadSz, outputFoot, 0), BUFFER_E); #endif wc_PKCS7_Free(pkcs7); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(1); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_PKCS7_EncodeSignedData_ex */ @@ -29319,8 +23033,9 @@ static int LoadPKCS7SignedDataCerts( byte* cert, word32* certSz, byte* key, word32* keySz) { + EXPECT_DECLS; int ret = 0; - FILE* fp = NULL; + XFILE fp = XBADFILE; #ifndef NO_RSA const char* intCARootRSA = "./certs/ca-cert.der"; @@ -29359,35 +23074,45 @@ static int LoadPKCS7SignedDataCerts( #ifndef NO_RSA case RSA_TYPE: if (useIntermediateCertChain == 1) { - fp = XFOPEN(intCARootRSA, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(intCARootRSA, "rb")) != XBADFILE); *intCARootSz = (word32)XFREAD(intCARoot, 1, *intCARootSz, fp); - XFCLOSE(fp); - AssertIntGT(*intCARootSz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*intCARootSz, 0); - fp = XFOPEN(intCA1RSA, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(intCA1RSA, "rb")) != XBADFILE); *intCA1Sz = (word32)XFREAD(intCA1, 1, *intCA1Sz, fp); - XFCLOSE(fp); - AssertIntGT(*intCA1Sz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*intCA1Sz, 0); - fp = XFOPEN(intCA2RSA, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(intCA2RSA, "rb")) != XBADFILE); *intCA2Sz = (word32)XFREAD(intCA2, 1, *intCA2Sz, fp); - XFCLOSE(fp); - AssertIntGT(*intCA2Sz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*intCA2Sz, 0); - fp = XFOPEN(intServCertRSA, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(intServCertRSA, "rb")) != XBADFILE); *certSz = (word32)XFREAD(cert, 1, *certSz, fp); - XFCLOSE(fp); - AssertIntGT(*certSz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*certSz, 0); - fp = XFOPEN(intServKeyRSA, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(intServKeyRSA, "rb")) != XBADFILE); *keySz = (word32)XFREAD(key, 1, *keySz, fp); - XFCLOSE(fp); - AssertIntGT(*keySz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*keySz, 0); } else { #if defined(USE_CERT_BUFFERS_2048) @@ -29401,17 +23126,21 @@ static int LoadPKCS7SignedDataCerts( XMEMCPY(key, client_key_der_1024, *keySz); XMEMCPY(cert, client_cert_der_1024, *certSz); #else - fp = XFOPEN(cli1024Key, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(cli1024Key, "rb")) != XBADFILE); *keySz = (word32)XFREAD(key, 1, *keySz, fp); - XFCLOSE(fp); - AssertIntGT(*keySz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*keySz, 0); - fp = XFOPEN(cli1024Cert, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(cli1024Cert, "rb")) != XBADFILE); *certSz = (word32)XFREAD(cert, 1, *certSz, fp); - XFCLOSE(fp); - AssertIntGT(*certSz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*certSz, 0); #endif /* USE_CERT_BUFFERS_2048 */ } break; @@ -29419,35 +23148,45 @@ static int LoadPKCS7SignedDataCerts( #ifdef HAVE_ECC case ECC_TYPE: if (useIntermediateCertChain == 1) { - fp = XFOPEN(intCARootECC, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(intCARootECC, "rb")) != XBADFILE); *intCARootSz = (word32)XFREAD(intCARoot, 1, *intCARootSz, fp); - XFCLOSE(fp); - AssertIntGT(*intCARootSz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*intCARootSz, 0); - fp = XFOPEN(intCA1ECC, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(intCA1ECC, "rb")) != XBADFILE); *intCA1Sz = (word32)XFREAD(intCA1, 1, *intCA1Sz, fp); - XFCLOSE(fp); - AssertIntGT(*intCA1Sz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*intCA1Sz, 0); - fp = XFOPEN(intCA2ECC, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(intCA2ECC, "rb")) != XBADFILE); *intCA2Sz = (word32)XFREAD(intCA2, 1, *intCA2Sz, fp); - XFCLOSE(fp); - AssertIntGT(*intCA2Sz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*intCA2Sz, 0); - fp = XFOPEN(intServCertECC, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(intServCertECC, "rb")) != XBADFILE); *certSz = (word32)XFREAD(cert, 1, *certSz, fp); - XFCLOSE(fp); - AssertIntGT(*certSz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*certSz, 0); - fp = XFOPEN(intServKeyECC, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(intServKeyECC, "rb")) != XBADFILE); *keySz = (word32)XFREAD(key, 1, *keySz, fp); - XFCLOSE(fp); - AssertIntGT(*keySz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*keySz, 0); } else { #if defined(USE_CERT_BUFFERS_256) @@ -29456,17 +23195,21 @@ static int LoadPKCS7SignedDataCerts( XMEMCPY(key, ecc_clikey_der_256, *keySz); XMEMCPY(cert, cliecc_cert_der_256, *certSz); #else - fp = XFOPEN(cliEccKey, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(cliEccKey, "rb")) != XBADFILE); *keySz = (word32)XFREAD(key, 1, *keySz, fp); - XFCLOSE(fp); - AssertIntGT(*keySz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*keySz, 0); - fp = XFOPEN(cliEccCert, "rb"); - AssertNotNull(fp); + ExpectTrue((fp = XFOPEN(cliEccCert, "rb")) != XBADFILE); *certSz = (word32)XFREAD(cert, 1, *certSz, fp); - XFCLOSE(fp); - AssertIntGT(*certSz, 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntGT(*certSz, 0); #endif /* USE_CERT_BUFFERS_256 */ } break; @@ -29477,6 +23220,9 @@ static int LoadPKCS7SignedDataCerts( break; } + if (EXPECT_FAIL() && (ret == 0)) { + ret = BAD_FUNC_ARG; + } return ret; } @@ -29500,6 +23246,7 @@ static int CreatePKCS7SignedData(unsigned char* output, int outputSz, int useIntermediateCertChain, int pkAlgoType) { + EXPECT_DECLS; int ret = 0; WC_RNG rng; PKCS7* pkcs7 = NULL; @@ -29536,62 +23283,68 @@ static int CreatePKCS7SignedData(unsigned char* output, int outputSz, ret = LoadPKCS7SignedDataCerts(useIntermediateCertChain, pkAlgoType, intCARoot, &intCARootSz, intCA1, &intCA1Sz, intCA2, &intCA2Sz, cert, &certSz, key, &keySz); - AssertIntEQ(ret, 0); + ExpectIntEQ(ret, 0); XMEMSET(output, 0, outputSz); - AssertIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); if (useIntermediateCertChain == 1) { /* Add intermediate and root CA certs into SignedData Certs SET */ - AssertIntEQ(wc_PKCS7_AddCertificate(pkcs7, intCA2, intCA2Sz), 0); - AssertIntEQ(wc_PKCS7_AddCertificate(pkcs7, intCA1, intCA1Sz), 0); - AssertIntEQ(wc_PKCS7_AddCertificate(pkcs7, intCARoot, intCARootSz), 0); + ExpectIntEQ(wc_PKCS7_AddCertificate(pkcs7, intCA2, intCA2Sz), 0); + ExpectIntEQ(wc_PKCS7_AddCertificate(pkcs7, intCA1, intCA1Sz), 0); + ExpectIntEQ(wc_PKCS7_AddCertificate(pkcs7, intCARoot, intCARootSz), 0); } - pkcs7->content = data; - pkcs7->contentSz = dataSz; - pkcs7->privateKey = key; - pkcs7->privateKeySz = (word32)sizeof(key); - if (pkAlgoType == RSA_TYPE) { - pkcs7->encryptOID = RSAk; - } - else { - pkcs7->encryptOID = ECDSAk; - } -#ifdef NO_SHA - pkcs7->hashOID = SHA256h; -#else - pkcs7->hashOID = SHAh; -#endif - pkcs7->rng = &rng; - if (withAttribs) { - /* include a signed attribute */ - pkcs7->signedAttribs = attribs; - pkcs7->signedAttribsSz = (sizeof(attribs)/sizeof(PKCS7Attrib)); + if (pkcs7 != NULL) { + pkcs7->content = data; + pkcs7->contentSz = dataSz; + pkcs7->privateKey = key; + pkcs7->privateKeySz = (word32)sizeof(key); + if (pkAlgoType == RSA_TYPE) { + pkcs7->encryptOID = RSAk; + } + else { + pkcs7->encryptOID = ECDSAk; + } + #ifdef NO_SHA + pkcs7->hashOID = SHA256h; + #else + pkcs7->hashOID = SHAh; + #endif + pkcs7->rng = &rng; + if (withAttribs) { + /* include a signed attribute */ + pkcs7->signedAttribs = attribs; + pkcs7->signedAttribsSz = (sizeof(attribs)/sizeof(PKCS7Attrib)); + } } if (detachedSig) { - AssertIntEQ(wc_PKCS7_SetDetached(pkcs7, 1), 0); + ExpectIntEQ(wc_PKCS7_SetDetached(pkcs7, 1), 0); } outputSz = wc_PKCS7_EncodeSignedData(pkcs7, output, outputSz); - AssertIntGT(outputSz, 0); + ExpectIntGT(outputSz, 0); wc_PKCS7_Free(pkcs7); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - if (detachedSig) { + pkcs7 = NULL; + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + if (detachedSig && (pkcs7 != NULL)) { pkcs7->content = data; pkcs7->contentSz = dataSz; } - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); wc_PKCS7_Free(pkcs7); wc_FreeRng(&rng); + if (EXPECT_FAIL()) { + outputSz = 0; + } return outputSz; } #endif @@ -29599,20 +23352,18 @@ static int CreatePKCS7SignedData(unsigned char* output, int outputSz, /* * Testing wc_PKCS_VerifySignedData() */ -static int test_wc_PKCS7_VerifySignedData(void) +static int test_wc_PKCS7_VerifySignedData_RSA(void) { - int res = TEST_SKIPPED; -#if defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) - PKCS7* pkcs7; + EXPECT_DECLS; +#if defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) && !defined(NO_RSA) + PKCS7* pkcs7 = NULL; byte output[6000]; /* Large size needed for bundles with int CA certs */ word32 outputSz = sizeof(output); byte data[] = "Test data to encode."; byte badOut[1]; word32 badOutSz = 0; byte badContent[] = "This is different content than was signed"; - - int ret; - wc_HashAlg hash; + wc_HashAlg hash; #ifdef NO_SHA enum wc_HashType hashType = WC_HASH_TYPE_SHA256; #else @@ -29620,10 +23371,8 @@ static int test_wc_PKCS7_VerifySignedData(void) #endif byte hashBuf[WC_MAX_DIGEST_SIZE]; word32 hashSz = wc_HashGetDigestSize(hashType); - #ifndef NO_RSA PKCS7DecodedAttrib* decodedAttrib = NULL; - /* contentType OID (1.2.840.113549.1.9.3) */ static const byte contentTypeOid[] = { 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xF7, 0x0d, 0x01, 0x09, 0x03 }; @@ -29635,13 +23384,11 @@ static int test_wc_PKCS7_VerifySignedData(void) /* messageDigest OID (1.2.840.113549.1.9.4) */ static const byte messageDigestOid[] = { 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04 }; - #ifndef NO_ASN_TIME /* signingTime OID () */ static const byte signingTimeOid[] = { 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x05}; #endif - #if !defined(NO_ASN) && !defined(NO_ASN_TIME) int dateLength = 0; byte dateFormat; @@ -29655,227 +23402,252 @@ static int test_wc_PKCS7_VerifySignedData(void) #endif #endif /* !NO_ASN && !NO_ASN_TIME */ + XMEMSET(&hash, 0, sizeof(wc_HashAlg)); + /* Success test with RSA certs/key */ - AssertIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, - (word32)sizeof(data), - 0, 0, 0, RSA_TYPE)), 0); + ExpectIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, + (word32)sizeof(data), 0, 0, 0, RSA_TYPE)), 0); /* calculate hash for content, used later */ - ret = wc_HashInit(&hash, hashType); - if (ret == 0) { - ret = wc_HashUpdate(&hash, hashType, data, sizeof(data)); - if (ret == 0) { - ret = wc_HashFinal(&hash, hashType, hashBuf); - } - wc_HashFree(&hash, hashType); - } - AssertIntEQ(ret, 0); + ExpectIntEQ(wc_HashInit(&hash, hashType), 0); + ExpectIntEQ(wc_HashUpdate(&hash, hashType, data, sizeof(data)), 0); + ExpectIntEQ(wc_HashFinal(&hash, hashType, hashBuf), 0); + DoExpectIntEQ(wc_HashFree(&hash, hashType), 0); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); /* Check that decoded signed attributes are correct */ /* messageDigest should be first */ - decodedAttrib = pkcs7->decodedAttrib; - AssertNotNull(decodedAttrib); - AssertIntEQ(decodedAttrib->oidSz, (word32)sizeof(messageDigestOid)); - AssertIntEQ(XMEMCMP(decodedAttrib->oid, messageDigestOid, - decodedAttrib->oidSz), 0); + if (pkcs7 != NULL) { + decodedAttrib = pkcs7->decodedAttrib; + } + ExpectNotNull(decodedAttrib); + ExpectIntEQ(decodedAttrib->oidSz, (word32)sizeof(messageDigestOid)); + ExpectIntEQ(XMEMCMP(decodedAttrib->oid, messageDigestOid, + decodedAttrib->oidSz), 0); /* + 2 for OCTET STRING and length bytes */ - AssertIntEQ(decodedAttrib->valueSz, hashSz + 2); - AssertNotNull(decodedAttrib->value); - AssertIntEQ(XMEMCMP(decodedAttrib->value + 2, hashBuf, hashSz), 0); + ExpectIntEQ(decodedAttrib->valueSz, hashSz + 2); + ExpectNotNull(decodedAttrib->value); + ExpectIntEQ(XMEMCMP(decodedAttrib->value + 2, hashBuf, hashSz), 0); #ifndef NO_ASN_TIME /* signingTime should be second */ - decodedAttrib = decodedAttrib->next; - AssertNotNull(decodedAttrib); - AssertIntEQ(decodedAttrib->oidSz, (word32)sizeof(signingTimeOid)); - AssertIntEQ(XMEMCMP(decodedAttrib->oid, signingTimeOid, - decodedAttrib->oidSz), 0); + if (decodedAttrib != NULL) { + decodedAttrib = decodedAttrib->next; + } + ExpectNotNull(decodedAttrib); + ExpectIntEQ(decodedAttrib->oidSz, (word32)sizeof(signingTimeOid)); + ExpectIntEQ(XMEMCMP(decodedAttrib->oid, signingTimeOid, + decodedAttrib->oidSz), 0); - AssertIntGT(decodedAttrib->valueSz, 0); - AssertNotNull(decodedAttrib->value); + ExpectIntGT(decodedAttrib->valueSz, 0); + ExpectNotNull(decodedAttrib->value); #endif /* Verify signingTime if ASN and time are available */ #if !defined(NO_ASN) && !defined(NO_ASN_TIME) - AssertIntEQ(wc_GetDateInfo(decodedAttrib->value, decodedAttrib->valueSz, - &datePart, &dateFormat, &dateLength), 0); - AssertNotNull(datePart); - AssertIntGT(dateLength, 0); + ExpectIntEQ(wc_GetDateInfo(decodedAttrib->value, decodedAttrib->valueSz, + &datePart, &dateFormat, &dateLength), 0); + ExpectNotNull(datePart); + ExpectIntGT(dateLength, 0); XMEMSET(&timearg, 0, sizeof(timearg)); - AssertIntEQ(wc_GetDateAsCalendarTime(datePart, dateLength, dateFormat, - &timearg), 0); + ExpectIntEQ(wc_GetDateAsCalendarTime(datePart, dateLength, dateFormat, + &timearg), 0); /* Get current time and compare year/month/day against attribute value */ - AssertIntEQ(wc_GetTime(&now, sizeof(now)), 0); + ExpectIntEQ(wc_GetTime(&now, sizeof(now)), 0); nowTm = (struct tm*)XGMTIME((time_t*)&now, tmpTime); - AssertNotNull(nowTm); + ExpectNotNull(nowTm); - AssertIntEQ(timearg.tm_year, nowTm->tm_year); - AssertIntEQ(timearg.tm_mon, nowTm->tm_mon); - AssertIntEQ(timearg.tm_mday, nowTm->tm_mday); + ExpectIntEQ(timearg.tm_year, nowTm->tm_year); + ExpectIntEQ(timearg.tm_mon, nowTm->tm_mon); + ExpectIntEQ(timearg.tm_mday, nowTm->tm_mday); #endif /* !NO_ASN && !NO_ASN_TIME */ /* contentType should be third */ - decodedAttrib = decodedAttrib->next; - AssertNotNull(decodedAttrib); - AssertIntEQ(decodedAttrib->oidSz, (word32)sizeof(contentTypeOid)); - AssertIntEQ(XMEMCMP(decodedAttrib->oid, contentTypeOid, - decodedAttrib->oidSz), 0); - AssertIntEQ(decodedAttrib->valueSz, (int)sizeof(dataType) + 2); - AssertNotNull(decodedAttrib->value); - AssertIntEQ(XMEMCMP(decodedAttrib->value + 2, dataType, - sizeof(dataType)), 0); + if (decodedAttrib != NULL) { + decodedAttrib = decodedAttrib->next; + } + ExpectNotNull(decodedAttrib); + ExpectIntEQ(decodedAttrib->oidSz, (word32)sizeof(contentTypeOid)); + ExpectIntEQ(XMEMCMP(decodedAttrib->oid, contentTypeOid, + decodedAttrib->oidSz), 0); + ExpectIntEQ(decodedAttrib->valueSz, (int)sizeof(dataType) + 2); + ExpectNotNull(decodedAttrib->value); + ExpectIntEQ(XMEMCMP(decodedAttrib->value + 2, dataType, sizeof(dataType)), + 0); #endif /* !NO_RSA */ -#ifdef HAVE_ECC - #ifndef NO_RSA - wc_PKCS7_Free(pkcs7); - #endif - - /* Success test with ECC certs/key */ - outputSz = sizeof(output); - XMEMSET(output, 0, outputSz); - AssertIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, - (word32)sizeof(data), - 0, 0, 0, ECC_TYPE)), 0); - - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); -#endif /* HAVE_ECC */ - /* Test bad args. */ -#if !defined(NO_RSA) || defined(HAVE_ECC) - AssertIntEQ(wc_PKCS7_VerifySignedData(NULL, output, outputSz), + ExpectIntEQ(wc_PKCS7_VerifySignedData(NULL, output, outputSz), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, NULL, outputSz), + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, NULL, outputSz), BAD_FUNC_ARG); #ifndef NO_PKCS7_STREAM /* can pass in 0 buffer length with streaming API */ - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, badOut, + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, badOut, badOutSz), WC_PKCS7_WANT_READ_E); #else - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, badOut, + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, badOut, badOutSz), BAD_FUNC_ARG); #endif wc_PKCS7_Free(pkcs7); -#endif /* !NO_RSA || HAVE_ECC */ + pkcs7 = NULL; - /* Invalid content should error, use detached signature so we can - * easily change content */ #ifndef NO_RSA /* Try RSA certs/key/sig first */ outputSz = sizeof(output); XMEMSET(output, 0, outputSz); - AssertIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, + ExpectIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, (word32)sizeof(data), 1, 1, 0, RSA_TYPE)), 0); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - pkcs7->content = badContent; - pkcs7->contentSz = sizeof(badContent); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + if (pkcs7 != NULL) { + pkcs7->content = badContent; + pkcs7->contentSz = sizeof(badContent); + } + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), SIG_VERIFY_E); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; /* Test success case with detached signature and valid content */ - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - pkcs7->content = data; - pkcs7->contentSz = sizeof(data); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + if (pkcs7 != NULL) { + pkcs7->content = data; + pkcs7->contentSz = sizeof(data); + } + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; /* verify using pre-computed content digest only (no content) */ { - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, NULL, 0), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, - output, outputSz, - NULL, 0), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, + output, outputSz, NULL, 0), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; } #endif /* !NO_RSA */ -#ifdef HAVE_ECC - /* Try ECC certs/key/sig next */ - outputSz = sizeof(output); - XMEMSET(output, 0, outputSz); - AssertIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, - (word32)sizeof(data), - 1, 1, 0, ECC_TYPE)), 0); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - pkcs7->content = badContent; - pkcs7->contentSz = sizeof(badContent); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), - SIG_VERIFY_E); - wc_PKCS7_Free(pkcs7); - - /* Test success case with detached signature and valid content */ - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - pkcs7->content = data; - pkcs7->contentSz = sizeof(data); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); - wc_PKCS7_Free(pkcs7); - - /* verify using pre-computed content digest only (no content) */ - { - /* calculate hash for content */ - ret = wc_HashInit(&hash, hashType); - if (ret == 0) { - ret = wc_HashUpdate(&hash, hashType, data, sizeof(data)); - if (ret == 0) { - ret = wc_HashFinal(&hash, hashType, hashBuf); - } - wc_HashFree(&hash, hashType); - } - AssertIntEQ(ret, 0); - - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, NULL, 0), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, - output, outputSz, - NULL, 0), 0); - wc_PKCS7_Free(pkcs7); - } -#endif /* Test verify on signedData containing intermediate/root CA certs */ #ifndef NO_RSA outputSz = sizeof(output); XMEMSET(output, 0, outputSz); - AssertIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, + ExpectIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, (word32)sizeof(data), 0, 0, 1, RSA_TYPE)), 0); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; #endif /* !NO_RSA */ -#ifdef HAVE_ECC +#endif + return EXPECT_RESULT(); +} /* END test_wc_PKCS7_VerifySignedData()_RSA */ + +/* + * Testing wc_PKCS_VerifySignedData() + */ +static int test_wc_PKCS7_VerifySignedData_ECC(void) +{ + EXPECT_DECLS; +#if defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) && defined(HAVE_ECC) + PKCS7* pkcs7 = NULL; + byte output[6000]; /* Large size needed for bundles with int CA certs */ + word32 outputSz = sizeof(output); + byte data[] = "Test data to encode."; + byte badContent[] = "This is different content than was signed"; + wc_HashAlg hash; +#ifdef NO_SHA + enum wc_HashType hashType = WC_HASH_TYPE_SHA256; +#else + enum wc_HashType hashType = WC_HASH_TYPE_SHA; +#endif + byte hashBuf[WC_MAX_DIGEST_SIZE]; + word32 hashSz = wc_HashGetDigestSize(hashType); + + XMEMSET(&hash, 0, sizeof(wc_HashAlg)); + + /* Success test with ECC certs/key */ outputSz = sizeof(output); XMEMSET(output, 0, outputSz); - AssertIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, - (word32)sizeof(data), - 0, 0, 1, ECC_TYPE)), 0); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); - wc_PKCS7_Free(pkcs7); -#endif /* HAVE_ECC */ + ExpectIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, + (word32)sizeof(data), 0, 0, 0, ECC_TYPE)), 0); - res = TEST_RES_CHECK(1); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); + wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; + + /* Invalid content should error, use detached signature so we can + * easily change content */ + outputSz = sizeof(output); + XMEMSET(output, 0, outputSz); + ExpectIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, + (word32)sizeof(data), 1, 1, 0, ECC_TYPE)), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + if (pkcs7 != NULL) { + pkcs7->content = badContent; + pkcs7->contentSz = sizeof(badContent); + } + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), + SIG_VERIFY_E); + wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; + + /* Test success case with detached signature and valid content */ + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + if (pkcs7 != NULL) { + pkcs7->content = data; + pkcs7->contentSz = sizeof(data); + } + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); + wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; + + /* verify using pre-computed content digest only (no content) */ + { + /* calculate hash for content */ + ExpectIntEQ(wc_HashInit(&hash, hashType), 0); + ExpectIntEQ(wc_HashUpdate(&hash, hashType, data, sizeof(data)), 0); + ExpectIntEQ(wc_HashFinal(&hash, hashType, hashBuf), 0); + ExpectIntEQ(wc_HashFree(&hash, hashType), 0); + + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData_ex(pkcs7, hashBuf, hashSz, + output, outputSz, NULL, 0), 0); + wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; + } + + /* Test verify on signedData containing intermediate/root CA certs */ + outputSz = sizeof(output); + XMEMSET(output, 0, outputSz); + ExpectIntGT((outputSz = CreatePKCS7SignedData(output, outputSz, data, + (word32)sizeof(data), 0, 0, 1, ECC_TYPE)), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, output, outputSz), 0); + wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; #endif - return res; -} /* END test_wc_PKCS7_VerifySignedData() */ + return EXPECT_RESULT(); +} /* END test_wc_PKCS7_VerifySignedData_ECC() */ #if defined(HAVE_PKCS7) && !defined(NO_AES) && defined(HAVE_AES_CBC) && \ @@ -29986,9 +23758,9 @@ static int myCEKwrapFunc(PKCS7* pkcs7, byte* cek, word32 cekSz, byte* keyId, */ static int test_wc_PKCS7_EncodeDecodeEnvelopedData(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) - PKCS7* pkcs7; + PKCS7* pkcs7 = NULL; #ifdef ECC_TIMING_RESISTANT WC_RNG rng; #endif @@ -29999,7 +23771,6 @@ static int test_wc_PKCS7_EncodeDecodeEnvelopedData(void) int testSz = 0; #if !defined(NO_RSA) && (!defined(NO_AES) || (!defined(NO_SHA) || \ !defined(NO_SHA256) || defined(WOLFSSL_SHA512))) - byte* rsaCert = NULL; byte* rsaPrivKey = NULL; word32 rsaCertSz; @@ -30014,7 +23785,6 @@ static int test_wc_PKCS7_EncodeDecodeEnvelopedData(void) #endif #if defined(HAVE_ECC) && (!defined(NO_AES) || (!defined(NO_SHA) ||\ !defined(NO_SHA256) || defined(WOLFSSL_SHA512))) - byte* eccCert = NULL; byte* eccPrivKey = NULL; word32 eccCertSz; @@ -30029,8 +23799,12 @@ static int test_wc_PKCS7_EncodeDecodeEnvelopedData(void) byte decoded[sizeof(input)/sizeof(char)]; int decodedSz = 0; #ifndef NO_FILESYSTEM - XFILE certFile; - XFILE keyFile; + XFILE certFile = XBADFILE; + XFILE keyFile = XBADFILE; +#endif + +#ifdef ECC_TIMING_RESISTANT + XMEMSET(&rng, 0, sizeof(WC_RNG)); #endif #if !defined(NO_RSA) && (!defined(NO_AES) || (!defined(NO_SHA) ||\ @@ -30039,43 +23813,51 @@ static int test_wc_PKCS7_EncodeDecodeEnvelopedData(void) #if defined(USE_CERT_BUFFERS_1024) rsaCertSz = (word32)sizeof_client_cert_der_1024; /* Allocate buffer space. */ - AssertNotNull(rsaCert = - (byte*)XMALLOC(rsaCertSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); + ExpectNotNull(rsaCert = (byte*)XMALLOC(rsaCertSz, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); /* Init buffer. */ - XMEMCPY(rsaCert, client_cert_der_1024, rsaCertSz); + if (rsaCert != NULL) { + XMEMCPY(rsaCert, client_cert_der_1024, rsaCertSz); + } rsaPrivKeySz = (word32)sizeof_client_key_der_1024; - AssertNotNull(rsaPrivKey = (byte*)XMALLOC(rsaPrivKeySz, HEAP_HINT, - DYNAMIC_TYPE_TMP_BUFFER)); - XMEMCPY(rsaPrivKey, client_key_der_1024, rsaPrivKeySz); - + ExpectNotNull(rsaPrivKey = (byte*)XMALLOC(rsaPrivKeySz, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + if (rsaPrivKey != NULL) { + XMEMCPY(rsaPrivKey, client_key_der_1024, rsaPrivKeySz); + } #elif defined(USE_CERT_BUFFERS_2048) rsaCertSz = (word32)sizeof_client_cert_der_2048; /* Allocate buffer */ - AssertNotNull(rsaCert = - (byte*)XMALLOC(rsaCertSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); + ExpectNotNull(rsaCert = (byte*)XMALLOC(rsaCertSz, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); /* Init buffer. */ - XMEMCPY(rsaCert, client_cert_der_2048, rsaCertSz); + if (rsaCert != NULL) { + XMEMCPY(rsaCert, client_cert_der_2048, rsaCertSz); + } rsaPrivKeySz = (word32)sizeof_client_key_der_2048; - AssertNotNull(rsaPrivKey = (byte*)XMALLOC(rsaPrivKeySz, HEAP_HINT, - DYNAMIC_TYPE_TMP_BUFFER)); - XMEMCPY(rsaPrivKey, client_key_der_2048, rsaPrivKeySz); - + ExpectNotNull(rsaPrivKey = (byte*)XMALLOC(rsaPrivKeySz, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + if (rsaPrivKey != NULL) { + XMEMCPY(rsaPrivKey, client_key_der_2048, rsaPrivKeySz); + } #else /* File system. */ - certFile = XFOPEN(rsaClientCert, "rb"); - AssertTrue(certFile != XBADFILE); + ExpectTrue((certFile = XFOPEN(rsaClientCert, "rb")) != XBADFILE); rsaCertSz = (word32)FOURK_BUF; - AssertNotNull(rsaCert = - (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); - rsaCertSz = (word32)XFREAD(rsaCert, 1, rsaCertSz, certFile); - XFCLOSE(certFile); - keyFile = XFOPEN(rsaClientKey, "rb"); - AssertTrue(keyFile != XBADFILE); - AssertNotNull(rsaPrivKey = (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, - DYNAMIC_TYPE_TMP_BUFFER)); + ExpectNotNull(rsaCert = (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + ExpectTrue((rsaCertSz = (word32)XFREAD(rsaCert, 1, rsaCertSz, + certFile)) > 0); + if (certFile != XBADFILE) + XFCLOSE(certFile); + ExpectTrue((keyFile = XFOPEN(rsaClientKey, "rb")) != XBADFILE); + ExpectNotNull(rsaPrivKey = (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); rsaPrivKeySz = (word32)FOURK_BUF; - rsaPrivKeySz = (word32)XFREAD(rsaPrivKey, 1, rsaPrivKeySz, keyFile); - XFCLOSE(keyFile); + ExpectTrue((rsaPrivKeySz = (word32)XFREAD(rsaPrivKey, 1, rsaPrivKeySz, + keyFile)) > 0); + if (keyFile != XBADFILE) + XFCLOSE(keyFile); #endif /* USE_CERT_BUFFERS */ #endif /* NO_RSA */ @@ -30084,30 +23866,38 @@ static int test_wc_PKCS7_EncodeDecodeEnvelopedData(void) !defined(NO_SHA256) || defined(WOLFSSL_SHA512))) #ifdef USE_CERT_BUFFERS_256 - AssertNotNull(eccCert = - (byte*)XMALLOC(TWOK_BUF, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); + ExpectNotNull(eccCert = (byte*)XMALLOC(TWOK_BUF, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); /* Init buffer. */ eccCertSz = (word32)sizeof_cliecc_cert_der_256; - XMEMCPY(eccCert, cliecc_cert_der_256, eccCertSz); - AssertNotNull(eccPrivKey = (byte*)XMALLOC(TWOK_BUF, HEAP_HINT, - DYNAMIC_TYPE_TMP_BUFFER)); + if (eccCert != NULL) { + XMEMCPY(eccCert, cliecc_cert_der_256, eccCertSz); + } + ExpectNotNull(eccPrivKey = (byte*)XMALLOC(TWOK_BUF, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); eccPrivKeySz = (word32)sizeof_ecc_clikey_der_256; - XMEMCPY(eccPrivKey, ecc_clikey_der_256, eccPrivKeySz); + if (eccPrivKey != NULL) { + XMEMCPY(eccPrivKey, ecc_clikey_der_256, eccPrivKeySz); + } #else /* File system. */ - certFile = XFOPEN(eccClientCert, "rb"); - AssertTrue(certFile != XBADFILE); + ExpectTrue((certFile = XFOPEN(eccClientCert, "rb")) != XBADFILE); eccCertSz = (word32)FOURK_BUF; - AssertNotNull(eccCert = - (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); - eccCertSz = (word32)XFREAD(eccCert, 1, eccCertSz, certFile); - XFCLOSE(certFile); - keyFile = XFOPEN(eccClientKey, "rb"); - AssertTrue(keyFile != XBADFILE); + ExpectNotNull(eccCert = (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + ExpectTrue((eccCertSz = (word32)XFREAD(eccCert, 1, eccCertSz, + certFile)) > 0); + if (certFile != XBADFILE) { + XFCLOSE(certFile); + } + ExpectTrue((keyFile = XFOPEN(eccClientKey, "rb")) != XBADFILE); eccPrivKeySz = (word32)FOURK_BUF; - AssertNotNull(eccPrivKey = (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, - DYNAMIC_TYPE_TMP_BUFFER)); - eccPrivKeySz = (word32)XFREAD(eccPrivKey, 1, eccPrivKeySz, keyFile); - XFCLOSE(keyFile); + ExpectNotNull(eccPrivKey = (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + ExpectTrue((eccPrivKeySz = (word32)XFREAD(eccPrivKey, 1, eccPrivKeySz, + keyFile)) > 0); + if (keyFile != XBADFILE) { + XFCLOSE(keyFile); + } #endif /* USE_CERT_BUFFERS_256 */ #endif /* END HAVE_ECC */ @@ -30144,111 +23934,133 @@ static int test_wc_PKCS7_EncodeDecodeEnvelopedData(void) #if defined(HAVE_ECC) #if !defined(NO_AES) && defined(HAVE_AES_CBC) #if !defined(NO_SHA) && !defined(NO_AES_128) - {(byte*)input, (word32)(sizeof(input)/sizeof(char)), DATA, AES128CBCb, - AES128_WRAP, dhSinglePass_stdDH_sha1kdf_scheme, eccCert, - eccCertSz, eccPrivKey, eccPrivKeySz}, + {(byte*)input, (word32)(sizeof(input)/sizeof(char)), DATA, + AES128CBCb, AES128_WRAP, dhSinglePass_stdDH_sha1kdf_scheme, + eccCert, eccCertSz, eccPrivKey, eccPrivKeySz}, #endif #if !defined(NO_SHA256) && !defined(NO_AES_256) - {(byte*)input, (word32)(sizeof(input)/sizeof(char)), DATA, AES256CBCb, - AES256_WRAP, dhSinglePass_stdDH_sha256kdf_scheme, eccCert, - eccCertSz, eccPrivKey, eccPrivKeySz}, + {(byte*)input, (word32)(sizeof(input)/sizeof(char)), DATA, + AES256CBCb, AES256_WRAP, dhSinglePass_stdDH_sha256kdf_scheme, + eccCert, eccCertSz, eccPrivKey, eccPrivKeySz}, #endif #if defined(WOLFSSL_SHA512) && !defined(NO_AES_256) - {(byte*)input, (word32)(sizeof(input)/sizeof(char)), DATA, AES256CBCb, - AES256_WRAP, dhSinglePass_stdDH_sha512kdf_scheme, eccCert, - eccCertSz, eccPrivKey, eccPrivKeySz}, + {(byte*)input, (word32)(sizeof(input)/sizeof(char)), DATA, + AES256CBCb, AES256_WRAP, dhSinglePass_stdDH_sha512kdf_scheme, + eccCert, eccCertSz, eccPrivKey, eccPrivKeySz}, #endif #endif /* NO_AES && HAVE_AES_CBC*/ #endif /* END HAVE_ECC */ }; /* END pkcs7EnvelopedVector */ #ifdef ECC_TIMING_RESISTANT - AssertIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_InitRng(&rng), 0); #endif - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, testDevId), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, testDevId), 0); testSz = (int)sizeof(testVectors)/(int)sizeof(pkcs7EnvelopedVector); for (i = 0; i < testSz; i++) { - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, (testVectors + i)->cert, + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, (testVectors + i)->cert, (word32)(testVectors + i)->certSz), 0); + if (pkcs7 != NULL) { #ifdef ECC_TIMING_RESISTANT - pkcs7->rng = &rng; + pkcs7->rng = &rng; #endif - pkcs7->content = (byte*)(testVectors + i)->content; - pkcs7->contentSz = (testVectors + i)->contentSz; - pkcs7->contentOID = (testVectors + i)->contentOID; - pkcs7->encryptOID = (testVectors + i)->encryptOID; - pkcs7->keyWrapOID = (testVectors + i)->keyWrapOID; - pkcs7->keyAgreeOID = (testVectors + i)->keyAgreeOID; - pkcs7->privateKey = (testVectors + i)->privateKey; - pkcs7->privateKeySz = (testVectors + i)->privateKeySz; + pkcs7->content = (byte*)(testVectors + i)->content; + pkcs7->contentSz = (testVectors + i)->contentSz; + pkcs7->contentOID = (testVectors + i)->contentOID; + pkcs7->encryptOID = (testVectors + i)->encryptOID; + pkcs7->keyWrapOID = (testVectors + i)->keyWrapOID; + pkcs7->keyAgreeOID = (testVectors + i)->keyAgreeOID; + pkcs7->privateKey = (testVectors + i)->privateKey; + pkcs7->privateKeySz = (testVectors + i)->privateKeySz; + } - AssertIntGE(wc_PKCS7_EncodeEnvelopedData(pkcs7, output, - (word32)sizeof(output)), 0); + ExpectIntGE(wc_PKCS7_EncodeEnvelopedData(pkcs7, output, + (word32)sizeof(output)), 0); decodedSz = wc_PKCS7_DecodeEnvelopedData(pkcs7, output, - (word32)sizeof(output), decoded, (word32)sizeof(decoded)); - AssertIntGE(decodedSz, 0); + (word32)sizeof(output), decoded, (word32)sizeof(decoded)); + ExpectIntGE(decodedSz, 0); /* Verify the size of each buffer. */ - AssertIntEQ((word32)sizeof(input)/sizeof(char), decodedSz); + ExpectIntEQ((word32)sizeof(input)/sizeof(char), decodedSz); /* Don't free the last time through the loop. */ if (i < testSz - 1) { wc_PKCS7_Free(pkcs7); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + pkcs7 = NULL; + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); } } /* END test loop. */ } /* Test bad args. */ - AssertIntEQ(wc_PKCS7_EncodeEnvelopedData(NULL, output, + ExpectIntEQ(wc_PKCS7_EncodeEnvelopedData(NULL, output, (word32)sizeof(output)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeEnvelopedData(pkcs7, NULL, + ExpectIntEQ(wc_PKCS7_EncodeEnvelopedData(pkcs7, NULL, (word32)sizeof(output)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeEnvelopedData(pkcs7, output, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_EncodeEnvelopedData(pkcs7, output, 0), BAD_FUNC_ARG); /* Decode. */ - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(NULL, output, - (word32)sizeof(output), decoded, (word32)sizeof(decoded)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(NULL, output, + (word32)sizeof(output), decoded, (word32)sizeof(decoded)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, (word32)sizeof(output), NULL, (word32)sizeof(decoded)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, (word32)sizeof(output), decoded, 0), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, NULL, - (word32)sizeof(output), decoded, (word32)sizeof(decoded)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, 0, decoded, + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, NULL, + (word32)sizeof(output), decoded, (word32)sizeof(decoded)), + BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, 0, decoded, (word32)sizeof(decoded)), BAD_FUNC_ARG); /* Should get a return of BAD_FUNC_ARG with structure data. Order matters.*/ #if defined(HAVE_ECC) && !defined(NO_AES) && defined(HAVE_AES_CBC) /* only a failure for KARI test cases */ - tempWrd32 = pkcs7->singleCertSz; - pkcs7->singleCertSz = 0; - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, - (word32)sizeof(output), decoded, (word32)sizeof(decoded)), BAD_FUNC_ARG); - pkcs7->singleCertSz = tempWrd32; + if (pkcs7 != NULL) { + tempWrd32 = pkcs7->singleCertSz; + pkcs7->singleCertSz = 0; + } + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, + (word32)sizeof(output), decoded, (word32)sizeof(decoded)), + BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->singleCertSz = tempWrd32; - tmpBytePtr = pkcs7->singleCert; - pkcs7->singleCert = NULL; - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, - (word32)sizeof(output), decoded, (word32)sizeof(decoded)), BAD_FUNC_ARG); - pkcs7->singleCert = tmpBytePtr; + tmpBytePtr = pkcs7->singleCert; + pkcs7->singleCert = NULL; + } + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, + (word32)sizeof(output), decoded, (word32)sizeof(decoded)), + BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->singleCert = tmpBytePtr; + } #endif - tempWrd32 = pkcs7->privateKeySz; - pkcs7->privateKeySz = 0; + if (pkcs7 != NULL) { + tempWrd32 = pkcs7->privateKeySz; + pkcs7->privateKeySz = 0; + } - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, - (word32)sizeof(output), decoded, (word32)sizeof(decoded)), BAD_FUNC_ARG); - pkcs7->privateKeySz = tempWrd32; + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, + (word32)sizeof(output), decoded, (word32)sizeof(decoded)), + BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->privateKeySz = tempWrd32; - tmpBytePtr = pkcs7->privateKey; - pkcs7->privateKey = NULL; - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, - (word32)sizeof(output), decoded, (word32)sizeof(decoded)), BAD_FUNC_ARG); - pkcs7->privateKey = tmpBytePtr; + tmpBytePtr = pkcs7->privateKey; + pkcs7->privateKey = NULL; + } + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, output, + (word32)sizeof(output), decoded, (word32)sizeof(decoded)), + BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->privateKey = tmpBytePtr; + } wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; #if !defined(NO_AES) && defined(HAVE_AES_CBC) && !defined(NO_AES_256) /* test of decrypt callback with KEKRI enveloped data */ @@ -30256,86 +24068,84 @@ static int test_wc_PKCS7_EncodeDecodeEnvelopedData(void) int envelopedSz; const byte keyId[] = { 0x00 }; - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - pkcs7->content = (byte*)input; - pkcs7->contentSz = (word32)(sizeof(input)/sizeof(char)); - pkcs7->contentOID = DATA; - pkcs7->encryptOID = AES256CBCb; - AssertIntGT(wc_PKCS7_AddRecipient_KEKRI(pkcs7, AES256_WRAP, + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + if (pkcs7 != NULL) { + pkcs7->content = (byte*)input; + pkcs7->contentSz = (word32)(sizeof(input)/sizeof(char)); + pkcs7->contentOID = DATA; + pkcs7->encryptOID = AES256CBCb; + } + ExpectIntGT(wc_PKCS7_AddRecipient_KEKRI(pkcs7, AES256_WRAP, (byte*)defKey, sizeof(defKey), (byte*)keyId, sizeof(keyId), NULL, NULL, 0, NULL, 0, 0), 0); - AssertIntEQ(wc_PKCS7_SetSignerIdentifierType(pkcs7, CMS_SKID), 0); - AssertIntGT((envelopedSz = wc_PKCS7_EncodeEnvelopedData(pkcs7, output, + ExpectIntEQ(wc_PKCS7_SetSignerIdentifierType(pkcs7, CMS_SKID), 0); + ExpectIntGT((envelopedSz = wc_PKCS7_EncodeEnvelopedData(pkcs7, output, (word32)sizeof(output))), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; /* decode envelopedData */ - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_SetWrapCEKCb(pkcs7, myCEKwrapFunc), 0); - AssertIntEQ(wc_PKCS7_SetDecodeEncryptedCb(pkcs7, myDecryptionFunc), 0); - AssertIntGT((decodedSz = wc_PKCS7_DecodeEnvelopedData(pkcs7, output, + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_SetWrapCEKCb(pkcs7, myCEKwrapFunc), 0); + ExpectIntEQ(wc_PKCS7_SetDecodeEncryptedCb(pkcs7, myDecryptionFunc), 0); + ExpectIntGT((decodedSz = wc_PKCS7_DecodeEnvelopedData(pkcs7, output, envelopedSz, decoded, sizeof(decoded))), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; } #endif /* !NO_AES && !NO_AES_256 */ #ifndef NO_RSA - if (rsaCert) { - XFREE(rsaCert, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); - } - if (rsaPrivKey) { - XFREE(rsaPrivKey, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); - } -#endif /*NO_RSA */ + XFREE(rsaCert, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(rsaPrivKey, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); +#endif /* NO_RSA */ #ifdef HAVE_ECC - if (eccCert) { - XFREE(eccCert, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); - } - if (eccPrivKey) { - XFREE(eccPrivKey, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); - } + XFREE(eccCert, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(eccPrivKey, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); #endif /* HAVE_ECC */ #ifdef ECC_TIMING_RESISTANT - wc_FreeRng(&rng); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif #if defined(USE_CERT_BUFFERS_2048) && !defined(NO_DES3) && \ !defined(NO_RSA) && !defined(NO_SHA) { byte out[7]; - byte *cms; + byte *cms = NULL; word32 cmsSz; - XFILE cmsFile; + XFILE cmsFile = XBADFILE; XMEMSET(out, 0, sizeof(out)); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - cmsFile = XFOPEN("./certs/test/ktri-keyid-cms.msg", "rb"); - AssertTrue(cmsFile != XBADFILE); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectTrue((cmsFile = XFOPEN("./certs/test/ktri-keyid-cms.msg", "rb")) + != XBADFILE); cmsSz = (word32)FOURK_BUF; - AssertNotNull(cms = - (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); - cmsSz = (word32)XFREAD(cms, 1, cmsSz, cmsFile); - XFCLOSE(cmsFile); + ExpectNotNull(cms = (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + ExpectTrue((cmsSz = (word32)XFREAD(cms, 1, cmsSz, cmsFile)) > 0); + if (cmsFile != XBADFILE) + XFCLOSE(cmsFile); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, (byte*)client_cert_der_2048, - sizeof_client_cert_der_2048), 0); - pkcs7->privateKey = (byte*)client_key_der_2048; - pkcs7->privateKeySz = sizeof_client_key_der_2048; - AssertIntLT(wc_PKCS7_DecodeEnvelopedData(pkcs7, cms, cmsSz, out, - 2), 0); - AssertIntGT(wc_PKCS7_DecodeEnvelopedData(pkcs7, cms, cmsSz, out, - sizeof(out)), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, (byte*)client_cert_der_2048, + sizeof_client_cert_der_2048), 0); + if (pkcs7 != NULL) { + pkcs7->privateKey = (byte*)client_key_der_2048; + pkcs7->privateKeySz = sizeof_client_key_der_2048; + } + ExpectIntLT(wc_PKCS7_DecodeEnvelopedData(pkcs7, cms, cmsSz, out, + 2), 0); + ExpectIntGT(wc_PKCS7_DecodeEnvelopedData(pkcs7, cms, cmsSz, out, + sizeof(out)), 0); XFREE(cms, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); - AssertIntEQ(XMEMCMP(out, "test", 4), 0); + ExpectIntEQ(XMEMCMP(out, "test", 4), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; } #endif /* USE_CERT_BUFFERS_2048 && !NO_DES3 && !NO_RSA && !NO_SHA */ - - res = TEST_RES_CHECK(1); #endif /* HAVE_PKCS7 */ - return res; -} /* END test_wc_PKCS7_EncodeEnvelopedData() */ + return EXPECT_RESULT(); +} /* END test_wc_PKCS7_EncodeDecodeEnvelopedData() */ /* @@ -30343,7 +24153,7 @@ static int test_wc_PKCS7_EncodeDecodeEnvelopedData(void) */ static int test_wc_PKCS7_EncodeEncryptedData(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) && !defined(NO_PKCS7_ENCRYPTED_DATA) PKCS7* pkcs7 = NULL; byte* tmpBytePtr = NULL; @@ -30352,15 +24162,13 @@ static int test_wc_PKCS7_EncodeEncryptedData(void) word32 tmpWrd32 = 0; int tmpInt = 0; int decodedSz; - int encryptedSz; + int encryptedSz = 0; int testSz; int i; - const byte data[] = { /* Hello World */ 0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f, 0x72,0x6c,0x64 }; - #ifndef NO_DES3 byte desKey[] = { 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef @@ -30371,7 +24179,6 @@ static int test_wc_PKCS7_EncodeEncryptedData(void) 0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 }; #endif - #if !defined(NO_AES) && defined(HAVE_AES_CBC) #ifndef NO_AES_128 byte aes128Key[] = { @@ -30424,95 +24231,111 @@ static int test_wc_PKCS7_EncodeEncryptedData(void) testSz = sizeof(testVectors) / sizeof(pkcs7EncryptedVector); for (i = 0; i < testSz; i++) { - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, testDevId), 0); - pkcs7->content = (byte*)testVectors[i].content; - pkcs7->contentSz = testVectors[i].contentSz; - pkcs7->contentOID = testVectors[i].contentOID; - pkcs7->encryptOID = testVectors[i].encryptOID; - pkcs7->encryptionKey = testVectors[i].encryptionKey; - pkcs7->encryptionKeySz = testVectors[i].encryptionKeySz; - pkcs7->heap = HEAP_HINT; + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, testDevId), 0); + if (pkcs7 != NULL) { + pkcs7->content = (byte*)testVectors[i].content; + pkcs7->contentSz = testVectors[i].contentSz; + pkcs7->contentOID = testVectors[i].contentOID; + pkcs7->encryptOID = testVectors[i].encryptOID; + pkcs7->encryptionKey = testVectors[i].encryptionKey; + pkcs7->encryptionKeySz = testVectors[i].encryptionKeySz; + pkcs7->heap = HEAP_HINT; + } /* encode encryptedData */ - encryptedSz = wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, - sizeof(encrypted)); - AssertIntGT(encryptedSz, 0); + ExpectIntGT(encryptedSz = wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, + sizeof(encrypted)), 0); /* Decode encryptedData */ - decodedSz = wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, encryptedSz, - decoded, sizeof(decoded)); + ExpectIntGT(decodedSz = wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, + encryptedSz, decoded, sizeof(decoded)), 0); - AssertIntEQ(XMEMCMP(decoded, data, decodedSz), 0); + ExpectIntEQ(XMEMCMP(decoded, data, decodedSz), 0); /* Keep values for last itr. */ if (i < testSz - 1) { wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; } } if (pkcs7 == NULL || testSz == 0) { - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, testDevId), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, testDevId), 0); } - AssertIntEQ(wc_PKCS7_EncodeEncryptedData(NULL, encrypted, - sizeof(encrypted)),BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, NULL, - sizeof(encrypted)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, - 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_EncodeEncryptedData(NULL, encrypted, + sizeof(encrypted)),BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, NULL, + sizeof(encrypted)), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, + 0), BAD_FUNC_ARG); /* Testing the struct. */ - tmpBytePtr = pkcs7->content; - pkcs7->content = NULL; - AssertIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, - sizeof(encrypted)), BAD_FUNC_ARG); - pkcs7->content = tmpBytePtr; - tmpWrd32 = pkcs7->contentSz; - pkcs7->contentSz = 0; - AssertIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, - sizeof(encrypted)), BAD_FUNC_ARG); - pkcs7->contentSz = tmpWrd32; - tmpInt = pkcs7->encryptOID; - pkcs7->encryptOID = 0; - AssertIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, - sizeof(encrypted)), BAD_FUNC_ARG); - pkcs7->encryptOID = tmpInt; - tmpBytePtr = pkcs7->encryptionKey; - pkcs7->encryptionKey = NULL; - AssertIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, - sizeof(encrypted)), BAD_FUNC_ARG); - pkcs7->encryptionKey = tmpBytePtr; - tmpWrd32 = pkcs7->encryptionKeySz; - pkcs7->encryptionKeySz = 0; - AssertIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, - sizeof(encrypted)), BAD_FUNC_ARG); - pkcs7->encryptionKeySz = tmpWrd32; + if (pkcs7 != NULL) { + tmpBytePtr = pkcs7->content; + pkcs7->content = NULL; + } + ExpectIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, + sizeof(encrypted)), BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->content = tmpBytePtr; + tmpWrd32 = pkcs7->contentSz; + pkcs7->contentSz = 0; + } + ExpectIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, + sizeof(encrypted)), BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->contentSz = tmpWrd32; + tmpInt = pkcs7->encryptOID; + pkcs7->encryptOID = 0; + } + ExpectIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, + sizeof(encrypted)), BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->encryptOID = tmpInt; + tmpBytePtr = pkcs7->encryptionKey; + pkcs7->encryptionKey = NULL; + } + ExpectIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, + sizeof(encrypted)), BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->encryptionKey = tmpBytePtr; + tmpWrd32 = pkcs7->encryptionKeySz; + pkcs7->encryptionKeySz = 0; + } + ExpectIntEQ(wc_PKCS7_EncodeEncryptedData(pkcs7, encrypted, + sizeof(encrypted)), BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->encryptionKeySz = tmpWrd32; + } - AssertIntEQ(wc_PKCS7_DecodeEncryptedData(NULL, encrypted, encryptedSz, - decoded, sizeof(decoded)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, NULL, encryptedSz, - decoded, sizeof(decoded)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, 0, - decoded, sizeof(decoded)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, encryptedSz, - NULL, sizeof(decoded)), BAD_FUNC_ARG); - AssertIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, encryptedSz, - decoded, 0), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_DecodeEncryptedData(NULL, encrypted, encryptedSz, + decoded, sizeof(decoded)), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, NULL, encryptedSz, + decoded, sizeof(decoded)), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, 0, + decoded, sizeof(decoded)), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, encryptedSz, + NULL, sizeof(decoded)), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, encryptedSz, + decoded, 0), BAD_FUNC_ARG); /* Test struct fields */ - tmpBytePtr = pkcs7->encryptionKey; - pkcs7->encryptionKey = NULL; - AssertIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, encryptedSz, - decoded, sizeof(decoded)), BAD_FUNC_ARG); - pkcs7->encryptionKey = tmpBytePtr; - pkcs7->encryptionKeySz = 0; - AssertIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, encryptedSz, - decoded, sizeof(decoded)), BAD_FUNC_ARG); + if (pkcs7 != NULL) { + tmpBytePtr = pkcs7->encryptionKey; + pkcs7->encryptionKey = NULL; + } + ExpectIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, encryptedSz, + decoded, sizeof(decoded)), BAD_FUNC_ARG); + if (pkcs7 != NULL) { + pkcs7->encryptionKey = tmpBytePtr; + pkcs7->encryptionKeySz = 0; + } + ExpectIntEQ(wc_PKCS7_DecodeEncryptedData(pkcs7, encrypted, encryptedSz, + decoded, sizeof(decoded)), BAD_FUNC_ARG); wc_PKCS7_Free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_PKCS7_EncodeEncryptedData() */ /* @@ -30520,42 +24343,41 @@ static int test_wc_PKCS7_EncodeEncryptedData(void) */ static int test_wc_PKCS7_Degenerate(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) - PKCS7* pkcs7; + PKCS7* pkcs7 = NULL; char fName[] = "./certs/test-degenerate.p7b"; - XFILE f; + XFILE f = XBADFILE; byte der[4096]; - word32 derSz; - int ret; + word32 derSz = 0; - AssertNotNull(f = XFOPEN(fName, "rb")); - AssertIntGT((ret = (int)fread(der, 1, sizeof(der), f)), 0); - derSz = (word32)ret; - XFCLOSE(f); + ExpectTrue((f = XFOPEN(fName, "rb")) != XBADFILE); + ExpectTrue((derSz = (word32)XFREAD(der, 1, sizeof(der), f)) > 0); + if (f != XBADFILE) + XFCLOSE(f); /* test degenerate success */ - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); #ifndef NO_RSA - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, der, derSz), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, der, derSz), 0); #else - AssertIntNE(wc_PKCS7_VerifySignedData(pkcs7, der, derSz), 0); + ExpectIntNE(wc_PKCS7_VerifySignedData(pkcs7, der, derSz), 0); #endif wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; /* test with turning off degenerate cases */ - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); wc_PKCS7_AllowDegenerate(pkcs7, 0); /* override allowing degenerate case */ - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, der, derSz), PKCS7_NO_SIGNER_E); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, der, derSz), + PKCS7_NO_SIGNER_E); wc_PKCS7_Free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_PKCS7_Degenerate() */ #if defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) && \ @@ -30758,92 +24580,97 @@ static byte berContent[] = { */ static int test_wc_PKCS7_BER(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) && \ !defined(NO_SHA) && defined(ASN_BER_TO_DER) - PKCS7* pkcs7; + PKCS7* pkcs7 = NULL; char fName[] = "./certs/test-ber-exp02-05-2022.p7b"; - XFILE f; + XFILE f = XBADFILE; byte der[4096]; #ifndef NO_DES3 byte decoded[2048]; #endif word32 derSz; - int ret; - AssertNotNull(f = XFOPEN(fName, "rb")); - AssertIntGT((ret = (int)fread(der, 1, sizeof(der), f)), 0); - derSz = (word32)ret; - XFCLOSE(f); + ExpectTrue((f = XFOPEN(fName, "rb")) != XBADFILE); + ExpectTrue((derSz = (word32)XFREAD(der, 1, sizeof(der), f)) > 0); + if (f != XBADFILE) { + XFCLOSE(f); + f = XBADFILE; + } - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, INVALID_DEVID), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); #ifndef NO_RSA - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, der, derSz), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, der, derSz), 0); #else - AssertIntNE(wc_PKCS7_VerifySignedData(pkcs7, der, derSz), 0); + ExpectIntNE(wc_PKCS7_VerifySignedData(pkcs7, der, derSz), 0); #endif wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; #ifndef NO_DES3 /* decode BER content */ - AssertNotNull(f = XFOPEN("./certs/1024/client-cert.der", "rb")); - AssertIntGT((ret = (int)fread(der, 1, sizeof(der), f)), 0); - derSz = (word32)ret; - XFCLOSE(f); - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectTrue((f = XFOPEN("./certs/1024/client-cert.der", "rb")) != XBADFILE); + ExpectTrue((derSz = (word32)XFREAD(der, 1, sizeof(der), f)) > 0); + if (f != XBADFILE) { + XFCLOSE(f); + f = XBADFILE; + } + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); #ifndef NO_RSA - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, der, derSz), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, der, derSz), 0); #else - AssertIntNE(wc_PKCS7_InitWithCert(pkcs7, der, derSz), 0); + ExpectIntNE(wc_PKCS7_InitWithCert(pkcs7, der, derSz), 0); #endif - AssertNotNull(f = XFOPEN("./certs/1024/client-key.der", "rb")); - AssertIntGT((ret = (int)fread(der, 1, sizeof(der), f)), 0); - derSz = (word32)ret; - XFCLOSE(f); - pkcs7->privateKey = der; - pkcs7->privateKeySz = derSz; + ExpectTrue((f = XFOPEN("./certs/1024/client-key.der", "rb")) != XBADFILE); + ExpectTrue((derSz = (word32)XFREAD(der, 1, sizeof(der), f)) > 0); + if (f != XBADFILE) { + XFCLOSE(f); + f = XBADFILE; + } + if (pkcs7 != NULL) { + pkcs7->privateKey = der; + pkcs7->privateKeySz = derSz; + } #ifndef NO_RSA #ifdef WOLFSSL_SP_MATH - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, berContent, + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, berContent, sizeof(berContent), decoded, sizeof(decoded)), WC_KEY_SIZE_E); #else - AssertIntGT(wc_PKCS7_DecodeEnvelopedData(pkcs7, berContent, + ExpectIntGT(wc_PKCS7_DecodeEnvelopedData(pkcs7, berContent, sizeof(berContent), decoded, sizeof(decoded)), 0); #endif #else - AssertIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, berContent, + ExpectIntEQ(wc_PKCS7_DecodeEnvelopedData(pkcs7, berContent, sizeof(berContent), decoded, sizeof(decoded)), NOT_COMPILED_IN); #endif wc_PKCS7_Free(pkcs7); #endif /* !NO_DES3 */ - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_PKCS7_BER() */ -static int test_PKCS7_signed_enveloped(void) +static int test_wc_PKCS7_signed_enveloped(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) && !defined(NO_RSA) && !defined(NO_AES) && \ !defined(NO_FILESYSTEM) - XFILE f; - PKCS7* pkcs7; + XFILE f = XBADFILE; + PKCS7* pkcs7 = NULL; #ifdef HAVE_AES_CBC - PKCS7* inner; + PKCS7* inner = NULL; #endif - void* pt; + void* pt = NULL; WC_RNG rng; unsigned char key[FOURK_BUF/2]; unsigned char cert[FOURK_BUF/2]; unsigned char env[FOURK_BUF]; int envSz = FOURK_BUF; - int keySz; - int certSz; - + int keySz = 0; + int certSz = 0; unsigned char sig[FOURK_BUF * 2]; int sigSz = FOURK_BUF * 2; #ifdef HAVE_AES_CBC @@ -30851,74 +24678,96 @@ static int test_PKCS7_signed_enveloped(void) int decodedSz = FOURK_BUF; #endif + XMEMSET(&rng, 0, sizeof(WC_RNG)); + /* load cert */ - AssertNotNull(f = XFOPEN(cliCertDerFile, "rb")); - AssertIntGT((certSz = (int)XFREAD(cert, 1, sizeof(cert), f)), 0); - XFCLOSE(f); + ExpectTrue((f = XFOPEN(cliCertDerFile, "rb")) != XBADFILE); + ExpectIntGT((certSz = (int)XFREAD(cert, 1, sizeof(cert), f)), 0); + if (f != XBADFILE) { + XFCLOSE(f); + f = XBADFILE; + } /* load key */ - AssertNotNull(f = XFOPEN(cliKeyFile, "rb")); - AssertIntGT((keySz = (int)XFREAD(key, 1, sizeof(key), f)), 0); - XFCLOSE(f); - keySz = wolfSSL_KeyPemToDer(key, keySz, key, keySz, NULL); + ExpectTrue((f = XFOPEN(cliKeyFile, "rb")) != XBADFILE); + ExpectIntGT((keySz = (int)XFREAD(key, 1, sizeof(key), f)), 0); + if (f != XBADFILE) { + XFCLOSE(f); + f = XBADFILE; + } + ExpectIntGT(keySz = wolfSSL_KeyPemToDer(key, keySz, key, keySz, NULL), 0); /* sign cert for envelope */ - AssertNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); - AssertIntEQ(wc_InitRng(&rng), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); - pkcs7->content = cert; - pkcs7->contentSz = certSz; - pkcs7->contentOID = DATA; - pkcs7->privateKey = key; - pkcs7->privateKeySz = keySz; - pkcs7->encryptOID = RSAk; - pkcs7->hashOID = SHA256h; - pkcs7->rng = &rng; - AssertIntGT((sigSz = wc_PKCS7_EncodeSignedData(pkcs7, sig, sigSz)), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); + if (pkcs7 != NULL) { + pkcs7->content = cert; + pkcs7->contentSz = certSz; + pkcs7->contentOID = DATA; + pkcs7->privateKey = key; + pkcs7->privateKeySz = keySz; + pkcs7->encryptOID = RSAk; + pkcs7->hashOID = SHA256h; + pkcs7->rng = &rng; + } + ExpectIntGT((sigSz = wc_PKCS7_EncodeSignedData(pkcs7, sig, sigSz)), 0); wc_PKCS7_Free(pkcs7); - wc_FreeRng(&rng); + pkcs7 = NULL; + DoExpectIntEQ(wc_FreeRng(&rng), 0); #ifdef HAVE_AES_CBC /* create envelope */ - AssertNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); - pkcs7->content = sig; - pkcs7->contentSz = sigSz; - pkcs7->contentOID = DATA; - pkcs7->encryptOID = AES256CBCb; - pkcs7->privateKey = key; - pkcs7->privateKeySz = keySz; - AssertIntGT((envSz = wc_PKCS7_EncodeEnvelopedData(pkcs7, env, envSz)), 0); - AssertIntLT(wc_PKCS7_EncodeEnvelopedData(pkcs7, env, 2), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); + if (pkcs7 != NULL) { + pkcs7->content = sig; + pkcs7->contentSz = sigSz; + pkcs7->contentOID = DATA; + pkcs7->encryptOID = AES256CBCb; + pkcs7->privateKey = key; + pkcs7->privateKeySz = keySz; + } + ExpectIntGT((envSz = wc_PKCS7_EncodeEnvelopedData(pkcs7, env, envSz)), 0); + ExpectIntLT(wc_PKCS7_EncodeEnvelopedData(pkcs7, env, 2), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; #endif /* create bad signed enveloped data */ sigSz = FOURK_BUF * 2; - AssertNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); - AssertIntEQ(wc_InitRng(&rng), 0); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); - pkcs7->content = env; - pkcs7->contentSz = envSz; - pkcs7->contentOID = DATA; - pkcs7->privateKey = key; - pkcs7->privateKeySz = keySz; - pkcs7->encryptOID = RSAk; - pkcs7->hashOID = SHA256h; - pkcs7->rng = &rng; + ExpectNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); + if (pkcs7 != NULL) { + pkcs7->content = env; + pkcs7->contentSz = envSz; + pkcs7->contentOID = DATA; + pkcs7->privateKey = key; + pkcs7->privateKeySz = keySz; + pkcs7->encryptOID = RSAk; + pkcs7->hashOID = SHA256h; + pkcs7->rng = &rng; + } /* Set no certs in bundle for this test. Hang on to the pointer though to * free it later. */ - pt = (void*)pkcs7->certList; - pkcs7->certList = NULL; /* no certs in bundle */ - AssertIntGT((sigSz = wc_PKCS7_EncodeSignedData(pkcs7, sig, sigSz)), 0); - pkcs7->certList = (Pkcs7Cert*)pt; /* restore pointer for PKCS7 free call */ + if (pkcs7 != NULL) { + pt = (void*)pkcs7->certList; + pkcs7->certList = NULL; /* no certs in bundle */ + } + ExpectIntGT((sigSz = wc_PKCS7_EncodeSignedData(pkcs7, sig, sigSz)), 0); + if (pkcs7 != NULL) { + /* restore pointer for PKCS7 free call */ + pkcs7->certList = (Pkcs7Cert*)pt; + } wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; /* check verify fails */ - AssertNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, sig, sigSz), + ExpectNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, sig, sigSz), PKCS7_SIGNEEDS_CHECK); /* try verifying the signature manually */ @@ -30929,444 +24778,382 @@ static int test_PKCS7_signed_enveloped(void) WC_MAX_DIGEST_SIZE]; int digestSz; - AssertIntEQ(wc_InitRsaKey(&rKey, HEAP_HINT), 0); - AssertIntEQ(wc_RsaPrivateKeyDecode(key, &idx, &rKey, keySz), 0); - digestSz = wc_RsaSSL_Verify(pkcs7->signature, pkcs7->signatureSz, - digest, sizeof(digest), &rKey); - AssertIntGT(digestSz, 0); - AssertIntEQ(digestSz, pkcs7->pkcs7DigestSz); - AssertIntEQ(XMEMCMP(digest, pkcs7->pkcs7Digest, digestSz), 0); - AssertIntEQ(wc_FreeRsaKey(&rKey), 0); + ExpectIntEQ(wc_InitRsaKey(&rKey, HEAP_HINT), 0); + ExpectIntEQ(wc_RsaPrivateKeyDecode(key, &idx, &rKey, keySz), 0); + ExpectIntGT(digestSz = wc_RsaSSL_Verify(pkcs7->signature, + pkcs7->signatureSz, digest, sizeof(digest), &rKey), 0); + ExpectIntEQ(digestSz, pkcs7->pkcs7DigestSz); + ExpectIntEQ(XMEMCMP(digest, pkcs7->pkcs7Digest, digestSz), 0); + ExpectIntEQ(wc_FreeRsaKey(&rKey), 0); /* verify was success */ } wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; /* initializing the PKCS7 struct with the signing certificate should pass */ - AssertNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, sig, sigSz), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, cert, certSz), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, sig, sigSz), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; /* create valid degenerate bundle */ sigSz = FOURK_BUF * 2; - AssertNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); - pkcs7->content = env; - pkcs7->contentSz = envSz; - pkcs7->contentOID = DATA; - pkcs7->privateKey = key; - pkcs7->privateKeySz = keySz; - pkcs7->encryptOID = RSAk; - pkcs7->hashOID = SHA256h; - pkcs7->rng = &rng; - AssertIntEQ(wc_PKCS7_SetSignerIdentifierType(pkcs7, DEGENERATE_SID), 0); - AssertIntGT((sigSz = wc_PKCS7_EncodeSignedData(pkcs7, sig, sigSz)), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); + if (pkcs7 != NULL) { + pkcs7->content = env; + pkcs7->contentSz = envSz; + pkcs7->contentOID = DATA; + pkcs7->privateKey = key; + pkcs7->privateKeySz = keySz; + pkcs7->encryptOID = RSAk; + pkcs7->hashOID = SHA256h; + pkcs7->rng = &rng; + } + ExpectIntEQ(wc_PKCS7_SetSignerIdentifierType(pkcs7, DEGENERATE_SID), 0); + ExpectIntGT((sigSz = wc_PKCS7_EncodeSignedData(pkcs7, sig, sigSz)), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; wc_FreeRng(&rng); /* check verify */ - AssertNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); - AssertIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, testDevId), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, sig, sigSz), 0); - AssertNotNull(pkcs7->content); + ExpectNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, sig, sigSz), 0); + ExpectNotNull(pkcs7->content); #ifdef HAVE_AES_CBC /* check decode */ - AssertNotNull(inner = wc_PKCS7_New(NULL, 0)); - AssertIntEQ(wc_PKCS7_InitWithCert(inner, cert, certSz), 0); - inner->privateKey = key; - inner->privateKeySz = keySz; - AssertIntGT((decodedSz = wc_PKCS7_DecodeEnvelopedData(inner, pkcs7->content, + ExpectNotNull(inner = wc_PKCS7_New(NULL, 0)); + ExpectIntEQ(wc_PKCS7_InitWithCert(inner, cert, certSz), 0); + if (inner != NULL) { + inner->privateKey = key; + inner->privateKeySz = keySz; + } + ExpectIntGT((decodedSz = wc_PKCS7_DecodeEnvelopedData(inner, pkcs7->content, pkcs7->contentSz, decoded, decodedSz)), 0); wc_PKCS7_Free(inner); + inner = NULL; #endif wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; #ifdef HAVE_AES_CBC /* check cert set */ - AssertNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(pkcs7, decoded, decodedSz), 0); - AssertNotNull(pkcs7->singleCert); - AssertIntNE(pkcs7->singleCertSz, 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(NULL, 0)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(pkcs7, decoded, decodedSz), 0); + ExpectNotNull(pkcs7->singleCert); + ExpectIntNE(pkcs7->singleCertSz, 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; #endif - - res = TEST_RES_CHECK(1); #endif /* HAVE_PKCS7 && !NO_RSA && !NO_AES */ - return res; + return EXPECT_RESULT(); } static int test_wc_PKCS7_NoDefaultSignedAttribs(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) && !defined(NO_RSA) \ && !defined(NO_AES) - PKCS7* pkcs7; - void* heap = NULL; + PKCS7* pkcs7 = NULL; + void* heap = NULL; - pkcs7 = wc_PKCS7_New(heap, testDevId); - AssertNotNull(pkcs7); - AssertIntEQ(wc_PKCS7_Init(pkcs7, heap, testDevId), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(heap, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, heap, testDevId), 0); - AssertIntEQ(wc_PKCS7_NoDefaultSignedAttribs(NULL), BAD_FUNC_ARG); - - AssertIntEQ(wc_PKCS7_NoDefaultSignedAttribs(pkcs7), 0); + ExpectIntEQ(wc_PKCS7_NoDefaultSignedAttribs(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_NoDefaultSignedAttribs(pkcs7), 0); wc_PKCS7_Free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_PKCS7_SetOriEncryptCtx(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) && !defined(NO_RSA) \ && !defined(NO_AES) - PKCS7* pkcs7; - void* heap = NULL; - WOLFSSL_CTX* ctx; - ctx = NULL; + PKCS7* pkcs7 = NULL; + void* heap = NULL; + WOLFSSL_CTX* ctx = NULL; - pkcs7 = wc_PKCS7_New(heap, testDevId); - AssertNotNull(pkcs7); - AssertIntEQ(wc_PKCS7_Init(pkcs7, heap, testDevId), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(heap, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, heap, testDevId), 0); - AssertIntEQ(wc_PKCS7_SetOriEncryptCtx(NULL, ctx), BAD_FUNC_ARG); - - AssertIntEQ(wc_PKCS7_SetOriEncryptCtx(pkcs7, ctx), 0); + ExpectIntEQ(wc_PKCS7_SetOriEncryptCtx(NULL, ctx), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_SetOriEncryptCtx(pkcs7, ctx), 0); wc_PKCS7_Free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_PKCS7_SetOriDecryptCtx(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) && !defined(NO_RSA) \ && !defined(NO_AES) - PKCS7* pkcs7; - void* heap = NULL; - WOLFSSL_CTX* ctx; - ctx = NULL; + PKCS7* pkcs7 = NULL; + void* heap = NULL; + WOLFSSL_CTX* ctx = NULL; - pkcs7 = wc_PKCS7_New(heap, testDevId); - AssertNotNull(pkcs7); - AssertIntEQ(wc_PKCS7_Init(pkcs7, heap, testDevId), 0); + ExpectNotNull(pkcs7 = wc_PKCS7_New(heap, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(pkcs7, heap, testDevId), 0); - AssertIntEQ(wc_PKCS7_SetOriDecryptCtx(NULL, ctx), BAD_FUNC_ARG); - - AssertIntEQ(wc_PKCS7_SetOriDecryptCtx(pkcs7, ctx), 0); + ExpectIntEQ(wc_PKCS7_SetOriDecryptCtx(NULL, ctx), BAD_FUNC_ARG); + ExpectIntEQ(wc_PKCS7_SetOriDecryptCtx(pkcs7, ctx), 0); wc_PKCS7_Free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_PKCS7_DecodeCompressedData(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) && !defined(NO_RSA) \ && !defined(NO_AES) && defined(HAVE_LIBZ) - PKCS7* pkcs7; + PKCS7* pkcs7 = NULL; void* heap = NULL; byte out[4096]; - byte *decompressed; - int outSz, decompressedSz; - + byte* decompressed = NULL; + int outSz; + int decompressedSz; const char* cert = "./certs/client-cert.pem"; byte* cert_buf = NULL; size_t cert_sz = 0; - AssertIntEQ(load_file(cert, &cert_buf, &cert_sz), 0); - AssertNotNull((decompressed = - (byte*)XMALLOC(cert_sz, heap, DYNAMIC_TYPE_TMP_BUFFER))); + ExpectIntEQ(load_file(cert, &cert_buf, &cert_sz), 0); + ExpectNotNull((decompressed = (byte*)XMALLOC(cert_sz, heap, + DYNAMIC_TYPE_TMP_BUFFER))); decompressedSz = (int)cert_sz; - AssertNotNull((pkcs7 = wc_PKCS7_New(heap, testDevId))); + ExpectNotNull((pkcs7 = wc_PKCS7_New(heap, testDevId))); - pkcs7->content = (byte*)cert_buf; - pkcs7->contentSz = (word32)cert_sz; - pkcs7->contentOID = DATA; + if (pkcs7 != NULL) { + pkcs7->content = (byte*)cert_buf; + pkcs7->contentSz = (word32)cert_sz; + pkcs7->contentOID = DATA; + } - AssertIntGT((outSz = wc_PKCS7_EncodeCompressedData(pkcs7, out, - sizeof(out))), 0); + ExpectIntGT((outSz = wc_PKCS7_EncodeCompressedData(pkcs7, out, + sizeof(out))), 0); wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; /* compressed key should be smaller than when started */ - AssertIntLT(outSz, cert_sz); + ExpectIntLT(outSz, cert_sz); /* test decompression */ - AssertNotNull((pkcs7 = wc_PKCS7_New(heap, testDevId))); - AssertIntEQ(pkcs7->contentOID, 0); + ExpectNotNull((pkcs7 = wc_PKCS7_New(heap, testDevId))); + ExpectIntEQ(pkcs7->contentOID, 0); /* fail case with out buffer too small */ - AssertIntLT(wc_PKCS7_DecodeCompressedData(pkcs7, out, outSz, - decompressed, outSz), 0); + ExpectIntLT(wc_PKCS7_DecodeCompressedData(pkcs7, out, outSz, + decompressed, outSz), 0); /* success case */ - AssertIntEQ(wc_PKCS7_DecodeCompressedData(pkcs7, out, outSz, - decompressed, decompressedSz), cert_sz); - AssertIntEQ(pkcs7->contentOID, DATA); - AssertIntEQ(XMEMCMP(decompressed, cert_buf, cert_sz), 0); + ExpectIntEQ(wc_PKCS7_DecodeCompressedData(pkcs7, out, outSz, + decompressed, decompressedSz), cert_sz); + ExpectIntEQ(pkcs7->contentOID, DATA); + ExpectIntEQ(XMEMCMP(decompressed, cert_buf, cert_sz), 0); XFREE(decompressed, heap, DYNAMIC_TYPE_TMP_BUFFER); decompressed = NULL; /* test decompression function with different 'max' inputs */ outSz = sizeof(out); - AssertIntGT((outSz = wc_Compress(out, outSz, cert_buf, (word32)cert_sz, 0)), - 0); - AssertIntLT(wc_DeCompressDynamic(&decompressed, 1, DYNAMIC_TYPE_TMP_BUFFER, - out, outSz, 0, heap), 0); - AssertNull(decompressed); - AssertIntGT(wc_DeCompressDynamic(&decompressed, -1, DYNAMIC_TYPE_TMP_BUFFER, - out, outSz, 0, heap), 0); - AssertNotNull(decompressed); - AssertIntEQ(XMEMCMP(decompressed, cert_buf, cert_sz), 0); + ExpectIntGT((outSz = wc_Compress(out, outSz, cert_buf, (word32)cert_sz, 0)), + 0); + ExpectIntLT(wc_DeCompressDynamic(&decompressed, 1, DYNAMIC_TYPE_TMP_BUFFER, + out, outSz, 0, heap), 0); + ExpectNull(decompressed); + ExpectIntGT(wc_DeCompressDynamic(&decompressed, -1, DYNAMIC_TYPE_TMP_BUFFER, + out, outSz, 0, heap), 0); + ExpectNotNull(decompressed); + ExpectIntEQ(XMEMCMP(decompressed, cert_buf, cert_sz), 0); XFREE(decompressed, heap, DYNAMIC_TYPE_TMP_BUFFER); decompressed = NULL; - AssertIntGT(wc_DeCompressDynamic(&decompressed, DYNAMIC_TYPE_TMP_BUFFER, 5, - out, outSz, 0, heap), 0); - AssertNotNull(decompressed); - AssertIntEQ(XMEMCMP(decompressed, cert_buf, cert_sz), 0); + ExpectIntGT(wc_DeCompressDynamic(&decompressed, DYNAMIC_TYPE_TMP_BUFFER, 5, + out, outSz, 0, heap), 0); + ExpectNotNull(decompressed); + ExpectIntEQ(XMEMCMP(decompressed, cert_buf, cert_sz), 0); XFREE(decompressed, heap, DYNAMIC_TYPE_TMP_BUFFER); - if (cert_buf) + if (cert_buf != NULL) free(cert_buf); wc_PKCS7_Free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_i2d_PKCS12(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_ASN) && !defined(NO_PWDBASED) && defined(HAVE_PKCS12) \ && !defined(NO_FILESYSTEM) && !defined(NO_RSA) \ && !defined(NO_AES) && !defined(NO_DES3) && !defined(NO_SHA) WC_PKCS12* pkcs12 = NULL; unsigned char der[FOURK_BUF * 2]; unsigned char* pt; - int derSz; + int derSz = 0; unsigned char out[FOURK_BUF * 2]; int outSz = FOURK_BUF * 2; - const char p12_f[] = "./certs/test-servercert.p12"; - XFILE f; + XFILE f = XBADFILE; - f = XFOPEN(p12_f, "rb"); - AssertNotNull(f); - derSz = (int)XFREAD(der, 1, sizeof(der), f); - AssertIntGT(derSz, 0); - XFCLOSE(f); + ExpectTrue((f = XFOPEN(p12_f, "rb")) != XBADFILE); + ExpectIntGT(derSz = (int)XFREAD(der, 1, sizeof(der), f), 0); + if (f != XBADFILE) + XFCLOSE(f); - AssertNotNull(pkcs12 = wc_PKCS12_new()); - AssertIntEQ(wc_d2i_PKCS12(der, derSz, pkcs12), 0); - AssertIntEQ(wc_i2d_PKCS12(pkcs12, NULL, &outSz), LENGTH_ONLY_E); - AssertIntEQ(outSz, derSz); + ExpectNotNull(pkcs12 = wc_PKCS12_new()); + ExpectIntEQ(wc_d2i_PKCS12(der, derSz, pkcs12), 0); + ExpectIntEQ(wc_i2d_PKCS12(pkcs12, NULL, &outSz), LENGTH_ONLY_E); + ExpectIntEQ(outSz, derSz); outSz = derSz - 1; pt = out; - AssertIntLE(wc_i2d_PKCS12(pkcs12, &pt, &outSz), 0); + ExpectIntLE(wc_i2d_PKCS12(pkcs12, &pt, &outSz), 0); outSz = derSz; - AssertIntEQ(wc_i2d_PKCS12(pkcs12, &pt, &outSz), derSz); - AssertIntEQ((pt == out), 0); + ExpectIntEQ(wc_i2d_PKCS12(pkcs12, &pt, &outSz), derSz); + ExpectIntEQ((pt == out), 0); pt = NULL; - AssertIntEQ(wc_i2d_PKCS12(pkcs12, &pt, NULL), derSz); + ExpectIntEQ(wc_i2d_PKCS12(pkcs12, &pt, NULL), derSz); XFREE(pt, NULL, DYNAMIC_TYPE_PKCS); wc_PKCS12_free(pkcs12); + pkcs12 = NULL; /* Run the same test but use wc_d2i_PKCS12_fp. */ - AssertNotNull(pkcs12 = wc_PKCS12_new()); - AssertIntEQ(wc_d2i_PKCS12_fp("./certs/test-servercert.p12", &pkcs12), 0); - AssertIntEQ(wc_i2d_PKCS12(pkcs12, NULL, &outSz), LENGTH_ONLY_E); - AssertIntEQ(outSz, derSz); + ExpectNotNull(pkcs12 = wc_PKCS12_new()); + ExpectIntEQ(wc_d2i_PKCS12_fp("./certs/test-servercert.p12", &pkcs12), 0); + ExpectIntEQ(wc_i2d_PKCS12(pkcs12, NULL, &outSz), LENGTH_ONLY_E); + ExpectIntEQ(outSz, derSz); wc_PKCS12_free(pkcs12); + pkcs12 = NULL; /* wc_d2i_PKCS12_fp can also allocate the PKCS12 object for the caller. */ - pkcs12 = NULL; - AssertIntEQ(wc_d2i_PKCS12_fp("./certs/test-servercert.p12", &pkcs12), 0); - AssertIntEQ(wc_i2d_PKCS12(pkcs12, NULL, &outSz), LENGTH_ONLY_E); - AssertIntEQ(outSz, derSz); + ExpectIntEQ(wc_d2i_PKCS12_fp("./certs/test-servercert.p12", &pkcs12), 0); + ExpectIntEQ(wc_i2d_PKCS12(pkcs12, NULL, &outSz), LENGTH_ONLY_E); + ExpectIntEQ(outSz, derSz); wc_PKCS12_free(pkcs12); - - res = TEST_RES_CHECK(1); + pkcs12 = NULL; #endif - return res; + return EXPECT_RESULT(); } /* Testing wc_SignatureGetSize() for signature type ECC */ static int test_wc_SignatureGetSize_ecc(void) { - int res = TEST_SKIPPED; -#ifndef NO_SIG_WRAPPER - int ret; - #if defined(HAVE_ECC) && !defined(NO_ECC256) - enum wc_SignatureType sig_type; - word32 key_len; + EXPECT_DECLS; +#if !defined(NO_SIG_WRAPPER) && defined(HAVE_ECC) && !defined(NO_ECC256) + enum wc_SignatureType sig_type; + word32 key_len; + ecc_key ecc; + const char* qx = + "fa2737fb93488d19caef11ae7faf6b7f4bcd67b286e3fc54e8a65c2b74aeccb0"; + const char* qy = + "d4ccd6dae698208aa8c3a6f39e45510d03be09b2f124bfc067856c324f9b4d09"; + const char* d = + "be34baa8d040a3b991f9075b56ba292f755b90e4b6dc10dad36715c33cfdac25"; - /* Initialize ECC Key */ - ecc_key ecc; - const char* qx = - "fa2737fb93488d19caef11ae7faf6b7f4bcd67b286e3fc54e8a65c2b74aeccb0"; - const char* qy = - "d4ccd6dae698208aa8c3a6f39e45510d03be09b2f124bfc067856c324f9b4d09"; - const char* d = - "be34baa8d040a3b991f9075b56ba292f755b90e4b6dc10dad36715c33cfdac25"; + XMEMSET(&ecc, 0, sizeof(ecc_key)); - ret = wc_ecc_init(&ecc); - if (ret == 0) { - ret = wc_ecc_import_raw(&ecc, qx, qy, d, "SECP256R1"); - } - if (ret == 0) { - /* Input for signature type ECC */ - sig_type = WC_SIGNATURE_TYPE_ECC; - key_len = sizeof(ecc_key); - ret = wc_SignatureGetSize(sig_type, &ecc, key_len); + ExpectIntEQ(wc_ecc_init(&ecc), 0); + ExpectIntEQ(wc_ecc_import_raw(&ecc, qx, qy, d, "SECP256R1"), 0); + /* Input for signature type ECC */ + sig_type = WC_SIGNATURE_TYPE_ECC; + key_len = sizeof(ecc_key); + ExpectIntGT(wc_SignatureGetSize(sig_type, &ecc, key_len), 0); - /* Test bad args */ - if (ret > 0) { - sig_type = (enum wc_SignatureType) 100; - ret = wc_SignatureGetSize(sig_type, &ecc, key_len); - if (ret == BAD_FUNC_ARG) { - sig_type = WC_SIGNATURE_TYPE_ECC; - ret = wc_SignatureGetSize(sig_type, NULL, key_len); - } - if (ret >= 0) { - key_len = (word32) 0; - ret = wc_SignatureGetSize(sig_type, &ecc, key_len); - } - if (ret == BAD_FUNC_ARG) { - ret = SIG_TYPE_E; - } - } - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - wc_ecc_free(&ecc); - #else - ret = SIG_TYPE_E; - #endif + /* Test bad args */ + sig_type = (enum wc_SignatureType) 100; + ExpectIntEQ(wc_SignatureGetSize(sig_type, &ecc, key_len), BAD_FUNC_ARG); + sig_type = WC_SIGNATURE_TYPE_ECC; + ExpectIntEQ(wc_SignatureGetSize(sig_type, NULL, key_len), 0); + key_len = (word32)0; + ExpectIntEQ(wc_SignatureGetSize(sig_type, &ecc, key_len), BAD_FUNC_ARG); - res = TEST_RES_CHECK(ret == SIG_TYPE_E); -#endif /* NO_SIG_WRAPPER */ - return res; -}/* END test_wc_SignatureGetSize_ecc() */ + DoExpectIntEQ(wc_ecc_free(&ecc), 0); +#endif /* !NO_SIG_WRAPPER && HAVE_ECC && !NO_ECC256 */ + return EXPECT_RESULT(); +} /* END test_wc_SignatureGetSize_ecc() */ /* Testing wc_SignatureGetSize() for signature type rsa */ static int test_wc_SignatureGetSize_rsa(void) { - int res = TEST_SKIPPED; -#ifndef NO_SIG_WRAPPER - int ret = 0; - #ifndef NO_RSA - enum wc_SignatureType sig_type; - word32 key_len; - word32 idx = 0; + EXPECT_DECLS; +#if !defined(NO_SIG_WRAPPER) && !defined(NO_RSA) + enum wc_SignatureType sig_type; + word32 key_len; + word32 idx = 0; + RsaKey rsa_key; + byte* tmp = NULL; + size_t bytes; - /* Initialize RSA Key */ - RsaKey rsa_key; - byte* tmp = NULL; - size_t bytes; + XMEMSET(&rsa_key, 0, sizeof(RsaKey)); - #ifdef USE_CERT_BUFFERS_1024 - bytes = (size_t)sizeof_client_key_der_1024; - if (bytes < (size_t)sizeof_client_key_der_1024) - bytes = (size_t)sizeof_client_cert_der_1024; - #elif defined(USE_CERT_BUFFERS_2048) - bytes = (size_t)sizeof_client_key_der_2048; - if (bytes < (size_t)sizeof_client_cert_der_2048) - bytes = (size_t)sizeof_client_cert_der_2048; - #else - bytes = FOURK_BUF; - #endif - - tmp = (byte*)XMALLOC(bytes, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); - if (tmp != NULL) { - #ifdef USE_CERT_BUFFERS_1024 - XMEMCPY(tmp, client_key_der_1024, - (size_t)sizeof_client_key_der_1024); - #elif defined(USE_CERT_BUFFERS_2048) - XMEMCPY(tmp, client_key_der_2048, - (size_t)sizeof_client_key_der_2048); - #elif !defined(NO_FILESYSTEM) - file = XFOPEN(clientKey, "rb"); - if (file != XBADFILE) { - bytes = (size_t)XFREAD(tmp, 1, FOURK_BUF, file); - XFCLOSE(file); - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - #else - ret = WOLFSSL_FATAL_ERROR; - #endif - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - - if (ret == 0) { - ret = wc_InitRsaKey_ex(&rsa_key, HEAP_HINT, testDevId); - } - if (ret == 0) { - ret = wc_RsaPrivateKeyDecode(tmp, &idx, &rsa_key, (word32)bytes); - } - - if (ret == 0) { - /* Input for signature type RSA */ - sig_type = WC_SIGNATURE_TYPE_RSA; - key_len = sizeof(RsaKey); - ret = wc_SignatureGetSize(sig_type, &rsa_key, key_len); - - /* Test bad args */ - if (ret > 0) { - sig_type = (enum wc_SignatureType) 100; - ret = wc_SignatureGetSize(sig_type, &rsa_key, key_len); - if (ret == BAD_FUNC_ARG) { - sig_type = WC_SIGNATURE_TYPE_RSA; - ret = wc_SignatureGetSize(sig_type, NULL, key_len); - } - #ifndef HAVE_USER_RSA - if (ret == BAD_FUNC_ARG) - #else - if (ret == 0) - #endif - { - key_len = (word32)0; - ret = wc_SignatureGetSize(sig_type, &rsa_key, key_len); - } - if (ret == BAD_FUNC_ARG) { - ret = SIG_TYPE_E; - } - } - } - else { - ret = WOLFSSL_FATAL_ERROR; - } - wc_FreeRsaKey(&rsa_key); - XFREE(tmp, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); + #ifdef USE_CERT_BUFFERS_1024 + bytes = (size_t)sizeof_client_key_der_1024; + if (bytes < (size_t)sizeof_client_key_der_1024) + bytes = (size_t)sizeof_client_cert_der_1024; + #elif defined(USE_CERT_BUFFERS_2048) + bytes = (size_t)sizeof_client_key_der_2048; + if (bytes < (size_t)sizeof_client_cert_der_2048) + bytes = (size_t)sizeof_client_cert_der_2048; #else - ret = SIG_TYPE_E; + bytes = FOURK_BUF; #endif - res = TEST_RES_CHECK(ret == SIG_TYPE_E); -#endif /* NO_SIG_WRAPPER */ - return res; -}/* END test_wc_SignatureGetSize_rsa(void) */ + ExpectNotNull(tmp = (byte*)XMALLOC(bytes, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + if (tmp != NULL) { + #ifdef USE_CERT_BUFFERS_1024 + XMEMCPY(tmp, client_key_der_1024, (size_t)sizeof_client_key_der_1024); + #elif defined(USE_CERT_BUFFERS_2048) + XMEMCPY(tmp, client_key_der_2048, (size_t)sizeof_client_key_der_2048); + #elif !defined(NO_FILESYSTEM) + XFILE file = XBADFILE; + ExpectTrue((file = XFOPEN(clientKey, "rb")) != XBADFILE); + ExpectIntGT(bytes = (size_t)XFREAD(tmp, 1, FOURK_BUF, file), 0); + if (file != XBADFILE) + XFCLOSE(file); + } + #else + ExpectFail(); + #endif + } + + ExpectIntEQ(wc_InitRsaKey_ex(&rsa_key, HEAP_HINT, testDevId), 0); + ExpectIntEQ(wc_RsaPrivateKeyDecode(tmp, &idx, &rsa_key, (word32)bytes), 0); + /* Input for signature type RSA */ + sig_type = WC_SIGNATURE_TYPE_RSA; + key_len = sizeof(RsaKey); + ExpectIntGT(wc_SignatureGetSize(sig_type, &rsa_key, key_len), 0); + + /* Test bad args */ + sig_type = (enum wc_SignatureType)100; + ExpectIntEQ(wc_SignatureGetSize(sig_type, &rsa_key, key_len), BAD_FUNC_ARG); + sig_type = WC_SIGNATURE_TYPE_RSA; + #ifndef HAVE_USER_RSA + ExpectIntEQ(wc_SignatureGetSize(sig_type, NULL, key_len), BAD_FUNC_ARG); + #else + ExpectIntEQ(wc_SignatureGetSize(sig_type, NULL, key_len), 0); + #endif + key_len = (word32)0; + ExpectIntEQ(wc_SignatureGetSize(sig_type, &rsa_key, key_len), BAD_FUNC_ARG); + + DoExpectIntEQ(wc_FreeRsaKey(&rsa_key), 0); + XFREE(tmp, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); +#endif /* !NO_SIG_WRAPPER && !NO_RSA */ + return EXPECT_RESULT(); +} /* END test_wc_SignatureGetSize_rsa(void) */ /*----------------------------------------------------------------------------* | hash.h Tests @@ -31374,29 +25161,30 @@ static int test_wc_SignatureGetSize_rsa(void) static int test_wc_HashInit(void) { - int ret = 0, i; /* 0 indicates tests passed, 1 indicates failure */ + EXPECT_DECLS; + int i; /* 0 indicates tests passed, 1 indicates failure */ wc_HashAlg hash; /* enum for holding supported algorithms, #ifndef's restrict if disabled */ enum wc_HashType enumArray[] = { #ifndef NO_MD5 - WC_HASH_TYPE_MD5, + WC_HASH_TYPE_MD5, #endif #ifndef NO_SHA - WC_HASH_TYPE_SHA, + WC_HASH_TYPE_SHA, #endif - #ifndef WOLFSSL_SHA224 - WC_HASH_TYPE_SHA224, + #ifdef WOLFSSL_SHA224 + WC_HASH_TYPE_SHA224, #endif #ifndef NO_SHA256 - WC_HASH_TYPE_SHA256, + WC_HASH_TYPE_SHA256, #endif - #ifndef WOLFSSL_SHA384 - WC_HASH_TYPE_SHA384, + #ifdef WOLFSSL_SHA384 + WC_HASH_TYPE_SHA384, #endif - #ifndef WOLFSSL_SHA512 - WC_HASH_TYPE_SHA512, + #ifdef WOLFSSL_SHA512 + WC_HASH_TYPE_SHA512, #endif }; /* dynamically finds the length */ @@ -31405,31 +25193,24 @@ static int test_wc_HashInit(void) /* For loop to test various arguments... */ for (i = 0; i < enumlen; i++) { /* check for bad args */ - if (wc_HashInit(&hash, enumArray[i]) == BAD_FUNC_ARG) { - ret = 1; - break; - } + ExpectIntEQ(wc_HashInit(&hash, enumArray[i]), 0); wc_HashFree(&hash, enumArray[i]); /* check for null ptr */ - if (wc_HashInit(NULL, enumArray[i]) != BAD_FUNC_ARG) { - ret = 1; - break; - } + ExpectIntEQ(wc_HashInit(NULL, enumArray[i]), BAD_FUNC_ARG); } /* end of for loop */ - return TEST_RES_CHECK(ret == 0); + return EXPECT_RESULT(); } /* end of test_wc_HashInit */ /* * Unit test function for wc_HashSetFlags() */ static int test_wc_HashSetFlags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_HASH_FLAGS wc_HashAlg hash; - int ret = 0; word32 flags = 0; int i, j; int notSupportedLen; @@ -31472,65 +25253,32 @@ static int test_wc_HashSetFlags(void) /* For loop to test various arguments... */ for (i = 0; i < enumlen; i++) { - ret = wc_HashInit(&hash, enumArray[i]); - if (ret == 0) { - ret = wc_HashSetFlags(&hash, enumArray[i], flags); - } - if (ret == 0) { - if (flags & WC_HASH_FLAG_ISCOPY) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_HashSetFlags(NULL, enumArray[i], flags); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - + ExpectIntEQ(wc_HashInit(&hash, enumArray[i]), 0); + ExpectIntEQ(wc_HashSetFlags(&hash, enumArray[i], flags), 0); + ExpectTrue((flags & WC_HASH_FLAG_ISCOPY) == 0); + ExpectIntEQ(wc_HashSetFlags(NULL, enumArray[i], flags), BAD_FUNC_ARG); wc_HashFree(&hash, enumArray[i]); } /* For loop to test not supported cases */ notSupportedLen = (sizeof(notSupported)/sizeof(enum wc_HashType)); - for (j = 0; ret == 0 && j < notSupportedLen; j++) { - ret = wc_HashInit(&hash, notSupported[j]); - if (ret == 0) { - ret = -1; - } - else if (ret == BAD_FUNC_ARG) { - ret = wc_HashSetFlags(&hash, notSupported[j], flags); - if (ret == 0) { - ret = -1; - } - else if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_HashFree(&hash, notSupported[j]); - if (ret == 0) { - ret = -1; - } - else if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + for (j = 0; j < notSupportedLen; j++) { + ExpectIntEQ(wc_HashInit(&hash, notSupported[j]), BAD_FUNC_ARG); + ExpectIntEQ(wc_HashSetFlags(&hash, notSupported[j], flags), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HashFree(&hash, notSupported[j]), BAD_FUNC_ARG); } - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_HashSetFlags */ /* * Unit test function for wc_HashGetFlags() */ static int test_wc_HashGetFlags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLFSSL_HASH_FLAGS wc_HashAlg hash; - int ret = 0; word32 flags = 0; int i, j; @@ -31571,56 +25319,22 @@ static int test_wc_HashGetFlags(void) /* For loop to test various arguments... */ for (i = 0; i < enumlen; i++) { - ret = wc_HashInit(&hash, enumArray[i]); - if (ret == 0) { - ret = wc_HashGetFlags(&hash, enumArray[i], &flags); - } - if (ret == 0) { - if (flags & WC_HASH_FLAG_ISCOPY) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_HashGetFlags(NULL, enumArray[i], &flags); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_HashInit(&hash, enumArray[i]), 0); + ExpectIntEQ(wc_HashGetFlags(&hash, enumArray[i], &flags), 0); + ExpectTrue((flags & WC_HASH_FLAG_ISCOPY) == 0); + ExpectIntEQ(wc_HashGetFlags(NULL, enumArray[i], &flags), BAD_FUNC_ARG); wc_HashFree(&hash, enumArray[i]); - if (ret != 0) { - break; - } } /* For loop to test not supported cases */ notSupportedLen = (sizeof(notSupported)/sizeof(enum wc_HashType)); - for (j = 0; ret == 0 && j < notSupportedLen; j++) { - ret = wc_HashInit(&hash, notSupported[j]); - if (ret == 0) { - ret = -1; - } - else if (ret == BAD_FUNC_ARG) { - ret = wc_HashGetFlags(&hash, notSupported[j], &flags); - if (ret == 0) { - ret = -1; - } - else if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = wc_HashFree(&hash, notSupported[j]); - if (ret == 0) { - ret = -1; - } - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + for (j = 0; j < notSupportedLen; j++) { + ExpectIntEQ(wc_HashInit(&hash, notSupported[j]), BAD_FUNC_ARG); + ExpectIntEQ(wc_HashGetFlags(&hash, notSupported[j], &flags), + BAD_FUNC_ARG); + ExpectIntEQ(wc_HashFree(&hash, notSupported[j]), BAD_FUNC_ARG); } - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_HashGetFlags */ /*----------------------------------------------------------------------------* @@ -34404,7 +28118,7 @@ static int test_wolfSSL_X509_INFO_multiple_info(void) /* concatenate the cert and the key file to force PEM_X509_INFO_read_bio * to group objects together. */ ExpectNotNull(concatBIO = BIO_new(BIO_s_mem())); - for (curFile = files; *curFile != NULL; curFile++) { + for (curFile = files; EXPECT_SUCCESS() && *curFile != NULL; curFile++) { int fileLen; ExpectNotNull(fileBIO = BIO_new_file(*curFile, "rb")); ExpectIntGT(fileLen = wolfSSL_BIO_get_len(fileBIO), 0); @@ -34412,6 +28126,8 @@ static int test_wolfSSL_X509_INFO_multiple_info(void) while ((len = BIO_read(fileBIO, tmp, sizeof(tmp))) > 0) { ExpectIntEQ(BIO_write(concatBIO, tmp, len), len); fileLen -= len; + if (EXPECT_FAIL()) + break; } /* Make sure we read the entire file */ ExpectIntEQ(fileLen, 0); @@ -34656,7 +28372,7 @@ static int test_wolfSSL_DES(void) /* check, check of odd parity */ XMEMSET(myDes, 4, sizeof(const_DES_cblock)); - myDes[0] = 6; /*set even parity*/ + myDes[0] = 6; /* set even parity */ XMEMSET(key, 5, sizeof(DES_key_schedule)); ExpectIntEQ(DES_set_key_checked(&myDes, &key), -1); ExpectIntNE(key[0], myDes[0]); /* should not have copied over key */ @@ -41632,42 +35348,41 @@ static int test_wolfSSL_X509(void) static int test_wolfSSL_X509_get_ext_count(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_CERTS) && !defined(NO_FILESYSTEM) && \ !defined(NO_RSA) int ret = 0; - WOLFSSL_X509* x509; + WOLFSSL_X509* x509 = NULL; const char ocspRootCaFile[] = "./certs/ocsp/root-ca-cert.pem"; - FILE* f; + XFILE f = XBADFILE; /* NULL parameter check */ - AssertIntEQ(X509_get_ext_count(NULL), WOLFSSL_FAILURE); + ExpectIntEQ(X509_get_ext_count(NULL), WOLFSSL_FAILURE); - AssertNotNull(x509 = wolfSSL_X509_load_certificate_file(svrCertFile, - SSL_FILETYPE_PEM)); - AssertIntEQ(X509_get_ext_count(x509), 5); + ExpectNotNull(x509 = wolfSSL_X509_load_certificate_file(svrCertFile, + SSL_FILETYPE_PEM)); + ExpectIntEQ(X509_get_ext_count(x509), 5); wolfSSL_X509_free(x509); - AssertNotNull(x509 = wolfSSL_X509_load_certificate_file(ocspRootCaFile, - SSL_FILETYPE_PEM)); - AssertIntEQ(X509_get_ext_count(x509), 5); + ExpectNotNull(x509 = wolfSSL_X509_load_certificate_file(ocspRootCaFile, + SSL_FILETYPE_PEM)); + ExpectIntEQ(X509_get_ext_count(x509), 5); wolfSSL_X509_free(x509); - AssertNotNull(f = fopen("./certs/server-cert.pem", "rb")); - AssertNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); - fclose(f); + ExpectTrue((f = XFOPEN("./certs/server-cert.pem", "rb")) != XBADFILE); + ExpectNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); + if (f != XBADFILE) + XFCLOSE(f); /* wolfSSL_X509_get_ext_count() valid input */ - AssertIntEQ((ret = wolfSSL_X509_get_ext_count(x509)), 5); + ExpectIntEQ((ret = wolfSSL_X509_get_ext_count(x509)), 5); /* wolfSSL_X509_get_ext_count() NULL argument */ - AssertIntEQ((ret = wolfSSL_X509_get_ext_count(NULL)), WOLFSSL_FAILURE); + ExpectIntEQ((ret = wolfSSL_X509_get_ext_count(NULL)), WOLFSSL_FAILURE); wolfSSL_X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509_sign2(void) @@ -43214,7 +36929,7 @@ static int test_WOLFSSL_ERROR_MSG(void) res = TEST_SUCCESS; #endif return res; -}/*End test_WOLFSSL_ERROR_MSG*/ +} /* End test_WOLFSSL_ERROR_MSG */ /* * Testing wc_ERR_remove_state */ @@ -43227,7 +36942,7 @@ static int test_wc_ERR_remove_state(void) res = TEST_SUCCESS; #endif return res; -}/*End test_wc_ERR_remove_state*/ +} /* End test_wc_ERR_remove_state */ /* * Testing wc_ERR_print_errors_fp */ @@ -43256,7 +36971,7 @@ static int test_wc_ERR_print_errors_fp(void) (void)sz; #endif return EXPECT_RESULT(); -}/*End test_wc_ERR_print_errors_fp*/ +} /* End test_wc_ERR_print_errors_fp */ #ifdef DEBUG_WOLFSSL static void Logging_cb(const int logLevel, const char *const logMessage) { @@ -43281,7 +36996,7 @@ static int test_wolfSSL_GetLoggingCb(void) ExpectNull(wolfSSL_GetLoggingCb()); return EXPECT_RESULT(); -}/*End test_wolfSSL_GetLoggingCb*/ +} /* End test_wolfSSL_GetLoggingCb */ #endif /* !NO_BIO */ @@ -45919,7 +39634,7 @@ static int test_wolfSSL_d2i_PrivateKeys_bio(void) ExpectIntEQ(SSL_CTX_use_RSAPrivateKey(ctx, rsa), WOLFSSL_SUCCESS); - /*i2d RSAprivate key tests */ + /* i2d RSAprivate key tests */ ExpectIntEQ(wolfSSL_i2d_RSAPrivateKey(NULL, NULL), BAD_FUNC_ARG); ExpectIntEQ(wolfSSL_i2d_RSAPrivateKey(rsa, NULL), 1192); ExpectIntEQ(wolfSSL_i2d_RSAPrivateKey(rsa, &bufPtr), @@ -49456,71 +43171,69 @@ static int test_wolfSSL_EVP_PKEY_get0_EC_KEY(void) static int test_wolfSSL_EVP_X_STATE(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DES3) && !defined(NO_RC4) byte key[DES3_KEY_SIZE] = {0}; byte iv[DES_IV_SIZE] = {0}; - EVP_CIPHER_CTX *ctx; - const EVP_CIPHER *init; + EVP_CIPHER_CTX *ctx = NULL; + const EVP_CIPHER *init = NULL; /* Bad test cases */ - ctx = EVP_CIPHER_CTX_new(); - init = EVP_des_ede3_cbc(); + ExpectNotNull(ctx = EVP_CIPHER_CTX_new()); + ExpectNotNull(init = EVP_des_ede3_cbc()); wolfSSL_EVP_CIPHER_CTX_init(ctx); - AssertIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); - AssertNull(wolfSSL_EVP_X_STATE(NULL)); - AssertNull(wolfSSL_EVP_X_STATE(ctx)); + ExpectNull(wolfSSL_EVP_X_STATE(NULL)); + ExpectNull(wolfSSL_EVP_X_STATE(ctx)); EVP_CIPHER_CTX_free(ctx); + ctx = NULL; /* Good test case */ - ctx = EVP_CIPHER_CTX_new(); - init = wolfSSL_EVP_rc4(); + ExpectNotNull(ctx = EVP_CIPHER_CTX_new()); + ExpectNotNull(init = wolfSSL_EVP_rc4()); wolfSSL_EVP_CIPHER_CTX_init(ctx); - AssertIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); - AssertNotNull(wolfSSL_EVP_X_STATE(ctx)); + ExpectNotNull(wolfSSL_EVP_X_STATE(ctx)); EVP_CIPHER_CTX_free(ctx); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_EVP_X_STATE_LEN(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_DES3) && !defined(NO_RC4) byte key[DES3_KEY_SIZE] = {0}; byte iv[DES_IV_SIZE] = {0}; - EVP_CIPHER_CTX *ctx; - const EVP_CIPHER *init; + EVP_CIPHER_CTX *ctx = NULL; + const EVP_CIPHER *init = NULL; /* Bad test cases */ - ctx = EVP_CIPHER_CTX_new(); - init = EVP_des_ede3_cbc(); + ExpectNotNull(ctx = EVP_CIPHER_CTX_new()); + ExpectNotNull(init = EVP_des_ede3_cbc()); wolfSSL_EVP_CIPHER_CTX_init(ctx); - AssertIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_EVP_X_STATE_LEN(NULL), 0); - AssertIntEQ(wolfSSL_EVP_X_STATE_LEN(ctx), 0); + ExpectIntEQ(wolfSSL_EVP_X_STATE_LEN(NULL), 0); + ExpectIntEQ(wolfSSL_EVP_X_STATE_LEN(ctx), 0); EVP_CIPHER_CTX_free(ctx); + ctx = NULL; /* Good test case */ - ctx = EVP_CIPHER_CTX_new(); - init = wolfSSL_EVP_rc4(); + ExpectNotNull(ctx = EVP_CIPHER_CTX_new()); + ExpectNotNull(init = wolfSSL_EVP_rc4()); wolfSSL_EVP_CIPHER_CTX_init(ctx); - AssertIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_EVP_X_STATE_LEN(ctx), sizeof(Arc4)); + ExpectIntEQ(wolfSSL_EVP_X_STATE_LEN(ctx), sizeof(Arc4)); EVP_CIPHER_CTX_free(ctx); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_EVP_CIPHER_block_size(void) @@ -49616,6 +43329,7 @@ static int test_wolfSSL_EVP_CIPHER_block_size(void) static int test_wolfSSL_EVP_CIPHER_iv_length(void) { + EXPECT_DECLS; int nids[] = { #if defined(HAVE_AES_CBC) || defined(WOLFSSL_AES_DIRECT) #ifdef WOLFSSL_AES_128 @@ -49711,10 +43425,10 @@ static int test_wolfSSL_EVP_CIPHER_iv_length(void) for (i = 0; i < nidsLen; i++) { const EVP_CIPHER *c = EVP_get_cipherbynid(nids[i]); - AssertIntEQ(EVP_CIPHER_iv_length(c), iv_lengths[i]); + ExpectIntEQ(EVP_CIPHER_iv_length(c), iv_lengths[i]); } - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } static int test_wolfSSL_EVP_SignInit_ex(void) @@ -50339,42 +44053,41 @@ static int test_wolfSSL_NCONF(void) #endif /* OPENSSL_ALL */ static int test_wolfSSL_X509V3_EXT_get(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_FILESYSTEM) && defined(OPENSSL_ALL) && !defined(NO_RSA) - FILE* f; + XFILE f = XBADFILE; int numOfExt =0; int extNid = 0; int i = 0; - WOLFSSL_X509* x509; - WOLFSSL_X509_EXTENSION* ext; - const WOLFSSL_v3_ext_method* method; + WOLFSSL_X509* x509 = NULL; + WOLFSSL_X509_EXTENSION* ext = NULL; + const WOLFSSL_v3_ext_method* method = NULL; - AssertNotNull(f = fopen("./certs/server-cert.pem", "rb")); - AssertNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); - fclose(f); + ExpectTrue((f = XFOPEN("./certs/server-cert.pem", "rb")) != XBADFILE); + ExpectNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); + if (f != XBADFILE) + XFCLOSE(f); /* wolfSSL_X509V3_EXT_get() return struct and nid test */ - AssertIntEQ((numOfExt = wolfSSL_X509_get_ext_count(x509)), 5); + ExpectIntEQ((numOfExt = wolfSSL_X509_get_ext_count(x509)), 5); for (i = 0; i < numOfExt; i++) { - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, i)); - AssertIntNE((extNid = ext->obj->nid), NID_undef); - AssertNotNull(method = wolfSSL_X509V3_EXT_get(ext)); - AssertIntEQ(method->ext_nid, extNid); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, i)); + ExpectIntNE((extNid = ext->obj->nid), NID_undef); + ExpectNotNull(method = wolfSSL_X509V3_EXT_get(ext)); + ExpectIntEQ(method->ext_nid, extNid); } /* wolfSSL_X509V3_EXT_get() NULL argument test */ - AssertNull(method = wolfSSL_X509V3_EXT_get(NULL)); + ExpectNull(method = wolfSSL_X509V3_EXT_get(NULL)); wolfSSL_X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509V3_EXT_nconf(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef OPENSSL_ALL const char *ext_names[] = { "subjectKeyIdentifier", @@ -50397,184 +44110,205 @@ static int test_wolfSSL_X509V3_EXT_nconf(void) "digitalSignature,keyEncipherment,dataEncipherment", }; size_t i; - X509_EXTENSION* ext; - X509* x509 = X509_new(); + X509_EXTENSION* ext = NULL; + X509* x509 = NULL; + + ExpectNotNull(x509 = X509_new()); for (i = 0; i < ext_names_count; i++) { - ext = X509V3_EXT_nconf(NULL, NULL, ext_names[i], ext_values[i]); - AssertNotNull(ext); + ExpectNotNull(ext = X509V3_EXT_nconf(NULL, NULL, ext_names[i], + ext_values[i])); X509_EXTENSION_free(ext); + ext = NULL; } for (i = 0; i < ext_nids_count; i++) { - ext = X509V3_EXT_nconf_nid(NULL, NULL, ext_nids[i], ext_values[i]); - AssertNotNull(ext); + ExpectNotNull(ext = X509V3_EXT_nconf_nid(NULL, NULL, ext_nids[i], + ext_values[i])); X509_EXTENSION_free(ext); + ext = NULL; } /* Test adding extension to X509 */ for (i = 0; i < ext_nids_count; i++) { - ext = X509V3_EXT_nconf(NULL, NULL, ext_names[i], ext_values[i]); - AssertIntEQ(X509_add_ext(x509, ext, -1), WOLFSSL_SUCCESS); + ExpectNotNull(ext = X509V3_EXT_nconf(NULL, NULL, ext_names[i], + ext_values[i])); + ExpectIntEQ(X509_add_ext(x509, ext, -1), WOLFSSL_SUCCESS); X509_EXTENSION_free(ext); + ext = NULL; } X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509V3_EXT(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_FILESYSTEM) && defined(OPENSSL_ALL) && !defined(NO_RSA) - FILE* f; - int numOfExt = 0, nid = 0, i = 0, expected, actual; - char* str; - unsigned char* data; - const WOLFSSL_v3_ext_method* method; - WOLFSSL_X509* x509; - WOLFSSL_X509_EXTENSION* ext; - WOLFSSL_X509_EXTENSION* ext2; - WOLFSSL_ASN1_OBJECT *obj, *adObj; - WOLFSSL_ASN1_STRING* asn1str; - WOLFSSL_AUTHORITY_KEYID* aKeyId; - WOLFSSL_AUTHORITY_INFO_ACCESS* aia; - WOLFSSL_BASIC_CONSTRAINTS* bc; - WOLFSSL_ACCESS_DESCRIPTION* ad; - WOLFSSL_GENERAL_NAME* gn; + XFILE f = XBADFILE; + int numOfExt = 0, nid = 0, i = 0, expected, actual = 0; + char* str = NULL; + unsigned char* data = NULL; + const WOLFSSL_v3_ext_method* method = NULL; + WOLFSSL_X509* x509 = NULL; + WOLFSSL_X509_EXTENSION* ext = NULL; + WOLFSSL_X509_EXTENSION* ext2 = NULL; + WOLFSSL_ASN1_OBJECT *obj = NULL; + WOLFSSL_ASN1_OBJECT *adObj = NULL; + WOLFSSL_ASN1_STRING* asn1str = NULL; + WOLFSSL_AUTHORITY_KEYID* aKeyId = NULL; + WOLFSSL_AUTHORITY_INFO_ACCESS* aia = NULL; + WOLFSSL_BASIC_CONSTRAINTS* bc = NULL; + WOLFSSL_ACCESS_DESCRIPTION* ad = NULL; + WOLFSSL_GENERAL_NAME* gn = NULL; /* Check NULL argument */ - AssertNull(wolfSSL_X509V3_EXT_d2i(NULL)); + ExpectNull(wolfSSL_X509V3_EXT_d2i(NULL)); /* Using OCSP cert with X509V3 extensions */ - AssertNotNull(f = fopen("./certs/ocsp/root-ca-cert.pem", "rb")); - AssertNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); - fclose(f); + ExpectTrue((f = XFOPEN("./certs/ocsp/root-ca-cert.pem", "rb")) != XBADFILE); + ExpectNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); + if (f != XBADFILE) + XFCLOSE(f); - AssertIntEQ((numOfExt = wolfSSL_X509_get_ext_count(x509)), 5); + ExpectIntEQ((numOfExt = wolfSSL_X509_get_ext_count(x509)), 5); /* Basic Constraints */ - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, i)); - AssertNotNull(obj = wolfSSL_X509_EXTENSION_get_object(ext)); - AssertIntEQ((nid = wolfSSL_OBJ_obj2nid(obj)), NID_basic_constraints); - AssertNotNull(bc = (WOLFSSL_BASIC_CONSTRAINTS*)wolfSSL_X509V3_EXT_d2i(ext)); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, i)); + ExpectNotNull(obj = wolfSSL_X509_EXTENSION_get_object(ext)); + ExpectIntEQ((nid = wolfSSL_OBJ_obj2nid(obj)), NID_basic_constraints); + ExpectNotNull(bc = (WOLFSSL_BASIC_CONSTRAINTS*)wolfSSL_X509V3_EXT_d2i(ext)); - AssertIntEQ(bc->ca, 1); - AssertNull(bc->pathlen); + ExpectIntEQ(bc->ca, 1); + ExpectNull(bc->pathlen); wolfSSL_BASIC_CONSTRAINTS_free(bc); + bc = NULL; i++; /* Subject Key Identifier */ - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, i)); - AssertNotNull(obj = wolfSSL_X509_EXTENSION_get_object(ext)); - AssertIntEQ((nid = wolfSSL_OBJ_obj2nid(obj)), NID_subject_key_identifier); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, i)); + ExpectNotNull(obj = wolfSSL_X509_EXTENSION_get_object(ext)); + ExpectIntEQ((nid = wolfSSL_OBJ_obj2nid(obj)), NID_subject_key_identifier); - AssertNotNull(asn1str = (WOLFSSL_ASN1_STRING*)wolfSSL_X509V3_EXT_d2i(ext)); - AssertNotNull(ext2 = wolfSSL_X509V3_EXT_i2d(NID_subject_key_identifier, 0, - asn1str)); + ExpectNotNull(asn1str = (WOLFSSL_ASN1_STRING*)wolfSSL_X509V3_EXT_d2i(ext)); + ExpectNotNull(ext2 = wolfSSL_X509V3_EXT_i2d(NID_subject_key_identifier, 0, + asn1str)); X509_EXTENSION_free(ext2); - AssertNotNull(method = wolfSSL_X509V3_EXT_get(ext)); - AssertNotNull(method->i2s); - AssertNotNull(str = method->i2s((WOLFSSL_v3_ext_method*)method, asn1str)); + ext2 = NULL; + ExpectNotNull(method = wolfSSL_X509V3_EXT_get(ext)); + ExpectNotNull(method->i2s); + ExpectNotNull(str = method->i2s((WOLFSSL_v3_ext_method*)method, asn1str)); wolfSSL_ASN1_STRING_free(asn1str); - actual = strcmp(str, - "73:B0:1C:A4:2F:82:CB:CF:47:A5:38:D7:B0:04:82:3A:7E:72:15:21"); - AssertIntEQ(actual, 0); + asn1str = NULL; + if (str != NULL) { + actual = strcmp(str, + "73:B0:1C:A4:2F:82:CB:CF:47:A5:38:D7:B0:04:82:3A:7E:72:15:21"); + } + ExpectIntEQ(actual, 0); XFREE(str, NULL, DYNAMIC_TYPE_TMP_BUFFER); + str = NULL; i++; /* Authority Key Identifier */ - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, i)); - AssertNotNull(obj = wolfSSL_X509_EXTENSION_get_object(ext)); - AssertIntEQ((nid = wolfSSL_OBJ_obj2nid(obj)), NID_authority_key_identifier); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, i)); + ExpectNotNull(obj = wolfSSL_X509_EXTENSION_get_object(ext)); + ExpectIntEQ((nid = wolfSSL_OBJ_obj2nid(obj)), NID_authority_key_identifier); - AssertNotNull(aKeyId = - (WOLFSSL_AUTHORITY_KEYID*)wolfSSL_X509V3_EXT_d2i(ext)); - AssertNotNull(method = wolfSSL_X509V3_EXT_get(ext)); - AssertNotNull(asn1str = aKeyId->keyid); - AssertNotNull(str = - wolfSSL_i2s_ASN1_STRING((WOLFSSL_v3_ext_method*)method, asn1str)); - actual = strcmp(str, - "73:B0:1C:A4:2F:82:CB:CF:47:A5:38:D7:B0:04:82:3A:7E:72:15:21"); - AssertIntEQ(actual, 0); + ExpectNotNull(aKeyId = (WOLFSSL_AUTHORITY_KEYID*)wolfSSL_X509V3_EXT_d2i( + ext)); + ExpectNotNull(method = wolfSSL_X509V3_EXT_get(ext)); + ExpectNotNull(asn1str = aKeyId->keyid); + ExpectNotNull(str = wolfSSL_i2s_ASN1_STRING((WOLFSSL_v3_ext_method*)method, + asn1str)); + asn1str = NULL; + if (str != NULL) { + actual = strcmp(str, + "73:B0:1C:A4:2F:82:CB:CF:47:A5:38:D7:B0:04:82:3A:7E:72:15:21"); + } + ExpectIntEQ(actual, 0); XFREE(str, NULL, DYNAMIC_TYPE_TMP_BUFFER); + str = NULL; wolfSSL_AUTHORITY_KEYID_free(aKeyId); + aKeyId = NULL; i++; /* Key Usage */ - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, i)); - AssertNotNull(obj = wolfSSL_X509_EXTENSION_get_object(ext)); - AssertIntEQ((nid = wolfSSL_OBJ_obj2nid(obj)), NID_key_usage); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, i)); + ExpectNotNull(obj = wolfSSL_X509_EXTENSION_get_object(ext)); + ExpectIntEQ((nid = wolfSSL_OBJ_obj2nid(obj)), NID_key_usage); - AssertNotNull(asn1str = (WOLFSSL_ASN1_STRING*)wolfSSL_X509V3_EXT_d2i(ext)); + ExpectNotNull(asn1str = (WOLFSSL_ASN1_STRING*)wolfSSL_X509V3_EXT_d2i(ext)); #if defined(WOLFSSL_QT) - AssertNotNull(data = (unsigned char*)ASN1_STRING_get0_data(asn1str)); + ExpectNotNull(data = (unsigned char*)ASN1_STRING_get0_data(asn1str)); #else - AssertNotNull(data = wolfSSL_ASN1_STRING_data(asn1str)); + ExpectNotNull(data = wolfSSL_ASN1_STRING_data(asn1str)); #endif expected = KEYUSE_KEY_CERT_SIGN | KEYUSE_CRL_SIGN; -#ifdef BIG_ENDIAN_ORDER - actual = data[1]; -#else - actual = data[0]; -#endif - AssertIntEQ(actual, expected); + if (data != NULL) { + #ifdef BIG_ENDIAN_ORDER + actual = data[1]; + #else + actual = data[0]; + #endif + } + ExpectIntEQ(actual, expected); wolfSSL_ASN1_STRING_free(asn1str); + asn1str = NULL; #if 1 i++; /* Authority Info Access */ - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, i)); - AssertNotNull(obj = wolfSSL_X509_EXTENSION_get_object(ext)); - AssertIntEQ((nid = wolfSSL_OBJ_obj2nid(obj)), NID_info_access); - AssertNotNull(aia = - (WOLFSSL_AUTHORITY_INFO_ACCESS*)wolfSSL_X509V3_EXT_d2i(ext)); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, i)); + ExpectNotNull(obj = wolfSSL_X509_EXTENSION_get_object(ext)); + ExpectIntEQ((nid = wolfSSL_OBJ_obj2nid(obj)), NID_info_access); + ExpectNotNull(aia = (WOLFSSL_AUTHORITY_INFO_ACCESS*)wolfSSL_X509V3_EXT_d2i( + ext)); #if defined(WOLFSSL_QT) - AssertIntEQ(OPENSSL_sk_num(aia), 1); /* Only one URI entry for this cert */ + ExpectIntEQ(OPENSSL_sk_num(aia), 1); /* Only one URI entry for this cert */ #else - AssertIntEQ(wolfSSL_sk_num(aia), 1); /* Only one URI entry for this cert */ + ExpectIntEQ(wolfSSL_sk_num(aia), 1); /* Only one URI entry for this cert */ #endif /* URI entry is an ACCESS_DESCRIPTION type */ #if defined(WOLFSSL_QT) - AssertNotNull(ad = (WOLFSSL_ACCESS_DESCRIPTION*)wolfSSL_sk_value(aia, 0)); + ExpectNotNull(ad = (WOLFSSL_ACCESS_DESCRIPTION*)wolfSSL_sk_value(aia, 0)); #else - AssertNotNull(ad = (WOLFSSL_ACCESS_DESCRIPTION*)OPENSSL_sk_value(aia, 0)); + ExpectNotNull(ad = (WOLFSSL_ACCESS_DESCRIPTION*)OPENSSL_sk_value(aia, 0)); #endif - AssertNotNull(adObj = ad->method); + ExpectNotNull(adObj = ad->method); /* Make sure nid is OCSP */ - AssertIntEQ(wolfSSL_OBJ_obj2nid(adObj), NID_ad_OCSP); + ExpectIntEQ(wolfSSL_OBJ_obj2nid(adObj), NID_ad_OCSP); /* GENERAL_NAME stores URI as an ASN1_STRING */ - AssertNotNull(gn = ad->location); - AssertIntEQ(gn->type, GEN_URI); /* Type should always be GEN_URI */ - AssertNotNull(asn1str = gn->d.uniformResourceIdentifier); - AssertIntEQ(wolfSSL_ASN1_STRING_length(asn1str), 22); - #if defined(WOLFSSL_QT) - str = (char*)ASN1_STRING_get0_data(asn1str); - #else - str = (char*)wolfSSL_ASN1_STRING_data(asn1str); - #endif - actual = strcmp(str, "http://127.0.0.1:22220"); - AssertIntEQ(actual, 0); + ExpectNotNull(gn = ad->location); + ExpectIntEQ(gn->type, GEN_URI); /* Type should always be GEN_URI */ + ExpectNotNull(asn1str = gn->d.uniformResourceIdentifier); + ExpectIntEQ(wolfSSL_ASN1_STRING_length(asn1str), 22); +#if defined(WOLFSSL_QT) + ExpectNotNull(str = (char*)ASN1_STRING_get0_data(asn1str)); +#else + ExpectNotNull(str = (char*)wolfSSL_ASN1_STRING_data(asn1str)); +#endif + if (str != NULL) { + actual = strcmp(str, "http://127.0.0.1:22220"); + } + ExpectIntEQ(actual, 0); wolfSSL_sk_ACCESS_DESCRIPTION_pop_free(aia, NULL); + aia = NULL; #else (void) aia; (void) ad; (void) adObj; (void) gn; #endif wolfSSL_X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509_get_extension_flags(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_RSA) - XFILE f; - X509* x509; + XFILE f = XBADFILE; + X509* x509 = NULL; unsigned int extFlags; unsigned int keyUsageFlags; unsigned int extKeyUsageFlags; @@ -50588,14 +44322,18 @@ static int test_wolfSSL_X509_get_extension_flags(void) /* and the following extended key usage flags. */ extKeyUsageFlags = XKU_SSL_CLIENT | XKU_SMIME; - f = XFOPEN("./certs/intermediate/client-int-cert.pem", "rb"); - AssertTrue(f != XBADFILE); - AssertNotNull(x509 = PEM_read_X509(f, NULL, NULL, NULL)); - XFCLOSE(f); - AssertIntEQ(X509_get_extension_flags(x509), extFlags); - AssertIntEQ(X509_get_key_usage(x509), keyUsageFlags); - AssertIntEQ(X509_get_extended_key_usage(x509), extKeyUsageFlags); + ExpectTrue((f = XFOPEN("./certs/intermediate/client-int-cert.pem", "rb")) != + XBADFILE); + ExpectNotNull(x509 = PEM_read_X509(f, NULL, NULL, NULL)); + if (f != XBADFILE) { + XFCLOSE(f); + f = XBADFILE; + } + ExpectIntEQ(X509_get_extension_flags(x509), extFlags); + ExpectIntEQ(X509_get_key_usage(x509), keyUsageFlags); + ExpectIntEQ(X509_get_extended_key_usage(x509), extKeyUsageFlags); X509_free(x509); + x509 = NULL; /* client-cert-ext.pem has the following extension flags. */ extFlags = EXFLAG_KUSAGE; @@ -50604,103 +44342,100 @@ static int test_wolfSSL_X509_get_extension_flags(void) | KU_KEY_CERT_SIGN | KU_CRL_SIGN; - AssertNotNull(f = fopen("./certs/client-cert-ext.pem", "rb")); - AssertNotNull(x509 = PEM_read_X509(f, NULL, NULL, NULL)); - XFCLOSE(f); - AssertIntEQ(X509_get_extension_flags(x509), extFlags); - AssertIntEQ(X509_get_key_usage(x509), keyUsageFlags); + ExpectTrue((f = fopen("./certs/client-cert-ext.pem", "rb")) != XBADFILE); + ExpectNotNull(x509 = PEM_read_X509(f, NULL, NULL, NULL)); + if (f != XBADFILE) + XFCLOSE(f); + ExpectIntEQ(X509_get_extension_flags(x509), extFlags); + ExpectIntEQ(X509_get_key_usage(x509), keyUsageFlags); X509_free(x509); - - res = TEST_RES_CHECK(1); #endif /* OPENSSL_ALL */ - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509_get_ext(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_FILESYSTEM) && defined(OPENSSL_ALL) && !defined(NO_RSA) int ret = 0; - FILE* f; - WOLFSSL_X509* x509; + XFILE f = XBADFILE; + WOLFSSL_X509* x509 = NULL; WOLFSSL_X509_EXTENSION* foundExtension; - AssertNotNull(f = fopen("./certs/server-cert.pem", "rb")); - AssertNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); - fclose(f); - AssertIntEQ((ret = wolfSSL_X509_get_ext_count(x509)), 5); + ExpectTrue((f = XFOPEN("./certs/server-cert.pem", "rb")) != XBADFILE); + ExpectNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); + if (f != XBADFILE) + XFCLOSE(f); + ExpectIntEQ((ret = wolfSSL_X509_get_ext_count(x509)), 5); /* wolfSSL_X509_get_ext() valid input */ - AssertNotNull(foundExtension = wolfSSL_X509_get_ext(x509, 0)); + ExpectNotNull(foundExtension = wolfSSL_X509_get_ext(x509, 0)); /* wolfSSL_X509_get_ext() valid x509, idx out of bounds */ - AssertNull(foundExtension = wolfSSL_X509_get_ext(x509, -1)); - AssertNull(foundExtension = wolfSSL_X509_get_ext(x509, 100)); + ExpectNull(foundExtension = wolfSSL_X509_get_ext(x509, -1)); + ExpectNull(foundExtension = wolfSSL_X509_get_ext(x509, 100)); /* wolfSSL_X509_get_ext() NULL x509, idx out of bounds */ - AssertNull(foundExtension = wolfSSL_X509_get_ext(NULL, -1)); - AssertNull(foundExtension = wolfSSL_X509_get_ext(NULL, 100)); + ExpectNull(foundExtension = wolfSSL_X509_get_ext(NULL, -1)); + ExpectNull(foundExtension = wolfSSL_X509_get_ext(NULL, 100)); /* wolfSSL_X509_get_ext() NULL x509, valid idx */ - AssertNull(foundExtension = wolfSSL_X509_get_ext(NULL, 0)); + ExpectNull(foundExtension = wolfSSL_X509_get_ext(NULL, 0)); wolfSSL_X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509_get_ext_by_NID(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_RSA) int rc; - FILE* f; - WOLFSSL_X509* x509; + XFILE f = XBADFILE; + WOLFSSL_X509* x509 = NULL; ASN1_OBJECT* obj = NULL; - AssertNotNull(f = fopen("./certs/server-cert.pem", "rb")); - AssertNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); - fclose(f); + ExpectTrue((f = XFOPEN("./certs/server-cert.pem", "rb")) != XBADFILE); + ExpectNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); + if (f != XBADFILE) + XFCLOSE(f); - rc = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, -1); - AssertIntGE(rc, 0); + ExpectIntGE(rc = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, + -1), 0); /* Start search from last location (should fail) */ - rc = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, rc); - AssertIntGE(rc, -1); + ExpectIntGE(rc = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, + rc), -1); - rc = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, -2); - AssertIntGE(rc, -1); + ExpectIntGE(rc = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, + -2), -1); - rc = wolfSSL_X509_get_ext_by_NID(NULL, NID_basic_constraints, -1); - AssertIntEQ(rc, -1); + ExpectIntEQ(rc = wolfSSL_X509_get_ext_by_NID(NULL, NID_basic_constraints, + -1), -1); - rc = wolfSSL_X509_get_ext_by_NID(x509, NID_undef, -1); - AssertIntEQ(rc, -1); + ExpectIntEQ(rc = wolfSSL_X509_get_ext_by_NID(x509, NID_undef, -1), -1); /* NID_ext_key_usage, check also its nid and oid */ - rc = wolfSSL_X509_get_ext_by_NID(x509, NID_ext_key_usage, -1); - AssertIntGT(rc, -1); - AssertNotNull(obj = wolfSSL_X509_EXTENSION_get_object(wolfSSL_X509_get_ext(x509, rc))); - AssertIntEQ(obj->nid, NID_ext_key_usage); - AssertIntEQ(obj->type, EXT_KEY_USAGE_OID); + ExpectIntGT(rc = wolfSSL_X509_get_ext_by_NID(x509, NID_ext_key_usage, -1), + -1); + ExpectNotNull(obj = wolfSSL_X509_EXTENSION_get_object(wolfSSL_X509_get_ext( + x509, rc))); + ExpectIntEQ(obj->nid, NID_ext_key_usage); + ExpectIntEQ(obj->type, EXT_KEY_USAGE_OID); wolfSSL_X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509_get_ext_subj_alt_name(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_RSA) int rc; - XFILE f; - WOLFSSL_X509* x509; + XFILE f = XBADFILE; + WOLFSSL_X509* x509 = NULL; WOLFSSL_X509_EXTENSION* ext; WOLFSSL_ASN1_STRING* sanString; byte* sanDer; @@ -50709,160 +44444,153 @@ static int test_wolfSSL_X509_get_ext_subj_alt_name(void) 0x30, 0x13, 0x82, 0x0b, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x87, 0x04, 0x7f, 0x00, 0x00, 0x01}; - f = XFOPEN("./certs/server-cert.pem", "rb"); - AssertTrue(f != XBADFILE); - AssertNotNull(x509 = PEM_read_X509(f, NULL, NULL, NULL)); - fclose(f); + ExpectTrue((f = XFOPEN("./certs/server-cert.pem", "rb")) != XBADFILE); + ExpectNotNull(x509 = PEM_read_X509(f, NULL, NULL, NULL)); + if (f != XBADFILE) + XFCLOSE(f); - rc = X509_get_ext_by_NID(x509, NID_subject_alt_name, -1); - AssertIntNE(rc, -1); - AssertNotNull(ext = X509_get_ext(x509, rc)); - AssertNotNull(sanString = X509_EXTENSION_get_data(ext)); - AssertIntEQ(ASN1_STRING_length(sanString), sizeof(expectedDer)); - AssertNotNull(sanDer = ASN1_STRING_data(sanString)); - AssertIntEQ(XMEMCMP(sanDer, expectedDer, sizeof(expectedDer)), 0); + ExpectIntNE(rc = X509_get_ext_by_NID(x509, NID_subject_alt_name, -1), -1); + ExpectNotNull(ext = X509_get_ext(x509, rc)); + ExpectNotNull(sanString = X509_EXTENSION_get_data(ext)); + ExpectIntEQ(ASN1_STRING_length(sanString), sizeof(expectedDer)); + ExpectNotNull(sanDer = ASN1_STRING_data(sanString)); + ExpectIntEQ(XMEMCMP(sanDer, expectedDer, sizeof(expectedDer)), 0); X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509_EXTENSION_new(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined (OPENSSL_ALL) - WOLFSSL_X509_EXTENSION* ext; + WOLFSSL_X509_EXTENSION* ext = NULL; - AssertNotNull(ext = wolfSSL_X509_EXTENSION_new()); - AssertNotNull(ext->obj = wolfSSL_ASN1_OBJECT_new()); - ext->obj->nid = WOLFSSL_SUCCESS; - AssertIntEQ(WOLFSSL_SUCCESS, ext->obj->nid); + ExpectNotNull(ext = wolfSSL_X509_EXTENSION_new()); + ExpectNotNull(ext->obj = wolfSSL_ASN1_OBJECT_new()); wolfSSL_X509_EXTENSION_free(ext); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509_EXTENSION_get_object(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_FILESYSTEM) && defined(OPENSSL_ALL) && !defined(NO_RSA) - WOLFSSL_X509* x509; - WOLFSSL_X509_EXTENSION* ext; - WOLFSSL_ASN1_OBJECT* o; - FILE* file; + WOLFSSL_X509* x509 = NULL; + WOLFSSL_X509_EXTENSION* ext = NULL; + WOLFSSL_ASN1_OBJECT* o = NULL; + XFILE file = XBADFILE; - AssertNotNull(file = fopen("./certs/server-cert.pem", "rb")); - AssertNotNull(x509 = wolfSSL_PEM_read_X509(file, NULL, NULL, NULL)); - fclose(file); + ExpectTrue((file = XFOPEN("./certs/server-cert.pem", "rb")) != XBADFILE); + ExpectNotNull(x509 = wolfSSL_PEM_read_X509(file, NULL, NULL, NULL)); + if (file != XBADFILE) + XFCLOSE(file); /* wolfSSL_X509_EXTENSION_get_object() testing ext idx 0 */ - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, 0)); - AssertNotNull(o = wolfSSL_X509_EXTENSION_get_object(ext)); - AssertIntEQ(o->nid, 128); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, 0)); + ExpectNull(wolfSSL_X509_EXTENSION_get_object(NULL)); + ExpectNotNull(o = wolfSSL_X509_EXTENSION_get_object(ext)); + ExpectIntEQ(o->nid, 128); /* wolfSSL_X509_EXTENSION_get_object() NULL argument */ - AssertNull(o = wolfSSL_X509_EXTENSION_get_object(NULL)); + ExpectNull(o = wolfSSL_X509_EXTENSION_get_object(NULL)); wolfSSL_X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509_EXTENSION_get_data(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_FILESYSTEM) && defined(OPENSSL_ALL) && !defined(NO_RSA) - WOLFSSL_X509* x509; + WOLFSSL_X509* x509 = NULL; WOLFSSL_X509_EXTENSION* ext; WOLFSSL_ASN1_STRING* str; - FILE* file; + XFILE file = XBADFILE; - AssertNotNull(file = fopen("./certs/server-cert.pem", "rb")); - AssertNotNull(x509 = wolfSSL_PEM_read_X509(file, NULL, NULL, NULL)); - fclose(file); - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, 0)); + ExpectTrue((file = XFOPEN("./certs/server-cert.pem", "rb")) != XBADFILE); + ExpectNotNull(x509 = wolfSSL_PEM_read_X509(file, NULL, NULL, NULL)); + if (file != XBADFILE) + XFCLOSE(file); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, 0)); - AssertNotNull(str = wolfSSL_X509_EXTENSION_get_data(ext)); + ExpectNull(str = wolfSSL_X509_EXTENSION_get_data(NULL)); + ExpectNotNull(str = wolfSSL_X509_EXTENSION_get_data(ext)); wolfSSL_X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509_EXTENSION_get_critical(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_FILESYSTEM) && defined(OPENSSL_ALL) && !defined(NO_RSA) - WOLFSSL_X509* x509; + WOLFSSL_X509* x509 = NULL; WOLFSSL_X509_EXTENSION* ext; - FILE* file; + XFILE file = XBADFILE; int crit; - AssertNotNull(file = fopen("./certs/server-cert.pem", "rb")); - AssertNotNull(x509 = wolfSSL_PEM_read_X509(file, NULL, NULL, NULL)); - fclose(file); - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, 0)); + ExpectTrue((file = XFOPEN("./certs/server-cert.pem", "rb")) != XBADFILE); + ExpectNotNull(x509 = wolfSSL_PEM_read_X509(file, NULL, NULL, NULL)); + if (file != XBADFILE) + XFCLOSE(file); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, 0)); - crit = wolfSSL_X509_EXTENSION_get_critical(ext); - AssertIntEQ(crit, 0); + ExpectIntEQ(crit = wolfSSL_X509_EXTENSION_get_critical(NULL), BAD_FUNC_ARG); + ExpectIntEQ(crit = wolfSSL_X509_EXTENSION_get_critical(ext), 0); wolfSSL_X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509V3_EXT_print(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_FILESYSTEM) && defined(OPENSSL_ALL) && !defined(NO_BIO) && \ !defined(NO_RSA) { - FILE* f; - WOLFSSL_X509* x509; + XFILE f = XBADFILE; + WOLFSSL_X509* x509 = NULL; X509_EXTENSION * ext = NULL; int loc; BIO *bio = NULL; - AssertNotNull(f = fopen(svrCertFile, "rb")); - AssertNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); - fclose(f); + ExpectTrue((f = XFOPEN(svrCertFile, "rb")) != XBADFILE); + ExpectNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL)); + if (f != XBADFILE) + fclose(f); - AssertNotNull(bio = wolfSSL_BIO_new(BIO_s_mem())); + ExpectNotNull(bio = wolfSSL_BIO_new(BIO_s_mem())); - loc = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, -1); - AssertIntGT(loc, -1); - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, loc)); - AssertIntEQ(wolfSSL_X509V3_EXT_print(bio, ext, 0, 0), WOLFSSL_SUCCESS); + ExpectIntGT(loc = wolfSSL_X509_get_ext_by_NID(x509, + NID_basic_constraints, -1), -1); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, loc)); + ExpectIntEQ(wolfSSL_X509V3_EXT_print(bio, ext, 0, 0), WOLFSSL_SUCCESS); - loc = wolfSSL_X509_get_ext_by_NID(x509, NID_subject_key_identifier, -1); - AssertIntGT(loc, -1); - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, loc)); - AssertIntEQ(wolfSSL_X509V3_EXT_print(bio, ext, 0, 0), WOLFSSL_SUCCESS); + ExpectIntGT(loc = wolfSSL_X509_get_ext_by_NID(x509, + NID_subject_key_identifier, -1), -1); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, loc)); + ExpectIntEQ(wolfSSL_X509V3_EXT_print(bio, ext, 0, 0), WOLFSSL_SUCCESS); - loc = wolfSSL_X509_get_ext_by_NID(x509, NID_authority_key_identifier, -1); - AssertIntGT(loc, -1); - AssertNotNull(ext = wolfSSL_X509_get_ext(x509, loc)); - AssertIntEQ(wolfSSL_X509V3_EXT_print(bio, ext, 0, 0), WOLFSSL_SUCCESS); + ExpectIntGT(loc = wolfSSL_X509_get_ext_by_NID(x509, + NID_authority_key_identifier, -1), -1); + ExpectNotNull(ext = wolfSSL_X509_get_ext(x509, loc)); + ExpectIntEQ(wolfSSL_X509V3_EXT_print(bio, ext, 0, 0), WOLFSSL_SUCCESS); wolfSSL_BIO_free(bio); wolfSSL_X509_free(x509); } { - X509 *x509; - BIO *bio; + X509 *x509 = NULL; + BIO *bio = NULL; X509_EXTENSION *ext; unsigned int i; unsigned int idx; @@ -50875,69 +44603,68 @@ static int test_wolfSSL_X509V3_EXT_print(void) }; int* n; - AssertNotNull(bio = BIO_new_fp(stderr, BIO_NOCLOSE)); + ExpectNotNull(bio = BIO_new_fp(stderr, BIO_NOCLOSE)); - AssertNotNull(x509 = wolfSSL_X509_load_certificate_file(cliCertFileExt, + ExpectNotNull(x509 = wolfSSL_X509_load_certificate_file(cliCertFileExt, WOLFSSL_FILETYPE_PEM)); - fprintf(stderr, "\nPrinting extension values:\n"); + ExpectIntGT(fprintf(stderr, "\nPrinting extension values:\n"), 0); for (i = 0, n = nids; i<(sizeof(nids)/sizeof(int)); i++, n++) { /* X509_get_ext_by_NID should return 3 for now. If that changes then * update the index */ - AssertIntEQ((idx = X509_get_ext_by_NID(x509, *n, -1)), 3); - AssertNotNull(ext = X509_get_ext(x509, idx)); - AssertIntEQ(X509V3_EXT_print(bio, ext, 0, 0), 1); - fprintf(stderr, "\n"); + ExpectIntEQ((idx = X509_get_ext_by_NID(x509, *n, -1)), 3); + ExpectNotNull(ext = X509_get_ext(x509, idx)); + ExpectIntEQ(X509V3_EXT_print(bio, ext, 0, 0), 1); + ExpectIntGT(fprintf(stderr, "\n"), 0); } BIO_free(bio); X509_free(x509); } - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_X509_cmp(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_RSA) - FILE* file1; - FILE* file2; - WOLFSSL_X509* cert1; - WOLFSSL_X509* cert2; + XFILE file1 = XBADFILE; + XFILE file2 = XBADFILE; + WOLFSSL_X509* cert1 = NULL; + WOLFSSL_X509* cert2 = NULL; - AssertNotNull(file1=fopen("./certs/server-cert.pem", "rb")); - AssertNotNull(file2=fopen("./certs/3072/client-cert.pem", "rb")); + ExpectTrue((file1 = XFOPEN("./certs/server-cert.pem", "rb")) != XBADFILE); + ExpectTrue((file2 = XFOPEN("./certs/3072/client-cert.pem", "rb")) != + XBADFILE); - AssertNotNull(cert1 = wolfSSL_PEM_read_X509(file1, NULL, NULL, NULL)); - AssertNotNull(cert2 = wolfSSL_PEM_read_X509(file2, NULL, NULL, NULL)); - fclose(file1); - fclose(file2); + ExpectNotNull(cert1 = wolfSSL_PEM_read_X509(file1, NULL, NULL, NULL)); + ExpectNotNull(cert2 = wolfSSL_PEM_read_X509(file2, NULL, NULL, NULL)); + if (file1 != XBADFILE) + fclose(file1); + if (file2 != XBADFILE) + fclose(file2); /* wolfSSL_X509_cmp() testing matching certs */ - AssertIntEQ(0, wolfSSL_X509_cmp(cert1, cert1)); + ExpectIntEQ(0, wolfSSL_X509_cmp(cert1, cert1)); /* wolfSSL_X509_cmp() testing mismatched certs */ - AssertIntEQ(-1, wolfSSL_X509_cmp(cert1, cert2)); + ExpectIntEQ(-1, wolfSSL_X509_cmp(cert1, cert2)); /* wolfSSL_X509_cmp() testing NULL, valid args */ - AssertIntEQ(BAD_FUNC_ARG, wolfSSL_X509_cmp(NULL, cert2)); + ExpectIntEQ(BAD_FUNC_ARG, wolfSSL_X509_cmp(NULL, cert2)); /* wolfSSL_X509_cmp() testing valid, NULL args */ - AssertIntEQ(BAD_FUNC_ARG, wolfSSL_X509_cmp(cert1, NULL)); + ExpectIntEQ(BAD_FUNC_ARG, wolfSSL_X509_cmp(cert1, NULL)); /* wolfSSL_X509_cmp() testing NULL, NULL args */ - AssertIntEQ(BAD_FUNC_ARG, wolfSSL_X509_cmp(NULL, NULL)); + ExpectIntEQ(BAD_FUNC_ARG, wolfSSL_X509_cmp(NULL, NULL)); wolfSSL_X509_free(cert1); wolfSSL_X509_free(cert2); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_EVP_PKEY_up_ref(void) @@ -51249,7 +44976,7 @@ static int test_wolfSSL_i2d_OCSP_CERTID(void) /* If target buffer is not null, function increments targetBuffer to point * just past the end of the encoded data. */ ExpectPtrEq(p, (targetBuffer + sizeof(rawCertId))); - for (i = 0; i < ret; ++i) { + for (i = 0; EXPECT_SUCCESS() && i < ret; ++i) { ExpectIntEQ(targetBuffer[i], rawCertId[i]); } XFREE(targetBuffer, NULL, DYNAMIC_TYPE_TMP_BUFFER); @@ -51260,7 +44987,7 @@ static int test_wolfSSL_i2d_OCSP_CERTID(void) * this newly allocate buffer. */ ExpectIntEQ(ret = wolfSSL_i2d_OCSP_CERTID(&certId, &targetBuffer), sizeof(rawCertId)); - for (i = 0; i < ret; ++i) { + for (i = 0; EXPECT_SUCCESS() && i < ret; ++i) { ExpectIntEQ(targetBuffer[i], rawCertId[i]); } XFREE(targetBuffer, NULL, DYNAMIC_TYPE_OPENSSL); @@ -51590,22 +45317,20 @@ static int test_wolfSSL_EVP_PBE_scrypt(void) static int test_no_op_functions(void) { - int res = TEST_SKIPPED; - #if defined(OPENSSL_EXTRA) + EXPECT_DECLS; +#if defined(OPENSSL_EXTRA) /* this makes sure wolfSSL can compile and run these no-op functions */ SSL_load_error_strings(); ENGINE_load_builtin_engines(); OpenSSL_add_all_ciphers(); - AssertIntEQ(CRYPTO_malloc_init(), 0); - - res = TEST_RES_CHECK(1); - #endif - return res; + ExpectIntEQ(CRYPTO_malloc_init(), 0); +#endif + return EXPECT_RESULT(); } static int test_wolfSSL_CRYPTO_memcmp(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef OPENSSL_EXTRA char a[] = "wolfSSL (formerly CyaSSL) is a small, fast, portable " "implementation of TLS/SSL for embedded devices to the cloud."; @@ -51614,12 +45339,10 @@ static int test_wolfSSL_CRYPTO_memcmp(void) char c[] = "wolfSSL (formerly CyaSSL) is a small, fast, portable " "implementation of TLS/SSL for embedded devices to the cloud!"; - AssertIntEQ(CRYPTO_memcmp(a, b, sizeof(a)), 0); - AssertIntNE(CRYPTO_memcmp(a, c, sizeof(a)), 0); - - res = TEST_RES_CHECK(1); + ExpectIntEQ(CRYPTO_memcmp(a, b, sizeof(a)), 0); + ExpectIntNE(CRYPTO_memcmp(a, c, sizeof(a)), 0); #endif - return res; + return EXPECT_RESULT(); } /*----------------------------------------------------------------------------* @@ -51628,7 +45351,7 @@ static int test_wolfSSL_CRYPTO_memcmp(void) static int test_wc_CreateEncryptedPKCS8Key(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_PKCS8) && !defined(NO_PWDBASED) && defined(WOLFSSL_AES_256) \ && !defined(NO_AES_CBC) && !defined(NO_RSA) && !defined(NO_SHA) WC_RNG rng; @@ -51639,170 +45362,162 @@ static int test_wc_CreateEncryptedPKCS8Key(void) word32 passwordSz = (word32)XSTRLEN(password); word32 tradIdx = 0; - AssertIntEQ(wc_InitRng(&rng), 0); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + ExpectIntEQ(wc_InitRng(&rng), 0); /* Call with NULL for out buffer to get necessary length. */ - AssertIntEQ(wc_CreateEncryptedPKCS8Key((byte*)server_key_der_2048, + ExpectIntEQ(wc_CreateEncryptedPKCS8Key((byte*)server_key_der_2048, sizeof_server_key_der_2048, NULL, &encKeySz, password, passwordSz, PKCS5, PBES2, AES256CBCb, NULL, 0, WC_PKCS12_ITT_DEFAULT, &rng, NULL), LENGTH_ONLY_E); - AssertNotNull(encKey = (byte*)XMALLOC(encKeySz, HEAP_HINT, + ExpectNotNull(encKey = (byte*)XMALLOC(encKeySz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); /* Call with the allocated out buffer. */ - AssertIntGT(wc_CreateEncryptedPKCS8Key((byte*)server_key_der_2048, + ExpectIntGT(wc_CreateEncryptedPKCS8Key((byte*)server_key_der_2048, sizeof_server_key_der_2048, encKey, &encKeySz, password, passwordSz, PKCS5, PBES2, AES256CBCb, NULL, 0, WC_PKCS12_ITT_DEFAULT, &rng, NULL), 0); /* Decrypt the encrypted PKCS8 key we just made. */ - AssertIntGT((decKeySz = wc_DecryptPKCS8Key(encKey, encKeySz, password, + ExpectIntGT((decKeySz = wc_DecryptPKCS8Key(encKey, encKeySz, password, passwordSz)), 0); /* encKey now holds the decrypted key (decrypted in place). */ - AssertIntGT(wc_GetPkcs8TraditionalOffset(encKey, &tradIdx, decKeySz), 0); + ExpectIntGT(wc_GetPkcs8TraditionalOffset(encKey, &tradIdx, decKeySz), 0); /* Check that the decrypted key matches the key prior to encryption. */ - AssertIntEQ(XMEMCMP(encKey + tradIdx, server_key_der_2048, + ExpectIntEQ(XMEMCMP(encKey + tradIdx, server_key_der_2048, sizeof_server_key_der_2048), 0); - if (encKey != NULL) - XFREE(encKey, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(encKey, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); wc_FreeRng(&rng); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_GetPkcs8TraditionalOffset(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_ASN) && !defined(NO_FILESYSTEM) && defined(HAVE_PKCS8) - int length, derSz; + int length; + int derSz = 0; word32 inOutIdx; const char* path = "./certs/server-keyPkcs8.der"; - XFILE file; + XFILE file = XBADFILE; byte der[2048]; - file = XFOPEN(path, "rb"); - AssertTrue(file != XBADFILE); - derSz = (int)XFREAD(der, 1, sizeof(der), file); - XFCLOSE(file); + ExpectTrue((file = XFOPEN(path, "rb")) != XBADFILE); + ExpectIntGT(derSz = (int)XFREAD(der, 1, sizeof(der), file), 0); + if (file != XBADFILE) + XFCLOSE(file); /* valid case */ inOutIdx = 0; - length = wc_GetPkcs8TraditionalOffset(der, &inOutIdx, derSz); - AssertIntGT(length, 0); + ExpectIntGT(length = wc_GetPkcs8TraditionalOffset(der, &inOutIdx, derSz), + 0); /* inOutIdx > sz */ inOutIdx = 4000; - length = wc_GetPkcs8TraditionalOffset(der, &inOutIdx, derSz); - AssertIntEQ(length, BAD_FUNC_ARG); + ExpectIntEQ(length = wc_GetPkcs8TraditionalOffset(der, &inOutIdx, derSz), + BAD_FUNC_ARG); /* null input */ inOutIdx = 0; - length = wc_GetPkcs8TraditionalOffset(NULL, &inOutIdx, 0); - AssertIntEQ(length, BAD_FUNC_ARG); + ExpectIntEQ(length = wc_GetPkcs8TraditionalOffset(NULL, &inOutIdx, 0), + BAD_FUNC_ARG); /* invalid input, fill buffer with 1's */ XMEMSET(der, 1, sizeof(der)); inOutIdx = 0; - length = wc_GetPkcs8TraditionalOffset(der, &inOutIdx, derSz); - AssertIntEQ(length, ASN_PARSE_E); - - res = TEST_RES_CHECK(1); + ExpectIntEQ(length = wc_GetPkcs8TraditionalOffset(der, &inOutIdx, derSz), + ASN_PARSE_E); #endif /* NO_ASN */ - return res; + return EXPECT_RESULT(); } static int test_wc_SetSubjectRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_ASN) && !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \ defined(WOLFSSL_CERT_GEN) && defined(WOLFSSL_CERT_EXT) && !defined(NO_RSA) const char* joiCertFile = "./certs/test/cert-ext-joi.der"; - WOLFSSL_X509* x509; + WOLFSSL_X509* x509 = NULL; int peerCertSz; - const byte* peerCertBuf; + const byte* peerCertBuf = NULL; Cert forgedCert; - AssertNotNull(x509 = wolfSSL_X509_load_certificate_file(joiCertFile, WOLFSSL_FILETYPE_ASN1)); + ExpectNotNull(x509 = wolfSSL_X509_load_certificate_file(joiCertFile, + WOLFSSL_FILETYPE_ASN1)); - AssertNotNull(peerCertBuf = wolfSSL_X509_get_der(x509, &peerCertSz)); + ExpectNotNull(peerCertBuf = wolfSSL_X509_get_der(x509, &peerCertSz)); - AssertIntEQ(0, wc_InitCert(&forgedCert)); + ExpectIntEQ(0, wc_InitCert(&forgedCert)); - AssertIntEQ(0, wc_SetSubjectRaw(&forgedCert, peerCertBuf, peerCertSz)); + ExpectIntEQ(0, wc_SetSubjectRaw(&forgedCert, peerCertBuf, peerCertSz)); wolfSSL_FreeX509(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_GetSubjectRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_ASN) && !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \ defined(WOLFSSL_CERT_GEN) && defined(WOLFSSL_CERT_EXT) Cert cert; byte *subjectRaw; - AssertIntEQ(0, wc_InitCert(&cert)); - AssertIntEQ(0, wc_GetSubjectRaw(&subjectRaw, &cert)); - - res = TEST_RES_CHECK(1); + ExpectIntEQ(0, wc_InitCert(&cert)); + ExpectIntEQ(0, wc_GetSubjectRaw(&subjectRaw, &cert)); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_SetIssuerRaw(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_ASN) && !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \ defined(WOLFSSL_CERT_GEN) && defined(WOLFSSL_CERT_EXT) && !defined(NO_RSA) const char* joiCertFile = "./certs/test/cert-ext-joi.der"; - WOLFSSL_X509* x509; + WOLFSSL_X509* x509 = NULL; int peerCertSz; const byte* peerCertBuf; Cert forgedCert; - AssertNotNull(x509 = wolfSSL_X509_load_certificate_file(joiCertFile, WOLFSSL_FILETYPE_ASN1)); + ExpectNotNull(x509 = wolfSSL_X509_load_certificate_file(joiCertFile, + WOLFSSL_FILETYPE_ASN1)); - AssertNotNull(peerCertBuf = wolfSSL_X509_get_der(x509, &peerCertSz)); + ExpectNotNull(peerCertBuf = wolfSSL_X509_get_der(x509, &peerCertSz)); - AssertIntEQ(0, wc_InitCert(&forgedCert)); + ExpectIntEQ(0, wc_InitCert(&forgedCert)); - AssertIntEQ(0, wc_SetIssuerRaw(&forgedCert, peerCertBuf, peerCertSz)); + ExpectIntEQ(0, wc_SetIssuerRaw(&forgedCert, peerCertBuf, peerCertSz)); wolfSSL_FreeX509(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_SetIssueBuffer(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_ASN) && !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \ defined(WOLFSSL_CERT_GEN) && defined(WOLFSSL_CERT_EXT) && !defined(NO_RSA) const char* joiCertFile = "./certs/test/cert-ext-joi.der"; - WOLFSSL_X509* x509; + WOLFSSL_X509* x509 = NULL; int peerCertSz; const byte* peerCertBuf; Cert forgedCert; - AssertNotNull(x509 = wolfSSL_X509_load_certificate_file(joiCertFile, WOLFSSL_FILETYPE_ASN1)); + ExpectNotNull(x509 = wolfSSL_X509_load_certificate_file(joiCertFile, + WOLFSSL_FILETYPE_ASN1)); - AssertNotNull(peerCertBuf = wolfSSL_X509_get_der(x509, &peerCertSz)); + ExpectNotNull(peerCertBuf = wolfSSL_X509_get_der(x509, &peerCertSz)); - AssertIntEQ(0, wc_InitCert(&forgedCert)); + ExpectIntEQ(0, wc_InitCert(&forgedCert)); - AssertIntEQ(0, wc_SetIssuerBuffer(&forgedCert, peerCertBuf, peerCertSz)); + ExpectIntEQ(0, wc_SetIssuerBuffer(&forgedCert, peerCertBuf, peerCertSz)); wolfSSL_FreeX509(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } /* @@ -51810,21 +45525,19 @@ static int test_wc_SetIssueBuffer(void) */ static int test_wc_SetSubjectKeyId(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_ASN) && !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \ defined(WOLFSSL_CERT_GEN) && defined(WOLFSSL_CERT_EXT) && defined(HAVE_ECC) Cert cert; const char* file = "certs/ecc-client-keyPub.pem"; - AssertIntEQ(0, wc_InitCert(&cert)); - AssertIntEQ(0, wc_SetSubjectKeyId(&cert, file)); + ExpectIntEQ(0, wc_InitCert(&cert)); + ExpectIntEQ(0, wc_SetSubjectKeyId(&cert, file)); - AssertIntEQ(BAD_FUNC_ARG, wc_SetSubjectKeyId(NULL, file)); - AssertIntGT(0, wc_SetSubjectKeyId(&cert, "badfile.name")); - - res = TEST_RES_CHECK(1); + ExpectIntEQ(BAD_FUNC_ARG, wc_SetSubjectKeyId(NULL, file)); + ExpectIntGT(0, wc_SetSubjectKeyId(&cert, "badfile.name")); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_SetSubjectKeyId */ /* @@ -51832,89 +45545,94 @@ static int test_wc_SetSubjectKeyId(void) */ static int test_wc_SetSubject(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_ASN) && !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \ defined(WOLFSSL_CERT_GEN) && defined(WOLFSSL_CERT_EXT) && defined(HAVE_ECC) Cert cert; const char* file = "./certs/ca-ecc-cert.pem"; - AssertIntEQ(0, wc_InitCert(&cert)); - AssertIntEQ(0, wc_SetSubject(&cert, file)); + ExpectIntEQ(0, wc_InitCert(&cert)); + ExpectIntEQ(0, wc_SetSubject(&cert, file)); - AssertIntEQ(BAD_FUNC_ARG, wc_SetSubject(NULL, file)); - AssertIntGT(0, wc_SetSubject(&cert, "badfile.name")); - - res = TEST_RES_CHECK(1); + ExpectIntEQ(BAD_FUNC_ARG, wc_SetSubject(NULL, file)); + ExpectIntGT(0, wc_SetSubject(&cert, "badfile.name")); #endif - return res; + return EXPECT_RESULT(); } /* END test_wc_SetSubject */ static int test_CheckCertSignature(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_CERTS) && defined(WOLFSSL_SMALL_CERT_VERIFY) WOLFSSL_CERT_MANAGER* cm = NULL; #if !defined(NO_FILESYSTEM) && (!defined(NO_RSA) || defined(HAVE_ECC)) - FILE* fp; + XFILE fp = XBADFILE; byte cert[4096]; int certSz; #endif - AssertIntEQ(BAD_FUNC_ARG, CheckCertSignature(NULL, 0, NULL, NULL)); - AssertNotNull(cm = wolfSSL_CertManagerNew_ex(NULL)); - AssertIntEQ(BAD_FUNC_ARG, CheckCertSignature(NULL, 0, NULL, cm)); + ExpectIntEQ(BAD_FUNC_ARG, CheckCertSignature(NULL, 0, NULL, NULL)); + ExpectNotNull(cm = wolfSSL_CertManagerNew_ex(NULL)); + ExpectIntEQ(BAD_FUNC_ARG, CheckCertSignature(NULL, 0, NULL, cm)); #ifndef NO_RSA #ifdef USE_CERT_BUFFERS_1024 - AssertIntEQ(ASN_NO_SIGNER_E, CheckCertSignature(server_cert_der_1024, + ExpectIntEQ(ASN_NO_SIGNER_E, CheckCertSignature(server_cert_der_1024, sizeof_server_cert_der_1024, NULL, cm)); - AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CertManagerLoadCABuffer(cm, + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CertManagerLoadCABuffer(cm, ca_cert_der_1024, sizeof_ca_cert_der_1024, WOLFSSL_FILETYPE_ASN1)); - AssertIntEQ(0, CheckCertSignature(server_cert_der_1024, + ExpectIntEQ(0, CheckCertSignature(server_cert_der_1024, sizeof_server_cert_der_1024, NULL, cm)); #elif defined(USE_CERT_BUFFERS_2048) - AssertIntEQ(ASN_NO_SIGNER_E, CheckCertSignature(server_cert_der_2048, + ExpectIntEQ(ASN_NO_SIGNER_E, CheckCertSignature(server_cert_der_2048, sizeof_server_cert_der_2048, NULL, cm)); - AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CertManagerLoadCABuffer(cm, + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CertManagerLoadCABuffer(cm, ca_cert_der_2048, sizeof_ca_cert_der_2048, WOLFSSL_FILETYPE_ASN1)); - AssertIntEQ(0, CheckCertSignature(server_cert_der_2048, + ExpectIntEQ(0, CheckCertSignature(server_cert_der_2048, sizeof_server_cert_der_2048, NULL, cm)); #endif #endif #if defined(HAVE_ECC) && defined(USE_CERT_BUFFERS_256) - AssertIntEQ(ASN_NO_SIGNER_E, CheckCertSignature(serv_ecc_der_256, + ExpectIntEQ(ASN_NO_SIGNER_E, CheckCertSignature(serv_ecc_der_256, sizeof_serv_ecc_der_256, NULL, cm)); - AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CertManagerLoadCABuffer(cm, + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CertManagerLoadCABuffer(cm, ca_ecc_cert_der_256, sizeof_ca_ecc_cert_der_256, WOLFSSL_FILETYPE_ASN1)); - AssertIntEQ(0, CheckCertSignature(serv_ecc_der_256, sizeof_serv_ecc_der_256, + ExpectIntEQ(0, CheckCertSignature(serv_ecc_der_256, sizeof_serv_ecc_der_256, NULL, cm)); #endif #if !defined(NO_FILESYSTEM) wolfSSL_CertManagerFree(cm); - AssertNotNull(cm = wolfSSL_CertManagerNew_ex(NULL)); + cm = NULL; + ExpectNotNull(cm = wolfSSL_CertManagerNew_ex(NULL)); #ifndef NO_RSA - AssertNotNull(fp = XFOPEN("./certs/server-cert.der", "rb")); - AssertIntGT((certSz = (int)XFREAD(cert, 1, sizeof(cert), fp)), 0); - XFCLOSE(fp); - AssertIntEQ(ASN_NO_SIGNER_E, CheckCertSignature(cert, certSz, NULL, cm)); - AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CertManagerLoadCA(cm, + ExpectTrue((fp = XFOPEN("./certs/server-cert.der", "rb")) != XBADFILE); + ExpectIntGT((certSz = (int)XFREAD(cert, 1, sizeof(cert), fp)), 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntEQ(ASN_NO_SIGNER_E, CheckCertSignature(cert, certSz, NULL, cm)); + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CertManagerLoadCA(cm, "./certs/ca-cert.pem", NULL)); - AssertIntEQ(0, CheckCertSignature(cert, certSz, NULL, cm)); + ExpectIntEQ(0, CheckCertSignature(cert, certSz, NULL, cm)); #endif #ifdef HAVE_ECC - AssertNotNull(fp = XFOPEN("./certs/server-ecc.der", "rb")); - AssertIntGT((certSz = (int)XFREAD(cert, 1, sizeof(cert), fp)), 0); - XFCLOSE(fp); - AssertIntEQ(ASN_NO_SIGNER_E, CheckCertSignature(cert, certSz, NULL, cm)); - AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_CertManagerLoadCA(cm, + ExpectTrue((fp = XFOPEN("./certs/server-ecc.der", "rb")) != XBADFILE); + ExpectIntGT((certSz = (int)XFREAD(cert, 1, sizeof(cert), fp)), 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntEQ(ASN_NO_SIGNER_E, CheckCertSignature(cert, certSz, NULL, cm)); + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CertManagerLoadCA(cm, "./certs/ca-ecc-cert.pem", NULL)); - AssertIntEQ(0, CheckCertSignature(cert, certSz, NULL, cm)); + ExpectIntEQ(0, CheckCertSignature(cert, certSz, NULL, cm)); #endif #endif @@ -51925,32 +45643,28 @@ static int test_CheckCertSignature(void) #endif wolfSSL_CertManagerFree(cm); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wc_ParseCert(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_CERTS) && !defined(NO_RSA) DecodedCert decodedCert; const byte* rawCert = client_cert_der_2048; const int rawCertSize = sizeof_client_cert_der_2048; wc_InitDecodedCert(&decodedCert, rawCert, rawCertSize, NULL); - AssertIntEQ(wc_ParseCert(&decodedCert, CERT_TYPE, NO_VERIFY, NULL), 0); + ExpectIntEQ(wc_ParseCert(&decodedCert, CERT_TYPE, NO_VERIFY, NULL), 0); #ifndef IGNORE_NAME_CONSTRAINTS /* check that the subjects emailAddress was not put in the alt name list */ - AssertNotNull(decodedCert.subjectEmail); - AssertNull(decodedCert.altEmailNames); + ExpectNotNull(decodedCert.subjectEmail); + ExpectNull(decodedCert.altEmailNames); #endif wc_FreeDecodedCert(&decodedCert); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } /* Test wc_ParseCert decoding of various encodings and scenarios ensuring that @@ -51959,7 +45673,7 @@ static int test_wc_ParseCert(void) */ static int test_wc_ParseCert_Error(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_CERTS) && !defined(NO_RSA) && !defined(HAVE_SELFTEST) && \ (!defined(HAVE_FIPS) || \ (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION > 2))) @@ -51990,18 +45704,16 @@ static int test_wc_ParseCert_Error(void) for (i = 0; i < tSz; i++) { WOLFSSL_MSG_EX("i == %d", i); wc_InitDecodedCert(&decodedCert, t[i].c, t[i].cSz, NULL); - AssertIntEQ(wc_ParseCert(&decodedCert, CERT_TYPE, NO_VERIFY, NULL), t[i].expRet); + ExpectIntEQ(wc_ParseCert(&decodedCert, CERT_TYPE, NO_VERIFY, NULL), t[i].expRet); wc_FreeDecodedCert(&decodedCert); } - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_MakeCertWithPathLen(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_CERT_REQ) && !defined(NO_ASN_TIME) && \ defined(WOLFSSL_CERT_GEN) && defined(HAVE_ECC) const byte expectedPathLen = 7; @@ -52011,19 +45723,27 @@ static int test_MakeCertWithPathLen(void) int derSize = 0; WC_RNG rng; ecc_key key; + int ret; - AssertIntEQ(wc_InitRng(&rng), 0); - AssertIntEQ(wc_ecc_init(&key), 0); - AssertIntEQ(wc_ecc_make_key(&rng, 32, &key), 0); - AssertIntEQ(wc_InitCert(&cert), 0); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + XMEMSET(&key, 0, sizeof(ecc_key)); + XMEMSET(&cert, 0, sizeof(Cert)); + XMEMSET(&decodedCert, 0, sizeof(DecodedCert)); + + ExpectIntEQ(wc_InitRng(&rng), 0); + ExpectIntEQ(wc_ecc_init(&key), 0); + ExpectIntEQ(wc_ecc_make_key(&rng, 32, &key), 0); + ExpectIntEQ(wc_InitCert(&cert), 0); (void)XSTRNCPY(cert.subject.country, "US", CTC_NAME_SIZE); (void)XSTRNCPY(cert.subject.state, "state", CTC_NAME_SIZE); (void)XSTRNCPY(cert.subject.locality, "Bozeman", CTC_NAME_SIZE); (void)XSTRNCPY(cert.subject.org, "yourOrgNameHere", CTC_NAME_SIZE); (void)XSTRNCPY(cert.subject.unit, "yourUnitNameHere", CTC_NAME_SIZE); - (void)XSTRNCPY(cert.subject.commonName, "www.yourDomain.com", CTC_NAME_SIZE); - (void)XSTRNCPY(cert.subject.email, "yourEmail@yourDomain.com", CTC_NAME_SIZE); + (void)XSTRNCPY(cert.subject.commonName, "www.yourDomain.com", + CTC_NAME_SIZE); + (void)XSTRNCPY(cert.subject.email, "yourEmail@yourDomain.com", + CTC_NAME_SIZE); cert.selfSigned = 1; cert.isCA = 1; @@ -52035,22 +45755,21 @@ static int test_MakeCertWithPathLen(void) cert.keyUsage |= KEYUSE_KEY_CERT_SIGN; #endif - AssertIntGE(wc_MakeCert(&cert, der, FOURK_BUF, NULL, &key, &rng), 0); - derSize = wc_SignCert(cert.bodySz, cert.sigType, der, FOURK_BUF, NULL, - &key, &rng); - AssertIntGE(derSize, 0); + ExpectIntGE(wc_MakeCert(&cert, der, FOURK_BUF, NULL, &key, &rng), 0); + ExpectIntGE(derSize = wc_SignCert(cert.bodySz, cert.sigType, der, + FOURK_BUF, NULL, &key, &rng), 0); wc_InitDecodedCert(&decodedCert, der, derSize, NULL); - AssertIntEQ(wc_ParseCert(&decodedCert, CERT_TYPE, NO_VERIFY, NULL), 0); - AssertIntEQ(decodedCert.pathLength, expectedPathLen); + ExpectIntEQ(wc_ParseCert(&decodedCert, CERT_TYPE, NO_VERIFY, NULL), 0); + ExpectIntEQ(decodedCert.pathLength, expectedPathLen); wc_FreeDecodedCert(&decodedCert); - AssertIntEQ(wc_ecc_free(&key), 0); - AssertIntEQ(wc_FreeRng(&rng), 0); - - res = TEST_RES_CHECK(1); + ret = wc_ecc_free(&key); + ExpectIntEQ(ret, 0); + ret = wc_FreeRng(&rng); + ExpectIntEQ(ret, 0); #endif - return res; + return EXPECT_RESULT(); } /*----------------------------------------------------------------------------* @@ -52059,101 +45778,77 @@ static int test_MakeCertWithPathLen(void) static int test_wc_ecc_get_curve_size_from_name(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_ECC - int ret; - #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - ret = wc_ecc_get_curve_size_from_name("SECP256R1"); - AssertIntEQ(ret, 32); + ExpectIntEQ(wc_ecc_get_curve_size_from_name("SECP256R1"), 32); #endif - /* invalid case */ - ret = wc_ecc_get_curve_size_from_name("BADCURVE"); - AssertIntEQ(ret, -1); - + ExpectIntEQ(wc_ecc_get_curve_size_from_name("BADCURVE"), -1); /* NULL input */ - ret = wc_ecc_get_curve_size_from_name(NULL); - AssertIntEQ(ret, BAD_FUNC_ARG); - - res = TEST_RES_CHECK(1); + ExpectIntEQ(wc_ecc_get_curve_size_from_name(NULL), BAD_FUNC_ARG); #endif /* HAVE_ECC */ - return res; + return EXPECT_RESULT(); } static int test_wc_ecc_get_curve_id_from_name(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_ECC - int id; - #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - id = wc_ecc_get_curve_id_from_name("SECP256R1"); - AssertIntEQ(id, ECC_SECP256R1); + ExpectIntEQ(wc_ecc_get_curve_id_from_name("SECP256R1"), + ECC_SECP256R1); #endif - /* invalid case */ - id = wc_ecc_get_curve_id_from_name("BADCURVE"); - AssertIntEQ(id, -1); - + ExpectIntEQ(wc_ecc_get_curve_id_from_name("BADCURVE"), -1); /* NULL input */ - id = wc_ecc_get_curve_id_from_name(NULL); - AssertIntEQ(id, BAD_FUNC_ARG); - - res = TEST_RES_CHECK(1); + ExpectIntEQ(wc_ecc_get_curve_id_from_name(NULL), BAD_FUNC_ARG); #endif /* HAVE_ECC */ - return res; + return EXPECT_RESULT(); } #if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) && \ !defined(HAVE_SELFTEST) && \ !(defined(HAVE_FIPS) || defined(HAVE_FIPS_VERSION)) - static int test_wc_ecc_get_curve_id_from_dp_params(void) { - int id; + EXPECT_DECLS; #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - int curve_id; ecc_key* key; - const ecc_set_type* params; + const ecc_set_type* params = NULL; int ret; #endif WOLFSSL_EC_KEY *ecKey = NULL; #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - id = wc_ecc_get_curve_id_from_name("SECP256R1"); - AssertIntEQ(id, ECC_SECP256R1); - - ecKey = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); - AssertNotNull(ecKey); + ExpectIntEQ(wc_ecc_get_curve_id_from_name("SECP256R1"), ECC_SECP256R1); + ExpectNotNull(ecKey = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1)); ret = EC_KEY_generate_key(ecKey); - - if (ret == 0) { + if (ret == 1) { /* normal test */ key = (ecc_key*)ecKey->internal; - params = key->dp; + if (key != NULL) { + params = key->dp; + } - curve_id = wc_ecc_get_curve_id_from_dp_params(params); - AssertIntEQ(curve_id, id); + ExpectIntEQ(wc_ecc_get_curve_id_from_dp_params(params), + ECC_SECP256R1); } #endif /* invalid case, NULL input*/ + ExpectIntEQ(wc_ecc_get_curve_id_from_dp_params(NULL), BAD_FUNC_ARG); - id = wc_ecc_get_curve_id_from_dp_params(NULL); - AssertIntEQ(id, BAD_FUNC_ARG); wolfSSL_EC_KEY_free(ecKey); - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #endif /* defined(OPENSSL_EXTRA) && defined(HAVE_ECC) */ static int test_wc_ecc_get_curve_id_from_params(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_ECC - int id; - const byte prime[] = { 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01, @@ -52214,38 +45909,33 @@ static int test_wc_ecc_get_curve_id_from_params(void) int fieldSize = 256; #if !defined(NO_ECC256) && !defined(NO_ECC_SECP) - id = wc_ecc_get_curve_id_from_params(fieldSize, prime, sizeof(prime), - Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), - Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor); - AssertIntEQ(id, ECC_SECP256R1); + ExpectIntEQ(wc_ecc_get_curve_id_from_params(fieldSize, + prime, sizeof(prime), Af, sizeof(Af), Bf, sizeof(Bf), + order, sizeof(order), Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), + ECC_SECP256R1); #endif /* invalid case, fieldSize = 0 */ - id = wc_ecc_get_curve_id_from_params(0, prime, sizeof(prime), - Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), - Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor); - AssertIntEQ(id, ECC_CURVE_INVALID); + ExpectIntEQ(wc_ecc_get_curve_id_from_params(0, prime, sizeof(prime), + Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), + Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), ECC_CURVE_INVALID); /* invalid case, NULL prime */ - id = wc_ecc_get_curve_id_from_params(fieldSize, NULL, sizeof(prime), - Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), - Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor); - AssertIntEQ(id, BAD_FUNC_ARG); + ExpectIntEQ(wc_ecc_get_curve_id_from_params(fieldSize, NULL, sizeof(prime), + Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), + Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), BAD_FUNC_ARG); /* invalid case, invalid prime */ - id = wc_ecc_get_curve_id_from_params(fieldSize, - primeInvalid, sizeof(primeInvalid), - Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), - Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor); - AssertIntEQ(id, ECC_CURVE_INVALID); - - res = TEST_RES_CHECK(1); + ExpectIntEQ(wc_ecc_get_curve_id_from_params(fieldSize, + primeInvalid, sizeof(primeInvalid), + Af, sizeof(Af), Bf, sizeof(Bf), order, sizeof(order), + Gx, sizeof(Gx), Gy, sizeof(Gy), cofactor), ECC_CURVE_INVALID); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_EVP_PKEY_encrypt(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ !defined(HAVE_FAST_RSA) WOLFSSL_RSA* rsa = NULL; @@ -52264,65 +45954,83 @@ static int test_wolfSSL_EVP_PKEY_encrypt(void) byte* outDecTmp = NULL; #endif - AssertNotNull(outEnc = (byte*)XMALLOC(rsaKeySz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); - XMEMSET(outEnc, 0, rsaKeySz); - AssertNotNull(outDec = (byte*)XMALLOC(rsaKeySz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); - XMEMSET(outDec, 0, rsaKeySz); + ExpectNotNull(outEnc = (byte*)XMALLOC(rsaKeySz, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + if (outEnc != NULL) { + XMEMSET(outEnc, 0, rsaKeySz); + } + ExpectNotNull(outDec = (byte*)XMALLOC(rsaKeySz, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + if (outDec != NULL) { + XMEMSET(outDec, 0, rsaKeySz); + } - AssertNotNull(rsa = RSA_generate_key(2048, 3, NULL, NULL)); - AssertNotNull(pkey = wolfSSL_EVP_PKEY_new()); - AssertIntEQ(EVP_PKEY_assign_RSA(pkey, rsa), WOLFSSL_SUCCESS); - AssertNotNull(ctx = EVP_PKEY_CTX_new(pkey, NULL)); - AssertIntEQ(EVP_PKEY_encrypt_init(ctx), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING), - WOLFSSL_SUCCESS); + ExpectNotNull(rsa = RSA_generate_key(2048, 3, NULL, NULL)); + ExpectNotNull(pkey = wolfSSL_EVP_PKEY_new()); + ExpectIntEQ(EVP_PKEY_assign_RSA(pkey, rsa), WOLFSSL_SUCCESS); + if (EXPECT_FAIL()) { + RSA_free(rsa); + } + ExpectNotNull(ctx = EVP_PKEY_CTX_new(pkey, NULL)); + ExpectIntEQ(EVP_PKEY_encrypt_init(ctx), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING), + WOLFSSL_SUCCESS); /* Test pkey references count is decremented. pkey shouldn't be destroyed since ctx uses it.*/ - AssertIntEQ(pkey->ref.count, 2); + ExpectIntEQ(pkey->ref.count, 2); EVP_PKEY_free(pkey); - AssertIntEQ(pkey->ref.count, 1); + ExpectIntEQ(pkey->ref.count, 1); /* Encrypt data */ /* Check that we can get the required output buffer length by passing in a * NULL output buffer. */ - AssertIntEQ(EVP_PKEY_encrypt(ctx, NULL, &outEncLen, + ExpectIntEQ(EVP_PKEY_encrypt(ctx, NULL, &outEncLen, (const unsigned char*)in, inlen), WOLFSSL_SUCCESS); - AssertIntEQ(rsaKeySz, outEncLen); + ExpectIntEQ(rsaKeySz, outEncLen); /* Now do the actual encryption. */ - AssertIntEQ(EVP_PKEY_encrypt(ctx, outEnc, &outEncLen, + ExpectIntEQ(EVP_PKEY_encrypt(ctx, outEnc, &outEncLen, (const unsigned char*)in, inlen), WOLFSSL_SUCCESS); /* Decrypt data */ - AssertIntEQ(EVP_PKEY_decrypt_init(ctx), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_decrypt_init(ctx), WOLFSSL_SUCCESS); /* Check that we can get the required output buffer length by passing in a * NULL output buffer. */ - AssertIntEQ(EVP_PKEY_decrypt(ctx, NULL, &outDecLen, outEnc, outEncLen), + ExpectIntEQ(EVP_PKEY_decrypt(ctx, NULL, &outDecLen, outEnc, outEncLen), WOLFSSL_SUCCESS); - AssertIntEQ(rsaKeySz, outDecLen); + ExpectIntEQ(rsaKeySz, outDecLen); /* Now do the actual decryption. */ - AssertIntEQ(EVP_PKEY_decrypt(ctx, outDec, &outDecLen, outEnc, outEncLen), + ExpectIntEQ(EVP_PKEY_decrypt(ctx, outDec, &outDecLen, outEnc, outEncLen), WOLFSSL_SUCCESS); - AssertIntEQ(XMEMCMP(in, outDec, outDecLen), 0); + ExpectIntEQ(XMEMCMP(in, outDec, outDecLen), 0); #if !defined(HAVE_FIPS) && defined(WC_RSA_NO_PADDING) /* The input length must be the same size as the RSA key.*/ - AssertNotNull(inTmp = (byte*)XMALLOC(rsaKeySz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); - XMEMSET(inTmp, 9, rsaKeySz); - AssertNotNull(outEncTmp = (byte*)XMALLOC(rsaKeySz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); - XMEMSET(outEncTmp, 0, rsaKeySz); - AssertNotNull(outDecTmp = (byte*)XMALLOC(rsaKeySz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); - XMEMSET(outDecTmp, 0, rsaKeySz); - AssertIntEQ(EVP_PKEY_encrypt_init(ctx), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_NO_PADDING), - WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_encrypt(ctx, outEncTmp, &outEncLen, inTmp, rsaKeySz), - WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_decrypt_init(ctx), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_decrypt(ctx, outDecTmp, &outDecLen, outEncTmp, outEncLen), - WOLFSSL_SUCCESS); - AssertIntEQ(XMEMCMP(inTmp, outDecTmp, outDecLen), 0); + ExpectNotNull(inTmp = (byte*)XMALLOC(rsaKeySz, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + if (inTmp != NULL) { + XMEMSET(inTmp, 9, rsaKeySz); + } + ExpectNotNull(outEncTmp = (byte*)XMALLOC(rsaKeySz, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + if (outEncTmp != NULL) { + XMEMSET(outEncTmp, 0, rsaKeySz); + } + ExpectNotNull(outDecTmp = (byte*)XMALLOC(rsaKeySz, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER)); + if (outDecTmp != NULL) { + XMEMSET(outDecTmp, 0, rsaKeySz); + } + ExpectIntEQ(EVP_PKEY_encrypt_init(ctx), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_NO_PADDING), + WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_encrypt(ctx, outEncTmp, &outEncLen, inTmp, rsaKeySz), + WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_decrypt_init(ctx), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_decrypt(ctx, outDecTmp, &outDecLen, outEncTmp, + outEncLen), WOLFSSL_SUCCESS); + ExpectIntEQ(XMEMCMP(inTmp, outDecTmp, outDecLen), 0); #endif EVP_PKEY_CTX_free(ctx); XFREE(outEnc, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); @@ -52332,18 +46040,52 @@ static int test_wolfSSL_EVP_PKEY_encrypt(void) XFREE(outEncTmp, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); XFREE(outDecTmp, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); #endif - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } -static int test_wolfSSL_EVP_PKEY_sign_verify(void) -{ - int res = TEST_SKIPPED; + +#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ + !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) +#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) + #ifndef TEST_WOLFSSL_EVP_PKEY_SIGN_VERIFY + #define TEST_WOLFSSL_EVP_PKEY_SIGN_VERIFY + #endif +#endif +#endif #if defined(OPENSSL_EXTRA) +#if !defined (NO_DSA) && !defined(HAVE_SELFTEST) && defined(WOLFSSL_KEY_GEN) + #ifndef TEST_WOLFSSL_EVP_PKEY_SIGN_VERIFY + #define TEST_WOLFSSL_EVP_PKEY_SIGN_VERIFY + #endif +#endif +#endif +#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) +#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) + #ifndef TEST_WOLFSSL_EVP_PKEY_SIGN_VERIFY + #define TEST_WOLFSSL_EVP_PKEY_SIGN_VERIFY + #endif +#endif +#endif + +#ifdef TEST_WOLFSSL_EVP_PKEY_SIGN_VERIFY +static int test_wolfSSL_EVP_PKEY_sign_verify(int keyType) +{ + EXPECT_DECLS; +#if defined(OPENSSL_EXTRA) +#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ + !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) +#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) + WOLFSSL_RSA* rsa = NULL; +#endif +#endif #if !defined (NO_DSA) && !defined(HAVE_SELFTEST) && defined(WOLFSSL_KEY_GEN) WOLFSSL_DSA* dsa = NULL; #endif /* !NO_DSA && !HAVE_SELFTEST && WOLFSSL_KEY_GEN */ +#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) +#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) + WOLFSSL_EC_KEY* ecKey = NULL; +#endif +#endif WOLFSSL_EVP_PKEY* pkey = NULL; WOLFSSL_EVP_PKEY_CTX* ctx = NULL; WOLFSSL_EVP_PKEY_CTX* ctx_verify = NULL; @@ -52357,275 +46099,295 @@ static int test_wolfSSL_EVP_PKEY_sign_verify(void) size_t siglen; size_t siglenOnlyLen; size_t keySz = 2048/8; /* Bytes */ - int i; - int encs[3] = {0}; -#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ - !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) -#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) - encs[0] = EVP_PKEY_RSA; -#endif -#endif -#if !defined (NO_DSA) && !defined(HAVE_SELFTEST) && defined(WOLFSSL_KEY_GEN) - encs[1] = EVP_PKEY_DSA; -#endif /* !NO_DSA && !HAVE_SELFTEST && WOLFSSL_KEY_GEN */ -#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) -#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) - encs[2] = EVP_PKEY_EC; -#endif -#endif - - AssertNotNull(sig = + ExpectNotNull(sig = (byte*)XMALLOC(keySz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); - AssertNotNull(sigVerify = + ExpectNotNull(sigVerify = (byte*)XMALLOC(keySz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER)); - for (i = 0; i < 3; i++) { - if (encs[i] == 0) - continue; + siglen = keySz; + ExpectNotNull(XMEMSET(sig, 0, keySz)); + ExpectNotNull(XMEMSET(sigVerify, 0, keySz)); - siglen = keySz; - XMEMSET(sig, 0, keySz); - XMEMSET(sigVerify, 0, keySz); - - /* Generate hash */ - SHA256_Init(&c); - SHA256_Update(&c, in, inlen); - SHA256_Final(hash, &c); + /* Generate hash */ + SHA256_Init(&c); + SHA256_Update(&c, in, inlen); + SHA256_Final(hash, &c); #ifdef WOLFSSL_SMALL_STACK_CACHE - /* workaround for small stack cache case */ - wc_Sha256Free((wc_Sha256*)&c); + /* workaround for small stack cache case */ + wc_Sha256Free((wc_Sha256*)&c); #endif - /* Generate key */ - AssertNotNull(pkey = EVP_PKEY_new()); - switch (encs[i]) { - case EVP_PKEY_RSA: + /* Generate key */ + ExpectNotNull(pkey = EVP_PKEY_new()); + switch (keyType) { + case EVP_PKEY_RSA: #if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) #if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) - { - WOLFSSL_RSA* rsa = NULL; - AssertNotNull(rsa = RSA_generate_key(2048, 3, NULL, NULL)); - AssertIntEQ(EVP_PKEY_assign_RSA(pkey, rsa), WOLFSSL_SUCCESS); - } + { + ExpectNotNull(rsa = RSA_generate_key(2048, 3, NULL, NULL)); + ExpectIntEQ(EVP_PKEY_assign_RSA(pkey, rsa), WOLFSSL_SUCCESS); + } #endif #endif - break; - case EVP_PKEY_DSA: + break; + case EVP_PKEY_DSA: #if !defined (NO_DSA) && !defined(HAVE_SELFTEST) && defined(WOLFSSL_KEY_GEN) - AssertNotNull(dsa = DSA_new()); - AssertIntEQ(DSA_generate_parameters_ex(dsa, 2048, - NULL, 0, NULL, NULL, NULL), 1); - AssertIntEQ(DSA_generate_key(dsa), 1); - AssertIntEQ(EVP_PKEY_set1_DSA(pkey, dsa), WOLFSSL_SUCCESS); + ExpectNotNull(dsa = DSA_new()); + ExpectIntEQ(DSA_generate_parameters_ex(dsa, 2048, + NULL, 0, NULL, NULL, NULL), 1); + ExpectIntEQ(DSA_generate_key(dsa), 1); + ExpectIntEQ(EVP_PKEY_set1_DSA(pkey, dsa), WOLFSSL_SUCCESS); #endif /* !NO_DSA && !HAVE_SELFTEST && WOLFSSL_KEY_GEN */ - break; - case EVP_PKEY_EC: + break; + case EVP_PKEY_EC: #if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) #if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) - { - WOLFSSL_EC_KEY* ecKey = NULL; - AssertNotNull(ecKey = EC_KEY_new()); - AssertIntEQ(EC_KEY_generate_key(ecKey), 1); - AssertIntEQ( - EVP_PKEY_assign_EC_KEY(pkey, ecKey), WOLFSSL_SUCCESS); + { + ExpectNotNull(ecKey = EC_KEY_new()); + ExpectIntEQ(EC_KEY_generate_key(ecKey), 1); + ExpectIntEQ( + EVP_PKEY_assign_EC_KEY(pkey, ecKey), WOLFSSL_SUCCESS); + if (EXPECT_FAIL()) { + EC_KEY_free(ecKey); } -#endif -#endif - break; - } - AssertNotNull(ctx = EVP_PKEY_CTX_new(pkey, NULL)); - AssertIntEQ(EVP_PKEY_sign_init(ctx), WOLFSSL_SUCCESS); -#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ - !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) -#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) - if (encs[i] == EVP_PKEY_RSA) - AssertIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING), - WOLFSSL_SUCCESS); -#endif -#endif - - /* Check returning only length */ - AssertIntEQ(EVP_PKEY_sign(ctx, NULL, &siglenOnlyLen, hash, - SHA256_DIGEST_LENGTH), WOLFSSL_SUCCESS); - AssertIntGT(siglenOnlyLen, 0); - /* Sign data */ - AssertIntEQ(EVP_PKEY_sign(ctx, sig, &siglen, hash, - SHA256_DIGEST_LENGTH), WOLFSSL_SUCCESS); - AssertIntGE(siglenOnlyLen, siglen); - - /* Verify signature */ - AssertNotNull(ctx_verify = EVP_PKEY_CTX_new(pkey, NULL)); - AssertIntEQ(EVP_PKEY_verify_init(ctx_verify), WOLFSSL_SUCCESS); -#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ - !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) -#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) - if (encs[i] == EVP_PKEY_RSA) - AssertIntEQ( - EVP_PKEY_CTX_set_rsa_padding(ctx_verify, RSA_PKCS1_PADDING), - WOLFSSL_SUCCESS); -#endif -#endif - AssertIntEQ(EVP_PKEY_verify( - ctx_verify, sig, siglen, hash, SHA256_DIGEST_LENGTH), - WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_verify( - ctx_verify, sig, siglen, zero, SHA256_DIGEST_LENGTH), - WOLFSSL_FAILURE); - -#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ - !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) -#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) - if (encs[i] == EVP_PKEY_RSA) { - #if defined(WC_RSA_NO_PADDING) || defined(WC_RSA_DIRECT) - /* Try RSA sign/verify with no padding. */ - AssertIntEQ(EVP_PKEY_sign_init(ctx), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_NO_PADDING), - WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_sign(ctx, sigVerify, &siglen, sig, - siglen), WOLFSSL_SUCCESS); - AssertIntGE(siglenOnlyLen, siglen); - AssertIntEQ(EVP_PKEY_verify_init(ctx_verify), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx_verify, - RSA_NO_PADDING), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_verify(ctx_verify, sigVerify, siglen, sig, - siglen), WOLFSSL_SUCCESS); - #endif - - /* Wrong padding schemes. */ - AssertIntEQ(EVP_PKEY_sign_init(ctx), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, - RSA_PKCS1_OAEP_PADDING), WOLFSSL_SUCCESS); - AssertIntNE(EVP_PKEY_sign(ctx, sigVerify, &siglen, sig, - siglen), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_verify_init(ctx_verify), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx_verify, - RSA_PKCS1_OAEP_PADDING), WOLFSSL_SUCCESS); - AssertIntNE(EVP_PKEY_verify(ctx_verify, sigVerify, siglen, sig, - siglen), WOLFSSL_SUCCESS); - - AssertIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING), - WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx_verify, - RSA_PKCS1_PADDING), WOLFSSL_SUCCESS); } #endif #endif - - /* error cases */ - siglen = keySz; /* Reset because sig size may vary slightly */ - AssertIntNE(EVP_PKEY_sign_init(NULL), WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_sign_init(ctx), WOLFSSL_SUCCESS); - AssertIntNE(EVP_PKEY_sign(NULL, sig, &siglen, (byte*)in, inlen), - WOLFSSL_SUCCESS); - AssertIntEQ(EVP_PKEY_sign(ctx, sig, &siglen, (byte*)in, inlen), - WOLFSSL_SUCCESS); - - EVP_PKEY_free(pkey); -#if !defined (NO_DSA) && !defined(HAVE_SELFTEST) && defined(WOLFSSL_KEY_GEN) - DSA_free(dsa); - dsa = NULL; -#endif /* !NO_DSA && !HAVE_SELFTEST && WOLFSSL_KEY_GEN */ - EVP_PKEY_CTX_free(ctx_verify); - EVP_PKEY_CTX_free(ctx); + break; } + ExpectNotNull(ctx = EVP_PKEY_CTX_new(pkey, NULL)); + ExpectIntEQ(EVP_PKEY_sign_init(ctx), WOLFSSL_SUCCESS); +#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ + !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) +#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) + if (keyType == EVP_PKEY_RSA) + ExpectIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING), + WOLFSSL_SUCCESS); +#endif +#endif + + /* Check returning only length */ + ExpectIntEQ(EVP_PKEY_sign(ctx, NULL, &siglenOnlyLen, hash, + SHA256_DIGEST_LENGTH), WOLFSSL_SUCCESS); + ExpectIntGT(siglenOnlyLen, 0); + /* Sign data */ + ExpectIntEQ(EVP_PKEY_sign(ctx, sig, &siglen, hash, + SHA256_DIGEST_LENGTH), WOLFSSL_SUCCESS); + ExpectIntGE(siglenOnlyLen, siglen); + + /* Verify signature */ + ExpectNotNull(ctx_verify = EVP_PKEY_CTX_new(pkey, NULL)); + ExpectIntEQ(EVP_PKEY_verify_init(ctx_verify), WOLFSSL_SUCCESS); +#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ + !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) +#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) + if (keyType == EVP_PKEY_RSA) + ExpectIntEQ( + EVP_PKEY_CTX_set_rsa_padding(ctx_verify, RSA_PKCS1_PADDING), + WOLFSSL_SUCCESS); +#endif +#endif + ExpectIntEQ(EVP_PKEY_verify( + ctx_verify, sig, siglen, hash, SHA256_DIGEST_LENGTH), + WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_verify( + ctx_verify, sig, siglen, zero, SHA256_DIGEST_LENGTH), + WOLFSSL_FAILURE); + +#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ + !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) +#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) + if (keyType == EVP_PKEY_RSA) { + #if defined(WC_RSA_NO_PADDING) || defined(WC_RSA_DIRECT) + /* Try RSA sign/verify with no padding. */ + ExpectIntEQ(EVP_PKEY_sign_init(ctx), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_NO_PADDING), + WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_sign(ctx, sigVerify, &siglen, sig, + siglen), WOLFSSL_SUCCESS); + ExpectIntGE(siglenOnlyLen, siglen); + ExpectIntEQ(EVP_PKEY_verify_init(ctx_verify), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx_verify, + RSA_NO_PADDING), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_verify(ctx_verify, sigVerify, siglen, sig, + siglen), WOLFSSL_SUCCESS); + #endif + + /* Wrong padding schemes. */ + ExpectIntEQ(EVP_PKEY_sign_init(ctx), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, + RSA_PKCS1_OAEP_PADDING), WOLFSSL_SUCCESS); + ExpectIntNE(EVP_PKEY_sign(ctx, sigVerify, &siglen, sig, + siglen), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_verify_init(ctx_verify), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx_verify, + RSA_PKCS1_OAEP_PADDING), WOLFSSL_SUCCESS); + ExpectIntNE(EVP_PKEY_verify(ctx_verify, sigVerify, siglen, sig, + siglen), WOLFSSL_SUCCESS); + + ExpectIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING), + WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_CTX_set_rsa_padding(ctx_verify, + RSA_PKCS1_PADDING), WOLFSSL_SUCCESS); + } +#endif +#endif + + /* error cases */ + siglen = keySz; /* Reset because sig size may vary slightly */ + ExpectIntNE(EVP_PKEY_sign_init(NULL), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_sign_init(ctx), WOLFSSL_SUCCESS); + ExpectIntNE(EVP_PKEY_sign(NULL, sig, &siglen, (byte*)in, inlen), + WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_sign(ctx, sig, &siglen, (byte*)in, inlen), + WOLFSSL_SUCCESS); + + EVP_PKEY_free(pkey); + pkey = NULL; +#if !defined (NO_DSA) && !defined(HAVE_SELFTEST) && defined(WOLFSSL_KEY_GEN) + DSA_free(dsa); + dsa = NULL; +#endif /* !NO_DSA && !HAVE_SELFTEST && WOLFSSL_KEY_GEN */ + EVP_PKEY_CTX_free(ctx_verify); + ctx_verify = NULL; + EVP_PKEY_CTX_free(ctx); + ctx = NULL; XFREE(sig, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); XFREE(sigVerify, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); - - res = TEST_RES_CHECK(1); #endif /* OPENSSL_EXTRA */ - return res; + return EXPECT_RESULT(); +} +#endif + +static int test_wolfSSL_EVP_PKEY_sign_verify_rsa(void) +{ + EXPECT_DECLS; +#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \ + !defined(HAVE_FAST_RSA) && !defined(HAVE_SELFTEST) +#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) + ExpectIntEQ(test_wolfSSL_EVP_PKEY_sign_verify(EVP_PKEY_RSA), TEST_SUCCESS); +#endif +#endif + return EXPECT_RESULT(); +} +static int test_wolfSSL_EVP_PKEY_sign_verify_dsa(void) +{ + EXPECT_DECLS; +#if defined(OPENSSL_EXTRA) +#if !defined (NO_DSA) && !defined(HAVE_SELFTEST) && defined(WOLFSSL_KEY_GEN) + ExpectIntEQ(test_wolfSSL_EVP_PKEY_sign_verify(EVP_PKEY_DSA), TEST_SUCCESS); +#endif +#endif + return EXPECT_RESULT(); +} +static int test_wolfSSL_EVP_PKEY_sign_verify_ec(void) +{ + EXPECT_DECLS; +#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) +#if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) + ExpectIntEQ(test_wolfSSL_EVP_PKEY_sign_verify(EVP_PKEY_EC), TEST_SUCCESS); +#endif +#endif + return EXPECT_RESULT(); } static int test_EVP_PKEY_rsa(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) && !defined(NO_RSA) - WOLFSSL_RSA* rsa; - WOLFSSL_EVP_PKEY* pkey; + WOLFSSL_RSA* rsa = NULL; + WOLFSSL_EVP_PKEY* pkey = NULL; - AssertNotNull(rsa = wolfSSL_RSA_new()); - AssertNotNull(pkey = wolfSSL_EVP_PKEY_new()); - AssertIntEQ(EVP_PKEY_assign_RSA(NULL, rsa), WOLFSSL_FAILURE); - AssertIntEQ(EVP_PKEY_assign_RSA(pkey, NULL), WOLFSSL_FAILURE); - AssertIntEQ(EVP_PKEY_assign_RSA(pkey, rsa), WOLFSSL_SUCCESS); - AssertPtrEq(EVP_PKEY_get0_RSA(pkey), rsa); + ExpectNotNull(rsa = wolfSSL_RSA_new()); + ExpectNotNull(pkey = wolfSSL_EVP_PKEY_new()); + ExpectIntEQ(EVP_PKEY_assign_RSA(NULL, rsa), WOLFSSL_FAILURE); + ExpectIntEQ(EVP_PKEY_assign_RSA(pkey, NULL), WOLFSSL_FAILURE); + ExpectIntEQ(EVP_PKEY_assign_RSA(pkey, rsa), WOLFSSL_SUCCESS); + if (EXPECT_FAIL()) { + wolfSSL_RSA_free(rsa); + } + ExpectPtrEq(EVP_PKEY_get0_RSA(pkey), rsa); wolfSSL_EVP_PKEY_free(pkey); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_EVP_PKEY_ec(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) #if !defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION>2)) - WOLFSSL_EC_KEY* ecKey; - WOLFSSL_EVP_PKEY* pkey; + WOLFSSL_EC_KEY* ecKey = NULL; + WOLFSSL_EVP_PKEY* pkey = NULL; - AssertNotNull(ecKey = wolfSSL_EC_KEY_new()); - AssertNotNull(pkey = wolfSSL_EVP_PKEY_new()); - AssertIntEQ(EVP_PKEY_assign_EC_KEY(NULL, ecKey), WOLFSSL_FAILURE); - AssertIntEQ(EVP_PKEY_assign_EC_KEY(pkey, NULL), WOLFSSL_FAILURE); + ExpectNotNull(ecKey = wolfSSL_EC_KEY_new()); + ExpectNotNull(pkey = wolfSSL_EVP_PKEY_new()); + ExpectIntEQ(EVP_PKEY_assign_EC_KEY(NULL, ecKey), WOLFSSL_FAILURE); + ExpectIntEQ(EVP_PKEY_assign_EC_KEY(pkey, NULL), WOLFSSL_FAILURE); /* Should fail since ecKey is empty */ - AssertIntEQ(EVP_PKEY_assign_EC_KEY(pkey, ecKey), WOLFSSL_FAILURE); - AssertIntEQ(wolfSSL_EC_KEY_generate_key(ecKey), 1); - AssertIntEQ(EVP_PKEY_assign_EC_KEY(pkey, ecKey), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_PKEY_assign_EC_KEY(pkey, ecKey), WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_EC_KEY_generate_key(ecKey), 1); + ExpectIntEQ(EVP_PKEY_assign_EC_KEY(pkey, ecKey), WOLFSSL_SUCCESS); + if (EXPECT_FAIL()) { + wolfSSL_EC_KEY_free(ecKey); + } wolfSSL_EVP_PKEY_free(pkey); - - res = TEST_RES_CHECK(1); #endif #endif - return res; + return EXPECT_RESULT(); } static int test_EVP_PKEY_cmp(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) - EVP_PKEY *a, *b; + EVP_PKEY *a = NULL; + EVP_PKEY *b = NULL; const unsigned char *in; #if !defined(NO_RSA) && defined(USE_CERT_BUFFERS_2048) in = client_key_der_2048; - AssertNotNull(a = wolfSSL_d2i_PrivateKey(EVP_PKEY_RSA, NULL, + ExpectNotNull(a = wolfSSL_d2i_PrivateKey(EVP_PKEY_RSA, NULL, &in, (long)sizeof_client_key_der_2048)); in = client_key_der_2048; - AssertNotNull(b = wolfSSL_d2i_PrivateKey(EVP_PKEY_RSA, NULL, + ExpectNotNull(b = wolfSSL_d2i_PrivateKey(EVP_PKEY_RSA, NULL, &in, (long)sizeof_client_key_der_2048)); /* Test success case RSA */ #if defined(WOLFSSL_ERROR_CODE_OPENSSL) - AssertIntEQ(EVP_PKEY_cmp(a, b), 1); + ExpectIntEQ(EVP_PKEY_cmp(a, b), 1); #else - AssertIntEQ(EVP_PKEY_cmp(a, b), 0); + ExpectIntEQ(EVP_PKEY_cmp(a, b), 0); #endif /* WOLFSSL_ERROR_CODE_OPENSSL */ EVP_PKEY_free(b); + b = NULL; EVP_PKEY_free(a); + a = NULL; #endif #if defined(HAVE_ECC) && defined(USE_CERT_BUFFERS_256) in = ecc_clikey_der_256; - AssertNotNull(a = wolfSSL_d2i_PrivateKey(EVP_PKEY_EC, NULL, + ExpectNotNull(a = wolfSSL_d2i_PrivateKey(EVP_PKEY_EC, NULL, &in, (long)sizeof_ecc_clikey_der_256)); in = ecc_clikey_der_256; - AssertNotNull(b = wolfSSL_d2i_PrivateKey(EVP_PKEY_EC, NULL, + ExpectNotNull(b = wolfSSL_d2i_PrivateKey(EVP_PKEY_EC, NULL, &in, (long)sizeof_ecc_clikey_der_256)); /* Test success case ECC */ #if defined(WOLFSSL_ERROR_CODE_OPENSSL) - AssertIntEQ(EVP_PKEY_cmp(a, b), 1); + ExpectIntEQ(EVP_PKEY_cmp(a, b), 1); #else - AssertIntEQ(EVP_PKEY_cmp(a, b), 0); + ExpectIntEQ(EVP_PKEY_cmp(a, b), 0); #endif /* WOLFSSL_ERROR_CODE_OPENSSL */ EVP_PKEY_free(b); + b = NULL; EVP_PKEY_free(a); + a = NULL; #endif /* Test failure cases */ @@ -52633,59 +46395,58 @@ static int test_EVP_PKEY_cmp(void) defined(HAVE_ECC) && defined(USE_CERT_BUFFERS_256) in = client_key_der_2048; - AssertNotNull(a = wolfSSL_d2i_PrivateKey(EVP_PKEY_RSA, NULL, + ExpectNotNull(a = wolfSSL_d2i_PrivateKey(EVP_PKEY_RSA, NULL, &in, (long)sizeof_client_key_der_2048)); in = ecc_clikey_der_256; - AssertNotNull(b = wolfSSL_d2i_PrivateKey(EVP_PKEY_EC, NULL, + ExpectNotNull(b = wolfSSL_d2i_PrivateKey(EVP_PKEY_EC, NULL, &in, (long)sizeof_ecc_clikey_der_256)); #if defined(WOLFSSL_ERROR_CODE_OPENSSL) - AssertIntEQ(EVP_PKEY_cmp(a, b), -1); + ExpectIntEQ(EVP_PKEY_cmp(a, b), -1); #else - AssertIntNE(EVP_PKEY_cmp(a, b), 0); + ExpectIntNE(EVP_PKEY_cmp(a, b), 0); #endif /* WOLFSSL_ERROR_CODE_OPENSSL */ EVP_PKEY_free(b); + b = NULL; EVP_PKEY_free(a); + a = NULL; #endif /* invalid or empty failure cases */ a = EVP_PKEY_new(); b = EVP_PKEY_new(); #if defined(WOLFSSL_ERROR_CODE_OPENSSL) - AssertIntEQ(EVP_PKEY_cmp(NULL, NULL), 0); - AssertIntEQ(EVP_PKEY_cmp(a, NULL), 0); - AssertIntEQ(EVP_PKEY_cmp(NULL, b), 0); + ExpectIntEQ(EVP_PKEY_cmp(NULL, NULL), 0); + ExpectIntEQ(EVP_PKEY_cmp(a, NULL), 0); + ExpectIntEQ(EVP_PKEY_cmp(NULL, b), 0); #ifdef NO_RSA /* Type check will fail since RSA is the default EVP key type */ - AssertIntEQ(EVP_PKEY_cmp(a, b), -2); + ExpectIntEQ(EVP_PKEY_cmp(a, b), -2); #else - AssertIntEQ(EVP_PKEY_cmp(a, b), 0); + ExpectIntEQ(EVP_PKEY_cmp(a, b), 0); #endif #else - AssertIntNE(EVP_PKEY_cmp(NULL, NULL), 0); - AssertIntNE(EVP_PKEY_cmp(a, NULL), 0); - AssertIntNE(EVP_PKEY_cmp(NULL, b), 0); - AssertIntNE(EVP_PKEY_cmp(a, b), 0); + ExpectIntNE(EVP_PKEY_cmp(NULL, NULL), 0); + ExpectIntNE(EVP_PKEY_cmp(a, NULL), 0); + ExpectIntNE(EVP_PKEY_cmp(NULL, b), 0); + ExpectIntNE(EVP_PKEY_cmp(a, b), 0); #endif EVP_PKEY_free(b); EVP_PKEY_free(a); (void)in; - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_ERR_load_crypto_strings(void) { - int res = TEST_SKIPPED; #if defined(OPENSSL_ALL) ERR_load_crypto_strings(); - - res = TEST_RES_CHECK(1); + return TEST_SUCCESS; +#else + return TEST_SKIPPED; #endif - return res; } #if defined(OPENSSL_ALL) && !defined(NO_CERTS) @@ -52697,27 +46458,27 @@ static void free_x509(X509* x) static int test_sk_X509(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_CERTS) { - STACK_OF(X509)* s; + STACK_OF(X509)* s = NULL; - AssertNotNull(s = sk_X509_new_null()); - AssertIntEQ(sk_X509_num(s), 0); + ExpectNotNull(s = sk_X509_new_null()); + ExpectIntEQ(sk_X509_num(s), 0); sk_X509_pop_free(s, NULL); - AssertNotNull(s = sk_X509_new_null()); - AssertIntEQ(sk_X509_num(s), 0); + ExpectNotNull(s = sk_X509_new_null()); + ExpectIntEQ(sk_X509_num(s), 0); sk_X509_pop_free(s, NULL); - AssertNotNull(s = sk_X509_new_null()); + ExpectNotNull(s = sk_X509_new_null()); sk_X509_push(s, (X509*)1); - AssertIntEQ(sk_X509_num(s), 1); - AssertIntEQ((sk_X509_value(s, 0) == (X509*)1), 1); + ExpectIntEQ(sk_X509_num(s), 1); + ExpectIntEQ((sk_X509_value(s, 0) == (X509*)1), 1); sk_X509_push(s, (X509*)2); - AssertIntEQ(sk_X509_num(s), 2); - AssertIntEQ((sk_X509_value(s, 0) == (X509*)2), 1); - AssertIntEQ((sk_X509_value(s, 1) == (X509*)1), 1); + ExpectIntEQ(sk_X509_num(s), 2); + ExpectIntEQ((sk_X509_value(s, 0) == (X509*)2), 1); + ExpectIntEQ((sk_X509_value(s, 1) == (X509*)1), 1); sk_X509_push(s, (X509*)2); sk_X509_pop_free(s, free_x509); } @@ -52725,22 +46486,24 @@ static int test_sk_X509(void) { /* Push a list of 10 X509s onto stack, then verify that * value(), push(), shift(), and pop() behave as expected. */ - STACK_OF(X509)* s; + STACK_OF(X509)* s = NULL; X509* xList[10]; int i = 0; const int len = (sizeof(xList) / sizeof(xList[0])); - for (i = 0; i < len; ++i) - AssertNotNull(xList[i] = X509_new()); + for (i = 0; i < len; ++i) { + xList[i] = NULL; + ExpectNotNull(xList[i] = X509_new()); + } /* test push, pop, and free */ - AssertNotNull(s = sk_X509_new_null()); + ExpectNotNull(s = sk_X509_new_null()); for (i = 0; i < len; ++i) { sk_X509_push(s, xList[i]); - AssertIntEQ(sk_X509_num(s), i + 1); - AssertIntEQ((sk_X509_value(s, 0) == xList[i]), 1); - AssertIntEQ((sk_X509_value(s, i) == xList[0]), 1); + ExpectIntEQ(sk_X509_num(s), i + 1); + ExpectIntEQ((sk_X509_value(s, 0) == xList[i]), 1); + ExpectIntEQ((sk_X509_value(s, i) == xList[0]), 1); } /* pop returns and removes last pushed on stack, which is index 0 @@ -52750,21 +46513,22 @@ static int test_sk_X509(void) X509 * y = sk_X509_pop(s); X509 * z = xList[len - 1 - i]; - AssertIntEQ((x == y), 1); - AssertIntEQ((x == z), 1); - AssertIntEQ(sk_X509_num(s), len - 1 - i); + ExpectIntEQ((x == y), 1); + ExpectIntEQ((x == z), 1); + ExpectIntEQ(sk_X509_num(s), len - 1 - i); } sk_free(s); + s = NULL; /* test push, shift, and free */ - AssertNotNull(s = sk_X509_new_null()); + ExpectNotNull(s = sk_X509_new_null()); for (i = 0; i < len; ++i) { sk_X509_push(s, xList[i]); - AssertIntEQ(sk_X509_num(s), i + 1); - AssertIntEQ((sk_X509_value(s, 0) == xList[i]), 1); - AssertIntEQ((sk_X509_value(s, i) == xList[0]), 1); + ExpectIntEQ(sk_X509_num(s), i + 1); + ExpectIntEQ((sk_X509_value(s, 0) == xList[i]), 1); + ExpectIntEQ((sk_X509_value(s, i) == xList[0]), 1); } /* shift returns and removes first pushed on stack, which is index i @@ -52774,9 +46538,9 @@ static int test_sk_X509(void) X509 * y = sk_X509_shift(s); X509 * z = xList[i]; - AssertIntEQ((x == y), 1); - AssertIntEQ((x == z), 1); - AssertIntEQ(sk_X509_num(s), len - 1 - i); + ExpectIntEQ((x == y), 1); + ExpectIntEQ((x == z), 1); + ExpectIntEQ(sk_X509_num(s), len - 1 - i); } sk_free(s); @@ -52784,67 +46548,65 @@ static int test_sk_X509(void) for (i = 0; i < len; ++i) X509_free(xList[i]); } - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_sk_X509_CRL(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_CERTS) && defined(HAVE_CRL) - X509_CRL* crl; - XFILE fp; - STACK_OF(X509_CRL)* s; + X509_CRL* crl = NULL; + XFILE fp = XBADFILE; + STACK_OF(X509_CRL)* s = NULL; - fp = XFOPEN("./certs/crl/crl.pem", "rb"); - AssertTrue((fp != XBADFILE)); - AssertNotNull(crl = (X509_CRL*)PEM_read_X509_CRL(fp, (X509_CRL **)NULL, NULL, NULL)); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/crl/crl.pem", "rb")) != XBADFILE); + ExpectNotNull(crl = (X509_CRL*)PEM_read_X509_CRL(fp, (X509_CRL **)NULL, + NULL, NULL)); + if (fp != XBADFILE) + XFCLOSE(fp); - AssertNotNull(s = sk_X509_CRL_new()); - AssertIntEQ(sk_X509_CRL_num(s), 0); - AssertIntEQ(sk_X509_CRL_push(s, crl), 1); - AssertIntEQ(sk_X509_CRL_num(s), 1); - AssertPtrEq(sk_X509_CRL_value(s, 0), crl); + ExpectNotNull(s = sk_X509_CRL_new()); + ExpectIntEQ(sk_X509_CRL_num(s), 0); + ExpectIntEQ(sk_X509_CRL_push(s, crl), 1); + if (EXPECT_FAIL()) { + X509_CRL_free(crl); + } + ExpectIntEQ(sk_X509_CRL_num(s), 1); + ExpectPtrEq(sk_X509_CRL_value(s, 0), crl); sk_X509_CRL_free(s); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_X509_get_signature_nid(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) && !defined(NO_FILESYSTEM) && !defined(NO_RSA) - X509* x509; + X509* x509 = NULL; - AssertIntEQ(X509_get_signature_nid(NULL), 0); - AssertNotNull(x509 = wolfSSL_X509_load_certificate_file(svrCertFile, - SSL_FILETYPE_PEM)); - AssertIntEQ(X509_get_signature_nid(x509), NID_sha256WithRSAEncryption); + ExpectIntEQ(X509_get_signature_nid(NULL), 0); + ExpectNotNull(x509 = wolfSSL_X509_load_certificate_file(svrCertFile, + SSL_FILETYPE_PEM)); + ExpectIntEQ(X509_get_signature_nid(x509), NID_sha256WithRSAEncryption); X509_free(x509); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_X509_REQ(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_CERTS) && \ defined(WOLFSSL_CERT_GEN) && defined(WOLFSSL_CERT_REQ) && !defined(NO_BIO) - X509_NAME* name; + X509_NAME* name = NULL; #ifndef NO_RSA - X509_NAME* subject; + X509_NAME* subject = NULL; #endif #if !defined(NO_RSA) || defined(HAVE_ECC) - X509_REQ* req; - EVP_PKEY* priv; - EVP_PKEY* pub; + X509_REQ* req = NULL; + EVP_PKEY* priv = NULL; + EVP_PKEY* pub = NULL; unsigned char* der = NULL; int len; #endif @@ -52864,91 +46626,95 @@ static int test_X509_REQ(void) const unsigned char* ecPub = (unsigned char*)ecc_clikeypub_der_256; #endif - AssertNotNull(name = X509_NAME_new()); - AssertIntEQ(X509_NAME_add_entry_by_txt(name, "commonName", MBSTRING_UTF8, - (byte*)"wolfssl.com", 11, 0, 1), - WOLFSSL_SUCCESS); - AssertIntEQ(X509_NAME_add_entry_by_txt(name, "emailAddress", MBSTRING_UTF8, - (byte*)"support@wolfssl.com", 19, -1, - 1), WOLFSSL_SUCCESS); + ExpectNotNull(name = X509_NAME_new()); + ExpectIntEQ(X509_NAME_add_entry_by_txt(name, "commonName", MBSTRING_UTF8, + (byte*)"wolfssl.com", 11, 0, 1), WOLFSSL_SUCCESS); + ExpectIntEQ(X509_NAME_add_entry_by_txt(name, "emailAddress", MBSTRING_UTF8, + (byte*)"support@wolfssl.com", 19, -1, 1), WOLFSSL_SUCCESS); #ifndef NO_RSA - AssertNotNull(priv = d2i_PrivateKey(EVP_PKEY_RSA, NULL, &rsaPriv, - (long)sizeof_client_key_der_2048)); - AssertNotNull(pub = d2i_PUBKEY(NULL, &rsaPub, - (long)sizeof_client_keypub_der_2048)); - AssertNotNull(req = X509_REQ_new()); - AssertIntEQ(X509_REQ_set_subject_name(NULL, name), WOLFSSL_FAILURE); - AssertIntEQ(X509_REQ_set_subject_name(req, NULL), WOLFSSL_FAILURE); - AssertIntEQ(X509_REQ_set_subject_name(req, name), WOLFSSL_SUCCESS); - AssertIntEQ(X509_REQ_set_pubkey(NULL, pub), WOLFSSL_FAILURE); - AssertIntEQ(X509_REQ_set_pubkey(req, NULL), WOLFSSL_FAILURE); - AssertIntEQ(X509_REQ_set_pubkey(req, pub), WOLFSSL_SUCCESS); - AssertIntEQ(X509_REQ_sign(NULL, priv, EVP_sha256()), WOLFSSL_FAILURE); - AssertIntEQ(X509_REQ_sign(req, NULL, EVP_sha256()), WOLFSSL_FAILURE); - AssertIntEQ(X509_REQ_sign(req, priv, NULL), WOLFSSL_FAILURE); - AssertIntEQ(X509_REQ_sign(req, priv, EVP_sha256()), WOLFSSL_SUCCESS); + ExpectNotNull(priv = d2i_PrivateKey(EVP_PKEY_RSA, NULL, &rsaPriv, + (long)sizeof_client_key_der_2048)); + ExpectNotNull(pub = d2i_PUBKEY(NULL, &rsaPub, + (long)sizeof_client_keypub_der_2048)); + ExpectNotNull(req = X509_REQ_new()); + ExpectIntEQ(X509_REQ_set_subject_name(NULL, name), WOLFSSL_FAILURE); + ExpectIntEQ(X509_REQ_set_subject_name(req, NULL), WOLFSSL_FAILURE); + ExpectIntEQ(X509_REQ_set_subject_name(req, name), WOLFSSL_SUCCESS); + ExpectIntEQ(X509_REQ_set_pubkey(NULL, pub), WOLFSSL_FAILURE); + ExpectIntEQ(X509_REQ_set_pubkey(req, NULL), WOLFSSL_FAILURE); + ExpectIntEQ(X509_REQ_set_pubkey(req, pub), WOLFSSL_SUCCESS); + ExpectIntEQ(X509_REQ_sign(NULL, priv, EVP_sha256()), WOLFSSL_FAILURE); + ExpectIntEQ(X509_REQ_sign(req, NULL, EVP_sha256()), WOLFSSL_FAILURE); + ExpectIntEQ(X509_REQ_sign(req, priv, NULL), WOLFSSL_FAILURE); + ExpectIntEQ(X509_REQ_sign(req, priv, EVP_sha256()), WOLFSSL_SUCCESS); len = i2d_X509_REQ(req, &der); DEBUG_WRITE_DER(der, len, "req.der"); #ifdef USE_CERT_BUFFERS_1024 - AssertIntEQ(len, 381); + ExpectIntEQ(len, 381); #else - AssertIntEQ(len, 643); + ExpectIntEQ(len, 643); #endif XFREE(der, NULL, DYNAMIC_TYPE_OPENSSL); der = NULL; mctx = EVP_MD_CTX_new(); - AssertIntEQ(EVP_DigestSignInit(mctx, &pkctx, EVP_sha256(), NULL, priv), WOLFSSL_SUCCESS); - AssertIntEQ(X509_REQ_sign_ctx(req, mctx), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_DigestSignInit(mctx, &pkctx, EVP_sha256(), NULL, priv), + WOLFSSL_SUCCESS); + ExpectIntEQ(X509_REQ_sign_ctx(req, mctx), WOLFSSL_SUCCESS); EVP_MD_CTX_free(mctx); + mctx = NULL; X509_REQ_free(NULL); X509_REQ_free(req); + req = NULL; /* Test getting the subject from a newly created X509_REQ */ - AssertNotNull(req = X509_REQ_new()); - AssertNotNull(subject = X509_REQ_get_subject_name(req)); - AssertIntEQ(X509_NAME_add_entry_by_NID(subject, NID_commonName, - MBSTRING_UTF8, (unsigned char*)"www.wolfssl.com", -1, -1, 0), 1); - AssertIntEQ(X509_NAME_add_entry_by_NID(subject, NID_countryName, - MBSTRING_UTF8, (unsigned char*)"US", -1, -1, 0), 1); - AssertIntEQ(X509_NAME_add_entry_by_NID(subject, NID_localityName, - MBSTRING_UTF8, (unsigned char*)"Bozeman", -1, -1, 0), 1); - AssertIntEQ(X509_NAME_add_entry_by_NID(subject, NID_stateOrProvinceName, - MBSTRING_UTF8, (unsigned char*)"Montana", -1, -1, 0), 1); - AssertIntEQ(X509_NAME_add_entry_by_NID(subject, NID_organizationName, - MBSTRING_UTF8, (unsigned char*)"wolfSSL", -1, -1, 0), 1); - AssertIntEQ(X509_NAME_add_entry_by_NID(subject, NID_organizationalUnitName, - MBSTRING_UTF8, (unsigned char*)"Testing", -1, -1, 0), 1); - AssertIntEQ(X509_REQ_set_pubkey(req, pub), WOLFSSL_SUCCESS); - AssertIntEQ(X509_REQ_sign(req, priv, EVP_sha256()), WOLFSSL_SUCCESS); + ExpectNotNull(req = X509_REQ_new()); + ExpectNotNull(subject = X509_REQ_get_subject_name(req)); + ExpectIntEQ(X509_NAME_add_entry_by_NID(subject, NID_commonName, + MBSTRING_UTF8, (unsigned char*)"www.wolfssl.com", -1, -1, 0), 1); + ExpectIntEQ(X509_NAME_add_entry_by_NID(subject, NID_countryName, + MBSTRING_UTF8, (unsigned char*)"US", -1, -1, 0), 1); + ExpectIntEQ(X509_NAME_add_entry_by_NID(subject, NID_localityName, + MBSTRING_UTF8, (unsigned char*)"Bozeman", -1, -1, 0), 1); + ExpectIntEQ(X509_NAME_add_entry_by_NID(subject, NID_stateOrProvinceName, + MBSTRING_UTF8, (unsigned char*)"Montana", -1, -1, 0), 1); + ExpectIntEQ(X509_NAME_add_entry_by_NID(subject, NID_organizationName, + MBSTRING_UTF8, (unsigned char*)"wolfSSL", -1, -1, 0), 1); + ExpectIntEQ(X509_NAME_add_entry_by_NID(subject, NID_organizationalUnitName, + MBSTRING_UTF8, (unsigned char*)"Testing", -1, -1, 0), 1); + ExpectIntEQ(X509_REQ_set_pubkey(req, pub), WOLFSSL_SUCCESS); + ExpectIntEQ(X509_REQ_sign(req, priv, EVP_sha256()), WOLFSSL_SUCCESS); len = i2d_X509_REQ(req, &der); DEBUG_WRITE_DER(der, len, "req2.der"); #ifdef USE_CERT_BUFFERS_1024 - AssertIntEQ(len, 435); + ExpectIntEQ(len, 435); #else - AssertIntEQ(len, 696); + ExpectIntEQ(len, 696); #endif XFREE(der, NULL, DYNAMIC_TYPE_OPENSSL); der = NULL; EVP_PKEY_free(pub); + pub = NULL; EVP_PKEY_free(priv); + priv = NULL; X509_REQ_free(req); + req = NULL; #endif #ifdef HAVE_ECC - AssertNotNull(priv = wolfSSL_d2i_PrivateKey(EVP_PKEY_EC, NULL, &ecPriv, - sizeof_ecc_clikey_der_256)); - AssertNotNull(pub = wolfSSL_d2i_PUBKEY(NULL, &ecPub, - sizeof_ecc_clikeypub_der_256)); - AssertNotNull(req = X509_REQ_new()); - AssertIntEQ(X509_REQ_set_subject_name(req, name), WOLFSSL_SUCCESS); - AssertIntEQ(X509_REQ_set_pubkey(req, pub), WOLFSSL_SUCCESS); - AssertIntEQ(X509_REQ_sign(req, priv, EVP_sha256()), WOLFSSL_SUCCESS); + ExpectNotNull(priv = wolfSSL_d2i_PrivateKey(EVP_PKEY_EC, NULL, &ecPriv, + sizeof_ecc_clikey_der_256)); + ExpectNotNull(pub = wolfSSL_d2i_PUBKEY(NULL, &ecPub, + sizeof_ecc_clikeypub_der_256)); + ExpectNotNull(req = X509_REQ_new()); + ExpectIntEQ(X509_REQ_set_subject_name(req, name), WOLFSSL_SUCCESS); + ExpectIntEQ(X509_REQ_set_pubkey(req, pub), WOLFSSL_SUCCESS); + ExpectIntEQ(X509_REQ_sign(req, priv, EVP_sha256()), WOLFSSL_SUCCESS); /* Signature is random and may be shorter or longer. */ - AssertIntGE((len = i2d_X509_REQ(req, &der)), 245); - AssertIntLE(len, 253); + ExpectIntGE((len = i2d_X509_REQ(req, &der)), 245); + ExpectIntLE(len, 253); XFREE(der, NULL, DYNAMIC_TYPE_OPENSSL); X509_REQ_free(req); EVP_PKEY_free(pub); @@ -52960,70 +46726,71 @@ static int test_X509_REQ(void) #endif /* HAVE_ECC */ X509_NAME_free(name); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfssl_PKCS7(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) && !defined(NO_BIO) && \ !defined(NO_RSA) - PKCS7* pkcs7; + PKCS7* pkcs7 = NULL; byte data[FOURK_BUF]; word32 len = sizeof(data); const byte* p = data; byte content[] = "Test data to encode."; #if !defined(NO_RSA) & defined(USE_CERT_BUFFERS_2048) - BIO* bio; + BIO* bio = NULL; byte key[sizeof(client_key_der_2048)]; word32 keySz = (word32)sizeof(key); byte* out = NULL; #endif - AssertIntGT((len = CreatePKCS7SignedData(data, len, content, - (word32)sizeof(content), - 0, 0, 0, RSA_TYPE)), 0); + ExpectIntGT((len = CreatePKCS7SignedData(data, len, content, + (word32)sizeof(content), 0, 0, 0, RSA_TYPE)), 0); - AssertNull(pkcs7 = d2i_PKCS7(NULL, NULL, len)); - AssertNull(pkcs7 = d2i_PKCS7(NULL, &p, 0)); - AssertNotNull(pkcs7 = d2i_PKCS7(NULL, &p, len)); - AssertIntEQ(wolfSSL_PKCS7_verify(NULL, NULL, NULL, NULL, NULL, - PKCS7_NOVERIFY), WOLFSSL_FAILURE); + ExpectNull(pkcs7 = d2i_PKCS7(NULL, NULL, len)); + ExpectNull(pkcs7 = d2i_PKCS7(NULL, &p, 0)); + ExpectNotNull(pkcs7 = d2i_PKCS7(NULL, &p, len)); + ExpectIntEQ(wolfSSL_PKCS7_verify(NULL, NULL, NULL, NULL, NULL, + PKCS7_NOVERIFY), WOLFSSL_FAILURE); PKCS7_free(pkcs7); + pkcs7 = NULL; /* fail case, without PKCS7_NOVERIFY */ p = data; - AssertNotNull(pkcs7 = d2i_PKCS7(NULL, &p, len)); - AssertIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, NULL, NULL, - 0), WOLFSSL_FAILURE); + ExpectNotNull(pkcs7 = d2i_PKCS7(NULL, &p, len)); + ExpectIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, NULL, NULL, + 0), WOLFSSL_FAILURE); PKCS7_free(pkcs7); + pkcs7 = NULL; /* success case, with PKCS7_NOVERIFY */ p = data; - AssertNotNull(pkcs7 = d2i_PKCS7(NULL, &p, len)); - AssertIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, NULL, NULL, - PKCS7_NOVERIFY), WOLFSSL_SUCCESS); + ExpectNotNull(pkcs7 = d2i_PKCS7(NULL, &p, len)); + ExpectIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, NULL, NULL, + PKCS7_NOVERIFY), WOLFSSL_SUCCESS); #if !defined(NO_RSA) & defined(USE_CERT_BUFFERS_2048) /* test i2d */ XMEMCPY(key, client_key_der_2048, keySz); - pkcs7->privateKey = key; - pkcs7->privateKeySz = (word32)sizeof(key); - pkcs7->encryptOID = RSAk; -#ifdef NO_SHA - pkcs7->hashOID = SHA256h; -#else - pkcs7->hashOID = SHAh; -#endif - AssertNotNull(bio = BIO_new(BIO_s_mem())); - AssertIntEQ(i2d_PKCS7_bio(bio, pkcs7), 1); + if (pkcs7 != NULL) { + pkcs7->privateKey = key; + pkcs7->privateKeySz = (word32)sizeof(key); + pkcs7->encryptOID = RSAk; + #ifdef NO_SHA + pkcs7->hashOID = SHA256h; + #else + pkcs7->hashOID = SHAh; + #endif + } + ExpectNotNull(bio = BIO_new(BIO_s_mem())); + ExpectIntEQ(i2d_PKCS7_bio(bio, pkcs7), 1); #ifndef NO_ASN_TIME - AssertIntEQ(i2d_PKCS7(pkcs7, &out), 655); + ExpectIntEQ(i2d_PKCS7(pkcs7, &out), 655); #else - AssertIntEQ(i2d_PKCS7(pkcs7, &out), 625); + ExpectIntEQ(i2d_PKCS7(pkcs7, &out), 625); #endif XFREE(out, NULL, DYNAMIC_TYPE_TMP_BUFFER); BIO_free(bio); @@ -53031,15 +46798,13 @@ static int test_wolfssl_PKCS7(void) PKCS7_free(NULL); PKCS7_free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_PKCS7_sign(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) && !defined(NO_BIO) && \ !defined(NO_FILESYSTEM) && !defined(NO_RSA) @@ -53065,63 +46830,66 @@ static int test_wolfSSL_PKCS7_sign(void) X509_STORE* store = NULL; /* read signer cert/key into BIO */ - AssertNotNull(certBio = BIO_new_file(cert, "r")); - AssertNotNull(keyBio = BIO_new_file(key, "r")); - AssertNotNull(signCert = PEM_read_bio_X509(certBio, NULL, 0, NULL)); - AssertNotNull(signKey = PEM_read_bio_PrivateKey(keyBio, NULL, 0, NULL)); + ExpectNotNull(certBio = BIO_new_file(cert, "r")); + ExpectNotNull(keyBio = BIO_new_file(key, "r")); + ExpectNotNull(signCert = PEM_read_bio_X509(certBio, NULL, 0, NULL)); + ExpectNotNull(signKey = PEM_read_bio_PrivateKey(keyBio, NULL, 0, NULL)); /* read CA cert into store (for verify) */ - AssertNotNull(caBio = BIO_new_file(ca, "r")); - AssertNotNull(caCert = PEM_read_bio_X509(caBio, NULL, 0, NULL)); - AssertNotNull(store = X509_STORE_new()); - AssertIntEQ(X509_STORE_add_cert(store, caCert), 1); + ExpectNotNull(caBio = BIO_new_file(ca, "r")); + ExpectNotNull(caCert = PEM_read_bio_X509(caBio, NULL, 0, NULL)); + ExpectNotNull(store = X509_STORE_new()); + ExpectIntEQ(X509_STORE_add_cert(store, caCert), 1); /* data to be signed into BIO */ - AssertNotNull(inBio = BIO_new(BIO_s_mem())); - AssertIntGT(BIO_write(inBio, data, sizeof(data)), 0); + ExpectNotNull(inBio = BIO_new(BIO_s_mem())); + ExpectIntGT(BIO_write(inBio, data, sizeof(data)), 0); /* PKCS7_sign, bad args: signer NULL */ - AssertNull(p7 = PKCS7_sign(NULL, signKey, NULL, inBio, 0)); + ExpectNull(p7 = PKCS7_sign(NULL, signKey, NULL, inBio, 0)); /* PKCS7_sign, bad args: signer key NULL */ - AssertNull(p7 = PKCS7_sign(signCert, NULL, NULL, inBio, 0)); + ExpectNull(p7 = PKCS7_sign(signCert, NULL, NULL, inBio, 0)); /* PKCS7_sign, bad args: in data NULL without PKCS7_STREAM */ - AssertNull(p7 = PKCS7_sign(signCert, signKey, NULL, NULL, 0)); + ExpectNull(p7 = PKCS7_sign(signCert, signKey, NULL, NULL, 0)); /* PKCS7_sign, bad args: PKCS7_NOCERTS flag not supported */ - AssertNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, PKCS7_NOCERTS)); + ExpectNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, PKCS7_NOCERTS)); /* PKCS7_sign, bad args: PKCS7_PARTIAL flag not supported */ - AssertNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, PKCS7_PARTIAL)); + ExpectNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, PKCS7_PARTIAL)); /* TEST SUCCESS: Not detached, not streaming, not MIME */ { flags = PKCS7_BINARY; - AssertNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); - AssertIntGT((outLen = i2d_PKCS7(p7, &out)), 0); + ExpectNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); + ExpectIntGT((outLen = i2d_PKCS7(p7, &out)), 0); /* verify with d2i_PKCS7 */ tmpPtr = out; - AssertNotNull(p7Ver = d2i_PKCS7(NULL, (const byte**)&tmpPtr, outLen)); - AssertIntEQ(PKCS7_verify(p7Ver, NULL, store, NULL, NULL, flags), 1); + ExpectNotNull(p7Ver = d2i_PKCS7(NULL, (const byte**)&tmpPtr, outLen)); + ExpectIntEQ(PKCS7_verify(p7Ver, NULL, store, NULL, NULL, flags), 1); PKCS7_free(p7Ver); + p7Ver = NULL; /* verify with wc_PKCS7_VerifySignedData */ - AssertNotNull(p7Ver = wc_PKCS7_New(HEAP_HINT, testDevId)); - AssertIntEQ(wc_PKCS7_Init(p7Ver, HEAP_HINT, INVALID_DEVID), 0); - AssertIntEQ(wc_PKCS7_VerifySignedData(p7Ver, out, outLen), 0); + ExpectNotNull(p7Ver = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_Init(p7Ver, HEAP_HINT, INVALID_DEVID), 0); + ExpectIntEQ(wc_PKCS7_VerifySignedData(p7Ver, out, outLen), 0); /* compare the signer found to expected signer */ - AssertIntNE(p7Ver->verifyCertSz, 0); + ExpectIntNE(p7Ver->verifyCertSz, 0); tmpPtr = NULL; - AssertIntEQ(i2d_X509(signCert, &tmpPtr), p7Ver->verifyCertSz); - AssertIntEQ(XMEMCMP(tmpPtr, p7Ver->verifyCert, p7Ver->verifyCertSz), 0); + ExpectIntEQ(i2d_X509(signCert, &tmpPtr), p7Ver->verifyCertSz); + ExpectIntEQ(XMEMCMP(tmpPtr, p7Ver->verifyCert, p7Ver->verifyCertSz), 0); XFREE(tmpPtr, NULL, DYNAMIC_TYPE_OPENSSL); tmpPtr = NULL; wc_PKCS7_Free(p7Ver); + p7Ver = NULL; - AssertNotNull(out); + ExpectNotNull(out); XFREE(out, NULL, DYNAMIC_TYPE_TMP_BUFFER); out = NULL; PKCS7_free(p7); + p7 = NULL; } /* TEST SUCCESS: Not detached, streaming, not MIME. Also bad arg @@ -53129,82 +46897,96 @@ static int test_wolfSSL_PKCS7_sign(void) { /* re-populate input BIO, may have been consumed */ BIO_free(inBio); - AssertNotNull(inBio = BIO_new(BIO_s_mem())); - AssertIntGT(BIO_write(inBio, data, sizeof(data)), 0); + inBio = NULL; + ExpectNotNull(inBio = BIO_new(BIO_s_mem())); + ExpectIntGT(BIO_write(inBio, data, sizeof(data)), 0); flags = PKCS7_BINARY | PKCS7_STREAM; - AssertNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); - AssertIntEQ(PKCS7_final(p7, inBio, flags), 1); - AssertIntGT((outLen = i2d_PKCS7(p7, &out)), 0); + ExpectNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); + ExpectIntEQ(PKCS7_final(p7, inBio, flags), 1); + ExpectIntGT((outLen = i2d_PKCS7(p7, &out)), 0); /* PKCS7_final, bad args: PKCS7 null */ - AssertIntEQ(PKCS7_final(NULL, inBio, 0), 0); + ExpectIntEQ(PKCS7_final(NULL, inBio, 0), 0); /* PKCS7_final, bad args: PKCS7 null */ - AssertIntEQ(PKCS7_final(p7, NULL, 0), 0); + ExpectIntEQ(PKCS7_final(p7, NULL, 0), 0); tmpPtr = out; - AssertNotNull(p7Ver = d2i_PKCS7(NULL, (const byte**)&tmpPtr, outLen)); - AssertIntEQ(PKCS7_verify(p7Ver, NULL, store, NULL, NULL, flags), 1); + ExpectNotNull(p7Ver = d2i_PKCS7(NULL, (const byte**)&tmpPtr, outLen)); + ExpectIntEQ(PKCS7_verify(p7Ver, NULL, store, NULL, NULL, flags), 1); PKCS7_free(p7Ver); + p7Ver = NULL; - AssertNotNull(out); + ExpectNotNull(out); XFREE(out, NULL, DYNAMIC_TYPE_TMP_BUFFER); out = NULL; PKCS7_free(p7); + p7 = NULL; } /* TEST SUCCESS: Detached, not streaming, not MIME */ { /* re-populate input BIO, may have been consumed */ BIO_free(inBio); - AssertNotNull(inBio = BIO_new(BIO_s_mem())); - AssertIntGT(BIO_write(inBio, data, sizeof(data)), 0); + inBio = NULL; + ExpectNotNull(inBio = BIO_new(BIO_s_mem())); + ExpectIntGT(BIO_write(inBio, data, sizeof(data)), 0); flags = PKCS7_BINARY | PKCS7_DETACHED; - AssertNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); - AssertIntGT((outLen = i2d_PKCS7(p7, &out)), 0); + ExpectNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); + ExpectIntGT((outLen = i2d_PKCS7(p7, &out)), 0); /* verify with wolfCrypt, d2i_PKCS7 does not support detached content */ - AssertNotNull(p7Ver = wc_PKCS7_New(HEAP_HINT, testDevId)); - p7Ver->content = data; - p7Ver->contentSz = sizeof(data); - AssertIntEQ(wc_PKCS7_VerifySignedData(p7Ver, out, outLen), 0); + ExpectNotNull(p7Ver = wc_PKCS7_New(HEAP_HINT, testDevId)); + if (p7Ver != NULL) { + p7Ver->content = data; + p7Ver->contentSz = sizeof(data); + } + ExpectIntEQ(wc_PKCS7_VerifySignedData(p7Ver, out, outLen), 0); wc_PKCS7_Free(p7Ver); + p7Ver = NULL; /* verify expected failure (NULL return) from d2i_PKCS7, it does not * yet support detached content */ tmpPtr = out; - AssertNull(p7Ver = d2i_PKCS7(NULL, (const byte**)&tmpPtr, outLen)); + ExpectNull(p7Ver = d2i_PKCS7(NULL, (const byte**)&tmpPtr, outLen)); PKCS7_free(p7Ver); + p7Ver = NULL; - AssertNotNull(out); + ExpectNotNull(out); XFREE(out, NULL, DYNAMIC_TYPE_TMP_BUFFER); out = NULL; PKCS7_free(p7); + p7 = NULL; } /* TEST SUCCESS: Detached, streaming, not MIME */ { /* re-populate input BIO, may have been consumed */ BIO_free(inBio); - AssertNotNull(inBio = BIO_new(BIO_s_mem())); - AssertIntGT(BIO_write(inBio, data, sizeof(data)), 0); + inBio = NULL; + ExpectNotNull(inBio = BIO_new(BIO_s_mem())); + ExpectIntGT(BIO_write(inBio, data, sizeof(data)), 0); flags = PKCS7_BINARY | PKCS7_DETACHED | PKCS7_STREAM; - AssertNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); - AssertIntEQ(PKCS7_final(p7, inBio, flags), 1); - AssertIntGT((outLen = i2d_PKCS7(p7, &out)), 0); + ExpectNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); + ExpectIntEQ(PKCS7_final(p7, inBio, flags), 1); + ExpectIntGT((outLen = i2d_PKCS7(p7, &out)), 0); /* verify with wolfCrypt, d2i_PKCS7 does not support detached content */ - AssertNotNull(p7Ver = wc_PKCS7_New(HEAP_HINT, testDevId)); - p7Ver->content = data; - p7Ver->contentSz = sizeof(data); - AssertIntEQ(wc_PKCS7_VerifySignedData(p7Ver, out, outLen), 0); + ExpectNotNull(p7Ver = wc_PKCS7_New(HEAP_HINT, testDevId)); + if (p7Ver != NULL) { + p7Ver->content = data; + p7Ver->contentSz = sizeof(data); + } + ExpectIntEQ(wc_PKCS7_VerifySignedData(p7Ver, out, outLen), 0); wc_PKCS7_Free(p7Ver); + p7Ver = NULL; - AssertNotNull(out); + ExpectNotNull(out); XFREE(out, NULL, DYNAMIC_TYPE_TMP_BUFFER); PKCS7_free(p7); + p7 = NULL; } X509_STORE_free(store); @@ -53215,33 +46997,28 @@ static int test_wolfSSL_PKCS7_sign(void) BIO_free(keyBio); BIO_free(certBio); BIO_free(caBio); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_PKCS7_SIGNED_new(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) - PKCS7_SIGNED* pkcs7; + PKCS7_SIGNED* pkcs7 = NULL; - pkcs7 = PKCS7_SIGNED_new(); - AssertNotNull(pkcs7); - AssertIntEQ(pkcs7->contentOID, SIGNED_DATA); + ExpectNotNull(pkcs7 = PKCS7_SIGNED_new()); + ExpectIntEQ(pkcs7->contentOID, SIGNED_DATA); PKCS7_SIGNED_free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } #ifndef NO_BIO static int test_wolfSSL_PEM_write_bio_PKCS7(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) PKCS7* pkcs7 = NULL; BIO* bio = NULL; @@ -53274,19 +47051,27 @@ static int test_wolfSSL_PEM_write_bio_PKCS7(void) #else unsigned char cert[ONEK_BUF]; unsigned char key[ONEK_BUF]; - XFILE fp; + XFILE fp = XBADFILE; int certSz; int keySz; - fp = XFOPEN("./certs/1024/client-cert.der", "rb"); - AssertTrue((fp != XBADFILE)); - certSz = (int)XFREAD(cert, 1, sizeof_client_cert_der_1024, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/1024/client-cert.der", "rb")) != + XBADFILE); + ExpectIntGT(certSz = (int)XFREAD(cert, 1, sizeof_client_cert_der_1024, + fp), 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } - fp = XFOPEN("./certs/1024/client-key.der", "rb"); - AssertTrue(fp != XBADFILE); - keySz = (int)XFREAD(key, 1, sizeof_client_key_der_1024, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/1024/client-key.der", "rb")) != + XBADFILE); + ExpectIntGT(keySz = (int)XFREAD(key, 1, sizeof_client_key_der_1024, fp), + 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } #endif #elif defined(HAVE_ECC) #if defined(USE_CERT_BUFFERS_256) @@ -53301,66 +47086,75 @@ static int test_wolfSSL_PEM_write_bio_PKCS7(void) #else unsigned char cert[ONEK_BUF]; unsigned char key[ONEK_BUF]; - XFILE fp; + XFILE fp = XBADFILE; int certSz, keySz; - fp = XFOPEN("./certs/client-ecc-cert.der", "rb"); - AssertTrue(fp != XBADFILE); - certSz = (int)XFREAD(cert, 1, sizeof_cliecc_cert_der_256, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/client-ecc-cert.der", "rb")) != + XBADFILE); + ExpectIntGT(certSz = (int)XFREAD(cert, 1, sizeof_cliecc_cert_der_256, + fp), 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } - fp = XFOPEN("./certs/client-ecc-key.der", "rb"); - AssertTrue(fp != XBADFILE); - keySz = (int)XFREAD(key, 1, sizeof_ecc_clikey_der_256, fp); - XFCLOSE(fp); + ExpectTrue((fp = XFOPEN("./certs/client-ecc-key.der", "rb")) != + XBADFILE); + ExpectIntGT(keySz = (int)XFREAD(key, 1, sizeof_ecc_clikey_der_256, fp), + 0); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } #endif #else #error PKCS7 requires ECC or RSA #endif - AssertNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); /* initialize with DER encoded cert */ - AssertIntEQ(wc_PKCS7_InitWithCert(pkcs7, (byte*)cert, (word32)certSz), 0); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, (byte*)cert, (word32)certSz), 0); /* init rng */ - AssertIntEQ(wc_InitRng(&rng), 0); + XMEMSET(&rng, 0, sizeof(WC_RNG)); + ExpectIntEQ(wc_InitRng(&rng), 0); - pkcs7->rng = &rng; - pkcs7->content = (byte*)data; /* not used for ex */ - pkcs7->contentSz = (word32)sizeof(data); - pkcs7->contentOID = SIGNED_DATA; - pkcs7->privateKey = key; - pkcs7->privateKeySz = (word32)sizeof(key); - pkcs7->encryptOID = RSAk; -#ifdef NO_SHA - pkcs7->hashOID = SHA256h; -#else - pkcs7->hashOID = SHAh; -#endif - pkcs7->signedAttribs = NULL; - pkcs7->signedAttribsSz = 0; + if (pkcs7 != NULL) { + pkcs7->rng = &rng; + pkcs7->content = (byte*)data; /* not used for ex */ + pkcs7->contentSz = (word32)sizeof(data); + pkcs7->contentOID = SIGNED_DATA; + pkcs7->privateKey = key; + pkcs7->privateKeySz = (word32)sizeof(key); + pkcs7->encryptOID = RSAk; + #ifdef NO_SHA + pkcs7->hashOID = SHA256h; + #else + pkcs7->hashOID = SHAh; + #endif + pkcs7->signedAttribs = NULL; + pkcs7->signedAttribsSz = 0; + } - AssertNotNull(bio = BIO_new(BIO_s_mem())); + ExpectNotNull(bio = BIO_new(BIO_s_mem())); /* Write PKCS#7 PEM to BIO, the function converts the DER to PEM cert*/ - AssertIntEQ(PEM_write_bio_PKCS7(bio, pkcs7), WOLFSSL_SUCCESS); + ExpectIntEQ(PEM_write_bio_PKCS7(bio, pkcs7), WOLFSSL_SUCCESS); /* Read PKCS#7 PEM from BIO */ ret = wolfSSL_BIO_get_mem_data(bio, &cert_buf); - AssertIntGE(ret, 0); + ExpectIntGE(ret, 0); BIO_free(bio); wc_PKCS7_Free(pkcs7); wc_FreeRng(&rng); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } #ifdef HAVE_SMIME static int test_wolfSSL_SMIME_read_PKCS7(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) && !defined(NO_FILESYSTEM) && \ !defined(NO_RSA) PKCS7* pkcs7 = NULL; @@ -53370,80 +47164,89 @@ static int test_wolfSSL_SMIME_read_PKCS7(void) const byte* outBuf = NULL; int outBufLen = 0; static const char contTypeText[] = "Content-Type: text/plain\r\n\r\n"; - XFILE smimeTestFile = XFOPEN("./certs/test/smime-test.p7s", "r"); + XFILE smimeTestFile = XBADFILE; + + ExpectTrue((smimeTestFile = XFOPEN("./certs/test/smime-test.p7s", "r")) != + XBADFILE); /* smime-test.p7s */ bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file()); - AssertNotNull(bio); - AssertIntEQ(wolfSSL_BIO_set_fp(bio, smimeTestFile, BIO_CLOSE), SSL_SUCCESS); + ExpectNotNull(bio); + ExpectIntEQ(wolfSSL_BIO_set_fp(bio, smimeTestFile, BIO_CLOSE), SSL_SUCCESS); pkcs7 = wolfSSL_SMIME_read_PKCS7(bio, &bcont); - AssertNotNull(pkcs7); - AssertIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, bcont, NULL, - PKCS7_NOVERIFY), SSL_SUCCESS); + ExpectNotNull(pkcs7); + ExpectIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, bcont, NULL, + PKCS7_NOVERIFY), SSL_SUCCESS); XFCLOSE(smimeTestFile); if (bcont) BIO_free(bcont); + bcont = NULL; wolfSSL_PKCS7_free(pkcs7); + pkcs7 = NULL; /* smime-test-multipart.p7s */ smimeTestFile = XFOPEN("./certs/test/smime-test-multipart.p7s", "r"); - AssertIntEQ(wolfSSL_BIO_set_fp(bio, smimeTestFile, BIO_CLOSE), SSL_SUCCESS); + ExpectIntEQ(wolfSSL_BIO_set_fp(bio, smimeTestFile, BIO_CLOSE), SSL_SUCCESS); pkcs7 = wolfSSL_SMIME_read_PKCS7(bio, &bcont); - AssertNotNull(pkcs7); - AssertIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, bcont, NULL, - PKCS7_NOVERIFY), SSL_SUCCESS); + ExpectNotNull(pkcs7); + ExpectIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, bcont, NULL, + PKCS7_NOVERIFY), SSL_SUCCESS); XFCLOSE(smimeTestFile); if (bcont) BIO_free(bcont); + bcont = NULL; wolfSSL_PKCS7_free(pkcs7); + pkcs7 = NULL; /* smime-test-multipart-badsig.p7s */ smimeTestFile = XFOPEN("./certs/test/smime-test-multipart-badsig.p7s", "r"); - AssertIntEQ(wolfSSL_BIO_set_fp(bio, smimeTestFile, BIO_CLOSE), SSL_SUCCESS); + ExpectIntEQ(wolfSSL_BIO_set_fp(bio, smimeTestFile, BIO_CLOSE), SSL_SUCCESS); pkcs7 = wolfSSL_SMIME_read_PKCS7(bio, &bcont); - AssertNull(pkcs7); - AssertIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, bcont, NULL, - PKCS7_NOVERIFY), SSL_FAILURE); + ExpectNull(pkcs7); + ExpectIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, bcont, NULL, + PKCS7_NOVERIFY), SSL_FAILURE); XFCLOSE(smimeTestFile); if (bcont) BIO_free(bcont); + bcont = NULL; wolfSSL_PKCS7_free(pkcs7); + pkcs7 = NULL; /* smime-test-canon.p7s */ smimeTestFile = XFOPEN("./certs/test/smime-test-canon.p7s", "r"); - AssertIntEQ(wolfSSL_BIO_set_fp(bio, smimeTestFile, BIO_CLOSE), SSL_SUCCESS); + ExpectIntEQ(wolfSSL_BIO_set_fp(bio, smimeTestFile, BIO_CLOSE), SSL_SUCCESS); pkcs7 = wolfSSL_SMIME_read_PKCS7(bio, &bcont); - AssertNotNull(pkcs7); - AssertIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, bcont, NULL, - PKCS7_NOVERIFY), SSL_SUCCESS); + ExpectNotNull(pkcs7); + ExpectIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, bcont, NULL, + PKCS7_NOVERIFY), SSL_SUCCESS); XFCLOSE(smimeTestFile); if (bcont) BIO_free(bcont); + bcont = NULL; wolfSSL_PKCS7_free(pkcs7); + pkcs7 = NULL; /* Test PKCS7_TEXT, PKCS7_verify() should remove Content-Type: text/plain */ smimeTestFile = XFOPEN("./certs/test/smime-test-canon.p7s", "r"); - AssertIntEQ(wolfSSL_BIO_set_fp(bio, smimeTestFile, BIO_CLOSE), SSL_SUCCESS); + ExpectIntEQ(wolfSSL_BIO_set_fp(bio, smimeTestFile, BIO_CLOSE), SSL_SUCCESS); pkcs7 = wolfSSL_SMIME_read_PKCS7(bio, &bcont); - AssertNotNull(pkcs7); + ExpectNotNull(pkcs7); out = wolfSSL_BIO_new(BIO_s_mem()); - AssertNotNull(out); - AssertIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, bcont, out, - PKCS7_NOVERIFY | PKCS7_TEXT), SSL_SUCCESS); - AssertIntGT((outBufLen = BIO_get_mem_data(out, &outBuf)), 0); + ExpectNotNull(out); + ExpectIntEQ(wolfSSL_PKCS7_verify(pkcs7, NULL, NULL, bcont, out, + PKCS7_NOVERIFY | PKCS7_TEXT), SSL_SUCCESS); + ExpectIntGT((outBufLen = BIO_get_mem_data(out, &outBuf)), 0); /* Content-Type should not show up at beginning of output buffer */ - AssertIntGT(outBufLen, XSTRLEN(contTypeText)); - AssertIntGT(XMEMCMP(outBuf, contTypeText, XSTRLEN(contTypeText)), 0); + ExpectIntGT(outBufLen, XSTRLEN(contTypeText)); + ExpectIntGT(XMEMCMP(outBuf, contTypeText, XSTRLEN(contTypeText)), 0); BIO_free(out); BIO_free(bio); if (bcont) BIO_free(bcont); wolfSSL_PKCS7_free(pkcs7); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_SMIME_write_PKCS7(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) && !defined(NO_RSA) PKCS7* p7 = NULL; PKCS7* p7Ver = NULL; @@ -53466,101 +47269,121 @@ static int test_wolfSSL_SMIME_write_PKCS7(void) X509_STORE* store = NULL; /* read signer cert/key into BIO */ - AssertNotNull(certBio = BIO_new_file(cert, "r")); - AssertNotNull(keyBio = BIO_new_file(key, "r")); - AssertNotNull(signCert = PEM_read_bio_X509(certBio, NULL, 0, NULL)); - AssertNotNull(signKey = PEM_read_bio_PrivateKey(keyBio, NULL, 0, NULL)); + ExpectNotNull(certBio = BIO_new_file(cert, "r")); + ExpectNotNull(keyBio = BIO_new_file(key, "r")); + ExpectNotNull(signCert = PEM_read_bio_X509(certBio, NULL, 0, NULL)); + ExpectNotNull(signKey = PEM_read_bio_PrivateKey(keyBio, NULL, 0, NULL)); /* read CA cert into store (for verify) */ - AssertNotNull(caBio = BIO_new_file(ca, "r")); - AssertNotNull(caCert = PEM_read_bio_X509(caBio, NULL, 0, NULL)); - AssertNotNull(store = X509_STORE_new()); - AssertIntEQ(X509_STORE_add_cert(store, caCert), 1); + ExpectNotNull(caBio = BIO_new_file(ca, "r")); + ExpectNotNull(caCert = PEM_read_bio_X509(caBio, NULL, 0, NULL)); + ExpectNotNull(store = X509_STORE_new()); + ExpectIntEQ(X509_STORE_add_cert(store, caCert), 1); /* generate and verify SMIME: not detached */ { - AssertNotNull(inBio = BIO_new(BIO_s_mem())); - AssertIntGT(BIO_write(inBio, data, sizeof(data)), 0); + ExpectNotNull(inBio = BIO_new(BIO_s_mem())); + ExpectIntGT(BIO_write(inBio, data, sizeof(data)), 0); flags = PKCS7_STREAM; - AssertNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); - AssertNotNull(outBio = BIO_new(BIO_s_mem())); - AssertIntEQ(SMIME_write_PKCS7(outBio, p7, inBio, flags), 1); + ExpectNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); + ExpectNotNull(outBio = BIO_new(BIO_s_mem())); + ExpectIntEQ(SMIME_write_PKCS7(outBio, p7, inBio, flags), 1); /* bad arg: out NULL */ - AssertIntEQ(SMIME_write_PKCS7(NULL, p7, inBio, flags), 0); + ExpectIntEQ(SMIME_write_PKCS7(NULL, p7, inBio, flags), 0); /* bad arg: pkcs7 NULL */ - AssertIntEQ(SMIME_write_PKCS7(outBio, NULL, inBio, flags), 0); + ExpectIntEQ(SMIME_write_PKCS7(outBio, NULL, inBio, flags), 0); - AssertNotNull(p7Ver = SMIME_read_PKCS7(outBio, &content)); - AssertIntEQ(PKCS7_verify(p7Ver, NULL, store, NULL, NULL, flags), 1); + ExpectNotNull(p7Ver = SMIME_read_PKCS7(outBio, &content)); + ExpectIntEQ(PKCS7_verify(p7Ver, NULL, store, NULL, NULL, flags), 1); BIO_free(content); + content = NULL; BIO_free(inBio); + inBio = NULL; BIO_free(outBio); + outBio = NULL; PKCS7_free(p7Ver); + p7Ver = NULL; PKCS7_free(p7); + p7 = NULL; } /* generate and verify SMIME: not detached, add Content-Type */ { - AssertNotNull(inBio = BIO_new(BIO_s_mem())); - AssertIntGT(BIO_write(inBio, data, sizeof(data)), 0); + ExpectNotNull(inBio = BIO_new(BIO_s_mem())); + ExpectIntGT(BIO_write(inBio, data, sizeof(data)), 0); flags = PKCS7_STREAM | PKCS7_TEXT; - AssertNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); - AssertNotNull(outBio = BIO_new(BIO_s_mem())); - AssertIntEQ(SMIME_write_PKCS7(outBio, p7, inBio, flags), 1); + ExpectNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); + ExpectNotNull(outBio = BIO_new(BIO_s_mem())); + ExpectIntEQ(SMIME_write_PKCS7(outBio, p7, inBio, flags), 1); - AssertNotNull(p7Ver = SMIME_read_PKCS7(outBio, &content)); - AssertIntEQ(PKCS7_verify(p7Ver, NULL, store, NULL, NULL, flags), 1); + ExpectNotNull(p7Ver = SMIME_read_PKCS7(outBio, &content)); + ExpectIntEQ(PKCS7_verify(p7Ver, NULL, store, NULL, NULL, flags), 1); BIO_free(content); + content = NULL; BIO_free(inBio); + inBio = NULL; BIO_free(outBio); + outBio = NULL; PKCS7_free(p7Ver); + p7Ver = NULL; PKCS7_free(p7); + p7 = NULL; } /* generate and verify SMIME: detached */ { - AssertNotNull(inBio = BIO_new(BIO_s_mem())); - AssertIntGT(BIO_write(inBio, data, sizeof(data)), 0); + ExpectNotNull(inBio = BIO_new(BIO_s_mem())); + ExpectIntGT(BIO_write(inBio, data, sizeof(data)), 0); flags = PKCS7_DETACHED | PKCS7_STREAM; - AssertNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); - AssertNotNull(outBio = BIO_new(BIO_s_mem())); - AssertIntEQ(SMIME_write_PKCS7(outBio, p7, inBio, flags), 1); + ExpectNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); + ExpectNotNull(outBio = BIO_new(BIO_s_mem())); + ExpectIntEQ(SMIME_write_PKCS7(outBio, p7, inBio, flags), 1); - AssertNotNull(p7Ver = SMIME_read_PKCS7(outBio, &content)); - AssertIntEQ(PKCS7_verify(p7Ver, NULL, store, content, NULL, flags), 1); + ExpectNotNull(p7Ver = SMIME_read_PKCS7(outBio, &content)); + ExpectIntEQ(PKCS7_verify(p7Ver, NULL, store, content, NULL, flags), 1); BIO_free(content); + content = NULL; BIO_free(inBio); + inBio = NULL; BIO_free(outBio); + outBio = NULL; PKCS7_free(p7Ver); + p7Ver = NULL; PKCS7_free(p7); + p7 = NULL; } /* generate and verify SMIME: PKCS7_TEXT to add Content-Type header */ { - AssertNotNull(inBio = BIO_new(BIO_s_mem())); - AssertIntGT(BIO_write(inBio, data, sizeof(data)), 0); + ExpectNotNull(inBio = BIO_new(BIO_s_mem())); + ExpectIntGT(BIO_write(inBio, data, sizeof(data)), 0); flags = PKCS7_STREAM | PKCS7_DETACHED | PKCS7_TEXT; - AssertNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); - AssertNotNull(outBio = BIO_new(BIO_s_mem())); - AssertIntEQ(SMIME_write_PKCS7(outBio, p7, inBio, flags), 1); + ExpectNotNull(p7 = PKCS7_sign(signCert, signKey, NULL, inBio, flags)); + ExpectNotNull(outBio = BIO_new(BIO_s_mem())); + ExpectIntEQ(SMIME_write_PKCS7(outBio, p7, inBio, flags), 1); - AssertNotNull(p7Ver = SMIME_read_PKCS7(outBio, &content)); - AssertIntEQ(PKCS7_verify(p7Ver, NULL, store, content, NULL, flags), 1); + ExpectNotNull(p7Ver = SMIME_read_PKCS7(outBio, &content)); + ExpectIntEQ(PKCS7_verify(p7Ver, NULL, store, content, NULL, flags), 1); BIO_free(content); + content = NULL; BIO_free(inBio); + inBio = NULL; BIO_free(outBio); + outBio = NULL; PKCS7_free(p7Ver); + p7Ver = NULL; PKCS7_free(p7); + p7 = NULL; } X509_STORE_free(store); @@ -53570,10 +47393,8 @@ static int test_wolfSSL_SMIME_write_PKCS7(void) BIO_free(keyBio); BIO_free(certBio); BIO_free(caBio); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } #endif /* HAVE_SMIME */ #endif /* !NO_BIO */ @@ -53582,183 +47403,188 @@ static int test_wolfSSL_SMIME_write_PKCS7(void) * returns 0) */ static int test_X509_STORE_No_SSL_CTX(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_FILESYSTEM) && \ !defined(NO_WOLFSSL_DIR) && defined(HAVE_CRL) && \ (defined(WOLFSSL_CERT_REQ) || defined(WOLFSSL_CERT_EXT)) && \ (defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)) && \ !defined(NO_RSA) - X509_STORE * store; - X509_STORE_CTX * storeCtx; - X509_CRL * crl; - X509 * ca; - X509 * cert; + X509_STORE * store = NULL; + X509_STORE_CTX * storeCtx = NULL; + X509_CRL * crl = NULL; + X509 * ca = NULL; + X509 * cert = NULL; const char cliCrlPem[] = "./certs/crl/cliCrl.pem"; const char srvCert[] = "./certs/server-cert.pem"; const char caCert[] = "./certs/ca-cert.pem"; const char caDir[] = "./certs/crl/hash_pem"; - XFILE fp; - X509_LOOKUP * lookup; + XFILE fp = XBADFILE; + X509_LOOKUP * lookup = NULL; - AssertNotNull(store = (X509_STORE *)X509_STORE_new()); + ExpectNotNull(store = (X509_STORE *)X509_STORE_new()); /* Set up store with CA */ - AssertNotNull((ca = wolfSSL_X509_load_certificate_file(caCert, - SSL_FILETYPE_PEM))); - AssertIntEQ(X509_STORE_add_cert(store, ca), SSL_SUCCESS); + ExpectNotNull((ca = wolfSSL_X509_load_certificate_file(caCert, + SSL_FILETYPE_PEM))); + ExpectIntEQ(X509_STORE_add_cert(store, ca), SSL_SUCCESS); /* Add CRL lookup directory to store * NOTE: test uses ./certs/crl/hash_pem/0fdb2da4.r0, which is a copy * of crl.pem */ - AssertNotNull((lookup = X509_STORE_add_lookup(store, - X509_LOOKUP_hash_dir()))); - AssertIntEQ(X509_LOOKUP_ctrl(lookup, X509_L_ADD_DIR, caDir, - X509_FILETYPE_PEM, NULL), SSL_SUCCESS); + ExpectNotNull((lookup = X509_STORE_add_lookup(store, + X509_LOOKUP_hash_dir()))); + ExpectIntEQ(X509_LOOKUP_ctrl(lookup, X509_L_ADD_DIR, caDir, + X509_FILETYPE_PEM, NULL), SSL_SUCCESS); - AssertIntEQ(X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK), - SSL_SUCCESS); + ExpectIntEQ(X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK), + SSL_SUCCESS); /* Add CRL to store NOT containing the verified certificate, which * forces use of the CRL lookup directory */ - fp = XFOPEN(cliCrlPem, "rb"); - AssertTrue((fp != XBADFILE)); - AssertNotNull(crl = (X509_CRL *)PEM_read_X509_CRL(fp, (X509_CRL **)NULL, - NULL, NULL)); - XFCLOSE(fp); - AssertIntEQ(X509_STORE_add_crl(store, crl), SSL_SUCCESS); + ExpectTrue((fp = XFOPEN(cliCrlPem, "rb")) != XBADFILE); + ExpectNotNull(crl = (X509_CRL *)PEM_read_X509_CRL(fp, (X509_CRL **)NULL, + NULL, NULL)); + if (fp != XBADFILE) + XFCLOSE(fp); + ExpectIntEQ(X509_STORE_add_crl(store, crl), SSL_SUCCESS); /* Create verification context outside of an SSL session */ - AssertNotNull((storeCtx = X509_STORE_CTX_new())); - AssertNotNull((cert = wolfSSL_X509_load_certificate_file(srvCert, - SSL_FILETYPE_PEM))); - AssertIntEQ(X509_STORE_CTX_init(storeCtx, store, cert, NULL), SSL_SUCCESS); + ExpectNotNull((storeCtx = X509_STORE_CTX_new())); + ExpectNotNull((cert = wolfSSL_X509_load_certificate_file(srvCert, + SSL_FILETYPE_PEM))); + ExpectIntEQ(X509_STORE_CTX_init(storeCtx, store, cert, NULL), SSL_SUCCESS); /* Perform verification, which should NOT indicate CRL missing due to the * store CM's X509 store pointer being NULL */ - AssertIntNE(X509_verify_cert(storeCtx), CRL_MISSING); + ExpectIntNE(X509_verify_cert(storeCtx), CRL_MISSING); X509_CRL_free(crl); X509_STORE_free(store); X509_STORE_CTX_free(storeCtx); X509_free(cert); X509_free(ca); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } /* Test of X509 store use outside of SSL context w/ CRL lookup, but * with X509_LOOKUP_add_dir and X509_FILETYPE_ASN1. */ static int test_X509_LOOKUP_add_dir(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_FILESYSTEM) && \ !defined(NO_WOLFSSL_DIR) && defined(HAVE_CRL) && \ (defined(WOLFSSL_CERT_REQ) || defined(WOLFSSL_CERT_EXT)) && \ (defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)) && \ !defined(NO_RSA) - X509_STORE * store; - X509_STORE_CTX * storeCtx; - X509_CRL * crl; - X509 * ca; - X509 * cert; + X509_STORE * store = NULL; + X509_STORE_CTX * storeCtx = NULL; + X509_CRL * crl = NULL; + X509 * ca = NULL; + X509 * cert = NULL; const char cliCrlPem[] = "./certs/crl/cliCrl.pem"; const char srvCert[] = "./certs/server-cert.pem"; const char caCert[] = "./certs/ca-cert.pem"; const char caDir[] = "./certs/crl/hash_der"; - XFILE fp; - X509_LOOKUP * lookup; + XFILE fp = XBADFILE; + X509_LOOKUP * lookup = NULL; - AssertNotNull(store = (X509_STORE *)X509_STORE_new()); + ExpectNotNull(store = (X509_STORE *)X509_STORE_new()); /* Set up store with CA */ - AssertNotNull((ca = wolfSSL_X509_load_certificate_file(caCert, - SSL_FILETYPE_PEM))); - AssertIntEQ(X509_STORE_add_cert(store, ca), SSL_SUCCESS); + ExpectNotNull((ca = wolfSSL_X509_load_certificate_file(caCert, + SSL_FILETYPE_PEM))); + ExpectIntEQ(X509_STORE_add_cert(store, ca), SSL_SUCCESS); /* Add CRL lookup directory to store. * Test uses ./certs/crl/hash_der/0fdb2da4.r0, which is a copy * of crl.der */ - AssertNotNull((lookup = X509_STORE_add_lookup(store, - X509_LOOKUP_hash_dir()))); + ExpectNotNull((lookup = X509_STORE_add_lookup(store, + X509_LOOKUP_hash_dir()))); - AssertIntEQ(X509_LOOKUP_add_dir(lookup, caDir, X509_FILETYPE_ASN1), - SSL_SUCCESS); + ExpectIntEQ(X509_LOOKUP_add_dir(lookup, caDir, X509_FILETYPE_ASN1), + SSL_SUCCESS); - AssertIntEQ(X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK), - SSL_SUCCESS); + ExpectIntEQ(X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK), + SSL_SUCCESS); /* Add CRL to store NOT containing the verified certificate, which * forces use of the CRL lookup directory */ - fp = XFOPEN(cliCrlPem, "rb"); - AssertTrue((fp != XBADFILE)); - AssertNotNull(crl = (X509_CRL *)PEM_read_X509_CRL(fp, (X509_CRL **)NULL, - NULL, NULL)); - XFCLOSE(fp); - AssertIntEQ(X509_STORE_add_crl(store, crl), SSL_SUCCESS); + ExpectTrue((fp = XFOPEN(cliCrlPem, "rb")) != XBADFILE); + ExpectNotNull(crl = (X509_CRL *)PEM_read_X509_CRL(fp, (X509_CRL **)NULL, + NULL, NULL)); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntEQ(X509_STORE_add_crl(store, crl), SSL_SUCCESS); /* Create verification context outside of an SSL session */ - AssertNotNull((storeCtx = X509_STORE_CTX_new())); - AssertNotNull((cert = wolfSSL_X509_load_certificate_file(srvCert, - SSL_FILETYPE_PEM))); - AssertIntEQ(X509_STORE_CTX_init(storeCtx, store, cert, NULL), SSL_SUCCESS); + ExpectNotNull((storeCtx = X509_STORE_CTX_new())); + ExpectNotNull((cert = wolfSSL_X509_load_certificate_file(srvCert, + SSL_FILETYPE_PEM))); + ExpectIntEQ(X509_STORE_CTX_init(storeCtx, store, cert, NULL), SSL_SUCCESS); /* Perform verification, which should NOT return CRL missing */ - AssertIntNE(X509_verify_cert(storeCtx), CRL_MISSING); + ExpectIntNE(X509_verify_cert(storeCtx), CRL_MISSING); X509_CRL_free(crl); + crl = NULL; X509_STORE_free(store); + store = NULL; X509_STORE_CTX_free(storeCtx); + storeCtx = NULL; X509_free(cert); + cert = NULL; X509_free(ca); + ca = NULL; /* Now repeat the same, but look for X509_FILETYPE_PEM. * We should get CRL_MISSING at the end, because the lookup * dir has only ASN1 CRLs. */ - AssertNotNull(store = (X509_STORE *)X509_STORE_new()); + ExpectNotNull(store = (X509_STORE *)X509_STORE_new()); - AssertNotNull((ca = wolfSSL_X509_load_certificate_file(caCert, - SSL_FILETYPE_PEM))); - AssertIntEQ(X509_STORE_add_cert(store, ca), SSL_SUCCESS); + ExpectNotNull((ca = wolfSSL_X509_load_certificate_file(caCert, + SSL_FILETYPE_PEM))); + ExpectIntEQ(X509_STORE_add_cert(store, ca), SSL_SUCCESS); - AssertNotNull((lookup = X509_STORE_add_lookup(store, - X509_LOOKUP_hash_dir()))); + ExpectNotNull((lookup = X509_STORE_add_lookup(store, + X509_LOOKUP_hash_dir()))); - AssertIntEQ(X509_LOOKUP_add_dir(lookup, caDir, X509_FILETYPE_PEM), - SSL_SUCCESS); + ExpectIntEQ(X509_LOOKUP_add_dir(lookup, caDir, X509_FILETYPE_PEM), + SSL_SUCCESS); - AssertIntEQ(X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK), - SSL_SUCCESS); + ExpectIntEQ(X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK), + SSL_SUCCESS); - fp = XFOPEN(cliCrlPem, "rb"); - AssertTrue((fp != XBADFILE)); - AssertNotNull(crl = (X509_CRL *)PEM_read_X509_CRL(fp, (X509_CRL **)NULL, - NULL, NULL)); - XFCLOSE(fp); - AssertIntEQ(X509_STORE_add_crl(store, crl), SSL_SUCCESS); + ExpectTrue((fp = XFOPEN(cliCrlPem, "rb")) != XBADFILE); + ExpectNotNull(crl = (X509_CRL *)PEM_read_X509_CRL(fp, (X509_CRL **)NULL, + NULL, NULL)); + if (fp != XBADFILE) { + XFCLOSE(fp); + fp = XBADFILE; + } + ExpectIntEQ(X509_STORE_add_crl(store, crl), SSL_SUCCESS); - AssertNotNull((storeCtx = X509_STORE_CTX_new())); - AssertNotNull((cert = wolfSSL_X509_load_certificate_file(srvCert, - SSL_FILETYPE_PEM))); - AssertIntEQ(X509_STORE_CTX_init(storeCtx, store, cert, NULL), SSL_SUCCESS); + ExpectNotNull((storeCtx = X509_STORE_CTX_new())); + ExpectNotNull((cert = wolfSSL_X509_load_certificate_file(srvCert, + SSL_FILETYPE_PEM))); + ExpectIntEQ(X509_STORE_CTX_init(storeCtx, store, cert, NULL), SSL_SUCCESS); /* Now we SHOULD get CRL_MISSING, because we looked for PEM * in dir containing only ASN1/DER. */ - AssertIntEQ(X509_verify_cert(storeCtx), CRL_MISSING); + ExpectIntEQ(X509_verify_cert(storeCtx), CRL_MISSING); X509_CRL_free(crl); X509_STORE_free(store); X509_STORE_CTX_free(storeCtx); X509_free(cert); X509_free(ca); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } @@ -53767,125 +47593,128 @@ static int test_X509_LOOKUP_add_dir(void) | Certificate Failure Checks *----------------------------------------------------------------------------*/ #if !defined(NO_CERTS) && (!defined(NO_WOLFSSL_CLIENT) || \ - !defined(WOLFSSL_NO_CLIENT_AUTH)) && !defined(NO_FILESYSTEM) - /* Use the Cert Manager(CM) API to generate the error ASN_SIG_CONFIRM_E */ - static int verify_sig_cm(const char* ca, byte* cert_buf, size_t cert_sz, - int type) - { - int ret; - WOLFSSL_CERT_MANAGER* cm = NULL; + !defined(WOLFSSL_NO_CLIENT_AUTH)) && !defined(NO_FILESYSTEM) +#if !defined(NO_RSA) || defined(HAVE_ECC) +/* Use the Cert Manager(CM) API to generate the error ASN_SIG_CONFIRM_E */ +static int verify_sig_cm(const char* ca, byte* cert_buf, size_t cert_sz, + int type) +{ + int ret; + WOLFSSL_CERT_MANAGER* cm = NULL; - switch (type) { - case TESTING_RSA: - #ifdef NO_RSA - fprintf(stderr, "RSA disabled, skipping test\n"); - return ASN_SIG_CONFIRM_E; - #else - break; - #endif - case TESTING_ECC: - #ifndef HAVE_ECC - fprintf(stderr, "ECC disabled, skipping test\n"); - return ASN_SIG_CONFIRM_E; - #else - break; - #endif - default: - fprintf(stderr, "Bad function argument\n"); - return BAD_FUNC_ARG; - } - cm = wolfSSL_CertManagerNew(); - if (cm == NULL) { - fprintf(stderr, "wolfSSL_CertManagerNew failed\n"); - return -1; - } - - #ifndef NO_FILESYSTEM - ret = wolfSSL_CertManagerLoadCA(cm, ca, 0); - if (ret != WOLFSSL_SUCCESS) { - fprintf(stderr, "wolfSSL_CertManagerLoadCA failed\n"); - wolfSSL_CertManagerFree(cm); - return ret; - } - #else - (void)ca; - #endif - - ret = wolfSSL_CertManagerVerifyBuffer(cm, cert_buf, cert_sz, WOLFSSL_FILETYPE_ASN1); - /* Let AssertIntEQ handle return code */ + switch (type) { + case TESTING_RSA: + #ifdef NO_RSA + fprintf(stderr, "RSA disabled, skipping test\n"); + return ASN_SIG_CONFIRM_E; + #else + break; + #endif + case TESTING_ECC: + #ifndef HAVE_ECC + fprintf(stderr, "ECC disabled, skipping test\n"); + return ASN_SIG_CONFIRM_E; + #else + break; + #endif + default: + fprintf(stderr, "Bad function argument\n"); + return BAD_FUNC_ARG; + } + cm = wolfSSL_CertManagerNew(); + if (cm == NULL) { + fprintf(stderr, "wolfSSL_CertManagerNew failed\n"); + return -1; + } +#ifndef NO_FILESYSTEM + ret = wolfSSL_CertManagerLoadCA(cm, ca, 0); + if (ret != WOLFSSL_SUCCESS) { + fprintf(stderr, "wolfSSL_CertManagerLoadCA failed\n"); wolfSSL_CertManagerFree(cm); - return ret; } - - #if !defined(NO_FILESYSTEM) - static int test_RsaSigFailure_cm(void) - { - int ret = 0; - const char* ca_cert = "./certs/ca-cert.pem"; - const char* server_cert = "./certs/server-cert.der"; - byte* cert_buf = NULL; - size_t cert_sz = 0; - - ret = load_file(server_cert, &cert_buf, &cert_sz); - if (ret == 0) { - /* corrupt DER - invert last byte, which is signature */ - cert_buf[cert_sz-1] = ~cert_buf[cert_sz-1]; - - /* test bad cert */ - ret = verify_sig_cm(ca_cert, cert_buf, cert_sz, TESTING_RSA); - } - - if (cert_buf) - free(cert_buf); -#if defined(NO_WOLFSSL_CLIENT) && defined(NO_WOLFSSL_SERVER) - if (ret == WOLFSSL_FATAL_ERROR) { - ret = 0; - } #else - if (ret == ASN_SIG_CONFIRM_E) { - ret = 0; - } -#endif /* NO_WOLFSSL_CLIENT && NO_WOLFSSL_SERVER */ - return TEST_RES_CHECK(ret == 0); + (void)ca; +#endif + + ret = wolfSSL_CertManagerVerifyBuffer(cm, cert_buf, cert_sz, + WOLFSSL_FILETYPE_ASN1); + /* Let ExpectIntEQ handle return code */ + + wolfSSL_CertManagerFree(cm); + + return ret; +} +#endif + +#if !defined(NO_FILESYSTEM) +static int test_RsaSigFailure_cm(void) +{ + EXPECT_DECLS; +#ifndef NO_RSA + const char* ca_cert = "./certs/ca-cert.pem"; + const char* server_cert = "./certs/server-cert.der"; + byte* cert_buf = NULL; + size_t cert_sz = 0; + + ExpectIntEQ(load_file(server_cert, &cert_buf, &cert_sz), 0); + if (cert_buf != NULL) { + /* corrupt DER - invert last byte, which is signature */ + cert_buf[cert_sz-1] = ~cert_buf[cert_sz-1]; + /* test bad cert */ +#if defined(NO_WOLFSSL_CLIENT) && defined(NO_WOLFSSL_SERVER) + ExpectIntEQ(verify_sig_cm(ca_cert, cert_buf, cert_sz, TESTING_RSA), + WOLFSSL_FATAL_ERROR); +#else + ExpectIntEQ(verify_sig_cm(ca_cert, cert_buf, cert_sz, TESTING_RSA), + ASN_SIG_CONFIRM_E); +#endif } - static int test_EccSigFailure_cm(void) - { - int ret = 0; - /* self-signed ECC cert, so use server cert as CA */ - const char* ca_cert = "./certs/ca-ecc-cert.pem"; - const char* server_cert = "./certs/server-ecc.der"; - byte* cert_buf = NULL; - size_t cert_sz = 0; + /* load_file() uses malloc. */ + if (cert_buf != NULL) { + free(cert_buf); + } +#endif /* !NO_RSA */ + return EXPECT_RESULT(); +} - ret = load_file(server_cert, &cert_buf, &cert_sz); - if (ret == 0) { - /* corrupt DER - invert last byte, which is signature */ - cert_buf[cert_sz-1] = ~cert_buf[cert_sz-1]; +static int test_EccSigFailure_cm(void) +{ + EXPECT_DECLS; +#ifdef HAVE_ECC + /* self-signed ECC cert, so use server cert as CA */ + const char* ca_cert = "./certs/ca-ecc-cert.pem"; + const char* server_cert = "./certs/server-ecc.der"; + byte* cert_buf = NULL; + size_t cert_sz = 0; - /* test bad cert */ - ret = verify_sig_cm(ca_cert, cert_buf, cert_sz, TESTING_ECC); - } + ExpectIntEQ(load_file(server_cert, &cert_buf, &cert_sz), 0); + if (cert_buf != NULL) { + /* corrupt DER - invert last byte, which is signature */ + cert_buf[cert_sz-1] = ~cert_buf[cert_sz-1]; - if (cert_buf) - free(cert_buf); + /* test bad cert */ +#if defined(NO_WOLFSSL_CLIENT) && defined(NO_WOLFSSL_SERVER) + ExpectIntEQ(verify_sig_cm(ca_cert, cert_buf, cert_sz, TESTING_ECC), + WOLFSSL_FATAL_ERROR); +#else + ExpectIntEQ(verify_sig_cm(ca_cert, cert_buf, cert_sz, TESTING_ECC), + ASN_SIG_CONFIRM_E); +#endif + } + /* load_file() uses malloc. */ + if (cert_buf != NULL) { + free(cert_buf); + } #ifdef FP_ECC wc_ecc_fp_free(); #endif -#if defined(NO_WOLFSSL_CLIENT) && defined(NO_WOLFSSL_SERVER) - if (ret == WOLFSSL_FATAL_ERROR) { - ret = 0; - } -#else - if (ret == ASN_SIG_CONFIRM_E) { - ret = 0; - } -#endif /* NO_WOLFSSL_CLIENT && NO_WOLFSSL_SERVER */ - return TEST_RES_CHECK(ret == 0); - } +#endif /* HAVE_ECC */ + return EXPECT_RESULT(); +} #endif /* !NO_FILESYSTEM */ #endif /* NO_CERTS */ @@ -53905,24 +47734,25 @@ static char earlyDataBuffer[1]; static int test_tls13_apis(void) { - int ret = 0; + EXPECT_DECLS; + int ret; #ifndef WOLFSSL_NO_TLS12 #ifndef NO_WOLFSSL_CLIENT - WOLFSSL_CTX* clientTls12Ctx; - WOLFSSL* clientTls12Ssl; + WOLFSSL_CTX* clientTls12Ctx = NULL; + WOLFSSL* clientTls12Ssl = NULL; #endif #ifndef NO_WOLFSSL_SERVER - WOLFSSL_CTX* serverTls12Ctx; - WOLFSSL* serverTls12Ssl; + WOLFSSL_CTX* serverTls12Ctx = NULL; + WOLFSSL* serverTls12Ssl = NULL; #endif #endif #ifndef NO_WOLFSSL_CLIENT - WOLFSSL_CTX* clientCtx; - WOLFSSL* clientSsl; + WOLFSSL_CTX* clientCtx = NULL; + WOLFSSL* clientSsl = NULL; #endif #ifndef NO_WOLFSSL_SERVER - WOLFSSL_CTX* serverCtx; - WOLFSSL* serverSsl; + WOLFSSL_CTX* serverCtx = NULL; + WOLFSSL* serverSsl = NULL; #if !defined(NO_CERTS) && !defined(NO_FILESYSTEM) const char* ourCert = svrCertFile; const char* ourKey = svrKeyFile; @@ -53978,7 +47808,8 @@ static int test_tls13_apis(void) serverTls12Ctx = wolfSSL_CTX_new(wolfTLSv1_2_server_method()); #if !defined(NO_CERTS) && !defined(NO_FILESYSTEM) wolfSSL_CTX_use_certificate_chain_file(serverTls12Ctx, ourCert); - wolfSSL_CTX_use_PrivateKey_file(serverTls12Ctx, ourKey, WOLFSSL_FILETYPE_PEM); + wolfSSL_CTX_use_PrivateKey_file(serverTls12Ctx, ourKey, + WOLFSSL_FILETYPE_PEM); #endif serverTls12Ssl = wolfSSL_new(serverTls12Ctx); #endif @@ -53995,28 +47826,30 @@ static int test_tls13_apis(void) wolfSSL_CTX_use_PrivateKey_file(serverCtx, ourKey, WOLFSSL_FILETYPE_PEM); #endif serverSsl = wolfSSL_new(serverCtx); - AssertNotNull(serverSsl); + ExpectNotNull(serverSsl); #endif #ifdef WOLFSSL_SEND_HRR_COOKIE - AssertIntEQ(wolfSSL_send_hrr_cookie(NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_send_hrr_cookie(NULL, NULL, 0), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT - AssertIntEQ(wolfSSL_send_hrr_cookie(clientSsl, NULL, 0), SIDE_ERROR); + ExpectIntEQ(wolfSSL_send_hrr_cookie(clientSsl, NULL, 0), SIDE_ERROR); #endif #ifndef NO_WOLFSSL_SERVER #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_send_hrr_cookie(serverTls12Ssl, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_send_hrr_cookie(serverTls12Ssl, NULL, 0), + BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_send_hrr_cookie(serverSsl, NULL, 0), WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_send_hrr_cookie(serverSsl, fixedKey, sizeof(fixedKey)), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_send_hrr_cookie(serverSsl, NULL, 0), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_send_hrr_cookie(serverSsl, fixedKey, sizeof(fixedKey)), + WOLFSSL_SUCCESS); #endif #endif #ifdef HAVE_SUPPORTED_CURVES #ifdef HAVE_ECC - AssertIntEQ(wolfSSL_UseKeyShare(NULL, WOLFSSL_ECC_SECP256R1), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_UseKeyShare(NULL, WOLFSSL_ECC_SECP256R1), + BAD_FUNC_ARG); #ifndef NO_WOLFSSL_SERVER do { ret = wolfSSL_UseKeyShare(serverSsl, WOLFSSL_ECC_SECP256R1); @@ -54024,8 +47857,9 @@ static int test_tls13_apis(void) if (ret == WC_PENDING_E) wolfSSL_AsyncPoll(serverSsl, WOLF_POLL_FLAG_CHECK_HW); #endif - } while (ret == WC_PENDING_E); - AssertIntEQ(ret, WOLFSSL_SUCCESS); + } + while (ret == WC_PENDING_E); + ExpectIntEQ(ret, WOLFSSL_SUCCESS); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 @@ -54035,8 +47869,9 @@ static int test_tls13_apis(void) if (ret == WC_PENDING_E) wolfSSL_AsyncPoll(clientTls12Ssl, WOLF_POLL_FLAG_CHECK_HW); #endif - } while (ret == WC_PENDING_E); - AssertIntEQ(ret, WOLFSSL_SUCCESS); + } + while (ret == WC_PENDING_E); + ExpectIntEQ(ret, WOLFSSL_SUCCESS); #endif do { ret = wolfSSL_UseKeyShare(clientSsl, WOLFSSL_ECC_SECP256R1); @@ -54044,282 +47879,285 @@ static int test_tls13_apis(void) if (ret == WC_PENDING_E) wolfSSL_AsyncPoll(clientSsl, WOLF_POLL_FLAG_CHECK_HW); #endif - } while (ret == WC_PENDING_E); - AssertIntEQ(ret, WOLFSSL_SUCCESS); + } + while (ret == WC_PENDING_E); + ExpectIntEQ(ret, WOLFSSL_SUCCESS); #endif #elif defined(HAVE_CURVE25519) - AssertIntEQ(wolfSSL_UseKeyShare(NULL, WOLFSSL_ECC_X25519), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_UseKeyShare(NULL, WOLFSSL_ECC_X25519), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_UseKeyShare(serverSsl, WOLFSSL_ECC_X25519), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_UseKeyShare(serverSsl, WOLFSSL_ECC_X25519), + WOLFSSL_SUCCESS); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_UseKeyShare(clientTls12Ssl, WOLFSSL_ECC_X25519), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_UseKeyShare(clientTls12Ssl, WOLFSSL_ECC_X25519), + WOLFSSL_SUCCESS); #endif - AssertIntEQ(wolfSSL_UseKeyShare(clientSsl, WOLFSSL_ECC_X25519), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_UseKeyShare(clientSsl, WOLFSSL_ECC_X25519), + WOLFSSL_SUCCESS); #endif #elif defined(HAVE_CURVE448) - AssertIntEQ(wolfSSL_UseKeyShare(NULL, WOLFSSL_ECC_X448), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_UseKeyShare(NULL, WOLFSSL_ECC_X448), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_UseKeyShare(serverSsl, WOLFSSL_ECC_X448), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_UseKeyShare(serverSsl, WOLFSSL_ECC_X448), + WOLFSSL_SUCCESS); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_UseKeyShare(clientTls12Ssl, WOLFSSL_ECC_X448), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_UseKeyShare(clientTls12Ssl, WOLFSSL_ECC_X448), + WOLFSSL_SUCCESS); #endif - AssertIntEQ(wolfSSL_UseKeyShare(clientSsl, WOLFSSL_ECC_X448), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_UseKeyShare(clientSsl, WOLFSSL_ECC_X448), + WOLFSSL_SUCCESS); #endif #else - AssertIntEQ(wolfSSL_UseKeyShare(NULL, WOLFSSL_ECC_SECP256R1), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_UseKeyShare(NULL, WOLFSSL_ECC_SECP256R1), + BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_UseKeyShare(clientTls12Ssl, WOLFSSL_ECC_SECP256R1), - NOT_COMPILED_IN); + ExpectIntEQ(wolfSSL_UseKeyShare(clientTls12Ssl, WOLFSSL_ECC_SECP256R1), + NOT_COMPILED_IN); #endif - AssertIntEQ(wolfSSL_UseKeyShare(clientSsl, WOLFSSL_ECC_SECP256R1), - NOT_COMPILED_IN); + ExpectIntEQ(wolfSSL_UseKeyShare(clientSsl, WOLFSSL_ECC_SECP256R1), + NOT_COMPILED_IN); #endif #endif #if defined(HAVE_PQC) - AssertIntEQ(wolfSSL_UseKeyShare(NULL, WOLFSSL_KYBER_LEVEL3), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_UseKeyShare(NULL, WOLFSSL_KYBER_LEVEL3), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_UseKeyShare(serverSsl, WOLFSSL_KYBER_LEVEL3), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_UseKeyShare(serverSsl, WOLFSSL_KYBER_LEVEL3), + WOLFSSL_SUCCESS); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_UseKeyShare(clientTls12Ssl, WOLFSSL_KYBER_LEVEL3), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_UseKeyShare(clientTls12Ssl, WOLFSSL_KYBER_LEVEL3), + BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_UseKeyShare(clientSsl, WOLFSSL_KYBER_LEVEL3), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_UseKeyShare(clientSsl, WOLFSSL_KYBER_LEVEL3), + WOLFSSL_SUCCESS); #endif #endif - AssertIntEQ(wolfSSL_NoKeyShares(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_NoKeyShares(NULL), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_NoKeyShares(serverSsl), SIDE_ERROR); + ExpectIntEQ(wolfSSL_NoKeyShares(serverSsl), SIDE_ERROR); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_NoKeyShares(clientTls12Ssl), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_NoKeyShares(clientTls12Ssl), WOLFSSL_SUCCESS); #endif - AssertIntEQ(wolfSSL_NoKeyShares(clientSsl), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_NoKeyShares(clientSsl), WOLFSSL_SUCCESS); #endif #endif /* HAVE_SUPPORTED_CURVES */ - AssertIntEQ(wolfSSL_CTX_no_ticket_TLSv13(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_no_ticket_TLSv13(NULL), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT - AssertIntEQ(wolfSSL_CTX_no_ticket_TLSv13(clientCtx), SIDE_ERROR); + ExpectIntEQ(wolfSSL_CTX_no_ticket_TLSv13(clientCtx), SIDE_ERROR); #endif #ifndef NO_WOLFSSL_SERVER #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_CTX_no_ticket_TLSv13(serverTls12Ctx), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_no_ticket_TLSv13(serverTls12Ctx), BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_CTX_no_ticket_TLSv13(serverCtx), 0); + ExpectIntEQ(wolfSSL_CTX_no_ticket_TLSv13(serverCtx), 0); #endif - AssertIntEQ(wolfSSL_no_ticket_TLSv13(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_no_ticket_TLSv13(NULL), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT - AssertIntEQ(wolfSSL_no_ticket_TLSv13(clientSsl), SIDE_ERROR); + ExpectIntEQ(wolfSSL_no_ticket_TLSv13(clientSsl), SIDE_ERROR); #endif #ifndef NO_WOLFSSL_SERVER #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_no_ticket_TLSv13(serverTls12Ssl), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_no_ticket_TLSv13(serverTls12Ssl), BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_no_ticket_TLSv13(serverSsl), 0); + ExpectIntEQ(wolfSSL_no_ticket_TLSv13(serverSsl), 0); #endif - AssertIntEQ(wolfSSL_CTX_no_dhe_psk(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_no_dhe_psk(NULL), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_CTX_no_dhe_psk(clientTls12Ctx), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_no_dhe_psk(clientTls12Ctx), BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_CTX_no_dhe_psk(clientCtx), 0); + ExpectIntEQ(wolfSSL_CTX_no_dhe_psk(clientCtx), 0); #endif #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_CTX_no_dhe_psk(serverCtx), 0); + ExpectIntEQ(wolfSSL_CTX_no_dhe_psk(serverCtx), 0); #endif - AssertIntEQ(wolfSSL_no_dhe_psk(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_no_dhe_psk(NULL), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_no_dhe_psk(clientTls12Ssl), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_no_dhe_psk(clientTls12Ssl), BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_no_dhe_psk(clientSsl), 0); + ExpectIntEQ(wolfSSL_no_dhe_psk(clientSsl), 0); #endif #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_no_dhe_psk(serverSsl), 0); + ExpectIntEQ(wolfSSL_no_dhe_psk(serverSsl), 0); #endif - AssertIntEQ(wolfSSL_update_keys(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_update_keys(NULL), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_update_keys(clientTls12Ssl), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_update_keys(clientTls12Ssl), BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_update_keys(clientSsl), BUILD_MSG_ERROR); + ExpectIntEQ(wolfSSL_update_keys(clientSsl), BUILD_MSG_ERROR); #endif #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_update_keys(serverSsl), BUILD_MSG_ERROR); + ExpectIntEQ(wolfSSL_update_keys(serverSsl), BUILD_MSG_ERROR); #endif - AssertIntEQ(wolfSSL_key_update_response(NULL, NULL), BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_key_update_response(NULL, &required), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_key_update_response(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_key_update_response(NULL, &required), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_key_update_response(clientTls12Ssl, &required), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_key_update_response(clientTls12Ssl, &required), + BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_key_update_response(clientSsl, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_key_update_response(clientSsl, NULL), BAD_FUNC_ARG); #endif #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_key_update_response(serverSsl, NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_key_update_response(serverSsl, NULL), BAD_FUNC_ARG); #endif #if !defined(NO_CERTS) && defined(WOLFSSL_POST_HANDSHAKE_AUTH) - AssertIntEQ(wolfSSL_CTX_allow_post_handshake_auth(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_allow_post_handshake_auth(NULL), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_CTX_allow_post_handshake_auth(serverCtx), SIDE_ERROR); + ExpectIntEQ(wolfSSL_CTX_allow_post_handshake_auth(serverCtx), SIDE_ERROR); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_CTX_allow_post_handshake_auth(clientTls12Ctx), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_allow_post_handshake_auth(clientTls12Ctx), + BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_CTX_allow_post_handshake_auth(clientCtx), 0); + ExpectIntEQ(wolfSSL_CTX_allow_post_handshake_auth(clientCtx), 0); #endif - AssertIntEQ(wolfSSL_allow_post_handshake_auth(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_allow_post_handshake_auth(NULL), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_allow_post_handshake_auth(serverSsl), SIDE_ERROR); + ExpectIntEQ(wolfSSL_allow_post_handshake_auth(serverSsl), SIDE_ERROR); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_allow_post_handshake_auth(clientTls12Ssl), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_allow_post_handshake_auth(clientTls12Ssl), + BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_allow_post_handshake_auth(clientSsl), 0); + ExpectIntEQ(wolfSSL_allow_post_handshake_auth(clientSsl), 0); #endif - AssertIntEQ(wolfSSL_request_certificate(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_request_certificate(NULL), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT - AssertIntEQ(wolfSSL_request_certificate(clientSsl), SIDE_ERROR); + ExpectIntEQ(wolfSSL_request_certificate(clientSsl), SIDE_ERROR); #endif #ifndef NO_WOLFSSL_SERVER #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_request_certificate(serverTls12Ssl), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_request_certificate(serverTls12Ssl), + BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_request_certificate(serverSsl), NOT_READY_ERROR); + ExpectIntEQ(wolfSSL_request_certificate(serverSsl), NOT_READY_ERROR); #endif #endif #ifdef HAVE_ECC #ifndef WOLFSSL_NO_SERVER_GROUPS_EXT - AssertIntEQ(wolfSSL_preferred_group(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_preferred_group(NULL), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_preferred_group(serverSsl), SIDE_ERROR); + ExpectIntEQ(wolfSSL_preferred_group(serverSsl), SIDE_ERROR); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_preferred_group(clientTls12Ssl), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_preferred_group(clientTls12Ssl), BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_preferred_group(clientSsl), NOT_READY_ERROR); + ExpectIntEQ(wolfSSL_preferred_group(clientSsl), NOT_READY_ERROR); #endif #endif #ifdef HAVE_SUPPORTED_CURVES - AssertIntEQ(wolfSSL_CTX_set_groups(NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_groups(NULL, NULL, 0), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT - AssertIntEQ(wolfSSL_CTX_set_groups(clientCtx, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_groups(clientCtx, NULL, 0), BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_CTX_set_groups(NULL, groups, numGroups), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_groups(NULL, groups, numGroups), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_CTX_set_groups(clientTls12Ctx, groups, numGroups), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_groups(clientTls12Ctx, groups, numGroups), + BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_CTX_set_groups(clientCtx, groups, - WOLFSSL_MAX_GROUP_COUNT + 1), - BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_CTX_set_groups(clientCtx, groups, numGroups), - WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_CTX_set_groups(clientCtx, bad_groups, numGroups), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_groups(clientCtx, groups, + WOLFSSL_MAX_GROUP_COUNT + 1), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_groups(clientCtx, groups, numGroups), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_set_groups(clientCtx, bad_groups, numGroups), + BAD_FUNC_ARG); #endif #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_CTX_set_groups(serverCtx, groups, numGroups), - WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_CTX_set_groups(serverCtx, bad_groups, numGroups), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_groups(serverCtx, groups, numGroups), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_set_groups(serverCtx, bad_groups, numGroups), + BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_set_groups(NULL, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_set_groups(NULL, NULL, 0), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT - AssertIntEQ(wolfSSL_set_groups(clientSsl, NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_set_groups(clientSsl, NULL, 0), BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_set_groups(NULL, groups, numGroups), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_set_groups(NULL, groups, numGroups), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_set_groups(clientTls12Ssl, groups, numGroups), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_set_groups(clientTls12Ssl, groups, numGroups), + BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_set_groups(clientSsl, groups, - WOLFSSL_MAX_GROUP_COUNT + 1), BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_set_groups(clientSsl, groups, numGroups), - WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_set_groups(clientSsl, bad_groups, numGroups), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_set_groups(clientSsl, groups, + WOLFSSL_MAX_GROUP_COUNT + 1), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_set_groups(clientSsl, groups, numGroups), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_set_groups(clientSsl, bad_groups, numGroups), + BAD_FUNC_ARG); #endif #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_set_groups(serverSsl, groups, numGroups), - WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_set_groups(serverSsl, bad_groups, numGroups), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_set_groups(serverSsl, groups, numGroups), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_set_groups(serverSsl, bad_groups, numGroups), + BAD_FUNC_ARG); #endif #ifdef OPENSSL_EXTRA - AssertIntEQ(wolfSSL_CTX_set1_groups_list(NULL, NULL), WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_CTX_set1_groups_list(NULL, NULL), WOLFSSL_FAILURE); #ifndef NO_WOLFSSL_CLIENT - AssertIntEQ(wolfSSL_CTX_set1_groups_list(clientCtx, NULL), WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_CTX_set1_groups_list(clientCtx, NULL), + WOLFSSL_FAILURE); #endif - AssertIntEQ(wolfSSL_CTX_set1_groups_list(NULL, groupList), WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_CTX_set1_groups_list(NULL, groupList), + WOLFSSL_FAILURE); #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_CTX_set1_groups_list(clientTls12Ctx, groupList), - WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_CTX_set1_groups_list(clientTls12Ctx, groupList), + WOLFSSL_FAILURE); #endif - AssertIntEQ(wolfSSL_CTX_set1_groups_list(clientCtx, groupList), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_set1_groups_list(clientCtx, groupList), + WOLFSSL_SUCCESS); #endif #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_CTX_set1_groups_list(serverCtx, groupList), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_set1_groups_list(serverCtx, groupList), + WOLFSSL_SUCCESS); #endif - AssertIntEQ(wolfSSL_set1_groups_list(NULL, NULL), WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_set1_groups_list(NULL, NULL), WOLFSSL_FAILURE); #ifndef NO_WOLFSSL_CLIENT - AssertIntEQ(wolfSSL_set1_groups_list(clientSsl, NULL), WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_set1_groups_list(clientSsl, NULL), WOLFSSL_FAILURE); #endif - AssertIntEQ(wolfSSL_set1_groups_list(NULL, groupList), WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_set1_groups_list(NULL, groupList), WOLFSSL_FAILURE); #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_set1_groups_list(clientTls12Ssl, groupList), - WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_set1_groups_list(clientTls12Ssl, groupList), + WOLFSSL_FAILURE); #endif - AssertIntEQ(wolfSSL_set1_groups_list(clientSsl, groupList), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_set1_groups_list(clientSsl, groupList), + WOLFSSL_SUCCESS); #endif #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_set1_groups_list(serverSsl, groupList), - WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_set1_groups_list(serverSsl, groupList), + WOLFSSL_SUCCESS); #endif #endif /* OPENSSL_EXTRA */ #endif /* HAVE_SUPPORTED_CURVES */ @@ -54327,149 +48165,140 @@ static int test_tls13_apis(void) #ifdef WOLFSSL_EARLY_DATA #ifndef OPENSSL_EXTRA - AssertIntEQ(wolfSSL_CTX_set_max_early_data(NULL, 0), BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_CTX_get_max_early_data(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_max_early_data(NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_get_max_early_data(NULL), BAD_FUNC_ARG); #else - AssertIntEQ(SSL_CTX_set_max_early_data(NULL, 0), BAD_FUNC_ARG); - AssertIntEQ(SSL_CTX_get_max_early_data(NULL), BAD_FUNC_ARG); + ExpectIntEQ(SSL_CTX_set_max_early_data(NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(SSL_CTX_get_max_early_data(NULL), BAD_FUNC_ARG); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef OPENSSL_EXTRA - AssertIntEQ(wolfSSL_CTX_set_max_early_data(clientCtx, 0), SIDE_ERROR); - AssertIntEQ(wolfSSL_CTX_get_max_early_data(clientCtx), SIDE_ERROR); + ExpectIntEQ(wolfSSL_CTX_set_max_early_data(clientCtx, 0), SIDE_ERROR); + ExpectIntEQ(wolfSSL_CTX_get_max_early_data(clientCtx), SIDE_ERROR); #else - AssertIntEQ(SSL_CTX_set_max_early_data(clientCtx, 0), SIDE_ERROR); - AssertIntEQ(SSL_CTX_get_max_early_data(clientCtx), SIDE_ERROR); + ExpectIntEQ(SSL_CTX_set_max_early_data(clientCtx, 0), SIDE_ERROR); + ExpectIntEQ(SSL_CTX_get_max_early_data(clientCtx), SIDE_ERROR); #endif #endif #ifndef NO_WOLFSSL_SERVER #ifndef WOLFSSL_NO_TLS12 #ifndef OPENSSL_EXTRA - AssertIntEQ(wolfSSL_CTX_set_max_early_data(serverTls12Ctx, 0), - BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_CTX_get_max_early_data(serverTls12Ctx), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_max_early_data(serverTls12Ctx, 0), + BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_get_max_early_data(serverTls12Ctx), BAD_FUNC_ARG); #else - AssertIntEQ(SSL_CTX_set_max_early_data(serverTls12Ctx, 0), - BAD_FUNC_ARG); - AssertIntEQ(SSL_CTX_get_max_early_data(serverTls12Ctx), BAD_FUNC_ARG); + ExpectIntEQ(SSL_CTX_set_max_early_data(serverTls12Ctx, 0), + BAD_FUNC_ARG); + ExpectIntEQ(SSL_CTX_get_max_early_data(serverTls12Ctx), BAD_FUNC_ARG); #endif #endif #ifndef OPENSSL_EXTRA #ifdef WOLFSSL_ERROR_CODE_OPENSSL - AssertIntEQ(wolfSSL_CTX_set_max_early_data(serverCtx, 32), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_set_max_early_data(serverCtx, 32), + WOLFSSL_SUCCESS); #else - AssertIntEQ(wolfSSL_CTX_set_max_early_data(serverCtx, 32), 0); + ExpectIntEQ(wolfSSL_CTX_set_max_early_data(serverCtx, 32), 0); #endif - AssertIntEQ(wolfSSL_CTX_get_max_early_data(serverCtx), 32); + ExpectIntEQ(wolfSSL_CTX_get_max_early_data(serverCtx), 32); #else - AssertIntEQ(SSL_CTX_set_max_early_data(serverCtx, 32), 1); - AssertIntEQ(SSL_CTX_get_max_early_data(serverCtx), 32); + ExpectIntEQ(SSL_CTX_set_max_early_data(serverCtx, 32), 1); + ExpectIntEQ(SSL_CTX_get_max_early_data(serverCtx), 32); #endif #endif #ifndef OPENSSL_EXTRA - AssertIntEQ(wolfSSL_set_max_early_data(NULL, 0), BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_get_max_early_data(NULL), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_set_max_early_data(NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_get_max_early_data(NULL), BAD_FUNC_ARG); #else - AssertIntEQ(SSL_set_max_early_data(NULL, 0), BAD_FUNC_ARG); - AssertIntEQ(SSL_get_max_early_data(NULL), BAD_FUNC_ARG); + ExpectIntEQ(SSL_set_max_early_data(NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(SSL_get_max_early_data(NULL), BAD_FUNC_ARG); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef OPENSSL_EXTRA #ifdef WOLFSSL_ERROR_CODE_OPENSSL - AssertIntEQ(wolfSSL_set_max_early_data(clientSsl, 17), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_set_max_early_data(clientSsl, 17), WOLFSSL_SUCCESS); #else - AssertIntEQ(wolfSSL_set_max_early_data(clientSsl, 17), 0); + ExpectIntEQ(wolfSSL_set_max_early_data(clientSsl, 17), 0); #endif - AssertIntEQ(wolfSSL_get_max_early_data(clientSsl), 17); + ExpectIntEQ(wolfSSL_get_max_early_data(clientSsl), 17); #else - AssertIntEQ(SSL_set_max_early_data(clientSsl, 17), WOLFSSL_SUCCESS); - AssertIntEQ(SSL_get_max_early_data(clientSsl), 17); + ExpectIntEQ(SSL_set_max_early_data(clientSsl, 17), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_get_max_early_data(clientSsl), 17); #endif #endif #ifndef NO_WOLFSSL_SERVER #ifndef WOLFSSL_NO_TLS12 #ifndef OPENSSL_EXTRA - AssertIntEQ(wolfSSL_set_max_early_data(serverTls12Ssl, 0), BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_get_max_early_data(serverTls12Ssl), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_set_max_early_data(serverTls12Ssl, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_get_max_early_data(serverTls12Ssl), BAD_FUNC_ARG); #else - AssertIntEQ(SSL_set_max_early_data(serverTls12Ssl, 0), BAD_FUNC_ARG); - AssertIntEQ(SSL_get_max_early_data(serverTls12Ssl), BAD_FUNC_ARG); + ExpectIntEQ(SSL_set_max_early_data(serverTls12Ssl, 0), BAD_FUNC_ARG); + ExpectIntEQ(SSL_get_max_early_data(serverTls12Ssl), BAD_FUNC_ARG); #endif #endif #ifndef OPENSSL_EXTRA #ifdef WOLFSSL_ERROR_CODE_OPENSSL - AssertIntEQ(wolfSSL_set_max_early_data(serverSsl, 16), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_set_max_early_data(serverSsl, 16), WOLFSSL_SUCCESS); #else - AssertIntEQ(wolfSSL_set_max_early_data(serverSsl, 16), 0); + ExpectIntEQ(wolfSSL_set_max_early_data(serverSsl, 16), 0); #endif - AssertIntEQ(wolfSSL_get_max_early_data(serverSsl), 16); + ExpectIntEQ(wolfSSL_get_max_early_data(serverSsl), 16); #else - AssertIntEQ(SSL_set_max_early_data(serverSsl, 16), 1); - AssertIntEQ(SSL_get_max_early_data(serverSsl), 16); + ExpectIntEQ(SSL_set_max_early_data(serverSsl, 16), 1); + ExpectIntEQ(SSL_get_max_early_data(serverSsl), 16); #endif #endif - AssertIntEQ(wolfSSL_write_early_data(NULL, earlyData, sizeof(earlyData), - &outSz), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_write_early_data(NULL, earlyData, sizeof(earlyData), + &outSz), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT - AssertIntEQ(wolfSSL_write_early_data(clientSsl, NULL, sizeof(earlyData), - &outSz), BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_write_early_data(clientSsl, earlyData, -1, &outSz), - BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_write_early_data(clientSsl, earlyData, - sizeof(earlyData), NULL), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_write_early_data(clientSsl, NULL, sizeof(earlyData), + &outSz), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_write_early_data(clientSsl, earlyData, -1, &outSz), + BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_write_early_data(clientSsl, earlyData, + sizeof(earlyData), NULL), BAD_FUNC_ARG); #endif #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_write_early_data(serverSsl, earlyData, - sizeof(earlyData), &outSz), - SIDE_ERROR); + ExpectIntEQ(wolfSSL_write_early_data(serverSsl, earlyData, + sizeof(earlyData), &outSz), SIDE_ERROR); #endif #ifndef NO_WOLFSSL_CLIENT #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_write_early_data(clientTls12Ssl, earlyData, - sizeof(earlyData), &outSz), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_write_early_data(clientTls12Ssl, earlyData, + sizeof(earlyData), &outSz), BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_write_early_data(clientSsl, earlyData, - sizeof(earlyData), &outSz), - WOLFSSL_FATAL_ERROR); + ExpectIntEQ(wolfSSL_write_early_data(clientSsl, earlyData, + sizeof(earlyData), &outSz), WOLFSSL_FATAL_ERROR); #endif - AssertIntEQ(wolfSSL_read_early_data(NULL, earlyDataBuffer, - sizeof(earlyDataBuffer), &outSz), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_read_early_data(NULL, earlyDataBuffer, + sizeof(earlyDataBuffer), &outSz), BAD_FUNC_ARG); #ifndef NO_WOLFSSL_SERVER - AssertIntEQ(wolfSSL_read_early_data(serverSsl, NULL, - sizeof(earlyDataBuffer), &outSz), - BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_read_early_data(serverSsl, earlyDataBuffer, -1, &outSz), - BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_read_early_data(serverSsl, earlyDataBuffer, - sizeof(earlyDataBuffer), NULL), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_read_early_data(serverSsl, NULL, + sizeof(earlyDataBuffer), &outSz), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_read_early_data(serverSsl, earlyDataBuffer, -1, + &outSz), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_read_early_data(serverSsl, earlyDataBuffer, + sizeof(earlyDataBuffer), NULL), BAD_FUNC_ARG); #endif #ifndef NO_WOLFSSL_CLIENT - AssertIntEQ(wolfSSL_read_early_data(clientSsl, earlyDataBuffer, - sizeof(earlyDataBuffer), &outSz), - SIDE_ERROR); + ExpectIntEQ(wolfSSL_read_early_data(clientSsl, earlyDataBuffer, + sizeof(earlyDataBuffer), &outSz), SIDE_ERROR); #endif #ifndef NO_WOLFSSL_SERVER #ifndef WOLFSSL_NO_TLS12 - AssertIntEQ(wolfSSL_read_early_data(serverTls12Ssl, earlyDataBuffer, - sizeof(earlyDataBuffer), &outSz), - BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_read_early_data(serverTls12Ssl, earlyDataBuffer, + sizeof(earlyDataBuffer), &outSz), BAD_FUNC_ARG); #endif - AssertIntEQ(wolfSSL_read_early_data(serverSsl, earlyDataBuffer, - sizeof(earlyDataBuffer), &outSz), - WOLFSSL_FATAL_ERROR); + ExpectIntEQ(wolfSSL_read_early_data(serverSsl, earlyDataBuffer, + sizeof(earlyDataBuffer), &outSz), WOLFSSL_FATAL_ERROR); #endif #endif #if defined(OPENSSL_EXTRA) && defined(WOLFSSL_EARLY_DATA) - AssertIntLT(SSL_get_early_data_status(NULL), 0); + ExpectIntLT(SSL_get_early_data_status(NULL), 0); #endif @@ -54493,7 +48322,7 @@ static int test_tls13_apis(void) #endif #endif - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #if defined(HAVE_SESSION_TICKET) && !defined(NO_WOLFSSL_SERVER) && \ @@ -54534,12 +48363,12 @@ static int CsRecv(WOLFSSL* ssl, char* buf, int sz, void* ctx) static int test_tls13_cipher_suites(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(HAVE_SESSION_TICKET) && !defined(NO_WOLFSSL_SERVER) && \ defined(HAVE_ECC) && defined(BUILD_TLS_AES_128_GCM_SHA256) && \ defined(BUILD_TLS_AES_256_GCM_SHA384) - WOLFSSL_CTX* ctx; - WOLFSSL *ssl; + WOLFSSL_CTX* ctx = NULL; + WOLFSSL *ssl = NULL; int i; byte clientHello[] = { 0x16, 0x03, 0x03, 0x01, 0x9b, 0x01, 0x00, 0x01, @@ -54617,10 +48446,10 @@ static int test_tls13_cipher_suites(void) #endif /* Set up wolfSSL context. */ - AssertNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_server_method())); - AssertTrue(wolfSSL_CTX_use_certificate_file(ctx, eccCertFile, + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_server_method())); + ExpectTrue(wolfSSL_CTX_use_certificate_file(ctx, eccCertFile, WOLFSSL_FILETYPE_PEM)); - AssertTrue(wolfSSL_CTX_use_PrivateKey_file(ctx, eccKeyFile, + ExpectTrue(wolfSSL_CTX_use_PrivateKey_file(ctx, eccKeyFile, WOLFSSL_FILETYPE_PEM)); /* Read from 'msg'. */ wolfSSL_SetIORecv(ctx, CsRecv); @@ -54628,13 +48457,13 @@ static int test_tls13_cipher_suites(void) wolfSSL_SetIOSend(ctx, CsSend); /* Test cipher suite list with many copies of a cipher suite. */ - AssertNotNull(ssl = wolfSSL_new(ctx)); + ExpectNotNull(ssl = wolfSSL_new(ctx)); msg.buffer = clientHello; msg.length = (unsigned int)sizeof(clientHello); wolfSSL_SetIOReadCtx(ssl, &msg); /* Force server to have as many occurrences of same cipher suite as * possible. */ - { + if (ssl != NULL) { Suites* suites = (Suites*)WOLFSSL_SUITES(ssl); suites->suiteSz = WOLFSSL_MAX_SUITE_SZ; for (i = 0; i < suites->suiteSz; i += 2) { @@ -54643,8 +48472,9 @@ static int test_tls13_cipher_suites(void) } } /* Test multiple occurrences of same cipher suite. */ - wolfSSL_accept_TLSv13(ssl); + ExpectIntEQ(wolfSSL_accept_TLSv13(ssl), WOLFSSL_FATAL_ERROR); wolfSSL_free(ssl); + ssl = NULL; /* Set client order opposite to server order: * TLS13-AES128-GCM-SHA256:TLS13-AES256-GCM-SHA384 */ @@ -54654,63 +48484,63 @@ static int test_tls13_cipher_suites(void) clientHello[csOff + 3] = TLS_AES_256_GCM_SHA384; /* Test server order negotiation. */ - AssertNotNull(ssl = wolfSSL_new(ctx)); + ExpectNotNull(ssl = wolfSSL_new(ctx)); msg.buffer = clientHello; msg.length = (unsigned int)sizeof(clientHello); wolfSSL_SetIOReadCtx(ssl, &msg); /* Server order: TLS13-AES256-GCM-SHA384:TLS13-AES128-GCM-SHA256 */ - AssertIntEQ(wolfSSL_set_cipher_list(ssl, serverCs), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_set_cipher_list(ssl, serverCs), WOLFSSL_SUCCESS); /* Negotiate cipher suites in server order: TLS13-AES256-GCM-SHA384 */ - wolfSSL_accept_TLSv13(ssl); + ExpectIntEQ(wolfSSL_accept_TLSv13(ssl), WOLFSSL_FATAL_ERROR); /* Check refined order - server order. */ - AssertIntEQ(ssl->suites->suiteSz, 4); - AssertIntEQ(ssl->suites->suites[0], TLS13_BYTE); - AssertIntEQ(ssl->suites->suites[1], TLS_AES_256_GCM_SHA384); - AssertIntEQ(ssl->suites->suites[2], TLS13_BYTE); - AssertIntEQ(ssl->suites->suites[3], TLS_AES_128_GCM_SHA256); + ExpectIntEQ(ssl->suites->suiteSz, 4); + ExpectIntEQ(ssl->suites->suites[0], TLS13_BYTE); + ExpectIntEQ(ssl->suites->suites[1], TLS_AES_256_GCM_SHA384); + ExpectIntEQ(ssl->suites->suites[2], TLS13_BYTE); + ExpectIntEQ(ssl->suites->suites[3], TLS_AES_128_GCM_SHA256); wolfSSL_free(ssl); + ssl = NULL; /* Test client order negotiation. */ - AssertNotNull(ssl = wolfSSL_new(ctx)); + ExpectNotNull(ssl = wolfSSL_new(ctx)); msg.buffer = clientHello; msg.length = (unsigned int)sizeof(clientHello); wolfSSL_SetIOReadCtx(ssl, &msg); /* Server order: TLS13-AES256-GCM-SHA384:TLS13-AES128-GCM-SHA256 */ - AssertIntEQ(wolfSSL_set_cipher_list(ssl, serverCs), WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_UseClientSuites(ssl), 0); + ExpectIntEQ(wolfSSL_set_cipher_list(ssl, serverCs), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_UseClientSuites(ssl), 0); /* Negotiate cipher suites in client order: TLS13-AES128-GCM-SHA256 */ - wolfSSL_accept_TLSv13(ssl); + ExpectIntEQ(wolfSSL_accept_TLSv13(ssl), WOLFSSL_FATAL_ERROR); /* Check refined order - client order. */ - AssertIntEQ(ssl->suites->suiteSz, 4); - AssertIntEQ(ssl->suites->suites[0], TLS13_BYTE); - AssertIntEQ(ssl->suites->suites[1], TLS_AES_128_GCM_SHA256); - AssertIntEQ(ssl->suites->suites[2], TLS13_BYTE); - AssertIntEQ(ssl->suites->suites[3], TLS_AES_256_GCM_SHA384); + ExpectIntEQ(ssl->suites->suiteSz, 4); + ExpectIntEQ(ssl->suites->suites[0], TLS13_BYTE); + ExpectIntEQ(ssl->suites->suites[1], TLS_AES_128_GCM_SHA256); + ExpectIntEQ(ssl->suites->suites[2], TLS13_BYTE); + ExpectIntEQ(ssl->suites->suites[3], TLS_AES_256_GCM_SHA384); wolfSSL_free(ssl); + ssl = NULL; /* Check duplicate detection is working. */ - AssertIntEQ(wolfSSL_CTX_set_cipher_list(ctx, dupCs), WOLFSSL_SUCCESS); - AssertIntEQ(ctx->suites->suiteSz, 4); - AssertIntEQ(ctx->suites->suites[0], TLS13_BYTE); - AssertIntEQ(ctx->suites->suites[1], TLS_AES_128_GCM_SHA256); - AssertIntEQ(ctx->suites->suites[2], TLS13_BYTE); - AssertIntEQ(ctx->suites->suites[3], TLS_AES_256_GCM_SHA384); + ExpectIntEQ(wolfSSL_CTX_set_cipher_list(ctx, dupCs), WOLFSSL_SUCCESS); + ExpectIntEQ(ctx->suites->suiteSz, 4); + ExpectIntEQ(ctx->suites->suites[0], TLS13_BYTE); + ExpectIntEQ(ctx->suites->suites[1], TLS_AES_128_GCM_SHA256); + ExpectIntEQ(ctx->suites->suites[2], TLS13_BYTE); + ExpectIntEQ(ctx->suites->suites[3], TLS_AES_256_GCM_SHA384); #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_SET_CIPHER_BYTES) - AssertIntEQ(wolfSSL_CTX_set_cipher_list_bytes(ctx, dupCsBytes, + ExpectIntEQ(wolfSSL_CTX_set_cipher_list_bytes(ctx, dupCsBytes, sizeof(dupCsBytes)), WOLFSSL_SUCCESS); - AssertIntEQ(ctx->suites->suiteSz, 4); - AssertIntEQ(ctx->suites->suites[0], TLS13_BYTE); - AssertIntEQ(ctx->suites->suites[1], TLS_AES_256_GCM_SHA384); - AssertIntEQ(ctx->suites->suites[2], TLS13_BYTE); - AssertIntEQ(ctx->suites->suites[3], TLS_AES_128_GCM_SHA256); + ExpectIntEQ(ctx->suites->suiteSz, 4); + ExpectIntEQ(ctx->suites->suites[0], TLS13_BYTE); + ExpectIntEQ(ctx->suites->suites[1], TLS_AES_256_GCM_SHA384); + ExpectIntEQ(ctx->suites->suites[2], TLS13_BYTE); + ExpectIntEQ(ctx->suites->suites[3], TLS_AES_128_GCM_SHA256); #endif wolfSSL_CTX_free(ctx); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } #endif @@ -54854,362 +48684,241 @@ static int test_DhCallbacks(void) #ifdef TEST_RESEED_INTERVAL static int test_wc_RNG_GenerateBlock_Reseed(void) { - int i, ret; + EXPECT_DECLS; + int i; WC_RNG rng; byte key[32]; - ret = wc_InitRng(&rng); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - for (i = 0; i < WC_RESEED_INTERVAL + 10; i++) { - ret = wc_RNG_GenerateBlock(&rng, key, sizeof(key)); - if (ret != 0) { - break; - } - } + ExpectIntEQ(wc_InitRng(&rng), 0); + for (i = 0; i < WC_RESEED_INTERVAL + 10; i++) { + ExpectIntEQ(wc_RNG_GenerateBlock(&rng, key, sizeof(key)), 0); } + DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_FreeRng(&rng); - - return TEST_RES_CHECK(ret == 0); + return EXPECT_RESULT(); } #endif /* TEST_RESEED_INTERVAL */ static int test_wc_RNG_GenerateBlock(void) { - int i, ret; + EXPECT_DECLS; + int i; WC_RNG rng; byte key[32]; - ret = wc_InitRng(&rng); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - for (i = 0; i < 10; i++) { - ret = wc_RNG_GenerateBlock(&rng, key, sizeof(key)); - if (ret != 0) { - break; - } - } + ExpectIntEQ(wc_InitRng(&rng), 0); + for (i = 0; i < 10; i++) { + ExpectIntEQ(wc_RNG_GenerateBlock(&rng, key, sizeof(key)), 0); } + DoExpectIntEQ(wc_FreeRng(&rng), 0); - wc_FreeRng(&rng); - - (void)rng; /* for WC_NO_RNG case */ - (void)key; - - return TEST_RES_CHECK(ret == 0); + return EXPECT_RESULT(); } -#endif + +#endif /* HAVE_HASHDRBG */ + /* * Testing get_rand_digit */ static int test_get_rand_digit(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(WC_NO_RNG) && defined(WOLFSSL_PUBLIC_MP) - int ret = 0; WC_RNG rng; mp_digit d; - ret = wc_InitRng(&rng); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = get_rand_digit(&rng, &d); - } - if (ret == 0) { - ret = get_rand_digit(NULL, NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = get_rand_digit(NULL, &d); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = get_rand_digit(&rng, NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } + ExpectIntEQ(wc_InitRng(&rng), 0); - if (ret == 0) { - ret = wc_FreeRng(&rng); - } + ExpectIntEQ(get_rand_digit(&rng, &d), 0); + ExpectIntEQ(get_rand_digit(NULL, NULL), BAD_FUNC_ARG); + ExpectIntEQ(get_rand_digit(NULL, &d), BAD_FUNC_ARG); + ExpectIntEQ(get_rand_digit(&rng, NULL), BAD_FUNC_ARG); - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; + return EXPECT_RESULT(); +} /* End test_get_rand_digit*/ -}/* End test_get_rand_digit*/ /* * Testing get_digit_count */ static int test_get_digit_count(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(WOLFSSL_SP_MATH) && defined(WOLFSSL_PUBLIC_MP) - int ret = 0; mp_int a; - if (mp_init(&a) != MP_OKAY) { - ret = -1; - } - if (ret == 0) { - ret = get_digit_count(NULL); - } - if (ret == 0) { - ret = get_digit_count(&a); - } + XMEMSET(&a, 0, sizeof(mp_int)); + + ExpectIntEQ(mp_init(&a), 0); + + ExpectIntEQ(get_digit_count(NULL), 0); + ExpectIntEQ(get_digit_count(&a), 0); mp_clear(&a); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); +} /* End test_get_digit_count*/ -}/* End test_get_digit_count*/ /* * Testing mp_cond_copy */ static int test_mp_cond_copy(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if (defined(HAVE_ECC) || defined(WOLFSSL_MP_COND_COPY)) && \ defined(WOLFSSL_PUBLIC_MP) - int ret = 0; - mp_int a; - mp_int b; - int copy = 0; + mp_int a; + mp_int b; + int copy = 0; - if (mp_init(&a) != MP_OKAY) { - ret = -1; - } - if (ret == 0) { - if (mp_init(&b) != MP_OKAY) { - ret = -1; - } - } - if (ret == 0) { - ret = mp_cond_copy(NULL, copy, NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = mp_cond_copy(NULL, copy, &b); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = mp_cond_copy(&a, copy, NULL); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = mp_cond_copy(&a, copy, &b); - } + XMEMSET(&a, 0, sizeof(mp_int)); + XMEMSET(&b, 0, sizeof(mp_int)); + + ExpectIntEQ(mp_init(&a), MP_OKAY); + ExpectIntEQ(mp_init(&b), MP_OKAY); + + ExpectIntEQ(mp_cond_copy(NULL, copy, NULL), BAD_FUNC_ARG); + ExpectIntEQ(mp_cond_copy(NULL, copy, &b), BAD_FUNC_ARG); + ExpectIntEQ(mp_cond_copy(&a, copy, NULL), BAD_FUNC_ARG); + ExpectIntEQ(mp_cond_copy(&a, copy, &b), 0); mp_clear(&a); mp_clear(&b); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); +} /* End test_mp_cond_copy*/ -}/* End test_mp_cond_copy*/ /* * Testing mp_rand */ static int test_mp_rand(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WC_RSA_BLINDING) && defined(WOLFSSL_PUBLIC_MP) - int ret = 0; - mp_int a; - int digits = 1; - WC_RNG rng; + mp_int a; + WC_RNG rng; + int digits = 1; - if (mp_init(&a) != MP_OKAY) { - ret = -1; - } - if (ret == 0) { - ret = wc_InitRng(&rng); - } + XMEMSET(&a, 0, sizeof(mp_int)); + XMEMSET(&rng, 0, sizeof(WC_RNG)); - if (ret == 0) { - ret = mp_rand(&a, digits, NULL); - if (ret == MISSING_RNG_E) { - ret = 0; - } - } - if (ret == 0) { - ret = mp_rand(NULL, digits, &rng); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = mp_rand(&a, 0, &rng); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - ret = mp_rand(&a, digits, &rng); - } + ExpectIntEQ(mp_init(&a), MP_OKAY); + ExpectIntEQ(wc_InitRng(&rng), 0); + + ExpectIntEQ(mp_rand(&a, digits, NULL), MISSING_RNG_E); + ExpectIntEQ(mp_rand(NULL, digits, &rng), BAD_FUNC_ARG); + ExpectIntEQ(mp_rand(&a, 0, &rng), BAD_FUNC_ARG); + ExpectIntEQ(mp_rand(&a, digits, &rng), 0); mp_clear(&a); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); + DoExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; -}/* End test_mp_rand*/ + return EXPECT_RESULT(); +} /* End test_mp_rand*/ + /* * Testing get_digit */ static int test_get_digit(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_PUBLIC_MP) - int ret = 0; - mp_int a; - int n = 0; + mp_int a; + int n = 0; - if (mp_init(&a) != MP_OKAY) { - ret = -1; - } - if (ret == 0) { - if (get_digit(NULL, n) != 0) { /* Should not hit this */ - ret = -1; - } - } - if (ret == 0) { - if (get_digit(NULL, n) == 0) { /* Should hit this */ - ret = 0; - } - } - if (ret == 0) { - if (get_digit(&a, n) != 0) { /* Should not hit this */ - ret = -1; - } - } - if (ret == 0) { - if (get_digit(&a, n) == 0) { /* Should hit this */ - ret = 0; - } - } + XMEMSET(&a, 0, sizeof(mp_int)); + + ExpectIntEQ(mp_init(&a), MP_OKAY); + ExpectIntEQ(get_digit(NULL, n), 0); + ExpectIntEQ(get_digit(&a, n), 0); mp_clear(&a); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; -}/* End test_get_digit*/ + return EXPECT_RESULT(); +} /* End test_get_digit*/ + /* * Testing wc_export_int */ static int test_wc_export_int(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if (defined(HAVE_ECC) || defined(WOLFSSL_EXPORT_INT)) && \ defined(WOLFSSL_PUBLIC_MP) - int ret = 0; - mp_int mp; - byte buf[32]; - word32 keySz = (word32)sizeof(buf); - word32 len = (word32)sizeof(buf); + mp_int mp; + byte buf[32]; + word32 keySz = (word32)sizeof(buf); + word32 len = (word32)sizeof(buf); - if (mp_init(&mp) != MP_OKAY) { - ret = -1; - } - if (ret == 0) { - ret = mp_set(&mp, 1234); - } - if (ret == 0) { - ret = wc_export_int(NULL, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN); - if (ret == BAD_FUNC_ARG) { - ret = 0; - } - } - if (ret == 0) { - len = sizeof(buf)-1; - ret = wc_export_int(&mp, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN); - if (ret == BUFFER_E) { - ret = 0; - } - } - if (ret == 0) { - len = sizeof(buf); - ret = wc_export_int(&mp, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN); - } - if (ret == 0) { - len = 4; /* test input too small */ - ret = wc_export_int(&mp, buf, &len, 0, WC_TYPE_HEX_STR); - if (ret == BUFFER_E) { - ret = 0; - } - } - if (ret == 0) { - len = sizeof(buf); - ret = wc_export_int(&mp, buf, &len, 0, WC_TYPE_HEX_STR); - /* hex version of 1234 is 04D2 and should be 4 digits + 1 null */ - if (ret == 0 && len != 5) { - ret = BAD_FUNC_ARG; - } - } + XMEMSET(&mp, 0, sizeof(mp_int)); + + ExpectIntEQ(mp_init(&mp), MP_OKAY); + ExpectIntEQ(mp_set(&mp, 1234), 0); + + ExpectIntEQ(wc_export_int(NULL, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN), + BAD_FUNC_ARG); + len = sizeof(buf)-1; + ExpectIntEQ(wc_export_int(&mp, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN), + BUFFER_E); + len = sizeof(buf); + ExpectIntEQ(wc_export_int(&mp, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN), 0); + len = 4; /* test input too small */ + ExpectIntEQ(wc_export_int(&mp, buf, &len, 0, WC_TYPE_HEX_STR), BUFFER_E); + len = sizeof(buf); + ExpectIntEQ(wc_export_int(&mp, buf, &len, 0, WC_TYPE_HEX_STR), 0); + /* hex version of 1234 is 04D2 and should be 4 digits + 1 null */ + ExpectIntEQ(len, 5); mp_clear(&mp); - - res = TEST_RES_CHECK(ret == 0); #endif - return res; + return EXPECT_RESULT(); + +} /* End test_wc_export_int*/ -}/* End test_wc_export_int*/ static int test_wc_InitRngNonce(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) && \ - (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && HAVE_FIPS_VERSION >= 2)) - int ret; - WC_RNG rng; - byte nonce[] = "\x0D\x74\xDB\x42\xA9\x10\x77\xDE" - "\x45\xAC\x13\x7A\xE1\x48\xAF\x16"; - word32 nonceSz = sizeof(nonce); + (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \ + HAVE_FIPS_VERSION >= 2)) + WC_RNG rng; + byte nonce[] = "\x0D\x74\xDB\x42\xA9\x10\x77\xDE" + "\x45\xAC\x13\x7A\xE1\x48\xAF\x16"; + word32 nonceSz = sizeof(nonce); - ret = wc_InitRngNonce(&rng, nonce, nonceSz); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_InitRngNonce(&rng, nonce, nonceSz), 0); + ExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; -}/* End test_wc_InitRngNonce*/ + return EXPECT_RESULT(); +} /* End test_wc_InitRngNonce*/ + /* * Testing wc_InitRngNonce_ex */ static int test_wc_InitRngNonce_ex(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(WC_NO_RNG) && !defined(HAVE_SELFTEST) && \ - (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && HAVE_FIPS_VERSION >= 2)) - int ret; - WC_RNG rng; - byte nonce[] = "\x0D\x74\xDB\x42\xA9\x10\x77\xDE" - "\x45\xAC\x13\x7A\xE1\x48\xAF\x16"; - word32 nonceSz = sizeof(nonce); + (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \ + HAVE_FIPS_VERSION >= 2)) + WC_RNG rng; + byte nonce[] = "\x0D\x74\xDB\x42\xA9\x10\x77\xDE" + "\x45\xAC\x13\x7A\xE1\x48\xAF\x16"; + word32 nonceSz = sizeof(nonce); - ret = wc_InitRngNonce_ex(&rng, nonce, nonceSz, HEAP_HINT, testDevId); - wc_FreeRng(&rng); - - res = TEST_RES_CHECK(ret == 0); + ExpectIntEQ(wc_InitRngNonce_ex(&rng, nonce, nonceSz, HEAP_HINT, testDevId), + 0); + ExpectIntEQ(wc_FreeRng(&rng), 0); #endif - return res; -}/*End test_wc_InitRngNonce_ex*/ + return EXPECT_RESULT(); +} /* End test_wc_InitRngNonce_ex */ @@ -56579,6 +50288,7 @@ static int test_wolfSSL_X509_STORE_get1_certs(void) static int test_ForceZero(void) { + EXPECT_DECLS; unsigned char data[32]; unsigned int i, j, len; @@ -56595,16 +50305,16 @@ static int test_ForceZero(void) for (j = 0; j < sizeof(data); j++) { if (j < i || j >= i + len) { - if (data[j] == 0x00) - return -10200; + ExpectIntNE(data[j], 0x00); + } + else { + ExpectIntEQ(data[j], 0x00); } - else if (data[j] != 0x00) - return -10201; } } } - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #ifndef NO_BIO @@ -58891,7 +52601,7 @@ static int test_wolfSSL_PEM_write_DHparams(void) BIO* bio = NULL; XFILE fp = XBADFILE; byte pem[2048]; - int pemSz; + int pemSz = 0; const char expected[] = "-----BEGIN DH PARAMETERS-----\n" "MIIBCAKCAQEAsKEIBpwIE7pZBjy8MNX1AMFPRKfW70rGJScc6NKWUwpckd2iwpSE\n" @@ -60552,9 +54262,11 @@ static int test_ECDH_compute_key(void) #endif /* HAVE_ECC && !OPENSSL_NO_PK */ #if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && \ - defined(WOLFSSL_CERT_GEN) && defined(WOLFSSL_CERT_REQ) && !defined(NO_ASN_TIME) + defined(WOLFSSL_CERT_GEN) && defined(WOLFSSL_CERT_REQ) && \ + !defined(NO_ASN_TIME) static int test_openssl_make_self_signed_certificate(EVP_PKEY* pkey) { + EXPECT_DECLS; X509* x509 = NULL; BIGNUM* serial_number = NULL; X509_NAME* name = NULL; @@ -60562,140 +54274,142 @@ static int test_openssl_make_self_signed_certificate(EVP_PKEY* pkey) ASN1_INTEGER* asn1_serial_number; long not_before, not_after; - AssertNotNull(x509 = X509_new()); + ExpectNotNull(x509 = X509_new()); - AssertIntNE(X509_set_pubkey(x509, pkey), 0); + ExpectIntNE(X509_set_pubkey(x509, pkey), 0); - AssertNotNull(serial_number = BN_new()); - AssertIntNE(BN_pseudo_rand(serial_number, 64, 0, 0), 0); - AssertNotNull(asn1_serial_number = X509_get_serialNumber(x509)); - AssertNotNull(BN_to_ASN1_INTEGER(serial_number, asn1_serial_number)); + ExpectNotNull(serial_number = BN_new()); + ExpectIntNE(BN_pseudo_rand(serial_number, 64, 0, 0), 0); + ExpectNotNull(asn1_serial_number = X509_get_serialNumber(x509)); + ExpectNotNull(BN_to_ASN1_INTEGER(serial_number, asn1_serial_number)); /* version 3 */ - AssertIntNE(X509_set_version(x509, 2L), 0); + ExpectIntNE(X509_set_version(x509, 2L), 0); - AssertNotNull(name = X509_NAME_new()); + ExpectNotNull(name = X509_NAME_new()); - AssertIntNE(X509_NAME_add_entry_by_NID(name, NID_commonName, MBSTRING_UTF8, + ExpectIntNE(X509_NAME_add_entry_by_NID(name, NID_commonName, MBSTRING_UTF8, (unsigned char*)"www.wolfssl.com", -1, -1, 0), 0); - AssertIntNE(X509_set_subject_name(x509, name), 0); - AssertIntNE(X509_set_issuer_name(x509, name), 0); + ExpectIntNE(X509_set_subject_name(x509, name), 0); + ExpectIntNE(X509_set_issuer_name(x509, name), 0); not_before = (long)wc_Time(NULL); not_after = not_before + (365 * 24 * 60 * 60); - AssertNotNull(X509_time_adj(X509_get_notBefore(x509), not_before, &epoch_off)); - AssertNotNull(X509_time_adj(X509_get_notAfter(x509), not_after, &epoch_off)); + ExpectNotNull(X509_time_adj(X509_get_notBefore(x509), not_before, + &epoch_off)); + ExpectNotNull(X509_time_adj(X509_get_notAfter(x509), not_after, + &epoch_off)); - AssertIntNE(X509_sign(x509, pkey, EVP_sha256()), 0); + ExpectIntNE(X509_sign(x509, pkey, EVP_sha256()), 0); BN_free(serial_number); X509_NAME_free(name); X509_free(x509); - return 0; + return EXPECT_RESULT(); } #endif static int test_openssl_generate_key_and_cert(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) -#if !defined(NO_RSA) - if (res == TEST_SKIPPED || res == TEST_SUCCESS) { - EVP_PKEY* pkey = EVP_PKEY_new(); - int key_length = 2048; - BIGNUM* exponent = BN_new(); - RSA* rsa = RSA_new(); - - AssertNotNull(pkey); - AssertNotNull(exponent); - AssertNotNull(rsa); - - AssertIntNE(BN_set_word(exponent, WC_RSA_EXPONENT), 0); - #ifndef WOLFSSL_KEY_GEN - AssertIntEQ(RSA_generate_key_ex(rsa, key_length, exponent, NULL), 0); - - #if defined(USE_CERT_BUFFERS_1024) - AssertIntNE(wolfSSL_RSA_LoadDer_ex(rsa, server_key_der_1024, - sizeof_server_key_der_1024, WOLFSSL_RSA_LOAD_PRIVATE), 0); - key_length = 1024; - #elif defined(USE_CERT_BUFFERS_2048) - AssertIntNE(wolfSSL_RSA_LoadDer_ex(rsa, server_key_der_2048, - sizeof_server_key_der_2048, WOLFSSL_RSA_LOAD_PRIVATE), 0); - #else - RSA_free(rsa); - rsa = NULL; - #endif - #else - AssertIntEQ(RSA_generate_key_ex(NULL, key_length, exponent, NULL), 0); - AssertIntEQ(RSA_generate_key_ex(rsa, 0, exponent, NULL), 0); - AssertIntEQ(RSA_generate_key_ex(rsa, key_length, NULL, NULL), 0); - AssertIntNE(RSA_generate_key_ex(rsa, key_length, exponent, NULL), 0); - #endif - - if (rsa) { - AssertIntNE(EVP_PKEY_assign_RSA(pkey, rsa), 0); - - BN_free(exponent); - - #if !defined(NO_CERTS) && defined(WOLFSSL_CERT_GEN) && \ - defined(WOLFSSL_CERT_REQ) && !defined(NO_ASN_TIME) - test_openssl_make_self_signed_certificate(pkey); - #endif - } - - EVP_PKEY_free(pkey); - res = TEST_RES_CHECK(1); - } -#endif /* !NO_RSA */ - + EVP_PKEY* pkey = NULL; #ifdef HAVE_ECC - if (res == TEST_SKIPPED || res == TEST_SUCCESS) { - EVP_PKEY* pkey = EVP_PKEY_new(); - EC_KEY* ec_key = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); + EC_KEY* ec_key = NULL; +#endif +#if !defined(NO_RSA) + int key_length = 2048; + BIGNUM* exponent = NULL; + RSA* rsa = NULL; - AssertNotNull(pkey); - AssertNotNull(ec_key); + ExpectNotNull(pkey = EVP_PKEY_new()); + ExpectNotNull(exponent = BN_new()); + ExpectNotNull(rsa = RSA_new()); - #ifndef NO_WOLFSSL_STUB - EC_KEY_set_asn1_flag(ec_key, OPENSSL_EC_NAMED_CURVE); + ExpectIntNE(BN_set_word(exponent, WC_RSA_EXPONENT), 0); +#ifndef WOLFSSL_KEY_GEN + ExpectIntEQ(RSA_generate_key_ex(rsa, key_length, exponent, NULL), 0); + + #if defined(USE_CERT_BUFFERS_1024) + ExpectIntNE(wolfSSL_RSA_LoadDer_ex(rsa, server_key_der_1024, + sizeof_server_key_der_1024, WOLFSSL_RSA_LOAD_PRIVATE), 0); + key_length = 1024; + #elif defined(USE_CERT_BUFFERS_2048) + ExpectIntNE(wolfSSL_RSA_LoadDer_ex(rsa, server_key_der_2048, + sizeof_server_key_der_2048, WOLFSSL_RSA_LOAD_PRIVATE), 0); + #else + RSA_free(rsa); + rsa = NULL; #endif +#else + ExpectIntEQ(RSA_generate_key_ex(NULL, key_length, exponent, NULL), 0); + ExpectIntEQ(RSA_generate_key_ex(rsa, 0, exponent, NULL), 0); + ExpectIntEQ(RSA_generate_key_ex(rsa, key_length, NULL, NULL), 0); + ExpectIntNE(RSA_generate_key_ex(rsa, key_length, exponent, NULL), 0); +#endif - AssertIntNE(EC_KEY_generate_key(ec_key), 0); - AssertIntNE(EVP_PKEY_assign_EC_KEY(pkey, ec_key), 0); + if (rsa) { + ExpectIntNE(EVP_PKEY_assign_RSA(pkey, rsa), 0); + if (EXPECT_FAIL()) { + RSA_free(rsa); + } #if !defined(NO_CERTS) && defined(WOLFSSL_CERT_GEN) && \ defined(WOLFSSL_CERT_REQ) && !defined(NO_ASN_TIME) - test_openssl_make_self_signed_certificate(pkey); + ExpectIntEQ(test_openssl_make_self_signed_certificate(pkey), + TEST_SUCCESS); #endif - - EVP_PKEY_free(pkey); - res = TEST_RES_CHECK(1); } + + EVP_PKEY_free(pkey); + pkey = NULL; + BN_free(exponent); +#endif /* !NO_RSA */ + +#ifdef HAVE_ECC + ExpectNotNull(pkey = EVP_PKEY_new()); + ExpectNotNull(ec_key = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1)); + +#ifndef NO_WOLFSSL_STUB + EC_KEY_set_asn1_flag(ec_key, OPENSSL_EC_NAMED_CURVE); +#endif + + ExpectIntNE(EC_KEY_generate_key(ec_key), 0); + ExpectIntNE(EVP_PKEY_assign_EC_KEY(pkey, ec_key), 0); + if (EXPECT_FAIL()) { + EC_KEY_free(ec_key); + } + +#if !defined(NO_CERTS) && defined(WOLFSSL_CERT_GEN) && \ + defined(WOLFSSL_CERT_REQ) && !defined(NO_ASN_TIME) + ExpectIntEQ(test_openssl_make_self_signed_certificate(pkey), TEST_SUCCESS); +#endif + + EVP_PKEY_free(pkey); #endif /* HAVE_ECC */ + (void)pkey; #endif /* OPENSSL_EXTRA */ - return res; + + return EXPECT_RESULT(); } static int test_stubs_are_stubs(void) { - int res = TEST_SKIPPED; -#if defined(OPENSSL_EXTRA) && !defined(NO_WOLFSSL_STUB) + EXPECT_DECLS; +#if defined(OPENSSL_EXTRA) && !defined(NO_WOLFSSL_STUB) && \ + (!defined(NO_WOLFSSL_CLIENT) || !defined(NO_WOLFSSL_SERVER)) WOLFSSL_CTX* ctx = NULL; WOLFSSL_CTX* ctxN = NULL; #ifndef NO_WOLFSSL_CLIENT - ctx = wolfSSL_CTX_new(wolfSSLv23_client_method()); - AssertNotNull(ctx); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())); #elif !defined(NO_WOLFSSL_SERVER) - ctx = wolfSSL_CTX_new(wolfSSLv23_server_method()); - AssertNotNull(ctx); - #else - return res; + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); #endif - #define CHECKZERO_RET(x, y, z) AssertIntEQ((int) x(y), 0); \ - AssertIntEQ((int) x(z), 0) + #define CHECKZERO_RET(x, y, z) ExpectIntEQ((int) x(y), 0); \ + ExpectIntEQ((int) x(z), 0) /* test logic, all stubs return same result regardless of ctx being NULL * as there are no sanity checks, it's just a stub! If at some * point a stub is not a stub it should begin to return BAD_FUNC_ARG @@ -60713,12 +54427,12 @@ static int test_stubs_are_stubs(void) CHECKZERO_RET(wolfSSL_CTX_sess_cache_full, ctx, ctxN); CHECKZERO_RET(wolfSSL_CTX_sess_misses, ctx, ctxN); CHECKZERO_RET(wolfSSL_CTX_sess_timeouts, ctx, ctxN); + wolfSSL_CTX_free(ctx); ctx = NULL; - - res = TEST_RES_CHECK(1); -#endif /* OPENSSL_EXTRA && !NO_WOLFSSL_STUB */ - return res; +#endif /* OPENSSL_EXTRA && !NO_WOLFSSL_STUB && (!NO_WOLFSSL_CLIENT || + * !NO_WOLFSSL_SERVER) */ + return EXPECT_RESULT(); } static int test_CONF_modules_xxx(void) @@ -60784,8 +54498,9 @@ static int test_ENGINE_cleanup(void) static int test_wolfSSL_CTX_LoadCRL(void) { - int res = TEST_SKIPPED; -#if defined(HAVE_CRL) && !defined(NO_RSA) && !defined(NO_FILESYSTEM) + EXPECT_DECLS; +#if defined(HAVE_CRL) && !defined(NO_RSA) && !defined(NO_FILESYSTEM) && \ + (!defined(NO_WOLFSSL_CLIENT) || !defined(NO_WOLFSSL_SERVER)) WOLFSSL_CTX* ctx = NULL; WOLFSSL* ssl = NULL; const char* badPath = "dummypath"; @@ -60797,62 +54512,60 @@ static int test_wolfSSL_CTX_LoadCRL(void) int monitor = WOLFSSL_CRL_MONITOR; WOLFSSL_CERT_MANAGER* cm = NULL; - #define FAIL_T1(x, y, z, p, d) AssertIntEQ((int) x(y, z, p, d), \ - BAD_FUNC_ARG) - #define SUCC_T(x, y, z, p, d) AssertIntEQ((int) x(y, z, p, d), \ - WOLFSSL_SUCCESS) - - FAIL_T1(wolfSSL_CTX_LoadCRL, ctx, validPath, pemType, monitor); + ExpectIntEQ(wolfSSL_CTX_LoadCRL(ctx, validPath, pemType, monitor), + BAD_FUNC_ARG); #ifndef NO_WOLFSSL_CLIENT - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())); -#elif !defined(NO_WOLFSSL_SERVER) - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())); #else - return; + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); #endif - SUCC_T (wolfSSL_CTX_LoadCRL, ctx, validPath, pemType, monitor); - SUCC_T (wolfSSL_CTX_LoadCRL, ctx, badPath, pemType, monitor); - SUCC_T (wolfSSL_CTX_LoadCRL, ctx, badPath, derType, monitor); + ExpectIntEQ(wolfSSL_CTX_LoadCRL(ctx, validPath, pemType, monitor), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_LoadCRL(ctx, badPath, pemType, monitor), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_LoadCRL(ctx, badPath, derType, monitor), + WOLFSSL_SUCCESS); wolfSSL_CTX_free(ctx); + ctx = NULL; #ifndef NO_WOLFSSL_CLIENT - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())); -#elif !defined(NO_WOLFSSL_SERVER) - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())); #else - return; + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); #endif - AssertIntEQ(wolfSSL_CTX_load_verify_locations(ctx, issuerCert, NULL), - WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_CTX_LoadCRLFile(ctx, validFilePath, pemType), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_load_verify_locations(ctx, issuerCert, NULL), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_LoadCRLFile(ctx, validFilePath, pemType), + WOLFSSL_SUCCESS); wolfSSL_CTX_free(ctx); + ctx = NULL; #ifndef NO_WOLFSSL_CLIENT - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())); -#elif !defined(NO_WOLFSSL_SERVER) - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())); #else - return; + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); #endif - AssertIntEQ(wolfSSL_CTX_load_verify_locations(ctx, issuerCert, NULL), - WOLFSSL_SUCCESS); - AssertNotNull(ssl = wolfSSL_new(ctx)); - AssertIntEQ(wolfSSL_LoadCRLFile(ssl, validFilePath, pemType), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_load_verify_locations(ctx, issuerCert, NULL), + WOLFSSL_SUCCESS); + ExpectNotNull(ssl = wolfSSL_new(ctx)); + ExpectIntEQ(wolfSSL_LoadCRLFile(ssl, validFilePath, pemType), + WOLFSSL_SUCCESS); wolfSSL_free(ssl); + ssl = NULL; wolfSSL_CTX_free(ctx); + ctx = NULL; - AssertNotNull(cm = wolfSSL_CertManagerNew()); - AssertIntEQ(wolfSSL_CertManagerLoadCA(cm, issuerCert, NULL), - WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_CertManagerLoadCRLFile(cm, validFilePath, pemType), WOLFSSL_SUCCESS); + ExpectNotNull(cm = wolfSSL_CertManagerNew()); + ExpectIntEQ(wolfSSL_CertManagerLoadCA(cm, issuerCert, NULL), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CertManagerLoadCRLFile(cm, validFilePath, pemType), + WOLFSSL_SUCCESS); wolfSSL_CertManagerFree(cm); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_SetTmpEC_DHE_Sz(void) @@ -61184,6 +54897,7 @@ static void test_wolfSSL_dtls13_fragments_spammer(WOLFSSL* ssl) static int test_wolfSSL_dtls_fragments(void) { + EXPECT_DECLS; callback_functions func_cb_client; callback_functions func_cb_server; size_t i; @@ -61204,7 +54918,6 @@ static int test_wolfSSL_dtls_fragments(void) XMEMSET(&func_cb_client, 0, sizeof(callback_functions)); XMEMSET(&func_cb_server, 0, sizeof(callback_functions)); - func_cb_client.doUdp = func_cb_server.doUdp = 1; func_cb_server.method = params[i].server_meth; func_cb_client.method = params[i].client_meth; @@ -61212,22 +54925,25 @@ static int test_wolfSSL_dtls_fragments(void) test_wolfSSL_client_server_nofail(&func_cb_client, &func_cb_server); - AssertFalse(func_cb_client.return_code); - AssertFalse(func_cb_server.return_code); + ExpectFalse(func_cb_client.return_code); + ExpectFalse(func_cb_server.return_code); /* The socket should be closed by the server resulting in a * socket error, fatal error or reading a close notify alert */ if (func_cb_client.last_err != SOCKET_ERROR_E && func_cb_client.last_err != WOLFSSL_ERROR_ZERO_RETURN && func_cb_client.last_err != FATAL_ERROR) { - AssertIntEQ(func_cb_client.last_err, SOCKET_ERROR_E); + ExpectIntEQ(func_cb_client.last_err, SOCKET_ERROR_E); } /* Check the server returned an error indicating the msg buffer * was full */ - AssertIntEQ(func_cb_server.last_err, DTLS_TOO_MANY_FRAGMENTS_E); + ExpectIntEQ(func_cb_server.last_err, DTLS_TOO_MANY_FRAGMENTS_E); + + if (EXPECT_FAIL()) + break; } - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } static void test_wolfSSL_dtls_send_alert(WOLFSSL* ssl) @@ -62067,87 +55783,58 @@ static int test_chainJ(WOLFSSL_CERT_MANAGER* cm) static int test_various_pathlen_chains(void) { - int ret; - WOLFSSL_CERT_MANAGER* cm; + EXPECT_DECLS; + WOLFSSL_CERT_MANAGER* cm = NULL; /* Test chain G (large chain with varying pathLens) */ - if ((cm = wolfSSL_CertManagerNew()) == NULL) { - fprintf(stderr, "cert manager new failed\n"); - return -1; - } + ExpectNotNull(cm = wolfSSL_CertManagerNew()); #if defined(NO_WOLFSSL_CLIENT) && defined(NO_WOLFSSL_SERVER) - AssertIntEQ(test_chainG(cm), -1); + ExpectIntEQ(test_chainG(cm), -1); #else - AssertIntEQ(test_chainG(cm), 0); + ExpectIntEQ(test_chainG(cm), 0); #endif /* NO_WOLFSSL_CLIENT && NO_WOLFSSL_SERVER */ - ret = wolfSSL_CertManagerUnloadCAs(cm); - if (ret != WOLFSSL_SUCCESS) - return -1; + ExpectIntEQ(wolfSSL_CertManagerUnloadCAs(cm), WOLFSSL_SUCCESS); wolfSSL_CertManagerFree(cm); /* end test chain G */ /* Test chain H (5 chain with same pathLens) */ - if ((cm = wolfSSL_CertManagerNew()) == NULL) { - fprintf(stderr, "cert manager new failed\n"); - return -1; - } - AssertIntLT(test_chainH(cm), 0); - - wolfSSL_CertManagerUnloadCAs(cm); + ExpectNotNull(cm = wolfSSL_CertManagerNew()); + ExpectIntLT(test_chainH(cm), 0); + ExpectIntEQ(wolfSSL_CertManagerUnloadCAs(cm), WOLFSSL_SUCCESS); wolfSSL_CertManagerFree(cm); - if ((cm = wolfSSL_CertManagerNew()) == NULL) { - fprintf(stderr, "cert manager new failed\n"); - return -1; - } - ret = wolfSSL_CertManagerUnloadCAs(cm); - if (ret != WOLFSSL_SUCCESS) - return -1; + ExpectNotNull(cm = wolfSSL_CertManagerNew()); + ExpectIntEQ(wolfSSL_CertManagerUnloadCAs(cm), WOLFSSL_SUCCESS); wolfSSL_CertManagerFree(cm); /* end test chain H */ /* Test chain I (only first ICA has pathLen set and it's set to 2, * followed by 2 ICA's, should pass) */ - if ((cm = wolfSSL_CertManagerNew()) == NULL) { - fprintf(stderr, "cert manager new failed\n"); - return -1; - } + ExpectNotNull(cm = wolfSSL_CertManagerNew()); #if defined(NO_WOLFSSL_CLIENT) && defined(NO_WOLFSSL_SERVER) - AssertIntEQ(test_chainI(cm), -1); + ExpectIntEQ(test_chainI(cm), -1); #else - AssertIntEQ(test_chainI(cm), 0); + ExpectIntEQ(test_chainI(cm), 0); #endif /* NO_WOLFSSL_CLIENT && NO_WOLFSSL_SERVER */ - wolfSSL_CertManagerUnloadCAs(cm); + ExpectIntEQ(wolfSSL_CertManagerUnloadCAs(cm), WOLFSSL_SUCCESS); wolfSSL_CertManagerFree(cm); - if ((cm = wolfSSL_CertManagerNew()) == NULL) { - fprintf(stderr, "cert manager new failed\n"); - return -1; - } - ret = wolfSSL_CertManagerUnloadCAs(cm); - if (ret != WOLFSSL_SUCCESS) - return -1; + ExpectNotNull(cm = wolfSSL_CertManagerNew()); + ExpectIntEQ(wolfSSL_CertManagerUnloadCAs(cm), WOLFSSL_SUCCESS); wolfSSL_CertManagerFree(cm); /* Test chain J (Again only first ICA has pathLen set and it's set to 2, * this time followed by 3 ICA's, should fail */ - if ((cm = wolfSSL_CertManagerNew()) == NULL) { - fprintf(stderr, "cert manager new failed\n"); - return -1; - } - AssertIntLT(test_chainJ(cm), 0); - - wolfSSL_CertManagerUnloadCAs(cm); - wolfSSL_CertManagerFree(cm); - if ((cm = wolfSSL_CertManagerNew()) == NULL) { - fprintf(stderr, "cert manager new failed\n"); - return -1; - } - - ret = wolfSSL_CertManagerUnloadCAs(cm); + ExpectNotNull(cm = wolfSSL_CertManagerNew()); + ExpectIntLT(test_chainJ(cm), 0); + ExpectIntEQ(wolfSSL_CertManagerUnloadCAs(cm), WOLFSSL_SUCCESS); wolfSSL_CertManagerFree(cm); - return TEST_RES_CHECK(ret == WOLFSSL_SUCCESS); + ExpectNotNull(cm = wolfSSL_CertManagerNew()); + ExpectIntEQ(wolfSSL_CertManagerUnloadCAs(cm), WOLFSSL_SUCCESS); + wolfSSL_CertManagerFree(cm); + + return EXPECT_RESULT(); } #endif /* !NO_RSA && !NO_SHA && !NO_FILESYSTEM && !NO_CERTS */ @@ -62238,6 +55925,7 @@ static int test_wolfSSL_CTX_set_ecdh_auto(void) defined(HAVE_IO_TESTS_DEPENDENCIES) && !defined(WOLFSSL_NO_TLS12) static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_server_thread(void* args) { + EXPECT_DECLS; callback_functions* callbacks = NULL; WOLFSSL_CTX* ctx = NULL; WOLFSSL* ssl = NULL; @@ -62247,7 +55935,8 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_server_thread(void* args) char msg[] = "I hear you fa shizzle!"; int len = (int) XSTRLEN(msg); char input[1024]; - int ret, err; + int ret; + int err = 0; if (!args) return 0; @@ -62268,19 +55957,17 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_server_thread(void* args) fdOpenSession(Task_self()); #endif - AssertIntEQ(WOLFSSL_SUCCESS, - wolfSSL_CTX_load_verify_locations(ctx, caCertFile, 0)); + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_load_verify_locations(ctx, + caCertFile, 0)); - AssertIntEQ(WOLFSSL_SUCCESS, - wolfSSL_CTX_use_certificate_file(ctx, svrCertFile, - WOLFSSL_FILETYPE_PEM)); + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_use_certificate_file(ctx, + svrCertFile, WOLFSSL_FILETYPE_PEM)); - AssertIntEQ(WOLFSSL_SUCCESS, - wolfSSL_CTX_use_PrivateKey_file(ctx, svrKeyFile, - WOLFSSL_FILETYPE_PEM)); + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_use_PrivateKey_file(ctx, + svrKeyFile, WOLFSSL_FILETYPE_PEM)); #if !defined(NO_FILESYSTEM) && !defined(NO_DH) - AssertIntEQ(wolfSSL_CTX_SetTmpDH_file(ctx, dhParamFile, + ExpectIntEQ(wolfSSL_CTX_SetTmpDH_file(ctx, dhParamFile, WOLFSSL_FILETYPE_PEM), WOLFSSL_SUCCESS); #elif !defined(NO_DH) SetDHCtx(ctx); /* will repick suites with DHE, higher priority than PSK */ @@ -62290,37 +55977,33 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_server_thread(void* args) callbacks->ctx_ready(ctx); ssl = wolfSSL_new(ctx); - AssertNotNull(ssl); + ExpectNotNull(ssl); /* listen and accept */ tcp_accept(&sfd, &cfd, (func_args*)args, port, 0, 0, 0, 0, 1, 0, 0); CloseSocket(sfd); - AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_set_fd(ssl, cfd)); + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_set_fd(ssl, cfd)); if (callbacks->ssl_ready) callbacks->ssl_ready(ssl); - do { - err = 0; /* Reset error */ - ret = wolfSSL_accept(ssl); - if (ret != WOLFSSL_SUCCESS) { - err = wolfSSL_get_error(ssl, 0); - } - } while (ret != WOLFSSL_SUCCESS && err == WC_PENDING_E); - - if (ret != WOLFSSL_SUCCESS) { - wolfSSL_free(ssl); - wolfSSL_CTX_free(ctx); - CloseSocket(cfd); - ((func_args*)args)->return_code = TEST_FAIL; - return 0; + if (EXPECT_SUCCESS()) { + do { + err = 0; /* Reset error */ + ret = wolfSSL_accept(ssl); + if (ret != WOLFSSL_SUCCESS) { + err = wolfSSL_get_error(ssl, 0); + } + } while (ret != WOLFSSL_SUCCESS && err == WC_PENDING_E); } - /* read and write data */ - XMEMSET( input, 0, sizeof(input)); + ExpectIntEQ(ret, WOLFSSL_SUCCESS); - while (1) { + /* read and write data */ + XMEMSET(input, 0, sizeof(input)); + + while (EXPECT_SUCCESS()) { ret = wolfSSL_read(ssl, input, sizeof(input)); if (ret > 0) { break; @@ -62334,7 +56017,7 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_server_thread(void* args) } } - if (err == WOLFSSL_ERROR_ZERO_RETURN) { + if (EXPECT_SUCCESS() && (err == WOLFSSL_ERROR_ZERO_RETURN)) { do { ret = wolfSSL_write(ssl, msg, len); if (ret > 0) { @@ -62344,21 +56027,27 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_server_thread(void* args) } /* bidirectional shutdown */ - while (wolfSSL_shutdown(ssl) != WOLFSSL_SUCCESS) { - continue; + while (EXPECT_SUCCESS()) { + ret = wolfSSL_shutdown(ssl); + ExpectIntNE(ret, WOLFSSL_FATAL_ERROR); + if (ret == WOLFSSL_SUCCESS) { + break; + } } - /* wait for the peer to disconnect the tcp connection */ - do { - ret = wolfSSL_read(ssl, input, sizeof(input)); - err = wolfSSL_get_error(ssl, ret); - } while (ret > 0 || err != WOLFSSL_ERROR_ZERO_RETURN); + if (EXPECT_SUCCESS()) { + /* wait for the peer to disconnect the tcp connection */ + do { + ret = wolfSSL_read(ssl, input, sizeof(input)); + err = wolfSSL_get_error(ssl, ret); + } while (ret > 0 || err != WOLFSSL_ERROR_ZERO_RETURN); + } /* detect TCP disconnect */ - AssertIntLE(ret,WOLFSSL_FAILURE); - AssertIntEQ(wolfSSL_get_error(ssl, ret), WOLFSSL_ERROR_ZERO_RETURN); + ExpectIntLE(ret,WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_get_error(ssl, ret), WOLFSSL_ERROR_ZERO_RETURN); - ((func_args*)args)->return_code = TEST_SUCCESS; + ((func_args*)args)->return_code = EXPECT_RESULT(); wolfSSL_free(ssl); wolfSSL_CTX_free(ctx); @@ -62366,10 +56055,13 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_server_thread(void* args) #if defined(HAVE_ECC) && defined(FP_ECC) && defined(HAVE_THREAD_LS) wc_ecc_fp_free(); /* free per thread cache */ #endif +#ifndef WOLFSSL_TIRTOS return 0; +#endif } static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_client_thread(void* args) { + EXPECT_DECLS; callback_functions* callbacks = NULL; WOLFSSL_CTX* ctx = NULL; WOLFSSL* ssl = NULL; @@ -62391,44 +56083,48 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_client_thread(void* args) fdOpenSession(Task_self()); #endif - AssertIntEQ(WOLFSSL_SUCCESS, - wolfSSL_CTX_load_verify_locations(ctx, caCertFile, 0)); + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_load_verify_locations(ctx, + caCertFile, 0)); - AssertIntEQ(WOLFSSL_SUCCESS, - wolfSSL_CTX_use_certificate_file(ctx, cliCertFile, - WOLFSSL_FILETYPE_PEM)); + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_use_certificate_file(ctx, + cliCertFile, WOLFSSL_FILETYPE_PEM)); - AssertIntEQ(WOLFSSL_SUCCESS, - wolfSSL_CTX_use_PrivateKey_file(ctx, cliKeyFile, - WOLFSSL_FILETYPE_PEM)); + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_CTX_use_PrivateKey_file(ctx, + cliKeyFile, WOLFSSL_FILETYPE_PEM)); - AssertNotNull((ssl = wolfSSL_new(ctx))); + ExpectNotNull((ssl = wolfSSL_new(ctx))); tcp_connect(&sfd, wolfSSLIP, ((func_args*)args)->signal->port, 0, 0, ssl); - AssertIntEQ(WOLFSSL_SUCCESS, wolfSSL_set_fd(ssl, sfd)); + ExpectIntEQ(WOLFSSL_SUCCESS, wolfSSL_set_fd(ssl, sfd)); - do { - err = 0; /* Reset error */ - ret = wolfSSL_connect(ssl); - if (ret != WOLFSSL_SUCCESS) { - err = wolfSSL_get_error(ssl, 0); + if (EXPECT_SUCCESS()) { + do { + err = 0; /* Reset error */ + ret = wolfSSL_connect(ssl); + if (ret != WOLFSSL_SUCCESS) { + err = wolfSSL_get_error(ssl, 0); + } + } while (ret != WOLFSSL_SUCCESS && err == WC_PENDING_E); + } + + ExpectIntGE(wolfSSL_write(ssl, msg, len), 0); + + if (EXPECT_SUCCESS()) { + if (0 < (idx = wolfSSL_read(ssl, input, sizeof(input)-1))) { + input[idx] = 0; } - } while (ret != WOLFSSL_SUCCESS && err == WC_PENDING_E); - - AssertIntGE(wolfSSL_write(ssl, msg, len), 0); - - if (0 < (idx = wolfSSL_read(ssl, input, sizeof(input)-1))) { - input[idx] = 0; } - ret = wolfSSL_shutdown(ssl); - if ( ret == WOLFSSL_SHUTDOWN_NOT_DONE) { + if (EXPECT_SUCCESS()) { ret = wolfSSL_shutdown(ssl); + if (ret == WOLFSSL_SHUTDOWN_NOT_DONE) { + ret = wolfSSL_shutdown(ssl); + } } - AssertIntEQ(ret, WOLFSSL_SUCCESS); + ExpectIntEQ(ret, WOLFSSL_SUCCESS); - ((func_args*)args)->return_code = TEST_SUCCESS; + ((func_args*)args)->return_code = EXPECT_RESULT(); wolfSSL_free(ssl); wolfSSL_CTX_free(ctx); @@ -62436,7 +56132,9 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_client_thread(void* args) #if defined(HAVE_ECC) && defined(FP_ECC) && defined(HAVE_THREAD_LS) wc_ecc_fp_free(); /* free per thread cache */ #endif +#ifndef WOLFSSL_TIRTOS return 0; +#endif } #endif /* OPENSSL_EXTRA && WOLFSSL_ERROR_CODE_OPENSSL && HAVE_IO_TESTS_DEPENDENCIES && !WOLFSSL_NO_TLS12 */ @@ -62446,7 +56144,7 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_client_thread(void* args) */ static int test_wolfSSL_read_detect_TCP_disconnect(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) && defined(WOLFSSL_ERROR_CODE_OPENSSL) && \ defined(HAVE_IO_TESTS_DEPENDENCIES) && !defined(WOLFSSL_NO_TLS12) tcp_ready ready; @@ -62492,71 +56190,75 @@ static int test_wolfSSL_read_detect_TCP_disconnect(void) join_thread(clientThread); join_thread(serverThread); - AssertTrue(client_args.return_code); - AssertTrue(server_args.return_code); + ExpectTrue(client_args.return_code); + ExpectTrue(server_args.return_code); FreeTcpReady(&ready); - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_CTX_get_min_proto_version(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) - WOLFSSL_CTX *ctx; + WOLFSSL_CTX *ctx = NULL; - (void)ctx; - - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_method())); - AssertIntEQ(wolfSSL_CTX_set_min_proto_version(ctx, SSL3_VERSION), WOLFSSL_SUCCESS); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_method())); + ExpectIntEQ(wolfSSL_CTX_set_min_proto_version(ctx, SSL3_VERSION), + WOLFSSL_SUCCESS); #ifdef WOLFSSL_ALLOW_SSLV3 - AssertIntEQ(wolfSSL_CTX_get_min_proto_version(ctx), SSL3_VERSION); + ExpectIntEQ(wolfSSL_CTX_get_min_proto_version(ctx), SSL3_VERSION); #else - AssertIntGT(wolfSSL_CTX_get_min_proto_version(ctx), SSL3_VERSION); + ExpectIntGT(wolfSSL_CTX_get_min_proto_version(ctx), SSL3_VERSION); #endif wolfSSL_CTX_free(ctx); + ctx = NULL; #ifdef WOLFSSL_ALLOW_TLSV10 - AssertNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_method())); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_method())); #else - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_method())); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_method())); #endif - AssertIntEQ(wolfSSL_CTX_set_min_proto_version(ctx, TLS1_VERSION), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_set_min_proto_version(ctx, TLS1_VERSION), + WOLFSSL_SUCCESS); #ifdef WOLFSSL_ALLOW_TLSV10 - AssertIntEQ(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_VERSION); + ExpectIntEQ(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_VERSION); #else - AssertIntGT(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_VERSION); + ExpectIntGT(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_VERSION); #endif wolfSSL_CTX_free(ctx); + ctx = NULL; - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_method())); - AssertIntEQ(wolfSSL_CTX_set_min_proto_version(ctx, TLS1_1_VERSION), WOLFSSL_SUCCESS); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_method())); + ExpectIntEQ(wolfSSL_CTX_set_min_proto_version(ctx, TLS1_1_VERSION), + WOLFSSL_SUCCESS); #ifndef NO_OLD_TLS - AssertIntEQ(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_1_VERSION); + ExpectIntEQ(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_1_VERSION); #else - AssertIntGT(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_1_VERSION); + ExpectIntGT(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_1_VERSION); #endif wolfSSL_CTX_free(ctx); + ctx = NULL; #ifndef WOLFSSL_NO_TLS12 - AssertNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_2_method())); - AssertIntEQ(wolfSSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION), WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_2_VERSION); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_2_method())); + ExpectIntEQ(wolfSSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_2_VERSION); wolfSSL_CTX_free(ctx); + ctx = NULL; #endif #ifdef WOLFSSL_TLS13 - AssertNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_method())); - AssertIntEQ(wolfSSL_CTX_set_min_proto_version(ctx, TLS1_3_VERSION), WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_3_VERSION); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_method())); + ExpectIntEQ(wolfSSL_CTX_set_min_proto_version(ctx, TLS1_3_VERSION), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_get_min_proto_version(ctx), TLS1_3_VERSION); wolfSSL_CTX_free(ctx); + ctx = NULL; #endif - - res = TEST_RES_CHECK(1); #endif /* defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) */ - return res; + return EXPECT_RESULT(); } #if defined(OPENSSL_ALL) || (defined(OPENSSL_EXTRA) && \ @@ -62565,82 +56267,81 @@ static int test_wolfSSL_CTX_get_min_proto_version(void) defined(WOLFSSL_OPENSSH) || defined(HAVE_SBLIM_SFCB))) static int test_wolfSSL_set_SSL_CTX(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if (defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL)) \ && !defined(WOLFSSL_NO_TLS12) && defined(WOLFSSL_TLS13) && \ !defined(NO_RSA) - WOLFSSL_CTX *ctx1, *ctx2; - WOLFSSL *ssl; + WOLFSSL_CTX *ctx1 = NULL; + WOLFSSL_CTX *ctx2 = NULL; + WOLFSSL *ssl = NULL; const byte *session_id1 = (const byte *)"CTX1"; const byte *session_id2 = (const byte *)"CTX2"; - AssertNotNull(ctx1 = wolfSSL_CTX_new(wolfTLS_server_method())); - AssertTrue(wolfSSL_CTX_use_certificate_file(ctx1, svrCertFile, - WOLFSSL_FILETYPE_PEM)); - AssertTrue(wolfSSL_CTX_use_PrivateKey_file(ctx1, svrKeyFile, - WOLFSSL_FILETYPE_PEM)); - AssertIntEQ(wolfSSL_CTX_set_min_proto_version(ctx1, TLS1_2_VERSION), - WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_CTX_get_min_proto_version(ctx1), TLS1_2_VERSION); - AssertIntEQ(wolfSSL_CTX_get_max_proto_version(ctx1), TLS1_3_VERSION); - AssertIntEQ(wolfSSL_CTX_set_session_id_context(ctx1, session_id1, 4), - WOLFSSL_SUCCESS); + ExpectNotNull(ctx1 = wolfSSL_CTX_new(wolfTLS_server_method())); + ExpectTrue(wolfSSL_CTX_use_certificate_file(ctx1, svrCertFile, + WOLFSSL_FILETYPE_PEM)); + ExpectTrue(wolfSSL_CTX_use_PrivateKey_file(ctx1, svrKeyFile, + WOLFSSL_FILETYPE_PEM)); + ExpectIntEQ(wolfSSL_CTX_set_min_proto_version(ctx1, TLS1_2_VERSION), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_get_min_proto_version(ctx1), TLS1_2_VERSION); + ExpectIntEQ(wolfSSL_CTX_get_max_proto_version(ctx1), TLS1_3_VERSION); + ExpectIntEQ(wolfSSL_CTX_set_session_id_context(ctx1, session_id1, 4), + WOLFSSL_SUCCESS); - AssertNotNull(ctx2 = wolfSSL_CTX_new(wolfTLS_server_method())); - AssertTrue(wolfSSL_CTX_use_certificate_file(ctx2, svrCertFile, - WOLFSSL_FILETYPE_PEM)); - AssertTrue(wolfSSL_CTX_use_PrivateKey_file(ctx2, svrKeyFile, - WOLFSSL_FILETYPE_PEM)); - AssertIntEQ(wolfSSL_CTX_set_min_proto_version(ctx2, TLS1_2_VERSION), - WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_CTX_set_max_proto_version(ctx2, TLS1_2_VERSION), - WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_CTX_get_min_proto_version(ctx2), TLS1_2_VERSION); - AssertIntEQ(wolfSSL_CTX_get_max_proto_version(ctx2), TLS1_2_VERSION); - AssertIntEQ(wolfSSL_CTX_set_session_id_context(ctx2, session_id2, 4), - WOLFSSL_SUCCESS); + ExpectNotNull(ctx2 = wolfSSL_CTX_new(wolfTLS_server_method())); + ExpectTrue(wolfSSL_CTX_use_certificate_file(ctx2, svrCertFile, + WOLFSSL_FILETYPE_PEM)); + ExpectTrue(wolfSSL_CTX_use_PrivateKey_file(ctx2, svrKeyFile, + WOLFSSL_FILETYPE_PEM)); + ExpectIntEQ(wolfSSL_CTX_set_min_proto_version(ctx2, TLS1_2_VERSION), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_set_max_proto_version(ctx2, TLS1_2_VERSION), + WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_get_min_proto_version(ctx2), TLS1_2_VERSION); + ExpectIntEQ(wolfSSL_CTX_get_max_proto_version(ctx2), TLS1_2_VERSION); + ExpectIntEQ(wolfSSL_CTX_set_session_id_context(ctx2, session_id2, 4), + WOLFSSL_SUCCESS); #ifdef HAVE_SESSION_TICKET - AssertIntEQ((wolfSSL_CTX_get_options(ctx1) & SSL_OP_NO_TICKET), 0); + ExpectIntEQ((wolfSSL_CTX_get_options(ctx1) & SSL_OP_NO_TICKET), 0); wolfSSL_CTX_set_options(ctx2, SSL_OP_NO_TICKET); - AssertIntNE((wolfSSL_CTX_get_options(ctx2) & SSL_OP_NO_TICKET), 0); + ExpectIntNE((wolfSSL_CTX_get_options(ctx2) & SSL_OP_NO_TICKET), 0); #endif - AssertNotNull(ssl = wolfSSL_new(ctx2)); - AssertIntNE((wolfSSL_get_options(ssl) & WOLFSSL_OP_NO_TLSv1_3), 0); + ExpectNotNull(ssl = wolfSSL_new(ctx2)); + ExpectIntNE((wolfSSL_get_options(ssl) & WOLFSSL_OP_NO_TLSv1_3), 0); #ifdef WOLFSSL_INT_H - AssertIntEQ(XMEMCMP(ssl->sessionCtx, session_id2, 4), 0); - AssertTrue(ssl->buffers.certificate == ctx2->certificate); - AssertTrue(ssl->buffers.certChain == ctx2->certChain); + ExpectIntEQ(XMEMCMP(ssl->sessionCtx, session_id2, 4), 0); + ExpectTrue(ssl->buffers.certificate == ctx2->certificate); + ExpectTrue(ssl->buffers.certChain == ctx2->certChain); #endif #ifdef HAVE_SESSION_TICKET - AssertIntNE((wolfSSL_get_options(ssl) & SSL_OP_NO_TICKET), 0); + ExpectIntNE((wolfSSL_get_options(ssl) & SSL_OP_NO_TICKET), 0); #endif /* Set the ctx1 that has TLSv1.3 as max proto version */ - AssertNotNull(wolfSSL_set_SSL_CTX(ssl, ctx1)); + ExpectNotNull(wolfSSL_set_SSL_CTX(ssl, ctx1)); /* MUST not change proto versions of ssl */ - AssertIntNE((wolfSSL_get_options(ssl) & WOLFSSL_OP_NO_TLSv1_3), 0); + ExpectIntNE((wolfSSL_get_options(ssl) & WOLFSSL_OP_NO_TLSv1_3), 0); #ifdef HAVE_SESSION_TICKET /* MUST not change */ - AssertIntNE((wolfSSL_get_options(ssl) & SSL_OP_NO_TICKET), 0); + ExpectIntNE((wolfSSL_get_options(ssl) & SSL_OP_NO_TICKET), 0); #endif /* MUST change */ #ifdef WOLFSSL_INT_H - AssertTrue(ssl->buffers.certificate == ctx1->certificate); - AssertTrue(ssl->buffers.certChain == ctx1->certChain); - AssertIntEQ(XMEMCMP(ssl->sessionCtx, session_id1, 4), 0); + ExpectTrue(ssl->buffers.certificate == ctx1->certificate); + ExpectTrue(ssl->buffers.certChain == ctx1->certChain); + ExpectIntEQ(XMEMCMP(ssl->sessionCtx, session_id1, 4), 0); #endif wolfSSL_free(ssl); wolfSSL_CTX_free(ctx1); wolfSSL_CTX_free(ctx2); - - res = TEST_RES_CHECK(1); #endif /* defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) */ - return res; + return EXPECT_RESULT(); } #endif /* defined(OPENSSL_ALL) || (defined(OPENSSL_EXTRA) && \ (defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || \ @@ -62649,160 +56350,150 @@ static int test_wolfSSL_set_SSL_CTX(void) static int test_wolfSSL_security_level(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) - SSL_CTX *ctx; + SSL_CTX *ctx = NULL; #ifdef WOLFSSL_TLS13 #ifdef NO_WOLFSSL_SERVER - AssertNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method())); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method())); #else - AssertNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_server_method())); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_server_method())); #endif + SSL_CTX_set_security_level(NULL, 1); SSL_CTX_set_security_level(ctx, 1); - AssertTrue(1); - - AssertIntEQ(SSL_CTX_get_security_level(ctx), 0); + ExpectIntEQ(SSL_CTX_get_security_level(NULL), 0); + /* Stub so nothing happens. */ + ExpectIntEQ(SSL_CTX_get_security_level(ctx), 0); SSL_CTX_free(ctx); #else (void)ctx; #endif - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_SSL_in_init(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) && !defined(NO_BIO) - SSL_CTX* ctx; - SSL* ssl; + SSL_CTX* ctx = NULL; + SSL* ssl = NULL; const char* testCertFile; const char* testKeyFile; - #ifdef WOLFSSL_TLS13 - #ifdef NO_WOLFSSL_SERVER - AssertNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method())); - #else - AssertNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_server_method())); - #endif -#ifndef NO_RSA - testCertFile = svrCertFile; - testKeyFile = svrKeyFile; -#elif defined(HAVE_ECC) - testCertFile = eccCertFile; - testKeyFile = eccKeyFile; -#else - testCertFile = NULL; - testKeyFile = NULL; -#endif - if (testCertFile != NULL && testKeyFile != NULL) { - AssertTrue(SSL_CTX_use_certificate_file(ctx, testCertFile, - SSL_FILETYPE_PEM)); - AssertTrue(SSL_CTX_use_PrivateKey_file(ctx, testKeyFile, - SSL_FILETYPE_PEM)); - } - - ssl = SSL_new(ctx); - AssertNotNull(ssl); - AssertIntEQ(SSL_in_init(ssl), 1); - - SSL_CTX_free(ctx); - SSL_free(ssl); +#ifdef WOLFSSL_TLS13 + #ifdef NO_WOLFSSL_SERVER + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method())); #else - (void)ctx; - (void)ssl; - (void)testCertFile; - (void)testKeyFile; + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_server_method())); + #endif +#else + #ifdef NO_WOLFSSL_SERVER + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())); + #else + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); #endif - - res = TEST_RES_CHECK(1); #endif - return res; +#ifndef NO_RSA + testCertFile = svrCertFile; + testKeyFile = svrKeyFile; +#elif defined(HAVE_ECC) + testCertFile = eccCertFile; + testKeyFile = eccKeyFile; +#else + testCertFile = NULL; + testKeyFile = NULL; +#endif + if ((testCertFile != NULL) && (testKeyFile != NULL)) { + ExpectTrue(SSL_CTX_use_certificate_file(ctx, testCertFile, + SSL_FILETYPE_PEM)); + ExpectTrue(SSL_CTX_use_PrivateKey_file(ctx, testKeyFile, + SSL_FILETYPE_PEM)); + } + + ExpectNotNull(ssl = SSL_new(ctx)); + ExpectIntEQ(SSL_in_init(ssl), 1); + + SSL_CTX_free(ctx); + SSL_free(ssl); +#endif + return EXPECT_RESULT(); } static int test_wolfSSL_CTX_set_timeout(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if !defined(NO_WOLFSSL_SERVER) && !defined(NO_SESSION_CACHE) int timeout; - - WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfSSLv23_server_method()); + WOLFSSL_CTX* ctx = NULL; (void)timeout; - AssertNotNull(ctx); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); #if defined(WOLFSSL_ERROR_CODE_OPENSSL) /* in WOLFSSL_ERROR_CODE_OPENSSL macro guard, * wolfSSL_CTX_set_timeout returns previous timeout value on success. */ - AssertIntEQ(wolfSSL_CTX_set_timeout(NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_timeout(NULL, 0), BAD_FUNC_ARG); /* giving 0 as timeout value sets default timeout */ timeout = wolfSSL_CTX_set_timeout(ctx, 0); - AssertIntEQ(wolfSSL_CTX_set_timeout(ctx, 20), timeout); - AssertIntEQ(wolfSSL_CTX_set_timeout(ctx, 30), 20); + ExpectIntEQ(wolfSSL_CTX_set_timeout(ctx, 20), timeout); + ExpectIntEQ(wolfSSL_CTX_set_timeout(ctx, 30), 20); #else - - AssertIntEQ(wolfSSL_CTX_set_timeout(NULL, 0), BAD_FUNC_ARG); - AssertIntEQ(wolfSSL_CTX_set_timeout(ctx, 100), 1); - AssertIntEQ(wolfSSL_CTX_set_timeout(ctx, 0), 1); - + ExpectIntEQ(wolfSSL_CTX_set_timeout(NULL, 0), BAD_FUNC_ARG); + ExpectIntEQ(wolfSSL_CTX_set_timeout(ctx, 100), 1); + ExpectIntEQ(wolfSSL_CTX_set_timeout(ctx, 0), 1); #endif - wolfSSL_CTX_free(ctx); - res = TEST_RES_CHECK(1); + wolfSSL_CTX_free(ctx); #endif /* !NO_WOLFSSL_SERVER && !NO_SESSION_CACHE*/ - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_OpenSSL_version(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) const char* ver; - #if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L - AssertNotNull(ver = OpenSSL_version(0)); - #else - AssertNotNull(ver = OpenSSL_version()); - #endif - AssertIntEQ(XMEMCMP(ver, "wolfSSL " LIBWOLFSSL_VERSION_STRING, - XSTRLEN("wolfSSL " LIBWOLFSSL_VERSION_STRING)), 0); - - res = TEST_RES_CHECK(1); +#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L + ExpectNotNull(ver = OpenSSL_version(0)); +#else + ExpectNotNull(ver = OpenSSL_version()); #endif - return res; + ExpectIntEQ(XMEMCMP(ver, "wolfSSL " LIBWOLFSSL_VERSION_STRING, + XSTRLEN("wolfSSL " LIBWOLFSSL_VERSION_STRING)), 0); +#endif + return EXPECT_RESULT(); } static int test_CONF_CTX_CMDLINE(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) SSL_CTX* ctx = NULL; SSL_CONF_CTX* cctx = NULL; - AssertNotNull(cctx = SSL_CONF_CTX_new()); + ExpectNotNull(cctx = SSL_CONF_CTX_new()); - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); SSL_CONF_CTX_set_ssl_ctx(cctx, ctx); - AssertTrue(1); /* set flags */ - AssertIntEQ(SSL_CONF_CTX_set_flags(cctx, WOLFSSL_CONF_FLAG_CMDLINE), - WOLFSSL_CONF_FLAG_CMDLINE); - AssertIntEQ(SSL_CONF_CTX_set_flags(cctx, WOLFSSL_CONF_FLAG_CERTIFICATE), - WOLFSSL_CONF_FLAG_CMDLINE | WOLFSSL_CONF_FLAG_CERTIFICATE); + ExpectIntEQ(SSL_CONF_CTX_set_flags(cctx, WOLFSSL_CONF_FLAG_CMDLINE), + WOLFSSL_CONF_FLAG_CMDLINE); + ExpectIntEQ(SSL_CONF_CTX_set_flags(cctx, WOLFSSL_CONF_FLAG_CERTIFICATE), + WOLFSSL_CONF_FLAG_CMDLINE | WOLFSSL_CONF_FLAG_CERTIFICATE); /* cmd invalid command */ - AssertIntEQ(SSL_CONF_cmd(cctx, "foo", "foobar"), -2); - AssertIntEQ(SSL_CONF_cmd(cctx, "foo", NULL), -2); - AssertIntEQ(SSL_CONF_cmd(cctx, NULL, NULL), WOLFSSL_FAILURE); - AssertIntEQ(SSL_CONF_cmd(cctx, NULL, "foobar"), WOLFSSL_FAILURE); - AssertIntEQ(SSL_CONF_cmd(NULL, "-curves", "foobar"), WOLFSSL_FAILURE); + ExpectIntEQ(SSL_CONF_cmd(cctx, "foo", "foobar"), -2); + ExpectIntEQ(SSL_CONF_cmd(cctx, "foo", NULL), -2); + ExpectIntEQ(SSL_CONF_cmd(cctx, NULL, NULL), WOLFSSL_FAILURE); + ExpectIntEQ(SSL_CONF_cmd(cctx, NULL, "foobar"), WOLFSSL_FAILURE); + ExpectIntEQ(SSL_CONF_cmd(NULL, "-curves", "foobar"), WOLFSSL_FAILURE); /* cmd Certificate and Private Key*/ { @@ -62810,12 +56501,11 @@ static int test_CONF_CTX_CMDLINE(void) const char* ourCert = svrCertFile; const char* ourKey = svrKeyFile; - AssertIntEQ(SSL_CONF_cmd(cctx, "-cert", NULL), -3); - AssertIntEQ(SSL_CONF_cmd(cctx, "-cert", ourCert), - WOLFSSL_SUCCESS); - AssertIntEQ(SSL_CONF_cmd(cctx, "-key", NULL), -3); - AssertIntEQ(SSL_CONF_cmd(cctx, "-key", ourKey), WOLFSSL_SUCCESS); - AssertIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_cmd(cctx, "-cert", NULL), -3); + ExpectIntEQ(SSL_CONF_cmd(cctx, "-cert", ourCert), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_cmd(cctx, "-key", NULL), -3); + ExpectIntEQ(SSL_CONF_cmd(cctx, "-key", ourKey), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); #endif } @@ -62824,9 +56514,9 @@ static int test_CONF_CTX_CMDLINE(void) #if defined(HAVE_ECC) const char* curve = "secp256r1"; - AssertIntEQ(SSL_CONF_cmd(cctx, "-curves", NULL), -3); - AssertIntEQ(SSL_CONF_cmd(cctx, "-curves", curve), WOLFSSL_SUCCESS); - AssertIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_cmd(cctx, "-curves", NULL), -3); + ExpectIntEQ(SSL_CONF_cmd(cctx, "-curves", curve), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); #endif } @@ -62834,9 +56524,9 @@ static int test_CONF_CTX_CMDLINE(void) { char* cipher = wolfSSL_get_cipher_list(0/*top priority*/); - AssertIntEQ(SSL_CONF_cmd(cctx, "-cipher", NULL), -3); - AssertIntEQ(SSL_CONF_cmd(cctx, "-cipher", cipher), WOLFSSL_SUCCESS); - AssertIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_cmd(cctx, "-cipher", NULL), -3); + ExpectIntEQ(SSL_CONF_cmd(cctx, "-cipher", cipher), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); } /* cmd DH parameter */ @@ -62844,45 +56534,41 @@ static int test_CONF_CTX_CMDLINE(void) #if !defined(NO_DH) && !defined(NO_BIO) const char* ourdhcert = "./certs/dh2048.pem"; - AssertIntEQ(SSL_CONF_cmd(cctx, "-dhparam", NULL), - -3); - AssertIntEQ(SSL_CONF_cmd(cctx, "-dhparam", ourdhcert), - WOLFSSL_SUCCESS); - AssertIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_cmd(cctx, "-dhparam", NULL), -3); + ExpectIntEQ(SSL_CONF_cmd(cctx, "-dhparam", ourdhcert), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); #endif } + SSL_CTX_free(ctx); SSL_CONF_CTX_free(cctx); - - res = TEST_RES_CHECK(1); #endif /* OPENSSL_EXTRA */ - return res; + return EXPECT_RESULT(); } static int test_CONF_CTX_FILE(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) SSL_CTX* ctx = NULL; SSL_CONF_CTX* cctx = NULL; - AssertNotNull(cctx = SSL_CONF_CTX_new()); - AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); + ExpectNotNull(cctx = SSL_CONF_CTX_new()); + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); SSL_CONF_CTX_set_ssl_ctx(cctx, ctx); - AssertTrue(1); /* set flags */ - AssertIntEQ(SSL_CONF_CTX_set_flags(cctx, WOLFSSL_CONF_FLAG_FILE), - WOLFSSL_CONF_FLAG_FILE); - AssertIntEQ(SSL_CONF_CTX_set_flags(cctx, WOLFSSL_CONF_FLAG_CERTIFICATE), - WOLFSSL_CONF_FLAG_FILE | WOLFSSL_CONF_FLAG_CERTIFICATE); + ExpectIntEQ(SSL_CONF_CTX_set_flags(cctx, WOLFSSL_CONF_FLAG_FILE), + WOLFSSL_CONF_FLAG_FILE); + ExpectIntEQ(SSL_CONF_CTX_set_flags(cctx, WOLFSSL_CONF_FLAG_CERTIFICATE), + WOLFSSL_CONF_FLAG_FILE | WOLFSSL_CONF_FLAG_CERTIFICATE); /* sanity check */ - AssertIntEQ(SSL_CONF_cmd(cctx, "foo", "foobar"), -2); - AssertIntEQ(SSL_CONF_cmd(cctx, "foo", NULL), -2); - AssertIntEQ(SSL_CONF_cmd(cctx, NULL, NULL), WOLFSSL_FAILURE); - AssertIntEQ(SSL_CONF_cmd(cctx, NULL, "foobar"), WOLFSSL_FAILURE); - AssertIntEQ(SSL_CONF_cmd(NULL, "-curves", "foobar"), WOLFSSL_FAILURE); + ExpectIntEQ(SSL_CONF_cmd(cctx, "foo", "foobar"), -2); + ExpectIntEQ(SSL_CONF_cmd(cctx, "foo", NULL), -2); + ExpectIntEQ(SSL_CONF_cmd(cctx, NULL, NULL), WOLFSSL_FAILURE); + ExpectIntEQ(SSL_CONF_cmd(cctx, NULL, "foobar"), WOLFSSL_FAILURE); + ExpectIntEQ(SSL_CONF_cmd(NULL, "-curves", "foobar"), WOLFSSL_FAILURE); /* cmd Certificate and Private Key*/ { @@ -62890,13 +56576,13 @@ static int test_CONF_CTX_FILE(void) const char* ourCert = svrCertFile; const char* ourKey = svrKeyFile; - AssertIntEQ(SSL_CONF_cmd(cctx, "Certificate", NULL), -3); - AssertIntEQ(SSL_CONF_cmd(cctx, "PrivateKey", NULL), -3); + ExpectIntEQ(SSL_CONF_cmd(cctx, "Certificate", NULL), -3); + ExpectIntEQ(SSL_CONF_cmd(cctx, "PrivateKey", NULL), -3); - AssertIntEQ(SSL_CONF_cmd(cctx, "Certificate", ourCert), - WOLFSSL_SUCCESS); - AssertIntEQ(SSL_CONF_cmd(cctx, "PrivateKey", ourKey), WOLFSSL_SUCCESS); - AssertIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_cmd(cctx, "Certificate", ourCert), + WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_cmd(cctx, "PrivateKey", ourKey), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); #endif } @@ -62905,9 +56591,9 @@ static int test_CONF_CTX_FILE(void) #if defined(HAVE_ECC) const char* curve = "secp256r1"; - AssertIntEQ(SSL_CONF_cmd(cctx, "Curves", NULL), -3); - AssertIntEQ(SSL_CONF_cmd(cctx, "Curves", curve), WOLFSSL_SUCCESS); - AssertIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_cmd(cctx, "Curves", NULL), -3); + ExpectIntEQ(SSL_CONF_cmd(cctx, "Curves", curve), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); #endif } @@ -62915,9 +56601,10 @@ static int test_CONF_CTX_FILE(void) { char* cipher = wolfSSL_get_cipher_list(0/*top priority*/); - AssertIntEQ(SSL_CONF_cmd(cctx, "CipherString", NULL), -3); - AssertIntEQ(SSL_CONF_cmd(cctx, "CipherString", cipher), WOLFSSL_SUCCESS); - AssertIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_cmd(cctx, "CipherString", NULL), -3); + ExpectIntEQ(SSL_CONF_cmd(cctx, "CipherString", cipher), + WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); } /* cmd DH parameter */ @@ -62925,91 +56612,90 @@ static int test_CONF_CTX_FILE(void) #if !defined(NO_DH) && !defined(NO_BIO) && defined(HAVE_FFDHE_3072) const char* ourdhcert = "./certs/dh3072.pem"; - AssertIntEQ(SSL_CONF_cmd(cctx, "DHParameters", NULL), -3); - AssertIntEQ(SSL_CONF_cmd(cctx, "DHParameters", ourdhcert), - WOLFSSL_SUCCESS); - AssertIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_cmd(cctx, "DHParameters", NULL), -3); + ExpectIntEQ(SSL_CONF_cmd(cctx, "DHParameters", ourdhcert), + WOLFSSL_SUCCESS); + ExpectIntEQ(SSL_CONF_CTX_finish(cctx), WOLFSSL_SUCCESS); #endif } + SSL_CTX_free(ctx); SSL_CONF_CTX_free(cctx); - - res = TEST_RES_CHECK(1); #endif /* OPENSSL_EXTRA */ - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_CRYPTO_get_ex_new_index(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef HAVE_EX_DATA int idx1, idx2; /* test for unsupported class index */ - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_X509_STORE, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_X509_STORE_CTX, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_DH, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_DSA, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_EC_KEY, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_RSA, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_ENGINE, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_UI, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_BIO, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_APP, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_UI_METHOD, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_DRBG, - 0,NULL, NULL, NULL, NULL ), -1); - AssertIntEQ(wolfSSL_CRYPTO_get_ex_new_index(20, 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_X509_STORE, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index( + WOLF_CRYPTO_EX_INDEX_X509_STORE_CTX, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_DH, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_DSA, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_EC_KEY, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_RSA, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_ENGINE, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_UI, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_BIO, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_APP, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_UI_METHOD, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_DRBG, + 0,NULL, NULL, NULL, NULL ), -1); + ExpectIntEQ(wolfSSL_CRYPTO_get_ex_new_index(20, + 0,NULL, NULL, NULL, NULL ), -1); /* test for supported class index */ idx1 = wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_SSL, - 0,NULL, NULL, NULL, NULL ); + 0,NULL, NULL, NULL, NULL ); idx2 = wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_SSL, - 0,NULL, NULL, NULL, NULL ); - AssertIntNE(idx1, -1); - AssertIntNE(idx2, -1); - AssertIntNE(idx1, idx2); + 0,NULL, NULL, NULL, NULL ); + ExpectIntNE(idx1, -1); + ExpectIntNE(idx2, -1); + ExpectIntNE(idx1, idx2); idx1 = wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_SSL_CTX, - 0,NULL, NULL, NULL, NULL ); + 0,NULL, NULL, NULL, NULL ); idx2 = wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_SSL_CTX, - 0,NULL, NULL, NULL, NULL ); - AssertIntNE(idx1, -1); - AssertIntNE(idx2, -1); - AssertIntNE(idx1, idx2); + 0,NULL, NULL, NULL, NULL ); + ExpectIntNE(idx1, -1); + ExpectIntNE(idx2, -1); + ExpectIntNE(idx1, idx2); idx1 = wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_X509, - 0,NULL, NULL, NULL, NULL ); + 0,NULL, NULL, NULL, NULL ); idx2 = wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_X509, - 0,NULL, NULL, NULL, NULL ); - AssertIntNE(idx1, -1); - AssertIntNE(idx2, -1); - AssertIntNE(idx1, idx2); + 0,NULL, NULL, NULL, NULL ); + ExpectIntNE(idx1, -1); + ExpectIntNE(idx2, -1); + ExpectIntNE(idx1, idx2); idx1 = wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_SSL_SESSION, - 0,NULL, NULL, NULL, NULL ); + 0,NULL, NULL, NULL, NULL ); idx2 = wolfSSL_CRYPTO_get_ex_new_index(WOLF_CRYPTO_EX_INDEX_SSL_SESSION, - 0,NULL, NULL, NULL, NULL ); - AssertIntNE(idx1, -1); - AssertIntNE(idx2, -1); - AssertIntNE(idx1, idx2); - - res = TEST_RES_CHECK(1); + 0,NULL, NULL, NULL, NULL ); + ExpectIntNE(idx1, -1); + ExpectIntNE(idx2, -1); + ExpectIntNE(idx1, idx2); #endif /* HAVE_EX_DATA */ - return res; + return EXPECT_RESULT(); } #if defined(HAVE_EX_DATA) && defined(HAVE_EXT_CACHE) && \ @@ -63037,31 +56723,43 @@ static int test_wolfSSL_SESSION_get_ex_new_index_dup_cb(CRYPTO_EX_DATA* out, const CRYPTO_EX_DATA* in, void* inPtr, int idx, long argV, void* arg) { - AssertNotNull(out); - AssertNotNull(in); - AssertPtrEq(*(void**)inPtr, SESSION_NEW_IDX_VAL); - AssertPtrEq(CRYPTO_get_ex_data(in, idx), SESSION_NEW_IDX_VAL); - AssertPtrEq(CRYPTO_get_ex_data(out, idx), SESSION_NEW_IDX_VAL); - AssertIntEQ(argV, SESSION_NEW_IDX_LONG); - AssertStrEQ(arg, SESSION_NEW_IDX_PTR); + EXPECT_DECLS; + + ExpectNotNull(out); + ExpectNotNull(in); + ExpectPtrEq(*(void**)inPtr, SESSION_NEW_IDX_VAL); + ExpectPtrEq(CRYPTO_get_ex_data(in, idx), SESSION_NEW_IDX_VAL); + ExpectPtrEq(CRYPTO_get_ex_data(out, idx), SESSION_NEW_IDX_VAL); + ExpectIntEQ(argV, SESSION_NEW_IDX_LONG); + ExpectStrEQ(arg, SESSION_NEW_IDX_PTR); *(void**)inPtr = SESSION_DUP_IDX_VAL; - return SSL_SUCCESS; + if (EXPECT_SUCCESS()) { + return SSL_SUCCESS; + } + else { + return SSL_FAILURE; + } } static int test_wolfSSL_SESSION_get_ex_new_index_free_cb_called = 0; static void test_wolfSSL_SESSION_get_ex_new_index_free_cb(void* p, void* ptr, CRYPTO_EX_DATA* a, int idx, long argValue, void* arg) { - AssertNotNull(p); - AssertNull(ptr); - AssertPtrNE(CRYPTO_get_ex_data(a, idx), 0); - AssertIntEQ(argValue, SESSION_NEW_IDX_LONG); - AssertStrEQ(arg, SESSION_NEW_IDX_PTR); - test_wolfSSL_SESSION_get_ex_new_index_free_cb_called++; + EXPECT_DECLS; + + ExpectNotNull(p); + ExpectNull(ptr); + ExpectPtrNE(CRYPTO_get_ex_data(a, idx), 0); + ExpectIntEQ(argValue, SESSION_NEW_IDX_LONG); + ExpectStrEQ(arg, SESSION_NEW_IDX_PTR); + if (EXPECT_SUCCESS()) { + test_wolfSSL_SESSION_get_ex_new_index_free_cb_called++; + } } static int test_wolfSSL_SESSION_get_ex_new_index(void) { + EXPECT_DECLS; int idx = SSL_SESSION_get_ex_new_index(SESSION_NEW_IDX_LONG, (void*)SESSION_NEW_IDX_PTR, test_wolfSSL_SESSION_get_ex_new_index_new_cb, @@ -63070,18 +56768,18 @@ static int test_wolfSSL_SESSION_get_ex_new_index(void) SSL_SESSION* s = SSL_SESSION_new(); SSL_SESSION* d = NULL; - AssertNotNull(s); - AssertPtrEq(SSL_SESSION_get_ex_data(s, idx), SESSION_NEW_IDX_VAL); - AssertNotNull(d = SSL_SESSION_dup(s)); - AssertPtrEq(SSL_SESSION_get_ex_data(d, idx), SESSION_DUP_IDX_VAL); + ExpectNotNull(s); + ExpectPtrEq(SSL_SESSION_get_ex_data(s, idx), SESSION_NEW_IDX_VAL); + ExpectNotNull(d = SSL_SESSION_dup(s)); + ExpectPtrEq(SSL_SESSION_get_ex_data(d, idx), SESSION_DUP_IDX_VAL); SSL_SESSION_free(s); - AssertIntEQ(test_wolfSSL_SESSION_get_ex_new_index_free_cb_called, 1); + ExpectIntEQ(test_wolfSSL_SESSION_get_ex_new_index_free_cb_called, 1); SSL_SESSION_free(d); - AssertIntEQ(test_wolfSSL_SESSION_get_ex_new_index_free_cb_called, 2); + ExpectIntEQ(test_wolfSSL_SESSION_get_ex_new_index_free_cb_called, 2); crypto_ex_cb_free(crypto_ex_cb_ctx_session); crypto_ex_cb_ctx_session = NULL; - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #else static int test_wolfSSL_SESSION_get_ex_new_index(void) @@ -63092,55 +56790,51 @@ static int test_wolfSSL_SESSION_get_ex_new_index(void) static int test_wolfSSL_set_psk_use_session_callback(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) && !defined(NO_PSK) - SSL_CTX* ctx; - SSL* ssl; + SSL_CTX* ctx = NULL; + SSL* ssl = NULL; const char* testCertFile; const char* testKeyFile; - #ifdef WOLFSSL_TLS13 - #ifdef NO_WOLFSSL_SERVER - AssertNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method())); - #else - AssertNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_server_method())); - #endif -#ifndef NO_RSA - testCertFile = svrCertFile; - testKeyFile = svrKeyFile; -#elif defined(HAVE_ECC) - testCertFile = eccCertFile; - testKeyFile = eccKeyFile; -#else - testCertFile = NULL; - testKeyFile = NULL; -#endif - if (testCertFile != NULL && testKeyFile != NULL) { - AssertTrue(SSL_CTX_use_certificate_file(ctx, testCertFile, - SSL_FILETYPE_PEM)); - AssertTrue(SSL_CTX_use_PrivateKey_file(ctx, testKeyFile, - SSL_FILETYPE_PEM)); - } - - ssl = SSL_new(ctx); - AssertNotNull(ssl); - - SSL_set_psk_use_session_callback(ssl, - my_psk_use_session_cb); - AssertTrue(1); - - SSL_CTX_free(ctx); - SSL_free(ssl); +#ifdef WOLFSSL_TLS13 + #ifdef NO_WOLFSSL_SERVER + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method())); #else - (void)ctx; - (void)ssl; - (void)testCertFile; - (void)testKeyFile; + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfTLSv1_3_server_method())); + #endif +#else + #ifdef NO_WOLFSSL_SERVER + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())); + #else + ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())); #endif - - res = TEST_RES_CHECK(1); #endif - return res; +#ifndef NO_RSA + testCertFile = svrCertFile; + testKeyFile = svrKeyFile; +#elif defined(HAVE_ECC) + testCertFile = eccCertFile; + testKeyFile = eccKeyFile; +#else + testCertFile = NULL; + testKeyFile = NULL; +#endif + if ((testCertFile != NULL) && (testKeyFile != NULL)) { + ExpectTrue(SSL_CTX_use_certificate_file(ctx, testCertFile, + SSL_FILETYPE_PEM)); + ExpectTrue(SSL_CTX_use_PrivateKey_file(ctx, testKeyFile, + SSL_FILETYPE_PEM)); + } + + ExpectNotNull(ssl = SSL_new(ctx)); + + SSL_set_psk_use_session_callback(ssl, my_psk_use_session_cb); + + SSL_CTX_free(ctx); + SSL_free(ssl); +#endif + return EXPECT_RESULT(); } static int test_wolfSSL_ERR_strings(void) @@ -63671,12 +57365,13 @@ static int test_CryptoCb_Func(int thisDevId, wc_CryptoInfo* info, void* ctx) } /* tlsVer: WOLFSSL_TLSV1_2 or WOLFSSL_TLSV1_3 */ -static void test_wc_CryptoCb_TLS(int tlsVer, +static int test_wc_CryptoCb_TLS(int tlsVer, const char* cliCaPemFile, const char* cliCertPemFile, const char* cliPrivKeyPemFile, const char* cliPubKeyPemFile, const char* svrCaPemFile, const char* svrCertPemFile, const char* svrPrivKeyPemFile, const char* svrPubKeyPemFile) { + EXPECT_DECLS; callback_functions client_cbf; callback_functions server_cbf; @@ -63729,7 +57424,7 @@ static void test_wc_CryptoCb_TLS(int tlsVer, if (server_cbf.method == NULL) { /* not enabled */ - return; + return TEST_SUCCESS; } /* Setup the keys for the TLS test */ @@ -63753,28 +57448,32 @@ static void test_wc_CryptoCb_TLS(int tlsVer, /* First test is at WOLFSSL_CTX level */ test_wolfSSL_client_server(&client_cbf, &server_cbf); /* Check for success */ - AssertIntEQ(server_cbf.return_code, TEST_SUCCESS); - AssertIntEQ(client_cbf.return_code, TEST_SUCCESS); + ExpectIntEQ(server_cbf.return_code, TEST_SUCCESS); + ExpectIntEQ(client_cbf.return_code, TEST_SUCCESS); - /* Second test is a WOLFSSL object level */ - client_cbf.loadToSSL = 1; server_cbf.loadToSSL = 1; - test_wolfSSL_client_server(&client_cbf, &server_cbf); + if (EXPECT_SUCCESS()) { + /* Second test is a WOLFSSL object level */ + client_cbf.loadToSSL = 1; server_cbf.loadToSSL = 1; + test_wolfSSL_client_server(&client_cbf, &server_cbf); + } /* Check for success */ - AssertIntEQ(server_cbf.return_code, TEST_SUCCESS); - AssertIntEQ(client_cbf.return_code, TEST_SUCCESS); + ExpectIntEQ(server_cbf.return_code, TEST_SUCCESS); + ExpectIntEQ(client_cbf.return_code, TEST_SUCCESS); /* Un register the devId's */ wc_CryptoCb_UnRegisterDevice(client_cbf.devId); client_cbf.devId = INVALID_DEVID; wc_CryptoCb_UnRegisterDevice(server_cbf.devId); server_cbf.devId = INVALID_DEVID; + + return EXPECT_RESULT(); } #endif /* WOLF_CRYPTO_CB && HAVE_IO_TESTS_DEPENDENCIES */ static int test_wc_CryptoCb(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #ifdef WOLF_CRYPTO_CB /* TODO: Add crypto callback API tests */ @@ -63785,43 +57484,45 @@ static int test_wc_CryptoCb(void) #ifndef NO_RSA for (tlsVer = WOLFSSL_SSLV3; tlsVer <= WOLFSSL_DTLSV1; tlsVer++) { - test_wc_CryptoCb_TLS(tlsVer, + ExpectIntEQ(test_wc_CryptoCb_TLS(tlsVer, svrCertFile, cliCertFile, cliKeyFile, cliKeyPubFile, - cliCertFile, svrCertFile, svrKeyFile, svrKeyPubFile); + cliCertFile, svrCertFile, svrKeyFile, svrKeyPubFile), + TEST_SUCCESS); } #endif #ifdef HAVE_ECC for (tlsVer = WOLFSSL_TLSV1; tlsVer <= WOLFSSL_DTLSV1; tlsVer++) { - test_wc_CryptoCb_TLS(tlsVer, + ExpectIntEQ(test_wc_CryptoCb_TLS(tlsVer, caEccCertFile, cliEccCertFile, cliEccKeyFile, cliEccKeyPubFile, - cliEccCertFile, eccCertFile, eccKeyFile, eccKeyPubFile); + cliEccCertFile, eccCertFile, eccKeyFile, eccKeyPubFile), + TEST_SUCCESS); } #endif #ifdef HAVE_ED25519 for (tlsVer = WOLFSSL_TLSV1_2; tlsVer <= WOLFSSL_DTLSV1_2; tlsVer++) { if (tlsVer == WOLFSSL_DTLSV1) continue; - test_wc_CryptoCb_TLS(tlsVer, + ExpectIntEQ(test_wc_CryptoCb_TLS(tlsVer, caEdCertFile, cliEdCertFile, cliEdKeyFile, cliEdKeyPubFile, - cliEdCertFile, edCertFile, edKeyFile, edKeyPubFile); + cliEdCertFile, edCertFile, edKeyFile, edKeyPubFile), + TEST_SUCCESS); } #endif #endif /* HAVE_IO_TESTS_DEPENDENCIES */ - - res = TEST_RES_CHECK(1); #endif /* WOLF_CRYPTO_CB */ - return res; + return EXPECT_RESULT(); } #if defined(WOLFSSL_STATIC_MEMORY) && defined(HAVE_IO_TESTS_DEPENDENCIES) /* tlsVer: Example: WOLFSSL_TLSV1_2 or WOLFSSL_TLSV1_3 */ -static void test_wolfSSL_CTX_StaticMemory_TLS(int tlsVer, +static int test_wolfSSL_CTX_StaticMemory_TLS(int tlsVer, const char* cliCaPemFile, const char* cliCertPemFile, const char* cliPrivKeyPemFile, const char* svrCaPemFile, const char* svrCertPemFile, const char* svrPrivKeyPemFile, byte* cliMem, word32 cliMemSz, byte* svrMem, word32 svrMemSz) { + EXPECT_DECLS; callback_functions client_cbf; callback_functions server_cbf; @@ -63874,7 +57575,7 @@ static void test_wolfSSL_CTX_StaticMemory_TLS(int tlsVer, if (server_cbf.method_ex == NULL) { /* not enabled */ - return; + return TEST_SUCCESS; } /* Setup the keys for the TLS test */ @@ -63898,16 +57599,20 @@ static void test_wolfSSL_CTX_StaticMemory_TLS(int tlsVer, /* First test is at WOLFSSL_CTX level */ test_wolfSSL_client_server(&client_cbf, &server_cbf); /* Check for success */ - AssertIntEQ(server_cbf.return_code, TEST_SUCCESS); - AssertIntEQ(client_cbf.return_code, TEST_SUCCESS); + ExpectIntEQ(server_cbf.return_code, TEST_SUCCESS); + ExpectIntEQ(client_cbf.return_code, TEST_SUCCESS); - /* Second test is a WOLFSSL object level */ - client_cbf.loadToSSL = 1; server_cbf.loadToSSL = 1; - test_wolfSSL_client_server(&client_cbf, &server_cbf); + if (EXPECT_SUCCESS()) { + /* Second test is a WOLFSSL object level */ + client_cbf.loadToSSL = 1; server_cbf.loadToSSL = 1; + test_wolfSSL_client_server(&client_cbf, &server_cbf); + } /* Check for success */ - AssertIntEQ(server_cbf.return_code, TEST_SUCCESS); - AssertIntEQ(client_cbf.return_code, TEST_SUCCESS); + ExpectIntEQ(server_cbf.return_code, TEST_SUCCESS); + ExpectIntEQ(client_cbf.return_code, TEST_SUCCESS); + + return EXPECT_RESULT(); } #endif /* WOLFSSL_STATIC_MEMORY && HAVE_IO_TESTS_DEPENDENCIES */ @@ -63925,21 +57630,22 @@ static void test_wolfSSL_CTX_StaticMemory_TLS(int tlsVer, static int test_wolfSSL_CTX_StaticMemory_SSL(WOLFSSL_CTX* ctx) { + EXPECT_DECLS; WOLFSSL *ssl1 = NULL, *ssl2 = NULL, *ssl3 = NULL; WOLFSSL_MEM_STATS mem_stats; WOLFSSL_MEM_CONN_STATS ssl_stats; #if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) && !defined(NO_RSA) - AssertIntEQ(wolfSSL_CTX_use_certificate_file(ctx, svrCertFile, + ExpectIntEQ(wolfSSL_CTX_use_certificate_file(ctx, svrCertFile, WOLFSSL_FILETYPE_PEM), WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_CTX_use_PrivateKey_file(ctx, svrKeyFile, + ExpectIntEQ(wolfSSL_CTX_use_PrivateKey_file(ctx, svrKeyFile, WOLFSSL_FILETYPE_PEM), WOLFSSL_SUCCESS); #endif - AssertNotNull((ssl1 = wolfSSL_new(ctx))); - AssertNotNull((ssl2 = wolfSSL_new(ctx))); + ExpectNotNull((ssl1 = wolfSSL_new(ctx))); + ExpectNotNull((ssl2 = wolfSSL_new(ctx))); /* this should fail because kMaxCtxClients == 2 */ - AssertNull((ssl3 = wolfSSL_new(ctx))); + ExpectNull((ssl3 = wolfSSL_new(ctx))); if (wolfSSL_is_static_memory(ssl1, &ssl_stats) == 1) { #ifdef DEBUG_WOLFSSL @@ -63959,13 +57665,13 @@ static int test_wolfSSL_CTX_StaticMemory_SSL(WOLFSSL_CTX* ctx) wolfSSL_free(ssl1); wolfSSL_free(ssl2); - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #endif /* WOLFSSL_STATIC_MEMORY && !WOLFCRYPT_ONLY */ static int test_wolfSSL_CTX_StaticMemory(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(WOLFSSL_STATIC_MEMORY) && !defined(WOLFCRYPT_ONLY) wolfSSL_method_func method_func; WOLFSSL_CTX* ctx; @@ -63994,60 +57700,59 @@ static int test_wolfSSL_CTX_StaticMemory(void) /* Test creating CTX directly from static memory pool */ ctx = NULL; - AssertIntEQ(wolfSSL_CTX_load_static_memory( - &ctx, method_func, svrMem, sizeof(svrMem), - 0, kMaxCtxClients), WOLFSSL_SUCCESS); - test_wolfSSL_CTX_StaticMemory_SSL(ctx); + ExpectIntEQ(wolfSSL_CTX_load_static_memory(&ctx, method_func, svrMem, + sizeof(svrMem), 0, kMaxCtxClients), WOLFSSL_SUCCESS); + ExpectIntEQ(test_wolfSSL_CTX_StaticMemory_SSL(ctx), TEST_SUCCESS); wolfSSL_CTX_free(ctx); ctx = NULL; /* Test for heap allocated CTX, then assigning static pool to it */ - AssertNotNull(ctx = wolfSSL_CTX_new(method_func(NULL))); - AssertIntEQ(wolfSSL_CTX_load_static_memory(&ctx, - NULL, svrMem, sizeof(svrMem), - 0, kMaxCtxClients), WOLFSSL_SUCCESS); - test_wolfSSL_CTX_StaticMemory_SSL(ctx); + ExpectNotNull(ctx = wolfSSL_CTX_new(method_func(NULL))); + ExpectIntEQ(wolfSSL_CTX_load_static_memory(&ctx, NULL, svrMem, + sizeof(svrMem), 0, kMaxCtxClients), WOLFSSL_SUCCESS); + ExpectIntEQ(test_wolfSSL_CTX_StaticMemory_SSL(ctx), TEST_SUCCESS); wolfSSL_CTX_free(ctx); /* TLS Level Tests using static memory */ #ifdef HAVE_IO_TESTS_DEPENDENCIES #ifndef NO_RSA for (tlsVer = WOLFSSL_SSLV3; tlsVer <= WOLFSSL_DTLSV1; tlsVer++) { - test_wolfSSL_CTX_StaticMemory_TLS(tlsVer, + ExpectIntEQ(test_wolfSSL_CTX_StaticMemory_TLS(tlsVer, svrCertFile, cliCertFile, cliKeyFile, cliCertFile, svrCertFile, svrKeyFile, - cliMem, (word32)sizeof(cliMem), svrMem, (word32)sizeof(svrMem)); + cliMem, (word32)sizeof(cliMem), svrMem, (word32)sizeof(svrMem)), + TEST_SUCCESS); } #endif #ifdef HAVE_ECC for (tlsVer = WOLFSSL_TLSV1; tlsVer <= WOLFSSL_DTLSV1; tlsVer++) { - test_wolfSSL_CTX_StaticMemory_TLS(tlsVer, + ExpectIntEQ(test_wolfSSL_CTX_StaticMemory_TLS(tlsVer, caEccCertFile, cliEccCertFile, cliEccKeyFile, cliEccCertFile, eccCertFile, eccKeyFile, - cliMem, (word32)sizeof(cliMem), svrMem, (word32)sizeof(svrMem)); + cliMem, (word32)sizeof(cliMem), svrMem, (word32)sizeof(svrMem)), + TEST_SUCCESS); } #endif #ifdef HAVE_ED25519 for (tlsVer = WOLFSSL_TLSV1_2; tlsVer <= WOLFSSL_DTLSV1_2; tlsVer++) { if (tlsVer == WOLFSSL_DTLSV1) continue; - test_wolfSSL_CTX_StaticMemory_TLS(tlsVer, + ExpectIntEQ(test_wolfSSL_CTX_StaticMemory_TLS(tlsVer, caEdCertFile, cliEdCertFile, cliEdKeyFile, cliEdCertFile, edCertFile, edKeyFile, - cliMem, (word32)sizeof(cliMem), svrMem, (word32)sizeof(svrMem)); + cliMem, (word32)sizeof(cliMem), svrMem, (word32)sizeof(svrMem)), + TEST_SUCCESS); } #endif #endif /* HAVE_IO_TESTS_DEPENDENCIES */ - - res = TEST_RES_CHECK(1); #endif /* WOLFSSL_STATIC_MEMORY && !WOLFCRYPT_ONLY */ - return res; + return EXPECT_RESULT(); } static int test_openssl_FIPS_drbg(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_EXTRA) && !defined(WC_NO_RNG) && defined(HAVE_HASHDRBG) - DRBG_CTX* dctx; + DRBG_CTX* dctx = NULL; byte data1[32], data2[32], zeroData[32]; byte testSeed[16]; size_t dlen = sizeof(data1); @@ -64056,52 +57761,48 @@ static int test_openssl_FIPS_drbg(void) XMEMSET(data1, 0, dlen); XMEMSET(data2, 0, dlen); XMEMSET(zeroData, 0, sizeof(zeroData)); - for (i=0; i<(int)sizeof(testSeed); i++) { + for (i = 0; i < (int)sizeof(testSeed); i++) { testSeed[i] = (byte)i; } - AssertNotNull(dctx = FIPS_get_default_drbg()); - AssertIntEQ(FIPS_drbg_init(dctx, 0, 0), WOLFSSL_SUCCESS); - AssertIntEQ(FIPS_drbg_set_callbacks(dctx, NULL, NULL, 20, NULL, NULL), + ExpectNotNull(dctx = FIPS_get_default_drbg()); + ExpectIntEQ(FIPS_drbg_init(dctx, 0, 0), WOLFSSL_SUCCESS); + ExpectIntEQ(FIPS_drbg_set_callbacks(dctx, NULL, NULL, 20, NULL, NULL), WOLFSSL_SUCCESS); - AssertIntEQ(FIPS_drbg_instantiate(dctx, NULL, 0), WOLFSSL_SUCCESS); - AssertIntEQ(FIPS_drbg_generate(dctx, data1, dlen, 0, NULL, 0), + ExpectIntEQ(FIPS_drbg_instantiate(dctx, NULL, 0), WOLFSSL_SUCCESS); + ExpectIntEQ(FIPS_drbg_generate(dctx, data1, dlen, 0, NULL, 0), WOLFSSL_SUCCESS); - AssertIntNE(XMEMCMP(data1, zeroData, dlen), 0); - AssertIntEQ(FIPS_drbg_reseed(dctx, testSeed, sizeof(testSeed)), + ExpectIntNE(XMEMCMP(data1, zeroData, dlen), 0); + ExpectIntEQ(FIPS_drbg_reseed(dctx, testSeed, sizeof(testSeed)), WOLFSSL_SUCCESS); - AssertIntEQ(FIPS_drbg_generate(dctx, data2, dlen, 0, NULL, 0), + ExpectIntEQ(FIPS_drbg_generate(dctx, data2, dlen, 0, NULL, 0), WOLFSSL_SUCCESS); - AssertIntNE(XMEMCMP(data1, zeroData, dlen), 0); - AssertIntNE(XMEMCMP(data1, data2, dlen), 0); - AssertIntEQ(FIPS_drbg_uninstantiate(dctx), WOLFSSL_SUCCESS); + ExpectIntNE(XMEMCMP(data1, zeroData, dlen), 0); + ExpectIntNE(XMEMCMP(data1, data2, dlen), 0); + ExpectIntEQ(FIPS_drbg_uninstantiate(dctx), WOLFSSL_SUCCESS); #ifndef HAVE_GLOBAL_RNG /* gets freed by wolfSSL_Cleanup() when HAVE_GLOBAL_RNG defined */ wolfSSL_FIPS_drbg_free(dctx); #endif - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } static int test_wolfSSL_FIPS_mode(void) { - int res = TEST_SKIPPED; + EXPECT_DECLS; #if defined(OPENSSL_ALL) #ifdef HAVE_FIPS - AssertIntEQ(wolfSSL_FIPS_mode(), 1); - AssertIntEQ(wolfSSL_FIPS_mode_set(0), WOLFSSL_FAILURE); - AssertIntEQ(wolfSSL_FIPS_mode_set(1), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_FIPS_mode(), 1); + ExpectIntEQ(wolfSSL_FIPS_mode_set(0), WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_FIPS_mode_set(1), WOLFSSL_SUCCESS); #else - AssertIntEQ(wolfSSL_FIPS_mode(), 0); - AssertIntEQ(wolfSSL_FIPS_mode_set(0), WOLFSSL_SUCCESS); - AssertIntEQ(wolfSSL_FIPS_mode_set(1), WOLFSSL_FAILURE); + ExpectIntEQ(wolfSSL_FIPS_mode(), 0); + ExpectIntEQ(wolfSSL_FIPS_mode_set(0), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_FIPS_mode_set(1), WOLFSSL_FAILURE); #endif - - res = TEST_RES_CHECK(1); #endif - return res; + return EXPECT_RESULT(); } #ifdef WOLFSSL_DTLS @@ -64141,16 +57842,17 @@ static void DUW_TEST_print_window_binary(word32 h, word32 l, word32* w) { * i - expected window[0] */ #define DUW_TEST(a,b,c,d,e,f,g,h,i) do { \ - wolfSSL_DtlsUpdateWindow((a), (b), &(c), &(d), (e)); \ + ExpectIntEQ(wolfSSL_DtlsUpdateWindow((a), (b), &(c), &(d), (e)), 1); \ DUW_TEST_print_window_binary((a), (b), (e)); \ - AssertIntEQ((c), (f)); \ - AssertIntEQ((d), (g)); \ - AssertIntEQ((e)[1], (h)); \ - AssertIntEQ((e)[0], (i)); \ + ExpectIntEQ((c), (f)); \ + ExpectIntEQ((d), (g)); \ + ExpectIntEQ((e)[1], (h)); \ + ExpectIntEQ((e)[0], (i)); \ } while (0) static int test_wolfSSL_DtlsUpdateWindow(void) { + EXPECT_DECLS; word32 window[WOLFSSL_DTLS_WINDOW_WORDS]; word32 next_lo = 0; word16 next_hi = 0; @@ -64193,7 +57895,7 @@ static int test_wolfSSL_DtlsUpdateWindow(void) DUW_TEST(150, 0xFFFFFFFF, next_hi, next_lo, window, 151, 0, 0, 0x01); DUW_TEST(152, 0xFFFFFFFF, next_hi, next_lo, window, 153, 0, 0, 0x01); - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #endif /* WOLFSSL_DTLS */ @@ -64249,80 +57951,76 @@ static int DFB_TEST(WOLFSSL* ssl, word32 seq, word32 len, word32 f_offset, return 0; } -static void DFB_TEST_RESET(WOLFSSL* ssl) -{ - DtlsMsgListDelete(ssl->dtls_rx_msg_list, ssl->heap); - ssl->dtls_rx_msg_list = NULL; - ssl->dtls_rx_msg_list_sz = 0; -} - static int test_wolfSSL_DTLS_fragment_buckets(void) { + EXPECT_DECLS; WOLFSSL ssl[1]; XMEMSET(ssl, 0, sizeof(*ssl)); - AssertIntEQ(DFB_TEST(ssl, 0, 100, 0, 100, 0, 1, 100), 0); /* 0-100 */ + ExpectIntEQ(DFB_TEST(ssl, 0, 100, 0, 100, 0, 1, 100), 0); /* 0-100 */ - AssertIntEQ(DFB_TEST(ssl, 1, 100, 0, 20, 1, 0, 20), 0); /* 0-20 */ - AssertIntEQ(DFB_TEST(ssl, 1, 100, 20, 20, 1, 0, 40), 0); /* 20-40 */ - AssertIntEQ(DFB_TEST(ssl, 1, 100, 40, 20, 1, 0, 60), 0); /* 40-60 */ - AssertIntEQ(DFB_TEST(ssl, 1, 100, 60, 20, 1, 0, 80), 0); /* 60-80 */ - AssertIntEQ(DFB_TEST(ssl, 1, 100, 80, 20, 0, 1, 100), 0); /* 80-100 */ + ExpectIntEQ(DFB_TEST(ssl, 1, 100, 0, 20, 1, 0, 20), 0); /* 0-20 */ + ExpectIntEQ(DFB_TEST(ssl, 1, 100, 20, 20, 1, 0, 40), 0); /* 20-40 */ + ExpectIntEQ(DFB_TEST(ssl, 1, 100, 40, 20, 1, 0, 60), 0); /* 40-60 */ + ExpectIntEQ(DFB_TEST(ssl, 1, 100, 60, 20, 1, 0, 80), 0); /* 60-80 */ + ExpectIntEQ(DFB_TEST(ssl, 1, 100, 80, 20, 0, 1, 100), 0); /* 80-100 */ /* Test all permutations of 3 regions */ /* 1 2 3 */ - AssertIntEQ(DFB_TEST(ssl, 2, 100, 0, 30, 1, 0, 30), 0); /* 0-30 */ - AssertIntEQ(DFB_TEST(ssl, 2, 100, 30, 30, 1, 0, 60), 0); /* 30-60 */ - AssertIntEQ(DFB_TEST(ssl, 2, 100, 60, 40, 0, 1, 100), 0); /* 60-100 */ + ExpectIntEQ(DFB_TEST(ssl, 2, 100, 0, 30, 1, 0, 30), 0); /* 0-30 */ + ExpectIntEQ(DFB_TEST(ssl, 2, 100, 30, 30, 1, 0, 60), 0); /* 30-60 */ + ExpectIntEQ(DFB_TEST(ssl, 2, 100, 60, 40, 0, 1, 100), 0); /* 60-100 */ /* 1 3 2 */ - AssertIntEQ(DFB_TEST(ssl, 3, 100, 0, 30, 1, 0, 30), 0); /* 0-30 */ - AssertIntEQ(DFB_TEST(ssl, 3, 100, 60, 40, 2, 0, 70), 0); /* 60-100 */ - AssertIntEQ(DFB_TEST(ssl, 3, 100, 30, 30, 0, 1, 100), 0); /* 30-60 */ + ExpectIntEQ(DFB_TEST(ssl, 3, 100, 0, 30, 1, 0, 30), 0); /* 0-30 */ + ExpectIntEQ(DFB_TEST(ssl, 3, 100, 60, 40, 2, 0, 70), 0); /* 60-100 */ + ExpectIntEQ(DFB_TEST(ssl, 3, 100, 30, 30, 0, 1, 100), 0); /* 30-60 */ /* 2 1 3 */ - AssertIntEQ(DFB_TEST(ssl, 4, 100, 30, 30, 1, 0, 30), 0); /* 30-60 */ - AssertIntEQ(DFB_TEST(ssl, 4, 100, 0, 30, 1, 0, 60), 0); /* 0-30 */ - AssertIntEQ(DFB_TEST(ssl, 4, 100, 60, 40, 0, 1, 100), 0); /* 60-100 */ + ExpectIntEQ(DFB_TEST(ssl, 4, 100, 30, 30, 1, 0, 30), 0); /* 30-60 */ + ExpectIntEQ(DFB_TEST(ssl, 4, 100, 0, 30, 1, 0, 60), 0); /* 0-30 */ + ExpectIntEQ(DFB_TEST(ssl, 4, 100, 60, 40, 0, 1, 100), 0); /* 60-100 */ /* 2 3 1 */ - AssertIntEQ(DFB_TEST(ssl, 5, 100, 30, 30, 1, 0, 30), 0); /* 30-60 */ - AssertIntEQ(DFB_TEST(ssl, 5, 100, 60, 40, 1, 0, 70), 0); /* 60-100 */ - AssertIntEQ(DFB_TEST(ssl, 5, 100, 0, 30, 0, 1, 100), 0); /* 0-30 */ + ExpectIntEQ(DFB_TEST(ssl, 5, 100, 30, 30, 1, 0, 30), 0); /* 30-60 */ + ExpectIntEQ(DFB_TEST(ssl, 5, 100, 60, 40, 1, 0, 70), 0); /* 60-100 */ + ExpectIntEQ(DFB_TEST(ssl, 5, 100, 0, 30, 0, 1, 100), 0); /* 0-30 */ /* 3 1 2 */ - AssertIntEQ(DFB_TEST(ssl, 6, 100, 60, 40, 1, 0, 40), 0); /* 60-100 */ - AssertIntEQ(DFB_TEST(ssl, 6, 100, 0, 30, 2, 0, 70), 0); /* 0-30 */ - AssertIntEQ(DFB_TEST(ssl, 6, 100, 30, 30, 0, 1, 100), 0); /* 30-60 */ + ExpectIntEQ(DFB_TEST(ssl, 6, 100, 60, 40, 1, 0, 40), 0); /* 60-100 */ + ExpectIntEQ(DFB_TEST(ssl, 6, 100, 0, 30, 2, 0, 70), 0); /* 0-30 */ + ExpectIntEQ(DFB_TEST(ssl, 6, 100, 30, 30, 0, 1, 100), 0); /* 30-60 */ /* 3 2 1 */ - AssertIntEQ(DFB_TEST(ssl, 7, 100, 60, 40, 1, 0, 40), 0); /* 60-100 */ - AssertIntEQ(DFB_TEST(ssl, 7, 100, 30, 30, 1, 0, 70), 0); /* 30-60 */ - AssertIntEQ(DFB_TEST(ssl, 7, 100, 0, 30, 0, 1, 100), 0); /* 0-30 */ + ExpectIntEQ(DFB_TEST(ssl, 7, 100, 60, 40, 1, 0, 40), 0); /* 60-100 */ + ExpectIntEQ(DFB_TEST(ssl, 7, 100, 30, 30, 1, 0, 70), 0); /* 30-60 */ + ExpectIntEQ(DFB_TEST(ssl, 7, 100, 0, 30, 0, 1, 100), 0); /* 0-30 */ /* Test overlapping regions */ - AssertIntEQ(DFB_TEST(ssl, 8, 100, 0, 30, 1, 0, 30), 0); /* 0-30 */ - AssertIntEQ(DFB_TEST(ssl, 8, 100, 20, 10, 1, 0, 30), 0); /* 20-30 */ - AssertIntEQ(DFB_TEST(ssl, 8, 100, 70, 10, 2, 0, 40), 0); /* 70-80 */ - AssertIntEQ(DFB_TEST(ssl, 8, 100, 20, 30, 2, 0, 60), 0); /* 20-50 */ - AssertIntEQ(DFB_TEST(ssl, 8, 100, 40, 60, 0, 1, 100), 0); /* 40-100 */ + ExpectIntEQ(DFB_TEST(ssl, 8, 100, 0, 30, 1, 0, 30), 0); /* 0-30 */ + ExpectIntEQ(DFB_TEST(ssl, 8, 100, 20, 10, 1, 0, 30), 0); /* 20-30 */ + ExpectIntEQ(DFB_TEST(ssl, 8, 100, 70, 10, 2, 0, 40), 0); /* 70-80 */ + ExpectIntEQ(DFB_TEST(ssl, 8, 100, 20, 30, 2, 0, 60), 0); /* 20-50 */ + ExpectIntEQ(DFB_TEST(ssl, 8, 100, 40, 60, 0, 1, 100), 0); /* 40-100 */ /* Test overlapping multiple regions */ - AssertIntEQ(DFB_TEST(ssl, 9, 100, 0, 20, 1, 0, 20), 0); /* 0-20 */ - AssertIntEQ(DFB_TEST(ssl, 9, 100, 30, 5, 2, 0, 25), 0); /* 30-35 */ - AssertIntEQ(DFB_TEST(ssl, 9, 100, 40, 5, 3, 0, 30), 0); /* 40-45 */ - AssertIntEQ(DFB_TEST(ssl, 9, 100, 50, 5, 4, 0, 35), 0); /* 50-55 */ - AssertIntEQ(DFB_TEST(ssl, 9, 100, 60, 5, 5, 0, 40), 0); /* 60-65 */ - AssertIntEQ(DFB_TEST(ssl, 9, 100, 70, 5, 6, 0, 45), 0); /* 70-75 */ - AssertIntEQ(DFB_TEST(ssl, 9, 100, 30, 25, 4, 0, 55), 0); /* 30-55 */ - AssertIntEQ(DFB_TEST(ssl, 9, 100, 55, 15, 2, 0, 65), 0); /* 55-70 */ - AssertIntEQ(DFB_TEST(ssl, 9, 100, 75, 25, 2, 0, 90), 0); /* 75-100 */ - AssertIntEQ(DFB_TEST(ssl, 9, 100, 10, 25, 0, 1, 100), 0); /* 10-35 */ + ExpectIntEQ(DFB_TEST(ssl, 9, 100, 0, 20, 1, 0, 20), 0); /* 0-20 */ + ExpectIntEQ(DFB_TEST(ssl, 9, 100, 30, 5, 2, 0, 25), 0); /* 30-35 */ + ExpectIntEQ(DFB_TEST(ssl, 9, 100, 40, 5, 3, 0, 30), 0); /* 40-45 */ + ExpectIntEQ(DFB_TEST(ssl, 9, 100, 50, 5, 4, 0, 35), 0); /* 50-55 */ + ExpectIntEQ(DFB_TEST(ssl, 9, 100, 60, 5, 5, 0, 40), 0); /* 60-65 */ + ExpectIntEQ(DFB_TEST(ssl, 9, 100, 70, 5, 6, 0, 45), 0); /* 70-75 */ + ExpectIntEQ(DFB_TEST(ssl, 9, 100, 30, 25, 4, 0, 55), 0); /* 30-55 */ + ExpectIntEQ(DFB_TEST(ssl, 9, 100, 55, 15, 2, 0, 65), 0); /* 55-70 */ + ExpectIntEQ(DFB_TEST(ssl, 9, 100, 75, 25, 2, 0, 90), 0); /* 75-100 */ + ExpectIntEQ(DFB_TEST(ssl, 9, 100, 10, 25, 0, 1, 100), 0); /* 10-35 */ - AssertIntEQ(DFB_TEST(ssl, 10, 100, 0, 20, 1, 0, 20), 0); /* 0-20 */ - AssertIntEQ(DFB_TEST(ssl, 10, 100, 30, 20, 2, 0, 40), 0); /* 30-50 */ - AssertIntEQ(DFB_TEST(ssl, 10, 100, 0, 40, 1, 0, 50), 0); /* 0-40 */ - AssertIntEQ(DFB_TEST(ssl, 10, 100, 50, 50, 0, 1, 100), 0); /* 10-35 */ + ExpectIntEQ(DFB_TEST(ssl, 10, 100, 0, 20, 1, 0, 20), 0); /* 0-20 */ + ExpectIntEQ(DFB_TEST(ssl, 10, 100, 30, 20, 2, 0, 40), 0); /* 30-50 */ + ExpectIntEQ(DFB_TEST(ssl, 10, 100, 0, 40, 1, 0, 50), 0); /* 0-40 */ + ExpectIntEQ(DFB_TEST(ssl, 10, 100, 50, 50, 0, 1, 100), 0); /* 10-35 */ - DFB_TEST_RESET(ssl); + DtlsMsgListDelete(ssl->dtls_rx_msg_list, ssl->heap); + ssl->dtls_rx_msg_list = NULL; + ssl->dtls_rx_msg_list_sz = 0; - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #endif @@ -64335,89 +58033,79 @@ static int test_wolfSSL_DTLS_fragment_buckets(void) static int test_wolfSSL_dtls_stateless2(void) { - WOLFSSL *ssl_c = NULL, *ssl_c2 = NULL, *ssl_s = NULL; + EXPECT_DECLS; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_c2 = NULL; + WOLFSSL *ssl_s = NULL; struct test_memio_ctx test_ctx; - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - int ret; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfDTLSv1_2_client_method, wolfDTLSv1_2_server_method); - if (ret != 0) - return -1; - ssl_c2 = wolfSSL_new(ctx_c); - if (ssl_c2 == NULL) - return -2; + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, + wolfDTLSv1_2_client_method, wolfDTLSv1_2_server_method), 0); + ExpectNotNull(ssl_c2 = wolfSSL_new(ctx_c)); wolfSSL_SetIOWriteCtx(ssl_c2, &test_ctx); wolfSSL_SetIOReadCtx(ssl_c2, &test_ctx); /* send CH */ - ret = wolfSSL_connect(ssl_c2); - if (ret == 0 || ssl_c2->error != WANT_READ) - return -3; - ret = wolfSSL_accept(ssl_s); - if (ret == 0 || ssl_s->error != WANT_READ) - return -4; - if (test_ctx.c_len == 0) - return -5; + ExpectTrue((wolfSSL_connect(ssl_c2) == WOLFSSL_FATAL_ERROR) && + (ssl_c2->error == WANT_READ)); + ExpectTrue((wolfSSL_accept(ssl_s) == WOLFSSL_FATAL_ERROR) && + (ssl_s->error == WANT_READ)); + ExpectIntNE(test_ctx.c_len, 0); /* consume HRR */ test_ctx.c_len = 0; - ret = test_memio_do_handshake(ssl_c, ssl_s, 10, NULL); - if (ret != 0) - return -6; + ExpectIntEQ(test_memio_do_handshake(ssl_c, ssl_s, 10, NULL), 0); + wolfSSL_free(ssl_c2); wolfSSL_free(ssl_c); wolfSSL_free(ssl_s); wolfSSL_CTX_free(ctx_c); wolfSSL_CTX_free(ctx_s); - return TEST_SUCCESS; + return EXPECT_RESULT(); } #ifdef HAVE_MAX_FRAGMENT static int test_wolfSSL_dtls_stateless_maxfrag(void) { - WOLFSSL *ssl_c = NULL, *ssl_c2 = NULL, *ssl_s = NULL; + EXPECT_DECLS; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_c2 = NULL; + WOLFSSL *ssl_s = NULL; struct test_memio_ctx test_ctx; - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - word16 max_fragment; - int ret; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; + word16 max_fragment = 0; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfDTLSv1_2_client_method, wolfDTLSv1_2_server_method); - if (ret != 0) - return -1; - ssl_c2 = wolfSSL_new(ctx_c); - if (ssl_c2 == NULL) - return -2; - ret = wolfSSL_UseMaxFragment(ssl_c2, WOLFSSL_MFL_2_8); - if (ret != WOLFSSL_SUCCESS) - return -3; + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, + wolfDTLSv1_2_client_method, wolfDTLSv1_2_server_method), 0); + ExpectNotNull(ssl_c2 = wolfSSL_new(ctx_c)); + ExpectIntEQ(wolfSSL_UseMaxFragment(ssl_c2, WOLFSSL_MFL_2_8), + WOLFSSL_SUCCESS); wolfSSL_SetIOWriteCtx(ssl_c2, &test_ctx); wolfSSL_SetIOReadCtx(ssl_c2, &test_ctx); - max_fragment = ssl_s->max_fragment; - /* send CH */ - ret = wolfSSL_connect(ssl_c2); - if (ret == 0 || ssl_c2->error != WANT_READ) - return -4; - ret = wolfSSL_accept(ssl_s); - if (ret == 0 || ssl_s->error != WANT_READ) - return -5; + if (ssl_s != NULL) { + max_fragment = ssl_s->max_fragment; + } + /* send CH */ + ExpectTrue((wolfSSL_connect(ssl_c2) == WOLFSSL_FATAL_ERROR) && + (ssl_c2->error == WANT_READ)); + ExpectTrue((wolfSSL_accept(ssl_s) == WOLFSSL_FATAL_ERROR) && + (ssl_s->error == WANT_READ)); /* CH without cookie shouldn't change state */ - if (ssl_s->max_fragment != max_fragment) - return -6; - if (test_ctx.c_len == 0) - return -7; + ExpectIntEQ(ssl_s->max_fragment, max_fragment); + ExpectIntNE(test_ctx.c_len, 0); /* consume HRR from buffer */ test_ctx.c_len = 0; - ret = test_memio_do_handshake(ssl_c, ssl_s, 10, NULL); - if (ret != 0) - return -8; + ExpectIntEQ(test_memio_do_handshake(ssl_c, ssl_s, 10, NULL), 0); + wolfSSL_free(ssl_c2); wolfSSL_free(ssl_c); wolfSSL_free(ssl_s); wolfSSL_CTX_free(ctx_c); wolfSSL_CTX_free(ctx_s); - return TEST_SUCCESS; + return EXPECT_RESULT(); } #endif /* HAVE_MAX_FRAGMENT */ @@ -64434,146 +58122,122 @@ static int buf_is_hvr(const byte *data, int len) static int _test_wolfSSL_dtls_stateless_resume(byte useticket, byte bad) { + EXPECT_DECLS; struct test_memio_ctx test_ctx; - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - WOLFSSL *ssl_c = NULL, *ssl_s = NULL; - WOLFSSL_SESSION *sess; - int ret, round_trips; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_s = NULL; + WOLFSSL_SESSION *sess = NULL; + int round_trips; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfDTLSv1_2_client_method, wolfDTLSv1_2_server_method); - if (ret != 0) - return -1; + + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, + &ssl_s, wolfDTLSv1_2_client_method, wolfDTLSv1_2_server_method), 0); #ifdef HAVE_SESSION_TICKET if (useticket) { - ret = wolfSSL_UseSessionTicket(ssl_c); - if (ret != WOLFSSL_SUCCESS) - return -2; + ExpectIntEQ(wolfSSL_UseSessionTicket(ssl_c), WOLFSSL_SUCCESS); } #endif round_trips = ROUNDS_WITH_HVR; - ret = test_memio_do_handshake(ssl_c, ssl_s, round_trips, &round_trips); - if (ret != 0) - return -3; - if (round_trips != ROUNDS_WITH_HVR) - return -4; - sess = wolfSSL_get1_session(ssl_c); - if (sess == NULL) - return -5; + ExpectIntEQ(test_memio_do_handshake(ssl_c, ssl_s, round_trips, + &round_trips), 0); + ExpectIntEQ(round_trips, ROUNDS_WITH_HVR); + ExpectNotNull(sess = wolfSSL_get1_session(ssl_c)); wolfSSL_shutdown(ssl_c); wolfSSL_shutdown(ssl_s); wolfSSL_free(ssl_c); + ssl_c = NULL; wolfSSL_free(ssl_s); + ssl_s = NULL; + test_ctx.c_len = test_ctx.s_len = 0; /* make resumption invalid */ - if (bad) { + if (bad && (sess != NULL)) { if (useticket) { #ifdef HAVE_SESSION_TICKET - sess->ticket[0] = !sess->ticket[0]; + if (sess->ticket != NULL) { + sess->ticket[0] = !sess->ticket[0]; + } #endif /* HAVE_SESSION_TICKET */ } else { sess->sessionID[0] = !sess->sessionID[0]; } } - ssl_c = wolfSSL_new(ctx_c); - ssl_s = wolfSSL_new(ctx_s); + ExpectNotNull(ssl_c = wolfSSL_new(ctx_c)); + ExpectNotNull(ssl_s = wolfSSL_new(ctx_s)); wolfSSL_SetIOWriteCtx(ssl_c, &test_ctx); wolfSSL_SetIOReadCtx(ssl_c, &test_ctx); wolfSSL_SetIOWriteCtx(ssl_s, &test_ctx); wolfSSL_SetIOReadCtx(ssl_s, &test_ctx); - ret = wolfSSL_set_session(ssl_c, sess); - if (ret != WOLFSSL_SUCCESS) - return -6; - ret = wolfSSL_connect(ssl_c); - if (ret == WOLFSSL_SUCCESS || ssl_c->error != WANT_READ) - return -7; - ret = wolfSSL_accept(ssl_s); - if (ret == WOLFSSL_SUCCESS || ssl_s->error != WANT_READ) - return -8; - if (bad && !buf_is_hvr(test_ctx.c_buff, test_ctx.c_len)) - return -9; - if (!bad && buf_is_hvr(test_ctx.c_buff, test_ctx.c_len)) - return -10; + ExpectIntEQ(wolfSSL_set_session(ssl_c, sess), WOLFSSL_SUCCESS); + ExpectTrue((wolfSSL_connect(ssl_c) == WOLFSSL_FATAL_ERROR) && + (ssl_c->error == WANT_READ)); + ExpectTrue((wolfSSL_accept(ssl_s) == WOLFSSL_FATAL_ERROR) && + (ssl_s->error == WANT_READ)); + ExpectFalse(bad && !buf_is_hvr(test_ctx.c_buff, test_ctx.c_len)); + ExpectFalse(!bad && buf_is_hvr(test_ctx.c_buff, test_ctx.c_len)); if (!useticket) { - ret = test_memio_do_handshake(ssl_c, ssl_s, 10, &round_trips); - if (ret != 0) - return -11; - if (bad && round_trips != ROUNDS_WITH_HVR - 1) - return -12; - if (!bad && round_trips != ROUNDS_WITHOUT_HVR - 1) - return -13; + ExpectIntEQ(test_memio_do_handshake(ssl_c, ssl_s, 10, &round_trips), 0); + ExpectFalse(bad && round_trips != ROUNDS_WITH_HVR - 1); + ExpectFalse(!bad && round_trips != ROUNDS_WITHOUT_HVR - 1); } wolfSSL_SESSION_free(sess); wolfSSL_free(ssl_c); wolfSSL_free(ssl_s); wolfSSL_CTX_free(ctx_c); wolfSSL_CTX_free(ctx_s); - return 0; + return EXPECT_RESULT(); } static int test_wolfSSL_dtls_stateless_resume(void) { - int ret; + EXPECT_DECLS; #ifdef HAVE_SESSION_TICKET - ret = _test_wolfSSL_dtls_stateless_resume(1, 0); - if (ret != 0) - return TEST_RES_CHECK(ret); - ret = _test_wolfSSL_dtls_stateless_resume(1, 1); - if (ret != 0) - return TEST_RES_CHECK(ret - 100); + ExpectIntEQ(_test_wolfSSL_dtls_stateless_resume(1, 0), TEST_SUCCESS); + ExpectIntEQ(_test_wolfSSL_dtls_stateless_resume(1, 1), TEST_SUCCESS); #endif /* HAVE_SESION_TICKET */ - ret = _test_wolfSSL_dtls_stateless_resume(0, 0); - if (ret != 0) - return TEST_RES_CHECK(ret - 200); - ret = _test_wolfSSL_dtls_stateless_resume(0, 1); - if (ret != 0) - return TEST_RES_CHECK(ret - 300); - return TEST_RES_CHECK(TEST_SUCCESS); + ExpectIntEQ(_test_wolfSSL_dtls_stateless_resume(0, 0), TEST_SUCCESS); + ExpectIntEQ(_test_wolfSSL_dtls_stateless_resume(0, 1), TEST_SUCCESS); + return EXPECT_RESULT(); } #endif /* WOLFSSL_DTLS_NO_HVR_ON_RESUME */ #if !defined(NO_OLD_TLS) static int test_wolfSSL_dtls_stateless_downgrade(void) { - WOLFSSL_CTX *ctx_c = NULL, *ctx_c2 = NULL, *ctx_s = NULL; - WOLFSSL *ssl_c = NULL, *ssl_c2 = NULL, *ssl_s = NULL; + EXPECT_DECLS; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_c2 = NULL; + WOLFSSL_CTX *ctx_s = NULL; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_c2 = NULL; + WOLFSSL *ssl_s = NULL; struct test_memio_ctx test_ctx; - int ret; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfDTLSv1_2_client_method, wolfDTLSv1_2_server_method); - if (ret != 0) - return -1; - ret = wolfSSL_CTX_SetMinVersion(ctx_s, WOLFSSL_DTLSV1); - if (ret != WOLFSSL_SUCCESS) - return -2; - ctx_c2 = wolfSSL_CTX_new(wolfDTLSv1_client_method()); - if (ctx_c2 == NULL) - return -3; + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, + wolfDTLSv1_2_client_method, wolfDTLSv1_2_server_method), 0); + ExpectIntEQ(wolfSSL_CTX_SetMinVersion(ctx_s, WOLFSSL_DTLSV1), + WOLFSSL_SUCCESS); + ExpectNotNull(ctx_c2 = wolfSSL_CTX_new(wolfDTLSv1_client_method())); wolfSSL_SetIORecv(ctx_c2, test_memio_read_cb); wolfSSL_SetIOSend(ctx_c2, test_memio_write_cb); - ssl_c2 = wolfSSL_new(ctx_c2); - if (ssl_c2 == NULL) - return -4; + ExpectNotNull(ssl_c2 = wolfSSL_new(ctx_c2)); wolfSSL_SetIOWriteCtx(ssl_c2, &test_ctx); wolfSSL_SetIOReadCtx(ssl_c2, &test_ctx); - /* send CH */ - ret = wolfSSL_connect(ssl_c2); - if (ret == 0 || ssl_c2->error != WANT_READ) - return -5; - ret = wolfSSL_accept(ssl_s); - if (ret == 0 || ssl_s->error != WANT_READ) - return -6; - if (test_ctx.c_len == 0) - return -7; + /* send CH */ + ExpectTrue((wolfSSL_connect(ssl_c2) == WOLFSSL_FATAL_ERROR) && + (ssl_c2->error == WANT_READ)); + ExpectTrue((wolfSSL_accept(ssl_s) == WOLFSSL_FATAL_ERROR) && + (ssl_s->error == WANT_READ)); + ExpectIntNE(test_ctx.c_len, 0); /* consume HRR */ test_ctx.c_len = 0; - ret = test_memio_do_handshake(ssl_c, ssl_s, 10, NULL); - if (ret != 0) - return -8; + ExpectIntEQ(test_memio_do_handshake(ssl_c, ssl_s, 10, NULL), 0); + wolfSSL_free(ssl_c2); wolfSSL_free(ssl_c); wolfSSL_free(ssl_s); @@ -64581,7 +58245,7 @@ static int test_wolfSSL_dtls_stateless_downgrade(void) wolfSSL_CTX_free(ctx_c2); wolfSSL_CTX_free(ctx_s); - return TEST_SUCCESS; + return EXPECT_RESULT(); } #endif /* !defined(NO_OLD_TLS) */ @@ -64593,50 +58257,43 @@ static int test_wolfSSL_dtls_stateless_downgrade(void) !defined(NO_OLD_TLS) && !defined(NO_RSA) static int test_WOLFSSL_dtls_version_alert(void) { + EXPECT_DECLS; struct test_memio_ctx test_ctx; - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - WOLFSSL *ssl_c = NULL, *ssl_s = NULL; - int ret; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_s = NULL; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfDTLSv1_2_client_method, wolfDTLSv1_server_method); - if (ret != 0) - return -1; + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, + wolfDTLSv1_2_client_method, wolfDTLSv1_server_method), 0); /* client hello */ - ret = wolfSSL_connect(ssl_c); - if (ret == 0 || ssl_c->error != WANT_READ ) - return -2; + ExpectTrue((wolfSSL_connect(ssl_c) == WOLFSSL_FATAL_ERROR) && + (ssl_c->error == WANT_READ)); /* hrr */ - ret = wolfSSL_accept(ssl_s); - if (ret == 0 || ssl_s->error != WANT_READ ) - return -3; + ExpectTrue((wolfSSL_accept(ssl_s) == WOLFSSL_FATAL_ERROR) && + (ssl_s->error == WANT_READ)); /* client hello 1 */ - ret = wolfSSL_connect(ssl_c); - if (ret == 0 || ssl_c->error != WANT_READ ) - return -4; + ExpectTrue((wolfSSL_connect(ssl_c) == WOLFSSL_FATAL_ERROR) && + (ssl_c->error == WANT_READ)); /* server hello */ - ret = wolfSSL_accept(ssl_s); - if (ret == 0 || ssl_s->error != WANT_READ ) - return -5; + ExpectTrue((wolfSSL_accept(ssl_s) == WOLFSSL_FATAL_ERROR) && + (ssl_s->error == WANT_READ)); /* should fail */ - ret = wolfSSL_connect(ssl_c); - if (ret == 0 || ssl_c->error != VERSION_ERROR) - return -6; + ExpectTrue((wolfSSL_connect(ssl_c) == WOLFSSL_FATAL_ERROR) && + (ssl_c->error == VERSION_ERROR)); /* shuould fail */ - ret = wolfSSL_accept(ssl_s); - if (ret == 0 || - (ssl_s->error != VERSION_ERROR && ssl_s->error != FATAL_ERROR)) - return -7; + ExpectTrue((wolfSSL_accept(ssl_s) == WOLFSSL_FATAL_ERROR) && + (ssl_s->error == VERSION_ERROR || ssl_s->error == FATAL_ERROR)); wolfSSL_free(ssl_c); wolfSSL_free(ssl_s); wolfSSL_CTX_free(ctx_c); wolfSSL_CTX_free(ctx_s); - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #else static int test_WOLFSSL_dtls_version_alert(void) @@ -64698,141 +58355,120 @@ static int send_new_session_ticket(WOLFSSL *ssl, byte nonceLength, byte filler) static int test_ticket_nonce_check(WOLFSSL_SESSION *sess, byte len) { - int i; + int ret = 0; - if (sess == NULL) - return -1; + if ((sess == NULL) || (sess->ticketNonce.len != len)) { + ret = -1; + } + else { + int i; + for (i = 0; i < len; i++) { + if (sess->ticketNonce.data[i] != len) { + ret = -1; + break; + } + } + } - if (sess->ticketNonce.len != len) - return -1; - - for (i = 0; i < len; i++) - if (sess->ticketNonce.data[i] != len) - return -1; - - return 0; + return ret; } static int test_ticket_nonce_malloc_do(WOLFSSL *ssl_s, WOLFSSL *ssl_c, byte len) { + EXPECT_DECLS; char *buf[1024]; - int ret; - ret = send_new_session_ticket(ssl_s, len, len); - if (ret != 0) - return -1; + ExpectIntEQ(send_new_session_ticket(ssl_s, len, len), 0); + ExpectTrue((wolfSSL_recv(ssl_c, buf, 1024, 0) == WOLFSSL_FATAL_ERROR) && + (ssl_c->error == WANT_READ)); - ret = wolfSSL_recv(ssl_c, buf, 1024, 0); - if (ret != WOLFSSL_SUCCESS && ssl_c->error != WANT_READ) - return -1; + ExpectIntEQ(test_ticket_nonce_check(ssl_c->session, len), 0); - return test_ticket_nonce_check(ssl_c->session, len); + return EXPECT_RESULT(); } static int test_ticket_nonce_cache(WOLFSSL *ssl_s, WOLFSSL *ssl_c, byte len) { - WOLFSSL_SESSION *sess, *cached; - WOLFSSL_CTX *ctx; - int ret; + EXPECT_DECLS; + WOLFSSL_SESSION *sess = NULL; + WOLFSSL_SESSION *cached = NULL; + WOLFSSL_CTX *ctx = ssl_c->ctx; - ctx = ssl_c->ctx; + ExpectIntEQ(test_ticket_nonce_malloc_do(ssl_s, ssl_c, len), TEST_SUCCESS); + ExpectNotNull(sess = wolfSSL_get1_session(ssl_c)); - ret = test_ticket_nonce_malloc_do(ssl_s, ssl_c, len); - if (ret != 0) - return -1; - sess = wolfSSL_get1_session(ssl_c); - if (sess == NULL) - return -1; + ExpectIntEQ(AddSessionToCache(ctx, sess, sess->sessionID, sess->sessionIDSz, + NULL, ssl_c->options.side, 1,NULL), 0); - ret = AddSessionToCache(ctx, sess, sess->sessionID, sess->sessionIDSz, - NULL, ssl_c->options.side, 1,NULL); - if (ret != 0) - return -1; + ExpectNotNull(cached = wolfSSL_SESSION_new()); - cached = wolfSSL_SESSION_new(); - if (cached == NULL) - return -1; + ExpectIntEQ(wolfSSL_GetSessionFromCache(ssl_c, cached), WOLFSSL_SUCCESS); - ret = wolfSSL_GetSessionFromCache(ssl_c, cached); - if (ret != WOLFSSL_SUCCESS) - return -1; - - ret = test_ticket_nonce_check(cached, len); - if (ret != 0) - return -1; + ExpectIntEQ(test_ticket_nonce_check(cached, len), 0); wolfSSL_SESSION_free(cached); wolfSSL_SESSION_free(sess); - return 0; + return EXPECT_RESULT(); } static int test_ticket_nonce_malloc(void) { + EXPECT_DECLS; struct test_memio_ctx test_ctx; - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - WOLFSSL *ssl_c = NULL, *ssl_s = NULL; - byte small, medium, big; - int ret; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_s = NULL; + byte small; + byte medium; + byte big; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfTLSv1_3_client_method, wolfTLSv1_3_server_method); - if (ret != 0) - return -1; + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, + wolfTLSv1_3_client_method, wolfTLSv1_3_server_method), 0); /* will send ticket manually */ - wolfSSL_no_ticket_TLSv13(ssl_s); + ExpectIntEQ(wolfSSL_no_ticket_TLSv13(ssl_s), 0); wolfSSL_set_verify(ssl_s, WOLFSSL_VERIFY_NONE, 0); wolfSSL_set_verify(ssl_c, WOLFSSL_VERIFY_NONE, 0); - while (!ssl_c->options.handShakeDone && !ssl_s->options.handShakeDone) { - ret = wolfSSL_connect(ssl_c); - if (ret != WOLFSSL_SUCCESS && ssl_c->error != WANT_READ) - return -2; + while (EXPECT_SUCCESS() && (ssl_c->options.handShakeDone == 0) && + (ssl_s->options.handShakeDone == 0)) { + ExpectTrue((wolfSSL_connect(ssl_c) == WOLFSSL_SUCCESS) || + (ssl_c->error == WANT_READ)); - ret = wolfSSL_accept(ssl_s); - if (ret != WOLFSSL_SUCCESS && ssl_s->error != WANT_READ) - return -3; + ExpectTrue((wolfSSL_accept(ssl_s) == WOLFSSL_SUCCESS) || + (ssl_s->error == WANT_READ)); } small = TLS13_TICKET_NONCE_STATIC_SZ; medium = small + 20 <= 255 ? small + 20 : 255; big = medium + 20 <= 255 ? small + 20 : 255; - if (test_ticket_nonce_malloc_do(ssl_s, ssl_c, small)) - return -1; - if (ssl_c->session->ticketNonce.data != - ssl_c->session->ticketNonce.dataStatic) - return -1; - if (test_ticket_nonce_malloc_do(ssl_s, ssl_c, medium)) - return -1; - if (test_ticket_nonce_malloc_do(ssl_s, ssl_c, big)) - return -1; - if (test_ticket_nonce_malloc_do(ssl_s, ssl_c, medium)) - return -5; - if (test_ticket_nonce_malloc_do(ssl_s, ssl_c, small)) - return -6; - - if (test_ticket_nonce_cache(ssl_s, ssl_c, small)) - return -1; - if (test_ticket_nonce_cache(ssl_s, ssl_c, medium)) - return -1; - if (test_ticket_nonce_cache(ssl_s, ssl_c, big)) - return -1; - if (test_ticket_nonce_cache(ssl_s, ssl_c, medium)) - return -1; - if (test_ticket_nonce_cache(ssl_s, ssl_c, small)) - return -1; + ExpectIntEQ(test_ticket_nonce_malloc_do(ssl_s, ssl_c, small), TEST_SUCCESS); + ExpectPtrEq(ssl_c->session->ticketNonce.data, + ssl_c->session->ticketNonce.dataStatic); + ExpectIntEQ(test_ticket_nonce_malloc_do(ssl_s, ssl_c, medium), + TEST_SUCCESS); + ExpectIntEQ(test_ticket_nonce_malloc_do(ssl_s, ssl_c, big), TEST_SUCCESS); + ExpectIntEQ(test_ticket_nonce_malloc_do(ssl_s, ssl_c, medium), + TEST_SUCCESS); + ExpectIntEQ(test_ticket_nonce_malloc_do(ssl_s, ssl_c, small), TEST_SUCCESS); + ExpectIntEQ(test_ticket_nonce_cache(ssl_s, ssl_c, small), TEST_SUCCESS); + ExpectIntEQ(test_ticket_nonce_cache(ssl_s, ssl_c, medium), TEST_SUCCESS); + ExpectIntEQ(test_ticket_nonce_cache(ssl_s, ssl_c, big), TEST_SUCCESS); + ExpectIntEQ(test_ticket_nonce_cache(ssl_s, ssl_c, medium), TEST_SUCCESS); + ExpectIntEQ(test_ticket_nonce_cache(ssl_s, ssl_c, small), TEST_SUCCESS); wolfSSL_free(ssl_c); wolfSSL_free(ssl_s); wolfSSL_CTX_free(ctx_c); wolfSSL_CTX_free(ctx_s); - return 0; + return EXPECT_RESULT(); } #endif /* WOLFSSL_TICKET_NONCE_MALLOC */ @@ -64845,56 +58481,48 @@ static int test_ticket_nonce_malloc(void) static int test_ticket_ret_create(void) { - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - WOLFSSL *ssl_c = NULL, *ssl_s = NULL; + EXPECT_DECLS; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_s = NULL; byte ticket[SESSION_TICKET_LEN]; struct test_memio_ctx test_ctx; WOLFSSL_SESSION *sess = NULL; - word16 ticketLen; - int ret; + word16 ticketLen = 0; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfTLSv1_2_client_method, wolfTLSv1_2_server_method); - if (ret != 0) - return TEST_FAIL; + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, + wolfTLSv1_2_client_method, wolfTLSv1_2_server_method), 0); wolfSSL_set_verify(ssl_s, WOLFSSL_VERIFY_NONE, 0); wolfSSL_set_verify(ssl_c, WOLFSSL_VERIFY_NONE, 0); - wolfSSL_CTX_UseSessionTicket(ctx_c); + ExpectIntEQ(wolfSSL_CTX_UseSessionTicket(ctx_c), WOLFSSL_SUCCESS); - ret = test_memio_do_handshake(ssl_c, ssl_s, 10, NULL); - if (ret != 0) - return TEST_FAIL; + ExpectIntEQ(test_memio_do_handshake(ssl_c, ssl_s, 10, NULL), 0); - sess = wolfSSL_get1_session(ssl_c); - if (sess->ticketLen > SESSION_TICKET_LEN) - return TEST_FAIL; - ticketLen = sess->ticketLen; - XMEMCPY(ticket, sess->ticket, sess->ticketLen); + ExpectNotNull(sess = wolfSSL_get1_session(ssl_c)); + ExpectIntLE(sess->ticketLen, SESSION_TICKET_LEN); + if (sess != NULL) { + ticketLen = sess->ticketLen; + XMEMCPY(ticket, sess->ticket, sess->ticketLen); + } wolfSSL_free(ssl_c); + ssl_c = NULL; wolfSSL_free(ssl_s); + ssl_s = NULL; - ssl_s = wolfSSL_new(ctx_s); - if (ssl_s == NULL) - return TEST_FAIL; + ExpectNotNull(ssl_s = wolfSSL_new(ctx_s)); wolfSSL_SetIOWriteCtx(ssl_s, &test_ctx); wolfSSL_SetIOReadCtx(ssl_s, &test_ctx); - ssl_c = wolfSSL_new(ctx_c); - if (ssl_c == NULL) - return TEST_FAIL; + ExpectNotNull(ssl_c = wolfSSL_new(ctx_c)); wolfSSL_SetIOWriteCtx(ssl_c, &test_ctx); wolfSSL_SetIOReadCtx(ssl_c, &test_ctx); - wolfSSL_set_session(ssl_c, sess); - ret = test_memio_do_handshake(ssl_c, ssl_s, 10, NULL); - if (ret != 0) - return TEST_FAIL; - if (ssl_c->session->ticketLen > SESSION_TICKET_LEN) - return TEST_FAIL; - if (ssl_c->session->ticketLen != ticketLen) - return TEST_FAIL; - if (XMEMCMP(ssl_c->session->ticket, ticket, ticketLen) == 0) - return TEST_FAIL; + ExpectIntEQ(wolfSSL_set_session(ssl_c, sess), WOLFSSL_SUCCESS); + ExpectIntEQ(test_memio_do_handshake(ssl_c, ssl_s, 10, NULL), 0); + ExpectIntLE(ssl_c->session->ticketLen, SESSION_TICKET_LEN); + ExpectIntEQ(ssl_c->session->ticketLen, ticketLen); + ExpectTrue(XMEMCMP(ssl_c->session->ticket, ticket, ticketLen) != 0); wolfSSL_SESSION_free(sess); wolfSSL_free(ssl_c); @@ -64902,7 +58530,7 @@ static int test_ticket_ret_create(void) wolfSSL_CTX_free(ctx_c); wolfSSL_CTX_free(ctx_s); - return TEST_SUCCESS; + return EXPECT_RESULT(); } #else static int test_ticket_ret_create(void) @@ -64911,14 +58539,16 @@ static int test_ticket_ret_create(void) } #endif -#if defined(WOLFSSL_TLS13) && !defined(NO_PSK) && defined(HAVE_SESSION_TICKET) \ - && defined(OPENSSL_EXTRA) && defined(HAVE_IO_TESTS_DEPENDENCIES) && \ - defined(HAVE_AESGCM) && !defined(NO_SHA256) && defined(WOLFSSL_AES_128) && \ +#if defined(WOLFSSL_TLS13) && !defined(NO_PSK) && \ + defined(HAVE_SESSION_TICKET) && defined(OPENSSL_EXTRA) && \ + defined(HAVE_IO_TESTS_DEPENDENCIES) && defined(HAVE_AESGCM) && \ + !defined(NO_SHA256) && defined(WOLFSSL_AES_128) && \ defined(WOLFSSL_SHA384) && defined(WOLFSSL_AES_256) static void test_ticket_and_psk_mixing_on_result(WOLFSSL* ssl) { int ret; WOLFSSL_SESSION* session = NULL; + AssertIntEQ(wolfSSL_get_current_cipher_suite(ssl), 0x1301); if (!wolfSSL_is_server(ssl)) { session = wolfSSL_SESSION_dup(wolfSSL_get_session(ssl)); @@ -64948,7 +58578,7 @@ static void test_ticket_and_psk_mixing_on_result(WOLFSSL* ssl) /* Different ciphersuite so that the ticket will be invalidated based on * the ciphersuite */ AssertIntEQ(wolfSSL_set_cipher_list(ssl, "TLS13-AES256-GCM-SHA384"), - WOLFSSL_SUCCESS); + WOLFSSL_SUCCESS); wolfSSL_set_psk_server_tls13_callback(ssl, my_psk_server_tls13_cb); AssertIntEQ(wolfSSL_accept(ssl), WOLFSSL_SUCCESS); } @@ -64958,11 +58588,12 @@ static void test_ticket_and_psk_mixing_ssl_ready(WOLFSSL* ssl) { AssertIntEQ(wolfSSL_UseSessionTicket(ssl), WOLFSSL_SUCCESS); AssertIntEQ(wolfSSL_set_cipher_list(ssl, "TLS13-AES128-GCM-SHA256"), - WOLFSSL_SUCCESS); + WOLFSSL_SUCCESS); } static int test_ticket_and_psk_mixing(void) { + EXPECT_DECLS; /* Test mixing tickets and regular PSK */ callback_functions client_cbs, server_cbs; @@ -64979,10 +58610,10 @@ static int test_ticket_and_psk_mixing(void) test_wolfSSL_client_server_nofail(&client_cbs, &server_cbs); - AssertIntEQ(client_cbs.return_code, TEST_SUCCESS); - AssertIntEQ(server_cbs.return_code, TEST_SUCCESS); + ExpectIntEQ(client_cbs.return_code, TEST_SUCCESS); + ExpectIntEQ(server_cbs.return_code, TEST_SUCCESS); - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #else static int test_ticket_and_psk_mixing(void) @@ -65062,6 +58693,7 @@ static void test_prioritize_psk_ssl_ready(WOLFSSL* ssl) static int test_prioritize_psk(void) { + EXPECT_DECLS; /* We always send the ticket first. With WOLFSSL_PRIORITIZE_PSK the order * of the PSK's will be followed instead of the ciphersuite. */ callback_functions client_cbs, server_cbs; @@ -65080,10 +58712,10 @@ static int test_prioritize_psk(void) test_wolfSSL_client_server_nofail(&client_cbs, &server_cbs); - AssertIntEQ(client_cbs.return_code, TEST_SUCCESS); - AssertIntEQ(server_cbs.return_code, TEST_SUCCESS); + ExpectIntEQ(client_cbs.return_code, TEST_SUCCESS); + ExpectIntEQ(server_cbs.return_code, TEST_SUCCESS); - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #else static int test_prioritize_psk(void) @@ -65322,30 +58954,24 @@ byte test_extra_alerts_wrong_cs_sh[] = { static int test_extra_alerts_wrong_cs(void) { + EXPECT_DECLS; +#ifdef BUILD_TLS_DHE_RSA_WITH_AES_128_CBC_SHA struct test_memio_ctx test_ctx; WOLFSSL_CTX *ctx_c = NULL; WOLFSSL_ALERT_HISTORY h; WOLFSSL *ssl_c = NULL; - int ret, err; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, NULL, &ssl_c, NULL, - wolfTLSv1_2_client_method, NULL); - if (ret != 0) - return TEST_FAIL; + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, NULL, &ssl_c, NULL, + wolfTLSv1_2_client_method, NULL), 0); - ret = wolfSSL_set_cipher_list(ssl_c, TEST_WRONG_CS_CLIENT); - if (ret != WOLFSSL_SUCCESS) { - wolfSSL_free(ssl_c); - wolfSSL_CTX_free(ctx_c); - return TEST_SKIPPED; - } + ExpectIntEQ(wolfSSL_set_cipher_list(ssl_c, TEST_WRONG_CS_CLIENT), + WOLFSSL_SUCCESS); /* CH */ - ret = wolfSSL_connect(ssl_c); - err = wolfSSL_get_error(ssl_c, ret); - if (ret == WOLFSSL_SUCCESS || err != WOLFSSL_ERROR_WANT_READ) - return TEST_FAIL; + ExpectIntNE(wolfSSL_connect(ssl_c), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_get_error(ssl_c, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); /* consume CH */ test_ctx.s_len = 0; @@ -65354,22 +58980,17 @@ static int test_extra_alerts_wrong_cs(void) sizeof(test_extra_alerts_wrong_cs_sh)); test_ctx.c_len = sizeof(test_extra_alerts_wrong_cs_sh); - ret = wolfSSL_connect(ssl_c); - err = wolfSSL_get_error(ssl_c, ret); - if (ret == WOLFSSL_SUCCESS || err == WOLFSSL_ERROR_WANT_READ) - return TEST_FAIL; - ret = wolfSSL_get_alert_history(ssl_c, &h); - if (ret != WOLFSSL_SUCCESS) - return TEST_FAIL; - if (h.last_tx.code != illegal_parameter) - return TEST_FAIL; - if (h.last_tx.level != alert_fatal) - return TEST_FAIL; + ExpectIntNE(wolfSSL_connect(ssl_c), WOLFSSL_SUCCESS); + ExpectIntNE(wolfSSL_get_error(ssl_c, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); + ExpectIntEQ(wolfSSL_get_alert_history(ssl_c, &h), WOLFSSL_SUCCESS); + ExpectIntEQ(h.last_tx.code, illegal_parameter); + ExpectIntEQ(h.last_tx.level, alert_fatal); wolfSSL_free(ssl_c); wolfSSL_CTX_free(ctx_c); - - return TEST_SUCCESS; +#endif + return EXPECT_RESULT(); } #else static int test_extra_alerts_wrong_cs(void) @@ -65458,42 +59079,38 @@ static int test_remove_hs_msg_from_buffer(byte *buf, int *len, byte type, static int test_remove_hs_message(byte hs_message_type, int extra_round, byte alert_type) { - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - WOLFSSL *ssl_c = NULL, *ssl_s = NULL; + EXPECT_DECLS; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_s = NULL; struct test_memio_ctx test_ctx; WOLFSSL_ALERT_HISTORY h; - int ret, err; - byte found; + byte found = 0; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfTLSv1_2_client_method, wolfTLSv1_2_server_method); - AssertIntEQ(ret, 0); + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, + wolfTLSv1_2_client_method, wolfTLSv1_2_server_method), 0); - ret = wolfSSL_connect(ssl_c); - err = wolfSSL_get_error(ssl_c, ret); - AssertIntNE(ret, WOLFSSL_SUCCESS); - AssertIntEQ(err, WOLFSSL_ERROR_WANT_READ); + ExpectIntNE(wolfSSL_connect(ssl_c), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_get_error(ssl_c, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); - ret = wolfSSL_accept(ssl_s); - err = wolfSSL_get_error(ssl_s, ret); - AssertIntNE(ret, WOLFSSL_SUCCESS); - AssertIntEQ(err, WOLFSSL_ERROR_WANT_READ); + ExpectIntNE(wolfSSL_accept(ssl_s), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_get_error(ssl_c, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); if (extra_round) { - ret = wolfSSL_connect(ssl_c); - err = wolfSSL_get_error(ssl_c, ret); - AssertIntNE(ret, WOLFSSL_SUCCESS); - AssertIntEQ(err, WOLFSSL_ERROR_WANT_READ); + ExpectIntNE(wolfSSL_connect(ssl_c), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_get_error(ssl_c, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); /* this will complete handshake from server side */ - ret = wolfSSL_accept(ssl_s); - AssertIntEQ(ret, WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_accept(ssl_s), WOLFSSL_SUCCESS); } - ret = test_remove_hs_msg_from_buffer(test_ctx.c_buff, - &test_ctx.c_len, hs_message_type, &found); - AssertIntEQ(ret, 0); + ExpectIntEQ(test_remove_hs_msg_from_buffer(test_ctx.c_buff, + &test_ctx.c_len, hs_message_type, &found), 0); if (!found) { wolfSSL_free(ssl_c); @@ -65503,44 +59120,37 @@ static int test_remove_hs_message(byte hs_message_type, return TEST_SKIPPED; } - ret = wolfSSL_connect(ssl_c); - err = wolfSSL_get_error(ssl_c, ret); - AssertIntNE(ret, WOLFSSL_SUCCESS); - AssertIntNE(err, WOLFSSL_ERROR_WANT_READ); - ret = wolfSSL_get_alert_history(ssl_c, &h); - AssertIntEQ(ret, WOLFSSL_SUCCESS); - if (alert_type != 0xff && h.last_tx.code != alert_type) - return TEST_FAIL; - if (h.last_tx.level != alert_fatal) - return TEST_FAIL; + ExpectIntNE(wolfSSL_connect(ssl_c), WOLFSSL_SUCCESS); + ExpectIntNE(wolfSSL_get_error(ssl_c, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); + ExpectIntEQ(wolfSSL_get_alert_history(ssl_c, &h), WOLFSSL_SUCCESS); + ExpectTrue(alert_type == 0xff || h.last_tx.code == alert_type); + ExpectIntEQ(h.last_tx.level, alert_fatal); wolfSSL_free(ssl_c); wolfSSL_CTX_free(ctx_c); wolfSSL_free(ssl_s); wolfSSL_CTX_free(ctx_s); - return TEST_SUCCESS; + return EXPECT_RESULT(); } static int test_extra_alerts_skip_hs(void) { + EXPECT_DECLS; const byte _server_key_exchange = 12; const byte _server_hello = 2; const byte _certificate = 11; - int ret; /* server_hello */ - ret = test_remove_hs_message(_server_hello, 0, - unexpected_message); - AssertIntNE(ret, TEST_FAIL); - ret = test_remove_hs_message(_certificate, 0, - 0xff); - AssertIntNE(ret, TEST_FAIL); - ret = test_remove_hs_message(_server_key_exchange, 0, - unexpected_message); - AssertIntNE(ret, TEST_FAIL); + ExpectIntNE(test_remove_hs_message(_server_hello, 0, + unexpected_message), TEST_FAIL); + ExpectIntNE(test_remove_hs_message(_certificate, 0, + 0xff), TEST_FAIL); + ExpectIntNE(test_remove_hs_message(_server_key_exchange, 0, + unexpected_message), TEST_FAIL); - return TEST_SUCCESS; + return EXPECT_RESULT(); } #else static int test_extra_alerts_skip_hs(void) @@ -65565,56 +59175,47 @@ static unsigned int test_server_psk_cb(WOLFSSL* ssl, const char* id, static int test_extra_alerts_bad_psk(void) { - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - WOLFSSL *ssl_c = NULL, *ssl_s = NULL; + EXPECT_DECLS; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_s = NULL; struct test_memio_ctx test_ctx; WOLFSSL_ALERT_HISTORY h; - int ret, err; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfTLSv1_2_client_method, wolfTLSv1_2_server_method); - if (ret != 0) - return TEST_FAIL; + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, + wolfTLSv1_2_client_method, wolfTLSv1_2_server_method), 0); - ret = wolfSSL_set_cipher_list(ssl_c, "DHE-PSK-AES128-GCM-SHA256"); - if (ret != WOLFSSL_SUCCESS) - return TEST_FAIL; + ExpectIntEQ(wolfSSL_set_cipher_list(ssl_c, "DHE-PSK-AES128-GCM-SHA256"), + WOLFSSL_SUCCESS); - ret = wolfSSL_set_cipher_list(ssl_s, "DHE-PSK-AES128-GCM-SHA256"); - if (ret != WOLFSSL_SUCCESS) - return TEST_FAIL; + ExpectIntEQ(wolfSSL_set_cipher_list(ssl_s, "DHE-PSK-AES128-GCM-SHA256"), + WOLFSSL_SUCCESS); wolfSSL_set_psk_server_callback(ssl_s, test_server_psk_cb); - ret = wolfSSL_connect(ssl_c); - err = wolfSSL_get_error(ssl_c, ret); - if (ret == WOLFSSL_SUCCESS || err != WOLFSSL_ERROR_WANT_READ) - return TEST_FAIL; + ExpectIntNE(wolfSSL_connect(ssl_c), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_get_error(ssl_c, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); - ret = wolfSSL_accept(ssl_s); - err = wolfSSL_get_error(ssl_s, ret); - if (ret == WOLFSSL_SUCCESS || err != WOLFSSL_ERROR_WANT_READ) - return TEST_FAIL; + ExpectIntNE(wolfSSL_accept(ssl_s), WOLFSSL_SUCCESS); + ExpectIntEQ( wolfSSL_get_error(ssl_s, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); - ret = wolfSSL_connect(ssl_c); - err = wolfSSL_get_error(ssl_c, ret); - if (ret == WOLFSSL_SUCCESS || err == WOLFSSL_ERROR_WANT_READ) - return TEST_FAIL; - ret = wolfSSL_get_alert_history(ssl_c, &h); - if (ret != WOLFSSL_SUCCESS) - return TEST_FAIL; - if (h.last_tx.code != handshake_failure) - return TEST_FAIL; - if (h.last_tx.level != alert_fatal) - return TEST_FAIL; + ExpectIntNE(wolfSSL_connect(ssl_c), WOLFSSL_SUCCESS); + ExpectIntNE(wolfSSL_get_error(ssl_c, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); + ExpectIntEQ(wolfSSL_get_alert_history(ssl_c, &h), WOLFSSL_SUCCESS); + ExpectIntEQ(h.last_tx.code, handshake_failure); + ExpectIntEQ(h.last_tx.level, alert_fatal); wolfSSL_free(ssl_c); wolfSSL_CTX_free(ctx_c); wolfSSL_free(ssl_s); wolfSSL_CTX_free(ctx_s); - return TEST_SUCCESS; + return EXPECT_RESULT(); } #else static int test_extra_alerts_bad_psk(void) @@ -65666,6 +59267,7 @@ static void test_harden_no_secure_renegotiation_on_cleanup(WOLFSSL* ssl) static int test_harden_no_secure_renegotiation(void) { + EXPECT_DECLS; callback_functions client_cbs, server_cbs; XMEMSET(&client_cbs, 0, sizeof(client_cbs)); @@ -65678,12 +59280,12 @@ static int test_harden_no_secure_renegotiation(void) server_cbs.on_cleanup = test_harden_no_secure_renegotiation_on_cleanup; test_wolfSSL_client_server_nofail(&client_cbs, &server_cbs); - AssertIntEQ(client_cbs.return_code, TEST_FAIL); - AssertIntEQ(client_cbs.last_err, SECURE_RENEGOTIATION_E); - AssertIntEQ(server_cbs.return_code, TEST_FAIL); - AssertIntEQ(server_cbs.last_err, SOCKET_ERROR_E); + ExpectIntEQ(client_cbs.return_code, TEST_FAIL); + ExpectIntEQ(client_cbs.last_err, SECURE_RENEGOTIATION_E); + ExpectIntEQ(server_cbs.return_code, TEST_FAIL); + ExpectIntEQ(server_cbs.last_err, SOCKET_ERROR_E); - return TEST_RES_CHECK(1); + return EXPECT_RESULT(); } #else static int test_harden_no_secure_renegotiation(void) @@ -65813,63 +59415,52 @@ static int test_override_alt_cert_chain(void) static int test_dtls13_bad_epoch_ch(void) { - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - WOLFSSL *ssl_c = NULL, *ssl_s = NULL; + EXPECT_DECLS; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_s = NULL; struct test_memio_ctx test_ctx; const int EPOCH_OFF = 3; - int ret, err; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfDTLSv1_3_client_method, wolfDTLSv1_3_server_method); - if (ret != 0) - return TEST_FAIL; + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, + wolfDTLSv1_3_client_method, wolfDTLSv1_3_server_method), 0); /* disable hrr cookie so we can later check msgsReceived.got_client_hello * with just one message */ - ret = wolfSSL_disable_hrr_cookie(ssl_s); - if (ret != WOLFSSL_SUCCESS) - return TEST_FAIL; + ExpectIntEQ(wolfSSL_disable_hrr_cookie(ssl_s), WOLFSSL_SUCCESS); - ret = wolfSSL_connect(ssl_c); - err = wolfSSL_get_error(ssl_c, ret); - if (ret == WOLFSSL_SUCCESS || err != WOLFSSL_ERROR_WANT_READ) - return TEST_FAIL; + ExpectIntNE(wolfSSL_connect(ssl_c), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_get_error(ssl_c, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); - if (test_ctx.s_len < EPOCH_OFF + 2) - return TEST_FAIL; + ExpectIntGE(test_ctx.s_len, EPOCH_OFF + 2); /* first CH should use epoch 0x0 */ - if (test_ctx.s_buff[EPOCH_OFF] != 0x0 || - test_ctx.s_buff[EPOCH_OFF + 1] != 0x0) - return TEST_FAIL; + ExpectTrue((test_ctx.s_buff[EPOCH_OFF] == 0x0) && + (test_ctx.s_buff[EPOCH_OFF + 1] == 0x0)); /* change epoch to 2 */ test_ctx.s_buff[EPOCH_OFF + 1] = 0x2; - ret = wolfSSL_accept(ssl_s); - err = wolfSSL_get_error(ssl_s, ret); - if (ret == WOLFSSL_SUCCESS || err != WOLFSSL_ERROR_WANT_READ) - return TEST_FAIL; + ExpectIntNE(wolfSSL_accept(ssl_s), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_get_error(ssl_s, WOLFSSL_FATAL_ERROR), + WOLFSSL_ERROR_WANT_READ); - if (ssl_s->msgsReceived.got_client_hello == 1) - return TEST_FAIL; + ExpectIntNE(ssl_s->msgsReceived.got_client_hello, 1); /* resend the CH */ - ret = wolfSSL_dtls_got_timeout(ssl_c); - if (ret != WOLFSSL_SUCCESS) - return TEST_FAIL; + ExpectIntEQ(wolfSSL_dtls_got_timeout(ssl_c), WOLFSSL_SUCCESS); - ret = test_memio_do_handshake(ssl_c, ssl_s, 10, NULL); - if (ret != 0) - return TEST_FAIL; + ExpectIntEQ(test_memio_do_handshake(ssl_c, ssl_s, 10, NULL), 0); wolfSSL_free(ssl_c); wolfSSL_CTX_free(ctx_c); wolfSSL_free(ssl_s); wolfSSL_CTX_free(ctx_s); - return TEST_SUCCESS; + return EXPECT_RESULT(); } #else static int test_dtls13_bad_epoch_ch(void) @@ -65896,44 +59487,38 @@ static byte* test_find_string(const char *string, static int test_wolfSSL_dtls13_null_cipher(void) { - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - WOLFSSL *ssl_c = NULL, *ssl_s = NULL; + EXPECT_DECLS; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_s = NULL; struct test_memio_ctx test_ctx; const char *test_str = "test"; - int ret, test_str_size; - byte buf[255], *ptr; + int test_str_size; + byte buf[255], *ptr = NULL; XMEMSET(&test_ctx, 0, sizeof(test_ctx)); test_ctx.c_ciphers = test_ctx.s_ciphers = "TLS13-SHA256-SHA256"; - ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, - wolfDTLSv1_3_client_method, wolfDTLSv1_3_server_method); - if (ret != 0) - return TEST_FAIL; - ret = test_memio_do_handshake(ssl_c, ssl_s, 10, NULL); - if (ret != 0) - return TEST_FAIL; + ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s, + wolfDTLSv1_3_client_method, wolfDTLSv1_3_server_method), 0); + ExpectIntEQ(test_memio_do_handshake(ssl_c, ssl_s, 10, NULL), 0); test_str_size = XSTRLEN("test") + 1; - ret = wolfSSL_write(ssl_c, test_str, test_str_size); - if (ret != test_str_size) - return TEST_FAIL; - ret = wolfSSL_read(ssl_s, buf, sizeof(buf)); - if (ret != test_str_size || XSTRCMP((char*)buf, test_str) != 0) - return TEST_FAIL; + ExpectIntEQ(wolfSSL_write(ssl_c, test_str, test_str_size), test_str_size); + ExpectIntEQ(wolfSSL_read(ssl_s, buf, sizeof(buf)), test_str_size); + ExpectIntEQ(XSTRCMP((char*)buf, test_str), 0); - ret = wolfSSL_write(ssl_c, test_str, test_str_size); - if (ret != test_str_size) - return TEST_FAIL; + ExpectIntEQ(wolfSSL_write(ssl_c, test_str, test_str_size), test_str_size); /* check that the packet was sent cleartext */ - ptr = test_find_string(test_str, test_ctx.s_buff, test_ctx.s_len); - if (ptr == NULL) - return TEST_FAIL; - /* modify the message */ - *ptr = 'H'; - /* bad messages should be ignored in DTLS */ - ret = wolfSSL_read(ssl_s, buf, sizeof(buf)); - if (ret != -1 || ssl_s->error != WANT_READ) - return TEST_FAIL; + ExpectNotNull(ptr = test_find_string(test_str, test_ctx.s_buff, + test_ctx.s_len)); + if (ptr != NULL) { + /* modify the message */ + *ptr = 'H'; + /* bad messages should be ignored in DTLS */ + ExpectIntEQ(wolfSSL_read(ssl_s, buf, sizeof(buf)), -1); + ExpectIntEQ(ssl_s->error, WANT_READ); + } wolfSSL_free(ssl_c); wolfSSL_free(ssl_s); @@ -66019,6 +59604,7 @@ static int test_dtls_msg_from_other_peer_cb(WOLFSSL_CTX *ctx, WOLFSSL *ssl) * is done in test_dtls_msg_from_other_peer_cb */ static int test_dtls_msg_from_other_peer(void) { + EXPECT_DECLS; callback_functions client_cbs; callback_functions server_cbs; @@ -66033,11 +59619,10 @@ static int test_dtls_msg_from_other_peer(void) test_wolfSSL_client_server_nofail_ex(&client_cbs, &server_cbs, test_dtls_msg_from_other_peer_cb); - if (client_cbs.return_code != WOLFSSL_SUCCESS || - server_cbs.return_code != WOLFSSL_SUCCESS) - return TEST_FAIL; + ExpectIntEQ(client_cbs.return_code, WOLFSSL_SUCCESS); + ExpectIntEQ(server_cbs.return_code, WOLFSSL_SUCCESS); - return TEST_SUCCESS; + return EXPECT_RESULT(); } #else static int test_dtls_msg_from_other_peer(void) @@ -66052,73 +59637,52 @@ static int test_dtls_msg_from_other_peer(void) defined(HAVE_IO_TESTS_DEPENDENCIES) static int test_dtls_ipv6_check(void) { - WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL; - WOLFSSL *ssl_c = NULL, *ssl_s = NULL; + EXPECT_DECLS; + WOLFSSL_CTX *ctx_c = NULL; + WOLFSSL_CTX *ctx_s = NULL; + WOLFSSL *ssl_c = NULL; + WOLFSSL *ssl_s = NULL; SOCKADDR_IN fake_addr6; - int sockfd; - int ret; + int sockfd = -1; - ctx_c = wolfSSL_CTX_new(wolfDTLSv1_2_client_method()); - if (ctx_c == NULL) - return TEST_FAIL; - ssl_c = wolfSSL_new(ctx_c); - if (ssl_c == NULL) - return TEST_FAIL; - ctx_s = wolfSSL_CTX_new(wolfDTLSv1_2_server_method()); - if (ctx_s == NULL) - return TEST_FAIL; - ret = wolfSSL_CTX_use_PrivateKey_file(ctx_s, svrKeyFile, - WOLFSSL_FILETYPE_PEM); - if (ret != WOLFSSL_SUCCESS) - return- -1; - ret = wolfSSL_CTX_use_certificate_file(ctx_s, svrCertFile, - WOLFSSL_FILETYPE_PEM); - if (ret != WOLFSSL_SUCCESS) - return -1; - ssl_s = wolfSSL_new(ctx_s); - if (ssl_s == NULL) - return TEST_FAIL; + ExpectNotNull(ctx_c = wolfSSL_CTX_new(wolfDTLSv1_2_client_method())); + ExpectNotNull(ssl_c = wolfSSL_new(ctx_c)); + ExpectNotNull(ctx_s = wolfSSL_CTX_new(wolfDTLSv1_2_server_method())); + ExpectIntEQ(wolfSSL_CTX_use_PrivateKey_file(ctx_s, svrKeyFile, + WOLFSSL_FILETYPE_PEM), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CTX_use_certificate_file(ctx_s, svrCertFile, + WOLFSSL_FILETYPE_PEM), WOLFSSL_SUCCESS); + ExpectNotNull(ssl_s = wolfSSL_new(ctx_s)); XMEMSET((byte*)&fake_addr6, 0, sizeof(fake_addr6)); /* mimic a sockaddr_in6 struct, this way we can't test without * WOLFSSL_IPV6 */ fake_addr6.sin_family = WOLFSSL_IP6; - sockfd = socket(AF_INET, SOCK_DGRAM, 0); - if (sockfd == -1) - return TEST_FAIL; - ret = wolfSSL_set_fd(ssl_c, sockfd); - if (ret != WOLFSSL_SUCCESS) - return TEST_FAIL; + ExpectIntNE(sockfd = socket(AF_INET, SOCK_DGRAM, 0), -1); + ExpectIntEQ(wolfSSL_set_fd(ssl_c, sockfd), WOLFSSL_SUCCESS); /* can't return error here, as the peer is opaque for wolfssl library at * this point */ - ret = wolfSSL_dtls_set_peer(ssl_c, &fake_addr6, sizeof(fake_addr6)); - if (ret != WOLFSSL_SUCCESS) - return TEST_FAIL; - ret = fcntl(sockfd, F_SETFL, O_NONBLOCK); - if (ret == -1) - return TEST_FAIL; + ExpectIntEQ(wolfSSL_dtls_set_peer(ssl_c, &fake_addr6, sizeof(fake_addr6)), + WOLFSSL_SUCCESS); + ExpectIntNE(fcntl(sockfd, F_SETFL, O_NONBLOCK), -1); wolfSSL_dtls_set_using_nonblock(ssl_c, 1); - ret = wolfSSL_connect(ssl_c); - if (ret != WOLFSSL_FAILURE && ssl_c->error != SOCKET_ERROR_E) - return TEST_FAIL; + ExpectIntNE(wolfSSL_connect(ssl_c), WOLFSSL_SUCCESS); + ExpectIntEQ(ssl_c->error, SOCKET_ERROR_E); - ret = wolfSSL_dtls_set_peer(ssl_s, &fake_addr6, sizeof(fake_addr6)); - if (ret != WOLFSSL_SUCCESS) - return TEST_FAIL; + ExpectIntEQ(wolfSSL_dtls_set_peer(ssl_s, &fake_addr6, sizeof(fake_addr6)), + WOLFSSL_SUCCESS); /* re-use the socket */ - ret = wolfSSL_set_fd(ssl_c, sockfd); - if (ret != WOLFSSL_SUCCESS) - return TEST_FAIL; + ExpectIntEQ(wolfSSL_set_fd(ssl_c, sockfd), WOLFSSL_SUCCESS); wolfSSL_dtls_set_using_nonblock(ssl_s, 1); - ret = wolfSSL_accept(ssl_s); - if (ret != WOLFSSL_FAILURE && ssl_s->error != SOCKET_ERROR_E) - return TEST_FAIL; - close(sockfd); + ExpectIntNE(wolfSSL_accept(ssl_s), WOLFSSL_SUCCESS); + ExpectIntEQ(ssl_s->error, SOCKET_ERROR_E); + if (sockfd != -1) + close(sockfd); wolfSSL_free(ssl_c); wolfSSL_CTX_free(ctx_c); wolfSSL_free(ssl_s); wolfSSL_CTX_free(ctx_s); - return TEST_SUCCESS; + return EXPECT_RESULT(); } #else static int test_dtls_ipv6_check(void) @@ -66153,128 +59717,318 @@ int testAll = 1; TEST_CASE testCases[] = { TEST_DECL(test_fileAccess), - TEST_DECL(test_wolfSSL_Init), - TEST_DECL(test_wolfSSL_Method_Allocators), -#ifndef NO_WOLFSSL_SERVER - TEST_DECL(test_wolfSSL_CTX_new), -#endif - TEST_DECL(test_server_wolfSSL_new), - TEST_DECL(test_client_wolfSSL_new), -#if (!defined(NO_WOLFSSL_CLIENT) || !defined(NO_WOLFSSL_SERVER)) && \ - (!defined(NO_RSA) || defined(HAVE_ECC)) && !defined(NO_FILESYSTEM) - TEST_DECL(test_for_double_Free), -#endif -#ifdef HAVE_IO_TESTS_DEPENDENCIES - TEST_DECL(test_wolfSSL_get_finished), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_CTX_add_session), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_CTX_add_session_ext), -#endif - TEST_DECL(test_SSL_CIPHER_get_xxx), - TEST_DECL(test_wolfSSL_ERR_strings), - TEST_DECL(test_wolfSSL_CTX_set_cipher_list_bytes), - TEST_DECL(test_wolfSSL_CTX_use_certificate_file), - TEST_DECL(test_wolfSSL_CTX_use_certificate_buffer), - TEST_DECL(test_wolfSSL_CTX_use_PrivateKey_file), - TEST_DECL(test_wolfSSL_CTX_load_verify_locations), - /* Large number of memory allocations. */ - TEST_DECL(test_wolfSSL_CTX_load_system_CA_certs), - TEST_DECL(test_wolfSSL_CertManagerCheckOCSPResponse), - TEST_DECL(test_wolfSSL_CheckOCSPResponse), - TEST_DECL(test_wolfSSL_CertManagerLoadCABuffer), - TEST_DECL(test_wolfSSL_CertManagerLoadCABuffer_ex), - TEST_DECL(test_wolfSSL_CertManagerGetCerts), - TEST_DECL(test_wolfSSL_CertManagerSetVerify), - TEST_DECL(test_wolfSSL_CertManagerNameConstraint), - TEST_DECL(test_wolfSSL_CertManagerNameConstraint2), - TEST_DECL(test_wolfSSL_CertManagerNameConstraint3), - TEST_DECL(test_wolfSSL_CertManagerNameConstraint4), - TEST_DECL(test_wolfSSL_CertManagerNameConstraint5), - TEST_DECL(test_wolfSSL_CertManagerCRL), + /********************************* + * wolfcrypt + *********************************/ - TEST_DECL(test_wolfSSL_CertRsaPss), - TEST_DECL(test_wolfSSL_CTX_load_verify_locations_ex), - TEST_DECL(test_wolfSSL_CTX_load_verify_buffer_ex), - TEST_DECL(test_wolfSSL_CTX_load_verify_chain_buffer_format), - TEST_DECL(test_wolfSSL_CTX_add1_chain_cert), - TEST_DECL(test_wolfSSL_CTX_use_certificate_chain_file_format), - TEST_DECL(test_wolfSSL_CTX_trust_peer_cert), - TEST_DECL(test_wolfSSL_CTX_SetTmpDH_file), - TEST_DECL(test_wolfSSL_CTX_SetTmpDH_buffer), - TEST_DECL(test_wolfSSL_CTX_SetMinMaxDhKey_Sz), - TEST_DECL(test_wolfSSL_CTX_der_load_verify_locations), - TEST_DECL(test_wolfSSL_CTX_enable_disable), - TEST_DECL(test_wolfSSL_CTX_ticket_API), - TEST_DECL(test_wolfSSL_SetTmpDH_file), - TEST_DECL(test_wolfSSL_SetTmpDH_buffer), - TEST_DECL(test_wolfSSL_SetMinMaxDhKey_Sz), - TEST_DECL(test_SetTmpEC_DHE_Sz), - TEST_DECL(test_wolfSSL_CTX_get0_privatekey), - TEST_DECL(test_wolfSSL_dtls_set_mtu), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_dtls_plaintext), -#if !defined(NO_WOLFSSL_CLIENT) && !defined(NO_WOLFSSL_SERVER) && \ - defined(HAVE_IO_TESTS_DEPENDENCIES) - TEST_DECL(test_wolfSSL_read_write), - /* Can't memory test as server hangs if client fails before second connect. - */ - TEST_DECL(test_wolfSSL_reuse_WOLFSSLobj), - TEST_DECL(test_wolfSSL_CTX_verifyDepth_ServerClient_1), - TEST_DECL(test_wolfSSL_CTX_verifyDepth_ServerClient_2), - TEST_DECL(test_wolfSSL_CTX_verifyDepth_ServerClient_3), - TEST_DECL(test_wolfSSL_CTX_set_cipher_list), - /* Can't memory test as server hangs. */ - TEST_DECL(test_wolfSSL_dtls_export), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_tls_export), -#endif - TEST_DECL(test_wolfSSL_SetMinVersion), - TEST_DECL(test_wolfSSL_CTX_SetMinVersion), + TEST_DECL(test_ForceZero), - /* TLS extensions tests */ -#ifdef HAVE_IO_TESTS_DEPENDENCIES -#ifdef HAVE_SNI - TEST_DECL(test_wolfSSL_UseSNI_params), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_UseSNI_connection), - TEST_DECL(test_wolfSSL_SNI_GetFromBuffer), -#endif /* HAVE_SNI */ -#endif - TEST_DECL(test_wolfSSL_UseTrustedCA), - TEST_DECL(test_wolfSSL_UseMaxFragment), - TEST_DECL(test_wolfSSL_UseTruncatedHMAC), - TEST_DECL(test_wolfSSL_UseSupportedCurve), -#if defined(HAVE_ALPN) && defined(HAVE_IO_TESTS_DEPENDENCIES) - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_UseALPN_connection), - TEST_DECL(test_wolfSSL_UseALPN_params), -#endif -#ifdef HAVE_ALPN_PROTOS_SUPPORT - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_set_alpn_protos), -#endif - TEST_DECL(test_wolfSSL_DisableExtendedMasterSecret), - TEST_DECL(test_wolfSSL_wolfSSL_UseSecureRenegotiation), - TEST_DECL(test_wolfSSL_SCR_Reconnect), - TEST_DECL(test_tls_ext_duplicate), -#if defined(WOLFSSL_TLS13) && defined(HAVE_ECH) - TEST_DECL(test_wolfSSL_Tls13_ECH_params), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_Tls13_ECH), -#endif + TEST_DECL(test_wolfCrypt_Init), - TEST_DECL(test_wolfSSL_PKCS12), - TEST_DECL(test_wolfSSL_no_password_cb), - TEST_DECL(test_wolfSSL_PKCS8), - TEST_DECL(test_wolfSSL_PKCS8_ED25519), - TEST_DECL(test_wolfSSL_PKCS8_ED448), - TEST_DECL(test_wolfSSL_PKCS5), + /* Locking with Compat Mutex */ + TEST_DECL(test_wc_SetMutexCb), + TEST_DECL(test_wc_LockMutex_ex), - TEST_DECL(test_wolfSSL_X509_TLS_version_test_1), - TEST_DECL(test_wolfSSL_X509_TLS_version_test_2), + /* Digests */ + TEST_DECL(test_wc_InitMd5), + TEST_DECL(test_wc_Md5Update), + TEST_DECL(test_wc_Md5Final), + TEST_DECL(test_wc_InitSha), + TEST_DECL(test_wc_ShaUpdate), + TEST_DECL(test_wc_ShaFinal), + TEST_DECL(test_wc_InitSha256), + TEST_DECL(test_wc_Sha256Update), + TEST_DECL(test_wc_Sha256Final), + TEST_DECL(test_wc_Sha256FinalRaw), + TEST_DECL(test_wc_Sha256GetFlags), + TEST_DECL(test_wc_Sha256Free), + TEST_DECL(test_wc_Sha256GetHash), + TEST_DECL(test_wc_Sha256Copy), + TEST_DECL(test_wc_InitSha224), + TEST_DECL(test_wc_Sha224Update), + TEST_DECL(test_wc_Sha224Final), + TEST_DECL(test_wc_Sha224SetFlags), + TEST_DECL(test_wc_Sha224GetFlags), + TEST_DECL(test_wc_Sha224Free), + TEST_DECL(test_wc_Sha224GetHash), + TEST_DECL(test_wc_Sha224Copy), + + TEST_DECL(test_wc_InitSha512), + TEST_DECL(test_wc_Sha512Update), + TEST_DECL(test_wc_Sha512Final), + TEST_DECL(test_wc_Sha512GetFlags), + TEST_DECL(test_wc_Sha512FinalRaw), + TEST_DECL(test_wc_Sha512Free), + TEST_DECL(test_wc_Sha512GetHash), + TEST_DECL(test_wc_Sha512Copy), + + TEST_DECL(test_wc_InitSha512_224), + TEST_DECL(test_wc_Sha512_224Update), + TEST_DECL(test_wc_Sha512_224Final), + TEST_DECL(test_wc_Sha512_224GetFlags), + TEST_DECL(test_wc_Sha512_224FinalRaw), + TEST_DECL(test_wc_Sha512_224Free), + TEST_DECL(test_wc_Sha512_224GetHash), + TEST_DECL(test_wc_Sha512_224Copy), + TEST_DECL(test_wc_InitSha512_256), + TEST_DECL(test_wc_Sha512_256Update), + TEST_DECL(test_wc_Sha512_256Final), + TEST_DECL(test_wc_Sha512_256GetFlags), + TEST_DECL(test_wc_Sha512_256FinalRaw), + TEST_DECL(test_wc_Sha512_256Free), + TEST_DECL(test_wc_Sha512_256GetHash), + TEST_DECL(test_wc_Sha512_256Copy), + + TEST_DECL(test_wc_InitSha384), + TEST_DECL(test_wc_Sha384Update), + TEST_DECL(test_wc_Sha384Final), + TEST_DECL(test_wc_Sha384GetFlags), + TEST_DECL(test_wc_Sha384FinalRaw), + TEST_DECL(test_wc_Sha384Free), + TEST_DECL(test_wc_Sha384GetHash), + TEST_DECL(test_wc_Sha384Copy), + + TEST_DECL(test_wc_InitBlake2b), + TEST_DECL(test_wc_InitBlake2b_WithKey), + TEST_DECL(test_wc_InitBlake2s_WithKey), + TEST_DECL(test_wc_InitRipeMd), + TEST_DECL(test_wc_RipeMdUpdate), + TEST_DECL(test_wc_RipeMdFinal), + + TEST_DECL(test_wc_InitSha3), + TEST_DECL(testing_wc_Sha3_Update), + TEST_DECL(test_wc_Sha3_224_Final), + TEST_DECL(test_wc_Sha3_256_Final), + TEST_DECL(test_wc_Sha3_384_Final), + TEST_DECL(test_wc_Sha3_512_Final), + TEST_DECL(test_wc_Sha3_224_Copy), + TEST_DECL(test_wc_Sha3_256_Copy), + TEST_DECL(test_wc_Sha3_384_Copy), + TEST_DECL(test_wc_Sha3_512_Copy), + TEST_DECL(test_wc_Sha3_GetFlags), + TEST_DECL(test_wc_InitShake256), + TEST_DECL(testing_wc_Shake256_Update), + TEST_DECL(test_wc_Shake256_Final), + TEST_DECL(test_wc_Shake256_Copy), + TEST_DECL(test_wc_Shake256Hash), + + TEST_DECL(test_wc_HashInit), + TEST_DECL(test_wc_HashSetFlags), + TEST_DECL(test_wc_HashGetFlags), + + /* HMAC */ + TEST_DECL(test_wc_Md5HmacSetKey), + TEST_DECL(test_wc_Md5HmacUpdate), + TEST_DECL(test_wc_Md5HmacFinal), + TEST_DECL(test_wc_ShaHmacSetKey), + TEST_DECL(test_wc_ShaHmacUpdate), + TEST_DECL(test_wc_ShaHmacFinal), + TEST_DECL(test_wc_Sha224HmacSetKey), + TEST_DECL(test_wc_Sha224HmacUpdate), + TEST_DECL(test_wc_Sha224HmacFinal), + TEST_DECL(test_wc_Sha256HmacSetKey), + TEST_DECL(test_wc_Sha256HmacUpdate), + TEST_DECL(test_wc_Sha256HmacFinal), + TEST_DECL(test_wc_Sha384HmacSetKey), + TEST_DECL(test_wc_Sha384HmacUpdate), + TEST_DECL(test_wc_Sha384HmacFinal), + + /* CMAC */ + TEST_DECL(test_wc_InitCmac), + TEST_DECL(test_wc_CmacUpdate), + TEST_DECL(test_wc_CmacFinal), + TEST_DECL(test_wc_AesCmacGenerate), + + /* Cipher */ + TEST_DECL(test_wc_AesGcmStream), + + TEST_DECL(test_wc_Des3_SetIV), + TEST_DECL(test_wc_Des3_SetKey), + TEST_DECL(test_wc_Des3_CbcEncryptDecrypt), + TEST_DECL(test_wc_Des3_CbcEncryptDecryptWithKey), + TEST_DECL(test_wc_Des3_EcbEncrypt), + + TEST_DECL(test_wc_Chacha_SetKey), + TEST_DECL(test_wc_Chacha_Process), + TEST_DECL(test_wc_ChaCha20Poly1305_aead), + TEST_DECL(test_wc_Poly1305SetKey), + + TEST_DECL(test_wc_CamelliaSetKey), + TEST_DECL(test_wc_CamelliaSetIV), + TEST_DECL(test_wc_CamelliaEncryptDecryptDirect), + TEST_DECL(test_wc_CamelliaCbcEncryptDecrypt), + + TEST_DECL(test_wc_Arc4SetKey), + TEST_DECL(test_wc_Arc4Process), + + TEST_DECL(test_wc_Rc2SetKey), + TEST_DECL(test_wc_Rc2SetIV), + TEST_DECL(test_wc_Rc2EcbEncryptDecrypt), + TEST_DECL(test_wc_Rc2CbcEncryptDecrypt), + + /* AES cipher and GMAC. */ + TEST_DECL(test_wc_AesSetKey), + TEST_DECL(test_wc_AesSetIV), + TEST_DECL(test_wc_AesCbcEncryptDecrypt), + TEST_DECL(test_wc_AesCtrEncryptDecrypt), + TEST_DECL(test_wc_AesGcmSetKey), + TEST_DECL(test_wc_AesGcmEncryptDecrypt), + TEST_DECL(test_wc_AesGcmMixedEncDecLongIV), + TEST_DECL(test_wc_GmacSetKey), + TEST_DECL(test_wc_GmacUpdate), + TEST_DECL(test_wc_AesCcmSetKey), + TEST_DECL(test_wc_AesCcmEncryptDecrypt), + + /* RNG tests */ +#ifdef HAVE_HASHDRBG +#ifdef TEST_RESEED_INTERVAL + TEST_DECL(test_wc_RNG_GenerateBlock_Reseed), +#endif + TEST_DECL(test_wc_RNG_GenerateBlock), +#endif + TEST_DECL(test_get_rand_digit), + TEST_DECL(test_wc_InitRngNonce), + TEST_DECL(test_wc_InitRngNonce_ex), + + /* MP API tests */ + TEST_DECL(test_get_digit_count), + TEST_DECL(test_mp_cond_copy), + TEST_DECL(test_mp_rand), + TEST_DECL(test_get_digit), + TEST_DECL(test_wc_export_int), + + /* RSA */ + TEST_DECL(test_wc_InitRsaKey), + TEST_DECL(test_wc_RsaPrivateKeyDecode), + TEST_DECL(test_wc_RsaPublicKeyDecode), + TEST_DECL(test_wc_RsaPublicKeyDecodeRaw), + TEST_DECL(test_wc_MakeRsaKey), + TEST_DECL(test_wc_CheckProbablePrime), + TEST_DECL(test_wc_RsaPSS_Verify), + TEST_DECL(test_wc_RsaPSS_VerifyCheck), + TEST_DECL(test_wc_RsaPSS_VerifyCheckInline), + TEST_DECL(test_wc_RsaKeyToDer), + TEST_DECL(test_wc_RsaKeyToPublicDer), + TEST_DECL(test_wc_RsaPublicEncryptDecrypt), + TEST_DECL(test_wc_RsaPublicEncryptDecrypt_ex), + TEST_DECL(test_wc_RsaEncryptSize), + TEST_DECL(test_wc_RsaSSL_SignVerify), + TEST_DECL(test_wc_RsaFlattenPublicKey), + TEST_DECL(test_RsaDecryptBoundsCheck), + + /* DSA */ + TEST_DECL(test_wc_InitDsaKey), + TEST_DECL(test_wc_DsaSignVerify), + TEST_DECL(test_wc_DsaPublicPrivateKeyDecode), + TEST_DECL(test_wc_MakeDsaKey), + TEST_DECL(test_wc_DsaKeyToDer), + TEST_DECL(test_wc_DsaKeyToPublicDer), + TEST_DECL(test_wc_DsaImportParamsRaw), + TEST_DECL(test_wc_DsaImportParamsRawCheck), + TEST_DECL(test_wc_DsaExportParamsRaw), + TEST_DECL(test_wc_DsaExportKeyRaw), + + /* DH */ + TEST_DECL(test_wc_DhPublicKeyDecode), + + /* wolfCrypt ECC tests */ + TEST_DECL(test_wc_ecc_get_curve_size_from_name), + TEST_DECL(test_wc_ecc_get_curve_id_from_name), + TEST_DECL(test_wc_ecc_get_curve_id_from_params), +#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) && \ + !defined(HAVE_SELFTEST) && \ + !(defined(HAVE_FIPS) || defined(HAVE_FIPS_VERSION)) + TEST_DECL(test_wc_ecc_get_curve_id_from_dp_params), +#endif + TEST_DECL(test_wc_ecc_make_key), + TEST_DECL(test_wc_ecc_init), + TEST_DECL(test_wc_ecc_check_key), + TEST_DECL(test_wc_ecc_get_generator), + TEST_DECL(test_wc_ecc_size), + TEST_DECL(test_wc_ecc_params), + TEST_DECL(test_wc_ecc_signVerify_hash), + TEST_DECL(test_wc_ecc_shared_secret), + TEST_DECL(test_wc_ecc_export_x963), + TEST_DECL(test_wc_ecc_export_x963_ex), + TEST_DECL(test_wc_ecc_import_x963), + TEST_DECL(test_wc_ecc_import_private_key), + TEST_DECL(test_wc_ecc_export_private_only), + TEST_DECL(test_wc_ecc_rs_to_sig), + TEST_DECL(test_wc_ecc_import_raw), + TEST_DECL(test_wc_ecc_import_unsigned), + TEST_DECL(test_wc_ecc_sig_size), + TEST_DECL(test_wc_ecc_ctx_new), + TEST_DECL(test_wc_ecc_ctx_reset), + TEST_DECL(test_wc_ecc_ctx_set_peer_salt), + TEST_DECL(test_wc_ecc_ctx_set_info), + TEST_DECL(test_wc_ecc_encryptDecrypt), + TEST_DECL(test_wc_ecc_del_point), + TEST_DECL(test_wc_ecc_pointFns), + TEST_DECL(test_wc_ecc_shared_secret_ssh), + TEST_DECL(test_wc_ecc_verify_hash_ex), + TEST_DECL(test_wc_ecc_mulmod), + TEST_DECL(test_wc_ecc_is_valid_idx), + TEST_DECL(test_wc_ecc_get_curve_id_from_oid), + TEST_DECL(test_wc_ecc_sig_size_calc), + TEST_DECL(test_wc_EccPrivateKeyToDer), + + /* Curve25519 */ + TEST_DECL(test_wc_curve25519_init), + TEST_DECL(test_wc_curve25519_size), + TEST_DECL(test_wc_curve25519_export_key_raw), + TEST_DECL(test_wc_curve25519_export_key_raw_ex), + TEST_DECL(test_wc_curve25519_make_key), + TEST_DECL(test_wc_curve25519_shared_secret_ex), + TEST_DECL(test_wc_curve25519_make_pub), + TEST_DECL(test_wc_curve25519_export_public_ex), + TEST_DECL(test_wc_curve25519_export_private_raw_ex), + TEST_DECL(test_wc_curve25519_import_private_raw_ex), + TEST_DECL(test_wc_curve25519_import_private), + + /* ED25519 */ + TEST_DECL(test_wc_ed25519_make_key), + TEST_DECL(test_wc_ed25519_init), + TEST_DECL(test_wc_ed25519_sign_msg), + TEST_DECL(test_wc_ed25519_import_public), + TEST_DECL(test_wc_ed25519_import_private_key), + TEST_DECL(test_wc_ed25519_export), + TEST_DECL(test_wc_ed25519_size), + TEST_DECL(test_wc_ed25519_exportKey), + TEST_DECL(test_wc_Ed25519PublicKeyToDer), + TEST_DECL(test_wc_Ed25519KeyToDer), + TEST_DECL(test_wc_Ed25519PrivateKeyToDer), + + /* Curve448 */ + TEST_DECL(test_wc_curve448_make_key), + TEST_DECL(test_wc_curve448_shared_secret_ex), + TEST_DECL(test_wc_curve448_export_public_ex), + TEST_DECL(test_wc_curve448_export_private_raw_ex), + TEST_DECL(test_wc_curve448_export_key_raw), + TEST_DECL(test_wc_curve448_import_private_raw_ex), + TEST_DECL(test_wc_curve448_import_private), + TEST_DECL(test_wc_curve448_init), + TEST_DECL(test_wc_curve448_size), + + /* Ed448 */ + TEST_DECL(test_wc_ed448_make_key), + TEST_DECL(test_wc_ed448_init), + TEST_DECL(test_wc_ed448_sign_msg), + TEST_DECL(test_wc_ed448_import_public), + TEST_DECL(test_wc_ed448_import_private_key), + TEST_DECL(test_wc_ed448_export), + TEST_DECL(test_wc_ed448_size), + TEST_DECL(test_wc_ed448_exportKey), + TEST_DECL(test_wc_Ed448PublicKeyToDer), + TEST_DECL(test_wc_Ed448KeyToDer), + TEST_DECL(test_wc_Ed448PrivateKeyToDer), + + /* Signature API */ + TEST_DECL(test_wc_SignatureGetSize_ecc), + TEST_DECL(test_wc_SignatureGetSize_rsa), + + /* PEM and DER APIs. */ TEST_DECL(test_wc_PemToDer), TEST_DECL(test_wc_AllocDer), TEST_DECL(test_wc_CertPemToDer), @@ -66284,12 +60038,63 @@ TEST_CASE testCases[] = { TEST_DECL(test_wc_GetPubKeyDerFromCert), TEST_DECL(test_wc_CheckCertSigPubKey), - /* OCSP Stapling */ - TEST_DECL(test_wolfSSL_UseOCSPStapling), - TEST_DECL(test_wolfSSL_UseOCSPStaplingV2), + /* wolfCrypt ASN tests */ + TEST_DECL(test_ToTraditional), + TEST_DECL(test_wc_CreateEncryptedPKCS8Key), + TEST_DECL(test_wc_GetPkcs8TraditionalOffset), - /* Multicast */ - TEST_DECL(test_wolfSSL_mcast), + /* Certificate */ + TEST_DECL(test_wc_SetSubjectRaw), + TEST_DECL(test_wc_GetSubjectRaw), + TEST_DECL(test_wc_SetIssuerRaw), + TEST_DECL(test_wc_SetIssueBuffer), + TEST_DECL(test_wc_SetSubjectKeyId), + TEST_DECL(test_wc_SetSubject), + TEST_DECL(test_CheckCertSignature), + TEST_DECL(test_wc_ParseCert), + TEST_DECL(test_wc_ParseCert_Error), + TEST_DECL(test_MakeCertWithPathLen), + TEST_DECL(test_wc_SetKeyUsage), + TEST_DECL(test_wc_SetAuthKeyIdFromPublicKey_ex), + TEST_DECL(test_wc_SetSubjectBuffer), + TEST_DECL(test_wc_SetSubjectKeyIdFromPublicKey_ex), + + /* wolfcrypt PKCS#7 */ + TEST_DECL(test_wc_PKCS7_New), + TEST_DECL(test_wc_PKCS7_Init), + TEST_DECL(test_wc_PKCS7_InitWithCert), + TEST_DECL(test_wc_PKCS7_EncodeData), + TEST_DECL(test_wc_PKCS7_EncodeSignedData), + TEST_DECL(test_wc_PKCS7_EncodeSignedData_ex), + TEST_DECL(test_wc_PKCS7_VerifySignedData_RSA), + TEST_DECL(test_wc_PKCS7_VerifySignedData_ECC), + TEST_DECL(test_wc_PKCS7_EncodeDecodeEnvelopedData), + TEST_DECL(test_wc_PKCS7_EncodeEncryptedData), + TEST_DECL(test_wc_PKCS7_Degenerate), + TEST_DECL(test_wc_PKCS7_BER), + TEST_DECL(test_wc_PKCS7_signed_enveloped), + TEST_DECL(test_wc_PKCS7_NoDefaultSignedAttribs), + TEST_DECL(test_wc_PKCS7_SetOriEncryptCtx), + TEST_DECL(test_wc_PKCS7_SetOriDecryptCtx), + TEST_DECL(test_wc_PKCS7_DecodeCompressedData), + + /* wolfCrypt PKCS#12 */ + TEST_DECL(test_wc_i2d_PKCS12), + + /* + * test_wolfCrypt_Cleanup needs to come after the above wolfCrypt tests to + * avoid memory leaks. + */ + TEST_DECL(test_wolfCrypt_Cleanup), + + /********************************* + * OpenSSL compatibility API tests + *********************************/ + + /* If at some point a stub get implemented this test should fail indicating + * a need to implement a new test case + */ + TEST_DECL(test_stubs_are_stubs), /* ASN.1 compatibility API tests */ TEST_DECL(test_wolfSSL_ASN1_BIT_STRING), @@ -66325,7 +60130,6 @@ TEST_CASE testCases[] = { TEST_DECL(test_wolfSSL_ASN1_TYPE), TEST_DECL(test_wolfSSL_IMPLEMENT_ASN1_FUNCTIONS), - /* compatibility tests */ TEST_DECL(test_wolfSSL_lhash), TEST_DECL(test_wolfSSL_certs), @@ -66348,14 +60152,6 @@ TEST_CASE testCases[] = { TEST_DECL(test_wolfSSL_PEM_PUBKEY), #endif - TEST_DECL(test_DSA_do_sign_verify), -#ifdef OPENSSL_ALL - TEST_DECL(test_wolfSSL_DSA_generate_parameters), - TEST_DECL(test_wolfSSL_DSA_SIG), -#endif - TEST_DECL(test_wolfSSL_tmp_dh), - TEST_DECL(test_wolfSSL_ctrl), - /* EVP API testing */ TEST_DECL(test_wolfSSL_EVP_ENCODE_CTX_new), TEST_DECL(test_wolfSSL_EVP_ENCODE_CTX_free), @@ -66408,6 +60204,10 @@ TEST_CASE testCases[] = { TEST_DECL(test_evp_cipher_aes_gcm), #endif TEST_DECL(test_wolfSSL_EVP_Cipher_extra), +#ifdef OPENSSL_EXTRA + TEST_DECL(test_wolfSSL_EVP_get_cipherbynid), + TEST_DECL(test_wolfSSL_EVP_CIPHER_CTX), +#endif #ifdef OPENSSL_ALL TEST_DECL(test_wolfSSL_EVP_CIPHER_CTX_iv_length), TEST_DECL(test_wolfSSL_EVP_CIPHER_CTX_key_length), @@ -66453,7 +60253,17 @@ TEST_CASE testCases[] = { TEST_DECL(test_wolfSSL_EVP_PKEY_CTX_set_rsa_keygen_bits), TEST_DECL(test_wolfSSL_EVP_PKEY_CTX_new_id), TEST_DECL(test_wolfSSL_EVP_PKEY_get0_EC_KEY), +#endif + TEST_DECL(test_EVP_PKEY_rsa), + TEST_DECL(test_EVP_PKEY_ec), + TEST_DECL(test_wolfSSL_EVP_PKEY_encrypt), + TEST_DECL(test_wolfSSL_EVP_PKEY_sign_verify_rsa), + TEST_DECL(test_wolfSSL_EVP_PKEY_sign_verify_dsa), + TEST_DECL(test_wolfSSL_EVP_PKEY_sign_verify_ec), + TEST_DECL(test_EVP_PKEY_cmp), + +#ifdef OPENSSL_ALL TEST_DECL(test_wolfSSL_EVP_SignInit_ex), TEST_DECL(test_wolfSSL_EVP_PKEY_param_check), TEST_DECL(test_wolfSSL_QT_EVP_PKEY_CTX_free), @@ -66473,7 +60283,6 @@ TEST_CASE testCases[] = { TEST_DECL(test_wc_ERR_print_errors_fp), #endif TEST_DECL(test_wolfSSL_configure_args), - TEST_DECL(test_wolfSSL_set_options), TEST_DECL(test_wolfSSL_sk_SSL_CIPHER), TEST_DECL(test_wolfSSL_set1_curves_list), TEST_DECL(test_wolfSSL_set1_sigalgs_list), @@ -66558,25 +60367,37 @@ TEST_CASE testCases[] = { TEST_DECL(test_wolfSSL_X509_print), TEST_DECL(test_wolfSSL_X509_CRL_print), #endif + TEST_DECL(test_X509_get_signature_nid), + /* X509 extension testing. */ + TEST_DECL(test_wolfSSL_X509_get_extension_flags), + TEST_DECL(test_wolfSSL_X509_get_ext), + TEST_DECL(test_wolfSSL_X509_get_ext_by_NID), + TEST_DECL(test_wolfSSL_X509_get_ext_subj_alt_name), + TEST_DECL(test_wolfSSL_X509_get_ext_count), + TEST_DECL(test_wolfSSL_X509_EXTENSION_new), + TEST_DECL(test_wolfSSL_X509_EXTENSION_get_object), + TEST_DECL(test_wolfSSL_X509_EXTENSION_get_data), + TEST_DECL(test_wolfSSL_X509_EXTENSION_get_critical), + TEST_DECL(test_wolfSSL_X509V3_EXT_get), + TEST_DECL(test_wolfSSL_X509V3_EXT_nconf), + TEST_DECL(test_wolfSSL_X509V3_EXT), + TEST_DECL(test_wolfSSL_X509V3_EXT_print), + TEST_DECL(test_wolfSSL_X509_cmp), TEST_DECL(test_GENERAL_NAME_set0_othername), TEST_DECL(test_othername_and_SID_ext), + /* OpenSSL sk_X509 API test */ + TEST_DECL(test_sk_X509), + /* OpenSSL sk_X509_CRL API test */ + TEST_DECL(test_sk_X509_CRL), - TEST_DECL(test_wolfSSL_msgCb), - TEST_DECL(test_wolfSSL_either_side), - TEST_DECL(test_wolfSSL_DTLS_either_side), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_dtls_fragments), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_dtls_AEAD_limit), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_ignore_alert_before_cookie), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_dtls_bad_record), - /* Uses Assert in handshake callback. */ - TEST_DECL(test_wolfSSL_dtls_stateless), - TEST_DECL(test_generate_cookie), + /* OpenSSL X509 REQ API test */ + TEST_DECL(test_X509_REQ), + + /* OpenSSL compatibility outside SSL context w/ CRL lookup directory */ + TEST_DECL(test_X509_STORE_No_SSL_CTX), + TEST_DECL(test_X509_LOOKUP_add_dir), /* RAND compatability API */ TEST_DECL(test_wolfSSL_RAND_set_rand_method), @@ -66597,27 +60418,29 @@ TEST_CASE testCases[] = { TEST_DECL(test_wolfSSL_BN_rand), TEST_DECL(test_wolfSSL_BN_prime), - TEST_DECL(test_wolfSSL_CTX_get0_set1_param), - TEST_DECL(test_wolfSSL_a2i_IPADDRESS), - TEST_DECL(test_wolfSSL_BUF), - TEST_DECL(test_wolfSSL_set_tlsext_status_type), - /* Can't memory test as server hangs. */ - TEST_DECL(test_wolfSSL_CTX_set_client_CA_list), - TEST_DECL(test_wolfSSL_CTX_add_client_CA), - TEST_DECL(test_wolfSSL_CTX_set_srp_username), - TEST_DECL(test_wolfSSL_CTX_set_srp_password), - TEST_DECL(test_wolfSSL_CTX_set_keylog_callback), - TEST_DECL(test_wolfSSL_CTX_get_keylog_callback), - TEST_DECL(test_wolfSSL_Tls12_Key_Logging_test), - /* Can't memory test as server hangs. */ - TEST_DECL(test_wolfSSL_Tls13_Key_Logging_test), - TEST_DECL(test_wolfSSL_Tls13_postauth), - TEST_DECL(test_wolfSSL_CTX_set_ecdh_auto), - TEST_DECL(test_wolfSSL_set_minmax_proto_version), - TEST_DECL(test_wolfSSL_CTX_set_max_proto_version), - TEST_DECL(test_wolfSSL_THREADID_hash), + /* OpenSSL PKCS5 API test */ + TEST_DECL(test_wolfSSL_PKCS5), + + /* OpenSSL PKCS8 API test */ TEST_DECL(test_wolfSSL_PKCS8_Compat), TEST_DECL(test_wolfSSL_PKCS8_d2i), + + /* OpenSSL PKCS7 API test */ + TEST_DECL(test_wolfssl_PKCS7), + TEST_DECL(test_wolfSSL_PKCS7_certs), + TEST_DECL(test_wolfSSL_PKCS7_sign), + TEST_DECL(test_wolfSSL_PKCS7_SIGNED_new), +#ifndef NO_BIO + TEST_DECL(test_wolfSSL_PEM_write_bio_PKCS7), +#ifdef HAVE_SMIME + TEST_DECL(test_wolfSSL_SMIME_read_PKCS7), + TEST_DECL(test_wolfSSL_SMIME_write_PKCS7), +#endif /* HAVE_SMIME */ +#endif /* !NO_BIO */ + + /* OpenSSL PKCS12 API test */ + TEST_DECL(test_wolfSSL_PKCS12), + /* Can't memory test as callbacks use Assert. */ TEST_DECL(test_error_queue_per_thread), TEST_DECL(test_wolfSSL_ERR_put_error), @@ -66643,15 +60466,10 @@ TEST_CASE testCases[] = { /* Can't memory test as server hangs. */ TEST_DECL(test_wolfSSL_BIO_should_retry), TEST_DECL(test_wolfSSL_BIO_write), - /* Can't memory test as server hangs. */ - TEST_DECL(test_wolfSSL_BIO_connect), - /* Can't memory test as server Asserts in thread. */ - TEST_DECL(test_wolfSSL_BIO_accept), TEST_DECL(test_wolfSSL_BIO_printf), TEST_DECL(test_wolfSSL_BIO_f_md), TEST_DECL(test_wolfSSL_BIO_up_ref), TEST_DECL(test_wolfSSL_BIO_reset), - TEST_DECL(test_wolfSSL_BIO_tls), TEST_DECL(test_wolfSSL_BIO_get_len), #endif @@ -66700,6 +60518,7 @@ TEST_CASE testCases[] = { TEST_DECL(test_wolfSSL_PEM_read), + TEST_DECL(test_wolfSSL_OpenSSL_version), TEST_DECL(test_wolfSSL_OpenSSL_add_all_algorithms), TEST_DECL(test_wolfSSL_OPENSSL_hexstr2buf), @@ -66709,9 +60528,16 @@ TEST_CASE testCases[] = { TEST_DECL(test_wolfSSL_NCONF), #endif + TEST_DECL(test_wolfSSL_CRYPTO_memcmp), + TEST_DECL(test_wolfSSL_CRYPTO_get_ex_new_index), + TEST_DECL(test_wolfSSL_SESSION_get_ex_new_index), TEST_DECL(test_CRYPTO_set_dynlock_xxx), TEST_DECL(test_CRYPTO_THREADID_xxx), TEST_DECL(test_ENGINE_cleanup), + /* test the no op functions for compatibility */ + TEST_DECL(test_no_op_functions), + /* OpenSSL error API tests */ + TEST_DECL(test_ERR_load_crypto_strings), #ifdef OPENSSL_ALL TEST_DECL(test_wolfSSL_sk_CIPHER_description), @@ -66778,79 +60604,38 @@ TEST_CASE testCases[] = { TEST_DECL(test_ECDH_compute_key), #endif - /* Converted above to use Expect unless where stated. */ - TEST_DECL(test_wolfSSL_X509V3_EXT_get), - TEST_DECL(test_wolfSSL_X509V3_EXT_nconf), - TEST_DECL(test_wolfSSL_X509V3_EXT), - TEST_DECL(test_wolfSSL_X509_get_extension_flags), - TEST_DECL(test_wolfSSL_X509_get_ext), - TEST_DECL(test_wolfSSL_X509_get_ext_by_NID), - TEST_DECL(test_wolfSSL_X509_get_ext_subj_alt_name), - TEST_DECL(test_wolfSSL_X509_get_ext_count), - TEST_DECL(test_wolfSSL_X509_EXTENSION_new), - TEST_DECL(test_wolfSSL_X509_EXTENSION_get_object), - TEST_DECL(test_wolfSSL_X509_EXTENSION_get_data), - TEST_DECL(test_wolfSSL_X509_EXTENSION_get_critical), - TEST_DECL(test_wolfSSL_X509V3_EXT_print), - TEST_DECL(test_wolfSSL_X509_cmp), +#ifdef OPENSSL_EXTRA + TEST_DECL(test_ED25519), + TEST_DECL(test_ED448), +#endif + + TEST_DECL(test_DSA_do_sign_verify), +#ifdef OPENSSL_ALL + TEST_DECL(test_wolfSSL_DSA_generate_parameters), + TEST_DECL(test_wolfSSL_DSA_SIG), +#endif + TEST_DECL(test_openssl_generate_key_and_cert), - TEST_DECL(test_wolfSSL_CRYPTO_memcmp), - TEST_DECL(test_wolfSSL_read_detect_TCP_disconnect), - /* test the no op functions for compatibility */ - TEST_DECL(test_no_op_functions), - /* OpenSSL EVP_PKEY API tests */ - TEST_DECL(test_EVP_PKEY_rsa), - TEST_DECL(test_wolfSSL_EVP_PKEY_encrypt), - TEST_DECL(test_wolfSSL_EVP_PKEY_sign_verify), - TEST_DECL(test_EVP_PKEY_ec), - TEST_DECL(test_EVP_PKEY_cmp), - /* OpenSSL error API tests */ - TEST_DECL(test_ERR_load_crypto_strings), - /* OpenSSL sk_X509 API test */ - TEST_DECL(test_sk_X509), - /* OpenSSL sk_X509_CRL API test */ - TEST_DECL(test_sk_X509_CRL), - /* OpenSSL X509 API test */ - TEST_DECL(test_X509_get_signature_nid), - /* OpenSSL X509 REQ API test */ - TEST_DECL(test_X509_REQ), - /* OpenSSL PKCS7 API test */ - TEST_DECL(test_wolfssl_PKCS7), - /* Converted to use Expect. */ - TEST_DECL(test_wolfSSL_PKCS7_certs), - TEST_DECL(test_wolfSSL_PKCS7_sign), - TEST_DECL(test_wolfSSL_PKCS7_SIGNED_new), -#ifndef NO_BIO - TEST_DECL(test_wolfSSL_PEM_write_bio_PKCS7), -#ifdef HAVE_SMIME - TEST_DECL(test_wolfSSL_SMIME_read_PKCS7), - TEST_DECL(test_wolfSSL_SMIME_write_PKCS7), -#endif /* HAVE_SMIME */ -#endif /* !NO_BIO */ + TEST_DECL(test_wolfSSL_FIPS_mode), + TEST_DECL(test_openssl_FIPS_drbg), - /* OpenSSL compatibility outside SSL context w/ CRL lookup directory */ - TEST_DECL(test_X509_STORE_No_SSL_CTX), - TEST_DECL(test_X509_LOOKUP_add_dir), + /********************************* + * SSL/TLS API tests + *********************************/ - /* wolfCrypt ASN tests */ - TEST_DECL(test_wc_CreateEncryptedPKCS8Key), - TEST_DECL(test_wc_GetPkcs8TraditionalOffset), - TEST_DECL(test_wc_SetSubjectRaw), - TEST_DECL(test_wc_GetSubjectRaw), - TEST_DECL(test_wc_SetIssuerRaw), - TEST_DECL(test_wc_SetIssueBuffer), - TEST_DECL(test_wc_SetSubjectKeyId), - TEST_DECL(test_wc_SetSubject), - TEST_DECL(test_CheckCertSignature), - TEST_DECL(test_wc_ParseCert), - TEST_DECL(test_wc_ParseCert_Error), - TEST_DECL(test_MakeCertWithPathLen), - - /* wolfCrypt ECC tests */ - TEST_DECL(test_wc_ecc_get_curve_size_from_name), - TEST_DECL(test_wc_ecc_get_curve_id_from_name), - TEST_DECL(test_wc_ecc_get_curve_id_from_params), + TEST_DECL(test_wolfSSL_Init), + TEST_DECL(test_wolfSSL_Method_Allocators), +#ifndef NO_WOLFSSL_SERVER + TEST_DECL(test_wolfSSL_CTX_new), +#endif + TEST_DECL(test_server_wolfSSL_new), + TEST_DECL(test_client_wolfSSL_new), +#if (!defined(NO_WOLFSSL_CLIENT) || !defined(NO_WOLFSSL_SERVER)) && \ + (!defined(NO_RSA) || defined(HAVE_ECC)) && !defined(NO_FILESYSTEM) + TEST_DECL(test_for_double_Free), +#endif + TEST_DECL(test_wolfSSL_set_options), #ifdef WOLFSSL_TLS13 /* TLS v1.3 API tests */ @@ -66858,6 +60643,24 @@ TEST_CASE testCases[] = { TEST_DECL(test_tls13_cipher_suites), #endif + TEST_DECL(test_wolfSSL_tmp_dh), + TEST_DECL(test_wolfSSL_ctrl), + +#if defined(OPENSSL_ALL) || (defined(OPENSSL_EXTRA) && \ + (defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || \ + defined(HAVE_LIGHTY) || defined(WOLFSSL_HAPROXY) || \ + defined(WOLFSSL_OPENSSH) || defined(HAVE_SBLIM_SFCB))) + TEST_DECL(test_wolfSSL_set_SSL_CTX), +#endif + TEST_DECL(test_wolfSSL_CTX_get_min_proto_version), + TEST_DECL(test_wolfSSL_security_level), + TEST_DECL(test_wolfSSL_SSL_in_init), + TEST_DECL(test_wolfSSL_CTX_set_timeout), + TEST_DECL(test_wolfSSL_set_psk_use_session_callback), + + TEST_DECL(test_CONF_CTX_FILE), + TEST_DECL(test_CONF_CTX_CMDLINE), + #if !defined(NO_CERTS) && (!defined(NO_WOLFSSL_CLIENT) || \ !defined(WOLFSSL_NO_CLIENT_AUTH)) && !defined(NO_FILESYSTEM) /* Use the Cert Manager(CM) API to generate the error ASN_SIG_CONFIRM_E */ @@ -66866,355 +60669,204 @@ TEST_CASE testCases[] = { TEST_DECL(test_RsaSigFailure_cm), #endif /* NO_CERTS */ -#if defined(HAVE_PK_CALLBACKS) && !defined(WOLFSSL_NO_TLS12) - /* Converted to use Expect. */ - TEST_DECL(test_DhCallbacks), + /* PKCS8 testing */ + TEST_DECL(test_wolfSSL_no_password_cb), + TEST_DECL(test_wolfSSL_PKCS8), + TEST_DECL(test_wolfSSL_PKCS8_ED25519), + TEST_DECL(test_wolfSSL_PKCS8_ED448), + +#ifdef HAVE_IO_TESTS_DEPENDENCIES + TEST_DECL(test_wolfSSL_get_finished), + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_CTX_add_session), + /* Large number of memory allocations. */ + TEST_DECL(test_wolfSSL_CTX_add_session_ext_tls13), + /* Large number of memory allocations. */ + TEST_DECL(test_wolfSSL_CTX_add_session_ext_dtls13), + /* Large number of memory allocations. */ + TEST_DECL(test_wolfSSL_CTX_add_session_ext_tls12), + /* Large number of memory allocations. */ + TEST_DECL(test_wolfSSL_CTX_add_session_ext_dtls12), + /* Large number of memory allocations. */ + TEST_DECL(test_wolfSSL_CTX_add_session_ext_tls11), + /* Large number of memory allocations. */ + TEST_DECL(test_wolfSSL_CTX_add_session_ext_dtls1), +#endif + TEST_DECL(test_SSL_CIPHER_get_xxx), + TEST_DECL(test_wolfSSL_ERR_strings), + TEST_DECL(test_wolfSSL_CTX_set_cipher_list_bytes), + TEST_DECL(test_wolfSSL_CTX_use_certificate_file), + TEST_DECL(test_wolfSSL_CTX_use_certificate_buffer), + TEST_DECL(test_wolfSSL_CTX_use_PrivateKey_file), + TEST_DECL(test_wolfSSL_CTX_load_verify_locations), + /* Large number of memory allocations. */ + TEST_DECL(test_wolfSSL_CTX_load_system_CA_certs), + + TEST_DECL(test_wolfSSL_CertManagerCheckOCSPResponse), + TEST_DECL(test_wolfSSL_CheckOCSPResponse), + TEST_DECL(test_wolfSSL_CertManagerLoadCABuffer), + TEST_DECL(test_wolfSSL_CertManagerLoadCABuffer_ex), + TEST_DECL(test_wolfSSL_CertManagerGetCerts), + TEST_DECL(test_wolfSSL_CertManagerSetVerify), + TEST_DECL(test_wolfSSL_CertManagerNameConstraint), + TEST_DECL(test_wolfSSL_CertManagerNameConstraint2), + TEST_DECL(test_wolfSSL_CertManagerNameConstraint3), + TEST_DECL(test_wolfSSL_CertManagerNameConstraint4), + TEST_DECL(test_wolfSSL_CertManagerNameConstraint5), + TEST_DECL(test_wolfSSL_CertManagerCRL), +#if !defined(NO_RSA) && !defined(NO_SHA) && !defined(NO_FILESYSTEM) && \ + !defined(NO_CERTS) && (!defined(NO_WOLFSSL_CLIENT) || \ + !defined(WOLFSSL_NO_CLIENT_AUTH)) + TEST_DECL(test_various_pathlen_chains), #endif -#if defined(HAVE_KEYING_MATERIAL) && defined(HAVE_SSL_MEMIO_TESTS_DEPENDENCIES) - /* Converted to use Expect. */ - TEST_DECL(test_export_keying_material), -#endif - - TEST_DECL(test_wolfSSL_CTX_get_min_proto_version), -#if defined(OPENSSL_ALL) || (defined(OPENSSL_EXTRA) && \ - (defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || \ - defined(HAVE_LIGHTY) || defined(WOLFSSL_HAPROXY) || \ - defined(WOLFSSL_OPENSSH) || defined(HAVE_SBLIM_SFCB))) - TEST_DECL(test_wolfSSL_set_SSL_CTX), -#endif - - TEST_DECL(test_wolfSSL_security_level), - TEST_DECL(test_wolfSSL_SSL_in_init), - TEST_DECL(test_wolfSSL_CTX_set_timeout), - TEST_DECL(test_wolfSSL_OpenSSL_version), - TEST_DECL(test_wolfSSL_set_psk_use_session_callback), - TEST_DECL(test_ticket_and_psk_mixing), - TEST_DECL(test_prioritize_psk), - - TEST_DECL(test_CONF_CTX_FILE), - TEST_DECL(test_CONF_CTX_CMDLINE), - TEST_DECL(test_wolfSSL_CRYPTO_get_ex_new_index), - TEST_DECL(test_wolfSSL_SESSION_get_ex_new_index), - - /* wolfcrypt */ - TEST_DECL(test_wolfCrypt_Init), - TEST_DECL(test_wc_InitMd5), - TEST_DECL(test_wc_Md5Update), - TEST_DECL(test_wc_Md5Final), - TEST_DECL(test_wc_InitSha), - TEST_DECL(test_wc_ShaUpdate), - TEST_DECL(test_wc_ShaFinal), - TEST_DECL(test_wc_InitSha256), - TEST_DECL(test_wc_Sha256Update), - TEST_DECL(test_wc_Sha256Final), - TEST_DECL(test_wc_Sha256FinalRaw), - TEST_DECL(test_wc_Sha256GetFlags), - TEST_DECL(test_wc_Sha256Free), - TEST_DECL(test_wc_Sha256GetHash), - TEST_DECL(test_wc_Sha256Copy), - TEST_DECL(test_wc_InitSha512), - TEST_DECL(test_wc_Sha512Update), - TEST_DECL(test_wc_Sha512Final), - TEST_DECL(test_wc_Sha512GetFlags), - TEST_DECL(test_wc_Sha512FinalRaw), - TEST_DECL(test_wc_Sha512Free), - TEST_DECL(test_wc_Sha512GetHash), - TEST_DECL(test_wc_Sha512Copy), - - TEST_DECL(test_wc_InitSha512_224), - TEST_DECL(test_wc_Sha512_224Update), - TEST_DECL(test_wc_Sha512_224Final), - TEST_DECL(test_wc_Sha512_224GetFlags), - TEST_DECL(test_wc_Sha512_224FinalRaw), - TEST_DECL(test_wc_Sha512_224Free), - TEST_DECL(test_wc_Sha512_224GetHash), - TEST_DECL(test_wc_Sha512_224Copy), - TEST_DECL(test_wc_InitSha512_256), - TEST_DECL(test_wc_Sha512_256Update), - TEST_DECL(test_wc_Sha512_256Final), - TEST_DECL(test_wc_Sha512_256GetFlags), - TEST_DECL(test_wc_Sha512_256FinalRaw), - TEST_DECL(test_wc_Sha512_256Free), - TEST_DECL(test_wc_Sha512_256GetHash), - TEST_DECL(test_wc_Sha512_256Copy), - - TEST_DECL(test_wc_InitSha384), - TEST_DECL(test_wc_Sha384Update), - TEST_DECL(test_wc_Sha384Final), - TEST_DECL(test_wc_Sha384GetFlags), - TEST_DECL(test_wc_Sha384FinalRaw), - TEST_DECL(test_wc_Sha384Free), - TEST_DECL(test_wc_Sha384GetHash), - TEST_DECL(test_wc_Sha384Copy), - TEST_DECL(test_wc_InitSha224), - TEST_DECL(test_wc_Sha224Update), - TEST_DECL(test_wc_Sha224Final), - TEST_DECL(test_wc_Sha224SetFlags), - TEST_DECL(test_wc_Sha224GetFlags), - TEST_DECL(test_wc_Sha224Free), - TEST_DECL(test_wc_Sha224GetHash), - TEST_DECL(test_wc_Sha224Copy), - TEST_DECL(test_wc_InitBlake2b), - TEST_DECL(test_wc_InitBlake2b_WithKey), - TEST_DECL(test_wc_InitBlake2s_WithKey), - TEST_DECL(test_wc_InitRipeMd), - TEST_DECL(test_wc_RipeMdUpdate), - TEST_DECL(test_wc_RipeMdFinal), - - TEST_DECL(test_wc_InitSha3), - TEST_DECL(testing_wc_Sha3_Update), - TEST_DECL(test_wc_Sha3_224_Final), - TEST_DECL(test_wc_Sha3_256_Final), - TEST_DECL(test_wc_Sha3_384_Final), - TEST_DECL(test_wc_Sha3_512_Final), - TEST_DECL(test_wc_Sha3_224_Copy), - TEST_DECL(test_wc_Sha3_256_Copy), - TEST_DECL(test_wc_Sha3_384_Copy), - TEST_DECL(test_wc_Sha3_512_Copy), - TEST_DECL(test_wc_Sha3_GetFlags), - TEST_DECL(test_wc_InitShake256), - TEST_DECL(testing_wc_Shake256_Update), - TEST_DECL(test_wc_Shake256_Final), - TEST_DECL(test_wc_Shake256_Copy), - TEST_DECL(test_wc_Shake256Hash), - - TEST_DECL(test_wc_Md5HmacSetKey), - TEST_DECL(test_wc_Md5HmacUpdate), - TEST_DECL(test_wc_Md5HmacFinal), - TEST_DECL(test_wc_ShaHmacSetKey), - TEST_DECL(test_wc_ShaHmacUpdate), - TEST_DECL(test_wc_ShaHmacFinal), - TEST_DECL(test_wc_Sha224HmacSetKey), - TEST_DECL(test_wc_Sha224HmacUpdate), - TEST_DECL(test_wc_Sha224HmacFinal), - TEST_DECL(test_wc_Sha256HmacSetKey), - TEST_DECL(test_wc_Sha256HmacUpdate), - TEST_DECL(test_wc_Sha256HmacFinal), - TEST_DECL(test_wc_Sha384HmacSetKey), - TEST_DECL(test_wc_Sha384HmacUpdate), - TEST_DECL(test_wc_Sha384HmacFinal), - - TEST_DECL(test_wc_HashInit), - TEST_DECL(test_wc_HashSetFlags), - TEST_DECL(test_wc_HashGetFlags), - - TEST_DECL(test_wc_InitCmac), - TEST_DECL(test_wc_CmacUpdate), - TEST_DECL(test_wc_CmacFinal), - TEST_DECL(test_wc_AesCmacGenerate), - TEST_DECL(test_wc_AesGcmStream), - - TEST_DECL(test_wc_Des3_SetIV), - TEST_DECL(test_wc_Des3_SetKey), - TEST_DECL(test_wc_Des3_CbcEncryptDecrypt), - TEST_DECL(test_wc_Des3_CbcEncryptDecryptWithKey), - TEST_DECL(test_wc_Des3_EcbEncrypt), - TEST_DECL(test_wc_Chacha_SetKey), - TEST_DECL(test_wc_Chacha_Process), - TEST_DECL(test_wc_ChaCha20Poly1305_aead), - TEST_DECL(test_wc_Poly1305SetKey), - - TEST_DECL(test_wc_CamelliaSetKey), - TEST_DECL(test_wc_CamelliaSetIV), - TEST_DECL(test_wc_CamelliaEncryptDecryptDirect), - TEST_DECL(test_wc_CamelliaCbcEncryptDecrypt), - - TEST_DECL(test_wc_Arc4SetKey), - TEST_DECL(test_wc_Arc4Process), - - TEST_DECL(test_wc_Rc2SetKey), - TEST_DECL(test_wc_Rc2SetIV), - TEST_DECL(test_wc_Rc2EcbEncryptDecrypt), - TEST_DECL(test_wc_Rc2CbcEncryptDecrypt), - - TEST_DECL(test_wc_AesSetKey), - TEST_DECL(test_wc_AesSetIV), - TEST_DECL(test_wc_AesCbcEncryptDecrypt), - TEST_DECL(test_wc_AesCtrEncryptDecrypt), - TEST_DECL(test_wc_AesGcmSetKey), - TEST_DECL(test_wc_AesGcmEncryptDecrypt), - TEST_DECL(test_wc_AesGcmMixedEncDecLongIV), - TEST_DECL(test_wc_GmacSetKey), - TEST_DECL(test_wc_GmacUpdate), - TEST_DECL(test_wc_InitRsaKey), - TEST_DECL(test_wc_RsaPrivateKeyDecode), - TEST_DECL(test_wc_RsaPublicKeyDecode), - TEST_DECL(test_wc_RsaPublicKeyDecodeRaw), - TEST_DECL(test_wc_MakeRsaKey), - TEST_DECL(test_wc_SetKeyUsage), - - TEST_DECL(test_wc_CheckProbablePrime), - TEST_DECL(test_wc_RsaPSS_Verify), - TEST_DECL(test_wc_RsaPSS_VerifyCheck), - TEST_DECL(test_wc_RsaPSS_VerifyCheckInline), - - TEST_DECL(test_wc_SetMutexCb), - TEST_DECL(test_wc_LockMutex_ex), - - TEST_DECL(test_wc_RsaKeyToDer), - TEST_DECL(test_wc_RsaKeyToPublicDer), - TEST_DECL(test_wc_RsaPublicEncryptDecrypt), - TEST_DECL(test_wc_RsaPublicEncryptDecrypt_ex), - TEST_DECL(test_wc_RsaEncryptSize), - TEST_DECL(test_wc_RsaSSL_SignVerify), - TEST_DECL(test_wc_RsaFlattenPublicKey), - TEST_DECL(test_RsaDecryptBoundsCheck), - TEST_DECL(test_wc_AesCcmSetKey), - TEST_DECL(test_wc_AesCcmEncryptDecrypt), - TEST_DECL(test_wc_InitDsaKey), - TEST_DECL(test_wc_DsaSignVerify), - TEST_DECL(test_wc_DsaPublicPrivateKeyDecode), - TEST_DECL(test_wc_MakeDsaKey), - TEST_DECL(test_wc_DsaKeyToDer), - TEST_DECL(test_wc_DsaKeyToPublicDer), - TEST_DECL(test_wc_DsaImportParamsRaw), - TEST_DECL(test_wc_DsaImportParamsRawCheck), - TEST_DECL(test_wc_DsaExportParamsRaw), - TEST_DECL(test_wc_DsaExportKeyRaw), - - TEST_DECL(test_wc_SignatureGetSize_ecc), - TEST_DECL(test_wc_SignatureGetSize_rsa), - /* - * test_wolfCrypt_Cleanup needs to come after the above wolfCrypt tests to - * avoid memory leaks. - */ - TEST_DECL(test_wolfCrypt_Cleanup), - -#ifdef OPENSSL_EXTRA - TEST_DECL(test_wolfSSL_EVP_get_cipherbynid), - TEST_DECL(test_wolfSSL_EVP_CIPHER_CTX), - TEST_DECL(test_ED25519), - TEST_DECL(test_ED448), -#endif -#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) && \ - !defined(HAVE_SELFTEST) && \ - !(defined(HAVE_FIPS) || defined(HAVE_FIPS_VERSION)) - TEST_DECL(test_wc_ecc_get_curve_id_from_dp_params), -#endif - -#ifdef HAVE_HASHDRBG -#ifdef TEST_RESEED_INTERVAL - TEST_DECL(test_wc_RNG_GenerateBlock_Reseed), -#endif - TEST_DECL(test_wc_RNG_GenerateBlock), -#endif - TEST_DECL(test_get_rand_digit), - TEST_DECL(test_get_digit_count), - TEST_DECL(test_mp_cond_copy), - TEST_DECL(test_mp_rand), - TEST_DECL(test_get_digit), - TEST_DECL(test_wc_export_int), - TEST_DECL(test_wc_InitRngNonce), - TEST_DECL(test_wc_InitRngNonce_ex), - - TEST_DECL(test_wc_ed25519_make_key), - TEST_DECL(test_wc_ed25519_init), - TEST_DECL(test_wc_ed25519_sign_msg), - TEST_DECL(test_wc_ed25519_import_public), - TEST_DECL(test_wc_ed25519_import_private_key), - TEST_DECL(test_wc_ed25519_export), - TEST_DECL(test_wc_ed25519_size), - TEST_DECL(test_wc_ed25519_exportKey), - TEST_DECL(test_wc_Ed25519PublicKeyToDer), - TEST_DECL(test_wc_curve25519_init), - TEST_DECL(test_wc_curve25519_size), - TEST_DECL(test_wc_curve25519_export_key_raw), - TEST_DECL(test_wc_curve25519_export_key_raw_ex), - TEST_DECL(test_wc_curve25519_make_key), - TEST_DECL(test_wc_curve25519_shared_secret_ex), - TEST_DECL(test_wc_curve25519_make_pub), - TEST_DECL(test_wc_curve25519_export_public_ex), - TEST_DECL(test_wc_curve25519_export_private_raw_ex), - TEST_DECL(test_wc_curve25519_import_private_raw_ex), - TEST_DECL(test_wc_curve25519_import_private), - - TEST_DECL(test_wc_ed448_make_key), - TEST_DECL(test_wc_ed448_init), - TEST_DECL(test_wc_ed448_sign_msg), - TEST_DECL(test_wc_ed448_import_public), - TEST_DECL(test_wc_ed448_import_private_key), - TEST_DECL(test_wc_ed448_export), - TEST_DECL(test_wc_ed448_size), - TEST_DECL(test_wc_ed448_exportKey), - TEST_DECL(test_wc_Ed448PublicKeyToDer), - TEST_DECL(test_wc_curve448_make_key), - TEST_DECL(test_wc_curve448_shared_secret_ex), - TEST_DECL(test_wc_curve448_export_public_ex), - TEST_DECL(test_wc_curve448_export_private_raw_ex), - TEST_DECL(test_wc_curve448_export_key_raw), - TEST_DECL(test_wc_curve448_import_private_raw_ex), - TEST_DECL(test_wc_curve448_import_private), - TEST_DECL(test_wc_curve448_init), - TEST_DECL(test_wc_curve448_size), - TEST_DECL(test_wc_ecc_make_key), - TEST_DECL(test_wc_ecc_init), - TEST_DECL(test_wc_ecc_check_key), - TEST_DECL(test_wc_ecc_get_generator), - TEST_DECL(test_wc_ecc_size), - TEST_DECL(test_wc_ecc_params), - TEST_DECL(test_wc_ecc_signVerify_hash), - TEST_DECL(test_wc_ecc_shared_secret), - TEST_DECL(test_wc_ecc_export_x963), - TEST_DECL(test_wc_ecc_export_x963_ex), - TEST_DECL(test_wc_ecc_import_x963), - TEST_DECL(ecc_import_private_key), - TEST_DECL(test_wc_ecc_export_private_only), - TEST_DECL(test_wc_ecc_rs_to_sig), - TEST_DECL(test_wc_ecc_import_raw), - TEST_DECL(test_wc_ecc_import_unsigned), - TEST_DECL(test_wc_ecc_sig_size), - TEST_DECL(test_wc_ecc_ctx_new), - TEST_DECL(test_wc_ecc_ctx_reset), - TEST_DECL(test_wc_ecc_ctx_set_peer_salt), - TEST_DECL(test_wc_ecc_ctx_set_info), - TEST_DECL(test_wc_ecc_encryptDecrypt), - TEST_DECL(test_wc_ecc_del_point), - TEST_DECL(test_wc_ecc_pointFns), - TEST_DECL(test_wc_ecc_shared_secret_ssh), - TEST_DECL(test_wc_ecc_verify_hash_ex), - TEST_DECL(test_wc_ecc_mulmod), - TEST_DECL(test_wc_ecc_is_valid_idx), - TEST_DECL(test_wc_ecc_get_curve_id_from_oid), - TEST_DECL(test_wc_ecc_sig_size_calc), - - TEST_DECL(test_ToTraditional), - TEST_DECL(test_wc_EccPrivateKeyToDer), - TEST_DECL(test_wc_DhPublicKeyDecode), - TEST_DECL(test_wc_Ed25519KeyToDer), - TEST_DECL(test_wc_Ed25519PrivateKeyToDer), - TEST_DECL(test_wc_Ed448KeyToDer), - TEST_DECL(test_wc_Ed448PrivateKeyToDer), - TEST_DECL(test_wc_SetAuthKeyIdFromPublicKey_ex), - TEST_DECL(test_wc_SetSubjectBuffer), - TEST_DECL(test_wc_SetSubjectKeyIdFromPublicKey_ex), - - TEST_DECL(test_wc_PKCS7_New), - TEST_DECL(test_wc_PKCS7_Init), - TEST_DECL(test_wc_PKCS7_InitWithCert), - TEST_DECL(test_wc_PKCS7_EncodeData), - TEST_DECL(test_wc_PKCS7_EncodeSignedData), - TEST_DECL(test_wc_PKCS7_EncodeSignedData_ex), - TEST_DECL(test_wc_PKCS7_VerifySignedData), - TEST_DECL(test_wc_PKCS7_EncodeDecodeEnvelopedData), - TEST_DECL(test_wc_PKCS7_EncodeEncryptedData), - TEST_DECL(test_wc_PKCS7_Degenerate), - TEST_DECL(test_wc_PKCS7_BER), - TEST_DECL(test_PKCS7_signed_enveloped), - TEST_DECL(test_wc_PKCS7_NoDefaultSignedAttribs), - TEST_DECL(test_wc_PKCS7_SetOriEncryptCtx), - TEST_DECL(test_wc_PKCS7_SetOriDecryptCtx), - TEST_DECL(test_wc_PKCS7_DecodeCompressedData), - TEST_DECL(test_wc_i2d_PKCS12), + TEST_DECL(test_wolfSSL_CertRsaPss), + TEST_DECL(test_wolfSSL_CTX_load_verify_locations_ex), + TEST_DECL(test_wolfSSL_CTX_load_verify_buffer_ex), + TEST_DECL(test_wolfSSL_CTX_load_verify_chain_buffer_format), + TEST_DECL(test_wolfSSL_CTX_add1_chain_cert), + TEST_DECL(test_wolfSSL_CTX_use_certificate_chain_file_format), + TEST_DECL(test_wolfSSL_CTX_trust_peer_cert), TEST_DECL(test_wolfSSL_CTX_LoadCRL), - TEST_DECL(test_openssl_FIPS_drbg), - TEST_DECL(test_wc_CryptoCb), - TEST_DECL(test_wolfSSL_CTX_StaticMemory), - TEST_DECL(test_wolfSSL_FIPS_mode), + TEST_DECL(test_wolfSSL_CTX_SetTmpDH_file), + TEST_DECL(test_wolfSSL_CTX_SetTmpDH_buffer), + TEST_DECL(test_wolfSSL_CTX_SetMinMaxDhKey_Sz), + TEST_DECL(test_wolfSSL_CTX_der_load_verify_locations), + TEST_DECL(test_wolfSSL_CTX_enable_disable), + TEST_DECL(test_wolfSSL_CTX_ticket_API), + TEST_DECL(test_wolfSSL_SetTmpDH_file), + TEST_DECL(test_wolfSSL_SetTmpDH_buffer), + TEST_DECL(test_wolfSSL_SetMinMaxDhKey_Sz), + TEST_DECL(test_SetTmpEC_DHE_Sz), + TEST_DECL(test_wolfSSL_CTX_get0_privatekey), #ifdef WOLFSSL_DTLS TEST_DECL(test_wolfSSL_DtlsUpdateWindow), TEST_DECL(test_wolfSSL_DTLS_fragment_buckets), #endif + TEST_DECL(test_wolfSSL_dtls_set_mtu), + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_dtls_plaintext), +#if !defined(NO_WOLFSSL_CLIENT) && !defined(NO_WOLFSSL_SERVER) && \ + defined(HAVE_IO_TESTS_DEPENDENCIES) + TEST_DECL(test_wolfSSL_read_write), + /* Can't memory test as server hangs if client fails before second connect. + */ + TEST_DECL(test_wolfSSL_reuse_WOLFSSLobj), + TEST_DECL(test_wolfSSL_CTX_verifyDepth_ServerClient_1), + TEST_DECL(test_wolfSSL_CTX_verifyDepth_ServerClient_2), + TEST_DECL(test_wolfSSL_CTX_verifyDepth_ServerClient_3), + TEST_DECL(test_wolfSSL_CTX_set_cipher_list), + /* Can't memory test as server hangs. */ + TEST_DECL(test_wolfSSL_dtls_export), + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_tls_export), +#endif + TEST_DECL(test_wolfSSL_SetMinVersion), + TEST_DECL(test_wolfSSL_CTX_SetMinVersion), + + /* wolfSSL handshake APIs. */ + TEST_DECL(test_wolfSSL_CTX_get0_set1_param), + TEST_DECL(test_wolfSSL_a2i_IPADDRESS), + TEST_DECL(test_wolfSSL_BUF), + TEST_DECL(test_wolfSSL_set_tlsext_status_type), + /* Can't memory test as server hangs. */ + TEST_DECL(test_wolfSSL_CTX_set_client_CA_list), + TEST_DECL(test_wolfSSL_CTX_add_client_CA), + TEST_DECL(test_wolfSSL_CTX_set_srp_username), + TEST_DECL(test_wolfSSL_CTX_set_srp_password), + TEST_DECL(test_wolfSSL_CTX_set_keylog_callback), + TEST_DECL(test_wolfSSL_CTX_get_keylog_callback), + TEST_DECL(test_wolfSSL_Tls12_Key_Logging_test), + /* Can't memory test as server hangs. */ + TEST_DECL(test_wolfSSL_Tls13_Key_Logging_test), + TEST_DECL(test_wolfSSL_Tls13_postauth), + TEST_DECL(test_wolfSSL_CTX_set_ecdh_auto), + TEST_DECL(test_wolfSSL_set_minmax_proto_version), + TEST_DECL(test_wolfSSL_CTX_set_max_proto_version), + TEST_DECL(test_wolfSSL_THREADID_hash), + + /* TLS extensions tests */ +#ifdef HAVE_IO_TESTS_DEPENDENCIES +#ifdef HAVE_SNI + TEST_DECL(test_wolfSSL_UseSNI_params), + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_UseSNI_connection), + TEST_DECL(test_wolfSSL_SNI_GetFromBuffer), +#endif /* HAVE_SNI */ +#endif + TEST_DECL(test_wolfSSL_UseTrustedCA), + TEST_DECL(test_wolfSSL_UseMaxFragment), + TEST_DECL(test_wolfSSL_UseTruncatedHMAC), + TEST_DECL(test_wolfSSL_UseSupportedCurve), +#if defined(HAVE_ALPN) && defined(HAVE_IO_TESTS_DEPENDENCIES) + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_UseALPN_connection), + TEST_DECL(test_wolfSSL_UseALPN_params), +#endif +#ifdef HAVE_ALPN_PROTOS_SUPPORT + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_set_alpn_protos), +#endif + TEST_DECL(test_wolfSSL_DisableExtendedMasterSecret), + TEST_DECL(test_wolfSSL_wolfSSL_UseSecureRenegotiation), + TEST_DECL(test_wolfSSL_SCR_Reconnect), + TEST_DECL(test_tls_ext_duplicate), +#if defined(WOLFSSL_TLS13) && defined(HAVE_ECH) + TEST_DECL(test_wolfSSL_Tls13_ECH_params), + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_Tls13_ECH), +#endif + + TEST_DECL(test_wolfSSL_X509_TLS_version_test_1), + TEST_DECL(test_wolfSSL_X509_TLS_version_test_2), + + /* OCSP Stapling */ + TEST_DECL(test_wolfSSL_UseOCSPStapling), + TEST_DECL(test_wolfSSL_UseOCSPStaplingV2), + + /* Multicast */ + TEST_DECL(test_wolfSSL_mcast), + + TEST_DECL(test_wolfSSL_read_detect_TCP_disconnect), + + TEST_DECL(test_wolfSSL_msgCb), + TEST_DECL(test_wolfSSL_either_side), + TEST_DECL(test_wolfSSL_DTLS_either_side), + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_dtls_fragments), + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_dtls_AEAD_limit), + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_ignore_alert_before_cookie), + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_dtls_bad_record), + /* Uses Assert in handshake callback. */ + TEST_DECL(test_wolfSSL_dtls_stateless), + TEST_DECL(test_generate_cookie), + + /* Can't memory test as server hangs. */ + TEST_DECL(test_wolfSSL_BIO_connect), + /* Can't memory test as server Asserts in thread. */ + TEST_DECL(test_wolfSSL_BIO_accept), + TEST_DECL(test_wolfSSL_BIO_tls), + +#if defined(HAVE_PK_CALLBACKS) && !defined(WOLFSSL_NO_TLS12) + TEST_DECL(test_DhCallbacks), +#endif + +#if defined(HAVE_KEYING_MATERIAL) && defined(HAVE_SSL_MEMIO_TESTS_DEPENDENCIES) + TEST_DECL(test_export_keying_material), +#endif + + /* Can't memory test as client/server Asserts in thread. */ + TEST_DECL(test_ticket_and_psk_mixing), + /* Can't memory test as client/server Asserts in thread. */ + TEST_DECL(test_prioritize_psk), + + /* Can't memory test as client/server hangs. */ + TEST_DECL(test_wc_CryptoCb), + /* Can't memory test as client/server hangs. */ + TEST_DECL(test_wolfSSL_CTX_StaticMemory), #if !defined(NO_FILESYSTEM) && \ defined(WOLFSSL_DTLS) && !defined(WOLFSSL_NO_TLS12) && \ !defined(NO_WOLFSSL_CLIENT) && !defined(NO_WOLFSSL_SERVER) @@ -67232,41 +60884,29 @@ TEST_CASE testCases[] = { #endif /* ! NO_RSA */ #endif /* defined(WOLFSSL_DTLS) && !defined(WOLFSSL_NO_TLS12) && \ * !defined(NO_WOLFSSL_CLIENT) && !defined(NO_WOLFSSL_SERVER) */ - /* Converted to use Expect. */ TEST_DECL(test_wolfSSL_CTX_set_ciphersuites), - /* Converted to use Expect. */ TEST_DECL(test_wolfSSL_CRL_CERT_REVOKED_alert), - /* Converted to use Expect. */ TEST_DECL(test_TLS_13_ticket_different_ciphers), TEST_DECL(test_WOLFSSL_dtls_version_alert), - TEST_DECL(test_ForceZero), - TEST_DECL(test_wolfSSL_Cleanup), #if defined(WOLFSSL_TICKET_NONCE_MALLOC) && defined(HAVE_SESSION_TICKET) \ && defined(WOLFSSL_TLS13) && \ (!defined(HAVE_FIPS) || (defined(FIPS_VERSION_GE) && FIPS_VERSION_GE(5,3))) TEST_DECL(test_ticket_nonce_malloc), -#endif -#if !defined(NO_RSA) && !defined(NO_SHA) && !defined(NO_FILESYSTEM) && \ - !defined(NO_CERTS) && (!defined(NO_WOLFSSL_CLIENT) || \ - !defined(WOLFSSL_NO_CLIENT_AUTH)) - TEST_DECL(test_various_pathlen_chains), #endif TEST_DECL(test_ticket_ret_create), TEST_DECL(test_extra_alerts_wrong_cs), TEST_DECL(test_extra_alerts_skip_hs), TEST_DECL(test_extra_alerts_bad_psk), + /* Can't memory test as client/server Asserts. */ TEST_DECL(test_harden_no_secure_renegotiation), - /* Converted to use Expect. */ TEST_DECL(test_override_alt_cert_chain), TEST_DECL(test_dtls13_bad_epoch_ch), TEST_DECL(test_wolfSSL_dtls13_null_cipher), + /* Can't memory test as client/server hangs. */ TEST_DECL(test_dtls_msg_from_other_peer), TEST_DECL(test_dtls_ipv6_check), - /* If at some point a stub get implemented this test should fail indicating - * a need to implement a new test case - */ - TEST_DECL(test_stubs_are_stubs) + TEST_DECL(test_wolfSSL_Cleanup) }; #define TEST_CASE_CNT (int)(sizeof(testCases) / sizeof(*testCases)) diff --git a/tests/unit.h b/tests/unit.h index 534d3aba0..bbd3e0cd0 100644 --- a/tests/unit.h +++ b/tests/unit.h @@ -224,6 +224,74 @@ #define ExpectBufEQ(x, y, z) ExpectBuf(x, y, z, ==, !=) #define ExpectBufNE(x, y, z) ExpectBuf(x, y, z, !=, ==) +#define ExpectFail() ExpectTrue(0) + + +#define DoExpectNull(x) do { \ + PEDANTIC_EXTENSION void* _x = (void*)(x); \ + Expect(!_x, ("%s is null", #x), (#x " => %p", _x)); \ +} while(0) + +#define DoExpectInt(x, y, op, er) do { \ + int _x = (int)(x); \ + int _y = (int)(y); \ + Expect(_x op _y, ("%s " #op " %s", #x, #y), ("%d " #er " %d", _x, _y)); \ +} while(0) + +#define DoExpectIntEQ(x, y) DoExpectInt(x, y, ==, !=) +#define DoExpectIntNE(x, y) DoExpectInt(x, y, !=, ==) +#define DoExpectIntGT(x, y) DoExpectInt(x, y, >, <=) +#define DoExpectIntLT(x, y) DoExpectInt(x, y, <, >=) +#define DoExpectIntGE(x, y) DoExpectInt(x, y, >=, <) +#define DoExpectIntLE(x, y) DoExpectInt(x, y, <=, >) + +#define DoExpectStr(x, y, op, er) do { \ + const char* _x = (const char*)(x); \ + const char* _y = (const char*)(y); \ + int _z = (_x && _y) ? strcmp(_x, _y) : -1; \ + Expect(_z op 0, ("%s " #op " %s", #x, #y), \ + ("\"%s\" " #er " \"%s\"", _x, _y));\ +} while(0) + +#define DoExpectStrEQ(x, y) DoExpectStr(x, y, ==, !=) +#define DoExpectStrNE(x, y) DoExpectStr(x, y, !=, ==) +#define DoExpectStrGT(x, y) DoExpectStr(x, y, >, <=) +#define DoExpectStrLT(x, y) DoExpectStr(x, y, <, >=) +#define DoExpectStrGE(x, y) DoExpectStr(x, y, >=, <) +#define DoExpectStrLE(x, y) DoExpectStr(x, y, <=, >) + +#define DoExpectPtr(x, y, op, er) do { \ + PRAGMA_DIAG_PUSH; \ + /* remarkably, without this inhibition, */ \ + /* the _Pragma()s make the declarations warn. */ \ + PRAGMA("GCC diagnostic ignored \"-Wdeclaration-after-statement\""); \ + /* inhibit "ISO C forbids conversion of function pointer */ \ + /* to object pointer type [-Werror=pedantic]" */ \ + PRAGMA("GCC diagnostic ignored \"-Wpedantic\""); \ + void* _x = (void*)(x); \ + void* _y = (void*)(y); \ + Expect(_x op _y, ("%s " #op " %s", #x, #y), ("%p " #er " %p", _x, _y)); \ + PRAGMA_DIAG_POP; \ +} while(0) + +#define DoExpectPtrEq(x, y) DoExpectPtr(x, y, ==, !=) +#define DoExpectPtrNE(x, y) DoExpectPtr(x, y, !=, ==) +#define DoExpectPtrGT(x, y) DoExpectPtr(x, y, >, <=) +#define DoExpectPtrLT(x, y) DoExpectPtr(x, y, <, >=) +#define DoExpectPtrGE(x, y) DoExpectPtr(x, y, >=, <) +#define DoExpectPtrLE(x, y) DoExpectPtr(x, y, <=, >) + +#define DoExpectBuf(x, y, z, op, er) do { \ + const byte* _x = (const byte*)(x); \ + const byte* _y = (const byte*)(y); \ + int _z = (int)(z); \ + int _w = ((_x) && (_y)) ? XMEMCMP(_x, _y, _z) : -1; \ + Expect(_w op 0, ("%s " #op " %s for %s", #x, #y, #z), \ + ("\"%p\" " #er " \"%p\" for \"%d\"", _x, _y, _z));\ +} while(0) + +#define DoExpectBufEQ(x, y, z) DoExpectBuf(x, y, z, ==, !=) +#define DoExpectBufNE(x, y, z) DoExpectBuf(x, y, z, !=, ==) void ApiTest_PrintTestCases(void); int ApiTest_RunIdx(int idx); diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index 7541b76cd..70d593c8c 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -36699,13 +36699,17 @@ int wc_MIME_parse_headers(char* in, int inLen, MimeHdr** headers) goto error; } nextHdr = (MimeHdr*)XMALLOC(sizeof(MimeHdr), NULL, DYNAMIC_TYPE_PKCS7); - nextParam = (MimeParam*)XMALLOC(sizeof(MimeParam), NULL, - DYNAMIC_TYPE_PKCS7); - if (nextHdr == NULL || nextParam == NULL) { + if (nextHdr == NULL) { ret = MEMORY_E; goto error; } XMEMSET(nextHdr, 0, sizeof(MimeHdr)); + nextParam = (MimeParam*)XMALLOC(sizeof(MimeParam), NULL, + DYNAMIC_TYPE_PKCS7); + if (nextParam == NULL) { + ret = MEMORY_E; + goto error; + } XMEMSET(nextParam, 0, sizeof(MimeParam)); curLine = XSTRTOK(in, "\r\n", &ptr); @@ -36841,10 +36845,8 @@ error: if (ret != 0) wc_MIME_free_hdrs(curHdr); wc_MIME_free_hdrs(nextHdr); - if (nameAttr != NULL) - XFREE(nameAttr, NULL, DYNAMIC_TYPE_PKCS7); - if (bodyVal != NULL) - XFREE(bodyVal, NULL, DYNAMIC_TYPE_PKCS7); + XFREE(nameAttr, NULL, DYNAMIC_TYPE_PKCS7); + XFREE(bodyVal, NULL, DYNAMIC_TYPE_PKCS7); XFREE(nextParam, NULL, DYNAMIC_TYPE_PKCS7); return ret; diff --git a/wolfcrypt/src/compress.c b/wolfcrypt/src/compress.c index 766e0c912..58c154c59 100644 --- a/wolfcrypt/src/compress.c +++ b/wolfcrypt/src/compress.c @@ -245,6 +245,7 @@ int wc_DeCompressDynamic(byte** out, int maxSz, int memoryType, stream.opaque = (voidpf)0; if (inflateInit2(&stream, DEFLATE_DEFAULT_WINDOWBITS | windowBits) != Z_OK) { + XFREE(tmp, heap, memoryType); return DECOMPRESS_INIT_E; } diff --git a/wolfcrypt/src/memory.c b/wolfcrypt/src/memory.c index 45dca4bb9..3a974e67c 100644 --- a/wolfcrypt/src/memory.c +++ b/wolfcrypt/src/memory.c @@ -128,6 +128,51 @@ int wolfSSL_GetAllocators(wolfSSL_Malloc_cb* mf, return 0; } +#ifdef WOLFSSL_MEM_FAIL_COUNT +static wolfSSL_Mutex memFailMutex; +int mem_fail_allocs = 0; +int mem_fail_frees = 0; +int mem_fail_cnt = 0; + +void wc_MemFailCount_Init() +{ + char* cnt; + wc_InitMutex(&memFailMutex); + cnt = getenv("MEM_FAIL_CNT"); + if (cnt != NULL) { + fprintf(stderr, "MemFailCount At: %d\n", mem_fail_cnt); + mem_fail_cnt = atoi(cnt); + } +} +static int wc_MemFailCount_AllocMem(void) +{ + int ret = 1; + + wc_LockMutex(&memFailMutex); + if ((mem_fail_cnt > 0) && (mem_fail_cnt <= mem_fail_allocs + 1)) { + ret = 0; + } + else { + mem_fail_allocs++; + } + wc_UnLockMutex(&memFailMutex); + + return ret; +} +static void wc_MemFailCount_FreeMem(void) +{ + wc_LockMutex(&memFailMutex); + mem_fail_frees++; + wc_UnLockMutex(&memFailMutex); +} +void wc_MemFailCount_Free() +{ + wc_FreeMutex(&memFailMutex); + fprintf(stderr, "MemFailCount Total: %d\n", mem_fail_allocs); + fprintf(stderr, "MemFailCount Frees: %d\n", mem_fail_frees); +} +#endif + #ifndef WOLFSSL_STATIC_MEMORY #ifdef WOLFSSL_CHECK_MEM_ZERO @@ -269,51 +314,6 @@ void wc_MemZero_Check(void* addr, size_t len) } #endif /* WOLFSSL_CHECK_MEM_ZERO */ -#ifdef WOLFSSL_MEM_FAIL_COUNT -static wolfSSL_Mutex memFailMutex; -int mem_fail_allocs = 0; -int mem_fail_frees = 0; -int mem_fail_cnt = 0; - -void wc_MemFailCount_Init() -{ - char* cnt; - wc_InitMutex(&memFailMutex); - cnt = getenv("MEM_FAIL_CNT"); - if (cnt != NULL) { - fprintf(stderr, "MemFailCount At: %d\n", mem_fail_cnt); - mem_fail_cnt = atoi(cnt); - } -} -static int wc_MemFailCount_AllocMem(void) -{ - int ret = 1; - - wc_LockMutex(&memFailMutex); - if ((mem_fail_cnt > 0) && (mem_fail_cnt <= mem_fail_allocs + 1)) { - ret = 0; - } - else { - mem_fail_allocs++; - } - wc_UnLockMutex(&memFailMutex); - - return ret; -} -static void wc_MemFailCount_FreeMem(void) -{ - wc_LockMutex(&memFailMutex); - mem_fail_frees++; - wc_UnLockMutex(&memFailMutex); -} -void wc_MemFailCount_Free() -{ - wc_FreeMutex(&memFailMutex); - fprintf(stderr, "MemFailCount Total: %d\n", mem_fail_allocs); - fprintf(stderr, "MemFailCount Frees: %d\n", mem_fail_frees); -} -#endif - #ifdef WOLFSSL_DEBUG_MEMORY void* wolfSSL_Malloc(size_t size, const char* func, unsigned int line) #else @@ -1325,8 +1325,13 @@ void *xmalloc(size_t n, void* heap, int type, const char* func, } #endif - if (malloc_function) + if (malloc_function) { +#ifndef WOLFSSL_STATIC_MEMORY p32 = malloc_function(n + sizeof(word32) * 4); +#else + p32 = malloc_function(n + sizeof(word32) * 4, heap, type); +#endif + } else p32 = malloc(n + sizeof(word32) * 4); @@ -1363,8 +1368,13 @@ void *xrealloc(void *p, size_t n, void* heap, int type, const char* func, oldLen = oldp32[0]; } - if (realloc_function) + if (realloc_function) { +#ifndef WOLFSSL_STATIC_MEMORY p32 = realloc_function(oldp32, n + sizeof(word32) * 4); +#else + p32 = realloc_function(oldp32, n + sizeof(word32) * 4, heap, type); +#endif + } else p32 = realloc(oldp32, n + sizeof(word32) * 4); @@ -1404,8 +1414,13 @@ void xfree(void *p, void* heap, int type, const char* func, const char* file, fprintf(stderr, "Free: %p -> %u (%d) at %s:%s:%u\n", p, p32[0], type, func, file, line); - if (free_function) + if (free_function) { +#ifndef WOLFSSL_STATIC_MEMORY free_function(p32); +#else + free_function(p32, heap, type); +#endif + } else free(p32); } diff --git a/wolfcrypt/src/wc_port.c b/wolfcrypt/src/wc_port.c index b6b8c1fde..2c69fa9d5 100644 --- a/wolfcrypt/src/wc_port.c +++ b/wolfcrypt/src/wc_port.c @@ -477,7 +477,7 @@ int wolfCrypt_Cleanup(void) Entropy_Final(); #endif - #ifdef WOLFSSL_MEM_FAIL_COUNT + #if defined(WOLFSSL_MEM_FAIL_COUNT) && defined(WOLFCRYPT_ONLY) wc_MemFailCount_Free(); #endif #ifdef WOLFSSL_CHECK_MEM_ZERO