OpenSSL ERR_GET_LIB numeric values to human understandable clues
===

I'm porting a project written in C onto an OpenWRT mipsel system. Cross-compiling and library linking is all fine, the project builds and runs on the mipsel system, but there's a runtime problem with OpenSSL.

Seems that PKCS12_create fails for some yet unknown reason. Here's what I found out with ERR_print_errors_fp:

<pre>
23502:error:06074079:lib(6):func(116):reason(121):NA:0:TYPE=pbeWithSHA1And40BitRC2-CBC
23502:error:23077073:lib(35):func(119):reason(115):NA:0:
23502:error:2306C067:lib(35):func(108):reason(103):NA:0:
23502:error:23073067:lib(35):func(115):reason(103):NA:0:
</pre>

That's exactly what the [OpenSSL GET_ERR_LIB](http://www.openssl.org/docs/crypto/ERR_GET_LIB.html) is supposed to give. But how do I for example find out what's lib 35, function 119 and reason 115?

I use a OpenWRT SDK cross-compiler and link against libraries (incl. OpenSSL) from the same SDK. 

Here's the essential pieces of code I use to get the errors listed above:


    PKCS12 *pkcs12 = NULL;
    EVP_PKEY *pkey = EVP_PKEY_new();
    X509 *cert = X509_new();

    ...

    pkcs12 = PKCS12_create(password, username, pkey, cert, NULL,
                           0, 0, 0, PKCS12_DEFAULT_ITER, 0);
    ERR_print_errors_fp(stderr);
    
    if (pkcs12 == NULL){
        printf("pkcs12 == NULL\n");
        /* And here we bail out... */
    }


The code works and is well tested on x86 systems.


So my question here is: How do I find out what the lib, func and reason numeric values actually stand for?
