diff --git a/.github/workflows/make-test-swtpm.yml b/.github/workflows/make-test-swtpm.yml
index eb1148be..b44d72cc 100644
--- a/.github/workflows/make-test-swtpm.yml
+++ b/.github/workflows/make-test-swtpm.yml
@@ -54,6 +54,8 @@ jobs:
WOLFSSL_PATH=./wolfssl ./examples/run_examples.sh
- name: make install
run: sudo make install
+ - name: make dist
+ run: make dist
# build and test CSharp wrapper
- name: Install mono
diff --git a/.github/workflows/win-test.yml b/.github/workflows/win-test.yml
new file mode 100644
index 00000000..5b48dcb1
--- /dev/null
+++ b/.github/workflows/win-test.yml
@@ -0,0 +1,61 @@
+name: Windows Build Test
+
+on:
+ push:
+ branches: [ 'master', 'main', 'release/**' ]
+ pull_request:
+ branches: [ '*' ]
+
+jobs:
+ build:
+
+ runs-on: windows-latest
+
+ # This should be a safe limit for the tests to run.
+ timeout-minutes: 6
+
+ env:
+ # Path to the solution file relative to the root of the project.
+ SOLUTION_FILE_PATH: wolftpm\IDE\VisualStudio\wolftpm.sln
+
+ # Configuration type to build.
+ # You can convert this to a build matrix if you need coverage of multiple configuration types.
+ # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
+ BUILD_CONFIGURATION: Debug
+ BUILD_PLATFORM: x64
+
+ steps:
+ - name: Pull wolfTPM
+ uses: actions/checkout@master
+ with:
+ repository: wolfssl/wolftpm
+ path: wolftpm
+
+ - name: Pull wolfssl
+ uses: actions/checkout@master
+ with:
+ repository: wolfssl/wolfssl
+ path: wolfssl
+ - name: Create FIPS stub files (autogen)
+ working-directory: wolfssl
+ run: |
+ echo $null >> wolfcrypt\src\fips.c
+ echo $null >> wolfcrypt\src\fips_test.c
+ echo $null >> wolfcrypt\src\wolfcrypt_first.c
+ echo $null >> wolfcrypt\src\wolfcrypt_last.c
+
+ - name: Add MSBuild to PATH
+ uses: microsoft/setup-msbuild@v1
+
+ - name: Build
+ working-directory: ${{env.GITHUB_WORKSPACE}}
+ # Add additional options to the MSBuild command line here (like platform or verbosity level).
+ # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
+ run: msbuild /m /p:PlatformToolset=v142 /p:Platform=${{env.BUILD_PLATFORM}} /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}}
+
+ # The GitHub CI runners do not have a TPM.
+ # Failure 0x8028400f: unknown error number
+ # TBS_E_TPM_NOT_FOUND (0x8028400F) A compatible Trusted Platform Module (TPM) Security Device cannot be found on this computer.
+ #- name: Run Wrap Test
+ # working-directory: ${{env.GITHUB_WORKSPACE}}
+ # run: wolftpm\IDE\VisualStudio\Debug\x64\wrap_test.exe
diff --git a/.gitignore b/.gitignore
index 1206f4d0..b8b7b2a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -121,3 +121,9 @@ docs/html
# Wrapper
wrapper/CSharp/obj
wrapper/CSharp/bin
+
+# Visual Studio
+IDE/VisualStudio/Debug
+IDE/VisualStudio/DLL Debug
+IDE/VisualStudio/DLL Release
+IDE/VisualStudio/Release
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fdc39267..7a9bb724 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -95,7 +95,7 @@ endif("${WOLFTPM_INTERFACE}" STREQUAL "auto")
if(WIN32)
target_compile_definitions(wolftpm PRIVATE
- "_WINDLL"
+ "WOLFTPM_DLL"
)
endif(WIN32)
diff --git a/IDE/STM32CUBE/include.am b/IDE/STM32CUBE/include.am
index 03e5abac..585dc1a0 100644
--- a/IDE/STM32CUBE/include.am
+++ b/IDE/STM32CUBE/include.am
@@ -2,7 +2,7 @@
# included from Top Level Makefile.am
# All paths should be given relative to the root
-EXTRA_DIST+= ide/STM32CUBE/wolftpm_test.c
-EXTRA_DIST+= ide/STM32CUBE/wolftpm_test.h
-EXTRA_DIST+= ide/STM32CUBE/README.md
-EXTRA_DIST+= ide/STM32CUBE/default_conf.ftl
+EXTRA_DIST+= IDE/STM32CUBE/wolftpm_test.c
+EXTRA_DIST+= IDE/STM32CUBE/wolftpm_test.h
+EXTRA_DIST+= IDE/STM32CUBE/README.md
+EXTRA_DIST+= IDE/STM32CUBE/default_conf.ftl
diff --git a/IDE/VisualStudio/README.md b/IDE/VisualStudio/README.md
new file mode 100644
index 00000000..38429f02
--- /dev/null
+++ b/IDE/VisualStudio/README.md
@@ -0,0 +1,7 @@
+# Visual Studio Solution for wolfTPM
+
+This includes projects for building wolfssl, wolftpm and some examples. The solution and project are based on older VS 2015, but can be retargeted / updated to newer when opened.
+
+All build settings are contained in IDE/VisualStudio/user_settings.h. This module supports using the FIPS ready bundle from the website. Just enable the `#if 0` FIPS section in user_settings.h. See wolfssl/IDE/WIN10/README.txt for details on setting the FIPS integrity check in fips_test.c at run-time.
+
+These projects assume `wolftpm` and `wolfssl` directories reside next to each other.
diff --git a/IDE/VisualStudio/include.am b/IDE/VisualStudio/include.am
new file mode 100644
index 00000000..074517ae
--- /dev/null
+++ b/IDE/VisualStudio/include.am
@@ -0,0 +1,12 @@
+# vim:ft=automake
+# included from Top Level Makefile.am
+# All paths should be given relative to the root
+
+EXTRA_DIST+= IDE/VisualStudio/README.md
+EXTRA_DIST+= IDE/VisualStudio/wolftpm.sln
+EXTRA_DIST+= IDE/VisualStudio/wolftpm.vcxproj
+EXTRA_DIST+= IDE/VisualStudio/wolfssl.vcxproj
+EXTRA_DIST+= IDE/VisualStudio/wolfcrypt_test.vcxproj
+EXTRA_DIST+= IDE/VisualStudio/tls_server.vcxproj
+EXTRA_DIST+= IDE/VisualStudio/wrap_test.vcxproj
+EXTRA_DIST+= IDE/VisualStudio/user_settings.h
diff --git a/IDE/VisualStudio/tls_server.vcxproj b/IDE/VisualStudio/tls_server.vcxproj
new file mode 100644
index 00000000..46efff77
--- /dev/null
+++ b/IDE/VisualStudio/tls_server.vcxproj
@@ -0,0 +1,306 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ DLL Debug
+ Win32
+
+
+ DLL Debug
+ x64
+
+
+ DLL Release
+ Win32
+
+
+ DLL Release
+ x64
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ Win32Proj
+ {e7403474-f122-4aec-92e3-b41f4008f0fa}
+ tlsserver
+
+
+
+ Application
+ true
+ v110
+ Unicode
+
+
+ Application
+ true
+ v110
+ Unicode
+
+
+ Application
+ false
+ v110
+ true
+ Unicode
+
+
+ Application
+ false
+ v110
+ true
+ Unicode
+
+
+ Application
+ true
+ v110
+ Unicode
+
+
+ Application
+ true
+ v110
+ Unicode
+
+
+ Application
+ false
+ v110
+ true
+ Unicode
+
+
+ Application
+ false
+ v110
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)$(Configuration)\$(Platform)\
+ $(Configuration)\$(Platform)\$(ProjectName)_obj\
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ true
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ true
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ true
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ true
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+
+
+
+
+ {73973223-5ee8-41ca-8e88-1d60e89a237b}
+ false
+
+
+ {2ba1f3ea-4146-4df5-af12-0bd33e0dd74b}
+ false
+
+
+
+
+
+
\ No newline at end of file
diff --git a/IDE/VisualStudio/user_settings.h b/IDE/VisualStudio/user_settings.h
new file mode 100644
index 00000000..7b8379c3
--- /dev/null
+++ b/IDE/VisualStudio/user_settings.h
@@ -0,0 +1,172 @@
+/* user_settings.h
+ *
+ * Copyright (C) 2006-2023 wolfSSL Inc.
+ *
+ * This file is part of wolfTPM.
+ *
+ * wolfTPM is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * wolfTPM is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
+ */
+
+/* Template for wolfTPM and wolfCrypt (FIPS optional) with TLS v1.2 and v1.3 */
+
+#ifndef _USER_SETTINGS_H_
+#define _USER_SETTINGS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if 0 /* enable for FIPS ready */
+ /* FIPS v5-ready 140-3 */
+ #define HAVE_FIPS
+ #define HAVE_FIPS_VERSION 5
+ #define HAVE_FIPS_VERSION_MINOR 3
+#endif
+
+/* Platform */
+#define HAVE_THREAD_LS /* thread local storage */
+#ifdef _WIN32
+ #define WOLFTPM_WINAPI
+ #define _WINSOCK_DEPRECATED_NO_WARNINGS
+ #define _CRT_SECURE_NO_WARNINGS
+#endif
+
+/* TPM */
+#define WOLFSSL_AES_CFB /* required for parameter encryption */
+#define WOLFSSL_PUBLIC_MP /* expose mp_ math functions - required for tpm ECC secret encrypt */
+
+/* Callbacks */
+#define WOLF_CRYPTO_CB
+#define HAVE_PK_CALLBACKS
+
+/* TLS Versions v1.2 and v1.3 */
+#define WOLFSSL_TLS13
+#define NO_OLD_TLS
+
+/* TLS Extensions */
+#define HAVE_TLS_EXTENSIONS
+#define HAVE_SUPPORTED_CURVES
+#define HAVE_EXTENDED_MASTER
+#define HAVE_SERVER_RENEGOTIATION_INFO
+#define HAVE_ENCRYPT_THEN_MAC
+#define HAVE_SNI
+
+/* Math Option */
+#ifdef HAVE_FIPS
+ #define USE_FAST_MATH /* tfm.c */
+ #define FP_MAX_BITS 16384
+#else
+ #define WOLFSSL_SP_MATH_ALL /* sp_int.c */
+ #define SP_INT_BITS 8192
+#endif
+#define WOLFSSL_USE_ALIGN
+#define TFM_TIMING_RESISTANT
+#define ECC_TIMING_RESISTANT
+#define WC_RSA_BLINDING
+
+/* No ASM (optional) */
+#if 0
+ #define TFM_NO_ASM
+ #define WOLFSSL_NO_ASM
+ #define NO_CHACHA_ASM
+#endif
+
+/* Debugging */
+#if 1
+ #define DEBUG_WOLFSSL
+ #define ERROR_QUEUE_PER_THREAD
+#else
+ //#define NO_ERROR_STRINGS
+#endif
+
+/* Certificate */
+#define WOLFSSL_ASN_TEMPLATE
+#define WOLFSSL_BASE64_ENCODE
+#define WOLFSSL_CERT_GEN
+#define WOLFSSL_CERT_REQ
+#define WOLFSSL_CERT_EXT
+
+/* RNG */
+#define HAVE_HASHDRBG
+#define WC_RNG_SEED_CB
+
+/* Asymmetric */
+#define HAVE_ECC
+#define ECC_SHAMIR
+#define ECC_USER_CURVES
+#define HAVE_ECC192
+#define HAVE_ECC224
+#define HAVE_ECC256
+#define HAVE_ECC384
+#define HAVE_ECC521
+#define WOLFSSL_ECDSA_SET_K
+#define HAVE_ECC_CDH
+#define WOLFSSL_VALIDATE_ECC_IMPORT
+#define WOLFSSL_VALIDATE_ECC_KEYGEN
+
+#define WC_RSA_PSS
+#define WOLFSSL_PSS_LONG_SALT
+#define WC_RSA_NO_PADDING
+#define WOLFSSL_KEY_GEN
+
+#define HAVE_DH_DEFAULT_PARAMS
+#define HAVE_FFDHE_Q
+#define HAVE_FFDHE_2048
+#define HAVE_FFDHE_3072
+#define HAVE_FFDHE_4096
+#define HAVE_FFDHE_6144
+#define HAVE_FFDHE_8192
+#define WOLFSSL_VALIDATE_FFC_IMPORT
+
+#define WOLFSSL_SHA224
+#define WOLFSSL_SHA384
+#define WOLFSSL_SHA512
+#define WOLFSSL_NOSHA512_224
+#define WOLFSSL_NOSHA512_256
+
+#define WOLFSSL_SHA3
+#define WOLFSSL_NO_SHAKE128
+#define WOLFSSL_NO_SHAKE256
+
+#define HAVE_HKDF
+
+#define WOLFSSL_AES_DIRECT
+#define HAVE_AES_ECB
+#define WOLFSSL_AES_COUNTER
+#define WOLFSSL_AES_OFB
+#define HAVE_AESCCM
+#define HAVE_AESGCM
+#define GCM_TABLE_4BIT
+#define HAVE_AES_KEYWRAP
+#define WOLFSSL_AES_DIRECT
+#define HAVE_PKCS7
+#define WOLFSSL_CMAC
+
+#define HAVE_X963_KDF
+
+/* Disabled features */
+#undef NO_RC4
+#define NO_RC4
+#define NO_PSK
+#define NO_MD4
+#define NO_DES3
+#define NO_DSA
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _USER_SETTINGS_H_ */
diff --git a/IDE/VisualStudio/wolfcrypt_test.vcxproj b/IDE/VisualStudio/wolfcrypt_test.vcxproj
new file mode 100644
index 00000000..7889b77b
--- /dev/null
+++ b/IDE/VisualStudio/wolfcrypt_test.vcxproj
@@ -0,0 +1,284 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ DLL Debug
+ Win32
+
+
+ DLL Debug
+ x64
+
+
+ DLL Release
+ Win32
+
+
+ DLL Release
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}
+ Win32Proj
+
+
+
+ Application
+ v110
+
+
+ Application
+ v110
+
+
+ Application
+ v110
+
+
+ Application
+ v110
+
+
+ Application
+ v110
+
+
+ Application
+ v110
+
+
+ Application
+ v110
+
+
+ Application
+ v110
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>11.0.61030.0
+
+
+ $(SolutionDir)$(Configuration)\$(Platform)\
+ $(Configuration)\$(Platform)\$(ProjectName)_obj\
+ false
+
+
+
+ Disabled
+ .\;..\..\;..\..\..\wolfssl;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebugDLL
+
+ Level3
+ ProgramDatabase
+
+
+ true
+ Console
+ MachineX86
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ false
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Disabled
+ .\;..\..\;..\..\..\wolfssl;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebugDLL
+
+ Level3
+ ProgramDatabase
+
+
+ true
+ Console
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ true
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ .\;..\..\;..\..\..\wolfssl;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+
+ Level3
+ ProgramDatabase
+ true
+
+
+ true
+ Console
+ MachineX86
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ true
+ true
+ UseLinkTimeCodeGeneration
+ false
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ .\;..\..\;..\..\..\wolfssl;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+
+ Level3
+ ProgramDatabase
+ true
+
+
+ true
+ Console
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ true
+ true
+ UseLinkTimeCodeGeneration
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Disabled
+ .\;..\..\;..\..\..\wolfssl;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFSSL_DLL;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebugDLL
+
+ Level3
+ ProgramDatabase
+ false
+
+
+ true
+ Console
+ MachineX86
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ true
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Disabled
+ .\;..\..\;..\..\..\wolfssl;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;CYASSL_DLL;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebugDLL
+
+ Level3
+ ProgramDatabase
+ false
+
+
+ true
+ Console
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ false
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ .\;..\..\;..\..\..\wolfssl;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFSSL_DLL;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+
+ Level3
+ ProgramDatabase
+
+
+ true
+ Console
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ true
+ true
+ MachineX86
+ UseLinkTimeCodeGeneration
+ true
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ .\;..\..\;..\..\..\wolfssl;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFSSL_DLL;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+
+ Level3
+ ProgramDatabase
+
+
+ true
+ Console
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ true
+ true
+ UseLinkTimeCodeGeneration
+ true
+
+
+
+
+
+
+
+ {73973223-5ee8-41ca-8e88-1d60e89a237b}
+ false
+
+
+
+
+
+
\ No newline at end of file
diff --git a/IDE/VisualStudio/wolfssl.vcxproj b/IDE/VisualStudio/wolfssl.vcxproj
new file mode 100644
index 00000000..7b61d010
--- /dev/null
+++ b/IDE/VisualStudio/wolfssl.vcxproj
@@ -0,0 +1,368 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ DLL Debug
+ Win32
+
+
+ DLL Debug
+ x64
+
+
+ DLL Release
+ Win32
+
+
+ DLL Release
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}
+ wolfssl
+ Win32Proj
+
+
+
+ StaticLibrary
+ v110
+ Unicode
+ true
+
+
+ DynamicLibrary
+ v110
+ Unicode
+ true
+
+
+ StaticLibrary
+ v110
+ Unicode
+ true
+
+
+ DynamicLibrary
+ v110
+ Unicode
+ true
+
+
+ StaticLibrary
+ v110
+ Unicode
+
+
+ DynamicLibrary
+ v110
+ Unicode
+
+
+ StaticLibrary
+ v110
+ Unicode
+
+
+ DynamicLibrary
+ v110
+ Unicode
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)$(Configuration)\$(Platform)\
+ $(Configuration)\$(Platform)\$(ProjectName)_obj\
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+
+ Disabled
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebugDLL
+ Level4
+ ProgramDatabase
+ 4206;4214;4706;%(DisableSpecificWarnings)
+
+
+
+
+ Disabled
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ BUILDING_WOLFSSL;WOLFSSL_DLL;WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebugDLL
+ Level4
+ ProgramDatabase
+ 4206;4214;4706;%(DisableSpecificWarnings)
+
+
+ ws2_32.lib;%(AdditionalDependencies)
+ 0x5A000000
+ false
+ false
+ true
+
+
+
+
+ Disabled
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebugDLL
+ Level4
+ ProgramDatabase
+ 4206;4214;4706;%(DisableSpecificWarnings)
+
+
+
+
+ Disabled
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ BUILDING_WOLFSSL;WOLFSSL_DLL;WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebugDLL
+ Level4
+ ProgramDatabase
+ 4206;4214;4706;%(DisableSpecificWarnings)
+
+
+ ws2_32.lib;%(AdditionalDependencies)
+ false
+ false
+
+
+
+
+ MaxSpeed
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ true
+ Level3
+ ProgramDatabase
+ false
+
+
+
+
+ MaxSpeed
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ BUILDING_WOLFSSL;WOLFSSL_DLL;WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ true
+ Level3
+ ProgramDatabase
+
+
+ ws2_32.lib;%(AdditionalDependencies)
+ false
+ 0x5A000000
+ true
+
+
+
+
+ MaxSpeed
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ true
+ Level3
+ ProgramDatabase
+ false
+
+
+
+
+ MaxSpeed
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ BUILDING_WOLFSSL;WOLFSSL_DLL;WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ true
+ Level3
+ ProgramDatabase
+
+
+ ws2_32.lib;%(AdditionalDependencies)
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ false
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ $(IntDir)%(Filename).obj
+ $(IntDir)%(Filename).obj
+ false
+ false
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ $(IntDir)%(Filename).obj
+ $(IntDir)%(Filename).obj
+
+
+
+
+ false
+ false
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ $(IntDir)%(Filename).obj
+ $(IntDir)%(Filename).obj
+ false
+ false
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ $(IntDir)%(Filename).obj
+ $(IntDir)%(Filename).obj
+
+
+
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ ml64.exe /DWOLFSSL_USER_SETTINGS /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)
+ $(IntDir)%(Filename).obj
+ $(IntDir)%(Filename).obj
+ $(IntDir)%(Filename).obj
+ $(IntDir)%(Filename).obj
+
+
+
+
+
+
\ No newline at end of file
diff --git a/IDE/VisualStudio/wolftpm.sln b/IDE/VisualStudio/wolftpm.sln
new file mode 100644
index 00000000..483e51b2
--- /dev/null
+++ b/IDE/VisualStudio/wolftpm.sln
@@ -0,0 +1,115 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.1.32228.430
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wolfssl", "wolfssl.vcxproj", "{73973223-5EE8-41CA-8E88-1D60E89A237B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wolfcrypt_test", "wolfcrypt_test.vcxproj", "{D04BDF66-664A-4D59-BEAC-8AB2D5809C21}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wolftpm", "wolftpm.vcxproj", "{2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tls_server", "tls_server.vcxproj", "{E7403474-F122-4AEC-92E3-B41F4008F0FA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wrap_test", "wrap_test.vcxproj", "{A495B4A4-D47F-4141-AC59-331743CD953A}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ DLL Debug|Win32 = DLL Debug|Win32
+ DLL Debug|x64 = DLL Debug|x64
+ DLL Release|Win32 = DLL Release|Win32
+ DLL Release|x64 = DLL Release|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.Debug|Win32.Build.0 = Debug|Win32
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.Debug|x64.ActiveCfg = Debug|x64
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.Debug|x64.Build.0 = Debug|x64
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Debug|x64.Build.0 = DLL Debug|x64
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Release|Win32.Build.0 = DLL Release|Win32
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Release|x64.ActiveCfg = DLL Release|x64
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Release|x64.Build.0 = DLL Release|x64
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.Release|Win32.ActiveCfg = Release|Win32
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.Release|Win32.Build.0 = Release|Win32
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.Release|x64.ActiveCfg = Release|x64
+ {73973223-5EE8-41CA-8E88-1D60E89A237B}.Release|x64.Build.0 = Release|x64
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Debug|Win32.Build.0 = Debug|Win32
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Debug|x64.ActiveCfg = Debug|x64
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Debug|x64.Build.0 = Debug|x64
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.DLL Debug|x64.Build.0 = DLL Debug|x64
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.DLL Release|Win32.Build.0 = DLL Release|Win32
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.DLL Release|x64.ActiveCfg = DLL Release|x64
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.DLL Release|x64.Build.0 = DLL Release|x64
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Release|Win32.ActiveCfg = Release|Win32
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Release|Win32.Build.0 = Release|Win32
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Release|x64.ActiveCfg = Release|x64
+ {D04BDF66-664A-4D59-BEAC-8AB2D5809C21}.Release|x64.Build.0 = Release|x64
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.Debug|Win32.Build.0 = Debug|Win32
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.Debug|x64.ActiveCfg = Debug|x64
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.Debug|x64.Build.0 = Debug|x64
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.DLL Debug|x64.Build.0 = DLL Debug|x64
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.DLL Release|Win32.Build.0 = DLL Release|Win32
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.DLL Release|x64.ActiveCfg = DLL Release|x64
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.DLL Release|x64.Build.0 = DLL Release|x64
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.Release|Win32.ActiveCfg = Release|Win32
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.Release|Win32.Build.0 = Release|Win32
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.Release|x64.ActiveCfg = Release|x64
+ {2BA1F3EA-4146-4DF5-AF12-0BD33E0DD74B}.Release|x64.Build.0 = Release|x64
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.Debug|Win32.Build.0 = Debug|Win32
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.Debug|x64.ActiveCfg = Debug|x64
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.Debug|x64.Build.0 = Debug|x64
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.DLL Debug|x64.Build.0 = DLL Debug|x64
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.DLL Release|Win32.Build.0 = DLL Release|Win32
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.DLL Release|x64.ActiveCfg = DLL Release|x64
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.DLL Release|x64.Build.0 = DLL Release|x64
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.Release|Win32.ActiveCfg = Release|Win32
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.Release|Win32.Build.0 = Release|Win32
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.Release|x64.ActiveCfg = Release|x64
+ {E7403474-F122-4AEC-92E3-B41F4008F0FA}.Release|x64.Build.0 = Release|x64
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.Debug|Win32.Build.0 = Debug|Win32
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.Debug|x64.ActiveCfg = Debug|x64
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.Debug|x64.Build.0 = Debug|x64
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.DLL Debug|x64.Build.0 = DLL Debug|x64
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.DLL Release|Win32.Build.0 = DLL Release|Win32
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.DLL Release|x64.ActiveCfg = DLL Release|x64
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.DLL Release|x64.Build.0 = DLL Release|x64
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.Release|Win32.ActiveCfg = Release|Win32
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.Release|Win32.Build.0 = Release|Win32
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.Release|x64.ActiveCfg = Release|x64
+ {A495B4A4-D47F-4141-AC59-331743CD953A}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {435A5854-CB2B-45BE-B11A-A6508AE2781E}
+ EndGlobalSection
+EndGlobal
diff --git a/IDE/VisualStudio/wolftpm.vcxproj b/IDE/VisualStudio/wolftpm.vcxproj
new file mode 100644
index 00000000..4fae99a4
--- /dev/null
+++ b/IDE/VisualStudio/wolftpm.vcxproj
@@ -0,0 +1,337 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ DLL Debug
+ Win32
+
+
+ DLL Debug
+ x64
+
+
+ DLL Release
+ Win32
+
+
+ DLL Release
+ x64
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {73973223-5ee8-41ca-8e88-1d60e89a237b}
+
+
+
+ Win32Proj
+ {2ba1f3ea-4146-4df5-af12-0bd33e0dd74b}
+ wolftpm
+
+
+
+ StaticLibrary
+ true
+ v110
+ Unicode
+
+
+ DynamicLibrary
+ true
+ v110
+ Unicode
+
+
+ StaticLibrary
+ false
+ v110
+ true
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v110
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ v110
+ Unicode
+
+
+ DynamicLibrary
+ true
+ v110
+ Unicode
+
+
+ StaticLibrary
+ false
+ v110
+ true
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v110
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)$(Configuration)\$(Platform)\
+ $(Configuration)\$(Platform)\$(ProjectName)_obj\
+
+
+ true
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+ true
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_LIB;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ NotUsing
+
+
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+
+
+ true
+
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_LIB;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;BUILDING_WOLFTPM;WOLFTPM_DLL;%(PreprocessorDefinitions)
+ true
+ NotUsing
+
+
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+
+
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_LIB;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ NotUsing
+
+
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_LIB;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;BUILDING_WOLFTPM;WOLFTPM_DLL;%(PreprocessorDefinitions)
+ true
+ NotUsing
+
+
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_LIB;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ NotUsing
+
+
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ MultiThreadedDebugDLL
+
+
+
+
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_LIB;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;BUILDING_WOLFTPM;WOLFTPM_DLL;%(PreprocessorDefinitions)
+ true
+ NotUsing
+
+
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+
+
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_LIB;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ NotUsing
+
+
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_LIB;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;BUILDING_WOLFTPM;WOLFTPM_DLL;%(PreprocessorDefinitions)
+ NotUsing
+
+
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+
+
+ true
+ true
+ DebugFull
+
+
+
+
+
+
\ No newline at end of file
diff --git a/IDE/VisualStudio/wrap_test.vcxproj b/IDE/VisualStudio/wrap_test.vcxproj
new file mode 100644
index 00000000..e9f72c67
--- /dev/null
+++ b/IDE/VisualStudio/wrap_test.vcxproj
@@ -0,0 +1,306 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ DLL Debug
+ Win32
+
+
+ DLL Debug
+ x64
+
+
+ DLL Release
+ Win32
+
+
+ DLL Release
+ x64
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ Win32Proj
+ {a495b4a4-d47f-4141-ac59-331743cd953a}
+ wraptest
+
+
+
+ Application
+ true
+ v110
+ Unicode
+
+
+ Application
+ true
+ v110
+ Unicode
+
+
+ Application
+ false
+ v110
+ true
+ Unicode
+
+
+ Application
+ false
+ v110
+ true
+ Unicode
+
+
+ Application
+ false
+ v110
+ Unicode
+
+
+ Application
+ true
+ v110
+ Unicode
+
+
+ Application
+ false
+ v110
+ true
+ Unicode
+
+
+ Application
+ false
+ v110
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)$(Configuration)\$(Platform)\
+ $(Configuration)\$(Platform)\$(ProjectName)_obj\
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ true
+
+
+ Console
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ true
+
+
+ Console
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ true
+
+
+ Console
+ true
+ true
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ true
+
+
+ Console
+ true
+ true
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ Default
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ MultiThreadedDebugDLL
+ Disabled
+
+
+ Console
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ true
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ true
+
+
+ Console
+ true
+ true
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;WOLFSSL_USER_SETTINGS;WOLFTPM_USER_SETTINGS;%(PreprocessorDefinitions)
+ ./;../../;../../../wolfssl/;%(AdditionalIncludeDirectories)
+ true
+
+
+ Console
+ true
+ true
+ true
+ ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;tbs.lib;wolftpm.lib;wolfssl.lib;%(AdditionalDependencies)
+ $(Configuration)\$(Platform);%(AdditionalLibraryDirectories)
+
+
+
+
+
+
+
+
+ {73973223-5ee8-41ca-8e88-1d60e89a237b}
+
+
+ {2ba1f3ea-4146-4df5-af12-0bd33e0dd74b}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/IDE/include.am b/IDE/include.am
index 27237fd5..f1ffefb6 100644
--- a/IDE/include.am
+++ b/IDE/include.am
@@ -6,3 +6,4 @@ include IDE/STM32CUBE/include.am
include IDE/OPENSTM32/include.am
include IDE/IAR-EWARM/include.am
include IDE/QNX/include.am
+include IDE/VisualStudio/include.am
diff --git a/examples/tpm_test_keys.c b/examples/tpm_test_keys.c
index b9a38b44..795c6edd 100644
--- a/examples/tpm_test_keys.c
+++ b/examples/tpm_test_keys.c
@@ -23,7 +23,11 @@
* including stdio.h
*/
#if defined(__MINGW32__) || defined(__MINGW64__)
-#define __USE_MINGW_ANSI_STDIO 1
+ #define __USE_MINGW_ANSI_STDIO 1
+#endif
+#ifdef _MSC_VER
+ /* hide fopen warnings on Windows Visual Studio */
+ #define _CRT_SECURE_NO_WARNINGS
#endif
#include "tpm_test.h"
diff --git a/wolftpm/visibility.h b/wolftpm/visibility.h
index b7de8c1d..bd0a644f 100644
--- a/wolftpm/visibility.h
+++ b/wolftpm/visibility.h
@@ -31,9 +31,9 @@
*/
#if defined(BUILDING_WOLFTPM)
- #if defined(_MSC_VER) || defined(__CYGWIN__) || \
- defined(__MINGW32__) || defined(__MINGW64__)
- #ifdef _WINDLL
+ #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__) || \
+ defined(_WIN32_WCE)
+ #ifdef WOLFTPM_DLL
#define WOLFTPM_API __declspec(dllexport)
#else
#define WOLFTPM_API
@@ -50,8 +50,13 @@
#define WOLFTPM_LOCAL
#endif /* HAVE_VISIBILITY */
#else /* BUILDING_WOLFTPM */
- #if defined(_MSC_VER) || defined(__CYGWIN__)
- #define WOLFTPM_API __declspec(dllimport)
+ #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__) || \
+ defined(_WIN32_WCE)
+ #ifdef WOLFTPM_DLL
+ #define WOLFTPM_API __declspec(dllimport)
+ #else
+ #define WOLFTPM_API
+ #endif
#define WOLFTPM_LOCAL
#else
#define WOLFTPM_API