wolfssh/ide/winvs
Yosuke Shimizu 029d412e1f Add OpenSSH certificate user authentication 2026-07-27 23:30:20 -07:00
..
api-test Add FIPS configurations to Visual Studio project 2025-12-05 16:45:11 -07:00
client Add FIPS configurations to Visual Studio project 2025-12-05 16:45:11 -07:00
echoserver Add FIPS configurations to Visual Studio project 2025-12-05 16:45:11 -07:00
testsuite Add FIPS configurations to Visual Studio project 2025-12-05 16:45:11 -07:00
unit-test Add FIPS configurations to Visual Studio project 2025-12-05 16:45:11 -07:00
wolfsftp-client sftp Client Windows Version 2026-04-27 13:42:06 -07:00
wolfssh Add OpenSSH certificate user authentication 2026-07-27 23:30:20 -07:00
wolfsshd Add FIPS configurations to Visual Studio project 2025-12-05 16:45:11 -07:00
README.md UTF-8 -> 7-bit ASCII cleanup 2026-05-18 14:35:58 -07:00
include.am fix ups for format, spelling, includes, and string compare 2023-08-30 13:32:17 -07:00
user_settings.h wolfSSHd port to Windows 2023-08-30 09:08:25 -07:00
wolfssh.props Add FIPS configurations to Visual Studio project 2025-12-05 16:45:11 -07:00
wolfssh.sln Add FIPS configurations to Visual Studio project 2025-12-05 16:45:11 -07:00

README.md

VisualStudio solution for wolfSSH

The solution file, wolfssh.sln, facilitates bulding wolfSSH and its example and test programs. The solution provides both Debug and Release builds of Static and Dynamic 32- or 64-bit libraries. The file user_settings.h should be used in the wolfSSL build to configure it.

This project assumes that the wolfSSH and wolfSSL source directories are installed side-by-side and do not have the version number in their names:

Projects\
    wolfssh\
    wolfssl\

The file wolfssh\ide\winvs\user_settings.h contains the settings used to configure wolfSSL with the appropriate settings. This file must be copied from the directory wolfssh\ide\winvs to wolfssl\IDE\WIN. If you change one copy you must change both copies. The option WOLFCRYPT_ONLY disables the build of the wolfSSL files and only builds the wolfCrypt algorithms. To also keep wolfSSL, delete that option.

User Macros

The solution is using user macros to indicate the location of the wolfSSL library and headers. All paths are set to the default build destinations in the wolfssl64 solution. The user macro wolfCryptDir is used as the base path for finding the libraries. It is initially set to ..\..\..\..\wolfssl. And then, for example, the additional include directories value for the API test project is set to $(wolfCryptDir).

The wolfCryptDir path must be relative to the project files, which are all one directory down

wolfssh/wolfssh.vcxproj
unit-test/unit-test.vcxproj

etc. The other user macros are the directories where the wolfSSL libraries for the different builds may be found. So the user macro wolfCryptDllRelease64 is initially set to

$(wolfCryptDir)\DLL Release\x64

This value is used in the debugging environment for the echoserver's 64-bit DLL Release build is set to

PATH=$(wolfCryptDllRelease64);%PATH%

When you run the echoserver from the debugger, it finds the wolfSSL DLL in that directory.

SSHD Service

Creating a new service sc.exe create wolfSSHd binpath="D:\work\wolfssh\ide\winvs\Debug\x64\wolfsshd.exe -f <sshd_config fils> -h <optionally load host key> -p <optional port number>"

Starting wolfSSHd service run the following command in an adminstrator power shell session: sc.exe start wolfSSHd

To stop the service run the following in an adminstrator power shell session: sc.exe stop wolfSSHd

To delete the service run sc.exe delete wolfSSHd

FIPS Build Configurations

The solution includes FIPS build configurations to support building wolfSSH with the FIPS build of wolfSSL. These configurations are designed to work with wolfSSL FIPS builds that are located in the IDE\WIN10 directory structure.

The following FIPS configurations are available:

  • DebugFIPS (Win32 and x64): For debugging FIPS builds using static libraries
  • ReleaseFIPS (Win32 and x64): For release FIPS builds using static libraries
  • DLL DebugFIPS (Win32 and x64): For debugging FIPS builds using dynamic libraries
  • DLL ReleaseFIPS (Win32 and x64): For release FIPS builds using dynamic libraries

Matching wolfSSL FIPS Builds

When building wolfSSH with FIPS configurations, ensure that the corresponding wolfSSL FIPS build is available.

If you build the wolfSSL FIPS code in the Release x64 configuration, then you should build wolfSSH with the ReleaseFIPS x64 configuration.

Similarly:

  • wolfSSL Debug x64 -> wolfSSH DebugFIPS x64
  • wolfSSL Release Win32 -> wolfSSH ReleaseFIPS Win32
  • wolfSSL DLL Release x64 -> wolfSSH DLL ReleaseFIPS x64

Notes:

  • wolfSSH examples and applications might initially fail because the FIPS Integrity hash is incorrect, you'll have to rebuild wolfSSL with the FIPS hash reported by the wolfSSH application to get this working.
  • To stabilize the FIPS hash on Windows, you might have to disable ASLR (Address space layout randomization) on the system.