ERR_peek_last_error() and SSL_get_SSL_CTX reference error on opensslextra.

Implemented wolfSSL_X509_get_version().
This commit is contained in:
Go Hosohara
2018-06-13 17:23:39 +09:00
parent e79cdefcde
commit b588e6ab29
5 changed files with 88 additions and 38 deletions

View File

@@ -84,7 +84,7 @@
#if defined(TIME_OVERRIDES) && defined(HAVE_TM_TYPE) && defined(HAVE_TIME_T_TYPE)
/* #include "time_mng.h" */
typedef unsigned long Time_t
typedef unsigned long Time_t;
#define time_t Time_t
#define WOLFSSL_GMTIME
#define XGMTIME gmtime

View File

@@ -11166,7 +11166,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
return WOLFSSL_FATAL_ERROR;
}
int wolfSSL_OPENSSL_add_all_algorithms_noconf(void)
int wolfSSL_OpenSSL_add_all_algorithms_noconf(void)
{
WOLFSSL_ENTER("wolfSSL_OPENSSL_add_all_algorithms_noconf");
@@ -32224,28 +32224,6 @@ void wolfSSL_ERR_load_crypto_strings(void)
return;
}
unsigned long wolfSSL_ERR_peek_last_error(void)
{
WOLFSSL_ENTER("wolfSSL_ERR_peek_last_error");
#if defined(OPENSSL_EXTRA) || defined(WOLFSSL_NGINX)
{
int ret;
if ((ret = wc_PeekErrorNode(-1, NULL, NULL, NULL)) < 0) {
WOLFSSL_MSG("Issue peeking at error node in queue");
return 0;
}
if (ret == -ASN_NO_PEM_HEADER)
return (ERR_LIB_PEM << 24) | PEM_R_NO_START_LINE;
return (unsigned long)ret;
}
#else
return (unsigned long)(0 - NOT_COMPILED_IN);
#endif
}
/* Remove ifdef */
#ifndef NO_WOLFSSL_STUB
int wolfSSL_FIPS_mode(void)
{
@@ -32388,12 +32366,6 @@ int wolfSSL_version(WOLFSSL* ssl)
}
WOLFSSL_CTX* wolfSSL_get_SSL_CTX(WOLFSSL* ssl)
{
WOLFSSL_ENTER("wolfSSL_get_SSL_CTX");
return ssl->ctx;
}
int wolfSSL_X509_NAME_get_sz(WOLFSSL_X509_NAME* name)
{
WOLFSSL_ENTER("wolfSSL_X509_NAME_get_sz");
@@ -32510,6 +32482,35 @@ WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_X509_STORE_get1_certs(WOLFSSL_X509_STORE_CT
#endif /* OPENSSL_ALL || (OPENSSL_EXTRA && (HAVE_STUNNEL || WOLFSSL_NGINX || HAVE_LIGHTY)) */
#if defined(OPENSSL_EXTRA)
unsigned long wolfSSL_ERR_peek_last_error(void)
{
WOLFSSL_ENTER("wolfSSL_ERR_peek_last_error");
#if defined(OPENSSL_EXTRA) || defined(WOLFSSL_NGINX)
{
int ret;
if ((ret = wc_PeekErrorNode(-1, NULL, NULL, NULL)) < 0) {
WOLFSSL_MSG("Issue peeking at error node in queue");
return 0;
}
if (ret == -ASN_NO_PEM_HEADER)
return (ERR_LIB_PEM << 24) | PEM_R_NO_START_LINE;
return (unsigned long)ret;
}
#else
return (unsigned long)(0 - NOT_COMPILED_IN);
#endif
}
WOLFSSL_CTX* wolfSSL_get_SSL_CTX(WOLFSSL* ssl)
{
WOLFSSL_ENTER("wolfSSL_get_SSL_CTX");
return ssl->ctx;
}
#endif /* OPENSSL_EXTRA */
#if defined(OPENSSL_ALL) || \
(defined(OPENSSL_EXTRA) && (defined(HAVE_STUNNEL) || \
defined(WOLFSSL_NGINX)) || defined(WOLFSSL_HAPROXY))
@@ -34272,4 +34273,20 @@ int wolfSSL_X509_CA_num(WOLFSSL_X509_STORE* store)
return cnt_ret;
}
#endif /* !NO_CERT */
long wolfSSL_X509_get_version(const WOLFSSL_X509 *x509){
int version = 0;
WOLFSSL_ENTER("wolfSSL_X509_get_version");
if (x509 == NULL){
WOLFSSL_MSG("invalid parameter");
return 0L;
}
version = x509->version;
if (version != 0)
return (long)version - 1L;
return 0L;
}
#endif /* OPENSSL_EXTRA */

View File

@@ -19596,11 +19596,12 @@ static void test_wolfSSL_X509_get_serialNumber(void)
}
static void test_wolfSSL_OPENSSL_add_all_algorithms(void){
static void test_wolfSSL_OpenSSL_add_all_algorithms(void){
#if defined(OPENSSL_EXTRA)
printf(testingFmt, "wolfSSL_OPENSSL_add_all_algorithms()");
printf(testingFmt, "wolfSSL_OpenSSL_add_all_algorithms()");
AssertIntEQ(wolfSSL_OPENSSL_add_all_algorithms_noconf(),WOLFSSL_SUCCESS);
AssertIntEQ(wolfSSL_OpenSSL_add_all_algorithms_noconf(),WOLFSSL_SUCCESS);
wolfSSL_Cleanup();
printf(resultFmt, passed);
#endif
@@ -19781,6 +19782,8 @@ static void test_wolfSSL_X509_check_ca(void){
#if defined(OPENSSL_EXTRA) && !defined(NO_RSA) && !defined(NO_FILESYSTEM)
WOLFSSL_X509 *x509;
printf(testingFmt, "wolfSSL_X509_check_ca()");
x509 = wolfSSL_X509_load_certificate_file(svrCertFile, WOLFSSL_FILETYPE_PEM);
AssertIntEQ(wolfSSL_X509_check_ca(x509), 1);
wolfSSL_X509_free(x509);
@@ -19788,6 +19791,23 @@ static void test_wolfSSL_X509_check_ca(void){
x509 = wolfSSL_X509_load_certificate_file(ntruCertFile, WOLFSSL_FILETYPE_PEM);
AssertIntEQ(wolfSSL_X509_check_ca(x509), 0);
wolfSSL_X509_free(x509);
printf(resultFmt, passed);
#endif
}
static void test_wolfSSL_X509_get_version(void){
#if defined(OPENSSL_EXTRA) && !defined(NO_FILESYSTEM)
WOLFSSL_X509 *x509;
printf(testingFmt, "wolfSSL_X509_get_version()");
x509 = wolfSSL_X509_load_certificate_file(svrCertFile, WOLFSSL_FILETYPE_PEM);
AssertNotNull(x509);
AssertIntEQ((int)wolfSSL_X509_get_version(x509), 2);
wolfSSL_X509_free(x509);
printf(resultFmt, passed);
#endif
}
@@ -21012,15 +21032,17 @@ static void test_wolfSSL_X509_CRL(void)
static void test_wolfSSL_PEM_read_X509(void)
{
#if defined(OPENSSL_EXTRA) && !defined(NO_FILESYSTEM)
#if defined(OPENSSL_EXTRA) && defined(HAVE_CRL) && !defined(NO_FILESYSTEM)
X509 *x509 = NULL;
XFILE fp;
printf(testingFmt, "wolfSSL_PEM_read_X509");
AssertNotNull(fp = XFOPEN(svrCertFile, "rb"));
AssertNotNull(x509 = (X509 *)PEM_read_X509(fp, (X509 **)NULL, NULL, NULL));
X509_free(x509);
XFCLOSE(fp);
printf(resultFmt, passed);
#endif
}
@@ -21033,6 +21055,7 @@ static void test_wolfSSL_X509_NAME_ENTRY_get_object()
X509_NAME_ENTRY *ne = NULL;
ASN1_OBJECT *object = NULL;
printf(testingFmt, "wolfSSL_X509_NAME_ENTRY_get_object");
x509 = wolfSSL_X509_load_certificate_file(cliCertFile, WOLFSSL_FILETYPE_PEM);
AssertNotNull(x509);
name = X509_get_subject_name(x509);
@@ -21044,6 +21067,8 @@ static void test_wolfSSL_X509_NAME_ENTRY_get_object()
AssertNotNull(object = X509_NAME_ENTRY_get_object(ne));
X509_free(x509);
printf(resultFmt, passed);
#endif
}
@@ -21314,7 +21339,7 @@ void ApiTest(void)
test_wolfSSL_X509_CRL();
test_wolfSSL_PEM_read_X509();
test_wolfSSL_X509_NAME_ENTRY_get_object();
test_wolfSSL_OPENSSL_add_all_algorithms();
test_wolfSSL_OpenSSL_add_all_algorithms();
test_wolfSSL_ASN1_STRING_print_ex();
test_wolfSSL_ASN1_TIME_to_generalizedtime();
test_wolfSSL_i2c_ASN1_INTEGER();
@@ -21327,6 +21352,7 @@ void ApiTest(void)
#endif /* OPENSSL_ALL || WOLFSSL_ASIO */
test_wolfSSL_X509_CA_num();
test_wolfSSL_X509_get_version();
/* test the no op functions for compatibility */
test_no_op_functions();

View File

@@ -404,7 +404,6 @@ typedef WOLFSSL_X509_STORE_CTX X509_STORE_CTX;
#define SSL_CTX_set_info_callback wolfSSL_CTX_set_info_callback
#define SSL_CTX_set_alpn_protos wolfSSL_CTX_set_alpn_protos
#define ERR_peek_error wolfSSL_ERR_peek_error
#define ERR_peek_last_error wolfSSL_ERR_peek_last_error
#define ERR_peek_last_error_line wolfSSL_ERR_peek_last_error_line
#define ERR_peek_errors_fp wolfSSL_ERR_peek_errors_fp
#define ERR_GET_REASON wolfSSL_ERR_GET_REASON
@@ -785,7 +784,6 @@ typedef STACK_OF(WOLFSSL_ASN1_OBJECT) GENERAL_NAMES;
#define SSL_CTX_flush_sessions wolfSSL_flush_sessions
#define SSL_CTX_add_session wolfSSL_CTX_add_session
#define SSL_get_SSL_CTX wolfSSL_get_SSL_CTX
#define SSL_version wolfSSL_version
#define SSL_get_state wolfSSL_get_state
#define SSL_state_string_long wolfSSL_state_string_long
@@ -956,9 +954,12 @@ typedef WOLFSSL_ASN1_BIT_STRING ASN1_BIT_STRING;
#define SSL_CTX_add_client_CA wolfSSL_CTX_add_client_CA
#define SSL_CTX_set_srp_password wolfSSL_CTX_set_srp_password
#define SSL_CTX_set_srp_username wolfSSL_CTX_set_srp_username
#define OPENSSL_add_all_algorithms_noconf wolfSSL_OPENSSL_add_all_alogrithms_noconf
#define OpenSSL_add_all_algorithms_noconf wolfSSL_OpenSSL_add_all_alogrithms_noconf
#define i2c_ASN1_INTEGER wolfSSL_i2c_ASN1_INTEGER
#define X509_NAME_ENTRY_get_object wolfSSL_X509_NAME_ENTRY_get_object
#define SSL_get_SSL_CTX wolfSSL_get_SSL_CTX
#define ERR_peek_last_error wolfSSL_ERR_peek_last_error
#define X509_get_version wolfSSL_X509_get_version
#define ERR_NUM_ERRORS 16

View File

@@ -825,6 +825,11 @@ WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_mem_buf(void* buf, int len);
WOLFSSL_API long wolfSSL_BIO_set_ssl(WOLFSSL_BIO*, WOLFSSL*, int flag);
WOLFSSL_API long wolfSSL_BIO_set_fd(WOLFSSL_BIO* b, int fd, int flag);
WOLFSSL_API void wolfSSL_set_bio(WOLFSSL*, WOLFSSL_BIO* rd, WOLFSSL_BIO* wr);
WOLFSSL_API int wolfSSL_add_all_algorithms(void);
#ifdef OPENSSL_EXTRA
WOLFSSL_API int wolfSSL_OpenSSL_add_all_algorithms_noconf(void);
#endif
#ifndef NO_FILESYSTEM
WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_file(void);
@@ -2997,6 +3002,7 @@ WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_to_generalizedtime(WOLFSSL_ASN1
WOLFSSL_ASN1_TIME **out);
WOLFSSL_API int wolfSSL_i2c_ASN1_INTEGER(WOLFSSL_ASN1_INTEGER *a, unsigned char **pp);
WOLFSSL_API int wolfSSL_X509_CA_num(WOLFSSL_X509_STORE *store);
WOLFSSL_API long wolfSSL_X509_get_version(const WOLFSSL_X509 *x);
#endif /* OPENSSL_EXTRA */
#ifdef HAVE_PK_CALLBACKS