> I'm having trouble with the d2i_X509() call. I've googled all the > errors that I get and I can't figure out what's going on. > I'm using OpenSSL 0.9.7d. > > Basically, I'm trying to read a cert off disk (PEM format). Then I > convert it into a DER buffer using i2d_X509(). Sometime later, I need > to convert the DER buffer back into an X509 structure using d2i_X509() > and that's when the wheels come off the wagon. > > I've attached a code snippet that shows the problem. Can anyone help me > out?
The i2d/d2i fucntions have some subtleties. Try using them *exactly* like this and see if it solves your problem: int len=i2d_X509(x, NULL); void *ptr=malloc(len); unsigned char *bp=(unsigned char *) ptr; i2d_X509(x, &bp); unsigned char *p=(unsigned char *) privkey; DSA *pkey=d2i_DSAPrivateKey(NULL, &p, keylen); Notice two things. First, for 'i2d' functions, you do a first call with a NULL buffer to get the length. For 'd2i' functions, you make the function a *private* copy of the buffer pointer and then pass it a pointer to that private copy. DS ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]