Merge pull request #4227 from miyazakh/ERR_lib_error_string

add ERR_lib_error_string compatibility layer API
This commit is contained in:
Chris Conlon
2021-07-21 11:19:29 -06:00
committed by GitHub
4 changed files with 71 additions and 0 deletions

View File

@@ -19933,6 +19933,33 @@ const char* wolfSSL_ERR_func_error_string(unsigned long e)
return "";
}
/* return library name
* @param e error code
* @return text library name,
* if there is no suitable library found, returns empty string
*/
const char* wolfSSL_ERR_lib_error_string(unsigned long e)
{
int libe = 0;
(void)libe;
(void)e;
#if defined(OPENSSL_EXTRA)
libe = wolfSSL_ERR_GET_LIB(e);
switch (libe) {
case ERR_LIB_PEM:
return "wolfSSL PEM routines";
case ERR_LIB_EVP:
return "wolfSSL digital envelope routines";
default:
return "";
}
#else
return "";
#endif
}
void SetErrorString(int error, char* str)
{
XSTRNCPY(str, wolfSSL_ERR_reason_error_string(error), WOLFSSL_MAX_ERROR_SZ);

View File

@@ -45890,6 +45890,47 @@ static void test_wolfSSL_DH_get0_pqg(void)
#endif /* OPENSSL_EXTRA && !NO_DH */
}
static void test_wolfSSL_ERR_strings()
{
const char* err1 = "unsupported cipher suite";
const char* err2 = "wolfSSL PEM routines";
const char* err = NULL;
(void)err;
(void)err1;
(void)err2;
#if !defined(NO_ERROR_STRINGS)
printf(testingFmt, "test_wolfSSL_ERR_strings");
#if defined(OPENSSL_EXTRA)
err = ERR_reason_error_string(UNSUPPORTED_SUITE);
AssertTrue(err != NULL);
AssertIntEQ(XSTRNCMP(err, err1, XSTRLEN(err1)), 0);
err = ERR_func_error_string(UNSUPPORTED_SUITE);
AssertTrue(err != NULL);
AssertIntEQ((*err == '\0'), 1);
err = ERR_lib_error_string(PEM_R_PROBLEMS_GETTING_PASSWORD);
AssertTrue(err != NULL);
AssertIntEQ(XSTRNCMP(err, err2, XSTRLEN(err2)), 0);
#else
err = wolfSSL_ERR_reason_error_string(UNSUPPORTED_SUITE);
AssertTrue(err != NULL);
AssertIntEQ(XSTRNCMP(err, err1, XSTRLEN(err1)), 0);
err = wolfSSL_ERR_func_error_string(UNSUPPORTED_SUITE);
AssertTrue(err != NULL);
AssertIntEQ((*err == '\0'), 1);
err = wolfSSL_ERR_lib_error_string(PEM_R_PROBLEMS_GETTING_PASSWORD);
AssertTrue(err != NULL);
AssertIntEQ((*err == ('\0')), 1);
#endif
printf(resultFmt, passed);
#endif
}
/*----------------------------------------------------------------------------*
| Main
*----------------------------------------------------------------------------*/
@@ -45910,6 +45951,7 @@ void ApiTest(void)
(!defined(NO_RSA) || defined(HAVE_ECC))
test_for_double_Free();
#endif
test_wolfSSL_ERR_strings();
test_wolfSSL_CTX_use_certificate_file();
AssertIntEQ(test_wolfSSL_CTX_use_certificate_buffer(), WOLFSSL_SUCCESS);
test_wolfSSL_CTX_use_PrivateKey_file();

View File

@@ -917,6 +917,7 @@ wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_
#define ERR_error_string_n wolfSSL_ERR_error_string_n
#define ERR_reason_error_string wolfSSL_ERR_reason_error_string
#define ERR_func_error_string wolfSSL_ERR_func_error_string
#define ERR_lib_error_string wolfSSL_ERR_lib_error_string
#define ERR_load_BIO_strings wolfSSL_ERR_load_BIO_strings
#ifndef WOLFCRYPT_ONLY

View File

@@ -1275,6 +1275,7 @@ WOLFSSL_API void wolfSSL_ERR_error_string_n(unsigned long e, char* buf,
unsigned long sz);
WOLFSSL_API const char* wolfSSL_ERR_reason_error_string(unsigned long);
WOLFSSL_API const char* wolfSSL_ERR_func_error_string(unsigned long);
WOLFSSL_API const char* wolfSSL_ERR_lib_error_string(unsigned long);
/* extras */