Intention is to see the % of original code being reused for Win32 port. Here are the number as of 2-26-2016 for various libs
libssh 89.09911361805 %
scp 85.2348993288591 %
sftp 93.3269323091695 %
sftp-server 76.2975778546713 %
ssh 90.1238422312415 %
ssh-add 99.6138996138996 %
ssh-agent 85.7938718662953 %
sshd 84.0249187432286 %
#define WIN32_PRAGMA_REMCON in config.h.vs or in channels.c, session.c
and sshpty.c files . cmdserver.exe runtime in Pragma Fortress SSH
package needed to access shell session.
Implementation of a generic wrap interface for bignum and diffie-hellman
based upon Damien's wrap code in openssh-openbsd. This commit adds the
generic interface along with the backing code for openssl, cng, and cng
with an openssl fallback. Currently, openssl is the only provider for
bignum and the diffie-hellman generic interface is only for static and
negotiated oakley groups..
ssh-agent.exe and ssh-add.exe code updated and fixed to work in Windows.
For convenience of users, ssh-agent.exe starts a cmd shell with the
"SSH_AUTH_SOCK" and "SSH_AGENT_PID" environment variables set.
ssh-add.exe can be run immediately from the cmd shell. 'ssh-add -L" and
"ssh-add id_rsa" and "ssh-add -d id_rsa" are 3 useful commands to list,
add and delete keys from ssh-agent cache.
Changed the code to bring back assertion popups for everyone, but turn
off assertions around the _get_osfhandle() call in allocate_sfd(). The
original port code was designed knowing that some of the passed
parameters would be invalid, but was expecting that the call would just
fail instead of generating an assert dialog. Turning off Asserts around
this call results in behavior similar to mingw.
Also, turn off Incremental Linking for ssh.exe since half the time, the
linker would trap on this project.
Lot of code had to be redone as scp.exe contains both the scp client and
scp server in the same binary working in Windows needs various file
system access related changes. sshd_config file needs to add "scp"
subsystem path like we do for sftp server.
Using a module definition file gives better support to handle symbol
decorations. This change adds ssh-lsa.def to define the functions
exported from ssh-lsa.dll.
Misc. changes to ssh-lsa project (warning level, sdl check, calling
convention).
The changes necessary to support visual studio fall into 2 basic groups.
1) reordering of header files, and 2) changes to support syntax
differences between mingw and visual studio and 3). All changes are
conditional upon the definition of the macro __VS_BUILD__ .
Builds all x64 64bit and x86 32 bit openssh binaries Release and Debug
versions from the single Win32-OpenSSH.sln file.
1. Open a MSbuild cmd prompt for Visual Studio 2015
2. cd Win32-OpenSSH\contrib\win32\openssh directory.
3. openssh_build_cmd
Add a utility upon which every other project is dependent, to copy the
config.h.vs file to the source root config.h. Because the target may
have changed outside of visual studio, I have disabled the dependency
check so the file will be copied with every build..
Use new compile flag WIN32_VS to add/change logic of sftp client and
sftp server codes so that MS Visual Studio 2015 compiler and runtime can
be used. opendir(), readdir(), closedir() directory APIs and basename()
API of Unix/Linux are implemented in Windows as they are not available
in Windows/VisualStudio C-runtime. win32_dirent.c and win32_dirent.h
files added as dirent.c and dirent.h are not available in Windows and we
do not want to affect mingW/gcc builds for Windows which have those
files available.
The sfds code blindly uses _get_osfhandle on values that may be file
descriptors, sockets or io handles. Under visual studio, _get_osfhandle
will call the invalid parameter handler for items that are not file
descriptors. Adding the handler allows us to call this in the same way
that mingw does. We will still get an assertion, but a prior change
sends those to stdiout instead of making the user click through a
dialog.
Functions not declared before use, are define as returning an int.
Under 64-bit this can result in corrupted pointers being returned.
Also, Visual studio doesn't like it when you use variables to declare
array sizes, static values always work though.
Negative of an unsigned value should just be the two's complement. Add
code to change code with negative unsigned values to two's compliment
values if compiling under visual studio.
KeyObject for cipher symmetric key was being allocated improperly due to
an error in getting the key object size. Also added code to free
keyobject in the event of a key creation failure.
Windows 7 improved the memory management in CNG. To support Vista we
need to manage memory for cryptographic objects ourselves. This change
adds a key object memory pointer to the cipher context and adds code to
allocate and free it along with the key handle.
ssh_digest_start was using a pointer to the algorithm handle instead of
the algorithm handle itself in the BCryptGetProperty call. It was also
querying for the hash length when it should have been querying for the
hash object length.
Typically LF is sent when Return key is hit. But for sshd servers that
sent us via ANSI escape sequence that CRLF is to be sent, ssh.exe client
will do so which is used commonly used by sshd servers in Windows - like
our own win32 port sshd.
Console API is now used for interactive tty mode. Thus ssh.exe client
can now pass each character to remote side as one types so that programs
like more works correctly. Control-c now will stop the remote program
instead of exiting the ssh.exe.