Hello,
in the file crypto/sha/sha.h there is this line:

#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)

used to conditionally declare SHA_LONG64 and U64 macros.
Unfortunately, this causes OpenSSL to be unusable on Cygwin because, 
obviously, __MINGW32__ is not declared.
A fix could be made by appending "&& !defined(__CYGWIN__)" but in my opinion 
it is better to replace the last test with "&& defined(_MSC_VER)" because 
things like "__int64" and "UI64" are not standard extensions and they should be 
supported only if we are targetting to Microsoft VisualC++.

Without this thing fixed, I was not able to make it working... for example, if 
you run an autoconf script that it checks the presence of openssl.h, you will 
get a message like "found but cannot be used. Missing pre-requisites?"

Attached patch fixes this defect.

Sincerely,

Carlo Bramini.

diff --git a/crypto/sha/sha.h b/crypto/sha/sha.h
index 16cacf9..a8a4937 100644
--- a/crypto/sha/sha.h
+++ b/crypto/sha/sha.h
@@ -158,7 +158,7 @@ void SHA256_Transform(SHA256_CTX *c, const unsigned char 
*data);
 #define SHA512_CBLOCK  (SHA_LBLOCK*8)  /* SHA-512 treats input data as a
                                         * contiguous array of 64 bit
                                         * wide big-endian values. */
-#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
+#if (defined(_WIN32) || defined(_WIN64)) && defined(_MSC_VER)
 #define SHA_LONG64 unsigned __int64
 #define U64(C)     C##UI64
 #elif defined(__arch64__)

Reply via email to