I'm trying to avoid passing any C-runtime objects (such as a FILE*)
across the OpenSSL DLL boundary. This is unsafe as the two DLLs may
be using different runtime instances which causes crashes on Windows.
Apparently using BIO_new_file is a safe way to pass a file to a
function as the FILE* is created and remains on the OpenSSL side of
the border. Does this make sense?
Also, I came across the OPENSSL_NO_FP_API preprocessor definition
which seemed to prevent accidentally calling an API function that
allowed unsafe FILE* passing. However, I notice that BIO_new_file
isn't defined if OPENSSL_NO_FP_API is. And I can't actually get the
OpenSSL headers to work with this defined at all:
In file included from openssl.h:46,
from libssh2_priv.h:136,
from channel.c:40:
/usr/include/openssl/pem.h:657: error: expected ')' before 'RSA'
/usr/include/openssl/pem.h:668: error: expected ')' before 'DSA'
/usr/include/openssl/pem.h:673: error: expected ')' before 'EC_GROUP'
/usr/include/openssl/pem.h:680: error: expected ')' before 'DH'
Is there some magic required to define this properly?
Many thanks.
Alex Lamaison
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [email protected]