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 */ /* parse through stack freeing each node */
node = sk->next; node = sk->next;
while (sk->num > 1) { while ((node != NULL) && (sk->num > 1)) {
WOLFSSL_STACK* tmp = node; WOLFSSL_STACK* tmp = node;
node = node->next; node = node->next;
@ -16499,31 +16499,33 @@ void wolfSSL_sk_ASN1_OBJECT_free(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk)
* f X509 free function * f X509 free function
*/ */
void wolfSSL_sk_ASN1_OBJECT_pop_free(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk, 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_STACK* node;
WOLFSSL_ENTER("wolfSSL_sk_ASN1_OBJECT_pop_free"); 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; return;
} }
/* parse through stack freeing each node */ /* parse through stack freeing each node */
node = sk->next; node = sk->next;
while (sk->num > 1) { while ((node != NULL) && (sk->num > 1)) {
WOLFSSL_STACK* tmp = node; WOLFSSL_STACK* tmp = node;
node = node->next; node = node->next;
f(tmp->data.obj); func(tmp->data.obj);
XFREE(tmp, NULL, DYNAMIC_TYPE_ASN1); XFREE(tmp, NULL, DYNAMIC_TYPE_ASN1);
sk->num -= 1; sk->num -= 1;
} }
/* free head of stack */ /* free head of stack */
if (sk->num == 1) { if (sk->num == 1) {
f(sk->data.obj); func(sk->data.obj);
} }
XFREE(sk, NULL, DYNAMIC_TYPE_ASN1); 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) static void test_no_op_functions(void)
{ {
#if defined(OPENSSL_EXTRA) #if defined(OPENSSL_EXTRA)
@ -25444,6 +25513,10 @@ void ApiTest(void)
test_wolfSSL_X509_get_version(); test_wolfSSL_X509_get_version();
test_wolfSSL_X509_print(); test_wolfSSL_X509_print();
test_wolfSSL_RSA_verify(); test_wolfSSL_RSA_verify();
test_wolfSSL_X509_get_ext_count();
test_wolfSSL_X509_cmp();
/* test the no op functions for compatibility */ /* test the no op functions for compatibility */
test_no_op_functions(); 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); 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_free(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk);
WOLFSSL_API void wolfSSL_sk_ASN1_OBJECT_pop_free( WOLFSSL_API void wolfSSL_sk_ASN1_OBJECT_pop_free(
WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk, WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk,
void f (WOLFSSL_ASN1_OBJECT*)); void (*func)(WOLFSSL_ASN1_OBJECT*));
WOLFSSL_API int wolfSSL_ASN1_STRING_to_UTF8(unsigned char **out, WOLFSSL_ASN1_STRING *in); 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*); WOLFSSL_API int wolfSSL_set_ex_data(WOLFSSL*, int, void*);