Hi,
I’ve made a small sample based on
OpenSSL which creates a new key and then makes a certificate request…
Everything works fine on XP but the same
code crashes on VISTA
OpenSSL version: openssl-0.9.8h
Build with VS 2008 (everything build with
success and all tests passed…)
The crash comes in the PEM_write_X509_REQ()
And more specifically in
static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
{
…
#if defined(OPENSSL_SYS_WINDOWS)
int fd = fileno((FILE*)ptr);
if (num & BIO_FP_TEXT)
_setmode(fd,_O_TEXT);
else
_setmode(fd,_O_BINARY);
<<<<<<<<<<<<<<< crash (fd = 3)
Anyone any ideas?
Thanks,
main (int argc, char
*argv[])
{
…
OPENSSL_Applink() ;
OpenSSL_add_all_algorithms ();
ERR_load_crypto_strings ();
if ((pkey=EVP_PKEY_new()) == NULL)
{
int_error ("Failed to create EVP_PKEY
object");
}
rsa=RSA_generate_key(1024, RSA_F4, callback, NULL);
if (!EVP_PKEY_assign_RSA(pkey,rsa))
{
int_error ("Failed to assign RSA key");
}
/* create a new request and add the key to it */
if (!(req = X509_REQ_new ()))
{
int_error ("Failed to create X509_REQ
object");
}
X509_REQ_set_pubkey (req, pkey);
/* assign the subject name */
if (!(subj = X509_NAME_new ()))
{
int_error ("Failed to create X509_NAME
object");
}
…
fp = fopen
(REQ_FILE, "w");
if (fp==NULL)
{
int_error ("Error writing to request
file");
}
if (PEM_write_X509_REQ (fp, req) != 1)
{
int_error ("Error while writing request");
}
fclose (fp);
…