More .NET components

Release notes for Rebex Terminal Emulation for .NET

2017-02-08 Version 2017 R1 #
(build number 6249)

Support for the new OpenSSH key format

Our SSH based components can now save private keys using the new OpenSSH key format (Base64-encoded keys with "BEGIN OPENSSH PRIVATE KEY" header).

Complete list of changes of version 2017 R1

  • Networking: Added workaround for broken NetworkSessionException.Data on recent Xamarin.iOS.
  • Networking: TlsSocket.Timeout modifies the underlying ISocket.Timeout as well now.
  • Networking: Slightly enhanced certificate rejection reason reporting in TLS.
  • Proxy: Enhanced ProxySocket connection initialization.
  • SSH: Added support for saving private keys in new OpenSSH key format (Base64-encoded keys with "BEGIN OPENSSH PRIVATE KEY" header).
  • SSH: Added support for "rsa-sha2-256" and "rsa-sha2-512" host key algorithms.
  • SSH: Added support for "diffie-hellman-group14-sha256", "diffie-hellman-group15-sha512" and "diffie-hellman-group16-sha512" key exchange algorithms.
  • SSL: Added support for Renegotiation Indication Extension (RFC 5746).
  • SSL: Preferred TLS/SSL ciphers can be now defined (using TlsParameters.SetPreferredSuites method).
  • SSL: Added check for private key accessibility when starting server-side TLS.
  • Cryptography: Added support for ValidationOptions.UseCacheOnly on .NET CF.
  • Cryptography: Substantially optimized CRL parsing code used by enhanced certificate validator on .NET Compact Framework.

2016-12-19 Version 2016 R3 #
(build number 6198)

Elliptic curve cryptography in TLS/SSL

All Rebex components utilizing our TLS/SSL library now support the following TLS ciphers based on Elliptic Curve Diffie-Hellman (ECDH) algorithm:

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
  • TLS_ECDHE_RSA_WITH_RC4_128_SHA

Supported curves:

  • NIST P-256
  • NIST P-384
  • NIST P-521
  • Brainpool P256 R1
  • Brainpool P384 R1
  • Brainpool P512 R1
  • Curve 25519

Please note that external plugins might be needed for some of those algorithms or curves on some platforms.

Elliptic curve cryptography in SSH

All Rebex components utilizing our SSH library now support SSH key exchange algorithms based on Elliptic Curve Diffie-Hellman (ECDH) algorithm and SSH host key algorithms based on Elliptic Curve DSA (ECDSA) and Edwards-curve DSA (EdDSA) algorithms:

  • ecdh-sha2-nistp256
  • ecdh-sha2-nistp384
  • ecdh-sha2-nistp521
  • curve25519-sha256@libssh.org
  • ecdsa-sha2-nistp256
  • ecdsa-sha2-nistp384
  • ecdsa-sha2-nistp521
  • ssh-ed25519

Please note that external plugins might be needed for some of those algorithms or curves on some platforms.

Enhanced SHA-2 certificate validation on all .NET Compact Framework platforms

We still support .NET Compact Framework 2.0, 3.5 and 3.9 and Windows CE 5.0 and higher. Unfortunately, legacy versions of Windows CE won't get native support for X509 certificates signed using SHA-2 algorithms, which essentially makes the native certifiacte validator useless - it only supports SHA-1, which is getting deprecated.

As a workaround to this platform limitation, we introduce a new built-in certificate validator. It handles SHA-2 and is used by default on .NET Compact Framework platforms that lack native SHA-2 support.

Proper certificate validation on Universal Windows Platform

Support for Universal Windows Platform is still experimental, but it just got much better. We now support the platform's native certificate validation provided by Windows.Security.Cryptography.Certificates namespace. There is now no need to implement custom validators in your Windows 10 Store applications.

New OpenSSH key format support

SshPrivateKey and PrivateKeyInfo objects can read server and client keys utilizing the new OpenSSH key format (Base64-encoded keys with "BEGIN OPENSSH PRIVATE KEY" header). This format is usually used to store ED25519 or ECDSA keys.

Fine-tuning enabled ciphers in SSH

Previously, SshParameters only made it possible to enable/disable groups of ciphers. Now, it's possible to fine-tune the list of supported algorithms, including their preferred order (client-side only) using SetKeyExchangeAlgorithms, SetHostKeyAlgorithms, SetEncryptionAlgorithms and SetMacAlgorithms methods. Please note that KeyExchangeAlgorithms, HostKeyAlgorithms, EncryptionAlgorithms and MacAlgorithms properties still apply - a cipher is only used when it is enabled by both the method and property.

Disabled weak legacy ciphers in TLS/SSL

All legacy 'EXPORT1024' ciphers are now prohibited by default in addition to already-prohibited 'EXPORT' ciphers. SslAllowVulnerableSuites option can be used to enable them, but this is strongly discouraged.

Disabled weak algorithms in SSH

Several legacy ciphers are now disabled by default: diffie-hellman-group1-sha1, blowfish-ctr, blowfish-cbc, arcfour256, arcfour128, arcfour. Use SshParameters.KeyExchangeAlgorithms and SshParameters.EncryptionAlgorithms to enable them.

Weak RSA server host keys shorter than 1024 bits are now rejected by default. Use SshParameters.MinimumRsaKeySize property to specify a custom key size.

Complete list of changes of version 2016 R3

  • SSH Shell: Fixed race condition at start of SSH tunnel that might cause data corruption.
  • SSH Shell: ServerKey property added to Ssh object, providing server public host key of the server.
  • Telnet: Added experimental Telnet binaries for Windows Store / Universal Windows Platform.
  • Terminal: Fixed TerminalControl.CursorBlinkingInterval (could temporarily leave the cursor in 'off' state).
  • Terminal: No longer waiting for channel close confirmation in TerminalControl.Dispose.
  • Terminal: Added a workaround for delayed close/dispose of SerialPort class in SerialPortChannel.
  • Terminal: Fixed rare race condition in TerminalControl.Unbind.
  • Networking: Enhanced and optimized HTTP/HTTPS client core.
  • Networking: Connect/Listen methods on ProxySocket/TlsSocket objects now throw an exception when called twice on the same socket.
  • Networking: Added SocketInformation constructor.
  • SSH: Added support for "ecdh-sha2-nistp256", "ecdh-sha2-nistp384", "ecdh-sha2-nistp521" and "curve25519-sha256@libssh.org" key exchange algorithms (plugins might be needed on some platforms).
  • SSH: SSH: Added support for saving keys in new OpenSSH key format (Base64-encoded keys with "BEGIN OPENSSH PRIVATE KEY" header).
  • SSH: Added SetKeyExchangeAlgorithms, SetHostKeyAlgorithms, SetMacAlgorithms methods to SshParameters object to make it possible to fine-tune the list of enabled SSH ciphers.
  • SSH: Legacy Diffie-Hellman group exchange is only used with legacy SSH servers.
  • SSH: Added SshSession.ServerInfo property to make it possible to determine ciphers supported by the SSH server.
  • SSH: Added SshPublicKey.KeySize property.
  • SSH: Added SshParameters.MinimumRsaKeySize property specifying to connect only to SSH servers with RSA server key of given size or higher.
  • SSH: Added support for "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521" and "ssh-ed25519" host key algorithms (plugins might be needed on some platforms).
  • SSH: Disabled weak SSH ciphers by default (they can still be enabled explicitly).
  • SSH: Check availability of associated private key when adding a certificate-based server host key.
  • SSL: Added support for Elliptic-Curve based TLS ciphers (TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA) with NIST P-256/P-384/P-521, Curve 25519 and Brainpool P256R1/P384R1/P512R1 curves. Plugins are needed for some of those.
  • SSL: Server name is now passed to TLS server during negotiation (use TlsParameters.CommonName to override it).
  • SSL: Fixed TlsCipherSuite.All to include all recently added cipher suites.
  • SSL: All legacy 'EXPORT1024' ciphers are now prohibited by default in addition to already-prohibited 'EXPORT' ciphers (unless AllowVulnerableSuites option is enabled).
  • SSL: Fixed issues with some legacy TLS/SSL ciphers (all of them were already disabled by default).
  • SSL: Enhanced error reporting in server-side TLS/SSL library.
  • Cryptography: Improved ASN.1 time node parser.
  • Cryptography: Added support for certificate validation on Universal Windows Platform.
  • Cryptography: Added custom X509 certificate validator for .NET Compact Framework with full SHA-2 support on all platforms.
  • Cryptography: Fixed parsing of 'Intended Usage' extension when 'Decipher Only' was specified.
  • Cryptography: Added static Create method to SHA256Managed/SHA384Managed/SHA512Managed classes on .NET Compact Framework.
  • Cryptography: ValidationResult.ErrorCode deprecated and replaced with NativeErrorCode.
  • Cryptography: Optimized memory usage in CMS/PKCS #7 (SingedData/EnvelopedData classes).
  • Cryptography: Added missing argument checks to CertificateIssuer methods.
  • Cryptography: Added support for Base64-encoded files with CRLF end-of-line sequences to CertificateChain.LoadP7b method.
  • Cryptography: Fixed HMAC calculation based on SHA-384 and SHA-512 on NET Compact Framework and Mono platforms.
  • Cryptography: Added Rebex.Security.Certificates.CertificateEngine class to make it possible to implement custom X509 chain building and validation engines.
  • Core: Added ConsoleLogWriter for Xamarin platforms.
  • Core: Added Rebex.TeeLogWriter class that makes it possible to log to multiple log writers.
  • Core: Added LocalItem.GetChecksum methods and related types.

