From 47b9c5b054d616c347625a4a0a7d19e4de3b78eb Mon Sep 17 00:00:00 2001 From: Eric Blankenhorn Date: Mon, 11 Jan 2021 16:39:28 -0600 Subject: [PATCH] Adding X509_STORE_CTX API --- src/ssl.c | 20 ++++++++++++++++++-- wolfssl/openssl/ssl.h | 1 + wolfssl/ssl.h | 2 ++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/ssl.c b/src/ssl.c index d8b5bd21c..3211d6e80 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -25328,10 +25328,26 @@ void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX* ctx) void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX* ctx) { - (void)ctx; - /* Do nothing */ + if (ctx != NULL) { +#ifdef OPENSSL_EXTRA + if (ctx->param != NULL){ + XFREE(ctx->param,NULL,DYNAMIC_TYPE_OPENSSL); + ctx->param = NULL; + } +#endif + wolfSSL_X509_STORE_CTX_init(ctx, NULL, NULL, NULL); + } } + +void wolfSSL_X509_STORE_CTX_trusted_stack(WOLFSSL_X509_STORE_CTX *ctx, WOLF_STACK_OF(WOLFSSL_X509) *sk) +{ + if (ctx != NULL) { + ctx->chain = sk; + } +} + + /* Returns corresponding X509 error from internal ASN error */ static int GetX509Error(int e) { diff --git a/wolfssl/openssl/ssl.h b/wolfssl/openssl/ssl.h index eeea765a4..d3bff7f8f 100644 --- a/wolfssl/openssl/ssl.h +++ b/wolfssl/openssl/ssl.h @@ -569,6 +569,7 @@ typedef WOLFSSL_X509_NAME_ENTRY X509_NAME_ENTRY; wolfSSL_X509_STORE_CTX_get0_current_issuer #define X509_STORE_CTX_get0_store wolfSSL_X509_STORE_CTX_get0_store #define X509_STORE_CTX_get0_cert wolfSSL_X509_STORE_CTX_get0_cert +#define X509_STORE_CTX_trusted_stack wolfSSL_X509_STORE_CTX_trusted_stack #define X509_STORE_set_verify_cb(s, c) \ wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_CTX_verify_cb)(c)) diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 723a8f61a..081cc3dba 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -1472,6 +1472,8 @@ WOLFSSL_API int wolfSSL_X509_STORE_CTX_init(WOLFSSL_X509_STORE_CTX*, WOLFSSL_X509_STORE*, WOLFSSL_X509*, WOLF_STACK_OF(WOLFSSL_X509)*); WOLFSSL_API void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX*); WOLFSSL_API void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX*); +WOLFSSL_API void wolfSSL_X509_STORE_CTX_trusted_stack(WOLFSSL_X509_STORE_CTX *ctx, + WOLF_STACK_OF(WOLFSSL_X509) *sk); WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_lastUpdate(WOLFSSL_X509_CRL*); WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_nextUpdate(WOLFSSL_X509_CRL*);