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 openssl-users@openssl.org Automated List Manager majord...@openssl.org