> DSA *pDSA = d2i_DSA_PUBKEY(NULL, (const unsigned char **) &pKey, dwKeySize); Where and how is pKey set? Not that the manpage says it's incremented to point *past* the object, so you need something like unsigned char data = .....whatever your data source is ..... unsigned char *pKey = data and then use &pKey in your call