forked from wolfSSL/wolfssl
group sk x509 functions together and implement sk x509 pop free
This commit is contained in:
93
src/ssl.c
93
src/ssl.c
@@ -16151,6 +16151,65 @@ WOLFSSL_X509* wolfSSL_sk_X509_pop(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void* wolfSSL_sk_X509_NAME_value(const STACK_OF(WOLFSSL_X509_NAME)* sk, int i)
|
||||||
|
{
|
||||||
|
WOLFSSL_ENTER("wolfSSL_sk_X509_NAME_value");
|
||||||
|
|
||||||
|
for (; sk != NULL && i > 0; i--)
|
||||||
|
sk = sk->next;
|
||||||
|
|
||||||
|
if (i != 0 || sk == NULL)
|
||||||
|
return NULL;
|
||||||
|
return sk->data.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void* wolfSSL_sk_X509_value(STACK_OF(WOLFSSL_X509)* sk, int i)
|
||||||
|
{
|
||||||
|
WOLFSSL_ENTER("wolfSSL_sk_X509_value");
|
||||||
|
|
||||||
|
for (; sk != NULL && i > 0; i--)
|
||||||
|
sk = sk->next;
|
||||||
|
|
||||||
|
if (i != 0 || sk == NULL)
|
||||||
|
return NULL;
|
||||||
|
return sk->data.x509;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Free's all nodes in X509 stack. This is different then wolfSSL_sk_X509_free
|
||||||
|
* in that it allows for choosing the function to use when freeing an X509s.
|
||||||
|
*
|
||||||
|
* sk stack to free nodes in
|
||||||
|
* f X509 free function
|
||||||
|
*/
|
||||||
|
void wolfSSL_sk_X509_pop_free(STACK_OF(WOLFSSL_X509)* sk, void f (WOLFSSL_X509*)){
|
||||||
|
WOLFSSL_STACK* node;
|
||||||
|
|
||||||
|
WOLFSSL_ENTER("wolfSSL_sk_X509_pop_free");
|
||||||
|
|
||||||
|
if (sk == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* parse through stack freeing each node */
|
||||||
|
node = sk->next;
|
||||||
|
while (sk->num > 1) {
|
||||||
|
WOLFSSL_STACK* tmp = node;
|
||||||
|
node = node->next;
|
||||||
|
|
||||||
|
f(tmp->data.x509);
|
||||||
|
XFREE(tmp, NULL, DYNAMIC_TYPE_X509);
|
||||||
|
sk->num -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* free head of stack */
|
||||||
|
if (sk->num == 1) {
|
||||||
|
f(sk->data.x509);
|
||||||
|
}
|
||||||
|
XFREE(sk, NULL, DYNAMIC_TYPE_X509);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* free structure for x509 stack */
|
/* free structure for x509 stack */
|
||||||
void wolfSSL_sk_X509_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk) {
|
void wolfSSL_sk_X509_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk) {
|
||||||
WOLFSSL_STACK* node;
|
WOLFSSL_STACK* node;
|
||||||
@@ -29677,31 +29736,6 @@ int wolfSSL_CTX_add_session(WOLFSSL_CTX* ctx, WOLFSSL_SESSION* session)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
void* wolfSSL_sk_X509_NAME_value(const WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk, int i)
|
|
||||||
{
|
|
||||||
WOLFSSL_ENTER("wolfSSL_sk_X509_NAME_value");
|
|
||||||
|
|
||||||
for (; sk != NULL && i > 0; i--)
|
|
||||||
sk = sk->next;
|
|
||||||
|
|
||||||
if (i != 0 || sk == NULL)
|
|
||||||
return NULL;
|
|
||||||
return sk->data.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void* wolfSSL_sk_X509_value(WOLF_STACK_OF(WOLFSSL_X509)* sk, int i)
|
|
||||||
{
|
|
||||||
WOLFSSL_ENTER("wolfSSL_sk_X509_value");
|
|
||||||
|
|
||||||
for (; sk != NULL && i > 0; i--)
|
|
||||||
sk = sk->next;
|
|
||||||
|
|
||||||
if (i != 0 || sk == NULL)
|
|
||||||
return NULL;
|
|
||||||
return sk->data.x509;
|
|
||||||
}
|
|
||||||
|
|
||||||
int wolfSSL_version(WOLFSSL* ssl)
|
int wolfSSL_version(WOLFSSL* ssl)
|
||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_version");
|
WOLFSSL_ENTER("wolfSSL_version");
|
||||||
@@ -29850,15 +29884,6 @@ WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_X509_STORE_get1_certs(WOLFSSL_X509_STORE_CT
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef NO_WOLFSSL_STUB
|
|
||||||
void wolfSSL_sk_X509_pop_free(WOLF_STACK_OF(WOLFSSL_X509)* sk, void f (WOLFSSL_X509*)){
|
|
||||||
(void) sk;
|
|
||||||
(void) f;
|
|
||||||
WOLFSSL_ENTER("wolfSSL_sk_X509_pop_free");
|
|
||||||
WOLFSSL_STUB("sk_X509_pop_free");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* OPENSSL_EXTRA and HAVE_STUNNEL */
|
#endif /* OPENSSL_EXTRA and HAVE_STUNNEL */
|
||||||
#if defined(OPENSSL_EXTRA) && (defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX))\
|
#if defined(OPENSSL_EXTRA) && (defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX))\
|
||||||
|| defined(WOLFSSL_HAPROXY)
|
|| defined(WOLFSSL_HAPROXY)
|
||||||
|
@@ -2590,7 +2590,7 @@ static void test_wolfSSL_PKCS12(void)
|
|||||||
|
|
||||||
EVP_PKEY_free(pkey);
|
EVP_PKEY_free(pkey);
|
||||||
X509_free(cert);
|
X509_free(cert);
|
||||||
sk_X509_free(ca);
|
sk_X509_pop_free(ca, X509_free);
|
||||||
|
|
||||||
/* check PKCS12_create */
|
/* check PKCS12_create */
|
||||||
AssertNull(PKCS12_create(pass, NULL, NULL, NULL, NULL, -1, -1, -1, -1,0));
|
AssertNull(PKCS12_create(pass, NULL, NULL, NULL, NULL, -1, -1, -1, -1,0));
|
||||||
|
Reference in New Issue
Block a user