2016-08-26 Version 2016 R2.2 #
(build number 6083)

Maintenance release

This update brings several improvements, workarounds and bugfixes.

Complete list of changes of version 2016 R2.2

  • SSH: Enhanced handling of errors in FingerprintCheck event handlers.
  • SSL: Fixed a rare issue in abbreviated TLS/SSL negotiation handling.
  • Cryptography: Added CheckCertificate/GetIssuingDistributionPoint methods to CertificateRevocationList class and ValidateRevocationList method to Certificate class.
  • Cryptography: Added support for certificates with private keys stored in CNG Key Storage Providers.
  • Cryptography: Enhanced SHA-2 support check on .NET Compact Framework.
  • Cryptography: Fixed SHA-2 support in AsymmetricKeyAlgorithm.SignHash on Windows Server 2008 (and possibly other old platforms).
  • Core: Added workaround for broken FileStream.SetLength on some .NET Compact Framework platforms.

2016-07-28 Version 2016 R2.1 #
(build number 6054)

Workarounds for Microsoft Schannel bugs in TLS/SSL

Added workaround for bugs in Microsoft's TLS/SSL library which uses and expects wrong padding in DHE_RSA_* ciphers.

Complete list of changes of version 2016 R2.1

  • Networking: Fixed ProxySocket.ToEndPoint to throw a more meaningful exception for entries with no IP addresses.
  • SSL: Fixed unreadable TLS debug log messages on Xamarin platforms.
  • SSL: Added workarounds for bugs in Microsoft Schannel implementation of DHE_RSA_* ciphers related to incorrect padding processing.
  • Cryptography: Fixed AsymmetricKeyAlgorithm.SignHash (in 2016 R2, it falls back to RSAManaged without trying to use RSACryptoServiceProvider first).
  • Cryptography: Fixed CertificateIssuer.IssueRevocationList method that ignored signatureHashAlgorithm argument and always used SHA-1.
  • Core: FileLogWriter on Windows Store 8.x / Universal Windows Platform is now thread-safe.
  • Core: Fixed LocalItem(string) constructor on Windows Store 8.x / Universal Windows Platform.
  • Core: Added workaround for broken handling of surrogate pairs when converting to "iso-8859-1" using System.Text.Encoding on Mono 4.x.

2016-06-30 Version 2016 R2 #
(build number 6026)

Support for Xamarin June 2016 Update

June 2016 update of Xamarin.iOS/Xamarin.Android/Xamarin.Mac introduced a breaking change in Mono.Security API that broke compatibility with Rebex components. This issue has been solved in this release.

SHA-2 for all supported .NET Compact Framework platforms

SHA-1 is currently being deprecated (applies to X509 certificates, TLS/SSL and SSH), which poses a problem for legacy .NET Compact Framework platforms based on editions of Windows CE with no native SHA-2 support. To make solutions for these platforms compatible with current TLS/SSL and SSH serves, we added a custom implementation of SHA-2 for these legacy platforms.

Telnet/SSL

Support for Telnet over TLS/SSL has been added. Supported TLS/SSL versions: SSL 3.0, TLS 1.0, 1.1, 1.2.

YMODEM file transfers

Terminal Emulation component now supports legacy terminal-based YMODEM file transfer protocol.

Additional SSH host key algorithms

Support for 'x509v3-sign-dss', 'ssh-rsa-sha256@ssh.com' and 'x509v3-sign-rsa-sha256@ssh.com' host key algorithms has been added to SFTP, SCP, SSH and File Server components.

