diff --git a/CMakeLists.txt b/CMakeLists.txt
index fb89561b2378756f2e94cb151eac32220165149a..d275e70e655846107704d8552fba31f6c95290da 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,17 +3,18 @@ project (Cryptlib C)
 
 include("ExternalProject")
 
-find_program(MAKE_PATH NAMES make mingw32-make REQUIRED)
 find_program(PATCH_PATH NAMES patch REQUIRED)
 find_program(ENV_PATH NAMES env REQUIRED)
 find_program(SH_PATH NAMES sh REQUIRED)
 
 if(WIN32)
 	set(MAKE_FLAGS MINGW32_NT-6.1 OSNAME=win32 RANLIB=${CMAKE_RANLIB} AR=${CMAKE_AR} CC=${CMAKE_C_COMPILER} MAKE=${MAKE_PATH})
-	set(BUILD_CMD ${MAKE_PATH} ${MAKE_FLAGS})
 	find_program(UNZIP_PATH tar REQUIRED)
 	set(DOWNLOAD_CMD "${UNZIP_PATH}" -xf "${CMAKE_CURRENT_SOURCE_DIR}/dist/cryptlib.zip" -C "<SOURCE_DIR>")
+	find_program(MAKE_PATH NAMES msbuild REQUIRED)
+	set(BUILD_CMD ${msbuild} /p:Configuration=Release /p:Platform=Win32 cryptlib.sln)
 else()
+	find_program(MAKE_PATH NAMES make mingw32-make REQUIRED)
 	if("$ENV{CMAKE_BUILD_PARALLEL_LEVEL}" STREQUAL "")
 		set(MAKE_FLAGS ${MAKE_FLAGS} -j 32)
 	else()
diff --git a/patches/cl-msvc-sucks-datetime.patch b/patches/cl-msvc-sucks-datetime.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0470e50db41987867f1927c3b3acdb011f46ffce
--- /dev/null
+++ b/patches/cl-msvc-sucks-datetime.patch
@@ -0,0 +1,12 @@
+--- misc/consts.h.orig	2022-02-25 03:29:19.561319000 -0500
++++ misc/consts.h	2022-02-25 03:31:30.766485000 -0500
+@@ -346,8 +346,7 @@
+ #define MAX_TIME_VALUE			( YEARS_TO_SECONDS( 2036 - 1970 ) )
+ 
+ #if ( defined( __clang__ ) && ( __clang_major__ > 5 ) ) || \
+-	( defined( __GNUC__ ) && ( __GNUC__ > 6 ) ) || \
+-	( defined( _MSC_VER ) && VC_GE_2017( _MSC_VER ) )
++	( defined( __GNUC__ ) && ( __GNUC__ > 6 ) )
+   #define CURRENT_TIME_VALUE	( ( DATE_YEAR + DATE_MONTH + DATE_DAY - 30 ) * 86400 )
+ #else
+   #define CURRENT_TIME_VALUE	( YEARS_TO_SECONDS( 2019 - 1970 ) )
diff --git a/patches/cl-windowsbuildfix.patch b/patches/cl-windowsbuildfix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d70b83112bf4da17d79052064c2439e8317542fd
--- /dev/null
+++ b/patches/cl-windowsbuildfix.patch
@@ -0,0 +1,51 @@
+--- crypt32.vcxproj.orig	2022-02-25 03:16:40.714299000 -0500
++++ crypt32.vcxproj	2022-02-25 03:20:40.528577000 -0500
+@@ -35,27 +35,27 @@
+     <ConfigurationType>DynamicLibrary</ConfigurationType>
+     <UseDebugLibraries>true</UseDebugLibraries>
+     <CharacterSet>NotSet</CharacterSet>
+-    <PlatformToolset>v140</PlatformToolset>
++    <PlatformToolset>v143</PlatformToolset>
+   </PropertyGroup>
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+     <ConfigurationType>DynamicLibrary</ConfigurationType>
+     <UseDebugLibraries>true</UseDebugLibraries>
+     <CharacterSet>NotSet</CharacterSet>
+-    <PlatformToolset>v140</PlatformToolset>
++    <PlatformToolset>v143</PlatformToolset>
+   </PropertyGroup>
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+     <ConfigurationType>DynamicLibrary</ConfigurationType>
+     <UseDebugLibraries>false</UseDebugLibraries>
+     <WholeProgramOptimization>true</WholeProgramOptimization>
+     <CharacterSet>NotSet</CharacterSet>
+-    <PlatformToolset>v140</PlatformToolset>
++    <PlatformToolset>v143</PlatformToolset>
+   </PropertyGroup>
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+     <ConfigurationType>DynamicLibrary</ConfigurationType>
+     <UseDebugLibraries>false</UseDebugLibraries>
+     <WholeProgramOptimization>true</WholeProgramOptimization>
+     <CharacterSet>NotSet</CharacterSet>
+-    <PlatformToolset>v140</PlatformToolset>
++    <PlatformToolset>v143</PlatformToolset>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+   <ImportGroup Label="ExtensionSettings">
+@@ -392,9 +392,6 @@
+     <ClCompile Include="envelope\res_env.c" />
+     <ClCompile Include="io\dns.c" />
+     <ClCompile Include="io\dns_srv.c" />
+-    <ClCompile Include="io\eap.c" />
+-    <ClCompile Include="io\eap_rd.c" />
+-    <ClCompile Include="io\eap_wr.c" />
+     <ClCompile Include="io\file.c" />
+     <ClCompile Include="io\http.c" />
+     <ClCompile Include="io\http_parse.c" />
+@@ -607,4 +604,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
+\ No newline at end of file
++</Project>