New secure ftp plugin version 2.90 final (32 bit+64 bit)
Copyright (C) 2008-2021 Christian Ghisler, all rights reserved

Installation instructions:
==========================

This plugin is for Windows Vista, 7, 8, 8.1, 10, and 11. It does
not need any additional DLLs because it uses the built-in
Windows SSL library sChannel (Secur32.dll) instead of OpenSSL.

If you use Windows XP or older, please get the other release
of this plugin with libssh2.dll linked to OpenSSL.


You can use the plugin in the Network Neighborhood.

Supported functions:
====================
- connect with username/password
- connect with client certificate
- connect via Pageant from Putty
- connect over a HTTP proxy supporting the CONNECT command
- upload, download, rename, delete, create directory
- resume upload and download
- change Unix attributes (chmod)
- synchronize dirs with correct timestamps(!)
- properties of file (STAT command) via Alt+Enter
- command line support for any shell commands
- new: support for SCP only servers (no SFTP)
- new: keep alive
- new: transfer files >2GB via SCP

Authentication using pageant (client cert in Putty format):
===========================================================
You can now store the key in Putty's pageant.exe tool.
Pageant can be launched when needed by putting a link
in the plugin directory named pageant.lnk pointing to
c:\PathToPutty\pageant.exe cert_file_name
with the name of the client certificate file as a parameter.

Authentication using a client certificate in OpenSSH format:
============================================================
The keys must be in OpenSSH format. Follow these steps to
convert a Putty (*.ppk) key to OpenSSH format:
1. Start puttygen.exe (part of putty installation)
2. Load your Putty key into it
3. Do NOT click on "Save public key", it creates an
   incompatible key! Instead, select the text in the
   section "Public key for pasting into OpenSSH...
   and press Ctrl+C (=Copy to clipboard)
4. Create a new file with extension .pub (Shift+F4 in
   Total Commander) and press Ctrl+V (=Paste)
5. Choose "Export SSH key" from the "Conversions" menu
   to save the *.pem file.

