Dear all,
I am working on a project which has to encrypt datas thanks to an RSA
public key stored in DER format.
I tried to write a test program using the d2i_RSAPublicKey, but the
function returns NULL. However I'm pretty sure the file is correct,
since I could use openssl command-line to obtain a public key in PEM
format.
The code looks like this:
[...]
int main()
{
RSA *rsa = NULL;
int fd;
unsigned char buf[160];
const unsigned char *p = buf;
fd = open("pk.der", O_RDONLY);
if (fd<0)
{
exit(1);
}
if (read(fd, buf, sizeof(buf)) != sizeof(buf))
{
close(fd);
exit(2);
}
close(fd);
rsa = d2i_RSAPublicKey(NULL, &p, sizeof(buf));
if (rsa==NULL)
{
ERR_print_errors_fp(stderr);
return 1;
}
return 0;
}
Running the program gives back the following message:
23354:error:0D0680A8:lib(13):func(104):reason(168):tasn_dec.c:1306:
23354:error:0D06C03A:lib(13):func(108):reason(58):tasn_dec.c:830:
23354:error:0D08303A:lib(13):func(131):reason(58):tasn_dec.c:749:Field=n,
Type=RSA
Also, I noticed that if I replace
const unsigned char *p = buf;
by
const unsigned char *p = buf + 22;
Then the call to d2i_RSAPublicKey returns a non-NULL value.
I assume I am doing something the wrong way but can not figure out what.
Could someone please help ?
The complete code for the program I used is at
http://inova.snv.jussieu.fr/ssltest.c
and the DER file that produced the previously shown error messages is at
http://inova.snv.jussieu.fr/pk.der
In advance, many thanks for any help.
Sébastien.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [email protected]