Complete list of changes of version 2016 R2

  • SSH Shell: Incoming SSH tunnels are now properly handled on explicitly-bound Ssh objects.
  • SSH Shell: Fixed Ssh.Timeout to set inner session timeout as well.
  • Telnet: Added TelnetEscapesCarriageReturn option that specifies whether to send <CR> or <CR><NUL>.
  • Telnet: Added KeepAlive method to Scripting object.
  • Terminal: VirtualTerminal class is no longer sealed.
  • Terminal: Added support for YMODEM file transfers.
  • Terminal: Fixed Telnet to treat incoming <CR><NUL> sequences as <CR>.
  • Terminal: Added support for Telnet/SSL (Telnet secured with TLS or SSL).
  • Terminal: Extended range of palette index argument of TerminalOptions.SetColorIndex method from 0-15 to 0-255.
  • Terminal: Added EnableMouseWheel option to TerminalControl (makes it possible to disable mouse wheel scrolling).
  • Terminal: Fixed scrolling to history buffer when resizing the terminal control.
  • Terminal: Improved ScriptEvent.Delay and ScriptEvent.Duration processing.
  • Terminal: Better logging in Scripting API.
  • Networking: Increased default receive buffer size on Windows 8 and higher. Added related Proxy properties to make this configurable.
  • Proxy: ProxySocket object's Connect method now uses the timeout value specified by the Timeout property.
  • SSH: Added support for additional server authentication algorithms ('x509v3-sign-dss', 'ssh-rsa-sha256@ssh.com' and 'x509v3-sign-rsa-sha256@ssh.com').
  • SSH: Disabled hmac-sha96 SSH cipher in FIPS mode (it's not compliant).
  • SSH: Fixed error handling in queued background calls (mostly applies to session renegotiation).
  • SSH: Fixed renegotiation handling to allow renegotiation while authenticating.
  • SSH: Fixed DSA client certificate authentication.
  • SSH: Enhanced interactive authentication support to handle uppercase password prompts.
  • SSL: Enhanced SHA-2 support for .NET Compact Framework. SHA-256, SHA-384 and SHA-512 are now supported even on platforms with no native SHA-2 support.
  • SSL: Added Settings.SslSession property to allow resuming specific TLS/SSL sessions.
  • SSL: Fixed record layer 'protocol version' handling.
  • SSL: Enhanced Diffie-Hellman key exchange logging.
  • Cryptography: Fixed detection of native SHA-2 support in .NET Compact Framework version.
  • Cryptography: Added support for more variants of OpenSSL/OpenSSH (SSLeay) key files.
  • Cryptography: Fixed Certificate.Associate to work with DSA keys.
  • Cryptography: Added CrlNumber property to CertificateRevocationList object.
  • Cryptography: Added support for SHA-2 certificates to Certificate.VerifyHash in .NET 2.0 on Windows with FIPS-compliant mode enabled.
  • Cryptography: Certificate.LoadPfx and CertificateChain.LoadPfx methods now specify Exportable options by default (in addition to UserKeySet).
  • Cryptography: Added workaround for RSA implementations that reject rare signatures shorter than the key size.
  • Core: Enhanced SSPI error messages.
  • Core: Fixed LogWriterBase.Level default value.
  • Core: Fixed compatibility issue in Xamarin edition (caused by a breaking change in June 2016 update of Xamarin).

2016-02-10 Version 2016 R1.1 #
(build number 5885)

Maintenance release

This is a maintenance release that includes several hotfixes.

Complete list of changes of version 2016 R1.1

  • SSH Shell: Specified default values for SshParameters properties (fixes issues with SshTerminalCotrol and Visual Studio 2015's designer).
  • SSH Shell: Fixed handling of failed reverse tunneling attempts.
  • SSH Shell: Fixed "postponed-close" workaround for servers with broken SSH channel closure.
  • SSH: Fixed seldom-used SshSession.Connect(string, int) method that was freezing since 2016 R1.
  • SSH: Added workaround for older version of Bitvise server that don't properly handle SSH channel closing.
  • SSH: Fixed handling of multi-line SSH banner messages.
  • SSH: Fixed a bug in SSH channel window size adjustment.
  • SSH: Fixed potential NullReferenceException error in SshSession.Dispose method.
  • SSL: Disabled any usage of MD5 in TLS 1.2 to prevent SLOTH attacks.

2016-01-11 Version 2016 R1 #
(build number 5855)

SSH tunneling (port forwarding)

Added simple-to-use API for SSH tunneling (port forwarding).

Experimental assemblies for Windows Store Apps

Experimental binaries of many Rebex components (SFTP, FTP/SSL, Time, ZIP, File Transfer Pack, Terminal Emulation) for "Windows 8 Store", "Windows 8.1 PCL", and "Windows Universal Platform" are now available. The are suitable for "Store Apps" targeting Windows 8.0, Windows 8.1, Windows Phone 8.1, Windows 10, Windows 10 Mobile and Windows 10 IoT. Visit Rebex Labs for additional information.

Mitigation of Logjam attacks

Check for minimum allowed Diffie-Hellman key size (1024 bits) has been added to SSH and TLS/SSL to mitigate Logjam attacks. The minimum value can be changes using Settings.SslMinimumDiffieHellmanKeySize or Settings.SshParameters.MinimumDiffieHellmanKeySize.

Complete list of changes of version 2016 R1

  • All: Added workaround for Xamarin.Android whose Dns.GetHostEntry resolves 'localhost' to device's external IP address.
  • All: Rebex assemblies are now signed with SHA-256 signatures in addition to legacy SHA-1 signatures.
  • SSH Shell: Added easy-to-use SSH port forwarding (TCP tunneling) API.
  • SSH Shell: Support for zsh shell added to Shell object's well-known-shell mode.
  • Terminal: TerminalControl.SelectionChanged raised on double and triple clicks as well.
  • Terminal: Improved behavior of 'CSI J' sequence.
  • Terminal: Fixed inappropriate "Object never unlocked" error.
  • Terminal: Fixed handling of lone CR characters.
  • Proxy: Fixed a bug in SOCKS4/SOCKS5 response reading code that triggered an infinite loop with buggy proxy servers.
  • Proxy: Enhanced DNS resolution error messages.
  • SSH: Enhanced interactive authentication support to make it possible to use AuthenticationRequest event to ask for username and password.
  • SSH: Enhanced rejected authentication logging and error reporting.
  • SSH: Added SshParameters.MinimumDiffieHellmanKeySize value (set to 1024 by default to mitigate Logjam attacks).
  • SSH: No exception is thrown when the server aborts connection instead of closing it (unless a packet is being received).
  • SSH: Enhanced 'no common algorithms' error message.
  • SSH: Refactored SSH core to handle multi-thread scenarios more efficiently.
  • SSH: Added certificate-based constructor to SshPublicKey class.
  • SSH: Added support for certificate-based server authentication (using 'x509v3-sign-rsa algorithm').
  • SSH: Fixed misleading error message when user interactive authentication attempt is rejected.
  • SSH: Added support for one additional 'keyboard-interactive' authentication prompt ('Password for [user@server]:').
  • SSH: Added Settings.PostponeChannelClose option to enable workaround for servers that send channel data or exit code after the channel has been closed.
  • SSH: Added EnableSignaturePadding option that forces signature padding (workaround for SSH servers that got signature padding wrong).
  • SSH: Added logging of debug messages received from SSH server.
  • SSL: TLS 1.2 made compatible with Microsoft's implementation.
  • SSL: Fixed client certificate authentication in TLS 1.2.
  • SSL: Added Settings.SslMinimumDiffieHellmanKeySize value (set to 1024 by default to mitigate Logjam attacks).
  • SSL: Added reliable detection of SHA-2 certificate support.
  • Cryptography: Enhanced cryptographic provider initialization error message.
  • Cryptography: Added workaround for PuTTY keys with bad data at the end.
  • Core: Fixed multi-file operations to never modify input FileSet's BasePath.
  • Core: ThreadPool is now used to handle background operations instead of a custom implementation.
  • Core: Enhanced multithread operation support in log writers.

2015-08-24 Version 2015 R4.1 #
(build number 5715)

Fixed Xamarin mobile platform detection

Fixed platform detection code on Xamarin.iOS and Xamarin.Android.

Complete list of changes of version 2015 R4.1

  • All: Fixed platform detection on Xamarin.Android and Xamarin.iOS.
  • All: Version and platform added to assembly description.

2015-08-09 Version 2015 R4 #
(build number 5700)

Support for Windows 10, .NET Framework 4.6 and Visual Studio 2015

All Rebex components now ship with full support for Windows 10, .NET Framework 4.6 and Microsoft Visual Studio 2015. Older Visual Studio versions (2005 and higher) and .NET Framework versions (2.0 and higher) are still supported as well.

Improved TerminalControl performance

TerminalControl is now even faster - we significantly improved scrolling speed when receiving lots of data. Just try sending "ls -lR /" to a Unix-like server to see this in action.

Cursor blinking and custom colors

TerminalControl now supports cursor blinking and makes it possible to customize the cursor color as well.

Complete list of changes of version 2015 R4

  • All: Enhanced platform detection code.
  • Terminal: Significantly improved scrolling speed when receiving lots of data.
  • Terminal: Better handling of switching view buffers with different escape sequences.
  • Terminal: Fixed ScriptMatchInfo.Position that used to be the position of a second character of a match.
  • Terminal: Added support for cursor color changing and blinking.
  • Terminal: Added workaround for clipboard-related errors.
  • Terminal: Add TerminalColor static class that defined color constants.
  • Terminal: Added TerminalControl.ScreenResize event that is raised when the terminal screen size has been changed.
  • SSH: Added support for message authentication algorithms based on SHA-2 on .NET Compact Framework (when supported natively).
  • SSH: Fixed NullReferenceException thrown by some SshSession properties (such as IsConnected) when not connected.
  • SSH: SHA-2 is now the preferred message authentication algorithm.
  • SSH: Added support for larger SSH packets.
  • SSL: Unified status handling in ValidatingCertificate events and ICertificateVerifier interface.
  • SSL: Enhanced TLS/SSL version mismatch handling.
  • Cryptography: Fixed final empty block handling in Twofish/Blowfish/ArcTwo TransformFinalBlock with PKCS #7 padding.
  • Cryptography: SSH and TLS/SSL now use Java-based Diffie-Hellman objects on Xamarin.Android platform to speed up negotiation.
  • Core: Fixed end-of-line sequences in LogWriterBase, optimized FileLogWriter.
  • Core: Added workaround for broken ASN.1 time values with the second part of "60".

2015-04-15 Version 2015 R3.1 #
(build number 5584)

Maintenance release

This release disables "arcfour" cipher in SSH client core. Unless you are running FTP, IMAP, POP3 or SMTP over an SSH channel, there is no need to upgrade.

Complete list of changes of version 2015 R3.1

  • SSH: Disabled legacy "arcfour" SSH cipher by default.
  • SSH: Fixed a bug that caused an algorithm list set by Settings.SshParameters.SetEncryptionAlgorithms to be ignored in FIPS-compliant mode.

2015-04-08 Version 2015 R3 #
(build number 5577)

Maintenance release

This update brings several enhancements and bugfixes.

Complete list of changes of version 2015 R3

  • All: Fixed Version property of Ftp, Imap, Pop3, Scp, Sftp, Smtp and Ssh classes to return a proper version number. Changed Ftp.Version to a static propery to match the other objects.
  • Terminal: ScriptEvent.Duration makes it possible to limit the amount of time to wait for a response.
  • SSH: Enhanced some authentication error messages.
  • SSL: Disabled ciphers based on RC4 to prevend Bar Mitzvah attack on TLS/SSL.
  • Cryptography: Enhanced weak signature algorithm detection during certificate validation on Xamarin.iOS.
  • Core: Connect methods no longer require FileIOPermission (used to determine the assembly version for a log).

2015-03-17 Version 2015 R2 #
(build number 5555)

Maintenance release

This update brings several enhancements and bugfixes.

Complete list of changes of version 2015 R2

  • Terminal: Fixed Scripting.DetectPrompt logging at Verbose level.
  • Terminal: Ssh.Login method can now be called again when authentication fails.
  • SSL: Added support for TLS 1.2.
  • SSL: Added support for AES ciphers with SHA-256 checksums.
  • SSL: Disabled legacy 'exportable' ciphers (by default) to prevent FREAK security exploit.
  • Cryptography: Added support for SSLeay private keys with AES-256-CBC encryption.
  • Cryptography: Fixed broken HashSize property in SHA-2 CSP on .NET Compact Framework.

2015-02-02 Version 2015 R1 #
(build number 5512)

Support for Xamarin Unified API

Added support for the new Unified API. This includes unified 32-bit and 64-bit platform support and makes it simple to share code between iOS and Mac.

Complete list of changes of version 2015 R1

  • All: Added support for Xamarin.iOS unified API.
  • Terminal: Unified the treatment of TerminalOptions argument in StartVirtualTerminal and StartScripting methods.
  • Terminal: Enhanced TerminalScreen.GetRegionText method to work with history buffer as well; added ITerminal.HistoryLength property.

2014-12-18 Version 2014 R3 #
(build number 5466)

UI-less terminal for Xamarin.Android, Xamarin.iOS and .NET Compact Framework

Terminal goes mobile. It's now possible to use UI-less terminal classes on iOS, Android and .NET Compact Framework. This includes VirtualTerminal, rich scripting API, remote exec, terminal emulation and other features.

Serial port connection support in Terminal Emulation

Terminal emulation features a new API for connecting to devices via serial RS-232 cable.

Complete list of changes of version 2014 R3

  • All: Added more overloads to asynchronous Connect and Login methods.
  • All: Removed legacy Connect methods and enumerations from Xamarin.iOS and Xamarin.Android version (should never have been there).
  • Telnet: Added serial port (RS-232) support.
  • Telnet: Removed Telnet.StartScripting(string command, ...) method (should never have been there).
  • Terminal: Headless terminal emulation now supported on Xamarin.Android, Xamarin.iOS and .NET Compact Framework.
  • Terminal: Added support for custom screen renderers (IScreen interface).
  • Terminal: Added FunctionKey.Tab.
  • Terminal: Scripting.DetectPrompt() supports encapsulated prompt in parenthesis.
  • Terminal: Fixed a bug in Ssh.StartVirtualTerminal method that can cause a NullReferenceException or invalid initialization of screen resolution.
  • Terminal: Terminal in rare cases rendered only first column of the response.
  • Terminal: Scripting.DetectPrompt() supports /nPrompt in response to ENTER.
  • Terminal: In rare cases cursor had not been rendered.
  • Terminal: Added "round arc box" characters support - rendered as "rectangular arc box" characters.
  • Terminal: Scripting reading methods does not throw an exception when connection is closed. It is reported as a valid state.
  • Terminal: Fixed unwanted sharing of one TerminalPalette instance between two or more TerminalControl controls.
  • SSH: Added workaround for wrong SSH_MSG_USERAUTH_PK_OK packet in Cisco SSH.
  • SSL: TLS 1.1 is now used by default in TLS/SSL-enabled components. Legacy SSL 3.0 support is disabled by default.
  • SSL: Added experimental support for AES and Twofish based anonymous ciphers.
  • Cryptography: Fixed SymmetricKeyAlgorithm.Padding for non-CBC modes.
  • Cryptography: Added support for base-64 encoded P7B certificate chains.
  • Cryptography: Changed padding of parameters exported by DSAManaged.ExportParameters to match DSACryptoServiceProvider.
  • Cryptography: Added AsymmetricKeyAlgorithm.PublicOnly property.
  • Cryptography: Added workaround for non-working HMACSHA256/384/512 on some FIPS-only systems.
  • Cryptography: Added CertificateExtension.EnhancedKeyUsage method Useful when constructing certificate requests using CertificateRequest object.
  • Cryptography: Fixed DiffieHellmanManaged.KeySize that sometimes reported shorter bit lengths.
  • Cryptography: Several new AsymmetricKeyAlgorithm-based methods added to Certificate and CertificationRequest.
  • Core: Added LocalItem.Attributes property.
  • Core: PKCS #12 key loading routines changed to not persist keys in Windows key storage by default.
  • Core: Added ConsoleLogWriter, a console-based log writer class.

2014-07-03 Version 2014 R2 #
(build number 5298)

New scripting API

Powerful new scripting API makes it much easier to control remote terminals programmatically.

Terminal emulation performance enhancements

The updated TerminalControl is faster and much more responsive.

Complete list of changes of version 2014 R2

  • All: Eliminated "Unknown heap type" warnings in Mono.
  • Terminal: Added powerful new scripting API.
  • Terminal: Clearing the screen moves its current content to history buffer.
  • Terminal: Added TerminalOptions.RemoteCommand to make it possible to launch a command instead of shell.
  • Terminal: Substantial performance enhancements in TerminalControl.
  • Terminal: Enhanced handling of strange cursor enable mode command.
  • Networking: Enhanced logging of failed certificate validation errors.
  • Proxy: Fixed ProxySocket's Connect method behavior with disabled timeout.
  • SSL: Enhanced TlsVersion and TlsCipherSuite parameters checking.
  • SSL: Fixed alert names in TlsException messages.
  • Cryptography: Added Load, Save and Generate methods to PrivateKeyInfo and PublicKeyInfo classes.
  • Cryptography: Enhanced CertificationRequest class to support request generating in addition to parsing.
  • Cryptography: Fixed behavior with disabled UseFipsAlgorithmOnly on FIPS-only systems.

2014-02-26 Version 2014 R1 #
(build number 5171)

Maintenance release

This update brings several improvements, workarounds and bugfixes.

Complete list of changes of version 2014 R1

  • All: Various small low-level optimizations.
  • Terminal: Enhanced line characters rendering.
  • Terminal: Added support for word/line selection to block selection mode.
  • Terminal: Lines with a single character at position 0 are now properly added to history buffer.
  • Terminal: Enhanced history buffer behavior when resizing.
  • Terminal: Fixed a bug that caused a selection to remain visible after the window content has scrolled and a new selection was made.
  • Terminal: Optimizations in escape sequence decoder code.
  • Networking: Added static NetworkSession.DefaultLogWriter property to make it easily possible to set a shared log writer for all Ftp/Sftp/Imap/Smtp/Pop3/Scp/Ssh/SshSession objects.
  • Proxy: Enhanced logging capabilities of ProxySocket class (Socket4/Socks5 proxies).
  • SSH: Added support for SHA-2 (SHA-256 and SHA-512) message authentication codes.
  • SSH: Enhanced CTR mode workaround for OpenSSH 4.x.
  • SSH: Fixed missing MAC algorithm ID in SshCipher.ToString().
  • SSH: Standard form of SSH_MSG_KEX_DH_GEX_REQUEST packets is used with recent OpenSSH servers instead of its legacy form.
  • SSL: Added new Certificate-based CertificateRequestHandler.CreateRequestHandler overloads.
  • Cryptography: Fixed a bug in MD5SHA1 signature validation on .NET Compact Framework.
  • Cryptography: Fixed AES CSP availability detection in FIPS-compliant mode.
  • Cryptography: Fixed sorting of PKCS #7 signature attributes.
  • Cryptography: Added support for AES-128-CBC SSLeay private keys.
  • Cryptography: Added workaround for certificates and keys in Base64-encoded format ending with a zero octet.
  • Core: Assemblies made more obfuscator-friendly.
  • Core: Fixed null value comparisons in FileSystemItemComparer.

2013-12-02 Version 2013 R3 #
(build number 5085)

Support for Visual Studio 2013

All Rebex components now ship with full support for Microsoft Visual Studio 2013. Older Visual Studio versions (2005 and higher) and .NET Framework versions (2.0 and higher) are still supported as well.

Enhanced text selection support

TerminalControl got several new features - PuTTY-style doubleclick&drag and triple-click&drag selection support, and also the ability to extend a selection by holding the shift key while clicking.

Complete list of changes of version 2013 R3

  • All: Xamarin.iOS and Xamarin.Android officially supported in all components except Rebex Terminal Emulation.
  • All: .NET Compact Framework 3.9 officially supported.
  • All: Visual Studio 2013 officially supported.
  • SSH Shell: Fixed a bug in Ssh.GetConnectionState() method causing NullReferenceException to be thrown in rare scenario.
  • Telnet: Fixed TelnetShellChannel.Poll which used to return NoData too early in some cases.
  • Terminal: Added workaround for delayed key events after switching windows.
  • Terminal: Added TerminalFontInfo object to make font positioning of TerminalFont more configurable.
  • Terminal: Added PuTTY-style doubleclick&drag and tripleclick&drag support.
  • Terminal: Added support for extending selection by holding the shift key.
  • Terminal: Added TerminalControl.DataProcessingMode property to replace TerminaProcessingMode.
  • Terminal: Improved prompt detection in Shell object.
  • Terminal: Added workarounds for badly-positioned fonts (small Consolas and Lucida Console).
  • Terminal: Added Copying and Pasting events to TerminalControl.
  • Terminal: Block copy to clipboard no longer adds a newline sequence.
  • Terminal: Compatibility enhancements in Shell.SendCommand method's long command handling.
  • Terminal: Better handling of invalid UTF-8 characters when receiving.
  • Terminal: Added support for server requests for CP437 charset usage.
  • Terminal: Enhanced session recording (stores information about current charset).
  • Terminal: Support for shells which send backspace (\b) characters in command echo added to Shell class.
  • Terminal: Empty lines are excluded from prompt-matching in Shell class.
  • Terminal: Escape sequences now removed before prompt-matching.
  • Terminal: VT52 mode is only detected from TerminalName if TerminalType is set to Ansi.
  • Terminal: Enhanced VT100 emulation and added support for custom TAB stops, DECOM and DECALN.
  • Terminal: Optimized data sending methods to better handle function keys on Pick terminals.
  • Terminal: Enhanced double click (word) selection. Non-letter and non-digit characters except '_', '-', '.' and '/' are no longer treated as word part.
  • Networking: On Windows 8 and 8.1, larger TCP receive buffer size is used by default. The default value caused low transfer speeds in many cases with FTP and SFTP.
  • Networking: Added IsAuthenticated and IsConnected properties to NetworkSession (Ftp, Sftp, Scp, Imap, Smtp, Pop3, Ssh and SshSession objects).
  • Proxy: Added support for digest authentication to HTTP CONNECT proxies.
  • Proxy: Fixed ProxySocket.BeginSend and BeginReceived methods which used to fail in some scenarios.
  • SSH: Added support for additional formats to SshPublicKey/SshPrivateKey object's SavePublicKey method and SshPublicKey constructor.
  • SSH: Enhanced error checking to report a more meaningful error instead of "Invalid decoder state" in case of some connection failures.
  • SSH: Enhanced GSSAPI/Kerberos support to be compatible with OpenSSH.
  • SSH: Added Kerberos ticket delegation support.
  • SSH: Added GSSAPI/Kerberos support to .NET CF version of SSH core.
  • Cryptography: Changed Certificate.FindCertificates method not to include subordinate CAs in the search by default.
  • Cryptography: Fixed CertificateStore.Exists on non-Windows platforms.
  • Cryptography: Added workaround for opening certificate stores in .NET CF that don't exist yet.
  • Cryptography: Added workaround for problem with DSA certificate in .PFX importing code on Windows Embedded Compact 2013.
  • Cryptography: Added .NET CF support for Certificate.Associate(privateKey, permanentBind)
  • Cryptography: Added Certificate.GetAuthorityKeyIdentifier() method.
  • Cryptography: Changed SignerInfo and SignerInfo objects to use NULL parameters for hash algorithms (in order to match RSACryptoServiceProvider behavior).
  • Core: Added FileLogWriter.Path to replace FileLogWriter.Filename.
  • Core: Added LocalItem.ComputeCrc32() method.
  • Core: Signed and encrypted message parsing made more compatible with broken messages.

2013-08-20 Version 2013 R2 #
(build number 4981)

Terminal Emulation component supports both Telnet and SSH transport layers

Our two terminal emulation components Rebex Telnet and Rebex SSH Shell were merged into a single product called Rebex Terminal Emulation. The API has stayed the same. All users with active support contract were upgraded for free.

Complete list of changes of version 2013 R2

  • Terminal: Fixed screen clearing with non-default background color.
  • Terminal: Fixed a bug in TerminalFont.Dispose that used to dispose static brushes.
  • Terminal: Added Shell.LastMatchedPrompt property.
  • Networking: Added support for IPv6 hostnames with zone IDs.
  • SSL: Added workaround for MS FTP's TLS 1.1 bug in close_notify handling.

2013-07-29 Version 2013 R1 #
(build number 4959)

Official support for Mono

All Rebex components now officially support Mono, an open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET. The same assemblies that work on Windows now work on Mono in Linux or Apple's OS X as well.

Terminal emulation enhancements

TerminalControl got better Ctrl+key, Alt+key and Ctrl+Alt+key support. It now also works with both singlebyte and multibyte charsets (previously, the only supported multibyte charset was UTF-8). We increased the maximum history length and enhanced copy-to-clipboard code to omit end-of-line sequences in wrapped text.

Complete list of changes of version 2013 R1

  • All: Added support for Mono.
  • All: Fixed finalizers that used to call state-changed events in some cases.
  • SSH Shell: Shell object returned by Ssh.StartShell is initialized with Ssh.Encoding property.
  • SSH Shell: Added missing ProxySocketException handling to Ssh.Connect().
  • Telnet: Added TelnetTerminalControl.ConnectAsync().
  • Terminal: Custom-drawn underlines now used for small fonts.
  • Terminal: Fixed behavior of the SelectGraphicRendition1 option.
  • Terminal: Added support for wrapped text selection copying.
  • Terminal: Added support for various Ctrl+key, Alt+key and Ctrl+Alt+key combinations.
  • Terminal: Added FunctionKey.Enter.
  • Terminal: Added TerminalControl.Scroll(int rows) method.
  • Terminal: Better exception handling in TerminalControl.Send.
  • Terminal: Added TerminalControl.BindAsync method and fixed argument check in TerminalControl.Bind method.
  • Terminal: Enhanced argument checks in VirtualTerminal.Expect method.
  • Terminal: Fixed TerminalControl.SetSelection method to ensure all selections are within the screen (and history) boundaries.
  • Terminal: Fixed key handling for Portuguese keyboard (Brazil ABNT2).
  • Terminal: TerminalControl.HistoryMaxLength increased to 99999.
  • Terminal: Added support for all multibyte charsets.
  • Terminal: Missing end-of-line sequence added to TerminalScreen.WriteLine(object) method.
  • Terminal: Added TerminalScreen.MoveBufferArea() method.
  • Terminal: Support for MikroTik added to Shell object.
  • Terminal: Palette and color scheme changes clear brush cache.
  • Proxy: Added support for HTTP CONNECT proxy communication logging.
  • SSH: Fixed SshException.Data["ProtocolCode"] and .Data["ProtocolMessage"] values.
  • SSH: Added verbose logging of raw data during welcome message exchange.
  • SSL: SslInsertEmptyFragments property added to SslSettings.
  • SSL: Fixed null TlsParameters.Certificate handling in server-side TlsSocket.
  • Cryptography: Added support for anyExtendedKeyUsage attribute (in X509 certificates).
  • Cryptography: Added DiffieHellmanCryptoServiceProvider class.
  • Cryptography: Added PrivateKeyFormat.RawPkcs8 format for PrivateKeyInfo.Save and PrivateKeyInfo.Encode methods.
  • Cryptography: RSAManaged.VerifyHash returns false on error.
  • Cryptography: Fixed ArcTwoTransform to treat EffectiveKeySize of 0 as "current KeySize".
  • Cryptography: HMAC fixed to use block length of 128 for algorithms with hashes larger than 256 bits.
  • Cryptography: Fixed certificate verification to better handle server certificate with missing common name (used to throw NullReferenceException).
  • Cryptography: Fixed handle leak in CertificateStore constructor.
  • Core: Enhanced workaround for Stream.Seek on .NET CF.
  • Core: FileLogWriter enhanced to log assembly version when opening log file.
  • Core: Added missing PublicKeyInfo() constructor.
  • Core: Added FileSet.ContainingDirectoriesIncluded option.
  • Core: Added workaround for instances of FileStream that return "[Unknown]" name.
  • Core: EncodingTools support IBM437 charset on all platforms.
  • Core: Added CertificateFindOptions.None.
  • Core: Added FileSystemItemCollection.UsePath property.

2012-11-12 Version 2012 R3 #
(build number 4700)

Official support for Visual Studio 2012

All Rebex components now ship with full support for Microsoft Visual Studio 2012. Samples and tutorials were updated for a new project file format. Older Visual Studio and .NET Framework versions are still supported too.

Events now using SynchronizationContext

Previously, events raised by asynchronous methods were running in a background thread, making them hard to use in GUI applications. Now, events are raised using the SynchronizationContext captured when the asynchronous method was started, which basically means the events will run on application's GUI thread, making it possible to update application's controls directly from the event code.

Complete list of changes of version 2012 R3

  • All: Added .NET 4.x-style task-based asynchronous methods to objects previously using .NET 1.x-style Begin/End asynchronous pattern.
  • All: Asynchronous method events are raised using the current synchronization context for the asynchronous operation.
  • All: Added options to force the old-style event behavior (not using the current synchronization context).
  • All: Added Rebex.Legacy namespace to .NET 4.x builds to allow compiling code that uses old-style asynchronous methods.
  • All: Added official support for Visual Studio 2012.
  • Terminal: Added VT52 terminal emulation support.
  • Terminal: Added LightBackColor value into BlinkingText enum.
  • Terminal: Added support for 'CSI 1 m' sequence.
  • Terminal: Fixed a bug that occasionally caused an exception to be thrown when scrolling using the scrollbar.
  • Terminal: Fixed socket error handling in client-side keyboard and mouse methods.
  • Terminal: Enhanced TerminalControl responsiveness under heavy load.
  • Terminal: Compatibility enhancement for the Shell class in ShellMode.Prompt.
  • Terminal: Added support for 'insertion replacement mode' ('CSI 4 h')
  • Networking: NetworkSessionException is now the base class for all network protocol exceptions.
  • Networking: Task-based asynchronous methods added to IFtp interface.
  • Networking: Removed several Socket.Available calls, resulting in higher speed and Windows Azure compatibility.
  • Networking: Events Traversing, TransferProgressChanged, DeleteProgressChanged and ProblemDetected added into IFtp to make it possible to get notified about significant actions and to be able to react to a problem in multi-file operations.
  • SSH: Better error message for unsuccessful keyboard-interactive fallback workaround.
  • SSH: Enhanced "Invalid decoder state" error reporting.
  • SSH: Added support for diffie-hellman-group-exchange-sha256 key exchange algorithm.
  • SSH: Added SshPublicKey class, SshSession.ServerKey property and FingerprintCheck.ServerKey property (to make it possible to determine server host key in addition to fingerprint).
  • SSL: Fixed a bug in server-side TLS/SSL that caused it to fail when session resuming was enabled.
  • SSL: Fixed TlsException serialization that failed for some errors.
  • SSL: Fixed a bug that caused problems with TLS/SSL in FIPS-only mode.
  • Cryptography: Fixed a bug in TransformFinalBlock method of Rebex.Security.Cryptography ciphers that caused interoperability issues with CryptoStream.
  • Cryptography: Fixed PKCS#7 padding check in built-in ciphers.
  • Cryptography: Added EncodingTools class that adds support for all the charsets needed on all platforms.
  • Cryptography: Added auto-detection of a bug in unpatched .NET 3.5's AesCryptoServiceProvider object.
  • Cryptography: Implicit ObjectIdentifier(string) constructor added.
  • Cryptography: Fixed CryptoHelper.CreateAlgorithm to return CSP version of SHA-2 hash algorithms when available.
  • Cryptography: Fixed CertificateFinder property behavior to keep old certificates if no certificates are found by the new finder.
  • Cryptography: Server certificate verification routine now allows certificates with '*.domain.net' names to be used for 'domain.net' in addition to '*.domain.net'.
  • Cryptography: Fixed a bug in private key decryption routine which failed with keys encrypted with PKCS #12 key derivation algorithm.
  • Core: Fixed P/Invokes in NTLM/Kerberos code.
  • Core: AddRange method added to file item collections.
  • Core: FIPS 140-2 compliant mode enhancements.
  • Core: Fixed certificate validation issue on Windows XP and Windows Server 2003.
  • Core: Added Certificate.Thumbprint property.
  • Core: Fixed a bug in certificate chain building routine that caused it to ignore additional stores in some cases.

2012-06-11 Version 2012 R2 #
(build number 4546)

Client certificate authentication in SFTP & SSH

Although SFTP/SSH usually use password-based or public-key-based authentication, some servers support X509 client certificate authentication as well. Unfortunately, not all servers support this, and those which do use a variety of different protocol extensions to achieve it. In this release, we have added client certificate authentication compatible with VanDyke VShell server. If it doesn't work with your server, please let us know.

Complete list of changes of version 2012 R2

  • SSH Shell: Shell.ReadAll() modified to make it possible to return the welcome message in SshShell.Prompt mode as well (just like in Rebex Telnet).
  • Terminal: Better error recovery on invalid escape sequences.
  • Terminal: SuppressAltAsMenuKey and SuppressShortcutKeys properties added to the TerminalControl to specify how to handle input keystrokes.
  • Terminal: Added support for 'window title' and 'icon name' actions to ActionRequested events.
  • Terminal: Better Alt-Gr key handling.
  • Terminal: Added workaround for Clipboard errors.
  • Terminal: Fixed TerminalControl.SetScreenSize method (did not work with AutoAdjustTerminalSize set to false).
  • Networking: UseLargeBuffers option added into IFtpSettings.
  • SSH: Added SshPrivateKey(AsymmetricAlgorithm) constructor that makes it possible to initialize it from RSACryptoServiceProvider/DSACryptoServiceProvider (useful for SmartCard-based keys).
  • SSH: Fixed wrong handling of large remote SSH channel window sizes (used by mod_sftp server).
  • SSH: Client certificate authentication added (compatible with VanDyke VShell server).
  • SSH: ZLIB support announced even when not preferred (without that, we were unable to connect to servers that refuse uncompressed sessions).
  • SSH: Fixed a bug that causes a misleading error to be reported on immediately-closed connections.
  • SSH: Added workaround for mod_sftp/0.9.7 which occasionally produces broken DSA signatures.
  • SSL: Fixed a misleading error message which was reported when certificate revocation status could not be checked.
  • SSL: When ProtocolVersion error occurs, data received prior to it is logged.
  • Cryptography: Fixed local/UTC time comparison in Certificate.IsTimeValid.
  • Cryptography: Added implicit conversion between Certificate object and X509Certificate/X509Certificate2 objects.
  • Cryptography: Enhanced compatibility with Mono on non-Windows platforms - Certificate validation now works!
  • Cryptography: Support for saving .PFX/.P12 files added to Certificate.Save method.
  • Cryptography: Added new overloads of Certificate.Associate that make it possible to permanently bind the private key to the certificate.
  • Cryptography: Added Certificate.FriendlyName property.
  • Cryptography: Fixed Certificate.SignHash method which used to fail on .NET 2.0 when an associated key was used for MD5SHA1 signature generation.
  • Cryptography: Fixed MD5Managed.HashSize property which used to return 0.
  • Cryptography: Certificate.HasPrivateKey code in .NET CF version changed to behave identically to .NET version.
  • Core: Added FileSet.Flatten option (makes it possible to ignore source directory structure and copy all files into single target directory).
  • Core: Enhanced error reporting of file-path-based methods.
  • Core: Added LocalItem and LocalItemCollection classes (used by FileSet.GetLocalItems method).

2012-03-01 Version 2012 R1 #
(build number 4444)

Components DLLs have been renamed

We found out that the DLL naming scheme we decided to use back in 2003 was no longer sustainable and decided to change it. Instead of Rebex.Net.Ssh.dll, Rebex.Net.SecureSocket.dll, Rebex.Net.ProxySocket.dll and Rebex.Security.dll, we now have Rebex.Common.dll and Rebex.Networking.dll. Most of the other DLLs were renamed as well during the process (Rebex.Net.Ftp.dll became Rebex.Ftp.dll, for example). We are sorry for any inconvenience this may have caused, but an alternative solution - introduction of a new DLL for shared functionality - would not be hassle-free either. Fortunately, in order to upgrade to the new version, most customers will only need to remove references to the old DLLs and add references to the new ones because the API is still backward-compatible.

Faster Blowfish and Twofish algorithms for Rebex SFTP and Rebex SSH Shell

Bruce Schneier's Blowfish and Twofish symmetric encryption algorithms are a popular choice for SSH communication encryption. Although we have been already supporting both for a few years, we developed a new managed implementation that is substantially faster than the old one.

Complete list of changes of version 2012 R1

  • All: SecurityRuleSet.Level2 is used for .NET 4.0 binaries.
  • All: Added a Stream.Flush() call after each Stream.Seek() or Stream.Position call in .NET Compact Framework (workaround for .NET CF FileStream bug).
  • SSH Shell: Changing Ssh's LogWriter now changes the underlying SshSession's LogWriter as well.
  • Telnet: Setting Telnet.LogWriter applies to existing TelnetChannel instances as well.
  • Telnet: Better error handling in TelnetTerminalControl.Connect method.
  • Terminal: Added TerminalControl.MouseSelectionCopiesToClipboard property.
  • Terminal: Added TerminalControl.SelectionChanged event.
  • Terminal: TerminalControl now works in Linux under Mono.
  • Terminal: Added TerminalCell.Blink property.
  • Terminal: Oversized scroll region escape sequences are now clipped instead of ignored.
  • Terminal: Fixed processing of CSI escape sequences with Extended Leading Intermediate.
  • Terminal: Added FunctionKeys.Escape and FunctionKeys.Backspace to simplify sending these keys using TerminalControl's or VirtualTerminal's SendToServer method.
  • Terminal: Added Disconnected event to VirtualTerminal
  • Terminal: ProcessingError event is correctly called when an error occured while in automatic processing mode.
  • Networking: Socket.NoDelay is used by default in non-CF version of Rebex components.
  • SSH: Fixed error handling in SshSession.OpenTcpIpTunnel method that caused troubles when multiple channels were active at the same time.
  • SSH: SshChannel no longer attempts to adjust window size after the channel has been closed.
  • SSL: Fixed non-working TlsSocket.BeginSend and BeginReceive methods.
  • Cryptography: Faster Blowfish and Twofish algorithms.
  • Cryptography: SubjectPublicKeyInfo.Load method now supports binary keys.
  • Cryptography: Removed lots of CryptoApi dependencies from Certificate code.
  • Cryptography: 4096-bit DSA keys (used by some SSH servers) are no longer rejected.
  • Cryptography: Diffie-Hellman and DSA algorithms fall back to managed ModPow calculation on .NET CF with missing "Enhanced DSA and Diffie-Hellman" CSPs.
  • Cryptography: Added Certificate.Associate(PrivateKeyInfo) method.
  • Cryptography: Certificates associated with a private key using Associate method now support MD5SHA1 hash algorithm and suitable for TLS/SSL client certificate authentication.
  • Core: Fixed a bug in TraceLogWriter that caused an additional newline to be written at the end of each message.
  • Core: Added FileSystemItem and FileSystemItemCollection classes.
  • Core: Better readability in Verbose-level logs.
  • Core: Thread ID added to all log messages.

2011-03-09 Version 1.0.4086.0 #
(build number 4086)

Complete list of changes of version 1.0.4086.0

  • Terminal: HistoryMaxLength property added to TerminalControl.
  • Terminal: Added regular-expression-based VirtualTerminal.Expect method.
  • Terminal: Prompt doesn't have to be set when a question prompt is specified in a ReadLine/ReadAll call.
  • Terminal: Shell class in ShellMode.Prompt works with *BSD now.
  • SSH Core: Added workaround for old SSH servers that miscalculate HMAC-SHA1 keys.
  • SSH Core: Added SshParameters.AuthenticationMethods to make it possible to only enable desired authentication methods.
  • SSH Core: SendEof method added to SshChannel to make it possible to achieve plink-like functionality.
  • SSH Core: Fixed a bug in SSH channel window size adjustment code which could cause a timeout on servers which send oversized packets.
  • SSH Core: Fixed a bug that prevented SSH key renegotiation requests from being processed, resulting in a timeout.
  • SSH Core: Abort flag checking messages removed from Debug log.

2011-02-11 Version 1.0.4060.0 #
(build number 4060)

Complete list of changes of version 1.0.4060.0

  • Terminal: During Select Character Set control sequence, character set is immediately invoked into GL.
  • Terminal: Added support for Pick terminals.
  • Terminal: Added ActionRequested event to TerminalControl and VirtualTerminal objects to make it possible to handle action requests from the server.
  • Terminal: CursorText and CursorMouse properties added to TerminalControl object.
  • Terminal: Added terminal function keys support for HP-UX.
  • Terminal: BlinkingText option added into TerminalOptions.
  • ProxySocket: Added a new ILogWriter implementation that logs all messages to .NET's System.Diagnostics.Trace.
  • Cryptography: Added a new overload of SshPrivateKey.Save to make it possible to save keys in SSLEay/OpenSSH format (in addition to PuTTY .ppk and PKCS #8 formats).
  • Cryptography: Added CertificateChain.Save method to save the chain in .p7b format.
  • Cryptography: Fixed a bug in DistinguishedName object that caused the elements of string representation of DNs to be reversed.
  • Cryptography: Added CryptoHelper.ForceManagedAes flag as a workaround to .NET's leaking AesCryptoServiceProvider.
  • SSH Core: AuthenticationRequest event added to make it possible to deal with all kinds of "keyboard-interactive" authentication prompts.
  • SSH Core: Fixed a possible race condition that might have occurred when using the same SshSession instance from multiple threads.
  • SSH Core: Enhanced automated "keyboard-interactive" authentication to support more variants of password prompt.
  • SSH Core: Fixed a bug in ZLIB decompression routines.
  • SSH Core: SshSession.Encoding property added.
  • SSH Core: Added SshOptions.WaitForServerWelcomeMessage option.
  • SSH Core: Updated SFTP to detect, read and skip unexpected malformed packets which used to throw a "Message with invalid length xxx was received." exception when trying to login.

2010-07-20 Version 1.0.3854.0 #
(build number 3854)

Complete list of changes of version 1.0.3854.0

  • SSH Shell: Ssh class inherits from NetworkSession base class that implements some common properties.
  • Terminal: Added new SendToServer method overload to TerminalControl and VirtualTerminal that makes it possible to easily simulate function keys.
  • Terminal: New BreakSequence option added to TerminalOptions.
  • SSH Core: In FIPS-only mode, a CryptoAPI implementation of AES is used if available.
  • SSH Core: Added support for aes*-ctr and 3des-ctr ciphers.
  • SSH Core: SshSession class inherits from NetworkSession base class that implements some common properties.
  • SSH Core: SshChannel.ExtendedDataReceived event added to make it possible to receive extended data.

2010-05-20 Version 1.0.3793.0 #
(build number 3793)

Complete list of changes of version 1.0.3793.0

  • All: Packages for .NET 4.0 and Visual Studio 2010 now available.
  • SSH Shell: Added experimental support for CSH to Shell class.
  • SSH Shell: Added Ssh.Bind method to make it possible to bind the Ssh object to an existing SSH session.
  • Terminal: Fixed a bug that caused cursor to be redrawn incorrectly in some cases.
  • SSH Core: Added a workaround for a server that announces support for "password" authentication but requires "keyboard-interactive" instead.
  • SSH Core: Fixed a bug in ZLIB compression routines that caused compatibility problems with GlobalScape and BitVise servers when compression was enabled.
  • SSH Core: Fixed a bug that caused SSH session to hang if a broken (incomplete) SSH packet arrived (rare).

2010-03-11 Version 1.0.3723.0 #
(build number 3723)

Complete list of changes of version 1.0.3723.0

  • SSH Shell: Added Terminal.GetSelectedText method to make it possible to retrieve the currently selected text.
  • SSH Shell: Ssh.Login method now accepts empty usernames.
  • SSH Shell: SshTerminalControl.LogWriter property added to make logging easier.
  • Telnet: TelnetTerminalControl.LogWriter property added to make logging easier.
  • Telnet: Fixed a bug that caused Telnet.SetSocketFactory method not to work.
  • Terminal: Instances of Shell class returned from Ssh.StartShell i Prompt mode now refuse to work if the prompt was not set.
  • Terminal: SshShell instances returned by Ssh.StartCommand no longer stop on prompt-like text when ReadAll is called.
  • Terminal: Added TerminalPalette.Sco palette.
  • Terminal: Changed TerminalControl.Save and VirtualTerminal.Save in ANSI mode to not write the final <CR><LF> sequence.
  • Terminal: Fixed a bug in "CSI 0 J" escape sequence interpreter that caused the whole line to be cleared (instead of only a part of it).
  • Terminal: TerminalOptions.PersistColorsOnSgr added to make it possible to specify whether "CSI 0 m" escape sequence (default rendition) whould reset colors as well.
  • Terminal: TerminalScreen.GetRegion and TerminalScreen.GetRegionText methods added to make it easily possible to retrieve a part of the screen content.
  • Terminal: Block selection mode added (accessible through TerminalControl.SelectionMode property or using the Ctrl key).
  • Terminal: Added TerminalControl.MousePasteEnabled to make it possible to disable automated paste on right mouse button click.
  • Terminal: Terminal emulator now supports CSI 10, CSI 11 and CSI 12 escape sequences.
  • Terminal: Added SendToserver(byte[]) method to TerminalControl and VirtualTerminal classes.
  • Terminal: Added experimental support for Wyse 60 terminals.
  • Terminal: Fixed a bug that occasionally caused InvalidOperationException to be thrown on disconnected channels.
  • Terminal: Added support for CFT and CBT escape sequences to terminal emulator.
  • Terminal: New overload of TerminalScreen.Clear method added to make it possible to clear the history buffer as well.
  • Terminal: Redefined background color in custom color scheme mode is now applied to all parts of the terminal screen.
  • ProxySocket: The underscore character is now allowed in hostnames (this is non-standard, but used by Windows).
  • ProxySocket: FileLogWriter is capable of logging into a single file from multiple applications now.
  • ProxySocket: ProxySocket.Send behavior changed to always send all the data or fail.
  • Cryptography: Added Certificate.LoadDerWithKey method to make it possible to easily load certificates with private keys in external file (Unix-style).
  • Cryptography: Support for PKCS #7 EnvelopedData encrypted using RC2 with effective key length not equal to key data length.
  • Cryptography: Fixed a bug in EnvelopedData class that cause a NullReferenceException to be raised when unsupported encryption algorithm is encoutered.
  • Cryptography: Internal ModPow method optimized.
  • Cryptography: Key generation support removed from RSAManaged a DSAManaged. No part of any of our components ever used it at it was prohibitively slow anyway.
  • SSH Core: Added SshFingerprint.Compute and SshFingerprint.FromBase64String methods to make it possible to easily calculate a fingerprint of the supplied public key.
  • SSH Core: ZLIB compression is now switched off by default (caused problems with some servers).
  • SSH Core: Client KEX_INIT packet is sent without waiting for the server side one (this is the only proper behavior).
  • SSH Core: Added SshSession.KeepAlive method to make it possible to periodically "ping" the SSH connection to keep it working and detect failures.

2009-10-27 Version 1.0.3588.0 #
(build number 3588)

Complete list of changes of version 1.0.3588.0

  • SSH Shell: Added workaround for SSH packets 101 that some SSH servers were observed to use.
  • Terminal: Fixed a bug that caused Disconnect event not to be raised when some types of connection failures occured.
  • Terminal: TerminalControl now correctly resizes itself when hosted in WPF.
  • ProxySocket: Proxy object now has Encoding property that makes it possible to specify character set to be used for parsing server responses.
  • ProxySocket: ProxySocketException.ErrorCode property now returns HTTP and Socket4/Socks5 error codes when available.
  • ProxySocket: SspiAuthentication and GssApiProvider classes added that provide GSSAPI/SSPI functionality.
  • Cryptography: Certificate's CRL distribution point list can be accessed using GetCrlDistributionPoints method.
  • SSH Core: Fixed a bug in ArcFour cipher implementation that made it unusable.
  • SSH Core: Fixed a bug that caused an SSH welcome message to be parsed incorrectly when split accross multiple packets.
  • SSH Core: Added support for ZLIB transfer compression.

2009-07-15 Version 1.0.3484.0 #
(build number 3484)

Complete list of changes of version 1.0.3484.0

  • SSH Core: Fixed a bug in GSSAPI authentication that caused it to work improperly in 32bit .NET Framework.

2009-07-10 Version 1.0.3479.0 #
(build number 3479)

Complete list of changes of version 1.0.3479.0

  • SSH Shell: Added support for break request defined by RFC 4335.
  • SSH Shell: Added Shell.GetExitCode method to make it possible to retrieve process exit code (if available).
  • Terminal: Fixed bad exception message in TerminalControl.Bind method.
  • Terminal: TerminalOptions serialization fixed to work correctly with serialized data from older releases.
  • Terminal: Fixed a bug in the logging code for SshChannel.SetTerminalSize method.
  • Cryptography: .PFX/P12 private key file loading support for Windows Mobile 5 and newer.
  • Cryptography: Added support for signatures based on SHA-2 (SHA-256, SHA-384 and SHA-512).
  • Cryptography: If .NET 3.5 is available, a new and much faster AES implementation is used instead of RijndaelManaged.
  • Cryptography: Behavior of certificate finders in CMS/PKCS #7 was enhanced - embedded certificates are always searched now.
  • SSH Core: Support for GSSAPI authentication (gssapi-with-mic) added. Kerberos (not on .NET CF) and NTLM mechanisms are supported. MS SSPI is used as an underlying authentication provider.
  • SSH Core: SshFingerprint class extended to support multiple hash algorithms.
  • SSH Core: Added BannerReceived event that ca be used to receive banner messages sent by the server.
  • SSH Core: Added FingerprintCheck event as an alternative way to check server fingerprint.
  • SSH Core: Support for authentication using both username/password and public key at the same time made compatible with Maverick SSHD server.

2009-05-20 Version 1.0.3428.0 #
(build number 3428)

Complete list of changes of version 1.0.3428.0

  • Terminal: Poll method added into IShellChannel.
  • Terminal: Fixed a bug that caused the Enter key not to be echoed when local echo is on.
  • SSH Core: Added FIPS 140-2 compliant mode that is automatically enabled on systems where only compliant algorithms are allowed.
  • SSH Core: Added a new exception status - PasswordChangeRequired - that is used when a password change is required before authentication can be successfully completed.

2009-02-14 Version 1.0.3333.0 #
(build number 3333)

Complete list of changes of version 1.0.3333.0

  • SSH Shell: Shell.Close method added to make it possible to gracefully close an SSH shell session.
  • Terminal: Added a variant of Shell.SendCommand method that makes it possible to send 'invisible' data such as passwords.
  • Terminal: Prompt-matching in Shell class changed to make it possible to match beginning of a line.
  • ProxySocket: Fixed a bug in Socks4/Socks5 proxy code that made it impossible to use FTP in active mode with these proxies.
  • Cryptography: CertificateStore.FindCertificate overloads that accept DistinguishedName now search for certificates signed by intermediate CAs as well.
  • Cryptography: Enhanced treatment of empty passwords in the PFX loader.
  • Cryptography: Certificates with SubjectAlternativeName extension marked as critical are now treated as not having any e-mail address assigned to them if no e-mail address is found in the extension data.
  • Cryptography: Fixed a bug in DiffeHellmanManaged.ImportParameters method that made it impossible to import key with all parameters filled.
  • SSH Core: Banner message is now logged when using the LogWriter functionality.
  • SSH Core: Added workaround for badly-formed DSA signature produced by SSH Secure Shell 3.1.0 (and possibly other versions).
  • SSH Core: Added a workaround to the Compact Framework version for VanDyke VShell server that sends primes that are one bit longer than expected.