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 */
|
||||
void wolfSSL_sk_X509_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk) {
|
||||
WOLFSSL_STACK* node;
|
||||
@@ -29677,31 +29736,6 @@ int wolfSSL_CTX_add_session(WOLFSSL_CTX* ctx, WOLFSSL_SESSION* session)
|
||||
#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)
|
||||
{
|
||||
WOLFSSL_ENTER("wolfSSL_version");
|
||||
@@ -29850,15 +29884,6 @@ WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_X509_STORE_get1_certs(WOLFSSL_X509_STORE_CT
|
||||
}
|
||||
#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 */
|
||||
#if defined(OPENSSL_EXTRA) && (defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX))\
|
||||
|| defined(WOLFSSL_HAPROXY)
|
||||
|
@@ -2590,7 +2590,7 @@ static void test_wolfSSL_PKCS12(void)
|
||||
|
||||
EVP_PKEY_free(pkey);
|
||||
X509_free(cert);
|
||||
sk_X509_free(ca);
|
||||
sk_X509_pop_free(ca, X509_free);
|
||||
|
||||
/* check PKCS12_create */
|
||||
AssertNull(PKCS12_create(pass, NULL, NULL, NULL, NULL, -1, -1, -1, -1,0));
|
||||
|
Reference in New Issue
Block a user