 src/openssl/openssl11_wrapper.h |  3 +++
 src/openssl/x509.c              |  6 +++---
 src/openssl/x509vfy.c           |  6 +++---
 win32/Makefile.msvc             | 31 +++++++++++++++++++------------
 win32/configure.js              |  8 +++++++-
 5 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/src/openssl/openssl11_wrapper.h b/src/openssl/openssl11_wrapper.h
index 7f900ff..cb53502 100644
--- a/src/openssl/openssl11_wrapper.h
+++ b/src/openssl/openssl11_wrapper.h
@@ -18,6 +18,9 @@
 
 #define ASN1_STRING_get0_data(data)        ASN1_STRING_data((data))
 #define X509_CRL_get0_nextUpdate(crl)      X509_CRL_get_nextUpdate((crl))
+#define X509_getm_notBefore(x509)          X509_get_notBefore(x509)
+#define X509_getm_notAfter(x509)           X509_get_notAfter(x509)
+#define X509_STORE_CTX_get_by_subject      X509_STORE_get_by_subject
 #define X509_REVOKED_get0_serialNumber(r)  (((r) != NULL) ? ((r)->serialNumber) : (const ASN1_INTEGER *)NULL)
 #define X509_OBJECT_get0_X509(x)           (((x) != NULL) ? ((x)->data.x509) : (X509 *)NULL)
 
diff --git a/src/openssl/x509.c b/src/openssl/x509.c
index 4b486cf..c3ad5c3 100644
--- a/src/openssl/x509.c
+++ b/src/openssl/x509.c
@@ -1667,8 +1667,8 @@ xmlSecOpenSSLKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr
                 return(-1);
             }
 
