From ef8f4e4461ad2bc2cf1c120e931f9d21a6170cfc Mon Sep 17 00:00:00 2001 From: Marcel Poul Date: Wed, 30 May 2012 15:35:39 +0000 Subject: [PATCH] prepare function that translate openssl error code to canl error codes --- emi.canl.canl-c/src/canl.h | 2 -- emi.canl.canl-c/src/canl_err.c | 22 ++++++++++++++++++++-- emi.canl.canl-c/src/canl_locl.h | 1 + 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/emi.canl.canl-c/src/canl.h b/emi.canl.canl-c/src/canl.h index 465d75d..ffac336 100644 --- a/emi.canl.canl-c/src/canl.h +++ b/emi.canl.canl-c/src/canl.h @@ -8,8 +8,6 @@ extern "C" { #endif -#include - #ifndef CANL_CALLCONV #define CANL_CALLCONV #endif diff --git a/emi.canl.canl-c/src/canl_err.c b/emi.canl.canl-c/src/canl_err.c index 29ebded..312d787 100644 --- a/emi.canl.canl-c/src/canl_err.c +++ b/emi.canl.canl-c/src/canl_err.c @@ -6,8 +6,9 @@ static canl_err_code resolve_error_code(glb_ctx *cc, unsigned long err_code, canl_err_origin err_orig); static void get_error_string(glb_ctx *cc, char *code_str); static canl_err_code update_error_msg(canl_ctx cc, const char *new_msg); -static char * -canl_strerror(const canl_err_code c_code); +static char *canl_strerror(const canl_err_code c_code); +static canl_error canl_err_ssl_to_canl(const unsigned long ossl_lib, + const unsigned long ossl_reason); /* Save error message into err_msg * use NULL for empty err_format */ @@ -208,6 +209,23 @@ canl_strerror(const canl_err_code c_code) return new_str; } +/*return appropriate CANL_ERROR according to openssl error code or -1 if +no one found */ +static canl_error +canl_err_ssl_to_canl(const unsigned long ossl_lib, + const unsigned long ossl_reason) +{ + canl_error ret_err = -1; + int k = 0; + for (k = 0; k < canl_err_descs_num; k++) { + if (canl_err_descs[k].openssl_lib == ossl_lib) { + if (canl_err_descs[k].openssl_reason == ossl_reason) + ret_err = canl_err_descs[k].code; + } + } + return ret_err; +} + canl_err_code canl_get_error_code(canl_ctx cc) { diff --git a/emi.canl.canl-c/src/canl_locl.h b/emi.canl.canl-c/src/canl_locl.h index 1a0a22e..a706429 100644 --- a/emi.canl.canl-c/src/canl_locl.h +++ b/emi.canl.canl-c/src/canl_locl.h @@ -20,6 +20,7 @@ #include "sslutils.h" #include "canl.h" +#include "canl_err.h" typedef struct canl_err_desc { canl_error code; -- 1.8.2.3