From 54af9fb884a2de9bf0081e6f8323a431f7d484f2 Mon Sep 17 00:00:00 2001 From: Jacob Barthelmeh Date: Fri, 6 Jan 2017 16:53:15 -0700 Subject: [PATCH] compatibility mapping for STORE_CTX functions and added test case --- src/ssl.c | 15 +++++++++++++++ tests/api.c | 14 +++++++++++++- wolfssl/openssl/ssl.h | 4 ++++ wolfssl/ssl.h | 2 ++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/ssl.c b/src/ssl.c index ddb8fdc4f..e93eb7725 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -24387,6 +24387,21 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl) * root CA. */ return wolfSSL_PEM_read_bio_X509(bp, x, cb, u); } + + + /* Copies entry into name. With it being copied freeing entry becomes the + * callers responsibility. + * returns 1 for success and 0 for error */ + int wolfSSL_X509_NAME_add_entry(WOLFSSL_X509_NAME* name, + WOLFSSL_X509_NAME_ENTRY* entry, int idx, int set) + { + (void)name; + (void)entry; + (void)idx; + (void)set; + WOLFSSL_STUB("wolfSSL_X509_NAME_add_entry"); + return SSL_FAILURE; + } #endif /* ifndef NO_CERTS */ #ifndef NO_CERTS diff --git a/tests/api.c b/tests/api.c index 0c3a36010..5a77b8fa3 100644 --- a/tests/api.c +++ b/tests/api.c @@ -14610,6 +14610,8 @@ static void test_wolfSSL_X509(void) #if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && !defined(NO_FILESYSTEM) X509* x509; BIO* bio; + X509_STORE_CTX* ctx; + X509_STORE* store; printf(testingFmt, "wolfSSL_X509()"); @@ -14622,8 +14624,18 @@ static void test_wolfSSL_X509(void) AssertIntEQ(i2d_X509_bio(bio, x509), SSL_SUCCESS); + AssertNotNull(ctx = X509_STORE_CTX_new()); + + AssertIntEQ(X509_verify_cert(ctx), SSL_FATAL_ERROR); + + AssertNotNull(store = X509_STORE_new()); + AssertIntEQ(X509_STORE_add_cert(store, x509), SSL_SUCCESS); + AssertIntEQ(X509_STORE_CTX_init(ctx, store, x509, NULL), SSL_SUCCESS); + AssertIntEQ(X509_verify_cert(ctx), SSL_SUCCESS); + + + X509_STORE_CTX_free(ctx); BIO_free(bio); - X509_free(x509); printf(resultFmt, passed); #endif diff --git a/wolfssl/openssl/ssl.h b/wolfssl/openssl/ssl.h index e9f1b090c..fd29deab8 100644 --- a/wolfssl/openssl/ssl.h +++ b/wolfssl/openssl/ssl.h @@ -307,14 +307,18 @@ typedef WOLFSSL_X509_STORE_CTX X509_STORE_CTX; #define X509_STORE_add_cert wolfSSL_X509_STORE_add_cert #define X509_STORE_set_flags wolfSSL_X509_STORE_set_flags #define X509_STORE_CTX_set_verify_cb wolfSSL_X509_STORE_CTX_set_verify_cb +#define X509_STORE_CTX_free wolfSSL_X509_STORE_CTX_free +#define X509_STORE_CTX_new wolfSSL_X509_STORE_CTX_new #define X509_STORE_CTX_get_chain wolfSSL_X509_STORE_CTX_get_chain #define X509_STORE_CTX_get_error wolfSSL_X509_STORE_CTX_get_error #define X509_STORE_CTX_get_error_depth wolfSSL_X509_STORE_CTX_get_error_depth +#define X509_NAME_add_entry wolfSSL_X509_NAME_add_entry #define X509_NAME_oneline wolfSSL_X509_NAME_oneline #define X509_get_issuer_name wolfSSL_X509_get_issuer_name #define X509_get_subject_name wolfSSL_X509_get_subject_name #define X509_verify_cert_error_string wolfSSL_X509_verify_cert_error_string +#define X509_verify_cert wolfSSL_X509_verify_cert #define X509_LOOKUP_add_dir wolfSSL_X509_LOOKUP_add_dir #define X509_LOOKUP_load_file wolfSSL_X509_LOOKUP_load_file diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 8c46614ab..4c2d38c42 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -2319,6 +2319,8 @@ WOLFSSL_API long wolfSSL_ctrl(WOLFSSL* ssl, int cmd, long opt, void* pt); WOLFSSL_API long wolfSSL_CTX_ctrl(WOLFSSL_CTX* ctx, int cmd, long opt,void* pt); #ifndef NO_CERTS +WOLFSSL_API int wolfSSL_X509_NAME_add_entry(WOLFSSL_X509_NAME* name, + WOLFSSL_X509_NAME_ENTRY* entry, int idx, int set); WOLFSSL_API int wolfSSL_check_private_key(const WOLFSSL* ssl); WOLFSSL_API void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, int nid, int* c, int* idx);