-            if((X509_get_notBefore(ctx->keyCert) != NULL) && (X509_get_notAfter(ctx->keyCert) != NULL)) {
-                ret = xmlSecOpenSSLX509CertGetTime(X509_get_notBefore(ctx->keyCert), &(key->notValidBefore));
+            if((X509_getm_notBefore(ctx->keyCert) != NULL) && (X509_getm_notAfter(ctx->keyCert) != NULL)) {
+                ret = xmlSecOpenSSLX509CertGetTime(X509_getm_notBefore(ctx->keyCert), &(key->notValidBefore));
                 if(ret < 0) {
                     xmlSecError(XMLSEC_ERRORS_HERE,
                                 xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
@@ -1677,7 +1677,7 @@ xmlSecOpenSSLKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr
                                 "notValidBefore");
                     return(-1);
                 }
-                ret = xmlSecOpenSSLX509CertGetTime(X509_get_notAfter(ctx->keyCert), &(key->notValidAfter));
+                ret = xmlSecOpenSSLX509CertGetTime(X509_getm_notAfter(ctx->keyCert), &(key->notValidAfter));
                 if(ret < 0) {
                     xmlSecError(XMLSEC_ERRORS_HERE,
                                 xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
diff --git a/src/openssl/x509vfy.c b/src/openssl/x509vfy.c
index 59f3914..864260f 100644
--- a/src/openssl/x509vfy.c
+++ b/src/openssl/x509vfy.c
@@ -783,12 +783,12 @@ xmlSecOpenSSLX509VerifyCRL(X509_STORE* xst, X509_CRL *crl ) {
                     XMLSEC_ERRORS_NO_MESSAGE);
         goto err;
     }
-    ret = X509_STORE_get_by_subject(xsc, X509_LU_X509,
-                                    X509_CRL_get_issuer(crl), xobj);
+    ret = X509_STORE_CTX_get_by_subject(xsc, X509_LU_X509,
+                                        X509_CRL_get_issuer(crl), xobj);
     if(ret <= 0) {
         xmlSecError(XMLSEC_ERRORS_HERE,
                     NULL,
-                    "X509_STORE_get_by_subject",
+                    "X509_STORE_CTX_get_by_subject",
                     XMLSEC_ERRORS_R_CRYPTO_FAILED,
                     XMLSEC_ERRORS_NO_MESSAGE);
         goto err;
diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc
index 8c887a1..b0a0872 100644
--- a/win32/Makefile.msvc
+++ b/win32/Makefile.msvc
@@ -33,7 +33,6 @@ AUTOCONF = .\configure.txt
 #UNICODE = 1
 #DEBUG = 0
 #WITH_CRYPTO=openssl
-#WITH_CRYPTO=openssl
 #WITH_DEFAULT_CRYPTO=openssl
 #WITH_OPENSSL=1
 #WITH_OPENSSL_VERSION=
@@ -116,7 +115,6 @@ XMLSEC_OPENSSL_SRCDIR   = $(XMLSEC_SRCDIR)\openssl
 XMLSEC_NSS_SRCDIR   	= $(XMLSEC_SRCDIR)\nss
 XMLSEC_MSCRYPTO_SRCDIR  = $(XMLSEC_SRCDIR)\mscrypto
 
-
 #
 # Object files for libraries and apps.
 #
@@ -199,6 +197,7 @@ XMLSEC_OPENSSL_OBJS = \
 	$(XMLSEC_OPENSSL_INTDIR)\crypto.obj \
 	$(XMLSEC_OPENSSL_INTDIR)\digests.obj \
 	$(XMLSEC_OPENSSL_INTDIR)\evp.obj \
+	$(XMLSEC_OPENSSL_INTDIR)\evp_signatures.obj \
 	$(XMLSEC_OPENSSL_INTDIR)\hmac.obj \
 	$(XMLSEC_OPENSSL_INTDIR)\kt_rsa.obj \
 	$(XMLSEC_OPENSSL_INTDIR)\kw_aes.obj \
@@ -215,6 +214,7 @@ XMLSEC_OPENSSL_OBJS_A = \
 	$(XMLSEC_OPENSSL_INTDIR_A)\crypto.obj \
 	$(XMLSEC_OPENSSL_INTDIR_A)\digests.obj \
 	$(XMLSEC_OPENSSL_INTDIR_A)\evp.obj \
+	$(XMLSEC_OPENSSL_INTDIR_A)\evp_signatures.obj \
 	$(XMLSEC_OPENSSL_INTDIR_A)\hmac.obj \
 	$(XMLSEC_OPENSSL_INTDIR_A)\kt_rsa.obj \
 	$(XMLSEC_OPENSSL_INTDIR_A)\kw_aes.obj \
@@ -302,7 +302,7 @@ CPPFLAGS 		= /nologo
 #
 # The compiler and its options.
 #
-CC 			= cl.exe
+CC 				= cl.exe
 CFLAGS 			= /nologo /D "WIN32" /D "_WINDOWS" 
 CFLAGS 			= $(CFLAGS) /D "_MBCS" /D "_REENTRANT"  /W1  
 CFLAGS 			= $(CFLAGS) /I$(BASEDIR) /I$(BASEDIR)\include
@@ -311,6 +311,7 @@ CFLAGS 			= $(CFLAGS) /D PACKAGE=\"$(XMLSEC_NAME)\"
 CFLAGS 			= $(CFLAGS) /D "HAVE_STDIO_H" /D "HAVE_STDLIB_H"
 CFLAGS 			= $(CFLAGS) /D "HAVE_STRING_H" /D "HAVE_CTYPE_H"
 CFLAGS 			= $(CFLAGS) /D "HAVE_MALLOC_H" /D "HAVE_MEMORY_H"
+CFLAGS 			= $(CFLAGS) /D "XMLSEC_NO_GOST" /D "XMLSEC_NO_GOST2012" 
 
 !if "$(UNICODE)" == "1"
 CFLAGS 			= $(CFLAGS) /D "UNICODE" /D "_UNICODE"
@@ -318,11 +319,13 @@ CFLAGS 			= $(CFLAGS) /D "UNICODE" /D "_UNICODE"
 
 # Optimisation and debug symbols.
 !if "$(DEBUG)" == "1"
-CFLAGS 			= $(CFLAGS) /D "_DEBUG" /Od /Z7 /MDd 
+CFLAGS 			= $(CFLAGS) /D "_DEBUG" /Od /Z7 
 !else
-CFLAGS 			= $(CFLAGS) /D "NDEBUG" /O2 /MD
+CFLAGS 			= $(CFLAGS) /D "NDEBUG" /O2 
 !endif
 
+CFLAGS 			= $(CFLAGS) $(CRUNTIME)
+
 # configurable options
 !if "$(WITH_LIBXSLT)" == "1"
 !else 
@@ -356,7 +359,7 @@ XMLSEC_MSCRYPTO_CFLAGS  = /D "XMLSEC_CRYPTO_MSCRYPTO" /D "XMLSEC_DEFAULT_CRYPTO=
 #
 # The linker and its options.
 #
-LD 			= link.exe
+LD 				= link.exe
 LDFLAGS 		= /nologo 
 LDFLAGS 		= $(LDFLAGS) /LIBPATH:$(BINDIR) /LIBPATH:$(LIBPREFIX)
 LIBS 			= 
@@ -365,7 +368,7 @@ LIBS 			=
 !if "$(DEBUG)" == "1"
 LDFLAGS 		= $(LDFLAGS) /DEBUG
 !else
-LDFLAGS 		= $(LDFLAGS) /OPT:NOWIN98
+LDFLAGS 		= $(LDFLAGS)
 !endif
 
 SOLIBS 			= $(LIBS) libxml2.lib 
@@ -391,11 +394,16 @@ APP_LIBS  		= $(SOLIBS) $(XMLSEC_CRYPTO_SOLIBS)
 !else
 !endif
 
-XMLSEC_OPENSSL_SOLIBS   = libeay32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib
-XMLSEC_OPENSSL_ALIBS    = libeay32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib
+!if "$(WITH_OPENSSL_VERSION)" == "XMLSEC_OPENSSL_110"
+XMLSEC_OPENSSL_SOLIBS   = libcrypto.lib wsock32.lib kernel32.lib user32.lib gdi32.lib crypt32.lib advapi32.lib ws2_32.lib
+XMLSEC_OPENSSL_ALIBS    = libcrypto.lib wsock32.lib kernel32.lib user32.lib gdi32.lib crypt32.lib advapi32.lib ws2_32.lib
+!else
+XMLSEC_OPENSSL_SOLIBS   = libeay32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib crypt32.lib advapi32.lib
+XMLSEC_OPENSSL_ALIBS    = libeay32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib crypt32.lib advapi32.lib
+!endif
 
-XMLSEC_NSS_SOLIBS   	= smime3.lib ssl3.lib nss3.lib libnspr4.lib libplds4.lib libplc4.lib kernel32.lib user32.lib gdi32.lib
-XMLSEC_NSS_ALIBS    	= smime3.lib ssl3.lib nss3.lib libnspr4_s.lib libplds4_s.lib libplc4_s.lib kernel32.lib user32.lib gdi32.lib
+XMLSEC_NSS_SOLIBS       = smime3.lib ssl3.lib nss3.lib libnspr4.lib libplds4.lib libplc4.lib kernel32.lib user32.lib gdi32.lib
+XMLSEC_NSS_ALIBS        = smime3.lib ssl3.lib nss3.lib libnspr4_s.lib libplds4_s.lib libplc4_s.lib kernel32.lib user32.lib gdi32.lib
 
 XMLSEC_MSCRYPTO_SOLIBS  = kernel32.lib user32.lib gdi32.lib Crypt32.lib Advapi32.lib
 XMLSEC_MSCRYPTO_ALIBS   = kernel32.lib user32.lib gdi32.lib Crypt32.lib Advapi32.lib
@@ -405,7 +413,6 @@ XMLSEC_MSCRYPTO_ALIBS   = kernel32.lib user32.lib gdi32.lib Crypt32.lib Advapi32
 AR = link.exe /lib
 ARFLAGS = /nologo
 
-
 #
 # xmlsec-<default-crypto> options
 #
diff --git a/win32/configure.js b/win32/configure.js
index 7bbba19..80620a4 100644
--- a/win32/configure.js
+++ b/win32/configure.js
@@ -59,6 +59,8 @@ var buildLibPrefix = "$(PREFIX)\\lib";
 var buildSoPrefix = "$(PREFIX)\\lib";
 var buildInclude = ".";
 var buildLib = ".";
+var cruntime = "/MD";
+
 /* Local stuff */
 var error = 0;
 
@@ -176,6 +178,7 @@ function discoverVersion()
 	vf.WriteLine("SOPREFIX=" + buildSoPrefix);
 	vf.WriteLine("INCLUDE=$(INCLUDE);" + buildInclude);
 	vf.WriteLine("LIB=$(LIB);" + buildLib);
+	vf.WriteLine("CRUNTIME=" + cruntime);
 	vf.Close();
 }
 
@@ -281,6 +284,8 @@ for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) {
 			buildInclude = arg.substring(opt.length + 1, arg.length);
 		else if (opt == "lib")
 			buildLib = arg.substring(opt.length + 1, arg.length);
+		else if (opt == "cruntime")
+			cruntime = arg.substring(opt.length + 1, arg.length);
 		else
 			error = 1;
 	} else if (i == 0) {
@@ -311,7 +316,7 @@ for (j = 0; j < crlist.length; j++) {
 	if (crlist[j] == "openssl") {
 		curcrypto="openssl";
 		withOpenSSL = 1;
-		withOpenSSLVersion = "100"; /* default */
+		withOpenSSLVersion = "110"; /* default */
 	} else if (crlist[j] == "openssl=098") {
 		curcrypto="openssl";
 		withOpenSSL = 1;
@@ -379,6 +384,7 @@ txtOut += "     NT 4.0 support: " + boolToStr(withNT4) + "\n";
 txtOut += "\n";
 txtOut += "Win32 build configuration\n";
 txtOut += "-------------------------\n";
+txtOut += "  C-Runtime option: " + cruntime + "\n";
 txtOut += "           Unicode: " + boolToStr(buildUnicode) + "\n";
 txtOut += "     Debug symbols: " + boolToStr(buildDebug) + "\n";
 txtOut += "     Static xmlsec: " + boolToStr(buildStatic) + "\n";
