#include
int ERR_GET_LIB(unsigned long e);
int ERR_GET_FUNC(unsigned long e);
int ERR_GET_REASON(unsigned long e);
The library number and function code describe where the error occurred, the reason code is the information about what went wrong.
Each sub-library of OpenSSL has a unique library number; function and reason codes are unique within each sub-library. Note that different libraries may use the same value to signal different functions and reasons.
EERRRR__RR__...... reason codes such as EERRRR__RR__MMAALLLLOOCC__FFAAIILLUURREE are globally unique. However, when checking for sub-library specific reason codes, be sure to also compare the library number.
_E_R_R___G_E_T___L_I_B_(_), _E_R_R___G_E_T___F_U_N_C_(_) and _E_R_R___G_E_T___R_E_A_S_O_N_(_) are macros.