From 962420066322c64dbf4f866b98dd6ffc982b114c Mon Sep 17 00:00:00 2001 From: Sergey Lyubka <valenok@gmail.com> Date: Mon, 6 Jan 2014 13:31:46 +0000 Subject: [PATCH] SSL build --- build/Makefile | 46 ++++++++++++++++++++++++++++++++++++++++------ mongoose.c | 4 ++++ 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/build/Makefile b/build/Makefile index 3a0b701dd..f1c2734fe 100644 --- a/build/Makefile +++ b/build/Makefile @@ -11,10 +11,35 @@ VERSION = $(shell perl -lne \ 'print $$1 if /define\s+MONGOOSE_VERSION\s+"(\S+)"/' ../mongoose.h) VDIR = mongoose-$(VERSION) +# Stock windows binary builds with Lua and YASSL library. +YASSL = ../../cyassl-2.4.6 +YASSL_FLAGS = -I $(YASSL) -I $(YASSL)/cyassl \ + -D _LIB -D OPENSSL_EXTRA -D HAVE_ERRNO_H \ + -D HAVE_GETHOSTBYNAME -D HAVE_INET_NTOA -D HAVE_LIMITS_H \ + -D HAVE_MEMSET -D HAVE_SOCKET -D HAVE_STDDEF_H -D HAVE_STDLIB_H \ + -D HAVE_STRING_H -D HAVE_SYS_STAT_H -D HAVE_SYS_TYPES_H +YASSL_SOURCES = \ + $(YASSL)/src/internal.c $(YASSL)/src/io.c $(YASSL)/src/keys.c \ + $(YASSL)/src/ssl.c $(YASSL)/src/tls.c $(YASSL)/ctaocrypt/src/hmac.c \ + $(YASSL)/ctaocrypt/src/random.c $(YASSL)/ctaocrypt/src/sha.c \ + $(YASSL)/ctaocrypt/src/sha256.c $(YASSL)/ctaocrypt/src/logging.c \ + $(YASSL)/ctaocrypt/src/error.c $(YASSL)/ctaocrypt/src/rsa.c \ + $(YASSL)/ctaocrypt/src/des3.c $(YASSL)/ctaocrypt/src/asn.c \ + $(YASSL)/ctaocrypt/src/coding.c $(YASSL)/ctaocrypt/src/arc4.c \ + $(YASSL)/ctaocrypt/src/md4.c $(YASSL)/ctaocrypt/src/md5.c \ + $(YASSL)/ctaocrypt/src/dh.c $(YASSL)/ctaocrypt/src/dsa.c \ + $(YASSL)/ctaocrypt/src/pwdbased.c $(YASSL)/ctaocrypt/src/aes.c \ + $(YASSL)/ctaocrypt/src/md2.c $(YASSL)/ctaocrypt/src/ripemd.c \ + $(YASSL)/ctaocrypt/src/sha512.c $(YASSL)/src/sniffer.c \ + $(YASSL)/ctaocrypt/src/rabbit.c $(YASSL)/ctaocrypt/src/misc.c \ + $(YASSL)/ctaocrypt/src/tfm.c $(YASSL)/ctaocrypt/src/integer.c \ + $(YASSL)/ctaocrypt/src/ecc.c $(YASSL)/src/ocsp.c $(YASSL)/src/crl.c \ + $(YASSL)/ctaocrypt/src/hc128.c $(YASSL)/ctaocrypt/src/memory.c + TINY_SOURCES = ../mongoose.c main.c LUA_SOURCES = $(TINY_SOURCES) lua_5.2.1.c LUA_SQLITE_SOURCES = $(LUA_SOURCES) sqlite3.c lsqlite3.c -BIG_SOURCES = $(TINY_SOURCES) lua_5.2.1.c sqlite3.c lsqlite3.c +BIG_SOURCES = $(TINY_SOURCES) lua_5.2.1.c sqlite3.c lsqlite3.c $(YASSL_SOURCES) SQLITE_FLAGS = -DTHREADSAFE=1 -DSQLITE_ENABLE_FTS3 \ -DSQLITE_ENABLE_FTS3_PARENTHESIS @@ -22,7 +47,7 @@ LUA_FLAGS = -DUSE_LUA LUA_SQLITE_FLAGS = $(SQLITE_FLAGS) $(LUA_FLAGS) -DUSE_LUA_SQLITE3 BIG_FLAGS = -DTHREADSAFE=1 -DSQLITE_ENABLE_FTS3 \ -DSQLITE_ENABLE_FTS3_PARENTHESIS \ - -DUSE_LUA -DUSE_LUA_SQLITE3 + -DUSE_LUA -DUSE_LUA_SQLITE3 -DUSE_SSL -DUSE_CYASSL $(YASSL_FLAGS) # Using Visual Studio 6.0. To build Mongoose: # Set MSVC variable below to where VS 6.0 is installed on your system @@ -59,6 +84,9 @@ $(PROG)-lua: $(TINY_SOURCES) $(LUA_SOURCES) $(PROG)-lua-sqlite: $(LUA_SQLITE_SOURCES) $(CC) $(LUA_SQLITE_SOURCES) -o $@ $(LUA_SQLITE_FLAGS) $(CFLAGS) +$(PROG)-lua-sqlite-ssl: $(BIG_SOURCES) + $(CC) $(BIG_SOURCES) -o $@ $(BIG_FLAGS) $(CFLAGS) + $(PROG)-big: $(BIG_SOURCES) $(CC) $(BIG_SOURCES) -o $@ $(CFLAGS) $(BIG_FLAGS) @@ -70,6 +98,10 @@ $(PROG)-lua-sqlite.exe: $(LUA_SQLITE_SOURCES) $(MSVC)/bin/rc res.rc $(CL) $(LUA_SQLITE_SOURCES) $(LUA_SQLITE_FLAGS) /link $(LINK_FLAGS) res.res /out:$@ +$(PROG)-lua-sqlite-ssl.exe: $(BIG_SOURCES) + $(MSVC)/bin/rc res.rc + $(CL) $(BIG_SOURCES) $(BIG_FLAGS) /link $(LINK_FLAGS) res.res /out:$@ + $(PROG)-lua.exe: $(LUA_SOURCES) $(MSVC)/bin/rc res.rc $(CL) $(LUA_SOURCES) $(LUA_FLAGS) /link $(LINK_FLAGS) res.res /out:$@ @@ -91,14 +123,14 @@ windows_unit_test.exe: ../mongoose.c Makefile # For codesign to work in non-interactive mode, unlock login keychain: # security unlock ~/Library/Keychains/login.keychain # See e.g. http://lists.apple.com/archives/apple-cdsa/2008/Jan/msg00027.html -macos: $(LUA_SQLITE_SOURCES) +macos: $(BIG_SOURCES) DIR=dmg/Mongoose.app rm -rf dmg mkdir -p dmg/Mongoose.app/Contents/{MacOS,Resources} install -m 644 *.icns *.png dmg/Mongoose.app/Contents/Resources/ install -m 644 Info.plist dmg/Mongoose.app/Contents/ - $(CC) $(LUA_SQLITE_SOURCES) \ - -DUSE_COCOA $(CFLAGS) $(LUA_SQLITE_FLAGS) -mmacosx-version-min=10.4 \ + $(CC) $(BIG_SOURCES) \ + -DUSE_COCOA $(CFLAGS) $(BIG_FLAGS) -mmacosx-version-min=10.4 \ -framework Cocoa -ObjC -arch i386 -arch x86_64 \ -o dmg/Mongoose.app/Contents/MacOS/Mongoose ln -fs /Applications dmg/ @@ -118,9 +150,11 @@ tarball: clean tar -czf $(VDIR).tgz $(VDIR) release: tarball macos - wine make + wine make mongoose.exe mongoose-lua-sqlite-ssl.exe upx mongoose.exe + upx mongoose-lua-sqlite-ssl.exe cp mongoose.exe mongoose-$(VERSION).exe + cp mongoose-lua-sqlite-ssl.exe mongoose-lua-sqlite-ssl-$(VERSION).exe cp mongoose.exe mongoose_php_bundle/ zip -r mongoose-php-$(VERSION).zip mongoose_php_bundle/ diff --git a/mongoose.c b/mongoose.c index 87a286d72..31619c4be 100644 --- a/mongoose.c +++ b/mongoose.c @@ -116,6 +116,9 @@ typedef struct stat file_stat_t; // Following define gets rid of openssl deprecation messages #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_6 +#ifdef USE_CYASSL +#include <openssl/ssl.h> +#else typedef struct ssl_ctx_st SSL_CTX; typedef struct ssl_st SSL; typedef struct ssl_method_st SSL_METHOD; @@ -135,6 +138,7 @@ extern int SSL_CTX_use_certificate_file(SSL_CTX *, const char *, int); extern int SSL_CTX_use_certificate_chain_file(SSL_CTX *, const char *); extern void SSL_CTX_free(SSL_CTX *); #endif +#endif #include "mongoose.h" -- GitLab