Adding tests

This commit is contained in:
Eric Blankenhorn
2019-08-14 15:48:28 -05:00
parent b2b24a06f3
commit 1b841363cc
3 changed files with 84 additions and 9 deletions

View File

@ -16475,7 +16475,7 @@ void wolfSSL_sk_ASN1_OBJECT_free(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk)
/* parse through stack freeing each node */
node = sk->next;
while (sk->num > 1) {
while ((node != NULL) && (sk->num > 1)) {
WOLFSSL_STACK* tmp = node;
node = node->next;
@ -16499,31 +16499,33 @@ void wolfSSL_sk_ASN1_OBJECT_free(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk)
* f X509 free function
*/
void wolfSSL_sk_ASN1_OBJECT_pop_free(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk,
void f (WOLFSSL_ASN1_OBJECT*))
void (*func)(WOLFSSL_ASN1_OBJECT*))
{
WOLFSSL_STACK* node;
WOLFSSL_ENTER("wolfSSL_sk_ASN1_OBJECT_pop_free");
(void)f;
(void)func;
if (sk == NULL) {
if ((sk == NULL) || (func == NULL)) {
WOLFSSL_MSG("Parameter error");
return;
}
/* parse through stack freeing each node */
node = sk->next;
while (sk->num > 1) {
while ((node != NULL) && (sk->num > 1)) {
WOLFSSL_STACK* tmp = node;
node = node->next;
f(tmp->data.obj);
func(tmp->data.obj);
XFREE(tmp, NULL, DYNAMIC_TYPE_ASN1);
sk->num -= 1;
}
/* free head of stack */
if (sk->num == 1) {
f(sk->data.obj);
func(sk->data.obj);
}
XFREE(sk, NULL, DYNAMIC_TYPE_ASN1);
}

View File

@ -23086,6 +23086,75 @@ static void test_wolfSSL_AES_cbc_encrypt()
}
static void test_wolfSSL_X509_get_ext_count(void) {
#if !defined(NO_FILESYSTEM) && defined (OPENSSL_ALL)
FILE* f;
WOLFSSL_X509* x509;
int ret = 0;
AssertNotNull(f = fopen("./certs/server-cert.pem", "rb"));
AssertNotNull(x509 = wolfSSL_PEM_read_X509(f, NULL, NULL, NULL));
fclose(f);
printf(testingFmt, "wolfSSL_X509_get_ext_count() valid input");
AssertIntEQ((ret = wolfSSL_X509_get_ext_count(x509)), 3);
printf(resultFmt, ret == 3 ? passed : failed);
printf(testingFmt, "wolfSSL_X509_get_ext_count() NULL argument");
AssertIntEQ((ret = wolfSSL_X509_get_ext_count(NULL)), WOLFSSL_FAILURE);
printf(resultFmt, ret == WOLFSSL_FAILURE ? passed : failed);
wolfSSL_X509_free(x509);
#endif
}
static void test_wolfSSL_X509_cmp(void){
#if defined(OPENSSL_ALL)
FILE* file1;
FILE* file2;
WOLFSSL_X509* cert1;
WOLFSSL_X509* cert2;
int ret = 0;
AssertNotNull(file1=fopen("./certs/server-cert.pem", "rb"));
AssertNotNull(file2=fopen("./certs/client-cert-3072.pem", "rb"));
AssertNotNull(cert1 = wolfSSL_PEM_read_X509(file1, NULL, NULL, NULL));
AssertNotNull(cert2 = wolfSSL_PEM_read_X509(file2, NULL, NULL, NULL));
fclose(file1);
fclose(file2);
printf(testingFmt, "wolfSSL_X509_cmp() testing matching certs");
ret = wolfSSL_X509_cmp(cert1, cert1);
AssertIntEQ(0, wolfSSL_X509_cmp(cert1, cert1));
printf(resultFmt, ret == 0 ? passed : failed);
printf(testingFmt, "wolfSSL_X509_cmp() testing mismatched certs");
ret = wolfSSL_X509_cmp(cert1, cert2);
AssertIntEQ(-1, wolfSSL_X509_cmp(cert1, cert2));
printf(resultFmt, ret == -1 ? passed : failed);
printf(testingFmt, "wolfSSL_X509_cmp() testing NULL, valid args");
ret = wolfSSL_X509_cmp(NULL, cert2);
AssertIntEQ(BAD_FUNC_ARG, wolfSSL_X509_cmp(NULL, cert2));
printf(resultFmt, ret == BAD_FUNC_ARG ? passed : failed);
printf(testingFmt, "wolfSSL_X509_cmp() testing valid, NULL args");
ret = wolfSSL_X509_cmp(cert1, NULL);
AssertIntEQ(BAD_FUNC_ARG, wolfSSL_X509_cmp(cert1, NULL));
printf(resultFmt, ret == BAD_FUNC_ARG ? passed : failed);
printf(testingFmt, "wolfSSL_X509_cmp() testing NULL, NULL args");
ret = wolfSSL_X509_cmp(NULL, NULL);
AssertIntEQ(BAD_FUNC_ARG, wolfSSL_X509_cmp(NULL, NULL));
printf(resultFmt, ret == BAD_FUNC_ARG ? passed : failed);
wolfSSL_X509_free(cert1);
wolfSSL_X509_free(cert2);
#endif
}
static void test_no_op_functions(void)
{
#if defined(OPENSSL_EXTRA)
@ -25444,6 +25513,10 @@ void ApiTest(void)
test_wolfSSL_X509_get_version();
test_wolfSSL_X509_print();
test_wolfSSL_RSA_verify();
test_wolfSSL_X509_get_ext_count();
test_wolfSSL_X509_cmp();
/* test the no op functions for compatibility */
test_no_op_functions();

View File

@ -834,8 +834,8 @@ WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_sk_ASN1_OBJECT_pop(
WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk);
WOLFSSL_API void wolfSSL_sk_ASN1_OBJECT_free(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk);
WOLFSSL_API void wolfSSL_sk_ASN1_OBJECT_pop_free(
WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk,
void f (WOLFSSL_ASN1_OBJECT*));
WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk,
void (*func)(WOLFSSL_ASN1_OBJECT*));
WOLFSSL_API int wolfSSL_ASN1_STRING_to_UTF8(unsigned char **out, WOLFSSL_ASN1_STRING *in);
WOLFSSL_API int wolfSSL_set_ex_data(WOLFSSL*, int, void*);