@@ -26595,6 +26595,65 @@ int SendAlert(WOLFSSL* ssl, int severity, int type)
2659526595#include <wolfssl/debug-untrace-error-codes.h>
2659626596#endif
2659726597
26598+ #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \
26599+ defined(HAVE_WEBSERVER) || defined(HAVE_MEMCACHED)
26600+ static const char* wolfSSL_ERR_reason_error_string_OpenSSL(unsigned long e)
26601+ {
26602+ switch (e) {
26603+ /* TODO: -WOLFSSL_X509_V_ERR_CERT_SIGNATURE_FAILURE. Conflicts with
26604+ * -WOLFSSL_ERROR_WANT_CONNECT.
26605+ */
26606+ case WOLFSSL_X509_V_ERR_CRL_HAS_EXPIRED:
26607+ return "CRL has expired";
26608+
26609+ case WOLFSSL_X509_V_ERR_UNABLE_TO_GET_CRL:
26610+ return "unable to get CRL";
26611+
26612+ case WOLFSSL_X509_V_ERR_CERT_NOT_YET_VALID:
26613+ return "certificate not yet valid";
26614+
26615+ case WOLFSSL_X509_V_ERR_CERT_HAS_EXPIRED:
26616+ return "certificate has expired";
26617+
26618+ case WOLFSSL_X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
26619+ return "certificate signature failure";
26620+
26621+ case WOLFSSL_X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
26622+ return "format error in certificate's notAfter field";
26623+
26624+ case WOLFSSL_X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
26625+ return "self-signed certificate in certificate chain";
26626+
26627+ case WOLFSSL_X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:
26628+ return "unable to get local issuer certificate";
26629+
26630+ case WOLFSSL_X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
26631+ return "unable to verify the first certificate";
26632+
26633+ case WOLFSSL_X509_V_ERR_CERT_CHAIN_TOO_LONG:
26634+ return "certificate chain too long";
26635+
26636+ case WOLFSSL_X509_V_ERR_CERT_REVOKED:
26637+ return "certificate revoked";
26638+
26639+ case WOLFSSL_X509_V_ERR_INVALID_CA:
26640+ return "invalid CA certificate";
26641+
26642+ case WOLFSSL_X509_V_ERR_PATH_LENGTH_EXCEEDED:
26643+ return "path length constraint exceeded";
26644+
26645+ case WOLFSSL_X509_V_ERR_CERT_REJECTED:
26646+ return "certificate rejected";
26647+
26648+ case WOLFSSL_X509_V_ERR_SUBJECT_ISSUER_MISMATCH:
26649+ return "subject issuer mismatch";
26650+
26651+ default:
26652+ return NULL;
26653+ }
26654+ }
26655+ #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL || HAVE_WEBSERVER || HAVE_MEMCACHED */
26656+
2659826657const char* wolfSSL_ERR_reason_error_string(unsigned long e)
2659926658{
2660026659#ifdef NO_ERROR_STRINGS
@@ -26606,11 +26665,18 @@ const char* wolfSSL_ERR_reason_error_string(unsigned long e)
2660626665
2660726666 int error = (int)e;
2660826667
26609- /* OpenSSL uses positive error codes */
2661026668 if (error > 0) {
26669+ #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \
26670+ defined(HAVE_WEBSERVER) || defined(HAVE_MEMCACHED)
26671+ /* try OpenSSL error strings first */
26672+ const char* ossl_err = wolfSSL_ERR_reason_error_string_OpenSSL(e);
26673+ if (ossl_err != NULL) {
26674+ return ossl_err;
26675+ }
26676+ /* try to find error strings from wolfSSL */
26677+ #endif
2661126678 error = -error;
2661226679 }
26613-
2661426680 /* pass to wolfCrypt */
2661526681 if ((error <= WC_SPAN1_FIRST_E && error >= WC_SPAN1_MIN_CODE_E) ||
2661626682 (error <= WC_SPAN2_FIRST_E && error >= WC_SPAN2_MIN_CODE_E))
@@ -27169,55 +27235,6 @@ const char* wolfSSL_ERR_reason_error_string(unsigned long e)
2716927235 return "Private key decode error (EVP)";
2717027236 }
2717127237
27172- #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \
27173- defined(HAVE_WEBSERVER) || defined(HAVE_MEMCACHED)
27174-
27175- switch (error) {
27176- /* TODO: -WOLFSSL_X509_V_ERR_CERT_SIGNATURE_FAILURE. Conflicts with
27177- * -WOLFSSL_ERROR_WANT_CONNECT.
27178- */
27179-
27180- case -WOLFSSL_X509_V_ERR_CERT_NOT_YET_VALID:
27181- return "certificate not yet valid";
27182-
27183- case -WOLFSSL_X509_V_ERR_CERT_HAS_EXPIRED:
27184- return "certificate has expired";
27185-
27186- case -WOLFSSL_X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
27187- return "certificate signature failure";
27188-
27189- case -WOLFSSL_X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
27190- return "format error in certificate's notAfter field";
27191-
27192- case -WOLFSSL_X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
27193- return "self-signed certificate in certificate chain";
27194-
27195- case -WOLFSSL_X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:
27196- return "unable to get local issuer certificate";
27197-
27198- case -WOLFSSL_X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
27199- return "unable to verify the first certificate";
27200-
27201- case -WOLFSSL_X509_V_ERR_CERT_CHAIN_TOO_LONG:
27202- return "certificate chain too long";
27203-
27204- case -WOLFSSL_X509_V_ERR_CERT_REVOKED:
27205- return "certificate revoked";
27206-
27207- case -WOLFSSL_X509_V_ERR_INVALID_CA:
27208- return "invalid CA certificate";
27209-
27210- case -WOLFSSL_X509_V_ERR_PATH_LENGTH_EXCEEDED:
27211- return "path length constraint exceeded";
27212-
27213- case -WOLFSSL_X509_V_ERR_CERT_REJECTED:
27214- return "certificate rejected";
27215-
27216- case -WOLFSSL_X509_V_ERR_SUBJECT_ISSUER_MISMATCH:
27217- return "subject issuer mismatch";
27218- }
27219- #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL || HAVE_WEBSERVER || HAVE_MEMCACHED */
27220-
2722127238 return "unknown error number";
2722227239
2722327240#endif /* NO_ERROR_STRINGS */
0 commit comments