On Tue, Apr 27, 2004, Carlos Roberto Zainos H wrote:

> Hi Dr Henson and openssl users list.
>  
> I'm very thankful by your answers.
>  
> This time I'm having problems with the d2i_PKCS8PrivateKey_bio function. This always 
> returns me 0 , and really I don't know what's wrong.
> My code:
> RSA *rsa;
> EVP_PKEY *dec_key, **x=NULL;
> BIO *in=NULL;
> char *password = "am01key";
> char *priv_key_der = "llaveAMp5.key";/*PBE privkey file */
> int i,size_llave=0;
>  
> OpenSSL_add_all_algorithms();
> ERR_load_crypto_strings();
>  
> in=BIO_new(BIO_s_file());
> if (in==NULL) /*not problem */
>  {
>   /* Error code*/
>  }
>   
>  if (BIO_read_filename(in,priv_key_der) <= 0) /*not problem*/
>  {
>     /*Error Code*/
>  }
> 
>  /*dec_key=EVP_PKEY_new(); comment this because I thought could be the problem*/
> dec_key=d2i_PKCS8PrivateKey_bio(in, x, NULL,password);
> if (dec_key=NULL) /*also not problem*/
>  {
>   /*Error code */
>  }
> 
> size_llave=EVP_PKEY_size(dec_key); /*result of this function is always 0 */
> printf("%d\n", size_llave); /*prints zero 0 */
>  
> rsa=RSA_new();
> rsa=EVP_PKEY_get1_RSA(dec_key); /*this function breaks because dec_key is 0 size 
> bytes, right ? */
>  
> With all my test keys the results are the same (privkeyp5.key,
> privkeyp8.key, privkey_der.key). Is there some type of bug ? Or this is
> caused by my C code??
>  

Yep its your C code. That line:

if (dec_key=NULL)

will *set* dec to NULL which will cause the problems later on. You should do:

if (dec_key == NULL)

Steve.
--
Dr Stephen N. Henson. Email, S/MIME and PGP keys: see homepage
OpenSSL project core developer and freelance consultant.
Funding needed! Details on homepage.
Homepage: http://www.drh-consultancy.demon.co.uk
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to