The code is basically like this:
RSA* rsa = RSA_generate_key(2048, RSA_F4, 0, 0);
// check if RSA key is valid
if (rsa && RSA_check_key(rsa) > 0)
{
// find size of buffere required to encode public key
int len = i2d_RSAPublicKey(rsa, 0);
// allocate buffer
unsigned char* buf = new unsigned char[len];
// now call again to DER encode the public key
if (i2d_RSAPublicKey(rsa, &buf) == len)
{
// now try to decode the buffer
unsigned char* tmp = buf;
RSA* public_key = d2i_RSAPublicKey(0, (const unsigned
char**)&tmp, len);
if (public_key)
{
printf("yeah, we successfully DER decoded the
public key.\n");
}
else
{
char err[1024];
ERR_error_string(ERR_get_error(), err);
printf("Failed to DER decode public key : %s\n",
err);
}
}
}
I've also tried creating the RSA object first, and passing it into
d2i_RSAPublicKey() for it to fill in. It also returns me null back.
Does the code look right?
Thanks,
Ed
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Dr.
> Stephen Henson
> Sent: Thursday, July 21, 2005 4:12 AM
> To: [email protected]
> Subject: Re: d2i_RSAPublicKey doesn't work
>
> On Wed, Jul 20, 2005, Edward Chan wrote:
>
> > Hmm, well, I guess I assumed i2d_RSAPublicKey() was ok
> since the RSA
> > key seems fine (I ran RSA_check_key() on it and it says it
> is ok). Is
> > there any reason why i2d_RSAPublicKey() would not be
> returning me valid data?
> >
>
> Normally only if it is not called correctly.
>
> > int len = i2d_RSAPublicKey(rsa, 0);
> >
> > returns me something > 0, so I assumed that it is fine.
> Wouldn't this
> > return -1 if it failed?
> >
>
> Currently most i2d functions will never return -1 though that
> may change in future.
>
> > As for the usage of i2d_RSAPublicKey(), it is as the book says. I
> > call it once to find the size of the buffer required. Then
> I allocate
> > the buffer. Then call it again to actually fill the
> buffer. Is this
> > not correct?
> >
>
> What code are you using to fill the buffer?
>
> 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]
>
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [EMAIL PROTECTED]