Revision log:
=============
20211109 Release, version 2.90 final
20211109 Added: Keep old target file (which would be overwritten) when download fails at the start
20210630 Release, version 2.80 final
20210630 Added: Prefer curve ed25519 also in XP version. Note: You may get a warning about a changed server key because the new method is used!
20210630 Added: scramble server passwords in memory
20210622 Release, version 2.80 beta 5
20210622 Fixed: When both curve ed25519 and the nist curves are supported by the server, prefer curve ed25519
20200724 Release, version 2.80 beta 4
20200724 Fixed: On uploads via SCP, the permissions (chmod) was always set in 32-bit (also when overwriting), but never set in 64-bit (SCP only servers)
20200714 Release, version 2.80 beta 3
20200714 Fixed: Minor bugfixes, main fix in version for XP
20200709 Release, version 2.80 beta 2
20200709 Handle dual login via client certificate and keyboard interactive, where the server only requests a second factor, no password
20200708 Release, version 2.80 beta 1
20200708 Added: Support servers which require dual login via client certificate AND keyboard interactive or password, e.g. for 2 factor authentication
20200519 Release, version 2.70 final
20200519 Fixed: Downloading files could sometimes result in an INVALID_MAC error when an incomplete packet was received
20200501 Release, version 2.60 final
20200501 Added: Two new hmac algorithms (authenticity verification): hmac-sha2-256-etm@openssh.com and hmac-sha2-512-etm@openssh.com
20190617 Release, version 2.50 final
20190617 Added: Also load private keys with encryption "none" in ssh format
20190617 Added: Support for curve ed25519, both for host certificate and client certificate, using library from https://github.com/orlp/ed25519
20190606 Release, version 2.40 final
20190606 Fixed: Some servers report to support "keyboard interactive", but return error PUBLICKEY_UNRECOGNIZED when using it. Retry login with "password" method and don't show error.
20190603 Release, version 2.30 final
20190603 Fixed: Connection fails on Windows 10 1903 (Spring 2019) due to a bug in BCryptImportKeyPair for RSA: Only supports public exponents up to 4 bytes length -> use libtommath mp_exptmod() instead
20190603 Fixed: Prefer "keyboard interactive" if the server supports it and also user/password, because only "keyboard interactive" supports 2 factor authentication
20180924 Release, version 2.20 final
20180829 Added: Transfer files >2GB vis SCP by user "CoolWater"
20180627 Release, version 2.10 final
20180627 Added: Keep alive option by forum user "CoolWater"
20171117 Release, version 2.0 final
20171117 Added: Option to open Web browser for downloading OpenSLL DLLs (XP version only)
20171117 Added: Separate version for Windows XP and older. Warn if newer version is installed
20170323 Release, version 1.4.3 beta 3
20170323 Added: More error logging, especially for SCP transfers
20170306 Release, version 1.4.3 beta 2
20170303 Added: Support for ECDSA (elliptic curve) authentication
20170303 Added: Include OpenSSH dll not depending on OpenSSL, needs Windows Vista or newer. OpenSSH+OpenSSL still supported for older systems.
20161111 Release, version 1.4.3 beta 1
20161111 Added: Set mode how to send command: sftpplug.ini [connectionname] sendcommandmode=0 : 0: send normal, get reply, close channel; 1: like 0, do not close; 2: just send, do not wait for reply
20161111 Added: Send command line before connecting to SFTP channel: sftpplug.ini [connectionname] sendcommand=some unix command
20150906 Release, version 1.4.2 (unchanged)
20150713 Release, version 1.4.2 beta 1
20150713 Added: Support for SCP only connections, for servers not supporting the SFTP subsystem
20130304 Release, version 1.4.1
20130304 Fixed: Password change via libssh2_userauth_password_ex would cause a crash (buffer deallocation)
20130222 Release, version 1.4
20130222 Added: Handle keyboard interactive with password change where the callback function is called multiple times
20130222 Added: Call libssh2_userauth_password_ex instead of libssh2_userauth_password, would support password change (if the server would actually support it)
20130222 Added: Support for new dlls from libcurl where zlibwapi.dll was renamed to zlib1.dll
20120524 Release, version 1.3
20120524 Added: 64-bit: Load dlls from subdir '64' under dll dir or program dir, same as where TC x64 expects the 64-bit SSL dlls
20120108 Release, version 1.2
20120108 Fixed: Also try to load zlibwapi.dll, the 64-bit libssh2.dll depends on it and doesn't load otherwise
20120108 Added: 64-bit: Load dlls from subdir 'x64' under dll dir or program dir
20110629 Release, version 1.1
20110523 Added: Allow to store proxy password in password manager
20110522 Added: Support for multiple firewalls/proxies
20100629 Release, version 1.0 final
20100519 Release, version 0.98 beta
20100519 Added: On Alt+Enter (Properties), use "ls -la filename" if "stat filename" fails
20100519 Fixed: Do not quote names with spaces via SCP if the SSH library is version 1.1 or newer
20100519 Fixed: Applied patches from user "Sob" to handle WSAAddressToStringA on Windows 2000, fix for non-blocking connect() and empty password support
20100324 Release, version 0.97 beta
20100324 Added: Support for asynchronous SCP downloads, which is working now in newer SSH DLL versions
20100324 Added: User can put file pageant.lnk in plugin directory to auto-launch pageant if needed (use key name as parameter)
20100324 Added: Support for Putty Agent (Pageant) authentication (code supplied partially by a forum user, thanks!)
20100127 Release, version 0.96 beta
20100127 Fixed: Some operations were considerably slower in 0.95 due to a small change to reduce CPU load
20100120 Release, version 0.95 beta
20091201 Added: Support for transfers in background (separate thread) for TC 7.51
20090619 Fixed: ENTER on "_F7 new connection.txt" no longer showed instructions
20090619 Fixed: HTTP CONNECT: "Host:" header now sends name of final destination, not name of proxy
20090531 Fixed: Do not allow the user to create a connection named "_F7=new connection.txt", because it cannot be deleted later
20090518 Fixed: Plugin hangs when sending a command with many returned lines, e.g. zip command
20090518 Fixed: Reduce high CPU load because of busy waiting during dir listing, uploads and downloads
20090514 Release, version 0.94 beta
20090513 Added: Support different code pages, e.g. Latin1, Cyrillic, Chinese etc. (no auto-detect yet)
20090513 Fixed: Saving connection with empty password but option "Protect with master password" made password unchangeable
20090505 Release, version 0.93 beta
20090505 Fixed: Crash on file transfer when length of "autmoatic" file types (detect as text) exceeded 259 characters
20090505 Fixed: Disconnect was hanging with server Core FTP mini-sftp-server
20090101 Fixed: Incorrect handling of SOCKS5 proxy returing a host name instead of an IP address
20090101 Release, version 0.92 beta
20090101 Added: Use async sockets also during connect and proxy negotiations, so the user can abort a hanging connection at any time
20081231 Added: CR <-> CRLF conversion for transfers from/to Unix servers. Do not convert files containing 0 bytes (binaries, utf-16), do not convert CRLF to CRCRLF
20081231 Added: SOCKS4 support and numeric IP in SOCKS5
20081231 Fixed: Corrected SOCKS5 code (incorrect server response handling)
20081231 Added: Merged code from forum-user "Sob" for SOCKS4A+SOCKS5 proxies
20081121 Release, version 0.91 beta
20081121 Fixed: SCP didn't work with spaces in names, they must be put in double quotes "" to work
20081121 Fixed: IPv6 IP addresses without [] were not supported
20081121 Fixed: Die to a bug in the SFTP dll, uploads via SCP fail in non-blocking mode -> switch to blocking mode just for the upload
20081120 Release, version 0.9 beta
20081120 Added: Option to SCP commands to upload+download files. This is usually much faster than SFTP because the file is transferred as a single stream
20081119 Fixed: SFTP read directory may hang in infinite loop when server wasn't reachable/connection lost
20081119 Added: Third party code to connect to numeric IPv6 addresses
20081119 Added: Preparation for master password support (TC 7.5)
20081119 Fixed: If user clears one of the chmod fields, set the value to the default (644 for files, 755 for directories) instead of 0
20081111 Release, version 0.8a beta
20081111 Fixed: Set attribute of directory again after creating it, because some servers seem to ignore the attribute option of libssh2_sftp_mkdir
20080902 Release, version 0.8 beta
20080902 Fixed: Could not store passwords with accents or special chars like ?
20080901 Fixed: Could not open directories with UTF-8 names
20080901 Fixed: Set permissions of uploaded file to user-defined permissions ONLY when not overwriting an already existing file
20080901 Added: Show server list as links instead of folders! Advantage: Allows to start in a subdir of the server
20080829 Added: Reconnect to the server if a connection failed and the user tries to access the server again
20080829 Fixed: Open new SFTP channel for directories, uploads and downloads if an operation was aborted while it was hanging
20080828 Fixed: Resume upload only seems to work when clearing the "stat" command parameter before getting the file attributes
20080828 Fixed: Downloads could hang when network connection was cut just during the download
20080828 Release, version 0.7 beta
20080828 Added: Read contents of HOME environment variable when double clicking on pseudo link "~" in root or home dir
20080827 Added: Allow user to break out of plugin root (e.g. servername.com/home/username) when following a link
20080827 Fixed: English properties dialog had default locale (which is Swiss German on my system)
20080827 Fixed: Socket was not closed after shutting down SFTP connection
20080827 Release, version 0.6 beta
20080827 Added: Try to auto-detect servers with UTF-8 encoding by checking variables $LC_ALL $LC_CTYPE $LANG, and sending the command 'locale'
20080827 Fixed: Uploads: When overwriting a file and the new file is smaller, rests of the old file will remain appended (the file size didn't change)
20080826 Added: Remote copy of files (by sending "cp" command) with Shift+F5, or F5 with same server in both panels
20080826 Added: French translation by forum users Clo and Vansumsen
20080820 Release, version 0.5 beta
20080820 Fixed: Properties (Alt+Enter) didn't handle UTF-8 encoding properly
20080820 Added: Show lock icons for connections, show them in green when connected
20080820 Fixed: Plugin stopped working on systems without ipv6 support (pre-XP)
20080820 Fixed: Quick connection stopped working
20080818 Release, version 0.4 beta
20080818 Added: View properties of file/directory under cursor with Alt+Enter
20080818 Added: Support shell commands directly via command line, e.g. chmod, chown etc.
20080817 Added: If a template file sftpplug.tpl exists in the plugin dir, copy it to the ini file if no ini file exists yet
20080817 Added: IPv6 support, code from forum user "Sob", but changed to dynamic loading of ws2_32.dll
20080817 Fixed: Only show FTP toolbar when connected to avoid problems with disconnect button when connection fails
20080817 Added: Show connect progress in separate dialog
20080817 Added: Show and allow to follow symbolic links to directories
20080817 Added: In the public/private key path, %USER% (all uppercase!) will be replaced by the user name
20080817 Added: The public/private key path may now contain environment variables like %commander_path%
20080817 Added: Ask for user name during connect if none was specified in the configuration
20080815 Release, version 0.3 beta
20080815 Added: Support UTF-8 encoding of file names (option in connect dialog)
20080815 Added: Let user define default permissions of uploaded files and new directories
20080815 Added: Use list of supported methods from server to determine connection method
20080815 Added: Show user@server in all password dialogs
20080815 Added: Do not show configuration dialog to enter password, show separate password dialog
20080815 Added: keyboard-interactive login method
20080814 Release, version 0.2 beta
20080814 Added: Load libssh2.dll also from the Total Commander directory and the %PATH% if not found in plugin dir
20080814 Added: Ask for proxy password in separate dialog if none was stored, and proxy user name was set
20080814 Added: Show what authentication methods are supported by the server
20080814 Fixed: Minor fixes to asynchronous socket mode
20080814 Fixed: "Quick connect" vanished when no connections were defined and user pressed F2
20080814 Fixed: Couldn't connect if no proxy type was chosen
20080813 Initial release, version 0.1 beta
