I'm having trouble programmatically reading a password protected
.pem file.  With the same openssl library, I can read it using the
openssl command line.

Based on the below failure call stack, it seems to be failing getting the
nid for the cipher.

I suspect some compiler or linker option, but the fact that
the 'openssl' application works with the same library confuses
me.

Call stack:

PEM_read_bio_PrivateKey
  PEM_bytes_read_bio
    PEM_get_EVP_CIPHER_INFO
      OBJ_sn2nid (AES-256-CBC)
        OBJ_NAME_get
          lh_retrieve

Program snip, basically the same as apps.c:load_key()

typedef struct pw_cb_data
{
    const void *password;
    const char *prompt_info;
} PW_CB_DATA;

int main()
{
    long          rc = 0;               /* general return code */
    PW_CB_DATA    cb_data;
    BIO     *key = NULL;
    EVP_PKEY      *pkey=NULL;

    cb_data.password = "kkkk";
    cb_data.prompt_info = "signkey.pem";

    key = BIO_new(BIO_s_file());
    if (key == NULL) {
      printf("Error BIO_new() failed\n");
      rc = ERROR_CODE;
    }
    if (BIO_read_filename(key, "signkey.pem") <= 0) {
      printf("Error opening %s\n", "signkey.pem");
      rc = ERROR_CODE;
    }
    pkey = PEM_read_bio_PrivateKey(key, NULL, NULL, &cb_data);
    if (pkey == NULL) {
      printf("unable to load key\n");
      rc = ERROR_CODE;
    }

--
Ken Goldman   [EMAIL PROTECTED]
914-784-7646 (863-7646)
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to