Rebex Total Pack
All Rebex .NET libraries in one package
Download 30-day free trial Buy from $1199Save 75% by buying bundle (Purchased individually: $4833)
Release notes for Rebex Total Pack
- Released
- October082024
7.0.9048 #
(build 9048 from 2024-10-08)
New Graph API features
Rebex Graph library now supports CreateFolder
and DeleteFolder
methods.
The new Graph.Settings.​MarkDownloadedMessageAsRead
option can be enabled
to mark downloaded messages as 'read'.
Maintenance release
This release bringes several enhancements and resolves some issues.
Detailed list of changes:
- SFTP: Added Sftp.Settings.IgnoreCloseErrors option.
- FTP: Improved compatibility with servers with broken 'MLST /' behavior.
- File Server: Added FileServer.​Settings.​SftpMaxSendQueueLength option to make it possible to limit the maximum length of SFTP outgoing packet queue.
- File Server: Fixed handling of zero columns/rows values in pty-req requests.
- File Server: Fixed sequence of SSH_MSG_NEWKEYS / SSH_MSG_EXT_INFO for CBC ciphers.
- SMTP: Fixed missing removal of 'Bcc' header with SendWithNoBuffer option in Smtp.Send(Stream input, ...) methods.
- Graph: Added CreateFolder and DeleteFolder methods.
- Graph: Added Settings.​MarkDownloadedMessageAsRead option.
- Terminal: Fixed wrong System.IO.Ports dependency in Rebex.Terminal.SerialPort package.
- SSH: Fixed less common variants of multi-factor authentication.
- SSH: Fixed SshSession.Authenticate(userName, password, privateKey) method that crashed when privateKey was null (since version 7.0).
- Cryptography: Added ValidationOptions.​DisableCertificateDownloads option (only supported on .NET 5 and higher).
- Cryptography: Fixed detection of support for ECDH with brainpool curves on iOS.
- Cryptography: Fixed padding issues in AsymmetricKeyAlgorithm.​GetKeyMaterialDeriver (did not affect Rebex libraries).
- Cryptography: Fixed wrong RSA public key format when saving private keys in new OpenSSH format.
- Cryptography: Improved handling of wrong (negative) serial numbers in X.509 certificates.
- WebSocket: Fixed WebSocketClient.​ValidatingCertificate event. Now it is raised in proper thread context.
- Released
- June252024
7.0.8943 #
(build 8943 from 2024-06-25)
New library: MS Graph API client
Rebex Graph is our new .NET library for accessing Microsoft 365 (Exchange Online) using Microsoft Graph API. It makes it possible to send, receive, list and search e-mail messages. Supports TLS 1.3/1.2 and S/MIME on all supported .NET platforms including .NET Framework 3.5 on Windows 7.
The new library is available as a standalone package, or as a part of Rebex Total Pack or Rebex Secure Mail.
Detailed list of changes:
- File Server: Fixed missing Disconnected event call if SSH session fails immediately.
- Mail: Added support for Sensitivity header when converting between EML and MSG.
- IMAP: ImapFolder.IsSelectable now respects \NonExistent attribute.
- Graph: First release of Rebex Graph library.
- Terminal: Fixed Scripting.ReadUntilPrompt() to trim prompt from response when "^" is used in prompt regex definition.
- ZIP: Fixed broken checksum calculation in ReadByte() of streams returned by ZipItem.Open() and ZipReader.GetStream() methods.
- TLS Core: Fixed certificate selection and curve selection in TLS 1.3.
- TLS Core: Fixed wrong TlsException.Status for some exceptions representing server-side alerts.
- TLS: Fixed too-strict signature scheme selection in server-side TLS 1.3.
- Cryptography: Added support for issuing certificates signed with Ed25519.
- Cryptography: Fixed calculation of subject key identifier in certificate issuer API.
- Cryptography: Fixed rare wrong final calculation of Poly1305 hash when temporary storage for remaining data is bigger than input block size.
- Cryptography: Using AES/GCM instead of AES/CBC for new OpenSSH key format encryption.
- Released
- April082024
7.0.8865 #
(build 8865 from 2024-04-08)
Maintenance release
This is a maintenance release that brings several enhancements and resolves some issues.
Detailed list of changes:
- SCP: Added workaround for SCP in Cisco SSH server that interprets target directory as file name.
- SCP: Fixed handling of paths starting with "~/".
- File System: Improved reporting of some I/O errors in virtual file systems.
- Mail: Added LinkedResource(fileName, name, mediaType) constructor and SetContentFromFile method.
- Mail: Fixed filename assignment in LinkedResource constructor and SetContent/SetContentFromFile methods.
- POP3: Added workaround for TM-POP3 Server which falsely announces APOP authentication support.
- SSH: SshPublicKey.LoadPublicKeys reads comments and does not fail on empty files.
- TLS Core: Added option to disable ClientHello padding. Added option to enable legacy SCSV mode.
- TLS Core: Fixed potential repeated clean-up of TLS 1.3 extensions that might cause strange exceptions in the following TLS connection.
- Cryptography: Added support for loading private keys in new OpenSSH key format encrypted using AES/GCM or ChaCha20/Poly1305.
- Released
- February192024
7.0.8816 #
(build 8816 from 2024-02-19)
SSH enhancements
Client-side SSH now supports a combination of password and keyboard-interactive authentication
and contains other improvements as well. For example, Session.Cipher.StrictKeyExchange
property on Sftp
or Ssh
objects can be used to determine whether
strict SSH key exchange (mitigating the 'Terrapin' weakness) has been used.
SSH tunneling fixes
We fixed an issue in SSH tunneling that could cause individual tunnels to get stuck after SSH renegotiation.
Improved FTP with TLS 1.3 interoperability
There is still no formal specification of how exactly TLS 1.3 is to be used with FTP, so different vendors took different paths. This version of Rebex FTP further improves compatibility with contemporary FTP servers with TLS 1.3 support.
Fixed uuencoded attachment name parsing
Uuencoded attachments with whitespaces or other strange characters in their are now parsed properly.
CMS (PKCS #8) enhancements
This release brings several improvements in the low-level PKCS #8 APIs.
R6.15 available as well
For customers who have not yet upgraded to version 7 of Rebex libraries, we published the R6.15 update with all the important fixes. Version R6.x will be supported until November 2024.
Detailed list of changes:
- SFTP: Added workaround for FileZilla Server Pro Enterprise which crashes its SSH session if it receives SFTP read request for 65493 bytes or more.
- FTP: Using strict session closure with TLS 1.3 data connections by default.
- File Server: Added logging of SSH ciphers supported by the client on mismatch.
- File Server: Fixed handling of client's SSH_MSG_EXT_INFO.
- File System: Added an instructional exception message when VFS node name contains prohibited characters.
- File System: Fixed unexpected exception propagation in directory creation.
- Mail: Fixed parsing of file names of UUEncoded attachments to properly handle whitespaces and other strange characters.
- MIME: Added a workaround for broken messages with unescaped slash in a MIME parameter.
- EWS: Added support for searching with AQS query string.
- SSH Shell: Fixed an issue in SSH tunneling that could cause tunnels to get stuck.
- SSH Shell: Fixed an issue that could cause a tunnel to stop processing data after an SSH renegotiation.
- Terminal: Fixed possible 'Object is currently in use elsewhere' error when multiple instances of TerminalControl are used.
- SSH: Added SshCipher.StrictKeyExchange and SshServerInfo.​SupportsStrictKeyExchange properties.
- SSH: Added SshPrivateKey.​CreateFrom(PrivateKeyInfo) method.
- SSH: Added support for a combination of password and keyboard-interactive authentication.
- SSH: Improved SSH session and channel lifecycle logging.
- SSH: Using lower local SSH channel numbers for better log readability.
- TLS Core: Fixed invalid TLS 1.3 behavior for rare Poll/Receive call sequence on TlsSocket.
- TLS Core: Fixed possible deadlock in Receive or Poll methods when additional incomplete packet is received after close_notify in TLS 1.2 or earlier.
- Cryptography: Added low-level API for loading/saving PrivateKeyInfo with byte[] passwords.
- Cryptography: Added ObjectIdentifier.Encode method.
- Cryptography: Added support for loading PKCS #8 private keys with legacy RC4 algorithm.
- Cryptography: Added UseDer property to SignedData and EnvelopedData classes.
- Cryptography: PrivateKeyInfo.Save now uses SHA-2 instead of SHA-1 in PKCS #8 format with PBKDF2 derivation.
- Cryptography: Reduced memory footprint of CNG API interop layer.
- Released
- December202023
7.0.8755 #
(build 8755 from 2023-12-20)
Strict key exchange in SSH
Rebex SSH library now implements OpenSSH's strict KEX
protocol extension that addresses
a weakness in the SSH protocol that makes some OpenSSH ciphers vulnerable to Terrapin attack
(CVE-2023-48795).
The attack is only possible when one of the following OpenSSH ciphers is in use:
chacha20-poly1305@openssh.com
hmac-sha2-256-etm@openssh.com
hmac-sha2-512-etm@openssh.com
Fortunately, in practice, the actual impact of the weakness on most SSH implementation seems to be negligible. No version of Rebex SSH relies on RFC 8308 extension negotiation mechanism yet, so this weakness can only be used by an attacker to disrupt authentication, causing the SSH session to fail.
Strict key exchange extension is enabled by default.
It can be disabled using Settings.SshParameters.UseStrictKeyExchange
option.
Please note that this extension only resolves the weakness if both the client and server SSH implementation support it.
When connecting a vulnerable client to an updated server (or vice versa), Terrapin attack is still possible.
Improved Native AOT compatibility
This update improves compatibility with .NET 8's Native AOT deployment model, which makes it possible to compile applications to native code ahead-of-time (AOT). Most common features should already work in Native AOT mode.
Detailed list of changes:
- All: Improved compatibility with Native AOT in .NET 8.
- SFTP: Added Sftp.ResolvePath(string path) method.
- SFTP: Fixed 'not authenticated' instead of 'not connected' error message.
- File Server: Added support for strict key exchange extension (thwarts the so-called 'Terrapin attack').
- File Server: Allowed dates outside 1970-2999 range in SFTP v4 (or higher).
- HTTP: Fixed handling of unexpected response stream closure when keep-alive expected.
- SSH: Added support for PKCS #8 format to SshPublicKey constructor.
- SSH: Added support for strict key exchange extension (thwarts the so-called 'Terrapin attack').
- Common: Optimized memory usage of miscellaneous methods.
- Released
- November152023
7.0.8720 #
(build 8720 from 2023-11-15)
Support for .NET 8!
This release adds a new set of binaries targeting .NET 8. It supports all .NET 8 platforms:
- Windows (x64, x86, ARM64)
- Linux (x64, ARM32, ARM64)
- macOS (x64)
- Android
- iOS/tvOS
Detailed list of changes:
- All: Added a new set of binaries targeting .NET 8.0.
- SFTP: Increased range for SftpAttributes dates and fixed the error message.
- FTP: Fixed handling of small port ranges in active mode.
- FTP: Improved FTP data channel PSK ticket usage with TLS 1.3.
- Mail: Added new MailMessage.CreateReply(...) overload with common ReplyAll behavior.
- EWS: Added EwsMessageInfo.IconType and EwsItemInfo.LastModifiedDate properties.
- HTTP: Added WebClient.QueryString property.
- SSH: Added SshParameters.ChannelCloseTimeout property.
- TLS: Fixed reload of available named groups in TlsServerSocket.
- TLS: For TLS 1.3, TlsClientSocket.Session returns a session represented by the last received PSK ticket.
- TLS: For TLS 1.3, TlsServerSocket.Session returns a session that represents the PSK ticket (if used).
- Cryptography: Fixed behavior of certificate issuer API when no CRLs have been specified.
- Released
- September132023
7.0.8657 #
(build 8657 from 2023-09-13)
Maintenance release
This is a maintenance release that fixes minor issues.
Detailed list of changes:
- MIME: Fixed ParsingHeader event which was called too late for Content-Type header.
- EWS: Added missing check for unsupported EwsItemFields.TextBody to GetMessageList/GetItemList methods.
- EWS: Fixed handling of EwsItemFields.Envelope to include the Message-ID.
- Time: Fixed occurence of unobserved tasks when timing out on recent versions of .NET.
- Networking: Fixed handling of IPv6 addresses in square brackets.
- SSH: Fixed behavior of Certificate flag in SshParameters.HostKeyAlgorithms.
- Released
- June292023
7.0.8581 #
(build 8581 from 2023-06-29)
First 7.0.* release!
This is the first release of 7.0.* series. It no longer uses the 'Rx.y' naming scheme, which was somewhat confusing.
The R6.x series will be supported until November 2024 and will receive fixes and security updates.
SSH agent support
OpenSSH Agent and PuTTY Pageant are now supported for SSH and SFTP client authentication.
Use the Login
method overload with SshAuthenticationAgent
argument.
Support for secp256k1 curve in SSH
Rebex SSH client and server libraries now support ECDH and ECDSA ciphers with secp256k1 curve (ecdh-sha2-1.3.132.0.10
and ecdsa-sha2-1.3.132.0.10
).
WebSocket compression support
WebSocket compression (RFC 7692) is now supported.
Support for 'PARTIAL' IMAP extension
This release adds support for paged searching and listing extension (RFC 9394). At the moment, this only seems to be supported by Yahoo servers, but hopefully other vendors will follow soon.
Support for Telnet Environment Option
Added support for Telnet Environment Option (RFC 1572).
Support for delayed message sending via EWS
Added support for delayed sending to Ews.SendMessage
method.
Support for Argon2, Blake2b and HKDF
Rebex Security supports several new algorithms:
- Argon2 class implements the Argon2 memory-hard password hash algorithm (RFC 9106).
- Blake2b, Blake2b256, Blake2b384 and Blake2b512 classes implement BLAKE2 cryptographic hash and MAC algorithm (RFC 7693).
- HKDF class implements HMAC-based Extract-and-Expand key derivation function (RFC 5869).
AesGcm and ChaChaPoly1305 moved to Rebex.Security
AesGcm
and ChaChaPoly1305
classes were moved from Rebex.Common assembly to Rebex.Security.
If you are using these classes and don't have a Rebex Total Pack or Rebex Security license, please let us know.
Support for Ed25519 certificates in TLS 1.2
X.509 certificates based on Ed25519 asymmetric algorithm are now supported with TLS 1.2 as well. Previously, they were only supported with TLS 1.3.
Support for modular Diffie-Hellman (FFDHE) in TLS 1.3
Although TLS 1.3 is usually used with Elliptic Curve Diffie-Hellman, it supports classic Diffie-Hellman as well.
Lot of TLS improvements
This release brings lot of small improvements in TLS that aims to make our TLS library up-to-date and as compatible as possible. Check out the release notes below for details.
Detailed list of changes:
- SFTP: Enabled Settings.GetFileOpenRemoteFirst option by default.
- FileTransferClient: Added EnableChecksumVerification and PreferredChecksumAlgorithm to FileTransferClient.Settings.
- FTP: Added Ftp.​Settings.​PreferredChecksumAlgorithm setting.
- FTP: Enabled Settings.GetFileOpenRemoteFirst option by default.
- FTP: Removed support for vulnerable and outdated 'Tumbleweed security' encryption mode.
- File Server: Added custom Context property to ConnectingEventArgs, PreAuthenticationEventArgs and AuthenticationEventArgs.
- File Server: Added FileServer.​Settings.​MaxAuthenticationDuration option.
- File Server: Changed default shell character encoding to UTF-8.
- File Server: Improved client public key authentication process.
- File Server: Optimized 'Move' operation in LocalFileSystemProvider.
- File System: Added 'NodePath.IsBackslashInFileNameAllowed' property. Setting it to true allows '\' character in VFS node name.
- Mail: Added MailSettings.​DoNotCloseStreamAfterLoad option.
- Mail: Relaxed MSG property stream length check.
- POP3: Improved behavior of Pop3.Disconnect on errors.
- IMAP: Added support for 'PARTIAL' extension for paged searching ad listing (RFC 9394).
- IMAP: Enabled Special-Use extension (RFC 6154) by default.
- EWS: Added protocol announcement via ALPN extension in TLS 1.2 or higher.
- EWS: Added support for delayed sending to Ews.SendMessage method.
- EWS: Improved reporting of unexpected errors from the TCP layer.
- SSH Shell: Changed default shell character encoding to UTF-8.
- Telnet: Added support for Telnet Environment Option (RFC 1572).
- Security: Added Argon2 class that implements the Argon2 memory-hard password hash algorithm.
- Security: Added Blake2b, Blake2b256, Blake2b384 and Blake2b512 classes that implement the BLAKE2 cryptographic hash and MAC algorithm.
- Security: Added Rebex.Security.Cryptography.HKDF class.
- HTTP: Added HttpSettings.UseLargeBuffers option.
- HTTP: Added protocol announcement via ALPN extension in TLS 1.2 or higher.
- HTTP: Improved reporting of unexpected errors from the TCP layer.
- Networking: Added SslSettings.SslRenegotiationMode option.
- Networking: No longer sending default domain in SSPI requests by defalt. Added SslSettings.UseDefaultDomain property.
- SSH: Added SshPublicKey.Parse method and a new overload for SshPublicKey.LoadPublicKeys.
- SSH: Added support for ECDH and ECDSA with secp256k1 curve ('ecdh-sha2-1.3.132.0.10' and 'ecdsa-sha2-1.3.132.0.10').
- SSH: Added support for SSH agents (OpenSSH agent and Pageant).
- SSH: Preferring ChaCha20/Poly1305 on platforms with HW intrinsics support.
- TLS Core: Added public API for TLS 1.3 and TLS 1.2 signature algorithms.
- TLS Core: Added public API for TLS 1.3 named groups and pre-shared key exchange modes configuration.
- TLS Core: Added support for Ed25519 in TLS 1.2 (already supported in TLS 1.3).
- TLS Core: Added support for modular Diffie-Hellman (FFDHE) in TLS 1.3.
- TLS Core: ClientHello is padded to 512 bytes to work around strange bugs in the erroneous TLS implementation on some servers.
- TLS Core: Disable client-initiated TLS renegotiation by default.
- TLS Core: Enabled ChaCha20/Poly1305 ciphers by default on .NET Core 3.1 / .NET 5 or higher.
- TLS Core: Changed the default order of cipher suites in ClientHello to more closely align with the best practices of the industry.
- TLS Core: In TLS 1.2, support for Renegotiation Indication Extension is annonced using renegotiation_info extension.
- TLS Core: The default selection of TLS 1.2 elliptic curves has been altered to more closely align with the best practices of the industry.
- TLS Core: TlsServerSocket now honors TlsOptions.DoNotCacheSessions flag when TLS 1.3 is negotiated.
- TLS Core: Updated default TLS 1.2 cipher preference order. Disabled 3DES by default. Added TlsCipherSuite.Common value.
- TLS: Added API for TLS channel binding.
- TLS: Added support for multiple certificate chains in TlsServerSocket.​TlsClientHelloReceivedEventArgs.​
- Cryptography: Added API for CRL distribution endpoints with multiple CRL entries.
- Cryptography: Added Certificate.Bind methods.
- Cryptography: Added CertificateStoreName.WebHosting enum value.
- Cryptography: Added CertificateStoreOpenFlags and corresponding CertificateStore constructors.
- Cryptography: AesGcm and ChaChaPoly1305 classes moved from Rebex.Common assembly to Rebex.Security.
- Cryptography: Certificate.Extensions collection is now read-only.
- Cryptography: Deprecated EncryptValue/DecryptValue methods in RSAManaged class.
- Cryptography: Fixed visibility of CertificateException legacy serialization constructor.
- Cryptography: Improved loading of Y-less legacy DSA keys in FIPS-only mode on .NET 6/7 in Windows.
- Common: Optimized internal Task.Run methods on old platforms.
- Common: Optimized internal WhenAll/WhenAny Task combinators on old platforms.
- WebSocket: Added CollectHttpResponseDetails option and corresponding HttpStatusCode / HttpResponseHeaders properties.
- WebSocket: Added support for WebSocket compression.
- WebSocket: Improved reporting of unexpected errors from the TCP layer.
- Released
- June282023
R6.14 #
(version 6.0.8580 from 2023-06-28)
Maintenance release
This is a maintenance release that brings several enhancements and resolves some issues.
Detailed list of changes:
- All: Fixed problems in finalizer logic.
- FTP: Fixed active mode transfers with servers that use TLS 1.3 and send NewSessionTicket late.
- FTP: Fixed possible (but very rare) NullReferenceException while aborting a data transfer.
- SMTP: Fixed handling of domain names with special characters in Smtp.ClientDomain.
- SSH: Fixed missing end-of-lines in new OpenSSH key format.
- Cryptography: Fixed support for ECDSA private key formats with optional public key.
- Released
- June062023
R6.13 #
(version 6.0.8558 from 2023-06-06)
Maintenance release
This is a maintenance release that brings several enhancements and resolves some issues.
Detailed list of changes:
- File Server: Fixed filename handling in SCP's non-directory upload mode.
- File Server: Fixed handling of datetimes on non-Windows file systems.
- HTTP: Using canonicalized form of IPv6 address in HTTP host header.
- Networking: Added support for IPv6 addresses to SOCKS5 proxy (client-side).
- Networking: Added workaround for systems where System.​Net.​Sockets.​Socket.​RemoteEndPoint does not work properly.
- Networking: Fixed formatting of IPv6 addresses for HTTP CONNECT proxies.
- Networking: Using 'Proxy-Connection' header instead of 'Connection' with HTTP CONNECT proxies.
- TLS Core: Disabled workaround for DHE padding bug in old versions of MS Schannel.
- TLS Core: Fixed server-side TLS curve selection on end-of-life platforms.
- TLS: TLS handshake extensions are always sent in the same order.
- Cryptography: Fixed lifecycle of AsymmetricKeyAlgorithm based on RSA CSP.
- Cryptography: Improved support for SignatureHashAlgorithm.MD5SHA1 in .NET 5 and higher in FIPS-only mode.
- Released
- April182023
R6.12 #
(version 6.0.8509 from 2023-04-18)
Maintenance release
This is a maintenance release that brings several enhancements and resolves some issues.
Detailed list of changes:
- SFTP: Improved workaround for windows size adjustment issue in Azure Blob Storage SFTP server.
- FTP: The local endpoint of FTP data socket is bound to that of control socket.
- SCP: Fixed escaping of "$" character in SCP commands.
- File Server: Fixed parsing of "\$" sequences in SSH commands.
- File System: Exists methods/properties in Rebex.IO VFS API return 'false' (like System.IO) instead of raising an exception.
- File System: Improved recursion breaker.
- File System: Rebex.IO VFS API raises InvalidOperationException when the underlying VFS provider is not registered as a VDriveInfo object.
- File System: Rebex.IO VFS API raises NotSupportedException when the format of the specified path is invalid.
- ZIP: Improved ZIP data descriptor parser to better handle inconsistency with Zip64.
- HTTP: Fixed and improved parsing of multi-value HTTP headers.
- SSH: Added workaround for an issue in 'srt SSH Server' that makes it reject RSA/SHA-2 public key authentication attempts.
- SSH: Fixed handling of SSH2 PUBLIC KEY quotation marks in SshPublicKey.
- SSH: Fixed handling of user name when performing single sign-on in .NET Core and .NET 5/6/7.
- TLS Core: Fixed client-side TLS cipher suite check and server-side TLS cipher selection.
- TLS Core: Fixed checking of selected elliptic curves.
- TLS Core: Fixed memory leak in server-side TLS session cache.
- Common: Fixed rare race condition in scheduled action infrastructure.
- Released
- January312023
R6.11 #
(version 6.0.8432 from 2023-01-31)
Maintenance release
This is a maintenance release that brings several enhancements and resolves some issues.
Detailed list of changes:
- File Server: Added workaround for libssh2's broken string value encoding (in SCP or possibly elsewhere).
- File System: Fixed potential memory leak when a VFS provider is disposed in an unexpected thread.
- MIME: Fixed possible NullReferenceException in a parser for wrong MIME parameter encodings.
- Networking: Comment is no longer ignored when loading SSH2 public key into SshPublicKey.
- SSH: Fixed occasional StackOverflowException in SSH tunnel code (thrown when a large batch of consecutive asynchronous IO operations completes synchronously).
- TLS Core: Fixed handling of missing close_notify message in TLS 1.2 or earlier.
- Cryptography: Fixed CRL retrieval for certificate with multiple CRL distribution endpoints.
- Common: Fixed potential premature release of an unmanaged buffer in SSPI interop code.
- Common: Improved compatibility with Windows 2000.
- Released
- December022022
R6.10 #
(version 6.0.8372 from 2022-12-02)
Experimental support for UIDONLY IMAP extension
We added support for the experimental UIDONLY extension. When using Yahoo IMAP, this makes it possible to operate on all messages in the mailbox.
Maintenance release
This is a maintenance release that brings several enhancements and resolves some issues.
Detailed list of changes:
- SFTP: Added workaround for an issue in Azure Blob Storage SFTP related to receive window size adjustment handling.
- FileTransferClient: Fixed context capturing in FileTransferClient.LoginAsync methods.
- MIME: Improved X.509 certificate chain resolving for PFX-based certifictes in S/MIME.
- IMAP: Added experimental support for Yahoo 'UIDONLY' extension.
- SSH: Added workaround for an issue in Azure Blob Storage SFTP that makes it reject RSA/SHA-2 public key authentication attempts.
- TLS Core: Fixed TlsParameter.AcceptableAuthorities handling (can specify an empty list).
- TLS: Added TlsOptions.DisableRenegotiation and TlsOptions.​RequireSecureRenegotiation.​
- Cryptography: Added workaround for broken X25519 implementation in early versions of Windows 10 (version 1507 and 1511).
- Common: Fixed Windows Extended Protection in 64-bit Windows applications.
- Released
- November082022
R6.9 #
(version 6.0.8348 from 2022-11-08)
Support for .NET 7!
This release adds a new set of binaries targeting .NET 7. It supports all .NET 7 platforms:
- Windows (x64, x86, ARM64)
- Linux (x64, ARM32, ARM64)
- macOS (x64)
- Android
- iOS/tvOS
Detailed list of changes:
- All: Added a new set of binaries targeting .NET 7.
- FTP: Fixed a bug in GetDownloadStreamAsync/​GetUploadStreamAsync methods that left Ftp object in an unusable state on failure.
- IMAP: Added support for Special-Use extension (RFC 6154).
- Cryptography: Fixed SHA-2 support on pre-SP3 versions of Windows XP.
- Released
- October252022
R6.8 #
(version 6.0.8334 from 2022-10-25)
Optimized CPU and memory usage in TLS 1.3
Rebex TLS 1.3 core has been further optimized on all supported platforms.
SSE2 implementation of ChaCha20
Last year, we introduced a very fast AVX2 implementation of ChaCha20 encryption cipher. However, some older or mobile CPUs lack AVX2 support, and this is where the new SSE2 implementation will become useful and improved performance of ChaCha20/Poly1305 in TLS and SSH. (Just like AVX2, the new SSE2 implementation is only available on .NET Core 3.1 and .NET 5/6.)
Detailed list of changes:
- EWS: Improved handling of unexpected error responses.
- SSH Shell: Fixed UseLargeBuffers a SetNoDelayForTunnelSockets usage in SSH tunnels.
- Networking: Improved timeout handling during TCP connect.
- TLS Core: Fixed handling of incomplete TLS 1.3 records.
- TLS Core: Further optimized TLS 1.3 core.
- TLS Core: Improved handling of invalid TLS 1.3 session tickets (PSKs).
- TLS Core: Reduced memory footprint and CPU usage of TLS 1.3.
- Cryptography: Added SSE2 implementation of ChaCha20 for .NET 5.0 or higher.
- Released
- October052022
R6.7 #
(version 6.0.8314 from 2022-10-05)
Fixed code signing (broken by DigiCert)
From September 14th to September 22nd, 2022, DigiCert's timestamping authority mistakenly issued a TSA certificate with a validity period of only one year. Unfortunately, this mistake means that code-signed Rebex assemblies from R6.6 release will no longer pass validation after February 28th, 2024.
Therefore, Rebex customers should upgrade from R6.6 as soon as possible to take advantage of the new TSA certificate's full 11-year validity period.
Detailed list of changes:
- All: This release is properly code-signed again. TSA certificate validity was too short in R6.6 due to DigiCert's mistake.
- MIME: Added workaround for yet another form of wrong Content-Disposition parameter encoding.
- SSH: Added workaround for SSH servers that claim to prefer 'ssh-rsa' for client public key authentication.
- Cryptography: Added Rebex.Common.Validator assembly.
- Released
- September162022
R6.6 #
(version 6.0.8295 from 2022-09-16)
Support for 'Windows Extended Protection'
In response to state-sponsored HAFNIUM attacks against Exchange Server, Microsoft recently added support for Windows Extended Protection. This utilizes TLS channel binding to protect session against man-in-the-middle attacks on SSPI authentication ('Negotiate', 'NTLM' or 'Kerberos' authentication, also known as 'Integrated Windows authentication').
This release adds support for 'Extended Protection' to SMTP, IMAP, POP3, EWS, HTTPS and WebSocket libraries. Customers using on-premise Exchange Servers or IIS servers with 'Integrated Windows authentication' should consider upgrading to this release and enabling 'Extended Protection' on their servers to protect against HAFNIUM-style attacks. Currently, this feature is only supported on Windows.
Exchange Web Services (EWS) enhancements
We optimized our Exchange Web Services library and improved error reporting and logging. If you are going to migrate to Microsoft 365 (formerly Office 365), we strongly recommend upgrading to this release. For OAuth 2.0 authentication sample code, see the Rebex Extras repository.
Fixed space calculations in Sftp.GetFileSystemInfo
Sftp
object's GetFileSystemInfo
method has been fixed.
It used to returned wrong information for macOS-based SFTP servers.
New constructor for SshPrivateKey/SshPublicKey
SshPrivateKey
and SshPublicKey
feature a new constructor
that accepts an instance of AsymmetricKeyAlgorithm
.
Detailed list of changes:
- SFTP: Fixed free space calculation in Sftp.GetFileSystemInfo for macOS-based servers.
- File Server: Fixed handling of read-only items in raw directory listings.
- File Server: Improved error reporting when using .NET-based file system.
- EWS: Added support for more variants of Office 365 error responses.
- EWS: Enabled TLS session resumption.
- EWS: Fixed redundant authentication.
- EWS: Improved error reporting (in the log and via EwsException).
- EWS: No longer issuing unneeded HEAD request when connecting to Office 365.
- SSH Shell: Fixed possible unobserved exception in client-side SSH tunnels on .NET 6.0.
- Syslog: Added support for multicast addresses.
- SSH: Added new constructors to SshPrivateKey/SshPublicKey classes that accept AsymmetricKeyAlgorithm.
- SSH: Added support for ECDSA to SshPrivateKey(AsymmetricAlgorithm) constructor (on .NET Core 3.1 or higher).
- SSH: Fixed rare NullReferenceException when closing an SshSession.
- TLS Core: Added support for Windows Extended Protection (only available on Windows).
- Cryptography: Added GetPrivateKeyAlgorithm/​GetPublicKeyAlgorithm methods to Certificate class.
- Released
- July152022
R6.5 #
(version 6.0.8232 from 2022-07-15)
Enhanced TLS session reuse compatibility in FTP
The control connection's TLS session is now reused for all data connections. Previously, the TLS session of the last
data connection has been used instead. To restore the previous behavior, set Ftp.​Settings
' ​ReuseDataConnectionSession
option to true
.
Support for more SSH extensions
Added support for server-sig-algs
SSH extension (RFC 8332)
and for SSH extension negotiation (RFC 8308).
TLS 1.2 improvements
Added support for TLS extended master secret extension (RFC 7627) and fixed several issues.
OAuth 2.0 fixes in POP3
Fixed an issue in handling OAuth 2.0 authentication errors in Pop3
class.
Detailed list of changes:
- SFTP: Improved key-only variant of Login method when the server requests further authentication and AuthenticationRequest event has been registered.
- FTP: Reusing control connection session for all data connections. Added Ftp.​Settings.​ReuseDataConnectionSession option to make it possible to enable previous behavior.
- SCP: Improved key-only variant of Login method when the server requests further authentication and AuthenticationRequest event has been registered.
- File Server: Added support for SSH extension negotiation (RFC 8308).
- POP3: Fixed an issue in handling OAuth 2.0 authentication errors.
- EWS: Added EwsSettings.ExpectContinueTimeout to make it possible to specify a timeout for '100 Continue' HTTP response.
- SSH Shell: Improved key-only variant of Login method when the server requests further authentication and AuthenticationRequest event has been registered.
- Syslog: Fixed PRI header parser.
- SSH: Added support for 'server-sig-algs' SSH extension (RFC 8332).
- SSH: Improved logging of 'partial success' authentication responses.
- TLS Core: Added support for TLS extended master secret extension (RFC 7627).
- TLS Core: Fixed handling of NoRenegotiation alert.
- TLS Core: Fixed rare race condition when closing TLS 1.2 socket.
- TLS: Fixed Renegotiate() in TlsClientSocket/TlsServerSocket.
- Common: Improved internal asynchronous infrastructure for old platforms.
- Released
- May252022
R6.4 #
(version 6.0.8181 from 2022-05-25)
Support for .NET 6.0 on Android and iOS
Support for mobile platforms in .NET 6.0 has finally arrived, slightly masquaraded as .NET MAUI. Rebex libraries now support these new platforms as well.
Optimized AEAD ciphers in TLS and SSH
ChaCha20/Poly1305 and AES/GCM ciphers have been slightly optimized on all platforms.
Optimized CPU usage in TLS 1.3
Rebex TLS 1.3 core has been further optimized for this release.
New asynchronus core for WebSocketClient
This release includes a new fully-asynchronous TLS core suitable for scenarios where
a large number of WebSocket clients are active at the same time. To enable this feature,
set WebSocketClient.​Settings.​UseAsynchronousTransportLayer
to true
.
Detailed list of changes:
- All: Added support for .NET 6.0 on Android.
- All: Added support for .NET 6.0 on iOS.
- FTP: Fixed unobserved task exception during timeout while initializing FTP active mode transfer.
- File Server: Throwing IOException in custom command API when attempt is made to send data over a shutdown SSH channel.
- File System: Optimized memory consumption of internal thread-local variables.
- MIME: Date header parser made more benevolent.
- MIME: Fixed UnparsableHeader event which was not called for unparsable Date headers when ProcessAllHeaders was enabled.
- SSH: Fixed behavior of TryPasswordFirst option with servers that support 'publickey' and 'keyboard-interactive' but not 'password'.
- SSH: Optimized AEAD ciphers in SSH.
- TLS Core: Optimized AEAD ciphers in TLS.
- TLS Core: Optimized CPU usage in TLS 1.3 data flow.
- TLS Core: Optimized scenario when the remote party requires TLS 1.2 (or lower TLS version) and TLS 1.3 is enabled.
- TLS Core: Optimized TLS 1.3 key derivation functions.
- Cryptography: Added support for NTLM plugin for non-Windows platforms.
- Cryptography: Added workaround for buggy RSACryptoServiceProvider in .NET 6.0 on Android.
- Cryptography: Enhanced workarounds for slightly misbehaved certificate validator in .NET 6.0 on Android.
- Cryptography: Fixed exporting of DSA keys on Windows XP SP3.
- Cryptography: Optimized ChaCha20Poly1305 internals.
- Cryptography: Optimized internal AEAD interfaces.
- Cryptography: Working around RSA private key access issue in .NET 6.0 on Android.
- Common: Improved inner exception rethrow logic on .NET Framework 3.5/4.0.
- Common: Optimized internal data buffer methods.
- WebSocket: Added experimental support for 'permessage-deflate' extension.
- WebSocket: Added WebSocketClient.​Settings.​UseAsynchronousTransportLayer option. Enables fully asynchronous TLS core.
- WebSocket: Improved logging in WebSocketClient.
- Released
- March282022
R6.3 #
(version 6.0.8123 from 2022-03-28)
Disabled HTTPS->HTTP redirect downgrading by default
Redirect downgrading from secure HTTPS to unsecure HTTPS is now disabled by default
in WebClient
and HttpRequest
classes.
To enable it and restore the previous (unsecure) behavior, use AllowRedirectDowngrade
option.
Maintenance release
This is a maintenance release that brings several enhancements and resolves some issues.
Detailed list of changes:
- SFTP: Added Settings.GetFileOpenRemoteFirst option. When enabled, the local file is only created by GetFile/Download methods after the remote file has been successfully opened.
- SFTP: Added Sftp.​Settings.​EnableDirectoryAsFileWorkaround option (workaround for AWS FTP Transfer with S3 storage that misreports some directories as files).
- SFTP: Added Sftp.​Settings.​EnableMissingCreateTimeWorkaround option.
- SFTP: Fixed Sftp.​Settings.​UseReadWriteModeForDownloads option behavior.
- SFTP: When appending/resuming in Download method, FileMode.Open is used instead of OpenOrCreate.
- FTP: Added Settings.GetFileOpenRemoteFirst option. When enabled, the local file is only created by GetFile/Download methods after the remote file has been successfully opened.
- FTP: Fixed Ftp.Dispose() to properly update Ftp properties.
- FTP: When appending/resuming in Download method, FileMode.Open is used instead of OpenOrCreate.
- File Server: Fixed FileServer.​Settings.​SendBufferSize/​ReceiveBufferSize on modern platforms.
- File Server: Fixed inconsistency between NodePath.GetHashCode and NodePath.Equals methods caused by the case-insensitive logic in GetHashCode method.
- Mail: Added workaround for TNEF attachments with empty ContentId.
- ZIP: Fixed exception handling of ZipReader.ReadNext() and ZipReader.Extract() methods.
- ZIP: Fixed reading of incomplete ExtraField structure.
- HTTP: Added Settings.AllowRedirectDowngrade option (disabled by default).
- Networking: Added ProxySocket.Bind(Socket) protected method to allow more customization.
- SSH: Improved workaround for very old versions of Bitvise server that don't properly handle SSH channel closing.
- TLS Core: Added TlsSocket.CloseAsync method (alias for DisposeAsync method).
- TLS Core: Fixed occasional (rare) premature termination of the TLS connection when a remote party does not support TLS 1.3.
- TLS Core: Improved protocol mismatch detection.
- TLS Core: Optimized asynchronous Send/Receive operation in TLS 1.3.
- Cryptography: Improved Poly1305 internals.
- Cryptography: Slightly optimized encrypt/decrypt operations in symmetric branch of the CNG/BCrypt interop layer.
- Cryptography: Small optimization in ARM (Advanced NEON SIMD) implementation of ChaCha20.
- Common: Fixed rare premature finalization of a buffer in SSPI interop that might lead to an AccessViolationException.
- Common: Improved internal asynchronous infrastructure.
- Released
- January242022
R6.2 #
(version 6.0.8060 from 2022-01-24)
Maintenance release
This is a maintenance release that brings several enhancements and resolves some issues.
Detailed list of changes:
- FileTransferClient: Added additional protocol-specific properties to FileTransferClient.Settings.
- File System: Fixed handling of FileSystemException in the iterator from VFS provider's GetChildren method.
- EWS: Improved handling of future Office 365 error codes.
- Syslog: Added workaround for BSD log format without colon.
- Syslog: Improved error reporting in SyslogServer.Start().
- Networking: Fixed timeout handling during name resolution.
- TLS Core: Fixed handling of TLS 1.3 signature_algorithms_cert extension.
- TLS Core: Optimized temporary object usage in TLS 1.3 Send/Receive metods.
- Cryptography: Fixed releasing of CNG handles in AES/GCM interop (issue only present in R6.1 on Windows).
- Released
- January082022
R6.1 #
(version 6.0.8044 from 2022-01-08)
Maintenance release
This is a maintenance release that brings several enhancements and resolves some issues.
Detailed list of changes:
- All: Fixed compatibility of Rebex binaries for .NET Framework 4.0 with ASP.NET 4.5 or higher.
- FTP: Added workaround for incorrect handling of TLS 1.3 pre-shared key exchange modes in FileZilla FTP server (the issue caused data transfers with TLS 1.3 to fail).
- File Server: Fixed possible NullReferenceException in ServerSession.SendMessage method.
- File System: Added FileSystemNotifier.Provider property.
- File System: Fixed Path property in nodes created under mounted directories.
- Mail: Added UseDefaultCharsetForHeaders option to MailSettings and MimeOptions.
- Syslog: Improved Socket error handling and reporting.
- ZIP: Added ZipArchive.​Options.​LocalHeaderVerificationMode option.
- ZIP: Wrong Unix permissions are ignored if they do not specify a file type.
- HTTP: Fixed workaround for server-side bug (fixed handling of servers that send more data than they announced).
- TLS Core: Optimized receive operation in TLS 1.3.
- TLS Core: Slight optimizations in TLS 1.3 on modern platforms.
- Cryptography: Caching of CNG algorithm provider handles.
- Cryptography: Fixed Certificate.​GetSignatureHashAlgorithm() for certificates signed by Ed25519 authorities.
- Cryptography: Fixed unmanaged resource leak in CertificateStore.
- Cryptography: Optimized symmetric branch of Windows CNG (BCrypt) interop layer.
- Released
- November252021
R6.0 #
(version 6.0.8000 from 2021-11-25)
Support for .NET 6.0!
This release adds a new set of binaries targeting .NET 6.0. It supports all .NET 6.0 platforms:
- Windows (x64, x86, ARM64)
- Linux (x64, ARM32, ARM64)
- macOS (x64)
Please note that support for Android and iOS/tvOS in .NET 6.0 is still in preview mode. We will fully support these platforms as soon as the corresponding .NET 6.0 update is published.
Support for Visual Studio 2022
All Rebex libraries are now fully supported in Microsoft Visual Studio 2022.
Removed deprecated APIs
In this major release, we removed some APIs that have been deprecated for a very long time and seldom used. We will publish an article soon detailing these changes. In the meantime, if this affects you, please keep using release R5.7, and let us know. (R5.x will be supported until 2023-10-10.)
Support for reverse SSH tunnels
Finally, Rebex File Server supports incoming tunnels via SSH, also known as reverse port forwarding.
Use FileServer.Settings.EnableReverseTunneling
to enable this feature.
New Rebex.IO API
We added a set of new classes to Rebex.IO
namespace that make it possible to access
files and directories in custom file system providers
using a simple API that resembles System.IO
. The new classes are VFile
, VFileInfo
, VDirectory
,
VDirectoryInfo
, VFileSystemInfo
, VDriveInfo
and VFileStream
,
and they are provided by Rebex.FileSystem
assembly.
Support for ECDSA X.509 certificates in SSH
Added support for 'x509v3-ecdsa-sha2-nistp256', 'x509v3-ecdsa-sha2-nistp384' and 'x509v3-ecdsa-sha2-nistp521' SSH host key and client key algorithms (as specified by RFC 6187).
Changes in Rebex.Terminal assembly
Due to Microsoft's decision to drop support for most of System.Drawing
on non-Windows platforms in .NET 6.0,
we decided to slightly restructure our Rebex.Terminal
assembly to accommodate for this.
Therefore, TerminalControl
, TerminalFont
and related classes were moved to a separate
assembly called Rebex.Terminal.Control
, along with image-based or font-based functionality previously
available in ITerminal
and VirtualTerminal
classes (these are now available via VirtualTerminalExtensions
class with a slightly modified API with TerminalImageFormat
instead of TerminalCaptureFormat
).
We also split seldom-used SerialPortChannel
class to a dedicated Rebex.Terminal.SerialPort
assembly.
Additionally, we removed SshTerminalControl
and TelnetTerminalControl
classes, which extend
TerminalControl
. If you use these classes, just add the replacement SshTerminalControl.cs
or TelnetTerminalControl.cs
files to your application - these are available as part of SshSimpleWinFormClient/TelnetSimpleWinFormClient
sample apps (VB.NET versions are available as well).
If these changes prevent you from upgrading, please keep using release R5.7 and let us know. (R5.x will be supported until 2023-10-10.)
Updated default settings
We changed default values of some settings. For example, UTF-8 is now ubiquitous, so it makes sense to prefer it by default. Of course, you can still revert the corresponding settings to previous values.
Async methods in WebClient
We added *Async
variants of WebClient
methods. (Please note that these are still implemented synchronously internally.)
TlsStream(Stream) constructor
TlsStream
class now features a new Stream
-based constructor, making it possible to implement TLS 1.3/1.2
on top of any suitable (readable/writable) Stream
.
New ZipReader class
The new ZipReader
class makes it possible to process ZIP files on-the-fly, without having to parse
the ZIP file's items first. You can now read ZIP files and extract items sequentially.
Non-seekable streams are supported as well.
Detailed list of changes:
- All: Added a new set of binaries targeting .NET 6.0.
- All: Removed several obsolete and deprecated APIs.
- All: Removed support for legacy ISerializable interface from binaries for .NET Standard.
- SFTP: Added Settings.EnableChecksumVerification option.
- SFTP: Changed default value of Sftp.Encoding to UTF-8.
- FTP: Added Settings.EnableChecksumVerification option.
- SCP: ScpSettings.​EnablePutFilesRemotePathWorkaround set to 'false' by default.
- File Server: Added support for incoming tunnels (also known as reverse tunneling or SSH port forwarding).
- File System: Added simple API (resembling System.IO) for working with contents of custom virtual file system providers.
- MIME: Changed default charset for MIME text entities to UTF-8.
- SMTP: Disabled deprecated SmtpDelieryEngine.System option.
- Terminal: Moved SerialPortChannel class to Rebex.Terminal.Serial assembly.
- Terminal: Moved TerminalControl and related classes to Rebex.Terminal.Control assembly.
- ZIP: Added ZipArchive.CheckIntegrity() method.
- ZIP: Added ZipArchiveOpenOptions to make it possible to specify options before opening a ZIP file.
- ZIP: Added ZipArchiveOptions.​HideItemNamesInLog option to make it possible to hide file and directory paths in a debug log.
- ZIP: Added ZipReader class.
- ZIP: Enhanced logging at LogLevel.Debug and LogLevel.Verbose.
- HTTP: Added asynchronous method overloads to WebClient class.
- SSH: Added support for SSH key algorithms based on ECDSA X.509 certificates (RFC 6187).
- TLS: Added TlsStream(Stream) constructor.
- Released
- November242021
R5.7 #
(version 5.0.7999 from 2021-11-24)
Support for .NET 6.0 and Windows 11
Windows 11 is now a supported platform.
Rebex assemblies targeting .NET Standard 2.1 now support .NET 6.0.
Support for PuTTY PPK3 key format
SshPrivateKey
class, PrivateKeyInfo
class and Certificate.SavePrivateKey
method now support PuTTY's new
PPK version 3 private key format.
Improved TLS 1.3 performance
We made a number of optimizations in the TLS 1.3 core, which increased speed and decreased CPU usage.
Support for 'x509v3-rsa2048-sha256' SSH cipher
Added support for 'x509v3-rsa2048-sha256' SSH host key and client key algorithm (X.509 certificate with RSA key, as specified by RFC 6187).
Improved HTTP API
We added HttpRequest.AddRange
method, HttpResponse.LastModified
property,
and support for CredentialCache
.
Improved Deflate compression performance
Deflate compression performance has been improved (mostly on modern platforms). This improves performance of SSH layer (when compression is enabled) and FTP (with 'MODE Z' enabled).
Improved ZIP/GZIP compression performance
ZIP and GZIP compression performance has been improved (mostly on modern platforms).
Detailed list of changes:
- All: Added support for .NET 6.0 on Windows, Linux and macOS.
- All: Added support for Windows 11.
- FileTransferClient: Fixed error handling in FileTransferClient.LoginAsync methods.
- File System: Added new constructor to LocalFileSystemProvider, MemoryFileSystemProvider and MountCapableFileSystemProvider that accepts FileSystemSettings.
- File System: Optimized VFS internals.
- MIME: Improved ID check in MessageId constructor.
- SMTP: Enabled Login(username, password, OAuth20) method.
- POP3: Enabled Login(username, password, OAuth20) method.
- IMAP: Enabled Login(username, password, OAuth20) method.
- EWS: Enabled Login(username, password, OAuth20) method.
- ZIP: Improved ZIP and GZIP compression performance.
- HTTP: Added HttpRequest.AddRange() method.
- HTTP: Added HttpResponse.LastModified property.
- HTTP: Added support for CredentialCache to HttpRequest.
- HTTP: Fixed handling of "401" responses with "Connection: close" when "Expect: 100-continue" is enabled.
- HTTP: Fixed handling of multiple "100 Continue" responses.
- HTTP: Fixed HTTP session caching when the response stream has not been read until end-of-stream.
- HTTP: Improved handling of empty UserName in NetworkCredential for Basic and Digest authentication.
- SSH: Added support for PuTTY PPK3 format to SshPrivateKey.
- SSH: Added support for 'x509v3-rsa2048-sha256' SSH key algorithm (RSA X.509 certificates, RFC 6187).
- SSH: Added workaround for a server with broken SSH window size handling logic.
- SSH: Fixed handling of oversized data packets from servers with broken window size.
- TLS Core: Improved TLS 1.3 performance.
- TLS: Enabled TLS 1.3 by default in TlsStream class.
- Cryptography: Added more values to X.509 RevocationReason enum.
- Cryptography: Added support for private keys in PuTTY PPK3 format (uses Argon2 key derivation function).
- Cryptography: Added workaround for Google's CRLs with non-constructed explicit ASN.1 nodes.
- Released
- October262021
R5.6 #
(version 5.0.7970 from 2021-10-26)
Support for .NET 6.0 RC2
Rebex assemblies targeting .NET Standard 2.1 have been fully tested on .NET 6.0 RC2 and are suitable to be used in production on Microsoft's latest .NET platform ahead of the official release.
Maintenance release
This release brings several enhancements in HTTP, virtual file system API, server-side SFTP and shared functionality.
Detailed list of changes:
- All: Added support for .NET 6.0 RC2.
- SCP: Fixed compatibility of legacy Scp class with recent OpenSSH releases.
- File Server: Fixed compatiblity between WinSCP's SFTP v5 implementation and writable non-seekable custom streams.
- File System: Fixed internal reader-writer lock in virtual file system provider that could cause a deadlock in some scenarios with multiple parallel operations.
- SSH Shell: Enhanced debug logging of response reading timeouts in Shell class.
- HTTP: Added support for PreAuthenticate with Digest authentication method.
- HTTP: Very small timeouts (<1000) in HttpRequest.Timeout are treated as 1000 (one second).
- TLS Core: Fixed possible NullReferenceException in TLS 1.2 socket after it has been closed.
- TLS Core: Improved handling of exceptions in TlsSocket.Send method.
- Cryptography: Fixed handling of RSAParameters without DP/DQ in AsymmetricKeyAlgorithm and PrivateKeyInfo.
- Cryptography: Fixed loading of encrypted keys with empty passwords in new OpenSSH format.
- Cryptography: Small optimization in AVX2 implementation of ChaCha20.
- Released
- August172021
R5.5 #
(version 5.0.7900 from 2021-08-17)
New binaries for .NET Core 3.1
We added a new set of binaries targeting .NET Core 3.1. We have already been supporting that platform since 2019 via .NET Standard 2.1. However, the new set of binaries utilizes .NET Core's hardware intrinsics API and features our fast ChaCha20/Poly1305 implementation that has been previously only available on .NET 5.0.
For an overview of available binaries and supported platforms, check out Rebex Support Lifecycle KB article.
Fixed permission requested for 'rename' operation
When renaming a file, FileServer
now requests read permission
in addition to delete for the source path in PathAccessAuthorization
event.
Detailed list of changes:
- All: Added 'netcoreapp3.1' binaries.
- All: Fixed compatibility with UWP and .NET Native compiler.
- File Server: Added ServerEndPoint and ServerAddress properties to relevant server event arguments and ServerSession class.
- File Server: Requesting 'Read' permission in addition to 'Delete' for source path of rename operation in PathAccessAuthorization event.
- SMTP: Optimized memory usage while sending a message.
- EWS: Added support for 'ErrorConnectionFailedTransientError' error code.
- Syslog: Added SyslogMessageReceivedEventArgs.​Timestamp property (available for messages received by a server).
- Terminal: Added TerminalOptions.​WaitForCloseConfirmation option.
- HTTP: Enhanced error handling when more data than expected has been received.
- Released
- August052021
R5.4 #
(version 5.0.7888 from 2021-08-05)
New library: Rebex MSG
Rebex MSG is .NET library for reading, processing
and writing Microsoft Outlook .MSG e-mail message files. Unlike existing MIME classes from Rebex.Mail
namespace,
MsgMessage
and related classes work directly with MSG file format.
The new library is available as a standalone package or as a part of Rebex Total Pack.
Maintenance release
This release resolves several issues and adds several features.
Detailed list of changes:
- SFTP: SFTP v4 error code are interpreted as unknown error in SFTP v3.
- Mail: Improved MSG reader to read 'subject' from PidTagConversationTopic MAPI property when needed.
- SSH Shell: Added Ssh.Settings.UseLargeBuffers option.
- HTTP: Order of HTTP request headers as specified by HttpRequest.Headers is used when constructing the HTTP request.
- Networking: Fixed casing in 'Basic' HTTP proxy authorization header.
- TLS Core: Fixed parsing of TLS 1.3 Certificate handshake message spanning multiple records.
- Cryptography: Fixed Certificate.FriendlyName setter in .NET 5.0 on non-Windows platforms.
- Released
- June182021
R5.3 #
(version 5.0.7840 from 2021-06-18)
Fixed FIPS-mode detection in .NET 4.8
This release fixes an issue in FIPS-mode detection routine that was not working properly in applications targeting .NET Framework 4.8 due to a change in the framework's behavior. This only affects applications targeting .NET Framework 4.8. Applications targeting earlier framework versions do not suffer from this issue even when running on .NET Framework 4.8.
If your application targets .NET Framework 4.8 and is supposed to honor system-wide FIPS mode settings, either upgrade to this release,
or set Rebex.Security.Cryptography.CryptoHelper.UseFipsAlgorithmsOnly
to System.Security.Cryptography.CryptoConfig.AllowOnlyFipsAlgorithms
in your application's startup code.
Server-side SFTP v5 support
Rebex SFTP Server (FileServer
class) supports SFTP v5 now.
This improves compatibility with WinSCP client, which requires SFTP v5 to enable
File Hashing extension
that makes it possible to calculate checksums of remote files.
Detailed list of changes:
- File Server: Added support for SFTP v5.
- File Server: Fixed compatibility issues in SCP protocol.
- File System: Fixed obfuscated method names in FileSystemProvider log.
- File System: MountCapableFileSystemProvider's FileSystemNotifier raises GetAttributesPreview, GetAttributesSurrogate and GetAttributesCompleted events for mounted directories.
- File System: Tweaked handling of non-seekable streams supplied to NodeContent.CreateReadOnlyContent method.
- Mail: Added MsgMessageException exception class (represents errors related to Outlook MSG format).
- Mail: Improved handling of invalid SMTP addresses in MSG parser.
- IMAP: Improved error handling when parsing IMAP envelope fields.
- SSH: Fixed race condition in OpenSSH-style compression startup code (occasionally caused connection failures during authentication with SSH compression was enabled).
- TLS Core: Added SslSettings.​SetPreferredSuites/​GetPreferredSuites methods to make it possible to specify client-side TLS cipher preference.
- TLS Core: Improved logging when remote party does not support TLS 1.3.
- TLS Core: Optimized TlsSocket.Negotiate method when TLS 1.3 is enabled but not supported by the remote side.
- TLS Core: Prevented 'unobserved' exceptions in task-based TLS 1.2 core.
- Cryptography: Added support for private keys using PBKDF2 with HMAC/SHA-2 (RFC 8018 / PKCS #5 v2.1).
- Cryptography: Fixed detection of FIPS-only systems on .NET Framework 4.8.
- Cryptography: Optimized creation of algorithm objects in CNG layer.
- Released
- May092021
R5.2 #
(version 5.0.7800 from 2021-05-09)
New library: Rebex Syslog
Rebex Syslog is syslog client and server library for .NET. It supports UDP, TCP and TLS, and is compatible with third-party syslog clients and servers. It supports TLS 1.3, TLS 1.2 and earlier versions on all mainstream platforms including .NET Framework 3.5 on Windows 7. SHA-2, SNI, AES/GCM, ChaCha20/Poly1305 and other modern TLS features are supported as well.
The new library is available as a standalone package or as a part of Rebex Total Pack.
New ChaCha20Poly1305 class
This release features the new ChaCha20Poly1305
class that implements the 'combined mode' AEAD cipher
consisting of ChaCha20 stream cipher and Poly1305 authenticator,
as specified by RFC 7539.
Improved performance of AES/CTR ciphers in SSH
AES/CTR is now faster on all platforms.
Faster ChaCha20/Poly1305 on older platforms
We further improved performance of ChaCha20/Poly1305 in TLS and SSH on older platforms. It's not as fast as our .NET 5.0 implementation using AVX2 or Advanced NEON SIMD, but it's faster than ever before.
Detailed list of changes:
- FTP: Added Ftp.Settings.MdtmSetTimeOffset property.
- File Server: Fixed error handling in SSH session's periodic timer callback.
- File Server: Fixed handling of failed sessions to make sure they are removed from the sessions collection.
- File Server: Updated SshConsole.Clear() method to reset cursor position in addition to clear the screen.
- File System: Fixed handling of non-seekable streams supplied to NodeContent CreateReadOnlyContent method.
- Mail: Trimming input value in ContentType, ContentLocation and ReturnPath constructors.
- EWS: Fixed logging of port value in Ews.Connect method.
- Syslog: Initial release of Rebex Syslog component.
- Terminal: Adapted behavior of "Erase Screen" to match usual terminal behavior (does not reset cursor position).
- ZIP: Improved error messages, added more sanity checks.
- HTTP: Enhanced error handling when connection is closed prematurely in chunked mode.
- Networking: Added support for SOCKS5 servers that respond with domain name.
- SSH: Optimized usage of ChaCha20/Poly1305 in SSH.
- Cryptography: Added ChaCha20Poly1305 class that implements ChaCha20/Poly1305 with an API that resembles .NET's AesGcm class.
- Cryptography: Added support for loading of ECDSA certificates from PFX/P12 files in .NET 5.0 and .NET Standard 2.1 on Linux and macOS.
- Cryptography: Added support for saving to PFX/P12 files for certificates with temporarily associated private keys in .NET 5.0 and .NET Standard 2.1 on Linux and macOS.
- Cryptography: AVX2 implementation of ChaCha20 releases old pre-generated keystream immediately after reinitialization.
- Cryptography: Clearing output data in AesGcm class when authentication tag is invalid.
- Cryptography: Fixed parsing of Cryptographic Message Syntax envelopes with unsupported OIDs.
- Cryptography: Improved ChaCha20/Poly1305 performance on .NET 3.5-4.6 and .NET Standard 2.x.
- Cryptography: Improved performance of AES/CTR ciphers (used in SSH).
- Common: Improved error handling when raising events via synchronization context.
- Released
- March032021
R5.1 #
(version 5.0.7733 from 2021-03-03)
Simplified release naming
We decided to drop the year from our release naming scheme. Instead of '2020 R5.1', this release is called just 'R5.1', and the forthcoming releases will use the same 'R5.x' naming scheme until the next major upgrade.
Faster ChaCha20/Poly1305 in .NET 5.0
By utilizing AVX2 (on Intel/AMD) or Advanced NEON SIMD (on ARM) via .NET's new hardware intrinsics API in .NET 5.0, we made our ChaCha20/Poly1305 implementation in SSH and TLS much faster. On ARM64, ChaCha20/Poly1305 is now even faster than Windows native AES/GCM.
This release improves ChaCha20/Poly1305 performance on older platforms as well, although not by such a big margin.
Improved compatibility of File Server with WinFsp/SSHFS
For some reason, when WinFsp/SSHFS performs a rename operation on a mounted SFTP filesystem, it first opens the file being renamed. This caused the rename operation to fail with Rebex SFTP Server, because we were opening files without specifying the file sharing mode that would allow this. We changed this, and Rebex File Server is now compatible with SSHFS by default.
To restore the previous behavior, set FileServer.Settings.FileShareMode
to FileShare.Read
.
Support for 'Sensitivity' flag in EWS
Rebex EWS API was enhanced to support 'sensitivity'. We added Sensitivity
property to EwsMessageInfo
and EwsMessageMetadata
classes. There is EwsSearchParameter.Sensitivity(...)
for search queries as well.
Detailed list of changes:
- All: Changed release naming scheme ('R5.1' instead of '2020 R5.1').
- FTP: Added workaround for PureFTPd server's handling of NOOP command.
- File Server: Added FileServer.Settings.FileShareMode property to make it possible to specify file share mode for opened files.
- File Server: Added ShellCommandEventArgs.Raw property (contains unparsed arguments for custom command).
- File Server: Fixed behavior of FileServer.Unbind(EndPoint) method.
- File Server: Fixed race condition when closing outstanding file handles during SFTP channel closure.
- File Server: Changed default value for Settings.KeepAlivePeriod to 300 seconds.
- File Server: Improved error messages when no SSH server keys or bindings were specified when starting the server.
- File System: Fixed return type of Move and Rename operations in FileSystemProvider when using instances of classes derived from DirectoryNode and FileNode.
- File System: Length property of a Stream returned from LocalFileSystemProvider is updated properly after a write operation.
- File System: MountCapableFileSystemProvider allows 'Move' operation between different mounted file system providers.
- EWS: Added Ews.Settings.HttpHeaders property to make it possible to specify custom HTTP headers.
- EWS: Added EwsMessageInfo.Sensitivity property.
- Terminal: Added workarounds for badly-positioned fonts (Cascadia).
- Terminal: Fixed behavior of TerminalControl when dragging window between screens with different DPI settings (.NET 5.0 only).
- Terminal: Fixed compatibility of TerminalControl.CursorStyle with Visual Studio's form designer.
- ZIP: Improved Zip64 format detection.
- HTTP: Fixed behavior of HttpSettings.SslSession (no longer ignored).
- Networking: Added workaround for rare WSAEWOULDBLOCK error on Mono in Socket.Connect.
- Networking: More meaningful exception is throw when attempting to use HTTP CONNECT proxy with NTLM authentication on platforms that don't support it.
- Networking: Optimized timeout infrastructure in ProxySocket.Connect.
- SSH: Added workaround for WingFTPServer server that uses 'ssh-rsa' with SHA-2 when client announces RSA/SHA-2 support.
- SSH: Fixed format of SshPublicKey.GetPublicKey() response for public keys initialized from PublicKeyInfo or AsymmetricAlgorithm.
- SSH: Fixed handling of unknown channel requests (not sending reply if not requested).
- TLS Core: Added VerifyMessage signature algorithm logging in TLS 1.3.
- TLS Core: Close/Dispose method called on TLS 1.3 socket ensures that all outstanding IO operations are canceled before the control is returned to the caller.
- TLS Core: Fixed possible rare NullReferenceException when closing TLS 1.3 session.
- TLS Core: Synchronous methods on TlsSocket wrap TaskCanceledException to TlsException.
- Cryptography: Added workaround to Certificate.LoadDer method to enable loading of certificates in PKCS #7 containers.
- Cryptography: Enhanced implicit operator for conversion of Certificate->X509Certificate2 to retain private keys on non-Windows platforms as well.
- Cryptography: Fixed Ed25519 PKCS #8 key structure (now compatible with OpenSSL).
- Cryptography: Optimized memory usage in symmetric encryption transformations based on Windows CNG API.
- Cryptography: Substantial speed-up of ChaCha20/Poly1305 (used in SSH and TLS). Utilizing AVX2 or Advanced NEON SIMD on .NET 5.0 (if available).
- Common: Accelerated common byte array operations in .NET 5.0 on devices with AVX2 support.
- Released
- November102020
2020 R5 #
(version 5.0.7620 from 2020-11-10)
Support for .NET 5.0!
This release adds a new set of binaries targeting .NET 5.0. It supports all .NET 5.0 platforms:
- Windows (x64, x86, ARM64)
- Linux (x64, ARM32, ARM64)
- macOS (x64)
Support for Ed25519 X.509 certificates in TLS 1.3
We added support for TLS 1.3 with X.509 certificates using Ed25519 algorithm (EdDSA on edwards25519 curve) to all Rebex libraries with TLS support.
However, due to limitations of .NET and all supported operating systems, a custom certificate validator is needed to validate Ed25519 certificates.
Built-in Ed25519 support
We have already been supporting Ed25519 (EdDSA on edwards25519 curve) in SSH for several years,
but an external plugin was needed to make it work.
That is no longer case, and ssh-ed25519
SSH cipher works out-of-the-box.
EWS API improvements
The Ews
class supports a handful of new features, including searching by status flags or custom 'X-' mail headers.
Virtual file system improvements
This release brings several enhancements and optimizations to our virtual file system API.
SSH tunnel improvements
SSH tunnels can now be created with TCP_NODELAY option (use Ssh.Settings.SetNoDelayForTunnelSockets
option)
and a new Ssh.TunnelError
event has been added for handling tunnel errors.
New AES/GCM API
Our new Rebex.Security.Cryptography.AesGcm
class resembles .NET 5.0's class of the same name,
but it's available on all supported platforms including .NET Framework 3.5/4.0 and Mono 5/6.
Detailed list of changes:
- All: Added support for .NET 5.0 on all platforms.
- FTP: Closing currently connecting sockets when Dispose method is called.
- File Server: Increased SFTP receive buffer size.
- File System: Added IsDelayedWriteContent and IsImmediateWriteContent properties to the NodeContent class.
- File System: FileSystemNotifier raises SaveContentSurrogate event for 'delayed write' instances of the NodeContent that have been created previously in the handler of the GetContentSurrogate event or GetContentCompleted event.
- File System: Optimized critical sections in virtual file system providers.
- File System: Optimized handling of small files in MemoryFileSystemProvider.
- File System: Optimized internal communication between virtual and physical file systems.
- File System: Optimized memory usage in the MemoryFileSystemProvider under typical scenarios.
- File System: SetContent method in the LocalFileSystemProvider file nodes now truncates the underlying file before writing the new content (does not affect SFTP).
- File System: Virtual file system providers throw a FileSystemException when a source node is same as a target node.
- MSG: Fixed error message that occurs when a 2GB limit for Outlook MSG files is exceeded.
- SMTP: Closing currently connecting sockets when Dispose method is called.
- POP3: Closing currently connecting sockets when Dispose method is called.
- IMAP: Closing currently connecting sockets when Dispose method is called.
- EWS: Added a check to EwsFolderId(EwsSpecialFolder, string) constructor to make sure the specified mailbox is not empty.
- EWS: Added EwsFolderInfo.UnreadItemCount property.
- EWS: Added EwsSearchParameter.HasFlag search parameter (enabled searching by flag).
- EWS: Added support for searching by custom "X-" headers.
- EWS: Added support for searching by Sensitivity message flag.
- SSH Shell: Added Ssh.​Settings.​SetNoDelayForTunnelSockets option to enable TCP_NODELAY option for tunnel sockets.
- SSH Shell: Added Ssh.TunnelError event for handling tunnel errors.
- HTTP: Enhanced authentication to only attempt to use NTLM, Kerberos or Negotiate if the OS is configured to supports them.
- HTTP: Fixed possible NullReferenceException in Cookie parser if the received cookie contains particular corrupted value.
- TLS Core: Added support for X.509 certificates with Ed25519 keys to TLS 1.3.
- TLS Core: Improved exception messages in TLS 1.3.
- Cryptography: Added built-in support for Ed25519 algorithm.
- Cryptography: Added Rebex.Security.Cryptography.AesGcm class (equivalent to .NET 5.0's AesGcm class, but available on all platforms including .NET Framework 3.5).
- Cryptography: Added SetOtherNames/GetOtherNames methods to CertificateInfo class ('Other Name' support in SANs).
- Cryptography: AsymmetricKeyAlgorithm.ImportKey method can initialize Ed25519 key from seed (in addition to private key).
- Cryptography: AsymmetricKeyAlgorithm.Register method made thread-safe.
- Cryptography: Deprecated CryptoHelper.ForceManagedAes property.
- Cryptography: Enhanced compatibility with unsupported legacy versions of CryptoAPI.
- Cryptography: Enhanced SignedData.Load(Stream) and EnvelopedData.Load(Stream) methods to support Base64-encoded format (PEM) as well.
- Cryptography: Enhanced workaround for RSA CSPs with lack of SHA-2 support.
- Common: Added SspiAuthentication.IsSupported method.
- Common: Enhanced EncodingTools helper class to always provide Encodings with implemented HeaderName, EncodingName and BodyName properties.
- Released
- September302020
2020 R4 #
(version 5.0.7579 from 2020-09-30)
Fully tested on .NET 5.0 RC1
Rebex assemblies targeting .NET Standard 2.1 have been fully tested on .NET 5.0 RC1 and are suitable to be used in production on Microsoft's latest .NET platform.
Enhanced HTTP cookie API
This release adds HttpRequest.CookieContainer
and HttpResponse.Cookies
properties,
making cookie manipulation easier.
Removed all BinaryFormatter usage
.NET's BinaryFormatter
class is
considered dangerous
and should not be used for data processing. This applies to related types as well.
This version no longer uses BinaryFormatter
internally during serialization.
Detailed list of changes:
- All: Fixed several minor compatibility issues on .NET 5.0 RC1.
- FTP: Fixed culture-specific handling of DateTime in Ftp.SetFileDateTime method.
- File Server: Added workarounds for incompatibilities in SSH renegotiation with JSCH, SSH.NET and very old OpenSSH.
- File Server: Enhanced FileServer infrastructure API to make it possible to start SFTP/SSH session on a pre-connected Socket.
- File Server: Enhanced virtual shell's mkdir command to support '-p' option.
- File Server: Fixed algorithm support check when adding an Ed25519 key to FileServer.Keys collection.
- File Server: Fixed behavior of SSH_FXP_MKDIR on non-Windows operating systems.
- File System: Added Length property to the NodeContent class.
- File System: Added OriginalNode property to FileSystemNotifier.RenameCompleted event argument.
- File System: Added SaveContentPreview, SaveContentSurrogate and SaveContentCompleted events to virtual file systems.
- EWS: Added Ews.​Settings.​ExpectContinueSizeThreshold option.
- EWS: Using EWS X-AnchorMailbox HTTP header to maintain mailbox affinity.
- Syslog: Added support for Syslog over TLS.
- Syslog: Fixed behavior of SyslogServer(string serverName, int port).
- Syslog: SyslogServer class now closes active connections when Stop() metod is called.
- Time: Fixed wrong platform check in SystemClock (caused NotSupportedException).
- Security: Fixed behavior of XtsStream.CanSeek and CanRead properties.
- HTTP: Added HttpRequest.CookieContainer and HttpResponse.Cookies properties.
- HTTP: Improved TLS session cache behavior in scenarios with load balancing servers.
- Networking: Restored missing NetworkSession.InstanceId property.
- TLS Core: Fixed concurrent access in server-side TLS session cache.
- TLS Core: Fixed normalization of premaster secret in server-side ECDH calculations in TLS 1.2 and earlier.
- TLS Core: Updated TlsCipherSuite.Secure/Weak/Fast enum values. Updated TlsParameters.AllowedSuite default.
- TLS: Added more AuthenticateAsClientAsync/​AuthenticateAsServerAsync overloads.
- Cryptography: Added Ed25519 support to Certificate class. (Not yet supported by the built-in certificate validator due to lack of support in Windows and .NET).
- Cryptography: Fixed handling of non-content data in Certificate(byte[]) constructor and CertificateChain.LoadP7b(Stream) / CertificateRevocationList.​Load(Stream) methods.
- Cryptography: Fixed parsing of constructed primitive ASN.1 types with more than two layers of nesting.
- Cryptography: Fixed version number in PKCS #10 CertificationRequest structure.
- Cryptography: Prohibited usage of Chacha20/Poly1305 in TLS 1.3 in FIPS-only mode. (Already prohibited in TLS 1.2 or earlier.)
- Cryptography: Updated RSAManaged constructor logic to make it suitable as a base for derived classes on .NET Framework in FIPS-compliant mode.
- Cryptography: Using Windows CNG API for Diffie-Hellman parameter generation on Windows 10 and Windows Server 2016/2019.
- Common: Optimized internal cancellation infrastructure on old platforms.
- Common: Removed usage of BinaryFormatter which has been found to be insecure.
- Common: Updated EncodingTools.GetEncoding method to prefer encodings provided by .NET.
- Released
- July142020
2020 R3 #
(version 5.0.7501 from 2020-07-14)
Binaries for .NET Standard 2.1
We added a new set of binaries targeting .NET Standard 2.1. They are suitable for .NET Core 3.1 and .NET 5.0 Preview 6, on Windows, Linux and macOS.
For an overview of available binaries and supported platforms, check out Rebex Support Lifecycle KB article.
New TlsStream API
In addition to TlsClientSocket
and TlsServerSocket
, Rebex TLS
now featues TlsStream
class as well. Its API resembles .NET's SslStream
,
and it supports TLS 1.0-1.3 on all mainstream .NET platforms including .NET Framework 3.5 on Windows 7
(or even on Windows XP SP3 with a plugin).
Improved TLS core
This release brings enhancements, optimizations and fixes in the TLS core.
OAuth2 support in POP3
Our POP3 class now supports OAuth2 authentication mechanism, which is suitable for Gmail, Office 365 and Outlook.com servers (and possibly others). (IMAP, SMTP and EWS classes have already been supporting this feature.)
Detailed list of changes:
- All: Added binaries targeting .NET Standard 2.1.
- SFTP: Added workaround for misbehaving SSH_FXP_STAT on DataPowerSSH servers (SftpSettings.​EnableBrokenDirectoryStatWorkaround option).
- File Server: Added support for anonymous authentication.
- File Server: Fixed handling of unknown SSH packets received before authentication.
- File Server: Changed SSH cipher info logging style (unified with client-side SSH).
- File Server: Workaround for very old OpenSSH 4.x/5.x clients that refuse to accept data packets while SSH renegotiation is in progress.
- Mail: Added MailSettings.AllowOversizedLines option.
- POP3: Added OAuth 2.0 authentication support.
- IMAP: Added workaround for Office 365 and Yahoo IMAP servers that do not properly handle OAuth 2.0 tokens sent as IMAP literals.
- EWS: Fixed parsing of SOAP messages with 'xsd:any' elements.
- SSH Shell: When TerminalOptions.LocalEcho is enabled, echo opcode is requested on SSH channel.
- HTTP: Fixed HTTP request retry behavior. Retry request is not initiated when failed request already started sending the request body.
- SSH: Enhanced legacy group exchange autodetection.
- TLS Core: Added TlsSocket.ApplicationProtocol property to make it possible to determine protocol negotiated using ALPN extension.
- TLS Core: Always preferring RSA/SHA-2 for client certificate authentication in TLS 1.2.
- TLS Core: Disabled ciphers based on AES/CBC and SHA-2 in legacy versions of TLS (they are only specified by TLS 1.2).
- TLS Core: Fixed availability of TLS 1.3 session tickets (client side).
- TLS Core: Fixed handling of multiple concurrent Receive or Send method calls in TLS 1.3.
- TLS Core: Fixed handling of TLS 1.3 KeyUpdate handshake message.
- TLS Core: Fixed server name handling for TlsSocket instances created from an already-connected Socket.
- TLS Core: Fixed TlsException.Status to return ConnectionClosed for connection-closed errors.
- TLS Core: Fixed TlsException.Status to return Timeout for timeout errors.
- TLS Core: Fixed TlsSocket.ClientCertificate that returned an empty chain instead of null in some scenarios.
- TLS Core: Improved error message when server certificate is rejected in TLS 1.3.
- TLS Core: Improved error messages in TLS 1.3.
- TLS Core: Logging improvements.
- TLS Core: No longer sending 'internal error' alert to remote end on timeout.
- TLS Core: Optimized TLS 1.3 internals.
- TLS Core: TLS 1.3 initiates key update properly (before the AEAD limits are reached).
- TLS Core: Unified behavior of the Receive and ReceiveAsync methods across TLS versions.
- TLS: Added DisposeAsync method to TlsSocket.
- TLS: Added server-side support for Application-Layer Protocol Negotiation (ALPN) extension (RFC 7301).
- TLS: Added TlsParameters.CertificateChainMode property.
- TLS: Added TlsStream class. Supports TLS 1.0-1.3 via Stream-based API.
- TLS: An error is reported when trying to use one of deprecated methods via TlsServerSocket.
- TLS: Fixed error messages reported on client certificate validation to properly refer to client certificate.
- TLS: Fixed error reporting when trying to use SSL 3.0 on Windows OS in FIPS-only mode.
- Cryptography: Fixed encoding of ECDSA signatures in PKCS #7 CertificationRequest structure.
- Cryptography: Memory usage optimizations in CNG layer.
- Cryptography: On Windows 10 and Windows Server 2016 or higher, Windows CNG API is used for classic Diffie-Hellman calculations instead of legacy Windows CryptoAPI.
- Cryptography: Optimized disposing of temporary keys in Certificate class.
- WebSocket: Enhanced keep-alive logic. Pings are now send from Poll method as well if appropriate.
- Released
- May242020
2020 R2 #
(version 5.0.7450 from 2020-05-24)
Server-side TLS 1.3 support
Added TlsServerSocket
class. Supports server-side TLS 1.3, 1.2, 1.1 and 1.0.
Support for AES/GCM, ChaCha20/Poly1305 and EtM MAC ciphers in SFTP/SSH server
This release adds support for the following modern SSH AEAD encryption ciphers to Rebex File Server:
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
It also adds support for the following encrypt-then-MAC ciphers:
hmac-sha2-256-etm@openssh.com
hmac-sha2-512-etm@openssh.com
Detailed list of changes:
- FTP: Added FtpExtensions.ExtendedPassiveMode (enables EPSV if supported by the server).
- FTP: Added FtpSettings.​EnableBrokenShutdownWorkaround option (workaround for FTPS servers that don't handle TLS 1.3 close messages properly).
- File Server: Added FileServerSettings.​EnableEventsForFailedTransfers option.
- File Server: Added ServerSession.Cipher property to make it possible to determine SSH ciphers used by each session.
- File Server: Added support for AEAD encryption ciphers ('aes128-gcm@openssh.com', 'aes256-gcm@openssh.com' and 'chacha20-poly1305@openssh.com').
- File Server: Added support for encrypt-then-MAC ciphers ('hmac-sha2-256-etm@openssh.com' and 'hmac-sha2-512-etm@openssh.com').
- File Server: Enhanced handling of 'pty-req' and 'window-change' SSH channel requests - wrong values are rejected.
- File Server: Enhanced ShellModule class to make it possible to implement custom SSH subsystems.
- File Server: Fixed client authentication using X.509 certificates.
- File Server: Fixed handling of unknown SSH packets.
- File Server: Virtual shell now treats the line-feed character as end-of-line indicator in addion to carriage-return character.
- Mail: Added MailSettings.DoNotTrimHeaderValues property.
- Mail: Added ParsingHeader event to MailMessage and MimeEntity, making it possible to custom-process headers on input.
- SSH Shell: Added LocalEndPoint and RemoteEndPoint properties to SshTunnel class.
- Terminal: Improved TerminalControl.Bind method behavior to prevent needless locking.
- ZIP: Added workaround for empty file names in GZIP files.
- SSH: Added new properties to SshCipher to make it possible to determine IDs of active ciphers.
- SSH: Added workaround for a weakness in legacy CBC ciphers.
- TLS Core: Enhanced TlsSocket.Timeout property to apply to subsequent Send, SendAsync, Receive and ReceiveAsync methods even when TLS is already active.
- TLS Core: Fixed availability of TLS 1.3 session ticket when the receive side of the connection has already been closed.
- TLS Core: Fixed behavior of server-side DoNotCacheSessions option (which previously led to connection failures).
- TLS Core: Fixed some cases of missing AggregateException unwrapping.
- TLS Core: Improved and unified behavior of TlsSocket Shutdown/ShutdownAsync methods when negotiation has not been started.
- TLS Core: Improved TLS exception reporting.
- TLS Core: Logging improvements.
- TLS Core: Optimizations in TLS 1.3 internals.
- TLS Core: Support for the TLS 1.3 record with empty application data payload and random padding.
- TLS Core: Unified TlsSocket.Cipher property behavior across TLS versions.
- TLS: Added TlsServerSocket class. Provides server-side TLS 1.3, 1.2, 1.1 and 1.0 support.
- TLS: Fixed TlsClientSocket.EndConnect method.
- Cryptography: Added ContentInfo.ToStream() method.
- Cryptography: Enhanced Certificate.LoadDerWithKey to support RSASSA-PSS and RSAES-OAEP for RSA keys.
- Cryptography: Fixed AsymmetricKeyAlgorithm.​GenerateDiffieHellmanParameters slowness (only affected the previous release).
- Cryptography: Improved AsymmetricKeyAlgorithm to support RSASSA-PSS and RSAES-OAEP with keys loaded via ImportKey method.
- Cryptography: Optimized Certificate and CertificateChain class to only consume native resources when needed.
- Cryptography: Optimized CNG handles cleanup.
- Released
- March252020
2020 R1.1 #
(version 5.0.7390 from 2020-03-25)
Fixed a renegotiation issue that could lead to decryption error
After we started using Windows 10's native X25519 curve support, the shorter duration of SSH key exchange uncovered a bug that occasionally causes an SSH session failure following an SSH renegotiation. The issue manifested itself as a decryption error at the client side. The cause of this problem has now been fixed. If you are currently using Rebex File Server 2020 R1, upgrading to 2020 R1.1 is recommended.
Fixed several TlsClientSocket omissions
This version fixes several omissions and leftovers in the new TlsClientSocket
class,
mostly related to legacy parts of its API that have been retained from the existing TlsSocket
class
Reintroducing fast Diffie-Hellman on Xamarin.Android
Until 2019 R4.2, Rebex binaries for Xamarin.Android platforms used Android's cryptographic API for Diffie-Hellman calculations. However, this functionality is no longer available in current Rebex binaries targeting Xamarin.Android via .NET Standard 2.0. To make it possible to use the faster Diffie-Hellman implementation on Xamarin.Android again, we have added it to our native extensions library. Once enabled, it will make Diffie-Hellman key exchange in TLS and SSH as fast on Xamarin.Android as before.
Detailed list of changes:
- SFTP: Fixed an issue in GetItems() method that caused file system items with an unknown type to not be filtered according to the specified mask.
- FTP: Fixed an issue in GetItems() method that caused file system items with an unknown type to not be filtered according to the specified mask.
- File Server: Fixed a renegotiation issue that could lead to decryption error.
- File Server: Fixed FileServer.Stop() method to no longer fail with 'The specified socket is already in use' error in rare scenarios.
- File Server: Fixed partial authentication message processing to ensure no authentication method is used twice during a single authentication session.
- File Server: Fixed reporting of writable permissions for read-only items.
- ZIP: Fixed an issue in GetItems() method that caused file system items with an unknown type to not be filtered according to the specified mask.
- Networking: Fixed rare race condition in TLS and SSH internals.
- TLS Core: Fixed breaking changes in the behavior of seldom-used parts of TlsSocket API.
- TLS Core: Fixed handling of OperationCanceledException in TLS 1.3 core.
- TLS Core: Improved TLS logging.
- TLS: Added BeginNegotiate/EndNegotiate methods to TlsClientSocket class.
- TLS: Added support for TlsClientSocket.Available property.
- TLS: Fixed disabled BeginConnect/EndConnect on TlsClientSocket.
- TLS: Fixed TlsClientSocket's BeginSend/BeginReceive methods to use truly asynchronous implementation.
- Common: Added DiffieHellmanNative class to Rebex.Common.Native assembly (speeds up Diffie-Hellman calculations on Xamarin.Android).
- Released
- February212020
2020 R1 #
(version 5.0.7357 from 2020-02-21)
New library: Rebex TLS
Rebex TLS is a low-level TLS client library. It supports TLS 1.3, TLS 1.2 and earlier versions on all mainstream platforms including .NET Framework 3.5 on Windows 7 (or on Windows XP SP3 with a plugin). SHA-2, SNI, AES/GCM, ChaCha20/Poly1305 and other modern TLS features are supported as well.
The new library is available as a standalone package or as a part of Rebex Total Pack.
.NET Standard 2.0 on Xamarin.Android and Xamarin.iOS
Rebex binaries targeting .NET Standard 2.0 are now supported on Xamarin.Android and Xamarin.iOS. Previously-available binaries targeting specific Xamarin platforms have been deprecated, and .NET Standard 2.0 binaries should be used instead.
Note: Applications that require certificate validation
also need to use the new Rebex.Common.Native.dll
assembly which provides
validation of X.509 certificates on Xamarin.Android and Xamarin.iOS.
ChaCha20-Poly1305 support in TLS 1.3 and 1.2
Our TLS 1.3/1.2 core now supports the following ChaCha20-Poly1305 cipher suites:
- TLS_CHACHA20_POLY1305_SHA256 (TLS 1.3)
- TLS_​DHE_​RSA_​WITH_​CHACHA20_​POLY1305_​SHA256 (TLS 1.2)
- TLS_​ECDHE_​RSA_​WITH_​CHACHA20_​POLY1305_​SHA256 (TLS 1.2)
- TLS_​ECDHE_​ECDSA_​WITH_​CHACHA20_​POLY1305_​SHA256 (TLS 1.2)
To enable these ciphers, use Settings.SetSymmetricCipherSuites(...)
method for TLS 1.3
and Settings.SslAllowedSuites
property for TLS 1.2.
Native X25519 elliptic curve support on Windows 10
On Windows 10, Windows Server 2016 and Windows Server 2019, Rebex libraries using ECDH key exchange in TLS or SSH now support X25519 curve (also known as Curve25519) without any external plugins.
Better Elliptic Curve Diffie-Hellman support on Windows 10
On Windows 10, Windows Server 2016 and Windows Server 2019, Rebex libraries now fully supports ECDH key exchange without having to rely on external plugins and workarounds.
Support for server-side file hash calculation
Support for check-file
SFTP extension has been added to Rebex File Server,
making it possible for SFTP clients
(such as Rebex SFTP)
to retrieve hashes of remote files.
End of Standard Support for .NET Framework 2.0 and 3.0
2019 R4.2 was the last release to include support for .NET Framework 2.0 and 3.0 in the standard package. Customers using these platforms are advised to migrate to .NET Framework 3.5 SP1, which will enjoy mainstream support until 2023-10-10.
For customers who are unable to migrate, a Legacy Edition of Rebex libraries for .NET Framework 2.0/3.0 is available.
Deprecated .NET Core 1.0/1.1
.NET Core 1.1 and 1.0 became end-of-life platforms at 2019-06-27. In accordance with our framework support policy, they are no longer supported by Rebex libraries. Customers using these platforms are advised to migrate to .NET Core 2.1 or .NET Core 3.1.
Detailed list of changes:
- All: Binaries targeting .NET Standard 2.0 now support Xamarin.Android and Xamarin.iOS.
- All: Deprecated binaries targeting .NET Standard 1.5, Xamarin.Android and Xamarin.iOS.
- All: Fixed several occurences of culture-sensitive string formatting.
- All: Fixed several occurrences of wrong synchronization context.
- All: Mainstream edition no longer supports .NET Framework 2.0/3.0 and .NET Core 1.0/1.1.
- SFTP: Fixed handling of symbolic link source paths in non-recursive multi-file operation.
- SFTP: Unified GetConnectState() behavior across platforms.
- FTP: Fixed handling of symbolic link source paths in non-recursive multi-file operation.
- FTP: Unified GetConnectState() behavior across platforms.
- File Server: Added full support for Elliptic Curve Diffie-Hellman (ECDH) on Windows 10, Windows Server 2016 and Windows Server 2019.
- File Server: Added support for 'curve25519-sha256' key exchange cipher (equivalent to already-supported 'curve25519-sha256@libssh.org').
- File Server: Added support for 'check-file' SFTP extension, making it possible to calculate hashes of remote files.
- IMAP: Added workaround for IMAP servers with incomplete COPYUID responses.
- ZIP: Fixed handling of symbolic link source paths in non-recursive multi-file operation.
- SSH: Added full support for Elliptic Curve Diffie-Hellman (ECDH) on Windows 10, Windows Server 2016 and Windows Server 2019.
- SSH: Added support for 'curve25519-sha256' key exchange cipher (equivalent to already-supported 'curve25519-sha256@libssh.org').
- SSH: Enhanced performance of ChaCha20-Poly1305 cipher ('chacha20-poly1305@openssh.com') in SSH client.
- SSH: Fixed possible deadlock in SSH client when processing incoming EOF packet while waiting for remote receive buffer size to increase.
- TLS Core: Added asynchronous methods to TlsSocket base class.
- TLS Core: Added SetSymmetricCipherSuites/​GetSymmetricCipherSuites methods to configure enabled TLS 1.3 cipher suites.
- TLS Core: Added support for ChaCha20-Poly1305 cipher suites to TLS 1.3 and 1.2.
- TLS Core: Fixed behavior of TlsSocket methods after Dispose has been called.
- TLS Core: Fixed behavior of TlsSocket.Shutdown.
- TLS Core: Improved argument checks in TlsSocket base class.
- TLS Core: Improved multi-pass parsing of the TLS 1.3 records.
- TLS Core: Many optimizations in TLS 1.3 core.
- TLS: Initial release of a stand-alone Rebex TLS library.
- TLS: Initial release of stand-alone Rebex TLS component.
- Cryptography: Added full support for Elliptic Curve Diffie-Hellman (ECDH) on Windows 10, Windows Server 2016 and Windows Server 2019.
- Cryptography: Added native support for ECDH with X25519 curve on Windows 10, Windows Server 2016 and Windows Server 2019.
- Common: Internal optimizations.
- Released
- January152020
2019 R4.2 #
(version 5.0.7320 from 2020-01-15)
Maintenance release
This release improves certificate selection in the HTTPS library and solves several issues in the shared functionality.
Detailed list of changes:
- HTTP: Improved selection logic of client certificates in HttpRequest.ClientCertificates collection.
- SSH: Fixed possible deadlock during SSH renegotiation (client-side).
- TLS Core: Fixed renegotiation in TLS 1.2 (has been broken since 2019 R4).
- Cryptography: Added workaround for RSA signatures shorter than the key size (.NET Core on Linux is unable to handle them).
- Cryptography: Fixed AsymmetricKeyAlgorithm.​GetRawPublicKey() key format when RSA via MS CNG is in use.
- Cryptography: Only known external plugins are allowed for enhanced security.
- Cryptography: Saving public key as well when saving X25519 private keys.
- Released
- December162019
2019 R4.1 #
(version 5.0.7290 from 2019-12-16)
.NET Core 3.1 support
.NET Core 3.1 is now supported on the following platforms:
- Windows (x64, x86, ARM32)
- Windows 10 IoT (x64, x86, ARM32)
- Linux (x64, ARM32)
- macOS (x64)
TLS 1.3 improvements
This release fixes several issues in our new TLS 1.3 core. If you are already using TLS 1.3, upgrading to this release is recommended.
Please note that TLS 1.3 support is not enabled by default yet to prevent interoperability issues
with legacy third-party servers. To enable it, use SslAllowedVersions
setting, as described
in our TLS 1.3 support announcement.
Detailed list of changes:
- All: Added support for .NET Core 3.1.
- All: Added support for Mono 6.x.
- SFTP: Fixed a possible deadlock when adjusting SSH channel window size during SSH renegotiation.
- FileTransferClient: Fixed exception handling in FileTransferClient.ConnectAsync method.
- FTP: Fixed transfer aborting logic that caused data connection sockets to remain unclosed in some scenarios.
- FTP: Using TLS version of the control connection when negotiation the data connection.
- File Server: Added FileServer.Settings.MaxIdleDuration and IgnoreKeepAlive to make it possible to easily force closure of idle sessions.
- Mail: No longer throwing an exception when parsing invalid UUEncoded data.
- SMTP: Added workaround for a bug in .NET 4.0 which triggers an exception when sending email via SmtpDeliveryEngine.System with SmtpDeliveryMethod.PickupDirectory method if no host is specified.
- POP3: Improved handling of Exchange-style domain+login+mailbox usernames.
- IMAP: Improved handling of Exchange-style domain+login+mailbox usernames.
- Terminal: Added workaround to terminal Unbind method for SSH servers that don't properly respond to SSH_MSG_CHANNEL_CLOSE and caused the method to block until timed out.
- HTTP: Added GetHeaders methods representing HEAD request to WebClient class.
- HTTP: Added missing ResponseHeaders property to WebClient class.
- Networking: Added missing 'buffer' argument check to some Send/Receive methods in ProxySocket/TlsSocket.
- Networking: Fixed unhandled ObjectDisposedException or misleading SocketException when ProxySocket.Connect aborted due to timeout.
- SSH: Added a workaround for a bug introduced in OpenSSH 8.0 that rejects 'sender channel' numbers in the upper half of uint32 range.
- SSH: Added SshEncryptionMode.AEAD (to replace SshEncryptionMode.GCM).
- SSH: Added support for ChaCha20-Poly1305 AEAD cipher ('chacha20-poly1305@openssh.com') to SSH client.
- TLS Core: Added support for RSASSA-PSS signatures in TLS 1.2 when TLS 1.3 has been enabled.
- TLS Core: Avoid unwanted truncation of outgoing TLS 1.3 messages when TlsSocket is disposed.
- TLS Core: Enhanced error message when no suitable curve is available.
- TLS Core: Fixed compatibility issue with Xamarin's "Sdk Assemblies Only" option.
- TLS Core: Fixed exception type to TlsException for TLS 1.3 errors.
- TLS Core: Fixed handling of TLS 1.3 PSK-KE.
- TLS Core: Fixed check of signature algorithm in TLS 1.3 CertificateVerify.
- TLS Core: Fixed occasional failure when negotiating TLS 1.2 or lower when TLS 1.3 is allowed.
- TLS Core: Fixed order of supported signature schemes in TLS 1.3 ClientHello message.
- TLS Core: Fixed parsing of fragmented TLS 1.3 handshake messages.
- TLS Core: Fixed parsing of the TLS 1.3 KeyShare extension.
- TLS Core: Fixed potential NullReferenceException when TLS 1.3 negotiation has been interrupted unexpectedly.
- TLS Core: Fixed selection of signature algorithm used in CertificateVerify handshake messages.
- TLS Core: Not announcing support for X.509 certificates with Ed25519 or RSASSA-PSS public key OID (not supported yet).
- TLS Core: Optimizations in TLS 1.3 internals.
- Cryptography: Added workaround for bad RSA/PSS signature algorithm identifiers with missing parameters.
- Cryptography: Enabled workaround for private key loading from Mono key store in .NET Standard edition on Mono.
- Cryptography: Enhanced 'Invalid key format' error message when loading a private key.
- Cryptography: Fixed serial number handling in CertificateIssuer to conform to RFC 5280 constraints.
- Common: Binaries for .NET Standard 1.5 now use System.Collections.NonGeneric instead of custom implementations.
- Common: Enabled Xamarin.Android workarounds in .NET Standard 2.0 edition.
- Common: Improved ISafeSerializationData support detection.
- Released
- October312019
2019 R4 #
(version 5.0.7244 from 2019-10-31)
Support for TLS 1.3
This release adds support for TLS 1.3 with the following protocols:
-
HTTPS (
HttpRequestCreator
/HttpRequest
andWebClient
classes) -
WebSocket (
WebSocketClient
class) -
FTP (
Ftp
class) -
IMAP (
Imap
class) -
SMTP (
Smtp
class) -
POP3 (
Pop3
class) -
EWS (
Ews
class) -
Telnet (
Telnet
class)
Detailed list of changes:
- SFTP: Improved behavior of stream-based PutFile methods with DisableProgressPercentage (stream length is no longer determined).
- FTP: Added support for TLS 1.3.
- FTP: Improved behavior of stream-based PutFile methods with DisableProgressPercentage (stream length is no longer determined).
- File Server: Enhanced handling of exceptions in custom events.
- File Server: Enhanced normalization of Windows-like paths (only applies to AcceptWindowsPaths option).
- File Server: Fixed timing out of not-yet-authenticated sessions.
- Mail: Added workaround for TNEF messages with invalid attachment media types.
- MIME: Added workaround for a mix of RFC 2231 and MIME-style parameter encoding.
- MSG: Fixed handling of end-of-line sequences in MSG properties.
- SMTP: Added support for TLS 1.3.
- POP3: Added support for TLS 1.3.
- IMAP: Added support for TLS 1.3.
- EWS: Added support for TLS 1.3.
- Telnet: Added support for TLS 1.3.
- HTTP: Added support for TLS 1.3.
- HTTP: Fixed port handling in HTTP session caching.
- HTTP: Fixed WebException.Status and Message for errors related to DNS resolving, proxies and TLS.
- TLS Core: Added support for ALPN TLS extension to TlsSocket.
- TLS Core: Added TlsBulkCipherMode.AEAD (to replace TlsBulkCipherMode.GCM).
- TLS Core: Removed support for two legacy unsecure anonymous ciphers (DH_anon_EXPORT_WITH_DES40_CBC_SHA and DH_anon_EXPORT_WITH_RC4_40_MD5).
- Cryptography: Added PkcsBase.LoadSignedOrEnvelopedData method (a replacement for deprecated PkcsBase.Load).
- WebSocket: Added support for TLS 1.3.
- WebSocket: Optimized operation with KeepAliveInterval of 0.
- Released
- September232019
2019 R3.2 #
(version 5.0.7206 from 2019-09-23)
.NET Core 3.0 support
This release introduces support for .NET Core 3.0 on the following platforms:
- Windows (x64, x86, ARM32)
- Windows 10 IoT (x64, x86, ARM32)
- Linux (x64, ARM32)
- macOS (x64)
Windows 10 IoT support
This release introduces support for .NET Core 3.0 on Windows 10 IoT on x64, x86 and ARM32 platforms.
Detailed list of changes:
- All: Added support for .NET Core 3.0.
- All: Added support for Windows 10 IoT (via .NET Core 3.0).
- SFTP: Added Settings.​PreferInteractiveAuthentication option (prefer 'keyboard-interactive' to 'password' authentication).
- SCP: Added Settings.​PreferInteractiveAuthentication option (prefer 'keyboard-interactive' to 'password' authentication).
- File Server: More common forms of ungraceful session termination are no longer logged as errors at LogLevel.Error.
- File System: Added FileServerUser constructors that accept FileSystemProvider.
- Mail: Disabled Attachment.DisplayName normalization (only FileName should have been normalized).
- Mail: Enhanced TNEF (winmail.dat) parser to detect embedded resources.
- SSH Shell: Added Settings.​PreferInteractiveAuthentication option (prefer 'keyboard-interactive' to 'password' authentication).
- SSH Shell: Added Ssh.StartSocksServer method (starts a local SOCKS5 proxy server that tunnels connections through SSH).
- Terminal: Fixed VirtualTerminal.SetScreenSize to notify the server.
- HTTP: Fixed an issue in cachable HTTP session detection that prevented sessions from being cached in some scenarios.
- SSH: Added SshGssApiCredentials.AccountName property to make it possible to specify an account name to be passed to the SSH server.
- SSH: Added workaround for legacy WS_FTP 7.x servers that encode long SSH packets improperly.
- SSH: Fixed SshChannel.SendEof method not to send EOF when channel has already been closed.
- Common: Optimized internal Task infrastructure on old .NET platforms.
- Released
- August092019
2019 R3.1 #
(version 5.0.7161 from 2019-08-09)
Removed SSL 3.0 from TlsVersion.Any
TlsVersion.Any
is no longer used by any Rebex library, but it might be used in custom applications.
This could present a security issue because until now, TlsVersion.Any
still used to contain TlsVersion.SSL30
.
SSL 3.0, a predecessor to TLS 1.0 protocol, has been published in 1996. It is comprehensively broken
and should no longer be used. Application that still use it violate RFC 7568, which deprecated SSL 3.0 in 2015.
Enhanced compatibility with Pure-FTPd server
Rebex FTP/SSL includes several new workarounds that enhance compatibility with Pure-FTPd server.
Detailed list of changes:
- All: Added support for serialization on Xamarin.Android and Xamarin.iOS platforms.
- SFTP: Improved logging of single-item SSH_FXP_NAME responses.
- FTP: Added workaround for occasional '451 Transfer aborted' observed with Pure-FTPd and TLS 1.3.
- FTP: Added workaround for Pure-FTPd's nonconvencial responses.
- FTP: Enhanced PutFileUnique to be compatible with Pure-FTPd's STOU command response.
- FTP: Transfer aborting made compatible with Pure-FTPd.
- File Server: Enhanced log to include enumerated item count when directory has been enumerated.
- Telnet: Fixed occasional logging of multiple "Received 0 byte(s) of data" messages.
- Terminal: Added check which limits color indices received from server to 256 colors to prevent an exception.
- TLS Core: Modified TlsVersion.Any to only include TLS 1.0, 1.1 and 1.2.
- Cryptography: Fixed handling of user-supplied RSACng in AsymmetricKeyAlgorithm and SshPrivateKey on modern platforms.
- Released
- June282019
2019 R3 #
(version 5.0.7119 from 2019-06-28)
Support for .NET Standard 2.0 on Mono 5.14 and higher
Binaries of Rebex libraries targeting .NET Standard 2.0 are now also supported on Mono 5.14 and higher.
End of Standard Support for .NET Compact Framework 3.5 and 3.9
2019 R3 is the last release that includes support for .NET Compact Framework 3.5 and 3.9 in the standard package. Starting with 2019 R4, .NET CF 3.5/3.9 will only be supported with Legacy Editions, which will be available as separate products. See their release history.
Detailed list of changes:
- All: Binaries targeting .NET Standard 2.0 are now supported on Mono 5.14 or higher.
- SFTP: Fixed Sftp.KeepAlive() to update State and IsConnected properties on failure.
- FileTransferClient: Fixed FileTransferClient.​DisconnectAsync() method that made it impossible to reconnect.
- File Server: Added dependency on Rebex.FileSystem to NuGet package for Rebex.FileServer.
- File Server: Added FileServerSettings.​MaxPendingConnectionsQueueLength (specifies the maximum queue length of the listening socket)
- File Server: Fixed rare NullReferenceException while enumerating FileServer.Sessions.
- MIME: Added support for SHA-224 signature hash algorithm.
- Time: Rejected NTP requests are no longer reported as timeout errors.
- SSH: Added SshPrivateKey.Generate(...) methods on .NET Compact Framework.
- SSH: Added workaround for broken EtM ciphers in OpenSSH 6.6.
- SSH: Enhanced GlobalScape SSH server detection.
- SSH: Enlarged upper limit for non-standard DSA keys to 8192 bits on .NET Framework and .NET Core.
- SSH: Fixed reporting of SSH_MSG_USERAUTH_GSSAPI_ERROR and SSH_MSG_USERAUTH_GSSAPI_ERRTOK responses.
- TLS Core: Added TlsCipherSuite.Fast enum value.
- TLS Core: Fixed a bug in server-side mode of TlsSocket that caused client certificate authentication to fail.
- TLS Core: Internal changes in the TLS layer (in preparation for the upcoming TLS 1.3 support on mainstream platforms).
- Cryptography: Added Certificate.GetPrivateKeyInfo() method.
- Cryptography: Added CertificateEngine.LocalMachine engine and CertificateEngine.Bind method.
- Cryptography: Added support for SHA-224 hash algorithm.
- Cryptography: Added support for X25519 key format (RFC 8410).
- Cryptography: Always using AES by default to encrypt PKCS #8 private keys.
- Cryptography: Meaningful error message for the CNG AEAD auth tag mismatch.
- Common: Optimized asynchronous continuations on modern platforms.
- Common: Upgraded Task infrastructure in Xamarin.Android binaries.
- Released
- May172019
2019 R2 #
(version 5.0.7077 from 2019-05-17)
Support for Visual Studio 2019
All Rebex libraries are now fully supported in Microsoft Visual Studio 2019.
Support for .NET Framework 4.8
.NET Framework 4.8 is a fully supported platform.
Native elliptic curve cryptography on Linux with .NET Core 2.1 or higher
On Linux, binaries for .NET Standard 2.0 now utilize OpenSSL elliptic curve routines via .NET Core 2.1 (or higher), making it possible to use ECDH and ECDSA ciphers in TLS/SSL and SFTP/SSH with no need of external plugins.
Detailed list of changes:
- All: Added support for .NET Framework 4.8 and Visual Studio 2019.
- All: Removed leftover Trace.Write logging.
- File Server: Added an option to make the SFTP protocol accept Windows path (only on input).
- File Server: Fixed race condition related to remote window size that could lead to hung channels.
- File System: Fixed a bug in enumeration of nested mount points in MountCapableFileSystemProvider.
- Mail: Fixed handling of unknown multipart entities.
- HTTP: Added support for legacy HTTP digest authentication.
- HTTP: Added WebClient.Timout property.
- SSH: Added dummy support for SSH_MSG_EXT_INFO (RFC 8308).
- Cryptography: Added CertificationRequest.Save method.
- Cryptography: Added support for ECDSA and ECDH on .NET Core 2.1/.2.2 on Linux (no need for external plugins).
- Cryptography: Added workaround for broken export of RSA keys from the CNG providers on Windows 7.
- Cryptography: Added workaround for CRLs with redundant trailing data to CertificateRevocationList.
- Cryptography: Added workaround for legacy versions of Mono with lack of SHA-2 support.
- Common: Asynchronous infrastructure improvements.
- Released
- March282019
2019 R1 #
(version 5.0.7027 from 2019-03-28)
New library: Rebex WebSocket
Rebex WebSocket is a multiplatform WebSocket client library that supports TLS 1.2/1.1/1.0, SHA-2, Server Name Identification (SNI), Renegotiation Indication Extension, Forward Secrecy, ZLIB. These features are available on all supported platforms: .NET Framework, .NET Compact Framework, Mono, Xamarin.iOS and Xamarin.Android.
The new library is available as a standalone package or as a part of Rebex Total Pack.
Improved platform support
This release adds three new sets of binaries targeting the following platforms:
- .NET Core 2.0/2.1/2.2 (via .NET Standard 2.0)
- .NET Framework 4.6.x/4.7.x
- .NET Framework 3.5 SP1
For an overview of available binaries and supported platforms, check out Rebex Support Lifecycle KB article.
API changes
In this release, we bumped the version to 5.0 and changed some parts of the API a bit. We removed parts of our API that have been deprecated for years, and we deprecated parts of our API that were considered outdated. Additionally, we made some missing methods available on Xamarin and .NET Standard 1.5 platforms as well.
These changes should only affect a minority of our users. If you are affected and need help, please contact us!
DSA deprecation in SFTP and SSH clients
Because DSA algorithm is now considered deprecated, we changed the preferred host key algorithm to RSA.
To revert to the previous behavior, set client.Settings.SshParameters.PreferredHostKeyAlgorithm
to SshHostKeyAlgorithm.DSS
.
MD5 deprecation in SshFingerprint
SshFingerprint
's ToString()
and ToArray()
methods
use SHA-256 now. To revert to previous behavior, specify SignatureHashAlgorithm.MD5
when calling these methods.
Rebex.FileSystem on .NET Framework 3.5
Virtual file systems in Rebex File Server are now supported on .NET Framework 3.5 SP1 as well.
Optimized AES/GCM performance
Improved performance of AES/GCM ciphers in TLS and SSH protocols on .NET Compact Framework and non-Windows platforms.
Improved compatibility with HttpWebRequest
HttpRequest
now features PreAuthenticate
and Expect
properties
that aim to be compatible with .NET's HttpWebRequest
.
Detailed list of changes:
- All: Added binaries targeting .NET Framework 3.5 SP1.
- All: Added binaries targeting .NET Framework 4.6 and higher.
- All: Added binaries targeting .NET Standard 2.0.
- All: Removed long-deprecated API. Deprecated legacy API.
- SFTP: Added SftpItemType.Fifo enum value.
- SFTP: Fixed SftpItem.Owner/Group properties that returned null (contrary to the documentation) when using SFTP v3.
- SFTP: GetItems() method changed to return items of unknown type instead of throwing an exception.
- FTP: Fixed parsing of millisecond-precision datetimes of MLST/MLSD format.
- FTP: GetItems() method changed to return items of unknown type instead of throwing an exception.
- File Server: Added workaround for SocketAsyncEventArgs which could be leaking memory due to a bug in .NET Core 2.0 or earlier.
- File System: Rebex.FileSystem now supports .NET Framework 3.5 SP1.
- MSG: Determining 'From' address from 'InternetAccountName' MAPI property when necessary.
- SMTP: Fixed rare IndexOutOfRange exception in Smtp.ResolveDomainMX and Smtp.SendDirect methods.
- IMAP: Improved performance and memory usage of Imap.GetMessages method.
- Terminal: Enhanced an error message reported when background processing mode has been enabled and application's main message loop gets stuck.
- HTTP: Added support for WebRequest.PreAuthenticate.
- HTTP: 'Host' HTTP header fixed to include port when required.
- HTTP: Changed behavior of HTTP redirects to match system HttpWebRequest behavior (primarily changing HTTP method to GET).
- HTTP: Implemented HttpRequest.Expect property and enabled by default.
- Networking: Fixed passing of state to the callback method in ProxySocket.BeginConnect and TlsSocket.BeginConnect.
- SSH: Changed behavior of SshFingerprint.ToString() and .ToArray() to use SHA-256.
- SSH: Improved performance of AES/GCM ciphers on .NET Compact Framework and non-Windows platforms.
- SSH: RSA host keys are preferred to DSA host keys.
- SSH: SHA-512 is only used during SSH client authentication when the RSA key length allows it.
- SSH: SshParameters.MinimumRsaKeySize now applies to client RSA keys as well.
- SSH: Using standard form of Diffie-Hellman group exchange with GlobalScape servers.
- TLS Core: Fixed passing of state to the callback method in ProxySocket.BeginConnect and TlsSocket.BeginConnect.
- TLS Core: Improved performance of AES/GCM ciphers on .NET Compact Framework and non-Windows platforms.
- Cryptography: Fixed behavior of HMAC mode in KeyMaterialDeriver.​DeriveKeyMaterial method.
- Cryptography: Fixed garbage collection issue with PFX-based certificate keys on non-Windows platforms.
- Cryptography: Fixed handling of shared secred padding in AsymmetricKeyAlgorithm.​GetKeyMaterialDeriver.​
- Cryptography: Fixed possible NullReferenceException in CertificationRequest.​GetAlternativeHostnames method.
- Common: Fixed Certificate.Associate with permanent bind on .NET Compact Framework to ensure the key is not garbage-collected.
- Common: LocalItem constructor no longer fails on items with invalid paths.
- WebSocket: Initial release.
- Released
- December212018
2018 R4 #
(build 6930 from 2018-12-21)
Password and key authentication in File Server
Support for authentication with both password and public key added to Rebex File Server.
Sorting support in EWS
Added overloads of Ews
object's GetMessageList
/GetItemList
/Search
/SearchItems
that make it possible to specify desired sorting order.
Support for yet another OpenSSH key encryption
Added support for new OpenSSH keys with AES-CTR encryption.
Detailed list of changes:
- File Server: Added support for combined (password+key) authentication.
- File System: Added NodeContent.​WasStreamClosedForcefully property to make it possible to detect files closed due to failed SFTP connection.
- MIME: Improved CMS and S/MIME key usage checks. Possibility to skip checks by SkipCertificateUsageCheck option.
- EWS: Added missing token-based Ews.LoginAsync method.
- EWS: Added support for sorting to GetMessageList/​GetItemList/​Search/​SearchItems methods.
- EWS: Fixed several log messages.
- Terminal: Added workaround for incompatible casings of 'Monospace' font name on Android.
- Terminal: Enhanced Alt keystroke handling and added TerminalContrl.AltKeyMode property.
- HTTP: Added HttpSettings.​HttpSessionCacheTimeout property.
- HTTP: Added logging of HTTP 'Connection' header.
- Networking: ProxySocket and TlsSocket implement IDisposable now.
- Networking: Added workaround to ProxySocket for ObjectDisposedException in Socket.ConnectAsync on .NET Core for macOS.
- SSH: Enhanced legacy group exchange autodetection.
- SSH: Fixed handling of Ssh.Encoding property.
- SSH: Fixed SshPublicKey(PublicKeyInfo) constructor that only accepted RSA or DSA keys.
- SSH: Fixed Verbose logging of interactive authentication.
- SSH: Changed SshParameters.MinimumRsaKeySize from 1024 to 1023 bits.
- TLS Core: Improved server certificate usage check.
- TLS Core: Improved TLS logging.
- Cryptography: Added support for 'BEGIN RSA PUBLIC KEY' keys (PKCS #1 / RFC 3447) to PublicKeyInfo.
- Cryptography: Added support for IP addresses in Subject Alternative Name certificate extension.
- Common: Added support for new OpenSSH key format with AES-CTR encryption.
- Common: Fixed possible certificate validation failures on some versions of Xamarin.Android.
- Released
- October262018
2018 R3 #
(build 6874 from 2018-10-26)
Password-hiding in Verbose logging mode
Communication logs created with Verbose
level no longer contain authentication credentials,
which makes it more convenient and safer to share them with others.
Support for canceling HTTP requests
Implemented HttpRequest.Abort()
method and added WebClient.Cancel()
method to make it possible to cancel
pending requests.
Support for 'fsync@openssh.com' SFTP extension
Added support OpenSSH's fsync
extension that makes it possible to ensure that modified file data has been
written to disk. At client-side, this has to be enabled using Sftp.Settings.EnableFileSync
property.
Added Sftp.CreateLink method
The new CreateLink
method supports both symbolic links and hard links. For hard-links,
the server must support OpenSSH's hardlink@openssh.com
extension.
Auto-connect on .NET Compact Framework
Added auto-connect feature on .NET Compact Framework.
Enabling HttpRequestCreator
's or WebClient
's Settings.AutoConnectToInternet
property
will make the library to try to establish an Internet connection automatically.
Connection-establishing API for .NET CF
Added very simple connection-establishing API for .NET Compact Framework (Rebex.Net.ConnectionManagement
namespace).
Detailed list of changes:
- All: Added password-hiding in Verbose logging mode.
- All: Added experimental support for Mono on Windows.
- All: Fixed messages of some ObjectDisposedException objects.
- SFTP: Added support for 'fsync@openssh.com' SFTP extension (enable using Sftp.Settings.FileSyncOnUpload property).
- SFTP: Added Sftp.CreateLink method (needs 'hardlink@openssh.com' extension support to create hard links).
- SFTP: Fixed minor race condition in Dispose method.
- File Server: Added support for 'fsync@openssh.com' SFTP extension.
- File Server: Enhanced logging of channel requests.
- MIME: Fixed handling of Unicode surrogate pairs in message headers.
- SMTP: Added SmtpDeliveryMethod.PickupDirectory property (replaces IisPickupDirectory and supported on all platforms).
- SMTP: Increased outgoing data chunk size.
- IMAP: Fixed encoding of open-interval message ranges in searches.
- HTTP: Added WebClient.Cancel() method.
- HTTP: Added Content-Encoding logging in Debug log level.
- HTTP: HttpRequestCreator.​Settings.​SslServerName is no longer ignored.
- HTTP: HttpRequest.Abort() method is supported now.
- HTTP: HttpRequest.Timeout applied to TLS negotiation as well.
- HTTP: Added HttpRequestCreator.​Settings.​AutoConnectToInternet on .NET Compact Framework.
- Networking: Added simple connection manager API on .NET Compact Framework (Rebex.Net.ConnectionManagement namespace).
- Networking: Report a meaningful error message when .NET Compact Framework's 'not a socket' issue is encountered.
- SSH: Added SshParameters.MaximumPacketSize property.
- SSH: Fixed Login not to block Dispose in Sftp, Scp and Ssh classes.
- SSH: Using UTF-8 at SSH protocol level by default in Sftp, Scp and Ssh classes.
- SSH: Added logging of SSH channel window size adjustments.
- SSH: Fixed decompression in encrypt-then-mac (EtM) MAC mode.
- TLS/SSL: TLS cipher suite being negotiated is logged as soon as possible.
- Cryptography: CertificateStore implements IEnumerable<Certificate>.
- Cryptography: Proper error is reported when trying to validate ECDSA certificates on Mono.
- Common: Added optimized thread pool on .NET Compact Framework.
- Released
- September032018
2018 R2.1 #
(build 6821 from 2018-09-03)
Enhancements and bugfixes
This is a maintenance release with several bugfixes and enhancements.
Detailed list of changes:
- SFTP: Fixed aborting of Sftp object's Connect method when Dispose method has been called.
- File Server: Fixed semi-random timeout exception in SFTP subsystem on extremely fast connections.
- File Server: Added FileServer.Settings.KeepAlivePeriod to make it possible to specify that keep-alive packets are to be sent after a period of inactivity.
- File Server: Fixed range check in the setter of FileServer.​Settings.​MaxSessionDuration and FileServer.​Settings.​MaxSessionTransferredBytes properties.
- Mail: Fixed NullReferenceException when trying to sign a mail message using a certificate that is not intended for signing. A more meaningful exception is thrown instead.
- MSG: Fixed creation of EntryId properties in Outlook .MSG messages.
- MSG: Fixed handling of PGP-encrypted e-mails when converting between MIME and Outlook .MSG formats.
- Terminal: Increased timeout for marshalling events to GUI thread when debugger is attached.
- Terminal: Added RequestedAction.​SingleWidthSingleHeightLine.​
- Terminal: Improved terminal to support new control sequences (LNM, SRM, ECH, DSR, DECSCPP, DECSLPP, DECDHL).
- Terminal: Fixed Scripting.TrimReadUntilResponse behavior when the prompt is encountered multiple times.
- Terminal: Fixed terminal recorder that used to emit wrong escape sequences in some scenarios.
- ZIP: Tweaked GZIP header to be compatible with more third-party implementations.
- ZIP: Multiple calls of Close() on stream returned by ZipItem.Open() do not throw an exception anymore.
- HTTP: Made it possible to set 'User-Agent' header using Headers collection.
- Networking: Added Proxy.HttpUserAgent property to make it possible to specify User-Agent for HTTP CONNECT proxies.
- Networking: ProxySocket methods now throw ObjectDisposedException when disposed.
- SSH: Fixed data buffering when raising SshChannel.ExtendedDataReceived event.
- Cryptography: Optimized certificate signature validation on .NET Compact Framework.
- Released
- June292018
2018 R2 #
(build 6755 from 2018-06-29)
New fully supported platform: .NET Core on macOS
This release adds full support for .NET Core 2.x on macOS.
HttpWebRequest-like ClientCertificates collection
Added HttpRequest.ClientCertificates collection.
Enhancements and bugfixes
Enhancements and bugfixes in the shared functionality.
Detailed list of changes:
- All: Added support for .NET Core on macOS.
- FTP: Added Ftp.​Settings.​BackslashIsRemoteDirectorySeparator option.
- FTP: Fixed Download() method for filenames starting with backslash on Unix-like servers.
- FTP: Added Ftp.​Settings.​EnableRenameOperationForFileExistanceCheck option.
- SFTP: Improved Sftp.GetList() logging.
- SFTP: Fixed Download() method for filenames starting with backslash on Unix-like servers.
- File Server: Fixed behavior of Rename operation in virtual file systems when the source file name and the target file name differ only in letter casing.
- File Server: Fixed propagation of the custom error from the SaveContent method in virtual file systems.
- File Server: Tweaked default set of Diffie-Hellman group exchange parameters in order to be compatibile with GlobalScape clients.
- File Server: Fixed non-working combination of legacy 'diffie-hellman-group14-sha1' key exchange cipher with 'hmac-sha2-512' MAC cipher.
- Mail: Fixed Silent property usage in S/MIME and CMS.
- Mail: Fixed 'CertificateFactory PKIX implementation not found' error (reportedly occurred on some Android devices).
- Mail: Added MailMessage.​Settings.​TreatMixedInlineAsAttachment option.
- EWS: Fixed handling of attachments with invalid characters in file name.
- Telnet: Fixed wrong handling of 0D FF sequences (not processed if preceded by 0A and reported as regular data).
- Terminal: Added TerminalControl.MouseWheelMode property.
- Terminal: Improved logging in Scripting class at LogLevel.Debug level.
- Terminal: Added additional properties to RequestedAction enumeration (useful in TerminalControl.ActionRequested event).
- Terminal: Implemented proper Ctrl+arrow handling.
- Terminal: Fixed Scripting.​Send(ConsoleKey.​Spacebar).​
- HTTP: Added HttpRequest.ClientCertificates collection.
- Networking: Closed ProxySocket objects throw more meaningful exception.
- SSH: Added support for additional formats to SshPublicKey.
- SSH: Fixed possible bug in SshPublicKey loading.
- SSH: Added SshPrivateKey.GetPrivateKeyInfo() method.
- TLS/SSL: Added SslSettings.​SslServerCertificateValidationOptions and SslCertificateValidationEventArgs.​Options properties.
- Cryptography: Added workaround for eToken CSP private key operations.
- Cryptography: Fixed possible 'Unexpected key algorithm' error in AsymmetricKeyAlgorithm.
- Cryptography: Fixed Certificate.​GetSignatureHashAlgorithm() for RSASSA-PSS certificates
- Cryptography: RSACryptoServiceProvider usability detection made more compatible.
- Cryptography: Fixed CertificateStore.Exists on .NET Core.
- Cryptography: Fixed Certificate.HasPrivateKey for non-silent keys.
- Cryptography: Fixed potential security vulnerability in RSAManaged class (proper padding check in signature verification).
- Common: Fixed compatibility with AWS Lambda.
- Released
- April252018
2018 R1.1 #
(build 6690 from 2018-04-25)
New fully supported platform: .NET Core on Linux
This release adds full support for .NET Core 2.x on Linux.
Detailed list of changes:
- All: Added support for .NET Core on Linux.
- FTP: Added FtpListItemReceivedEventArgs.​UserState property.
- FTP: Fixed handling of symbolic link in multi-file operations.
- FTP: FtpItem.SymlinkPath is now set in Ftp.GetInfo() method as well.
- SFTP: Added SftpListItemReceivedEventArgs.​UserState property.
- File Server: Optimized directory content enumeration on virtual file systems.
- File Server: Fixed handling of wildcard characters on virtual file systems.
- File Server: Fixed behavior of virtual file systems when opening file in 'OpenOrCreate' mode.
- File Server: Fixed handling of missing source file in Rename operations on virtual file systems.
- File Server: Fixed race condition in ServerSession.SendMessage method (only encountered on .NET Compact Framework).
- File Server: Fixed behavior of virtual file systems when opening file in 'Create' mode with 'Read' access.
- File Server: Tweaked socket binding on .NET Core on Linux.
- Mail: Fixed support for TNEF messages with embedded S/MIME entity.
- MSG: 'InternetAccountName' and 'InternetAccountStamp' LID properties are now stored in MIME headers by MailMessage.Load() method when MailMessage.​Settings.​LoadMsgProperties option is enabled.
- IMAP: Improved IMAP 'Inbox' folder name normalization and added Imap.Settings.NormalizeInboxName property to make it possible to switch it off.
- Terminal: SCO character set disabled when using a UTF encoding.
- Terminal: Fixed ScriptEvent behavior on .NET Core on Linux.
- Security: FileEncryption object's EncryptionKeySize and XtsBlockSize properties are no longer ignored when using FileEncryptionAlgorithm.AesXts.
- HTTP: Added workaround for compressed response data not properly finished with a final block. Exception is still thrown if the decompressor was unable to flush all data to be processed.
- HTTP: Enhanced response logging.
- SSH: Fixed handling of invalid data packets claiming to contain more data than their payload length.
- TLS/SSL: Fixed error raising in TlsSocket's EndSend/EndReceive methods.
- Cryptography: Enhanced error message when trying to use signing-only RSA certificate for decryption.
- Cryptography: Fixed private key exporting on .NET Core on Linux.
- Cryptography: Fixed retrieval of certificate with bound keys from store on .NET Core on Linux.
- Cryptography: Fixed possible NullReferenceException in built-in custom certificate validator on .NET Compact Framework. Could occur using CRL validation.
- Cryptography: Fixed DSAManaged.ExportParameter method that failed to export parameters with missing Seed.
- Cryptography: Added CertificateEngine.​BuildChain(Certificate) method.
- Cryptography: Current CertificateEngine's BuildChain method is now used in CMS (PKCS #7) SignedData and EnvelopedData.
- Cryptography: Added Certificate.Tag property to make it possible to associate custom objects with a particular Certificate instance.
- Cryptography: Enhanced logging in built-in custom certificate validator on .NET Compact Framework.
- Released
- April012018
2018 R1 #
(build 6666 from 2018-04-01)
Additional SSH ciphers
Client-side SSH now supports AES/GCM ciphers and EtM MAC ciphers compatible with OpenSSH.
Fixed ZIP compression of large files
We have fixed a bug that caused occasional data corruption and a failed CRC check when compressing files larger than 2 GB.
Enhancements and bugfixes
Enhancements, bugfixes and workarounds in virtual file system infrastructure and other areas.
Detailed list of changes:
- FTP: Fixed handling of multi-line FTP responses in VMS listing parser.
- FTP: Fixed NullReferenceException in FtpItemCollection constructor (only occurred when directly parsing raw FTP responses).
- SFTP: Added Sftp.Settings.CustomCommand property.
- SFTP: Added workaround for GlobalScape servers that have issues with long data blocks.
- File Server: Fixed logging of cipher mismatch errors.
- File Server: Fixed logging of 'too many authentication attempts' error.
- File Server: Fixed behavior of 'cp' command in virtual shell.
- File Server: Retired FileServerAction.CopyFile and Rename actions (now reported as sequence of simpler actions).
- File Server: Fixed handling of custom exception in virtual file system providers.
- File Server: Added SshConsole.HasPseudoTerminal property.
- File Server: Added FileServer.​Settings.​ForceShellWelcomeMessage property.
- File Server: Treat both '\r' and '\n' as 'Enter' in terminal-less shell.
- File Server: Fixed incomplete (un)aliasing of virtual file system paths and related problems with Move operation.
- File Server: Disallowed non-empty directory removal in virtual file system.
- File Server: Added workaround for confusing sharing violation error when deleting non-empty directory on Windows Embedded Compact 7.
- File Server: Fixed buffer size in directory enumerator on .NET Compact Framework (potentially causing memory corruption).
- File Server: Fixed problems with incomplete enumeration of nodes in linked directories in MountCapableFileSystemProvider.
- File Server: Fixed handling of already-existent files in Rename/Move/Copy operations on virtual file systems.
- File Server: Added workaround for known issue in .NET Framework 4.5 ('Operation could destabilize the runtime' error).
- File Server: Added TunnelRequestedEventArgs.Session property.
- File Server: Added missing '.' and '..' entries when enumerating virtual file system directories.
- File Server: Fixed access mode when opening a files in virtual file system.
- File Server: Fixed unhelpful error message when creating a directory that already exists in a virtual file system.
- Mail: Added support for TNEF messages with embedded S/MIME entity.
- MIME: Added new encryption and hashing algorithms to CMS capabilities.
- SMTP: Fixed possible NullReferenceException in Smtp.ResolveDomainMX() method.
- POP3: Optimized memory usage in Pop3MessageInfo class.
- IMAP: Removed Lotus Domino workaround for redundant empty lines (it could trigger an error in other scenarios).
- IMAP: Imap.FolderExists no longer rejects wildcard characters.
- IMAP: Added workaround for Axigen server's strangely-behaved XLIST command.
- EWS: Added EwsSearchParameter.MessageId method to make it possible to search for a specific Message ID using Ews.Search method.
- EWS: Fixed handling of abandoned sockets.
- Terminal: Fixed an exception when resizing TerminalControl when the control is being disconnected.
- ZIP: Enhanced error message when trying to open GZIP as ZIP (or the other way around).
- ZIP: Added ZipArchive.Decrypt static method.
- ZIP: Added logging capability to ZipArchive class (ZipArchive.LogWriter property).
- ZIP: Fixed directory detection for Zip 64 archives.
- ZIP: Fixed a bug that could result in corrupted .ZIP files when compressing some files longer than 2 GB.
- ZIP: Enhanced internals.
- ZIP: Fixed possible NullReferenceException while decompressing corrupted data or (legacy encrypted ZIP with wrong password).
- Security: Added low-level Xts class.
- HTTP: Added HttpRequest constructor (an alternative to HttpRequestCreator.Create method).
- HTTP: Fixed automatic redirection to resemble behavior of .NET's HttpWebRequest.
- HTTP: Fixed potential bug while determining socket data availability.
- HTTP: Added missing certificate algorithm check.
- HTTP: Fixed handling of '100 Continue' responses.
- HTTP: Fixed handling of abandoned sockets.
- SSH: Added support for AES/GCM ciphers ('aes128-gcm@openssh.com' and 'aes256-gcm@openssh.com') to SSH client.
- SSH: Added support for EtM MAC ciphers ('hmac-sha2-256-etm@openssh.com' and 'hmac-sha2-512-etm@openssh.com') to SSH client.
- TLS/SSL: Log deprecation warning when using SSL 3.0, which is disabled by default and should no longer be used at all.
- TLS/SSL: Added SslSettings.​SslRenegotiationExtensionEnabled option.
- TLS/SSL: Added SslSettings.​SslServerNameIndicationEnabled option.
- Cryptography: Added CryptographicCollection<T> as a base for cryptographic collection classes.
- Cryptography: Fixed possible NullReferenceException inCertificateRevocationList.​GetRevocationReason() method.
- Cryptography: Fixed PFX saving on Mono.
- Cryptography: Fixed "Unable to load DLL 'Bcrypt.dll'" error on Linux with .NET Core.
- Cryptography: Added EnhancedCertificateEngine to .NET Compact Framework version to make it possible to supply custom root certification authorities.
- Common: Enabled Certificate/​CertificateChain.​LoadPfx with AlwaysCng option on .NET Compact Framework 3.9.
- Common: Fixed rare race condition in possibly leading to NullReferenceException on .NET Core and UWP platforms.
- Common: Fixed COMException in CertificateChain.BuildFrom method on experimental UWP platform.
- Common: Built-in custom certificate validator on .NET CF no longer unnecessarily validates signature of root CA certificates that are trusted by the OS.
- Released
- January112018
2017 R6.3 #
(build 6586 from 2018-01-11)
Enhanced RSA/OAEP and RSA/PSS support
This release adds support for RSA/OAEP with label (input parameter). RSA/OAEP and RSA/PSS structures with mismatched hash algorithms are supported as well.
Detailed list of changes:
- Cryptography: Added support for RSAES-OAEP with input parameter (label).
- Cryptography: Added support for RSAES-OAEP with mismatched hash algorithms.
- Cryptography: Fixed initialization of EncryptionAlgorithm property in MailMessage.Recipients collection items.
- Cryptography: Added support for RSASSA-PSS with mismatched hash algorithms.
- Cryptography: Fixed CNG private key conversion workaround.
- Released
- December212017
2017 R6.2 #
(build 6565 from 2017-12-21)
Faster AES on Windows
Rebex libraries now use Windows CNG for AES symmetric encryption algorithm when available. CNG implementation of AES is faster and takes advantage of AES-NI instructions.
Checksum support in multi-file SFTP transfers
Sftp
object's Upload
and Download
methods support
ActionOnExistingFiles.OverwriteDifferentChecksum
, making it possible
to use SFTP's checksum and hashing functionality
to determine which files were changed.
Please note that this functionality is only supported by servers that implement the "file-check"
extension.
On-the-fly data uploads
Our HttpRequest
object now supports AllowWriteStreamBuffering
and SendChunked
properties, making it possible to upload large amounts of data
to the server.
Fixed leaking of HTTP sessions
Unfortunately, Rebex HTTPS 2016 R6 introduced a bug in the HTTP session cache that caused sessions to never be reused. This has now been fixed.
Detailed list of changes:
- FTP: Fixed compatibility with Titan server's ABOR behavior.
- SFTP: Added support for ActionOnExistingFiles.​OverwriteDifferentChecksum to Upload/Download methods.
- File Server: Added workaround for content streams that do not support seeking beyond the end-of-stream.
- File Server: A meaningful error message is now reported when a virtual file system operation is canceled in the preview event.
- File Server: Fixed locking of FileServer.Keys collection.
- File Server: Added Action property to FileServer.PathAccessAuthorization event arguments.
- File Server: Messages from FileSystemException error now propagate to the SFTP subsystem.
- File Server: Fixed unintended reset of ServerSession.Current when raising FileServer events.
- File Server: Fixed wrong target path passed to virtual file system Move method.
- Mail: Added MailMessage.References property.
- Terminal: Added TerminalFontInfo.Bold property to make regular fonts bold.
- ZIP: Optimized memory usage to accommodate ZIP files with more items.
- ZIP: Internal optimizations.
- ZIP: Usage of ActionOnExistingFiles.​ResumeIfPossible in ZipArchive method arguments triggers ArgumentException (resume is not supported for ZIP files).
- ZIP: Added ZipArchive.ExtractAll(string, ActionOnExistingFiles) method.
- ZIP: Added GzipCompressionStream constructor that makes it possible to specify a file name when using stream as input.
- Security: Added overloads of XtsStream that accept file path.
- HTTP: Added AllowWriteStreamBuffering and SendChunked properties, making it possible to perform on-the-fly uploads.
- HTTP: Added HttpRequest.ContentLength in .NET Standard/.NET Core and Universal Windows Platform (UAP) editions.
- HTTP: Enhanced platform info logging.
- HTTP: Fixed HTTP session cache that ceased to work in 2017 R6, causing a memory leak.
- HTTP: Fixed a bug in parsing of missing Content-Encoding values.
- Networking: ProxySocket constructor requires a connected socket now.
- SSH: Added SshParameters.​UseLegacyGroupExchange option to make it possible to force using legacy or standard form of SSH Diffie-Hellman group exchange packet.
- SSH: Enhanced legacy group exchange autodetection.
- TLS/SSL: Fixed handling of duplicate suites in ClientHello packets.
- Cryptography: Added CertificateChain.LoadDer method to load a chain of Base64-encoded certificates.
- Cryptography: Fast CNG implementation of AES (which takes advantage of AES-NI instructions) is used when available.
- Cryptography: Added workaround for broken X509Certificate.GetPublicKey() on Mono 5.4.
- Cryptography: Added a workaround for GPG's gpgsm utility that required some SignedData fields to be DER-encoded.
- Released
- November202017
2017 R6.1 #
(build 6534 from 2017-11-20)
Remote file system information
Sftp
object now features GetFileSystemInfo
method,
which makes it possible to determine free space
and other information about a remote file system drive.
Please note that this functionality only works with servers that support
"space-available"
or statvfs@openssh.com
extension.
Native elliptic curve cryptography on Windows Embedded Compact 2013
Rebex libraries now use Windows CNG MS CNG API on .NET Compact Framework 3.9 / Windows Embedded Compact 2013, making it possible to use ECDH and ECDSA ciphers in TLS/SSL and SFTP/SSH with no need of external plugins.
Detailed list of changes:
- FTP: Added workaround for FTP servers that announce their IP as 0.0.0.0.
- FTP: Fixed MLSD parser to support empty facts.
- SFTP: Added Sftp.GetFileSystemInfo method to determine free space and other drive information.
- SFTP: Fixed a bug that caused the client not to ask for access time attribute in SFTP v4 (most servers sent the attribute despite this).
- SFTP: Added workaround for ProFTPd 1.3.6's mod_sftp which sends broken response when CREATETIME attribute has been requested.
- MSG: Added support for custom 'X-Unread' header that corresponds to 'read' flag in Outlook .MSG message format.
- POP3: Added workaround for Outlook365's broken delegated mailbox support in POP3.
- ZIP: Added ZipItemCollection.Sort(IComparer) method to make it possible to use Rebex.IO.FileSystemItemComparer class for sorting.
- ZIP: Fixed behavior of ZipItemCollection.Sort() method that used reverse sorting order for item types.
- ZIP: Fixed ZipArchive.​ShrinkProgress.​ProgressPercentage to return a proper value.
- ZIP: Fixed ZipProgressChangedEventArgs to set ProgressPercentage on base class as well.
- HTTP: Added WebClient.Encoding property to specify charset for string-based methods.
- HTTP: Added DownloadProgressChanged/​UploadProgressChanged events do WebClient class.
- HTTP: Added HttpRequest.AutomaticDecompression property.
- HTTP: Fixed handling of multiple headers with same header name in .NET Standard edition.
- HTTP: HttpResponse.ContentLength returns -1 to indicate 'value not specified'.
- HTTP: Fixed a bug in handling HttpRequest.Headers that could cause headers to be duplicated in some scenarios.
- HTTP: Added null value check to HttpRequest.Headers setter.
- HTTP: HttpResponse.ContentLength property is now set to -1 (not specified) when receiving automatically decompressed content.
- HTTP: HttpResponse.GetResponseStream() handles unsupported Content-Encoding values now.
- SSH: Added SshPublicKey.LoadPublicKeys method that supports loading OpenSSH's 'authorized_keys' files.
- Cryptography: Enhanced custom CRL downloader for .NET Compact Framework to handle all 3xx redirect codes.
- Cryptography: Enhanced Certificate.LoadDer to handle files with multiple certificates (loads the first one).
- Cryptography: Enabled usage of MS CNG API in .NET Compact Framework 3.9 edition on Windows Embedded Compact 2013 when appropriate.
- Cryptography: Fixed detection of AES/GCM support.
- Cryptography: Fixed detection of native Brainpool and secp256k1 support.
- Cryptography: Added 'params' to CertificateInfo.​SetExtendedUsave/​SetAlternativeHostnames methods.
- Cryptography: Fixed null handling in CertificateInfo.MailAddress.
- Cryptography: Fixed empty block processing in AES/GCM.
- Common: Added workaround for broken Encoding.ASCII encoder on legacy Mono platforms.
- Common: Enhanced SSPI error reporting.
- Common: Fixed platform info in logs on macOS.
- Released
- October252017
2017 R6 #
(build 6508 from 2017-10-25)
AES/GCM support in TLS/SSL on all platforms
We added support for TLS ciphers based on AES/GCM (AES in Galois/Counter Mode) symmetric encryption algorithm:
- ECDHE_RSA_WITH_AES_128_GCM_SHA256
- ECDHE_RSA_WITH_AES_256_GCM_SHA384
- ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- DHE_RSA_WITH_AES_128_GCM_SHA256
- DHE_RSA_WITH_AES_256_GCM_SHA384
- DHE_DSS_WITH_AES_128_GCM_SHA256
- DHE_DSS_WITH_AES_256_GCM_SHA384
- RSA_WITH_AES_128_GCM_SHA256
- RSA_WITH_AES_256_GCM_SHA384
These ciphers are available on all supported platforms including .NET Framework 2.0/3.5 and .NET Compact Framework. However, ECDHE and ECDHA ciphers need external plugins on some platforms.
Support for RSA signatures with PSS padding (RSASSA-PSS)
Our MailMessage
and MimeEntity
classes now support
RSA signatures with PSS padding (RSASSA-PSS)
based on SHA-1, SHA-256, SHA-384 and SHA-512.
These algorithms are available on all supported platforms including .NET Framework 2.0/3.5 and .NET Compact Framework.
We also changed default hashing algorithm in MailMessage.Sign
method to SHA-256 for RSA certificates.
Support for RSA encryption with OAEP padding (RSAES-OAEP)
Our MailMessage
and MimeEntity
classes now support
RSA encryption with OAEP padding (RSAES-OAEP)
based on SHA-1, SHA-256, SHA-384 and SHA-512.
These algorithms are available on all supported platforms including .NET Framework 2.0/3.5 and .NET Compact Framework.
We also changed default encryption algorithm in MailMessage.Encrypt
method to AES with 256-bit key.
Detailed list of changes:
- All: Added support for DSA key generation on .NET Core on Windows.
- SFTP: Fixed SFTP extension info parser (used to fail with some charsets).
- File Server: Fixed virtual root handling for root-based paths.
- File Server: VfsContentStream marks content as 'dirty' when its SetLength method is called as well.
- Mail: Added support for RSA signatures with PSS padding (RSASSA-PSS) to MailMessage and MimeEntity.
- Mail: Added support for RSA encryption with OAEP padding (RSAES-OAEP) to MailMessage and MimeEntity.
- MIME: Fixed quoted domain parsing in mail address parser.
- MSG: Fixed loading of Outlook .MSG files with empty mail addresses.
- MSG: Unified assignment of MailAddress objects to sender and recipient collections when loading Outlook .MSG files.
- MSG: Added support for "\pntext" keyword to RTF-to-HTML converter.
- IMAP: Workaround for Dovecot servers with broken XLIST command added.
- EWS: Fixed Ews.GetAttachment() method when downloading attachments with MIME content.
- HTTP: Changed default User-Agent header value to "Rebex HTTPS". When HttpRequest.UserAgent is set to null, the header is not sent.
- HTTP: Multi-value headers are sent as single comma-separated header.
- HTTP: Proxy communication is now logged (using HttpRequestCreator.LogWriter object).
- HTTP: Redirected keep-alive requests reuse original request's session if possible.
- Networking: Fixed PortRange binding (an issue introduced in previous release).
- Networking: Fixed ReceiveBufferSize/SendBufferSize propagation (an issue introduced in previous release). This was observed to cause slowdown on Windows platform in some scenarios.
- Networking: Fixed handling of IP-based host names in proxy name resolving routine (an issue introduced in previous release).
- TLS/SSL: Added support for AES/GCM to TLS.
- TLS/SSL: Added TlsCipherSuite.Weak enum.
- Cryptography: Added support for RSAES-OAEP encryption to EnvelopedData/RecipientInfo objects (CMS / PKCS #7).
- Cryptography: Added support for RSAES-OAEP encryption to Encrypt/Decrypt methods in Certificate and AsymmetricKeyAlgorithm classes.
- Cryptography: Added support for DSA key generation on .NET Core 1.1 on Windows.
- Cryptography: Added support for RSASSA-PSS signatures to SignMessage/VerifyMessage methods in Certificate and AsymmetricKeyAlgorithm classes.
- Cryptography: Enhanced environment info logging.
- Cryptography: Fixed KeySize property of RSAManaged and DSAManaged to return the proper size for key sizes that are not evenly divisible by 8.
- Cryptography: Added support for RSASSA-PSS signatures to SignedData/SignerInfo objects (CMS / PKCS #7).
- Cryptography: Added support for legacy MD4 algorithm.
- Cryptography: Fixed saving of Brainpool keys (used wrong OID).
- Cryptography: Fixed handling of ED25519 keys in PrivateKeyInfo.
- Cryptography: Fixed CertificateStore private key saving on Mono.
- Common: Environment info is now logged when creating an instance of FileLogWriter.
- Released
- September082017
2017 R5 #
(build 6461 from 2017-09-08)
New fully supported platforms: .NET Core 1.1 and 2.0 on Windows
This release adds full support for .NET Core 2.0 and 1.1 on Windows. Support for .NET Core on Linux and macOS is still experimental.
Support for .NET Standard 1.5, 1.6 and 2.0 (on .NET Core 1.1 and 2.0)
All Rebex libraries support .NET Standard 1.5, 1.6 and 2.0 on .NET Core 1.1 and 2.0. Support for other platforms (such as .NET Standard on .NET 4.6.x or higher) is still experimental.
Detailed list of changes:
- All: Added support for .NET Core 1.1 and 2.0 on Windows.
- FTP: Fixed wrong port in debug log when establishing active data transfer.
- FTP: Added Ftp.​Settings.​ForceSimpleDirectoryExists to force Ftp.DirectoryExists method to use just CWD/PWD commands.
- File Server: Fixed unwanted pseudo-link persistence in MountCapableFileSystemProvider.
- File Server: Fixed a possible temporary deadlock in SFTP subsystem triggered when channel's receive buffers on both client and server got full at the same time.
- HTTP: Fixed handling of HTTP paths with double-slash ('//').
- Networking: Added support for "http://" URLs in Proxy.Host.
- Cryptography: Added HTTP redirect handling to CRL downloader on .NET Compact Framework.
- Cryptography: Added workaround to enable SHA-2 on legacy operating systems (such as pre-SP3 Windows XP).
- Cryptography: Using ASN.1 GeneralizedTime for dates greater than 2050.
- Cryptography: Enhanced logging of some SSPI errors.
- Cryptography: Added workaround for invalid or empty HTTP header names.
- Common: Enabled SHA-2 support workaround for legacy RSA providers.
- Common: Using custom IBM 437 encoding on .NET Compact Framework.
- Released
- August042017
2017 R4.1 #
(build 6426 from 2017-08-04)
Efficient download of multiple messages in IMAP
The Imap
object features a new GetMessages
method that makes it possible
to download lots of messages efficiently - without multiple client-server roundtrips.
Detailed list of changes:
- FTP: Added workaround for BulletProof FTP Server's invalid response to MLSD command.
- Mail: Allowed empty passwords in SMTP, IMAP and POP3.
- Mail: Fixed parsing of hyperlinks in RTF-to-HTML converter.
- SMTP: Fixed parsing of SMTP responses that only contain the response code.
- IMAP: Added Imap.GetMessages method for efficient download of multiple messages.
- Telnet: Added workaround for strangely-behaved YMODEM over Telnet.
- Terminal: Added TerminalControl.ScrollChanged event.
- Terminal: Added TerminalControl.ScreenPosition property.
- Terminal: Added missing disposed state check to all Scripting methods.
- ZIP: Added path indexer to ZipItemCollection class.
- ZIP: Improved .NET Core compatibility.
- HTTP: Enhanced exception messages for errors at TLS/SSL layer.
- Cryptography: Enhanced RSAES-OAEP support.
- Cryptography: Added CertificateStore.Add method (replacement for deprecated CertificateStore.AddCertificate method).
- Cryptography: Added KeySetOptions.PreferCng and KeySetOptions.AlwaysCng options.
- Cryptography: Fixed AsymmetricKeyAlgorithm.Dispose method.
- Cryptography: Fixed AsymmetricKeyAlgorithm.CreateFrom method (always honors the ownsAlgorithm argument now).
- Released
- June302017
2017 R4 #
(build 6391 from 2017-06-30)
Custom file system support
Rebex File Server now features a rich custom file system provider API. This can be used to implement virtual file systems, or custom file systems that store data in a database, in the cloud, or elsewhere. Additionally, the built-in mount-capable virtual file system provider makes it possible to construct virtual file systems composed from multiple unrelated providers.
Support for CNG Key Storage Providers
Rebex Certificate
class now fully supports RSA, DSA and ECDSA private keys stored in Windows CNG Key Storage
Providers.
Native support for Brainpool (P-256 R1, P-384 R1, P-512 R1) and secp256k1 elliptic curves on Windows 10
Windows 10 (and Windows Server 2016) added native support for additional Elliptic Curve DSA (ECDSA) / Elliptic Curve Diffie-Hellman (ECDH) curves including secp256k1, Brainpool P-256 R1, P-384 R1 and P-512 R1, and Rebex classes can take advantage of them now (in addition to NIST P-256/P-384/P-521 curves).
Brainpool curves have already been supported by our TLS/SSL library and can be used with the following ciphers:
- TLS_​ECDHE_​ECDSA_​WITH_​AES_​128_​CBC_​SHA
- TLS_​ECDHE_​ECDSA_​WITH_​AES_​128_​CBC_​SHA256
- TLS_​ECDHE_​ECDSA_​WITH_​AES_​256_​CBC_​SHA
- TLS_​ECDHE_​ECDSA_​WITH_​AES_​256_​CBC_​SHA384
- TLS_​ECDHE_​ECDSA_​WITH_​3DES_​EDE_​CBC_​SHA
- TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
- 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
For earlier Windows and other operating systems, Brainpool curves are available through external plugins.
Detailed list of changes:
- All: Deprecated .NET Compact Framework 2.0, Windows (Store) 8.0 and Windows (Store/Phone) 8.1 platforms.
- All: Lots of improvements in experimental .NET Core / .NET Standard edition.
- SFTP: Enhanced error reporting of failed SFTP subsystem request.
- SFTP: Added workaround for Titan SFTP server which incorrectly handles uploaded blocks of 65535/65534 bytes.
- File Server: Added Rebex.FileSystem assembly with support for custom file system providers.
- File Server: Added Session property to server event arguments.
- File Server: Added GetInputStream/​GetOutputStream/​GetErrorStream methods to SshConsole. This makes it possible to implement advanced custom commands.
- File Server: Added Unix-like 'cp' (copy) command to virtual shell.
- File Server: Enhanced handling of ShellCommand event handler errors.
- File Server: Added DisconnectedEventArgs.User property.
- File Server: Implemented IDisposable in FileServer/Server classes.
- File Server: Enhanced logging of info requests for non-existent items.
- File Server: Added ServerSession.GetCurrent() static method.
- File Server: Added FileServer.​Settings.​GetItemInfoRequiresListPermission option to make it possible to specify whether item info retrieval requires List permission or Read permission.
- File Server: Enhanced handling of failed channel requests.
- File Server: Virtual root accessibility is checked before initializing the SFTP subsystem now.
- File Server: Added workaround for wrong error code reported as last error when deleting non-existent file.
- Mail: Fixed handling of empty paragraphs in RTF-to-HTML converter.
- EWS: Optimized internals to handle larger messages.
- Terminal: Fixed handling of timeouts larger than 30 minutes in the scripting API.
- Terminal: Added workaround for premature events in TerminalControl on Mono.
- Terminal: Possibility to create palettes larger than 256 colors.
- Terminal: TerminalScreen.SetCell/GetCell methods accept rows smaller than zero now (to work with history buffer).
- HTTP: Added HttpResponse.Cipher property to make it possible to determine information about the TLS cipher used by the underlying TLS/SSL session.
- HTTP: Fixed broken WebClient.UploadString(...) method.
- HTTP: Fixed handling of null in HttpRequestCreator.​SetSocketFactory() method.
- HTTP: Fixed handling of relative or broken redirect locations.
- SSH: Added SshParameters.CompressionLevel option to make it possible to specify the desired compression level for SSH.
- SSH: Deprecated SshPrivateKey.CreateSignature, VerifySignature and an old variant of the SshPrivateKey.Save method.
- SSH: Added SshPublicKey.GetPublicKeyInfo() method.
- SSH: Added SshException.GetServerInfo() method to make it possible to determine lists of ciphers supported by the server when SSH negotiation fails.
- Cryptography: Added support for certificates with private keys stored in CNG Key Storage Providers.
- Cryptography: Compatibility enhancements in Certificate public/private key operations and AsymmetricKeyAlgorithm class.
- Cryptography: Added Certificate.GetPublicKeyInfo() method.
- Cryptography: Fixed PublicKeyInfo.GetKeySize() method that used to throw an exception for ECDSA and ED keys.
- Cryptography: Added native support for secp256k1, Brainpool P-256 R1, P-384 R1 and P-512 R1 on Windows 10 and Windows Server 2016.
- Cryptography: Fixed default hash algorithm detection in SignMessage/VerifyMessage methods in Certificate and AsymmetricKeyAlgorithm classes.
- Cryptography: Experimental support for CMS (PKCS #7) decryption with RSA/OAEP/SHA-1 (RSAES-OAEP defined by RFC 3447).
- Cryptography: Fixed 'Unexpected PFX length' error when exporting 4096-bit RSA certificates into PFX/P12 file.
- Released
- May092017
2017 R3 #
(build 6339 from 2017-05-09)
NuGet packages
Rebex libraries just got official NuGet packages!
If you have an active subscription, you will get NuGet packages as part of Rebex libraries. These are supposed to be added to your private NuGet repository.
Rebex packages are available at NuGet.org as well.
Experimental support for .NET Standard 1.5 and NET Core
This release adds experimental support for .NET Core (or rather .NET Standard 1.5/1.6) to all Rebex libraries.
In addition to .NET Core on Windows, Linux and macOS, .NET Standard edition of Rebex libraries can be used on any platform with .NET Standard 1.5 support. This currently includes .NET 4.6.2 and .NET 4.7, and hopefully other platforms soon.
Please note that 'experimental' support means that this edition has not yet reached the 'mainstream' support phase, and the API is subject to change. Any feedback is greatly appreciated.
Support for .NET Framework 4.7
.NET Framework 4.7 is a fully supported platform.
Underline and beam cursor styles in TerminalControl
TerminalControl
supports underline and beam cursor styles in addition to the default block cursor.
Use the CursorStyle
property to specify the desired style.
Detailed list of changes:
- All: Added NuGet packages.
- All: Added experimental support for .NET Core and .NET Standard 1.5.
- All: Added workaround for a breaking change in Exception.Data on recent Xamarin.Android.
- All: Added support for .NET Framework 4.7.
- FTP: Fixed parsing of rare multi-line responses of PASV, SIZE, MDTM or PWD commands (used by DrFTPD server).
- FTP: Fixed handling of TLS packets received through data connection while uploading.
- SFTP: Added Scp.Settings.ProcessCommand property to make it possible to customize the 'scp' command before it is sent to the server.
- SFTP: Added Sftp.GetHomeDirectory() method to make it possible to easily determine current user's home directory.
- SFTP: Optimized GetCurrentDirectoryAsync() method.
- File Server: Fixed unreadable packet names in some exception messages.
- File Server: Added support for single quotes in virtual shell.
- MIME: Added support for a non-standard time zone format that includes a colon.
- MIME: Fixed date parser for two digit zones (such as "-00").
- MIME: Fixed handling of headers that can be present multiple times.
- MSG: When saving Outlook .MSG files, display names are set to e-mail addresses if not specified (MS Outlook would not display anything in the address field otherwise).
- MSG: Improved Outlook .MSG charset detection workaround.
- SMTP: Fixed handling of group addresses when sending.
- IMAP: Imap.GetMimeMessage and Imap.GetMailMessage methods no longer ignore Settings.IgnoreUnparsableSignatures option.
- Terminal: Experimental (UI-less) support for Xamarin.Mac in Terminal Emulation library.
- Terminal: Added support for underline and beam cursors to Terminal Control (via CursorStyle property).
- Terminal: Fixed canvas resizing issue in TerminalControl when the font size has been changed.
- Terminal: TerminalControl now resets blink state while typing.
- HTTP: Fixed redirection handling when the new location points to a different HTTPS server.
- Cryptography: Enhanced error messages in AsymmetricKeyAlgorithm.
- Cryptography: Custom certificate validator now behaves like MS CryptoAPI validator when dealing with RSA key sizes shorter than 1024 bits; MD5 signature hash algorithm is always considered to be weak for non-root certificates.
- Cryptography: Added support for .PFX/.P12 saving on .NET Compact Framework (requires Windows CE 5.0 or later).
- Common: Fixed incorrect handling of CNG RSA keys.
- Released
- March222017
2017 R2 #
(build 6291 from 2017-03-22)
ECDSA certificate support in TLS/SSL
All Rebex libraries utilizing our TLS/SSL library now support the following TLS ciphers based on Elliptic Curve DSA (ECDSA) algorithm:
- TLS_​ECDHE_​ECDSA_​WITH_​AES_​128_​CBC_​SHA
- TLS_​ECDHE_​ECDSA_​WITH_​AES_​128_​CBC_​SHA256
- TLS_​ECDHE_​ECDSA_​WITH_​AES_​256_​CBC_​SHA
- TLS_​ECDHE_​ECDSA_​WITH_​AES_​256_​CBC_​SHA384
- TLS_​ECDHE_​ECDSA_​WITH_​3DES_​EDE_​CBC_​SHA
- TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
Supported curves:
- NIST P-256
- NIST P-384
- NIST P-521
Please note that external plugins are needed for these algorithms and curves on some platforms.
SSH client authentication using RSA with SHA-2
All Rebex libraries utilizing our SSH library now support client public/private key authentication based on RSA with SHA-2:
rsa-sha2-256
rsa-sha2-512
ssh-rsa-sha256@ssh.com
Support for Visual Studio 2017
All Rebex libraries are now fully supported in Microsoft Visual Studio 2017. Older Visual Studio versions (2008 and higher) and .NET Framework versions (2.0 and higher) are still supported as well.
Experimental support for Universal Windows Platform in Secure Mail and HTTPS
This release extends the experimental support for Universal Windows Platform (Windows 10, Windows 10 Mobile, Windows 10 IoT) to Rebex Secure Mail and Rebex HTTPS. This makes All Rebex libraries usable on the UWP (UAP) platform.
Minor ISocket API changes
Legacy parts of ISocket
interface were moved into ISocketExt
interface.
If you implemented a custom transport layer using the ISocket
API, make sure to implement ISocketExt
instead when
upgrading to this release.
Seldom-used static methods in CryptoHelper
class were removed. If you need any of them, please let us know.
Detailed list of changes:
- All: Mono 2.10 is no longer supported. (Mono 3.x and 4.x still supported.)
- FTP: Added Ftp.Settings.SkipDuplicateItems option (set to true by default).
- SFTP: Added Sftp.Settings.SkipDuplicateItems option (set to true by default).
- File Server: Fixed an issue in renegotiation that caused connection failure in some scenarios.
- File Server: Fixed incompatibilities in rsa-sha2-256/rsa-sha2-512 signature format.
- File Server: Added support for client key authentication using 'rsa-sha2-256', 'rsa-sha2-512' and 'ssh-rsa-sha256@ssh.com' algorithms.
- MSG: Fixed loading of MSG files with empty RTF body.
- SMTP: Added logging to ResolveDomainMX method.
- POP3: Added mailbox delegation support for Microsoft Exchange POP3 servers.
- POP3: Removed workaround for GoDaddy POP3 servers (they no longer falsely claim APOP support).
- POP3: Added workaround for Dualog's POP3 service which falsely claims APOP support.
- EWS: Fixed NullReferenceException when successfully authenticated to a server that has no mailbox for the authenticated account.
- SSH Shell: Fixed LogWriter propagation in Ssh object.
- ZIP: Improved ZipItem.ItemType detection for ZIP files created on Unix.
- ZIP: Improved ZipException.ProblemType reporting in multi-file operations.
- HTTP: Fixed issues in HTTP client connection pool.
- HTTP: Added HttpSessionCacheEnabled and SslSessionCacheEnabled options to HttpSettings.
- HTTP: Added workaround for servers that use DEFLATE instead of Zlib.
- Networking: Added logging of environment and platform information.
- Networking: Enhanced target address logging when connecting.
- Networking: HTTP core provides better inner exceptions on errors.
- Networking: Legacy members of custom transport layer API moved from ISocket to ISocketExt.
- Networking: Fixed ProxySocket.Connect(...) on Mono 2.10.
- SSH: Enhanced cipher mismatch error reporting during SSH negotiation to produce informative error messages.
- SSH: Added GetSupportedMacAlgorithms/​GetSupportedEncryptionAlgorithms/​GetSupportedKeyExchangeAlgorithms static methods to SshParameters.
- SSH: Added support for client key authentication using 'rsa-sha2-256', 'rsa-sha2-512' and 'ssh-rsa-sha256@ssh.com' algorithms.
- SSH: Added OpenSSH-style fingerprint support to SshFingerprint class.
- TLS/SSL: Added support for Elliptic Curve DSA to TLS 1.2/1.1/1.0.
- TLS/SSL: Fixed unexpected connection closure handling in TlsSocket.
- TLS/SSL: Fixed handling of Timeout value in TlsSocket.Receive.
- Cryptography: Added support for Elliptic Curve DSA to Certificate/​CertificateChain/​CertificateIssuer classes.
- Cryptography: SignMessage/VerifyMessage methods added to AsymmetricKeyAlgorithm.
- Cryptography: Renamed KeyDerivationOptions class to KeyDerivationParameters.
- Cryptography: Removed seldom-used static methods from CryptoHelper.
- Cryptography: CertificateIssuer class made available on .NET Compact Framework.
- Cryptography: Fixed TLS 1.0/1.1 on FIPS-only Windows with disabled UseFipsAlgorithmsOnly.
- Cryptography: Enhanced CertificateIssuer API.
- Cryptography: Fixed PrivateKeyInfo.KeyAlgorithm that returned non-standard values for some ECDSA keys.
- Cryptography: Fixed handling of padding in ECDSA private keys stored using the new OpenSSH format.
- Cryptography: Fixed weak algorithm detection in .NET Compact Framework custom certificate verifier.
- Released
- February082017
2017 R1 #
(build 6249 from 2017-02-08)
New library: Rebex HTTPS
Rebex HTTPS is an HTTP/HTTPS client library that supports TLS 1.2/1.1/1.0, SHA-2, Server Name Identification (SNI), Renegotiation Indication Extension, Forward Secrecy, ZLIB. These features are available on all supported platforms: .NET Framework, .NET Compact Framework, Mono, Xamarin.iOS and Xamarin.Android.
The library is available as a standalone package or as a part of Rebex Total Pack.
Support for the new OpenSSH key format
Our SSH based libraries can now save private keys using the new OpenSSH key format (Base64-encoded keys with "BEGIN OPENSSH PRIVATE KEY" header).
TLS Renegotiation Indication Extension
Renegotiation Indication Extension (RFC 5746) fixes a vulnerability in the TLS/SSL protocol that makes it possible for an attacker to hijact TLS/SSL connections during renegotiation in some scenarios.
Detailed list of changes:
- SFTP: Enlarged default transfer queue lengths.
- SCP: Fixed ScpTransferProgressEventArgs.Id property.
- File Server: Added FileServer.​Settings.​ReceiveBufferSize and SendBufferSize properties.
- File Server: Fixed handling of several control characters in virtual shell.
- MIME: Fixed MimeEntity.GetContentStream(true) that could return a stream with non-zero position in some cases (in previous release only).
- MIME: Enhanced "Invalid character" exception to include the character code in addition to position.
- MSG: Improved workaround for Outlook MSG files erroneously claiming to use UTF-16.
- EWS: Fixed handling of cultures with empty names (when assigned using Ews.Settings.Culture).
- EWS: Fixed DateTime serialization/deserialization in SOAP on Mono 3/4.
- HTTP: Initial release.
- Networking: Added workaround for a breaking change in Exception.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.
- Networking: Enhanced ProxySocket connection initialization.
- SSH: Added EnsureKeyAcceptable option that instructs SSH client to announce public key to the server before performing key authentication.
- 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.
- TLS/SSL: Added support for Renegotiation Indication Extension (RFC 5746).
- TLS/SSL: Preferred TLS/SSL ciphers can be now defined (using TlsParameters.SetPreferredSuites method).
- TLS/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.
- Released
- December192016
2016 R3 #
(build 6198 from 2016-12-19)
Elliptic curve cryptography in TLS/SSL
All Rebex libraries 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 libraries 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 X.509 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.
Remote checksum calculation
Ftp
, Sftp
and FileTransferClient
objects now feature GetChecksum
methods,
making it possible to retrieve a checksum or hash of a remote file (or part of it).
Together with the new LocalItem.GetChecksum
method, this makes it easily possible to reliably detect changed files.
Please note that this functionality is not supported by all servers (for SFTP, "file-check"
extension support is required).
Ftp.GetRemoteChecksum
methods are now considered deprecated.
Optimized memory usage of MailMessage/MimeMessage objects
We have refactored the internals of our mail objects to make them consume less memory. Working with large messages is much more efficient now.
OAUTH authentication in EWS
The Ews
object now supports OAUTH 2.0 authentication with Microsoft's Office 365 and Outlook.com servers.
Mailbox synchronization in EWS
Keeping a local cache of folders and items in sync with the server is now very simple
using GetUpdatedItems
and GetUpdatedFolders
methods.
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.
Detailed list of changes:
- FTP: Added Ftp.GetChecksum methods to replace legacy Ftp.GetRemoteChecksum methods.
- FTP: Added special handling for another variant of NOOP response during transfer.
- SFTP: Added Sftp.GetChecksum methods (only for servers that support the "file-check" extension).
- SFTP: Changed Sftp.GetStream in UWP edition to use .NET API instead of Windows Store API.
- SFTP: ServerKey property added to Sftp/Scp objects, providing server public host key of the server.
- File Server: Renamed FileServerUser constructor's physicalRootPath argument to virtualRootPath.
- File Server: Added support for "ecdh-sha2-nistp256", "ecdh-sha2-nistp384", "ecdh-sha2-nistp521" and "curve25519-sha256@libssh.org" key exchange algorithms (plugins needed to enable them).
- File Server: Proper maximum packet size used when sending channel data (instead of hardcoded value).
- File Server: Fixed rename operation that used to fail for directories located in the physical disk's root directory.
- File Server: Fixed a bug that could cause timeout and session failure during SSH session renegotiation.
- File Server: 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).
- File Server: Both RSA and DSA certificates can be used as host key at the same time.
- Mail: Optimized memory usage of MailMessage and MimeMessage objects.
- Mail: Added MailMessage.IsDraft property.
- Mail: Added Settings.IgnoreMsgTransportHeaders option to MailMessage class.
- Mail: Enhanced handling of broken TNEF messages (parses as much as possible).
- Mail: Enhanced embedded resource handling in RTF-to-HTML converter.
- POP3: Added workaround for Office 365's POP3 server that occasionally closes accepted connections.
- IMAP: CopyMessage method no longer requires the server to return a COPYUID response if it supports the UIDPLUS extension.
- EWS: Support for OAuth added to EWS client.
- EWS: Added GetUpdatedItems and GetUpdatedFolders methods for synchronization of items and folders.
- EWS: Added Ews.StoreItem method and EwsItemInfo.FromXml method.
- EWS: Enhanced error reporting in Ews.UpdateItem method.
- EWS: Added Ews.Settings.Impersonation to enable impersonation of an user using his/her SMTP address.
- EWS: Fixed duplicate 'Authorization' headers during 'Basic' authentication.
- EWS: Fixed handling of missing WWW-Authenticate header during authentication.
- EWS: Fixed Ews.DeleteItem method to work properly with Exchange task items.
- EWS: Fixed handling of Exchange cookie.
- EWS: Enlarged outgoing data block size, enhancing compatibility with Exchange 2010.
- EWS: Added EwsMessageInfo.TextBody property.
- 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 a bug that caused TerminalControl to become unusable when its Control.RecreateHandle method has been called.
- Terminal: Fixed rare race condition in TerminalControl.Unbind.
- ZIP: ZipItem.LastWriteTime now returns null if not specified (instead of 0001-01-01 or 1980-01-01). It accepts null as well.
- ZIP: Added ZipArchive.​Options.​ChecksumVerificationMode to make it possible to verify checksum immediately after a new file is added into the ZIP archive.
- ZIP: Fixed ZipArchive.Close method behavior when called from multiple threads.
- Security: Added FileEncryption.XtsBlockSize; fixed FileEncryption.EncryptionKeySize when using XtsAes.
- Security: XtsStream now flushes the base stream on SetLength.
- 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: 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.
- SSH: Fixed possible NullReferenceException when closing SSH client from another thread just before receiving data.
- TLS/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.
- TLS/SSL: Server name is now passed to TLS server during negotiation (use TlsParameters.CommonName to override it).
- TLS/SSL: Fixed TlsCipherSuite.All to include all recently added cipher suites.
- TLS/SSL: All legacy 'EXPORT1024' ciphers are now prohibited by default in addition to already-prohibited 'EXPORT' ciphers (unless AllowVulnerableSuites option is enabled).
- TLS/SSL: Fixed issues with some legacy TLS/SSL ciphers (all of them were already disabled by default).
- TLS/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 X.509 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 X.509 chain building and validation engines.
- Common: Added ConsoleLogWriter for Xamarin platforms.
- Common: Added Rebex.TeeLogWriter class that makes it possible to log to multiple log writers.
- Common: Added LocalItem.GetChecksum methods and related types.
- Released
- August262016
2016 R2.2 #
(build 6083 from 2016-08-26)
Maintenance release
This update brings several improvements, workarounds and bugfixes.
Detailed list of changes:
- File Server: Fixed FileUploaded/FileDownloaded events that used to be wrongly called on session failure.
- Mail: CRAM-MD5 and DIGEST-MD5 are no longer preferred authentication methods on secure connections.
- Mail: Added workaround for some broken multipart/related entities.
- EWS: Optimized response logging in Ews class.
- EWS: Added EwsItemMetadata.Subject property to make it possible to change subject of an item using Ews.UpdateItem method.
- EWS: Added EwsMessageMetadata class to improve the usability of Ews.UpdateItem method. Deprecated EwsItemMetadata.IsRead property and moved to EwsMessageMetadata.
- EWS: Relaxed SOAP XML check to allow ASCII control characters.
- ZIP: Fixed a bug in LZ77 window handling in Enhanced Deflate decompression routine. This might have caused errors in rare scenarios.
- SSH: Enhanced handling of errors in FingerprintCheck event handlers.
- TLS/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: 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).
- Common: Added workaround for broken FileStream.SetLength on some .NET Compact Framework platforms.
- Released
- July282016
2016 R2.1 #
(build 6054 from 2016-07-28)
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.
Fixed RSA-based session negotiation in File Server
In 2016 R2, File Server always attempted to use RSAManaged to create an RSA signature instead of using RSACryptoServiceProvider whenever possible.
Experimental support for Universal Windows Platform in File Server
Rebex File Server binaries for Universal Windows Platform are now available. Supported platforms include Windows 10, Windows 10 Mobile, Windows 10 IoT and possibly Xbox One. (Experimental binaries of other Rebex libraries - SFTP, FTP/SSL, Time, ZIP, File Transfer Pack, Terminal Emulation - have been available since 2016 R1.)
Optimized ZIP memory usage
ZipArchive objects now occupy less memory than before, particularly when working with ZIP archives with lots of items.
Fixed EWS thread safety
Ews class, our Exchange Web Services client, was not entirely thread-safe. This has been fixed.
Detailed list of changes:
- FTP: Fixed parsing of win32.ea extended attribute on .NET Compact Framework.
- File Server: Added FileServer.Settings.ShowHiddenItems option that makes it possible to show file system items with 'hidden' flag from directory listings.
- File Server: Added experimental File Server binaries for Universal Windows Platform.
- File Server: Added support for extremely verbose incoming packet logging (log level 0).
- File Server: Fixed handling of connection protocol packets received during renegotiation.
- IMAP: Added ImapMessageSet.​AddRangeFrom/​AddRangeTo methods.
- EWS: Added a new Ews.DeleteItem metod overload that accepts EwsDeleteMode.
- EWS: Fixed Ews object thread-safety.
- ZIP: Optimized memory usage.
- ZIP: WinZip encryption uses version 2 by default.
- Networking: Fixed ProxySocket.ToEndPoint to throw a more meaningful exception for entries with no IP addresses.
- TLS/SSL: Fixed unreadable TLS debug log messages on Xamarin platforms.
- TLS/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.
- Common: FileLogWriter on Windows Store 8.x / Universal Windows Platform is now thread-safe.
- Common: Fixed LocalItem(string) constructor on Windows Store 8.x / Universal Windows Platform.
- Common: Added workaround for broken handling of surrogate pairs when converting to "iso-8859-1" using System.Text.Encoding on Mono 4.x.
- Released
- June302016
2016 R2 #
(build 6026 from 2016-06-30)
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 libraries. 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 X.509 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 library now supports legacy terminal-based YMODEM file transfer protocol.
Fixed multi-core compression
Fixed a bug that prevented multi-core compression from working properly.
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 libraries.
Detailed list of changes:
- FTP: Enhanced IgnorePassiveModeAddress workaround to support SOCKS4/SOCKS5 and HTTP CONNECT proxies.
- FTP: Added support for another variant of 200 NOOP response.
- SFTP: Improved Disconnect method on .NET CF to make sure the connection is closed gracefully.
- File Server: Enhanced error reporting when trying to delete non-empty directories.
- File Server: Fixed data buffering in SFTP subsystem.
- File Server: Ssh object now properly closes tunnel listeners when disposed.
- File Server: Added MaxSessionTransferredBytes and MaxSessionDuration settings to specify when to trigger session renegotiation.
- File Server: Added FileServer.Settings.UseLargeBuffers option.
- File Server: Added support for additional server authentication algorithms ('x509v3-sign-dss', 'ssh-rsa-sha256@ssh.com' and 'x509v3-sign-rsa-sha256@ssh.com').
- File Server: Fixed compatibility with Bitvise SSH Client related to text mode.
- File Server: Fixed error handling in SSH tunnel starter.
- File Server: Fixed possible NullReferenceException on connection failure.
- File Server: Added ClientSoftwareIdentifier to PreAuthenticationEventArgs and AuthenticationEventArgs.
- Mail: Added Pop3MessageInfo.ReceivedDate property.
- Mail: Added workaround for problematic UTF-8-encoded HTML bodies in TNEF (winmail.dat).
- Mail: Added support for address format used by fax gateways ("<[FAX:number]>")
- Mail: Fixed bug causing exception to be thrown when loading signed mail with RTF body.
- MIME: Fixed parsing of messages with invalid Content-transfer-encoding and missing Content-type header.
- MSG: Added MailMessage.​Settings.​PreferExplicitBody option.
- IMAP: Fixed detection of read-only IMAP folders.
- IMAP: Fixed "plain" authentication to use UTF-8.
- IMAP: Added Imap.Settings.UseLargeBuffers to force usage of larger TCP send and receive buffers.
- IMAP: Added workaround for invalid end-of-line sequences sent by Lotus Domino (used to cause "Invalid IMAP response" exception).
- EWS: Better error message when trying to connect to non-Exchange servers.
- EWS: 'Negotiate' authentication is now preferred to 'NTLM' in EWS.
- EWS: Enhancements in HTTP client core (does not affect EWS behavior).
- EWS: Added Ews.ProvisionHeaders method to 'provision' X-headers on Exchange/Office 365 servers.
- EWS: Added Ews.GetFolderList() method.
- 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.
- ZIP: Added BytesProcessed and CurrentFileBytesProcessed properties to ZipProgressChangedEventArgs object.
- ZIP: Fixed a bug that caused an error when shrinking ZIP archives with Zip64 extension in some cases.
- ZIP: Fixed multi-core compression to use the specified number of threads.
- Networking: Increased default receive buffer size on Windows 8 and higher. Added related Proxy properties to make this configurable.
- Networking: 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.
- TLS/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.
- TLS/SSL: Added Settings.SslSession property to allow resuming specific TLS/SSL sessions.
- TLS/SSL: Fixed record layer 'protocol version' handling.
- TLS/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 Framework 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.
- Common: Enhanced SSPI error messages.
- Common: Fixed LogWriterBase.Level default value.
- Common: Fixed compatibility issue in Xamarin edition (caused by a breaking change in June 2016 update of Xamarin).
- Released
- February102016
2016 R1.1 #
(build 5885 from 2016-02-10)
Experimental assemblies for Xamarin.Mac
Added experimental binaries of most Rebex libraries (FTP/SSL, SFTP, File Server, Secure Mail, ZIP, Time, Security) for Xamarin.Mac platforms. They are suitable for targeting Xamarin.Mac Mobile Framework and Xamarin.Mac .NET 4.5 Framework projects.
Mitigation of SLOTH attacks
Usage of legacy MD5 algorithm in TLS 1.2 was disabled to prevent SLOTH attacks.
Maintenance release
Experimental binaries of most Rebex libraries (FTP/SSL, SFTP, File Server, Secure Mail, ZIP, Time, Security) for the Xamarin.Mac platform are now available. They are suitable for targeting both Xamarin.Mac Mobile and Xamarin.Mac .NET 4.5 Framework projects.
Detailed list of changes:
- FTP: Fixed a bug that triggered the 'Another operation is pending' exception when internal directory listing failed due to protocol error.
- FTP: Added workaround for servers returning "cdir" in MLST responses.
- MIME: Added workaround for broken MIME headers that use 'URL and file-system-safe' Base-64-encoding.
- MSG: Added workaround for MSG attachments erroneously claiming to be "message/rfc822".
- MSG: Added workaround for broken MSG files which don't specify internal byte count values or don't contain data stream for variable length properties.
- EWS: Enhanced EwsSearchParameter.Body to include a workaround for problematic behavior of Exchange 2010 body text searching.
- 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.
- ZIP: Added workaround for ZIP files which specify zero for "total count of disks".
- Security: Reusing FileEncryption.Encrypt with different encryption algorithms is now supported without changing the password.
- 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.
- TLS/SSL: Disabled any usage of MD5 in TLS 1.2 to prevent SLOTH attacks.
- Released
- January112016
2016 R1 #
(build 5855 from 2016-01-11)
Exchange Web Services support
Rebex Secure Mail now supports Exchange Web Services (EWS) and provide a dedicated Ews
object, making it possible
to communicate with Microsoft Exchange servers using a native protocol.
Check out how to send and
receive mail messages using EWS, and more.
SSH tunneling (port forwarding)
Terminal Emulation library now features a simple-to-use API for SSH tunneling (port forwarding). Support for outgoing SSH tunnels (port forwarding) was added to File Server library as well.
TLS 1.2 enhancements
TLS 1.2 is now enabled by default in all our TLS/SSL enabled libraries. We fixed several interoperability issues as well.
Experimental assemblies for Windows Store Apps
Experimental binaries of many Rebex libraries (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.
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
.
File upload/download events in File Server
Added FileUploaded and FileDownloaded events to make it easier to track uploads and downloads.
Server certificate authentication in SSH
Rebex SFTP, Terminal Emulation and File Server now support X.509 certificate host key algorithm, making it possible to authenticate servers using a certificate instead of public key.
Enhanced virtual shell support
File Server's virtual shell infrastructure offers Empty
shell in addition
to Scp
shell. It provides no predefined commands (with the exception of exit
), making it simple to provide a custom set of commands instead.
Changed handling of messages with RTF bodies
RTF bodies are now discarded by default after a successful conversion to HTML. To revert back to the old behavior,
set mail.Settings.RtfMode = RtfProcessingMode.Legacy
(where mail
is an instance of MailMessage
).
Detailed list of changes:
- 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.
- FTP: Added workaround for broken MLSD command on CC-patched WU-FTPD server.
- FTP: Added workaround for GlobalScape EFT Server 6.5-7.1 with broken OPTS MLST command.
- FTP: TLS 1.2 is now enabled by default.
- FTP: Improved port selection algorithm when using PortRange objects.
- FTP: Added support for FileCatalyst FTP server listings.
- FTP: Added Ftp.Settings.CompressionLevel property that specifies compression level for MODE Z uploads.
- SFTP: Enhanced error message reported by ChangeDirectory when trying to change into a non-existing directory.
- File Server: Added port forwarding (TCP tunneling) support.
- File Server: Enhanced logging of handle-based file system operations (such as closing a file).
- File Server: IsRunning property added to Server/FileServer objects.
- File Server: Added FileUploaded/FileDownloaded events.
- File Server: Starting a server with no bindings now triggers an error.
- File Server: Fixed wrong session ID in SFTP error log entries.
- File Server: Fixed handling of empty folders on Windows CE.
- File Server: Fixed bad P/Invoke declaration (applies to Windows platforms).
- File Server: Enhanced error reporting in SFTP and SCP and fixed several wrong error codes.
- File Server: Fixed file delete operation that used to report success when deleting non-existent file on non-Windows platforms.
- File Server: Fixed compatibility issues with libssh2.
- File Server: Added proper data window size checks.
- File Server: Added workaround for wrong error code reported as last error when deleting non-existent file.
- File Server: Added workaround for Open with Create+Read in .NET-based virtual file system.
- File Server: Fixed Unbind method that occasionally triggered an error.
- File Server: Added FileServerProtocol.Shell (replaces FileServerProtocol.Scp). Makes it possible to choose between SCP shell and empty shell when constructing a user object.
- File Server: Enhanced error handling during initialization. Early closed connections no longer leave the server in an unusable state.
- File Server: Added workaround for buggy (or malicious) clients that send incomplete disconnect requests.
- File Server: Added logging of successful and failed authentication attempts.
- File Server: Added workaround for Windows CE with missing Enhanced DSS and Diffie-Hellman Cryptographic Provider (managed and slow implementation of Diffie-Hellman is used in this case).
- File Server: Fixed FileServer constructor (used to fail when default charset was multi-byte but not UTF-8).
- File Server: Unified ShellCommandEventArgs.User and SshConsole.User types.
- File Server: Added support for certificate-based server authentication (using 'x509v3-sign-rsa algorithm').
- File Server: Enhanced key negotiation error logging.
- File Server: Added workaround for Xamarin.Android where it was possible to open a non-existing directory.
- Mail: Added simple-to-use MailMessage.Settings object that supersedes MailMessage.Options.
- Mail: Fixed loading of MSG files with invalid characters in HTML body.
- Mail: Changed default RTF content handling. Added MailMessage.Settings.RtfMode.
- Mail: Added workaround for multipart/related entities that do not specify the view part.
- Mail: Fixed handling of special characters in attachment file names.
- Mail: Fixed wrong behavior when using MimeOptions.​SkipTnefMessageProcessing (no attachments were processed).
- MSG: Enhanced internal MSG parsing code.
- SMTP: Fixed DNS packet writer in Smtp.ResolveDomainMX method.
- IMAP: Workaround for Gmail IMAP server that incorrectly uses '[' and ']' characters in message keywords is now used with other servers as well.
- IMAP: Added workaround for outlook.com that does not properly handle OAUTH tokens sent as IMAP literals.
- IMAP: Added workaround for Office 365's IMAP server that occasionally closes accepted connections.
- EWS: Added support for Exchange Web Services (EWS).
- 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.
- ZIP: Better exception message when working with ZIP archives which use PKWARE's proprietary encryption algorithm.
- ZIP: ZipArchive now implements IEnumerable<ZipItem> to make it easier to iterate the items.
- ZIP: ZipArchive.PasswordRequired event is raised correctly when calling ZipItem.Open method.
- Security: Added XtsSettings class (passed to XtsStream constructor) to make it possible to specify additional options such as key size.
- Security: Added FileEncryption.EncryptionKeySize property to make it possible to specify encryption algorithm's key size.
- Networking: Fixed a bug in SOCKS4/SOCKS5 response reading code that triggered an infinite loop with buggy proxy servers.
- Networking: 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: Fixed compatibility with old versions of OpenSSH (2 and 3).
- SSH: Fixed a bug that could cause a deadlock in packet sending routine.
- SSH: Added SshParameters.​MinimumDiffieHellmanKeySize value (set to 1024 by default to mitigate Logjam attacks).
- SSH: SshPrivateKey constructor's 'password' argument made optional.
- 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.
- TLS/SSL: TLS 1.2 made compatible with Microsoft's implementation.
- TLS/SSL: Fixed client certificate authentication in TLS 1.2.
- TLS/SSL: Added Settings.​SslMinimumDiffieHellmanKeySize value (set to 1024 by default to mitigate Logjam attacks).
- TLS/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.
- Common: Fixed multi-file operations to never modify input FileSet's BasePath.
- Common: ThreadPool is now used to handle background operations instead of a custom implementation.
- Common: Enhanced multithread operation support in log writers.
- Released
- August242015
2015 R4.1 #
(build 5715 from 2015-08-24)
Fixed Xamarin mobile platform detection
Fixed platform detection code on Xamarin.iOS and Xamarin.Android.
Detailed list of changes:
- All: Fixed platform detection on Xamarin.Android and Xamarin.iOS.
- All: Version and platform added to assembly description.
- Released
- August092015
2015 R4 #
(build 5700 from 2015-08-09)
Support for Windows 10, .NET Framework 4.6 and Visual Studio 2015
All Rebex libraries 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.
Multi-core compression
Rebex ZIP now supports multi-core compression that enhances compression speed a lot on modern CPUs. Number of compressors can be configured via ZipArchive.Options.CompressorCount property.
Faster TLS/SSL and SSH negotiation on Xamarin.Android
Our SSH and TLS/SSL libraries now use Java-based Diffie-Hellman on Xamarin.Android, which substantially speeds up SSH and TLS/SSL negotiation when Diffie-Hellman algorithm is used.
File creation date support in FTP
Items returned by Ftp object's GetList and GetItems methods now provide creation time (if supported by the FTP server).
Public/private key XTS encryption
XtsStream object in Rebex Security supports RSA public/private key encryption.
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.
Asynchronous methods in NTP, Time and Daytime clients
We added Task-based asynchronous methods to Rebex Time library. This makes it possible to utilize the new 'await' keyword available in .NET 4.5. Legacy IAsyncResult-style asynchronous method pattern as available as well.
Detailed list of changes:
- All: Enhanced platform detection code.
- FTP: Added OPTS MLST support to enable non-default attributes.
- FTP: Added link support to MLSD/MLST parsers.
- FTP: Added FtpWebRequest.LogWriter property.
- FTP: Default value of Ftp.​Settings.​ReuseControlConnectionSession changed to True to enhance compatibility.
- FTP: Some legacy methods and properties now emit a warning when compiling.
- SFTP: Fixed Sftp.AbortTransfer to support value type states.
- SFTP: DownloadBufferSize, DownloadQueueLength, UploadBufferSize and UploadQueueLength added to Sftp.Settings.
- SFTP: Added workaround for a bug in GlobalScape 7.1.x which sends erroneous empty data packets to the client.
- SFTP: Fixed ObjectDisposedException that might have occurred when an SSH channel has been closed in a certain way.
- SCP: Fixed treatment of additional special characters in remote paths.
- File Server: Added support for UNC paths.
- File Server: Fixed issues with HMAC-SHA1 and HMAC-MD5 in FIPS-only mode.
- File Server: Added support for message authentication algorithms based on SHA-2 on .NET Compact Framework (when supported natively).
- File Server: Fixed handling of "empty" read requests (used to send back EOF instead of an empty block).
- File Server: Enhanced subsystem shutdown process to prevent exception messages in the log.
- File Server: LogLevel for SFTP filesystem errors lowered from Debug to Verbose.
- Mail: Some legacy methods and properties now emit a warning when compiling.
- Mail: TLS 1.2 is now enabled by default for IMAP, POP3 and SMTP.
- Mail: Added Imap/​Smtp/​Pop3ConnectionState.​Connected properties to replace a misnamed .Connection properties.
- Mail: MimeEntity.SetContent method no longer requires a charset to be specified.
- Mail: Transfer encoding checker fixed to properly distinguish 7-bit control characters from 8-bit characters.
- Mail: Added workaround for bad characters in Content-Location headers in Outlook .MSG messages.
- Mail: Optional Size, ReadDate, CreationDate and ModificationDate properties added to ContentDisposition class.
- Mail: Fixed persisting of changes of ContentDisposition object.
- MSG: Slightly refactored MSG parser internals.
- MSG: Improved MailMessage to detect UTF-16 encoding for text body in Outlook MSG messages.
- SMTP: Smtp constructor no longer requires DNS permission.
- 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.
- ZIP: Added multi-core compression support. The number of cores used for compression can be configured via ZipArchive.Options.CompressorCount property.
- Time: Added asynchronous API.
- Security: Added support for public/private key encryption to XtsStream.
- SSH: Added Settings.TryPasswordFirst and Settings.​WaitForServerWelcomeMessage workarounds to Scp and Ssh.
- 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 logging of SSH packet header data on decoding error.
- SSH: Added support for larger SSH packets.
- TLS/SSL: Unified status handling in ValidatingCertificate events and ICertificateVerifier interface.
- TLS/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.
- Common: Fixed end-of-line sequences in LogWriterBase, optimized FileLogWriter.
- Common: Added workaround for broken ASN.1 time values with the second part of "60".
- Released
- April152015
2015 R3.1 #
(build 5584 from 2015-04-15)
File Server bugfixes
Two bugs have been fixed in Rebex File Server. One bug caused errors in WinSCP while uploading files over SFTP, another bug made it impossible to create files and directories whose names contained whitespaces when uploading over SCP.
Detailed list of changes:
- File Server: Fixed SFTP file creation that was not compatible with WinSCP.
- File Server: Fixed SSH packet names in verbose log.
- File Server: Fixed handling of filenames with whitespaces in SCP.
- File Server: Disabled legacy "arcfour" SSH cipher by default.
- 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.
- Released
- April082015
2015 R3 #
(build 5577 from 2015-04-08)
New library - Rebex File Server
Rebex File Server is an SFTP, SCP and SSH server library. It provides secure remote file system access over an SSH channel using the SFTP or SCP protocols and makes it simple create an SFTP server that can be used by Rebex SFTP or any third-party SFTP, SCP or SSH client. Supports .NET Framework, .NET Compact Framework, Mono, Xamarin.iOS and Xamarin.Android. Available as a standalone package or as a part of Rebex File Transfer Pack, Rebex SSH Pack or Rebex Total Pack.
Disabled RC4 in TLS/SSL
The security of RC4 symmetric encryption algorithm has been questionable for many years. Recently, researchers have been able to exploit RC4's invariance weakness vulnerability to retrieve about 64 bytes of encrypted information of a very small fraction of TLS/SSL connections that happen to use weak keys. Since RC4 is no longer believed to be secure, it has been disabled by default.
Detailed list of changes:
- 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.
- FTP: Added a workaround for broken firewalls that send an invalid response of "27 Entering passive mode (...)" when initiating a data transfer.
- SCP: Added missing Scp.Login(SshGssApiCredentials) method and related events.
- File Server: Initial release.
- IMAP: Fixed a bug in Imap object that caused SocketException to be thrown instead of ImapException in some cases.
- Terminal: ScriptEvent.Duration makes it possible to limit the amount of time to wait for a response.
- SSH: Enhanced some authentication error messages.
- TLS/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.
- Common: Connect methods no longer require FileIOPermission (used to determine the assembly version for a log).
- Released
- March172015
2015 R2 #
(build 5555 from 2015-03-17)
Fix for FREAK vulnerability
This release fixes vulnerability to FREAK exploit. The vulnerable 512-bit legacy 'exportable' TLS/SSL ciphers have been disabled.
Support for TLS 1.2
Support for TLS 1.2 has been added, along with support for AES/SHA-256 cipher suites.
Detailed list of changes:
- SCP: Fixed escaping of round brackets in remote paths.
- Mail: Fixed a bug in Smtp/Imap Login methods that caused NTLM authentication not to be used in 'Auto' mode.
- MSG: Workaround for loading invalid Outlook MSG messages with redundant GUIDs and property tags.
- IMAP: Added Imap.​Settings.​DisableStatusOnSelectFolder option to make it possible to disable execution of 'STATUS' command before selecting a folder to determine a number of not-seen messages.
- Terminal: Fixed Scripting.DetectPrompt logging at Verbose level.
- Terminal: Ssh.Login method can now be called again when authentication fails.
- TLS/SSL: Added support for TLS 1.2.
- TLS/SSL: Added support for AES ciphers with SHA-256 checksums.
- TLS/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.
- Released
- February022015
2015 R1 #
(build 5512 from 2015-02-02)
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.
Detailed list of changes:
- All: Added support for Xamarin.iOS unified API.
- FTP: Compatibility enhancements in Ftp.FileExists and Ftp.GetInfo methods.
- SFTP: Added Sftp.Settings.LogChecksums option that makes it easily possible to log checksums of uploaded files.
- SFTP: Fixed listing of root-level wildcard paths.
- SFTP: Added Sftp.CreateSymlink method.
- Mail: Fixed possible NullReferenceException in RTF to HTML converter.
- MIME: Added missing null check in MimeEntity.IsMultipartSigned property.
- SMTP: Fixed SMTP state change logging in Xamarin.iOS/Android editions.
- 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.
- ZIP: Added workaround to make it possible to open ZIP files that contain items with corrupted modification time.
- Released
- December182014
2014 R3 #
(build 5466 from 2014-12-18)
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 .
Legacy SSL 3.0 disabled by default in TLS/SSL-enabled libraries.
TLS 1.1 is now used by default in TLS/SSL-enabled libraries. Legacy SSL 3.0 support is disabled by default because it is no longer considered secure. Its use is strongly discouraged after disclosure of POODLE Attack.
Detailed list of changes:
- 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).
- FileTransferClient: Enhanced FileTransferClient.Proxy object to make it possible to use a single proxy object for both FTP/SSL and SFTP protocols.
- FileTransferClient: Added SetSocketFactory method to FileTransferClient.
- FTP: Fixed improper logging of data received over FTP control connection.
- FTP: Fixed a bug that caused Ftp.DataPortRange to be ignored.
- FTP: Enhanced DataPortRange to better handle multiple Ftp objects with overlapping data port ranges.
- FTP: Added workaround for WinFtp Server's incorrect MDTM response which does not contain the milliseconds delimiter.
- FTP: Fixed MLST quoting workaround for the ProFTPD server. It is now only applied in 1.3.2x versions of ProFTPD server.
- FTP: Added workaround for WinFTP's server broken MDTM command.
- FTP: Made it possible to enabling wrong passive mode IP address workaround when using a proxy (if DNS resolution works locally).
- SFTP: Added workaround for Axway's strangely-behaved SSH_FXP_OPENDIR command.
- SFTP: Added workaround for WS_FTP's problematic SSH_FXP_REALPATH command.
- SFTP: Enhanced SFTP client to work nicely with Rebex File Server.
- Mail: Fixed loading of RTF font table which sometimes caused an improper font to be used in the resulting HTML.
- Mail: Added ExplicitSecurity to ImapExtensions and Pop3Extensions enums.
- Mail: SHA-2 signature support is now available in .NET Compact Framework edition as well.
- Mail: RTF-to-HTML converter enhanced to support highlighted and strikethrough text, superscripts and subscripts, embossed and engraved letters.
- Mail: Improved hyperlinks support in RTF-to-HTML converter.
- Mail: SetContent(fileName, name, ...) methods and equivalent constructors of the Attachment class, now allows null in 'name' parameter.
- MIME: Enhanced mail address parser to better handle broken headers.
- MIME: Enhanced MailMessage.CanDecrypt.
- MSG: Fixed handling of newline sequences in MSG message subject.
- MSG: Fixed bug causing an ArgumentOutOfRange exception to be thrown when loading some .msg messages.
- SMTP: Added automatic loading of SmtpConfiguration.SslMode property from app.config when possible.
- POP3: Fixed a bug in Pop3.ReadResponse method that caused an exception to be thrown when multi-line command returned -ERR response.
- IMAP: Improved handling of OAUTH authentication errors in IMAP and POP3.
- IMAP: Fixed ID/validity check in StoreMessage method
- IMAP: Added workaround for Tobit David server that sends untagged EXPUNGE responses when it should not.
- 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 '/n' (LF) Prompt 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.
- ZIP: Changed default encoding for zip password to windows-1252 + added ZipArchive.Options.PasswordEncoding to support other encodings.
- SSH: Enhanced SshPublicKey constructor to accept base64-encoded public key data.
- SSH: Added workaround for wrong SSH_MSG_USERAUTH_PK_OK packet in Cisco SSH.
- TLS/SSL: TLS 1.1 is now used by default in TLS/SSL-enabled libraries. Legacy SSL 3.0 support is disabled by default.
- TLS/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.
- Common: Added LocalItem.Attributes property.
- Common: PKCS #12 key loading routines changed to not persist keys in Windows key storage by default.
- Common: Added ConsoleLogWriter, a console-based log writer class.
- Released
- July032014
2014 R2 #
(build 5298 from 2014-07-03)
Unified API for FTP, FTP/SSL and SFTP
We added a new FileTransferClient object that resembles the existing Ftp and Sftp objects, but supports multiple file transfer protocols - FTP, FTP/SSL and SFTP.
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.
Detailed list of changes:
- All: Eliminated "Unknown heap type" warnings in Mono.
- FileTransferClient: Added FileTransferClient object. Supports FTP, FTP/SSL and SFTP protocols.
- FTP: Multi-file operations only try to determine the current remote path if it is actually needed.
- FTP: Added an option to force EPSV/EPRT commands.
- SFTP: Added Sftp.​Settings.​DisableRealPathWorkaround option to disable workaround for WS_FTP SSH_FXP_REALPATH bug.
- SFTP: Added workaround for SFTP servers that report duplicate extensions.
- Mail: Added new Smtp.Send method overload - Send(Stream input, string sender, string recipients).
- Mail: Added missing stream closing in Smtp.Send(string filename) method.
- Mail: Enhanced handling of DSN headers in MailMessage object.
- Mail: Fixed Attachment object's Save and GetContentStream methods that had problems with some encrypted attachments.
- MIME: Fixed a bug that could cause a NullReferenceException when adding attachments in some cases.
- MIME: Fixed erroneous quote escaping when encoding unstructured headers (such as Subject).
- MIME: Added a workaround for parsing addresses with missing domain name.
- MIME: Fixed loading of emails with more attachments of the same name containing braces.
- MSG: Fixed a bug which caused RTF attachment to be discarded when MSG email was resaved to MSG format.
- SMTP: Workaround for misbehaved Yahoo SMTP server added to DirectSend method.
- SMTP: Fixed Bcc header removal with Settings.SendWithNoBuffer option.
- POP3: Added Pop3.​Settings.​DisableApopAuthentication to disable APOP authentication.
- IMAP: Fixed ID/validity check in CopyMessage method.
- IMAP: Added support for Exchange-style username/mailbox usernames (username@domain/mailbox and domain/username/mailbox).
- 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.
- ZIP: Added argument-less overload for ZipArchive.Close method.
- ZIP: Added static Compressor class with simple data compression methods.
- Time: Removed non-working SynchronizeSystemClock methods from Xamarin.iOS and Xamarin.Android binaries.
- Networking: Enhanced logging of failed certificate validation errors.
- Networking: Fixed ProxySocket's Connect method behavior with disabled timeout.
- TLS/SSL: Enhanced TlsVersion and TlsCipherSuite parameters checking.
- TLS/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.
- Released
- February262014
2014 R1 #
(build 5171 from 2014-02-26)
Maintenance release
This update brings several improvements, workarounds and bugfixes.
Detailed list of changes:
- All: Various small low-level optimizations.
- FTP: Added workaround for small chunks of data received while uploading.
- SFTP: Added Sftp.​Settings.​TreatUnknownItemsAsFiles property (workaround for SFTP serves that return invalid item type values).
- Mail: Fixed a possible NullReferenceException that might occur when DNS resolving is very slow.
- Mail: Fixed a bug that caused some messages created using MailMessage.Clone() to be unsignable.
- Mail: Added new overloads for MailMessage.ValidateSignature method that makes it possible to specify more options.
- Mail: Fixed a bug in RTF to HTML converter that could make some loaded messages unsavable.
- Mail: Added workaround for slow chain building (rarely experienced).
- Mail: Added SkipTnefMessageProcessing option to make it possible to skip TNEF/winmail.dat attachment processing.
- MIME: Added an option to encode MailAddress without angle brackets.
- MIME: Fixed a bug in message validation code that caused some very complex messages to validate incorrectly.
- SMTP: Enhanced Smtp.ResolveDomainMX to use secondary DNS servers if needed, and added timeout argument.
- SMTP: Enhanced FQDN hostname detection for EHLO command.
- 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.
- ZIP: ZipArchive no longer throws 'unsaved changes' when nothing has been changed explicitly.
- ZIP: ActionOnExistingFiles can be now specified in AddFile and ExtractFile methods.
- ZIP: Added ZipArchiveOptions.​CreateDirectoryEntries option to force creation of directory entries.
- Security: FileEncryption.Encrypt an Decrypt methods no longer dispose the target stream.
- 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.
- Networking: 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.
- TLS/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.
- Common: Assemblies made more obfuscator-friendly.
- Common: Fixed null value comparisons in FileSystemItemComparer.
- Released
- December022013
2013 R3 #
(build 5085 from 2013-12-02)
Support for Xamarin.iOS and Xamarin.Android
Rebex libraries now support Xamarin.iOS and Xamarin.Android, making it possible to target iPad/iPhone and Android devices! (The only exception is the Terminal Emulation library whose TerminalControl object relies heavily on Windows Forms and is only available for Windows and Linux at the moment.)
Support for .NET Compact Framework 3.9
In addition to .NET CF 2.0 and 3.5, we now support .NET CF 3.9 as well. This makes it possible to target Windows Embedded Compact 2013, Microsoft's latest incarnation of Window CE.
Assemblies for every supported platform for all
With every purchase, you now get binaries for all supported platforms. Users with active support contract were upgraded for free. This will make it easy to embrace the new trends - we offer a single API that works with .NET, .NET Compact Framework, Mono, Xamarin.iOS and Xamarin.Android.
Support for Visual Studio 2013
All Rebex libraries 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 RTF-to-HTML converter
We fixed several issues found by our clients who deal with MSG or TNEF/winmail.dat messages, making it possible to process even wider range of e-mail messages than before.
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.
Encrypt an existing ZIP file in a single line of code
Need to password-encrypt an existing ZIP file? It's now possible with a single line of code thanks to ZipArchive.Encrypt static method.
Detailed list of changes:
- All: Xamarin.iOS and Xamarin.Android officially supported in all libraries except Rebex Terminal Emulation.
- All: .NET Compact Framework 3.9 officially supported.
- All: Visual Studio 2013 officially supported.
- FTP: Added FtpSetting.RecheckItemExistence option to verify remote item existence before using it.
- FTP: Support for checksum-based file modification checking added to Upload and Download methods (ActionOnExistingFiles.​ChecksumDiffers).​
- FTP: Added support for AS/400 to batch operations (uses NAMEFMT extension).
- FTP: Ftp.GetInfo method now always returns .Path and .Name parsed from the input "path" argument (instead of parsing MLST output when available).
- FTP: FtpBatchTransferException made obsolete (use FtpException instead).
- FTP: Enhanced SSCN mode handling in server-to-server transfers (FXP), making it more compatible.
- FTP: Fixing time checking in SetFileDateTimeSync (incorrectly used millisecond precision).
- FTP: Asynchronous version of the GetRemoteChecksum method added.
- FTP: Fixed assignment of default reaction in response to a problem encountered during Upload/Download methods.
- SFTP: SftpBatchTransferException made obsolete (use SftpException instead).
- SFTP: Fixed timeout handling in Sftp.Connect method.
- SFTP: Added Sftp.​Settings.​DisablePathNormalization option.
- SFTP: Added Sftp.Setting.RecheckItemExistence option to verify remote item existence before using it.
- SFTP: Fixed assignment of default reaction in response to a problem encountered during Upload/Download methods.
- SCP: Upload and Download methods added to Scp object to replace PutFiles and GetFiles methods.
- Mail: Added TreatBinaryRtfAsAlternateView option which forces a binary RTF to be treated as an AlternateView.
- Mail: Smtp and Imap object's Login method no longer attempts Kerberos in 'auto' mode if the username contains two slashes or binary zero.
- Mail: Fixed a bug in Imap/Pop3/Smtp.GetConnectionState() method causing NullReferenceException to be thrown in rare scenario.
- Mail: Fixed a bug in RTF parser which removed CR characters in some cases.
- Mail: Invalid RTF files no longer cause the mail parser to fail.
- Mail: RTF parser no longer fails on invalid escaped elements.
- Mail: Fixed bianry data handling in RTF parser.
- Mail: Better handling of improperly-placed 'signed' entities added to MailMessage object.
- MIME: Fixed possible NullReferenceException in RTF parser.
- MIME: Added workaround for messages produced by some Android devices using using "multipart/relative" instead of "multipart/related".
- MIME: RtfToHtml converter now supports hyperlinks nested within RTF tables.
- MIME: Fixed problematic handling of unsupported charsets in RTF.
- MSG: Submit and delivery date/time are persisted during .EML <-> .MSG format conversion.
- MSG: Optimized memory stream usage.
- MSG: Enhanced message body charset detection of Unicode MSG messages.
- MSG: Fixed attachment ordering issue in Outlook .MSG files with RTF body.
- SMTP: Added SkipContentTransferEncodingCheck to skip content-transfer-encoding check (not recommended).
- IMAP: Fixed attachment detection in GetMessageInfo/GetMessageList with ImapListFields.MessageSructure flag ('related' entities directly inside 'mixed' were not detected properly).
- 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.
- ZIP: Fixed format of NTFS extra fields.
- ZIP: Added Unix properties to ZipItem.
- ZIP: Fixed empty archivePath checking in ZipArchive.AddFile method.
- ZIP: Fixed creation of ZIP item headers when adding data from stream.
- ZIP: Added ZipArchive.Encrypt static method to add password protection to existing ZIP files without recompressing them.
- ZIP: Optimized memory usage in ZipItem.ExtractToArray() method.
- ZIP: Fixed handling of non-standard Zip64 files (which contain duplicate header values).
- ZIP: Fixed issues with event handlers (used to be raised improperly in some cases).
- ZIP: Fixed SetLength() method of streams returned by ZipItem.Open() method to throw an exception.
- ZIP: Support for checksum-based file modification checking added to Add and Extract methods (ActionOnExistingFiles.​ChecksumDiffers).​
- ZIP: Fixed assignment of default reaction in response to a problem encountered during Add/Extract methods.
- Time: Enhanced time range of NtpTimestamp and NtpTimestampDifference, making it possible to synchronize when the clock is off by decades.
- Time: Added Ntp.SkipStratumCheck property to skip error packet detection.
- Security: Decrypting with wrong password no longer overwrites the target file.
- 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).
- Networking: Added support for digest authentication to HTTP CONNECT proxies.
- Networking: 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).
- Common: Added FileLogWriter.Path to replace FileLogWriter.Filename.
- Common: Added LocalItem.ComputeCrc32() method.
- Common: Signed and encrypted message parsing made more compatible with broken messages.
- Released
- August202013
2013 R2 #
(build 4981 from 2013-08-20)
Terminal Emulation library supports both Telnet and SSH transport layers
Our two terminal emulation libraries 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.
IMAP/SSL and POP3/SSL superseded by Rebex Secure Mail
Many users who purchased one of the budget versions of the mail library later found out they in fact needed both POP3 and IMAP capability and had to upgrade to Secure Mail. Starting today, POP3 and IMAP will no longer be available as stand-alone libraries. All users with active support contract were upgraded for free.
Faster ZIP archive parsing
ZIP archive parsing has been optimized, resulting in huge speed increase on slow disk drives.
Detailed list of changes:
- Mail: Fixed a bug in SmtpTranserProgress.GetData() array creation.
- Mail: Enhanced RTF to HTML conversion in TNEF parser to handle embedded HTML.
- Mail: Improved support for hyperlinks in RTF-to-HTML converter.
- MIME: Enhanced whitespace folding parser and writer.
- MIME: Added workaround for Mono 2.10's broken iso-8859-n encoding objects.
- 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.
- ZIP: Optimized ZIP archive parsing, resulting in huge speed increase on slow disk drives.
- Networking: Added support for IPv6 hostnames with zone IDs.
- TLS/SSL: Added workaround for MS FTP's TLS 1.1 bug in close_notify handling.
- Released
- July292013
2013 R1 #
(build 4959 from 2013-07-29)
Official support for Mono
All Rebex libraries now officially support Mono, an open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft .NET Framework. The same assemblies that work on Windows now work on Mono in Linux or Apple OS X as well.
Enhanced Outlook .MSG and winmail.dat/TNEF parsers
We have made numerous enhancements in MailMessage
object to make it even more compatible
with non-MIME message formats such as Outlook .MSG or winmail.dat/TNEF. The integrated RTF parser
and RTF to HTML converter has been improved as well.
Unified FTP and SFTP item comparers
Although FtpItemCollection
and SftpItemCollection
objects have been derived from
a shared base class since the introduction of IFtp
(a common interface for SFTP and FTP/SSL), a common base class for FtpItemComparer
and SftpItemComparer
has been missing. In this release, we added FileSystemItemComparer
to fix this inconvenience.
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.
New library - Rebex Security
We released a new library called Rebex Security. It features XTS-AES encryption stream
support and easy-to-use FileEncryption
class with support for AES, 3DES, TwoFish and XTS-AES.
Also includes PKCS #7 (CMS) API for electronic signatures and encryption of binary data using X.509 certificates.
Supports .NET Framework, .NET Compact Framework and Mono. Available as a standalone package or as a part
of Rebex Total Pack.
Detailed list of changes:
- All: Added support for Mono.
- All: Fixed finalizers that used to call state-changed events in some cases.
- FTP: GetItems now returns links instead of resolved items.
- FTP: Ftp.Settings.RestoreDateTime now applies to PutFile and GetFile methods as well.
- FTP: Fixed handling of broken links when deleting.
- FTP: Fixed a conflict of ConnectPassiveLater option and XFB server workaround.
- FTP: Added Ftp.​Settings.​TimeComparisonGranularity property.
- FTP: Ftp.Settings.UploadCommand now used in GetUploadStream and Upload methods as well.
- FTP: Multi-file operations use relative paths if possible.
- FTP: Sanity check for GetCurrentDirectory return value added to multi-file operations.
- FTP: Added proxy authentication support to FtpSite and FtpOpen proxy types.
- FTP: Improved Ftp.FileExists to work with servers that return code 553 to indicate non-existent file or directory.
- FTP: Fixed Gene6 FTP server version detection (v3.10 was detected as v3.1).
- FTP: Ftp.GetConnectionState() method made more reliable.
- FTP: Added Ftp.​Settings.​KeepAliveDuringTransferInterval to replace Ftp.​KeepAliveDuringTransferInterval.​
- FTP: When using TransferMethod.Move, only successfully transferred files are deleted.
- FTP: Enhanced TLS connection error handling - FtpException with ConnectionClosed state is thrown.
- FTP: Fixed possible race condition on multi-file methods.
- FTP: Optimized directory existence detection for current directory.
- FTP: Added workaround for server that appends 'bytes' to the end of response to the SIZE command.
- FTP: GetList and GetInfo return a path in the Path property.
- FTP: Item type order of FtpItemComparer reversed to match Rebex SFTP.
- FTP: Added workaround for ncFTPd's partially-broken MLST command.
- FTP: TransferType and TransferMode now persist through sessions.
- FTP: Enhanced multi-file operation logging.
- FTP: Added FileSystemItemComparer to replace FtpItemComparer and SftpItemComparer.
- FTP: Multi-file operations fixed to work properly with '.'-based FileSets.
- FTP: Several options shared by Ftp and Sftp objects added to IFtpSettings.
- FTP: Fixed Delete("dir/.") that used to delete "dir" as well.
- SFTP: GetItems now returns links instead of resolved items.
- SFTP: Sftp.Settings.RestoreDateTime now applies to PutFile and GetFile methods as well.
- SFTP: Fixed handling of broken links when deleting.
- SFTP: Added default error messages for SFTP v4 errors.
- SFTP: Added Sftp.​Settings.​TimeComparisonGranularity property.
- SFTP: Added Sftp.​Setting.​DisableFxpStatWorkaround property.
- SFTP: Fixed FingerprintCheck, BannerReceived and AuthenticateRequest events in Sftp and Scp.
- SFTP: Added Sftp.KeepAlive() method.
- SFTP: Sftp.GetConnectionState() method made more reliable.
- SFTP: When using TransferMethod.Move, only successfully transferred files are deleted.
- SFTP: Fixed SftpItem.Name to return "/" instead of "" for the root folder.
- SFTP: Fixed two event calls in file listing methods that did not use the proper synchronization context.
- SFTP: GetList and GetInfo return a path in the Path property.
- SFTP: Added support for restoring creation date/time on upload.
- SFTP: Enhanced multi-file operation logging.
- SFTP: Added FileSystemItemComparer to replace FtpItemComparer and SftpItemComparer.
- SFTP: Multi-file operations fixed to work properly with '.'-based FileSets.
- SFTP: Several options shared by Ftp and Sftp objects added to IFtpSettings.
- SFTP: Fixed Delete("dir/.") that used to delete "dir" as well.
- Mail: Added Attachment(byte[]) constructor.
- Mail: Added FIPS 140-2 compliant mode in which only FIPS-approved modules are used.
- Mail: Added workaround to make it possible to load MIME files with BOM headers.
- Mail: Fixed DIGEST-MD5 authentication (was incompatible with servers using different casing of 'MD5-sess') in IMAP, POP3 and SMTP.
- Mail: Added AttachmentBase.ToMimeEntity() method.
- Mail: Fixed GetConnectionState/​CheckConnectionState on .NET CF in IMAP, POP3 and SMTP.
- Mail: Optimized RTF to HTML converter.
- Mail: Optimized quoted-printable entities encoder.
- Mail: Added support for 'start' parameter in 'multipart/related' (RFC 2387).
- Mail: Added workaround for invalid filenames in TNEF/winmail.dat attachments.
- Mail: All fields related to message data are now reset during MailMessage.Load.
- Mail: Conversion of RTF views into HTML can now be disabled.
- Mail: RTF to HTML converter enhanced to remove binary 0 characters from text.
- MIME: Fixed RTF binary data handling.
- MIME: Support for non-standard uuencoded MIME attachemnts added to MailMessage.
- MIME: Fixed MIME-encoded header splitting.
- MIME: Added MimeOptions.DoNotTrimHeaderValues.
- MIME: Added workaround for bad content-transfer-encoding in 'multipart' and 'message' entities.
- MIME: Fixed parser of base64-encoded embedded messages (used to fail in some cases).
- MIME: Mail message serialization optimized to be more memory-efficient.
- MIME: Better detection of non-MIME PKCS #7 SignedData entities.
- MIME: Added workaround for non-leaf resource entities.
- MIME: Fixed rare StackOverflowException when parsing broken RTF.
- MIME: Fixed exception message that reported TNEF parser error even though a different error occurred.
- MIME: TNEF parser now disinguishes between text-only and binary RTF views.
- MIME: When converting RTF to HTML during TNEF/winmail.dat parsing, only attachments that were part of the original winmail.dat file are linked.
- MSG: Enhanced handling of charsets in Outlook .MSG parser.
- MSG: Fixed MimeOptions.LoadMsgProperties option that sometimes caused MailMessage.Save to fail.
- MSG: Fixed file name generation for RTF attachments in Outlook MSG parser.
- MSG: Added workaround for RTF views with too many end brackets.
- MSG: Sanity check added to date/time reader of Outlook .MSG parser.
- MSG: Added plain text preview generator for HTML-only .MSG files.
- MSG: Relaxed mandatory properties check in Outlook .MSG parser.
- MSG: Added workaround for Outlook .MSG with broken TransportMessageHeaders field.
- MSG: Added workaround for broken MessageId values in Outlook .MSG.
- SMTP: Binary MIME and 8-bit MIME is announced when required using MAIL FROM command's argument.
- SMTP: Adding Smtp.SendingMessage event.
- SMTP: Added Smtp.Settings.ReportTransferredData and extended TransferProgress to optionally report actual data.
- IMAP: Added support for Gmail-style extended LIST command (RFC 6154).
- IMAP: ImapFolderCollection implements IEnumerable<ImapFolder>.
- IMAP: Fixed DateTime.MaxValue handling in Imap.Search() method.
- IMAP: Added workaround for Gmail IMAP server that incorrectly used '[' and ']' characters in message flags.
- 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.
- ZIP: Added Zip.​Options.​RaiseEventsFromCurrentThread option.
- ZIP: Added support for ASi Unix extra field.
- ZIP: Multi-file operations fixed to work properly with '.'-based FileSets.
- ZIP: Fixed Delete("dir/.") that used to delete "dir" as well.
- Time: Fixed DAYTIME response parser that applied the time zone offset twice in some cases.
- Security: Initial public release.
- Networking: Added support for HTTP CONNECT proxy communication logging.
- SSH: Dispose and Disconnect methods added to SshSession object and Close method deprecated.
- SSH: SshSession now throws exceptions with ConnectionClosed status on closed connections.
- SSH: Fixed SshException.Data["ProtocolCode"] and .Data["ProtocolMessage"] values.
- SSH: Added verbose logging of raw data during welcome message exchange.
- SSH: Fixed FingerprintCheck, BannerReceived and AuthenticateRequest events in Ssh.
- TLS/SSL: SslInsertEmptyFragments property added to SslSettings.
- TLS/SSL: Fixed null TlsParameters.Certificate handling in server-side TlsSocket.
- Cryptography: Added support for anyExtendedKeyUsage attribute (in X.509 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.
- Common: Enhanced workaround for Stream.Seek on .NET CF.
- Common: FileLogWriter enhanced to log assembly version when opening log file.
- Common: Added missing PublicKeyInfo() constructor.
- Common: Added FileSet.​ContainingDirectoriesIncluded option.
- Common: Added workaround for instances of FileStream that return "[Unknown]" name.
- Common: EncodingTools support IBM437 charset on all platforms.
- Common: Added CertificateFindOptions.None.
- Common: Added FileSystemItemCollection.UsePath property.
- Released
- November122012
2012 R3 #
(build 4700 from 2012-11-12)
Official support for Visual Studio 2012
All Rebex libraries 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.
Task-based asynchronous methods
The major change is the addition of new Task-based asynchronous methods to .NET 4.0/4.5 variant of our libraries. This brings our API up-to-date with the current trends and makes it possible to utilize the new await keyword available in .NET 4.5 and Visual Studio 2012. Finally, asynchronous programming became easy and seamless. Check out some of the updated samples to see this in action!
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.
Simplified Connect methods
We simplified even the most common task - connecting to a server. All you have to supply to the Connect method of Ftp, Imap, Pop3 or Smtp object is the server hostname and an SslMode. The Connect method automatically chooses the port according to the communication protocol and the specified SSL mode.
Simplified custom certificate validation
We added a new ValidatingCertificate event to Ftp, Imap, Pop3 and Smtp.
It makes it much easier to write custom certificate validation routines - all you have to do is add an event handler which either calls e.Accept()
or e.Reject()
.
Detailed list of changes:
- 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.
- FTP: Added Ftp.Settings.As400ListingDateFormat property to make it possible to specify AS/400 listing date format.
- FTP: Added Ftp.Settings.UploadCommand to make it possible to specify a different upload command to be used instead of STOR.
- FTP: Removed deprecated Ftp.SetTransferType and Ftp.Logoff methods.
- FTP: Removed unused FtpBatchTransferOperation.​FileDataBlockProcessed value.
- FTP: FtpException.Response is now set for some OperationFailure errors as well.
- FTP: Ftp.DirectoryExists/FileExists methods enhanced to support more servers.
- FTP: Added a support for "cdir" field on MLST command results (fixed NullReferenceException in GetFileDateTime method with some FTP servers).
- FTP: Added Ftp.Settings.UseLegacyPaths flag to enable old-style path reporting in multi-file operation events.
- FTP: Fixed ActionOnExistingFiles.​ResumeIfPossible behavior to skip existing files if already transferred.
- FTP: Multi-file operation events always report absolute paths.
- FTP: Enhanced source path checking in multi-file operations.
- FTP: Fixed a bug in AS/400 listing parser that caused the last modified datetime to be parsed incorrectly.
- FTP: Added simplified Connect method overload with SslMode argument.
- FTP: FtpBatchTransferException object was made redundant (its properties were moved to FtpException).
- FTP: Added Ftp.Settings.RestoreDateTime property to make it possible to restore source date/time on target.
- FTP: Fixed argument checks in GetUploadStream/GetDownloadStream methods.
- FTP: Added Rename value to ActionOnExistingFiles enum (used in Upload/Download methods).
- FTP: Events Traversing, TransferProgressChanged, DeleteProgressChanged and ProblemDetected added into Ftp to make it possible to get notified about significant actions and to be able to react to a problem in multi-file operations.
- FTP: Added Ftp.Settings.SslReuseSessions option to make it possible to disable TLS/SSL session reusing for data transfers.
- SFTP: Added Sftp.Settings.RestoreDateTime property to make it possible to restore source date/time on target.
- SFTP: Removed unused SftpBatchTransferOperation.​FileDataBlockProcessed value.
- SFTP: Changed Sftp.PutFile(..., string, long, long) behavior to truncate remote path when zero remote offset is specified (corresponds to Sftp.PutFile(..., string) behavior). Added Sftp.​Settings.​DisablePutFileZeroOffsetTruncate option to force old behavior.
- SFTP: Fixed ActionOnExistingFiles.​ResumeIfPossible behavior to skip existing files if already transferred.
- SFTP: Multi-file operation events always report absolute paths.
- SFTP: Enhanced source path checking in multi-file operations.
- SFTP: Fixed argument checks in GetStream/​GetUploadStream/​GetDownloadStream methods.
- SFTP: Added Rename value to ActionOnExistingFiles enum (used in Upload/Download methods).
- SFTP: Events Traversing, TransferProgressChanged, DeleteProgressChanged and ProblemDetected added into Sftp to make it possible to get notified about significant actions and to be able to react to a problem in multi-file operations.
- SCP: Added connected-check to Scp object methods.
- SCP: Changed default SCP upload packet size from 32KB to 8KB (the former size was too big for some servers).
- SCP: Added workaround for SCP in OpenSSH 4.x that doesn't accept quoted paths.
- Mail: Fixed bugs in DIGEST-MD5 authentication that caused it to fail with some servers (SMTP, POP3, IMAP).
- Mail: Mail address writer quotes address parts if needed.
- Mail: Added a new MailMessage.Sign(IEnumerable<Certificate>) overload.
- Mail: Enhanced TNEF/winmail.dat parser to support embedded messages.
- Mail: Charset names always use lowercase letters now.
- Mail: Added Settings property to Imap, Pop3 and Smtp objects.
- MIME: Fixed a bug that caused an 'attachment' content-disposition to be used for resources in some cases.
- MIME: Added support for non-MIME PKCS #7 signed attachments.
- MIME: Added workaround to MSG parser to handle transport message headers with no line ending.
- MIME: MimeOptions.OnlyParseHeaders now makes it possible to load headers with no CRLF ending.
- MIME: Fixed padding of multi-value fields in TNEF/winmail.dat parser.
- MIME: Enhanced embedded image support for TNEF/winmail.dat messages.
- MSG: Enhanced MSG parser to handle subject values with invalid characters.
- MSG: Fixed a bug in MSG message saving routines occasionally caused MailMessage.Save to fail when called on several MailMessage instances at the same time from multiple threads.
- SMTP: Added FIPS 140-2 compliant mode in which only FIPS-approved modules are used.
- SMTP: Fixed Smtp.Send methods to throw SmtpException instead of ArgumentException when supplied MailMessage has missing info needed for sending.
- SMTP: Added OAUTH2 authentication support.
- SMTP: Support for sending messages using .NET's SMTP delivery engine added to to SmtpConfiguration-based Smtp.Send method (useful in medium trust environments).
- SMTP: Added simplified Connect method overloads with SslMode argument.
- POP3: Multi-line response logging added.
- POP3: Added workaround for QuarkMail server which only supports ClearText authentication.
- POP3: Added simplified Connect method overloads with SslMode argument.
- IMAP: Added OAUTH2 authentication support.
- IMAP: Enhanced message structure parser to ignore invalid entities reported by some servers.
- IMAP: Added simplified Connect method overloads with SslMode argument.
- IMAP: Enhanced text part detection in IMAP message structure parser.
- 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')
- ZIP: Added FIPS 140-2 compliant mode in which only FIPS-approved modules are used.
- ZIP: Support for setting file datetimes on .NET Compact Framework.
- ZIP: Fixed Legacy.FileSet indexer to return added paths in unchanged form.
- ZIP: Asynchronous methods support .NET 4.x-style task-based asynchronous pattern in addition to .NET Framework 2.0/3.x-style event-based pattern.
- ZIP: Added Rename value to ActionOnExistingFiles enum (used in Add/Extract methods).
- ZIP: Added Zip.Options.RestoreDateTime property (enhances existing RestoreFileDates option).
- Time: Daytime.SynchronizeSystemClock and Time.SynchronizeSystemClock uses TCP in default. Added overloaded methods with useTcp argument.
- Time: Daytime protocol response parser enhanced to be compatible with more servers.
- 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).
- TLS/SSL: Fixed a bug in server-side TLS/SSL that caused it to fail when session resuming was enabled.
- TLS/SSL: Fixed TlsException serialization that failed for some errors.
- TLS/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 Framework 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.
- Common: Fixed P/Invokes in NTLM/Kerberos code.
- Common: AddRange method added to file item collections.
- Common: FIPS 140-2 compliant mode enhancements.
- Common: Fixed certificate validation issue on Windows XP and Windows Server 2003.
- Common: Added Certificate.Thumbprint property.
- Common: Fixed a bug in certificate chain building routine that caused it to ignore additional stores in some cases.
- Released
- June112012
2012 R2 #
(build 4546 from 2012-06-11)
RTF to HTML converter
Almost all e-mail messages use HTML and/or plain text for the message body. But this is not always the case for Outlook .MSG messages and even for mail messages using the infamous winmail.dat/TNEF format. Both of these often use RTF instead of HTML, causing interoperability issues with third-party clients. Fortunately, Rebex Secure Mail users no longer have to suffer from this - we have added a RTF-to-HTML converter that converts the body of these messages into HTML, which means they can be then processed just like an ordinary e-mail!
Client certificate authentication in SFTP & SSH
Although SFTP/SSH usually use password-based or public-key-based authentication, some servers support X.509 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.
High-level GZIP API
Although it was already possible to read and write GZIP files using existing Rebex.IO.Compression.Streams classes, they were not as straightforward to use as we would like. As an easy-to-use alternative, we added Rebex.IO.Compression.Gzip class with Compress and Decompress methods.
Detailed list of changes:
- FTP: Added support for "double-login" FTP proxy servers.
- FTP: Added Ftp.GetItems(string, ...) methods.
- FTP: Link resolving code enhanced to better handle FTP servers on Un*x-like platforms.
- FTP: Added support for additional MLSD attributes (creation time, Unix mode/owner/group and Windows file attributes).
- FTP: Added support for OPTS UTF8 on RaidenFTPD server.
- FTP: Added Download/Upload(string, string) method overload.
- FTP: Added support for common names with '*' wildcard to CertificateChain.Validate.
- FTP: Added support for instances of MS FTP 7.5 which request hostname.
- FTP: MLST is now used in Ftp.GetFileDateTime by default.
- FTP: Added workaround to SetFileDateTime that checks whether the correct time was set and fixes it if it was not.
- FTP: Compatibility enhancements in multifile methods.
- FTP: Fixed FtpProxy serialization where Encoding was omitted.
- SFTP: Added support for POSIX rename ('posix-rename@openssh.com' extension).
- SFTP: Fixed a bug in Sftp.GetFiles which caused an ArgumentOutOfRangeException on some servers.
- SFTP: SftpItem uses UTC time for range checks (previously there were problems with times close to 1970-01-01).
- SFTP: Added Download/Upload(string, string) method overload.
- SFTP: Added Sftp.GetItems(string, ...) methods.
- Mail: Added RTF to HTML convertor which is used to produce an HTML body for RTF-only Outlook MSG or winmail.dat/TNEF e-mails.
- Mail: AlternateView.SetContentFromFile now removes the byte-order-mark from the body text for text/* media types.
- Mail: Added workaround for TNEF attachments which use full instead of name only.
- Mail: MailSignatureStatus.​SenderSignatureMissing value fixed (was identical to MissingSender by mistake).
- MIME: Added MimeMessage.Priority property.
- MSG: Invalid characters in attachmnent file names of Outlook MSG messages are now replaced with underscore character.
- MSG: Added support for '+' character in media type headers.
- MSG: Support for 'REPORT.IPM.Note.IPNRN' added to Outlook MSG parser.
- MSG: X-Outlook-* headers with non-ASCII characters produced by LoadMsgProperties are now properly MIME-encoded.
- MSG: Added workaround for MSG files falsely claiming to use UTF-16, which used to produce unreadable X-Outlook-* headers with LoadMsgProperties option.
- MSG: Enhanced handling of invalid media types in Outlook MSG messages.
- MSG: Fixed a bug in MSG parser that caused it to fail with signed and/or encrypted messages if MimeOptions.OnlyParseHeaders option was set.
- SMTP: Fixed a bug in static Smtp.Send method where a connection was established even though it was not needed.
- SMTP: SmtpTransferProgressEventArgs.​TotalBytes property added.
- SMTP: Smtp.ResolveDomainMX method fixed to handle CNAME records as well.
- IMAP: Better error message for implicit SSL IMAP server sending plain packets.
- IMAP: Fixed a bug in Imap that occasionally caused an error when fetching message bodies.
- 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).
- ZIP: High-level GZIP API added (Rebex.IO.Compression.Gzip class).
- Time: Added a workaround for Windows CE bug that caused a wrong time zone to be used when setting a time with different daylight saving offset.
- 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.
- TLS/SSL: Fixed a misleading error message which was reported when certificate revocation status could not be checked.
- TLS/SSL: When ProtocolVersion error occurs, data received prior to it is logged.
- SSH Shell: Ssh.AuthenticationRequest event added (supports advanced keyboard-interactive variants).
- SSH: Added support for hmac-sha1-96 and hmac-md5-96 MAC algorithms.
- 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 Framework 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.
- Common: Added FileSet.Flatten option (makes it possible to ignore source directory structure and copy all files into single target directory).
- Common: Enhanced error reporting of file-path-based methods.
- Common: Added LocalItem and LocalItemCollection classes (used by FileSet.GetLocalItems method).
- Released
- March012012
2012 R1 #
(build 4444 from 2012-03-01)
Libraries 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.
New multi-file methods in Rebex SFTP and FTP/SSL
FTP/SSL and SFTP got several new methods: Upload, Download, Delete and GetItems. The first two are replacements for PutFiles/GetFiles (and support move operation in addition to copy), Delete makes it possible to delete multiple files (or even a directory tree) at once and GetItems makes it possible to retrieve a list of files for the whole directory tree in one call.
Common API for SFTP and FTP/SSL (experimental)
Lot of our customers have been asking for a common API capable of both SFTP and FTP/SSL. Even though Ftp and Sftp objects provide a very similar API, they are still two distinct classes and writing code that can use either of them was hard. Now, it got much better with the introduction of IFtp interface.
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.
Compatibility enhancements in Rebex Secure Mail
We are constantly improving our mail writers and parsers to be as compatible with third-party software as possible. In this version, we added support for some embedded OLE objects in TNEF/winmail.dat e-mails (they are parsed as attachments) and enhanced our PKCS #7 (S/MIME) writer which used to have some compatibility issues with Entrust CSP. Many workarounds for badly structured messages were added as well. Rebex Secure Mail is now more compatible than ever.
Support for Time and Daytime protocols in Rebex Time
Although SNTP is a very useful protocol, it runs on top of UDP protocol which is not always available. We added support for Time and Daytime protocols which run over TCP. They don't offer the precision of SNTP, but can be useful if SNTP is simply not an option.
Detailed list of changes:
- 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).
- FTP: Auto-resume capability added for PutFiles/GetFiles methods.
- FTP: Fixed a bug in handling some NOOP responses.
- FTP: DoNotDetectFeatures option now turns off server feature detection completely, not only the one using the FEAT command.
- FTP: Fixed a bug in PutFiles method that caused incorrect behavior when a root-based masked path was specified.
- FTP: Better GlobalScape server detection.
- FTP: Ftp.GetFile called with non-zero localOffset creates the local file if it doesn't exists.
- FTP: String comparison methods use StringComparison.Ordinal.
- FTP: GetList/GetRawList methods log the list content at Debug log level.
- FTP: Added workaround to GetFiles method for servers that return full paths in file listings.
- FTP: New values related to Upload, Download, Delete and GetItems methods added to FtpBatchTransferOperation enum.
- FTP: Added a workaround for servers that append a dot to their SIZE response.
- FTP: Fixed date parsing in 24h DOS-like file listings.
- FTP: Fixed problems with synchronization when EnableMultipleBlockingCalls option is enabled.
- FTP: FTP no longer attempts to resume TLS/SSL session for data connection when TlsOptions.DoNotCacheSessions option is used.
- FTP: New Download, Upload, Delete and GetItems methods added to Ftp object (along with associated enums and classes).
- FTP: Added Ftp.Settings property that replaces and extends Ftp.Options.
- FTP: Ftp object implements IFtp interface to make it easier to write code which works with both FTP and SFTP.
- FTP: Multi-file operations optimized by omitting existence check of items found during the operation.
- FTP: Added a workaround for GlobalScape servers that used to ignore the last packet in some circumstances.
- SFTP: Auto-resume capability added for PutFiles/GetFiles methods.
- SFTP: Added workarounds for another SFTP server where SSH_FXP_STAT and SSH_FXP_REALPATH commands (used by many Rebex SFTP methods) don't always work (for aliased directories, for example).
- SFTP: Added workaround for ChangeDirectory problems with WS_FTP server.
- SFTP: OpenSSH on a Unix-like OS is now detected properly.
- SFTP: Fixed a bug in PutFiles method that caused incorrect behavior when a root-based masked path was specified.
- SFTP: Changing Sftp's or Scp's LogWriter now changes the underlying SshSession's LogWriter as well.
- SFTP: Added SftpOptions.UseSmallPackets option that reportedly solves speed issues in some rare circumstances.
- SFTP: It's now possible to call Sftp.Login again if it fails.
- SFTP: Added TryPasswordFirst option to try "password" authentication first and "publickey" later (by default, the opposite order is used).
- SFTP: New values related to Upload, Download, Delete and GetItems methods added to SftpBatchTransferOperation enum.
- SFTP: String comparison methods use StringComparison.Ordinal.
- SFTP: New Download, Upload, Delete and GetItems methods added to Sftp object (along with associated enums and classes).
- SFTP: Added Sftp.Settings property that replaces and extends Sftp.Options.
- SFTP: Sftp object implements IFtp interface to make it easier to write code which works with both FTP and SFTP.
- SFTP: Multi-file operations optimized by omitting existence check of items found during the operation.
- Mail: MimeHeaderCollection.GetAllHeaders and GetAllHeaderValuesRaw methods added.
- Mail: MailMessage.ReceivedDate added. Extracts the date from the topmost 'Received' header.
- Mail: Addes support for embedded OLE objects in TNEF/winmail.dat e-mails (they are parsed as attachments).
- Mail: Added workaround for broken TNEF/winamil.dat messages with CRLF suffix.
- Mail: Fixed a parser error while parsing inner MIME entities with missing headers.
- Mail: Removed bad character check for TNEF/winmail.dat message embedded attachments.
- MIME: Fixed a bug that caused problems creating MIME messages with large binary attachments.
- MIME: Added workaround for date headers with 'negative' hour parts.
- MIME: Attachment.GetContentStream() no longer removes the BOM header from text attachments.
- MIME: Added a workaround for broken messages with colon in a MIME parameter (replaced with an underscore).
- MIME: PKCS #7 attachments are only parsed if they appear to be an actual embedded message.
- MIME: Added workaround for incomplete Q-encoded header sections.
- MIME: Added MailDateTime.OriginalTime that returns the date in its original time zone.
- MIME: Added workaround for broken MIME-encoded headers with unencoded quotes inside.
- MIME: Fixed a bug in the process of searching for a suitable decryption certificate.
- MIME: PFX/P12-based CertificateFinder now supports identification by Subject Key Identifier for certificates with no explicit SKI.
- MSG: Compatibility enhancements in MSG reader.
- MSG: Additional .MSG-only properties are persisted when MimeOptions.LoadMsgProperties option is specified.
- MSG: Fixed a bug in MSG message writer that caused the messages to be not sendable from Outook.
- MSG: Enhanced linked resource detection in MSG writer.
- MSG: Fixed a problem in handling binary data embedded in RTF body parts.
- MSG: Fixed invalid usage of encoding when reading BodyText and BodyHtml in some Unicode MSG files.
- MSG: Support for Application specific OLE attachments added to MSG reader.
- SMTP: Compatibility enhancements in GSSAPI authentication.
- SMTP: Fixed Smtp.Send to report a proper exception when trying to send a signed message with 8bit or binary MIME entities through a server that doesn't support 8BITMIME or BINARY extensions.
- SMTP: Fixed a bug in legacy SMTP message sending mode that might have occasionally cause a timeout.
- SMTP: Added SmtpExtensions.ExplicitSecurity to make it possible to determine whether the server supports explicit TLS/SSL.
- POP3: Fixed argument handling in Login(GssApiProvider) method.
- POP3: Compatibility enhancements in GSSAPI authentication.
- POP3: Pop3MessageCollection implements IList<Pop3MessageInfo>.
- IMAP: Compatibility enhancements in GSSAPI authentication.
- IMAP: Added workaround for servers that report IMAP keywords as 'permanent' but not 'supported'.
- IMAP: ImapMessageCollection implements IList<ImapMessageInfo>.
- IMAP: Added new overloads of Imap.StoreMessage and Imap.StoreMessage that accept keywords.
- IMAP: Fixed a bug that caused notifications to not be fired during IDLE state (Imap.CheckForUpdates method).
- IMAP: Fixed a bug in the Login method that caused changed capabilities to be detected incorrectly on some servers.
- IMAP: Stream-based variant of Imap.GetMessagePart method added (the output stream receives data on-the-fly).
- IMAP: When retrieving message structure info, MIME-encoded filenames are properly decoded.
- IMAP: ClearText password replaced with asterisk characters in debug log.
- IMAP: If the server supports UIDPLUS extension, Imap.CopyMessage returns a list of affected messages and Purge can take a list of messages to make sure no other messages are purged.
- IMAP: Imap.GetMessageList called on an empty folder now sends a NOOP command to check for recently-arrived messages.
- IMAP: Fixed a bug in message structure parser that caused an error if an empty ContentId header is encountered.
- IMAP: Added workaround for 'disappeared messages' during long GetMessageList(Body) calls.
- 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 occurred while in automatic processing mode.
- ZIP: Added multi-file support to GzipCompressionStream and GzipDecompressionStream.
- ZIP: Better detection of the need to use Zip64 extension for long streams.
- ZIP: Added ZipArchive.GetItemsAsync method.
- ZIP: New values related to Add, Extract, Delete and GetItems methods added to ArchiveOperationStep enum.
- ZIP: Default charset changed to IBM437 (used to be Encoding.Default).
- ZIP: The Rebex.IO.Compression.FileSet class was moved to Rebex.IO.Compression.Legacy namespace. The Rebex.IO.FileSet class is intended to be used instead.
- Time: Added support for TIME and DAYTIME protocols.
- Time: Fixed Ntp.Precision that used to return a wrong value.
- Time: Added detection of NTP "kiss-of-death" packet.
- Networking: Socket.NoDelay is used by default in non-CF version of Rebex libraries.
- 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.
- TLS/SSL: Fixed non-working TlsSocket.BeginSend and BeginReceive methods.
- Cryptography: Certificate.Save and Certificate.SavePrivateKey methods added, along with a corresponding variant of Certificate.LoadDerWithKey.
- Cryptography: PKCS #7 writer changed to use a more compatible variant of EncryptedContent in EncryptedContentInfo structure. This solves interoperability issues with Entrust CSP and signed messages.
- Cryptography: Added ObjectIdentifier.ToArray(bool useDer) method.
- Cryptography: CertificateChain.LoadP7b method added (used for loading .P7B certificate chains).
- SSH: Added SshParameters.​PreferredHostKeyAlgorithm property.
- SSH: Added SshChannel.PassEnvironmentVariable method.
- SSH: Fixed NullReferenceException during simultaneous channel close/read.
- SSH: Fixed a deadlock that may have occurred when using multiple SSH channels from multiple threads.
- SSH: Fixed a race condition that may have occurred when sending and reading from a single SSH channel at the same time.
- SSH: Removed SshParameters.Options property because it was ignored and only present by mistake.
- SSH: Added SshParameters.​SetEncryptionAlgorithms method to specify exact list and order of allowed SSH ciphers. Corresponding GetEncryptionAlgorithms method added as well.
- 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.
- Common: Fixed a bug in TraceLogWriter that caused an additional newline to be written at the end of each message.
- Common: Added FileSystemItem and FileSystemItemCollection classes.
- Common: Better readability in Verbose-level logs.
- Common: Thread ID added to all log messages.
- Released
- April212011
1.0.4129.0 #
(build 4129 from 2011-04-21)
Detailed list of changes:
- ZIP: Fixed a bug in the GzipDecompressionStream class causing an InvalidCastException to be thrown when accessing Gzip specific properties.
- ZIP: Fixed a bug in the FileSet class causing an ArgumentException to be thrown when adding a root path (such as "C:\").
- ZIP: Fixed a bug causing an ArgumentException to be thrown when extracting items specified by a mask from the root directory (such as "/*.txt").
- ZIP: Fixed a bug causing a deadlock in the Add method on .NET CF.
- Released
- March092011
1.0.4086.0 #
(build 4086 from 2011-03-09)
Detailed list of changes:
- FTP: Missing end-of-data blocks in are ignored in MODE Z transfers (some FTP servers failed to send them).
- FTP: GetList, GetRawList and GetNameList methods with empty arguments now behave like their parameter-less variants.
- MSG: RTF data written into .MSG messages is compressed using LZFu. This enhances Outlook compatibility (drag&dropped messages no longer disappear).
- MSG: Added MimeOptions.LoadMsgProperties option to make it possible to load some .MSG-only properties not accessible otherwise.
- SMTP: Security (SmtpSecurity) and Parameters (TlsParameters) properties added to SmtpConfiguration.
- 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.
- ZIP: Faster decompression!
- ZIP: Exceptions thrown by ZipArchive.ProblemDetected event no longer cause unhandled exception and terminate the application.
- SSH: Added workaround for old SSH servers that miscalculate HMAC-SHA1 keys.
- SSH: Added SshParameters.AuthenticationMethods to make it possible to only enable desired authentication methods.
- SSH: SendEof method added to SshChannel to make it possible to achieve plink-like functionality.
- SSH: Fixed a bug in SSH channel window size adjustment code which could cause a timeout on servers which send oversized packets.
- SSH: Fixed a bug that prevented SSH key renegotiation requests from being processed, resulting in a timeout.
- SSH: Abort flag checking messages removed from Debug log.
- Released
- February112011
1.0.4060.0 #
(build 4060 from 2011-02-11)
Detailed list of changes:
- FTP: Group, Owner and Permissions properties added to FtpItem class.
- FTP: Added support for Transnet FTP Gateway's list format.
- FTP: BytesTotal and ProgressPercentage properties added to Ftp.TransferProgress event arguments.
- FTP: Added a new overload for the Login method that accepts account in addition to username and password.
- FTP: Added FtpOptions.ForceListHiddenFiles option to force using "LIST -la" instead of "LIST" command to retrieve file and directory listings.
- FTP: Fixed a bug that caused a list parser to failed for symlinks with missing target path.
- FTP: Added support for Tandem Guardian FTP server list format.
- FTP: FtpItemComparer class added to ease sorting of FtpList items.
- FTP: Enabling FtpOptions.​EnableControlConnectionFlushing option doesn't cause a noticeable slowdown now.
- FTP: Ftp.PutFiles method (in ThrowExceptionOnLinks mode) correctly detects the links in Windows 7 which were not detected previously.
- FTP: Added a workaround for servers that advertise MLST support but report a "Can't check for file existence" error later.
- FTP: Ftp.IsAuthenticated property added to make it easily possible to skip calling Ftp.Login method for users already authenticated using a certificate.
- FTP: Fixed a bug in ZLIB decompression routines.
- FTP: Fixed improper TLS/SSL session reusing. FtpOptions.​FtpReuseControlConnectionSession option added to make it possible to re-use the control connection session for subsequent data connections as well.
- FTP: Support for IBM AS/400 FTP listing format added.
- FTP: Added workaround for FTP servers which don't properly end the ZLIB stream when MODE Z is used.
- SFTP: Bandwidth throttling support in Rebex SFTP through Sftp object's MaxUploadSpeed/MaxDownloadSpeed properties.
- SFTP: SetFileDateTime in SFTP v4 is now compatible with WS_FTP.
- SFTP: Sftp object's AbortTransfer method now properly cancels operations that are just about to start as well.
- SFTP: Added SftpItemComparer class to ease sorting of SftpItemCollection items.
- SFTP: Added workarounds to Sftp.GetStream method SFTP servers that don't support the Append mode.
- SFTP: BytesTotal and ProgressPercentage properties added to Sftp.TransferProgress event arguments.
- SFTP: Added workarounds for several SFTP servers where SSH_FXP_STAT and SSH_FXP_REALPATH commands (used by many Rebex SFTP methods) don't always work (for aliased directories, for example).
- SFTP: Sftp.PutFiles method (in ThrowExceptionOnLinks mode) correctly detects the links in Windows 7 which were not detected previously.
- SFTP: Added a workaround for SFTP server that sent duplicate filenames in their listings.
- SCP: GetFiles and PutFiles methods added to Scp object to make it possible to transfer multiple files or a whole directory tree in one call.
- Mail: Fixed a bug that caused a failure when trying to verify a signature of a MailMessage with Sender header present.
- Mail: Messages with signature broken by WatchGuard Firebox are loaded fine now (although the signature is not usable any more).
- Mail: Load and save support for MS Outlook .MSG format added to MailMessage class.
- MIME: Automated PKCS#7 S/MIME blob detection for unknown "smime-type" values in Content-Type header.
- MIME: Added a workaround for Content-type arguments with missing quotes.
- MIME: Fixed a bug in mail message tree reader that sometimes caused bodies to be treated as attachments.
- MIME: Fixed an issue in MimeParameterList.Encode method that caused a bad format to be encoded when used separately.
- MIME: Improved exception messages for some header parsing errors.
- POP3: Added Pop3MessageInfoComparer class and Pop3MessageCollection.Sort method to ease sorting of message info items.
- POP3: Fixed bug in Pop3.Abort method that caused its call to be ignored during very fast transfers.
- POP3: Added Pop3Options.IgnoreInvalidEndings option to make it possible to ignore invalid endings in message data sent by some broken POP3 servers.
- POP3: Added workaround for Gmail's POP3 service which makes retrieved messages invisible next time.
- POP3: Added Pop3.GetMessageSequenceNumber method which converts a unique ID to sequence number.
- IMAP: ImapMessageCollection.Remove method added.
- IMAP: ImapSearchParameter.Arrived now accepts DateTime.MinValue as "since" argument.
- IMAP: Added ImapMessageInfoComparer and ImapMessageCollection.Sort method to ease sorting of message info items.
- IMAP: The default value of Imap.Encoding is now selected according to the current locale.
- IMAP: ContentId property added to ImapMessagePart object.
- 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.
- ZIP: Added an option (ZipOptions.​SkipItemsWhichCannotExtract) to skip items we can't extract in ZipArchive.Extract method.
- ZIP: GzipCompressionStream and GzipDecompressionStream objects added.
- ZIP: .NET Compact Framework edition of Rebex ZIP now available.
- ZIP: Fixed a bug in ZLIB decompression routines.
- ZIP: Added ZipArchive.ForceManagedAes flag as a workaround to .NET's leaking AesCryptoServiceProvider.
- ZIP: ZipArchive.Add method (in ThrowExceptionOnLinks mode) correctly detects the links in Windows 7 which were not detected previously.
- ZIP: Zip64 is no longer used for data added from Stream by default due to compatibility issues (with Windows XP, for example). ZipArchive.Options.Zip64Mode property added to make the behavior configurable.
- Common: 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: AuthenticationRequest event added to make it possible to deal with all kinds of "keyboard-interactive" authentication prompts.
- SSH: Fixed a possible race condition that might have occurred when using the same SshSession instance from multiple threads.
- SSH: Enhanced automated "keyboard-interactive" authentication to support more variants of password prompt.
- SSH: Fixed a bug in ZLIB decompression routines.
- SSH: SshSession.Encoding property added.
- SSH: Added SshOptions.​WaitForServerWelcomeMessage option.
- SSH: 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.
- Released
- July202010
1.0.3854.0 #
(build 3854 from 2010-07-20)
Detailed list of changes:
- FTP: Ftp class inherits from NetworkSession base class that implements some common properties.
- FTP: Added a workaround for an FTP server with broken MLST output.
- FTP: SITE command is no longer used to detect MS IIS FTP 7.x because it caused problems to some firewalls.
- FTP: FtpList.GetEnumerator is now an implementation of IEnumerable<FtpItem>.
- FTP: Better error handling in GetFiles/PutFiles methods.
- FTP: Added FIPS 140-2 compliant mode that is automatically enabled on systems where only compliant algorithms are allowed.
- SFTP: Added Sftp.GetStream method that makes it possible to open a readable/writable/seekable stream of a remote file.
- SFTP: Sftp class inherits from NetworkSession base class that implements some common properties.
- SFTP: Added SftpOption.​UseReadWriteModeForDownloads.​
- SFTP: Added ProtocolVersion property to Sftp class.
- SFTP: SftpItemCollection.GetEnumerator is now an implementation of IEnumerable<SftpItem>.
- SFTP: Fixed a DateTime range check in SftpAttributes.Modified and .Created which was performed before the conversion to UTC.
- SFTP: Better error handling in GetFiles/PutFiles methods.
- Mail: A more descriptive exception is thrown when attempting to save a mail message into a directory path instead of file path.
- Mail: Changed routine for fixing invalid filenames, it no longer changes the '%' character.
- Mail: Added a MimeOptions.​DisableSinglePartHtmlWorkaround option to disable single-part HTML workaround in MailMessage.
- Mail: Attachment, view and resource collections' GetEnumerator is now an implementation of IEnumerable<T>.
- MIME: Added support for AES ecnryption (128, 192 and 256bit).
- SMTP: Smtp class inherits from NetworkSession base class that implements some common properties.
- POP3: Pop3 class inherits from NetworkSession base class that implements some common properties.
- POP3: Added a workaround for an old version of Lotus Domino that advertises APOP support but don't actually support it.
- POP3: Pop3MessageCollection implements IEnumerable<Pop3MessageInfo>.
- IMAP: Imap class inherits from NetworkSession base class that implements some common properties.
- IMAP: ImapMessageCollection implements IEnumerable<ImapMessageInfo>.
- 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.
- ZIP: Added a new overload for Extract, Add and Delete methods that accepts a list of files.
- ZIP: Added ZipItem.Open() method that makes it possible to open a readable stream of a compressed file.
- ZIP: Added a new Rebex.IO.Compression.Streams namespace with low-level compression/decompression classes (Deflate, Enhanced Deflate, ZLIB).
- ZIP: Better error handling in AddFiles/ExtractFiles/ExtractAll methods.
- ZIP: Fixed a bug in handling the Retry action if an error occurred while retrieving hierarchy.
- ZIP: Added support for password-based encryption using 256bit, 192bit, 128bit AES and ZIP 2.0.
- ZIP: Added ShrinkProgress event to make it possible to display shrink progress.
- ZIP: Asynchronous methods added to ZipArchive class: AddAsync, ExtractAsync, MoveAsync, DeleteAsync, SaveAsync.
- ZIP: Added support for persisting and restoring last access and creation dates.
- ZIP: Added a DeleteUnfinishedFileOnExtractError option to specify whether to delete or keep a file on extract error.
- SSH: Added support for aes*-ctr and 3des-ctr ciphers.
- SSH: In FIPS-only mode, a CryptoAPI implementation of AES is used if available.
- SSH: SshSession class inherits from NetworkSession base class that implements some common properties.
- SSH: SshChannel.ExtendedDataReceived event added to make it possible to receive extended data.
- Released
- May202010
1.0.3793.0 #
(build 3793 from 2010-05-20)
Detailed list of changes:
- All: Packages for .NET 4.0 and Visual Studio 2010 now available.
- FTP: A more meaningful exception is raised when a premature OK response is received while still uploading data.
- FTP: Information about invalid data IP address detection is now written to the log.
- FTP: Fixed a bug that caused "/" local path argument of PutFiles/GetFiles methods to be treated as current directory.
- FTP: More information is logged when a FTP connection is broken.
- FTP: A full local path is passed in FtpBatchTransferProgressEventArgs.
- FTP: Added experimental FtpOptions.UseLargeBuffers to use larger internal buffers (doesn't seem to make substantial difference on most systems).
- FTP: Fixed a bug in PRET command implementation that caused problems with DrFTPd servers.
- FTP: FtpTransferProgressEventArgs now contain RemotePath and LocalPath when available.
- FTP: FtpBatchTransferException is now serializable.
- FTP: On .NET Compact Framework, SO_LINGER option is enabled for data sockets.
- FTP: Added support for Tumbleweed's SSL-like encrypted tunnel encryption.
- FTP: Useless pre-authentication feature check in implicit SSL mode removed.
- SFTP: Fixed a bug that caused "/" local path argument of PutFiles/GetFiles methods to be treated as current directory.
- SFTP: Added Sftp.Bind and Scp.Bind method to make it possible to bind the SFTP or SCP object to existing SSH session.
- SFTP: A full local path is passed in SftpBatchTransferProgressEventArgs.
- SFTP: SftpTransferProgressEventArgs now contain RemotePath and LocalPath when available.
- SFTP: SftpBatchTransferException is now serializable.
- SFTP: Queued data packets are no longer written to the output stream after download operation has been aborted.
- Mail: Fixed a bug that caused an exception to be raised when assigning one MailMessage's mail address collection property to another.
- MIME: Added MimeOptions.​DoNotCloseStreamAfterLoad option.
- MIME: Added a workaround for parsing 'References' header with missing angle brackets.
- Mail: Signed and/or encrypted e-mail messages with TNEF body are now parsed correctly.
- SMTP: Added MimeOptions.DoNotPreloadAttachments to make it possible to handle extremely large attachments.
- POP3: Added a workaround for QuarkMail Server that incorrectly announces authentication capabilies.
- 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.
- ZIP: Initial release.
- SSH: Added a workaround for a server that announces support for "password" authentication but requires "keyboard-interactive" instead.
- SSH: Fixed a bug in ZLIB compression routines that caused compatibility problems with GlobalScape and BitVise servers when compression was enabled.
- SSH: Fixed a bug that caused SSH session to hang if a broken (incomplete) SSH packet arrived (rare).
- Released
- March112010
1.0.3723.0 #
(build 3723 from 2010-03-11)
Detailed list of changes:
- FTP: Maximum allowed UploadBufferLength changed from 64KB to 16MB.
- FTP: Ftp.Connect method no longer throws UriFormatException when invalid proxy hostname is specified.
- FTP: Added support for OTC S/KEY(tm) (One-Time Password System) authentication according to RFC 2289 (optionally used by Serv-U FTP Server). (S/KEY is a trademark of Bellcore.)
- FTP: Added FtpBatchTransferOptions.XCopy batch transfer mode. This is an alternative form of FtpBatchTransferOptions.Recursive that traverses all subdirectories but only transfers files that match the specified mask.
- FTP: New Ftp.DataAddress property to make it possible to specify active mode IP address transmitted to the FTP server.
- FTP: FtpTransferProgressEventArgs.​BytesPerSecond property added that contains the estimated current speed.
- FTP: HierarchyRetrieve events are no longer raised when only a single file is transferred.
- FTP: A more meaningful exception is thrown when a directory path is passed to Ftp.GetFile method instead of file path.
- FTP: Ftp.TransferProgress event is called less often on high-speed connections now (several times per second is sufficient).
- FTP: FtpOptions.SendDataAsynchronously is deprecated and ignored.
- FTP: Fixed PutFiles method to accept all kinds of root paths (such as "c:", "c:/", or "c:\" - previously, only "c:\." worked).
- FTP: Added Ftp.DefaultImplicitSslPort constant.
- SFTP: A more meaningful exception is thrown when a directory path is passed to Sftp.GetFile method instead of file path.
- SFTP: Added support for getting and setting file creating date (only works with servers that support SFTP v4).
- SFTP: Fixed SSH_FXP_READ packet logging code that caused some packets not to appear in the communication log.
- SFTP: Added a workaround for servers where SSH_FXP_STAT command doesn't work correctly on directories.
- SFTP: Fixed a bug in GetFile method that caused it to hang if length was specified.
- SFTP: Added SftpBatchTransferOptions.XCopy batch transfer mode. This is an alternative form of FtpBatchTransferOptions.Recursive that traverses all subdirectories but only transfers files that match the specified mask.
- SFTP: Fixed PutFiles method to accept all kinds of root paths (such as "c:", "c:/", or "c:\" - previously, only "c:\." worked).
- SFTP: SftpTransferProgressEventArgs.​BytesPerSecond property added that contains the estimated current speed.
- SFTP: HierarchyRetrieve events are no longer raised when only a single file is transferred.
- SFTP: Added experimental SftpOptions.UseLargeBuffers to use larger internal buffers (doesn't seem to make substantial difference on most systems).
- SFTP: Data-block-receiving routines optimized to write directly to the output stream without a round-trip through a temporary buffer.
- SFTP: Fixed a bug that made it impossible to call Sftp.GetFiles method on a root directory.
- SFTP: Sftp.TransferProgress event is called less often on high-speed connections now (several times per second is sufficient).
- Mail: MailMessage.CreateReply now supports and processes the Refereces header according to RFC 2822 and common practices.
- Mail: Added MailMessage.ToByteArray() and MailMessage.Load(byte[]) methods.
- Mail: Attachment.ContentDescription property added.
- MIME: MimeEntity.SetSignedContent and SetEnvelopeContent methods enhanced to disallow creating circular paths.
- MIME: Added support for TNEF-based HTML bodies.
- MIME: Fixed a bug in binary MIME parser that caused broken data to be parsed.
- MIME: MailAddress.ToString and MailAddressCollection.ToString methods now quote display names if needed.
- MIME: Fixed the MIME parser behavior with Mimeoptions.DoNotParseMimeTree options on non-compliant messages with lines too long.
- MIME: MIME parser enhanced to handle non-compliant input data with duplicate <CR> characters.
- Mail: Added a new overload of MailMessage.Sign method to make it possible to specify signature style.
- Mail: Better handling of application/pkcs7-mime attachments that are not an S/MIME signature.
- Mail: Added MimeOptions.SkipSenderCheck option to make it possible to skip sender check when validating signatures using MailMessage.ValidateSignature method.
- MIME: Support for S/MIME messages encrypted using RC2 with effective key length not equal to key data length.
- SMTP: Added NTLM and GSSAPI/Kerberos authentication support to .NET Compact Framework version.
- SMTP: Added Smtp.DefaultImplicitSslPort and Smtp.AlternativeExplicitSslPort constants
- POP3: Added NTLM and GSSAPI/Kerberos authentication support to .NET Compact Framework version.
- POP3: Added Pop3.DefaultImplicitSslPort constant.
- IMAP: Two new methods in ImapMessageCollection - ToSequenceNumberMessageSet and ToUniqueIdMessageSet.
- IMAP: Added NTLM and GSSAPI/Kerberos authentication support to .NET Compact Framework version.
- IMAP: Added ImapListFields.MessageStructure value, ImapMessageInfo.GetParts method and Imap.GetMessagePart method to make it possible to evaluate and download message views, resources and attachments individually without the need to download the whole message.
- IMAP: Communication compression support added. Needs to be enabled using Imap.EnabledExtensions.
- IMAP: Fixed a bug in ImapMessageSet.Add and AddRange method s that made them fail when adding multiple non-range values.
- IMAP: Envelope parser enhanced to better handle envelopes with bad e-mail addresses.
- IMAP: Date parser enhanced to handle rare two-digit-year date values properly.
- IMAP: Added several new search criteria to ImapSearchParameter class: All, Unread (NotSeen), MessageSet, Keyword, NotKeyword and Not.
- IMAP: Added a workaround for Exchange 2007 server that doesn't properly support searching address headers such as From, To or CC.
- IMAP: Fixed a bug in GetMessageInfo that made it set the Seen flag when called with ImapListFields.Body even if ImapOption.DoNotPeekMessage was enabled.
- IMAP: Added support for distinct authentication and authorization usernames according to RFC 4616.
- IMAP: Added Imap.DefaultImplicitSslPort constant.
- 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 libraries ever used it at it was prohibitively slow anyway.
- SSH: Added SshFingerprint.Compute and SshFingerprint.FromBase64String methods to make it possible to easily calculate a fingerprint of the supplied public key.
- SSH: ZLIB compression is now switched off by default (caused problems with some servers).
- SSH: Client KEX_INIT packet is sent without waiting for the server side one (this is the only proper behavior).
- SSH: Added SshSession.KeepAlive method to make it possible to periodically "ping" the SSH connection to keep it working and detect failures.
- TLS/SSL: TlsSocket.SessionID is deprecated because its global cache was unsuitable for most applications. TlsSocket.Session (and the associated TlsSession class) should be used instead.
- Released
- October272009
1.0.3588.0 #
(build 3588 from 2009-10-27)
Detailed list of changes:
- FTP: Added a workaround for bad PASV implementation at ftp-edi.pubnet.org.
- FTP: Enhanced MODE Z support.
- FTP: CCC command no longer actively sends close_notify TLS message by default.
- FTP: Fixed a bug in proxy code that caused data transfers to fail when using HTTP CONNECT proxy with NTLM authentication.
- FTP: Added FtpOptions.ConnectPassiveLater option - makes the passive mode transfer initialize the connection only after the LIST/NLST/RETR/STOR commands are sent (instead of after PASV).
- SFTP: SFTP v4 support added.
- SFTP: Fixed a bug in CreateDirectory/ChangeDirectory workaround for CoreFTP.
- SFTP: Added workaround for ProFTPd's mod_sftpd SSH_FXP_REALPATH command that fails for newly created directories.
- Mail: MailMessage object's BodyText and BodyHtml properties now remove illegal characters when set.
- Mail: LinkedResource.FileName property added.
- MIME: Mail messages with empty TNEF/winmail.dat attachment no longer cause an exception to be thrown.
- Mail: Added MimeOptions.​SkipCertificateUsageCheck option to make it possible to skip certificate usage check.
- MIME: Fixed a bug that caused an exception to be thrown when signing a mail message on FIPS-enabled systems.
- SMTP: Kerberos, NTLM and Negotiate authentication methods through GSSAPI/SSPI are now supported (not yet available on .NET Compact Framework).
- SMTP: GSSAPI or NTLM is also attempted in Auto mode if the mail server doesn't support any other authentication methods.
- POP3: Kerberos, NTLM and Negotiate authentication methods through GSSAPI/SSPI are now supported (not yet available on .NET Compact Framework).
- POP3: Added workaround for I&ES Mail Server that doesn't like TOP n 1 command.
- IMAP: Fixed a bug in Imap object's External authentication method implementation.
- IMAP: GSSAPI or NTLM is also attempted in Auto mode if the mail server doesn't support any other authentication methods.
- IMAP: Added a workaround for servers that reply with FETCH BODYSTRUCTURE when FETCH BODY is requested.
- IMAP: Kerberos, NTLM and Negotiate authentication methods through GSSAPI/SSPI are now supported (not yet available on .NET Compact Framework).
- IMAP: Message structure parser enhanced to be compatible with more servers and distinguish attachments and linked resources.
- 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 occurred.
- Terminal: TerminalControl now correctly resizes itself when hosted in WPF.
- Time: Version number change only.
- 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: Fixed a bug in ArcFour cipher implementation that made it unusable.
- SSH: Fixed a bug that caused an SSH welcome message to be parsed incorrectly when split across multiple packets.
- SSH: Added support for ZLIB transfer compression.
- Released
- July152009
1.0.3484.0 #
(build 3484 from 2009-07-15)
Detailed list of changes:
- MIME: SHA-2 now works with private keys in non-Microsoft key storages (such as Smart Cards) as well.
- SSH: Fixed a bug in GSSAPI authentication that caused it to work improperly in 32bit .NET Framework.
- Released
- July102009
1.0.3479.0 #
(build 3479 from 2009-07-10)
Detailed list of changes:
- FTP: Added automated UTF-8 detection on modern FTP servers.
- FTP: Listing parser enhanced to support some non-English month names that sometimes occur in file listings of broken servers.
- FTP: Fixed a bug that might cause an active FTP connection to immediately time out when executed on an existing but idle connection.
- FTP: IEnumerable<T> support added to collections for .NET Framework 2.0 and higher.
- FTP: Ftp.CopyToAnotherServer method can now handle Abort requests.
- FTP: Bandwidth throttling functionality slowed down the transfer too much when a limited but high speed was requested.
- SFTP: IEnumerable<T> support added to collections for .NET Framework 2.0 and higher.
- Mail: First public release of the .NET Compact Framework package of Rebex Secure Mail.
- Mail: Signature parser enhanced to better parse "signed" e-mails with missing signature.
- Mail: Binary attachments claiming to be text are now parsed as application/octet-stream.
- MIME: IEnumerable<T> support added to collections for .NET Framework 2.0 and higher.
- MIME: Fixed a bug in MimeHeaderCollection class that made it possible to add a null header.
- MIME: Date header parser enhanced to handle invalid ';' characters.
- MIME: Added support for messages signed using algorithms based on SHA-2 (SHA-256, SHA-384 and SHA-512).
- IMAP: Added workround for Gmail that is unable to select a localized version of the Inbox folder. The inbox folder is now reported as Inbox for all Gmail language variants.
- IMAP: Fixed a bug in IMAP response parser that caused it to fail in rare circumstances.
- 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 Framework 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: 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: SshFingerprint class extended to support multiple hash algorithms.
- SSH: Added BannerReceived event that ca be used to receive banner messages sent by the server.
- SSH: Added FingerprintCheck event as an alternative way to check server fingerprint.
- SSH: Support for authentication using both username/password and public key at the same time made compatible with Maverick SSHD server.
- TLS/SSL: Enhanced logging of certificate-related actions during the TLS/SSL negotiation.
- Released
- May202009
1.0.3428.0 #
(build 3428 from 2009-05-20)
Detailed list of changes:
- FTP: Fixed a bug in GetRemoteChecksum method that caused it not to work for filenames that contain space characters.
- FTP: Disposing Ftp object from another thread while an operation is in progress no longer causes NullReferenceException and other similar errors to occur in the operation thread.
- FTP: Better URL handling in the Connect method (although it is hostname-only by design, lot of users actually pass URLs to it).
- FTP: Enhanced logging of incoming connection in active mode.
- FTP: Added a workaround for WS_FTP that requires MLST/MLSD arguments to be quoted if they contain spaces.
- FTP: Added FtpException.Transferred property as a replacement for the misspelled FtpException.Transfered property.
- FTP: Fixed a bug that caused FtpException's BytesTransferred property not to be set for exceptions thrown by asynchronous methods.
- FTP: Fixed a bug in MODE B transfer mode that might cause an improper block length to be received in rare circumstances.
- FTP: Fixed a bug in GetFiles and PutFiles method that caused a wrong path to be used when a filename only was specified or when a root path was specified.
- SFTP: Added support for transfer compression through a plugged-in library.
- SFTP: Upload and download speed enhanced a lot using the pipelining approach.
- SFTP: UTF-8 encoding is used by default for WS_FTP server.
- SFTP: Upload and download buffer size changed from 32K to 28K because the original size resulted in two packets being sent.
- SFTP: Fixed a misleading error message that occurs when both password and public key authentication is required by the server but the clients only supply one of the credentials.
- SFTP: Added several workarounds for CoreFTP server's SFTP implementation that suffers from numerous bugs such as missing file attributes or half-working SSH_FXP_REALPATH command.
- SFTP: Fixed a bug in GetFiles and PutFiles method that caused a wrong path to be used when a filename only was specified or when a root path was specified.
- SCP: Compatibility enhancements in Scp object's PutFile method.
- SCP: Added a workaround for Bitvise's SCP that closes the SCP channel too early.
- Mail: Added a workaround for broken Date headers to MailMessage class - when an unparsable Date header is encountered, the date value from the topmost Received header is used instead.
- Mail: Fixed a bug in the TNEF parser that caused an exception to be thrown when parsing rich text bodies that contain zero characters (which are perfectly legal for RTF, unfortunately).
- Mail: MailDateTime class now supports implicit conversion from DateTime.
- Mail: Long file name support for attachments added to TNEF (winmail.dat) parser.
- SMTP: Added support for RFC 1870 - message size declaration.
- SMTP: Added SmtpConfiguration class that makes it possible to read SMTP settings from application configuration file's /​configuration/​system.​net/​mailSettings/​smtp node.
- SMTP: Fixed a bug that caused an exception when sending a message with embedded message entity using an 8bit content transfer encoding through a server that doesn't support 8bit MIME.
- SMTP: Disposing Smtp object from another thread while an operation is in progress no longer causes NullReferenceException and other similar errors to occur in the operation thread.
- POP3: GetMessageList no longer fails on duplicate unique IDs because RFC 1939 actually allows them.
- POP3: Disposing Pop3 object from another thread while an operation is in progress no longer causes NullReferenceException and other similar errors to occur in the operation thread.
- POP3: GetMessageList or GetMessageInfo methods enhanced to make them compatible with servers that return the first message line as well when retrieving headers. In previous versions, this might have occasionally lead to parsing errors.
- POP3: Enhanced GetMessageHeaders to always retrieve the headers only - on some servers, it used to retrieve the first line of the message as well.
- IMAP: Fixed a bug in Imap.SelectFolder method that threw ArgumentOutOfRangeExceptions on some servers.
- IMAP: Imap.SelectFolder now accepts an empty folder name because some servers (Zarafa) use it for the root folder.
- IMAP: Added ImapMessageInfo.GetRawHeaders method.
- IMAP: Fixed a bug in Imap.GetMessageHeaders method that caused it to download the whole message.
- IMAP: SelecteFolder, UnselectFolder and Disconnect methods no longer purge messages marked as Deleted in the currently selected folder. New overload of UnselectFolder method was added that makes it possible to purge the messages when needed.
- IMAP: Headers are now fetched using BODY.PEEK[HEADER] instead of RFC822.HEADER to improve IMAP server compatibility.
- IMAP: Added a new ImapOptions.UsePeekForGetMessage option to make it possible to avoid automatically marking downloaded messages as read.
- IMAP: StoreRawMessage method added to make it possible to upload a raw message from a stream without parsing it.
- IMAP: Gmail's XLIST command is used instead of LIST by default and a new property ImapFolder.Purpose was added to make it possible to detect which folder is which regardless their national name.
- IMAP: Added workaround for IMAP servers that return NIL as a folder delimiter (slash is used instead).
- IMAP: Added workaround for servers that return the same folder name twice for unknown reasons.
- IMAP: Invalid IMAP response lines such as "* AVK-VIRUS-CHECK: 1" are now ignored.
- IMAP: Added workaround for broken IMAP servers that use their default charset where modified UTF-7 is required.
- IMAP: Disposing Imap object from another thread while an operation is in progress no longer causes NullReferenceException and other similar errors to occur in the operation thread.
- IMAP: Added ImapMessageIfo.GetRawHeaders method.
- IMAP: Added MimeHeader.DecodeMimeHeader method.
- IMAP: Added workaround for Exchange 2007's IMAP server that is unable to return the proper structure of multipart/signed messages.
- Terminal: Poll method added into IShellChannel.
- Terminal: Fixed a bug that caused the Enter key not to be echoed when local echo is on.
- Time: Version number change only.
- SSH: Added FIPS 140-2 compliant mode that is automatically enabled on systems where only compliant algorithms are allowed.
- SSH: Added a new exception status - PasswordChangeRequired - that is used when a password change is required before authentication can be successfully completed.
- TLS/SSL: Exception thrown by the certificate verifier because of certificate hostname mismatch is more descriptive.
- TLS/SSL: Added a workaround for vsftpd that occasionally leaks unencrypted error messages while TLS/SSL is in use, which causes an error when the client tries to decode them as proper TLS/SSL messages.
- TLS/SSL: Fixed a bug that could cause a deadlock when closing a socket from one thread that is currently sending data using another thread.
- TLS/SSL: Fixed possible NullReferenceException in TlsSocket class.
- TLS/SSL: BeginSend and BeginReceive methods work again.
- Released
- February142009
1.0.3333.0 #
(build 3333 from 2009-02-14)
Detailed list of changes:
- FTP: Asynchronous operations now use a thread pool.
- FTP: FileExists and DirectoryExists methods modified to return the result for "." and "/" arguments instantly without asking the server.
- FTP: Fixed a workaround for problem with local IP address announced by the server when connecting through ActiveSync to an FTP server that runs on the same machine.
- FTP: KeepAliveDuringTransfer option made compatible with more FTP servers.
- FTP: When client certificate authentication is done with Tumbleweed FTP server, an automated login attempt is performed.
- SFTP: Detection of GlobalScape server enhanced to properly detect more versions.
- SCP: Scp.Logger renamed to Scp.LogWriter to match the other objects including Sftp.
- SCP: Fixed improper handling of the first success response.
- MIME: Added experimental TNEF (winmail.dat) support to MailMessage class.
- MIME: Added MimeOptions.OnlyParseHeaders option to make it easily possible to parse message headers only.
- MIME: Fixed a problem with badly-formed MailMessage that was produced after being parsed with DoNotParseMimeTree option.
- MIME: It is now possible to set BodyHtml and BodyText to null.
- SMTP: Fixed a problem with sending messges using "binary" content transfer encoding and parsed using DoNotParseMimeTree option.
- SMTP: Fixed a problem in ResolveDomainMX that caused it to 'resolve' domains that don't exist.
- IMAP: Added support for keywords (custom flags).
- IMAP: Added a workaround for qq.com IMAP server that advertises PLAIN authentication method support but only accepts LOGIN.
- 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: Banner message is now logged when using the LogWriter functionality.
- SSH: Added workaround for badly-formed DSA signature produced by SSH Secure Shell 3.1.0 (and possibly other versions).
- SSH: Added a workaround to the Compact Framework version for VanDyke VShell server that sends primes that are one bit longer than expected.
- Released
- January122009
1.0.3300.0 #
(build 3300 from 2009-01-12)
Detailed list of changes:
- FTP: Added PutFiles and GetFiles method to make it possible to transfer multiple files easily by transferring a whole directory tree or use wildcards.
- FTP: Packages for .NET Compact Framework 3.5 added.
- FTP: Transfer compression support added to .NET CF 3.5 build (it has only been available for .NET Framework 2.0 and higher previously).
- FTP: Added a workaround for Serv-U FTP that ungracefully closes data connection for zero-length files.
- FTP: A better exception is now thrown by a method that has been terminated by calling Dispose from another thread.
- FTP: Substantial transfer speed increase on fast networks.
- FTP: Fixed a bug that caused the KeepAliveDuringTransfer option not to work properly.
- FTP: Asynchronous method threads are now named.
- FTP: Added a workaround for misconfigured FTP servers that send an unusable private network address when initializing a data transfer.
- FTP: Disabled control connection flushing when sending commands because it caused a noticeable slowdown on fast networks.
- FTP: FtpOptions.KeepAliveDuringTransfer option code enhanced by adding the '200 No-operation ...' response to the list of possible NOOP command responses.
- FTP: SetTransferType method changed to behave just like TransferType property and marked obsolete.
- FTP: Added workaround for some releases of SecureTransport server - ForceSilentCcc option is enabled automatically.
- FTP: Fixed a bug in CopyToAnotherServer method that caused it to fail unless SecureTransfers property was set to false.
- SFTP: Added PutFiles and GetFiles method to make it possible to transfer multiple files easily by transferring a whole directory tree or use wildcards.
- SFTP: Setting ServerType property to Unix now causes '\' not to be treated as a directory separator for the remote server.
- SFTP: A better exception is now thrown by a method that has been terminated by calling Dispose from another thread.
- SFTP: Packages for .NET Compact Framework 3.5 added.
- SFTP: Asynchronous operations now use a thread pool.
- SFTP: Asynchronous method threads are now named.
- SCP: Added Scp class to make it possible to transfer files using the legacy SCP protocol.
- Mail: A better exception is now thrown by a method that has been terminated by calling Dispose from another thread.
- Mail: Asynchronous operations now use a thread pool.
- Mail: Asynchronous method threads are now named.
- MIME: Added a workaround for parsing '@' character in Content-Type parameters.
- MIME: Fixed a bug that caused the DefaultEncoding to not be converted when converting MailMessage to MimeMessage or when sending MailMessage using the Smtp object.
- MIME: Added a workaround for Dovecot server that occasionally adds an extra CR (0xD) character at the end if its response when retrieving mail headers using IMAP.
- MIME: GetRaw method added to MimeHeaderCollection class.
- MIME: Added a workaround for Outlook invitations with missing charset.
- MIME: Fixed a bug that caused some text parts to be parsed as attachments instead.
- MIME: Added workaround for some badly formatted dates.
- MIME: Workaround for for Mac mail introduced in 1.0.2800.0 modified because it was incompatible with Outlook 2003 in combination with S/MIME messages.
- MIME: Order of settting BodyText and BodyHtml now does not affect the actual order in the message. Previously, using an uncommon order caused problems because Gmail and iPhone prefer the last part instead of HTML part.
- MIME: Added Insert method to AlternateViewList class.
- MIME: Added MimeOptions.AllowAnyTextCharacters option to make it possible to use any characters in text attachments.
- MIME: Added IgnoreUnparsableSignatures option to MimeOptions to make it possible to read mail messages with broken signatures.
- MIME: Added partial Mono support to make it possible to parse S/MIME messages (signature validation is still unsupported).
- SMTP: Added enhanced logging capabilities.
- POP3: GetMessage method now returns the transferred message length instead of number of bytes transferred.
- POP3: Fixed a bug that caused a wrong error to be reported when POP3 server closes the connection while transferring data.
- POP3: Added a workaround for Exchange 2000 that is unable to properly transfer e-mail with a body that starts with a dot.
- POP3: A proper Pop3Exception is now thrown if duplicate unique ID is found in a message list.
- POP3: Added workaround for Windows and GoDaddy's POP3 implementation that falsely advertises APOP support.
- POP3: Added enhanced logging capabilities.
- IMAP: Added a workaround for servers that allow the "NO" reply in response to FETCH command - a behavior that is strongly discouraged.
- IMAP: Added FolderExists method to Imap class.
- IMAP: Added a workaround for buggy servers that don't understand the 'RFC822' item, although they process the functionally equivalent 'BODY[]' item just fine.
- IMAP: Added enhanced logging capabilities.
- SSH Shell: Added scroll-back buffer support.
- SSH Shell: Asynchronous operations now use a thread pool.
- SSH Shell: Asynchronous method threads are now named.
- Terminal: Added Expect method to make scripting possible easily.
- Terminal: Added drawing routines for most box-drawing and block element characters that are either not present or improperly drawn in majority of fonts.
- Terminal: Added custom palette support.
- Terminal: Added support for custom color schemes to TerminalOptions class.
- Terminal: Fixed a bug that caused an extra column to appear in a newly-created terminal control.
- Terminal: Added support for 'ksh' shell.
- Terminal: Added support for setting the font using the Control's Font property (previously, TerminalFont had to be used).
- Terminal: Added the ability to scroll while selecting a long chunk of text.
- Terminal: Fixed a bug that caused the terminal control to resize several times when minimized and maximized again.
- Terminal: Added DataReceived event to TerminalControl and VirtualTerminal classes.
- Terminal: Added AutoAdjustTerminalFont, UserInputEnabled, ScrollBarEnabled and ScrollbackResetOnDisplayActivity properties to TerminalControl class.
- Time: Packages for .NET Compact Framework 3.5 added.
- Cryptography: Added support for reading and setting private key comment.
- Cryptography: Added RootCertificate and LeafCertificate properties to CertificateChain class.
- Cryptography: Added GetCommonName method to DistinguishedName class.
- Cryptography: Added IEnumerator support to CertificateChain.
- Cryptography: Added Equals method to DistinguishedName class.
- Cryptography: Fixed a bug in OID decoding routine that cased it to occasionally hang on broken input data.
- Cryptography: Added new Certificate.LoadPfx to make it possible to load keys into machine store.
- Cryptography: Fixed a problem in Certificate.Decrypt method that made the decryption fail with some rare certificates.
- Cryptography: Added Certificate.Associate method to make it possible to associate a RSA/DSA crypto service provider with access to a private key with a certificate.
- SSH: Added support for saving PuTTY private keys.
- SSH: Added ChangePassword method to SshSession class to make it possible to change user password.
- SSH: Added support for servers that don't require a password.
- SSH: Fixed a bug in SshSession that caused problems when multiple channels through the same SSH session were used at the same time.
- TLS/SSL: Anonymous TLS/SSL ciphers are now supported (but disabled by default).
- TLS/SSL: Fixed an internal static method that was not thread safe.
- Common: Added enhanced logging capabilities (LogWriter).
- Released
- July232008
1.0.3127.0 #
(build 3127 from 2008-07-23)
Detailed list of changes:
- FTP: Fixed a bug introduced in the last release that caused a bad InvalidOperationException to be thrown when FTP server reported an error during upload.
- SFTP: GetList, GetRawList and GetNameList enhanced to support wildcards. However, they are processed at the client side because SFTP can't do that at the protocol level.
- IMAP: Response-reading code enhanced to handle oversized responses that occurred while searching with some servers.
- Time: Ntp.SynchronizeSystemClock method can now synchronize system time even if the current clock value is outside the range supported by NTP.
- Time: Added experimental support for setting system time in Linux.
- SSH: Fixed a problem in RSA private key reader that caused an error with some keys.
- SSH: Enhanced packet reader to support oversized SSH packets.
- SSH Shell: Initial public release.
- Released
- June142008
1.0.3087.0 #
(build 3087 from 2008-06-14)
Detailed list of changes:
- FTP: Finished property added to FtpTranferProgressEventArgs class.
- FTP: New variants of GetDownloadStream and GetUploadStream added.
- FTP: New tutorial for file transfer resume functionality.
- FTP: Added detection for SFTP and SSH servers that are often mistaken forh SFTP to produce better exception messages. FTP servers in wrong modes are also detected.
- FTP: Fixed a bug that caused the DoNotDetectFeatures option to fail.
- FTP: Added hostname validity checking to Connect method.
- FTP: Added support for unusual way of data channel SSL initialization used by XFB Gateway FTP Server.
- TLS/SSL: Fixed a bug that caused data loss when a TLS/SSL connection was closed in a certain way.
- ProxySocket: New ISocket interface to make it possible to easily implement custom transport layers.
- ProxySocket: Fixed an unhandled exception that occurred during a failed connection to a proxy specified by an IP address.
- SFTP: Enhanced initial folder detection to be compatible with more servers.
- SFTP: Added detection for FTP and SSL servers that are often mistaken with SFTP to produce better exception messages.
- SFTP: Fixed incorrect ChangeDirectory method behavior with empty path argument.
- SFTP: Fixed a problem that caused SftpException.Status property to have a incorrect value in some cases.
- SFTP: Added hostname validity checking to Connect method.
- SFTP: Added experimental support for CR/CRLF conversion of text files.
- SSH: Fixed an internal static method that was not thread safe.
- SSH: PuTTY keys with no password are now supported as well (previously, only PuTTY keys with passwords worked).
- SSH: Added SSH tunneling capabilities.
- MIME: Added automated detection of Unicode body parts with missing header encoding info.
- MIME: Added workaround for quote-printable headers with an invalid linefeed character in the middle.
- MIME: Fixed a bug in MailMessage class that caused an attachment to be parsed as texy body if no text body was present.
- MIME: Invalid character removal routing now works for big5 and shift_jis encodings as well.
- MIME: New tutorial for creating HTML e-mail with embedded pictures.
- IMAP: Added hostname validity checking to Connect method.
- IMAP: Added OR operator to search options.
- POP3: Added hostname validity checking to Connect method.
- POP3: Added workaroud for GoDaddy and Windows POP3 servers that announce APOP authentication support but don't actually support it.
- SMTP: Added hostname validity checking to Connect method.
- SMTP: Added several missing BeginSend methods.
- SMTP: Added SmtpOptions.AllowNullSender option to make it possible to send a message with null envelope sender.
- MIME: Added a workaround to make it possible to parse S/MIME messages with missing smime-type header.
- Released
- December062007
1.0.2896.0 #
(build 2896 from 2007-12-06 )
Detailed list of changes:
- All: Packages for .NET Framework 3.5 and Visual Studio 2008 now available.
- FTP: Added support for IBM 4690 file and directory listing format.
- FTP: Fixed several bugs in MODE Z (compressed transfers) code.
- FTP: Fixed several bugs in MODE B (block transfer) code.
- FTP: Fixed a bug that caused an invalid exception to be raised on specific type of transfer failures.
- MIME: Added MimeOptions.​AlwaysWriteContentTransferEncoding option to make it possible to force the MIME encoder to always output the Content-transfer-encoding header, even when it is 7bit.
- MIME: When using iso-2022-jp charset to encode Japanese body text, ESC character (0x1B) is treated as 7bit-safe, matching the behavior of contemporary mail agents.
- MIME: Fixed a bug in MIME encoder that made it failed when a 16-bit Unicode charset was used in a message body.
- MIME: Fixed a problem in a mail parser that caused e-mail addresses containing some special characters to be parsed incorrectly.
- Released
- November112007
1.0.2871.0 #
(build 2871 from 2007-11-11)
Detailed list of changes:
- FTP: Support for MODE B (block mode) with MS FTP7 that makes it possible to re-use a single data connection for multiple transfers.
- FTP: Experimental support for MODE Z (data transfer compression) added to .NET Framework 2.0 build.
- FTP: Support for HOST command (multiple virtual FTP hosts on a single IP address). (Disabled by default).
- FTP: Data channel now maintains a separate session from control channel.
- TLS/SSL: Added built-in PFX-based client certificate request handler.
- TLS/SSL: Fixed a bug in the negotiation part of the TlsSocket class that caused problems when handling large packets.
- SFTP: Fixed a bug in GetInfo and GetFileLength methods that caused an invalid length to be reported for files larger than 4GB.
- SSH: Changed the authentication routine to be compatible with servers that require a banner message to be sent to the client.
- SSH: Fixed a bug in block receiving code that occurred when a block of certain invalid length was received.
- SSH: Added support for loading PuTTY private keys.
- Cryptography: Added support for loading PuTTY private keys.
- MIME: Added workaround for invalid base64 encoded headers with whitespaces.
- MIME: Fixed problems in handling of filenames with invalid characters.
- IMAP: Bcc property added to ImapMessageInfo class.
- IMAP: IsEncryptedOrSigned property added to ImapMessageInfo class.
- Released
- August302007
1.0.2800.0 #
(build 2800 from 2007-08-30)
Detailed list of changes:
- FTP: Added Bandwidth throttling support - MaxUploadSpeed and MaxDownloadSpeed properties.
- FTP: Added CRC32, MD5 and SHA-1 checksum support - GetSupportedChecksums, CalculateLocalChecksum (static) and GetChecksum methods.
- FTP: GetCurrentDirectory enhanced to support another non-standard reply format.
- FTP: Added FtpOptions.​EnableMultipleBlockingCalls option to change the way multiple concurrent calls are handled.
- FTP: Added FtpOptions.PauseBeforeUploadClose option to enable workaround for a problem of a missing last data block before SSL data channel close.
- FTP: Added workaround for several MS FTP7 Beta problems.
- TLS/SSL: Fixed a bug in the server-side TLS/SSL code that caused a SSL2-style ClientHello message to be parsed incorrectly.
- SFTP: Default command and response encoding changed to Encoding.Default instead of standard UTF-8, because a survey of SFTP servers showed that none of them in fact uses UTF-8.
- SFTP: Added support for authentication using both username/password and public key at the same time.
- SSH: Added support for Blowfish and Twofish ciphers.
- SSH: Added support for authentication using both username/password and public key at the same time.
- Cryptography: Added support for Blowfish and Twofish ciphers.
- Cryptography: Added new CertificateIssuer class for certificate creation.
- Cryptography: Added new CertificateChain-based certificate finder.
- Cryptography: Certificate revocation list is now available in EnvelopedData and SignedData classes.
- Cryptography: When the CertificateFinder property is changed in EnvelopedData and SignedData Certificate, the new finder is now immediately used to find any missing certificates.
- Cryptography: Several serialization bugs in EnvelopedData and SignedData classes were fixed.
- Cryptography: Certificate class has a new Extensions property that makes the extension collection accessible.
- Cryptography: Various other changes that do not affect the FTP protocol.
- MIME: New CreateReply method added to the MailMessage class.
- MIME: Added workaround for Mac mail that is unable to correctly parse messages with a single root text/html entity.
- MIME: Successive calls to Attachment.ContentMessage property now return the same object.
- MIME: A new constructor overload added to the Attachment class.
- MIME: DefaultEncoding property added - it is used to enforce a specific default charset for mail body and headers.
- MIME: Broken base64-encoded inner messages are now converted to binary attachments during MIME parsing.
- MIME: Serialization bug in MimeEntity and MimeMessage was fixed.
- MIME: Added support for broken 'eBay-style' time zones.
- MIME: Support for several kinds of broken MIME-encoding in headers.
- IMAP: ParseUniqueId and BuildUniqueId methods added to ImapMessageSet class.
- IMAP: Added support for partial message retrieval using GetMessage method. This can be used for resuming failed downloads.
- IMAP: Added support for IDLE command through a new overload of the CheckForUpdates method.
- Released
- May242007
1.0.2700.0 #
(build 2700 from 2007-05-24)
Detailed list of changes:
- FTP: Added support for direct server-to-server transfers, also known as FXP! Check out the new CopyToAnotherServer method.
- FTP: Added ListItemReceived event. This makes it possible to display the list items as they are received, to filter them or to abort the transfer based on previously received items.
- FTP: NameList added to FtpListingType.
- FTP: SetTransferType/​BeginSetTransferType/​EndSetTransferType methods were marked as obsolete. Please use the TransferType property instead.
- FTP: Added support for DrFTPD's PRET command.
- FTP: Added a workaround for occasional problems with uploads to GlobalScape FTP Server using TLS/SSL in .NET CF.
- SFTP: Added ListItemReceived event. This makes it possible to display the list items as they are received, to filter them or to abort the transfer based on previously received items.
- SFTP: Response receive buffer enlarged to support messages that are slightly over the maximum allowed length, and better error reporting for those that are too large.
- SFTP: Added another workaround for WeOnlyDo's wodFTPD (FreeFtpD) server that is unable to report the correct file datetime if the local and remote time zones are not the same.
- MIME: CertificateFinder can now be changed even after a message has been loaded.
- MIME: Added UnparsableHeader event to MailMessage and MimeMessage/MimeEntity.
- MIME: Clone method added to MailMessage class.
- MIME: MailMessage now tries to preserve the order of most message headers.
- MIME: Added a new GetContentStream overload to Atachment/​AlternateView/​LinkedResource and MimeEntity/MimeMessage classes that returns a writable stream.
- MIME: Attachment.ContentMessage property now returns a reference to the embedded message, not its clone.
- MIME: Added a workaround for MS Outlook's broken S/MIME parser that modifies the parsed data, incorrectly causing signature validation to fail in some circumstances.
- MIME: Detection of encoding of 8bit headers enhanced - content type encoding is now used by default. This is more compatible with broken messages.
- MIME: Detection of Outlook's non-MIME .msg files added to the Load method. This proprietary format is not supported, but at least we throw a nice exception now.
- MIME: Parser changed to be more compatible with broken messages.
- MIME: Invalid charsets such as '1252' or 'CP1252' are now supported and assumed to be 'windows-1250'.
- MIME: Fixed the mail address route part parser that could hang on a specific form of an e-mail address.
- MIME: Content-type and content-disposition header parameters now use a defined order.
- Cryptography: CertificateFinder can now be changed even after an EnvelopedData or SignedData has been loaded.
- Released
- April202007
1.0.2666.0 #
(build 2666 from 2007-04-20)
Detailed list of changes:
- FTP: Added SetFileDateTime method.
- FTP: Added FileExists and DirectoryExists methods. These simple operations are very hard to achieve using the FTP protocol and we use a combination of several commands to achieve the desired functionality.
- FTP: Added DataPortRange property to specify local data port range for active and passive mode transfers.
- FTP: GetFile/PutFile methods refactorred to use the same infrastructure as GetDownloadStream/GetUploadStream methods.
- FTP: GetList method optimized to parse the list on-the-fly, resulting in enhanced speed.
- FTP: Removed unnecessary control channel checking code that caused a noticeable slowdown of data transfers.
- FTP: Fixed a bug in MLSD list parser - date/time was treated as local time.
- FTP: In active mode, when waiting for the server to connect, error response is now processed as soon as it arrives, without waiting for the connection attempt to time out.
- FTP: GetConnectionState no longer fails on disconnected objects.
- TLS/SSL: Speed drop caused by the data receiving loop introduced in the previous build was fixed.
- SFTP: Added SetFileDateTime method.
- SFTP: Added FileExists and DirectoryExists methods.
- SFTP: Added workaround to GetInfo method for WeOnlyDo SFTP server that reports missing files as access denied.
- SFTP: GetConnectionState no longer fails on disconnected objects.
- SFTP: Added GetUploadStream and GetDownloadStream methods for stream-based remote file access.
- SSH: Client no longer announces key exchange and encryption methods that are not supported on its current platform.
- SSH: Speed drop caused by ineffective data receiving loop was fixed.
- SSH: Fixed a bug that caused any extra key-exchange to fall.
- SMTP: Added CheckConnectionState/​GetConnectionState methods to check the state of the connection without sending any command to the server.
- POP3: Added CheckConnectionState/​GetConnectionState methods to check the state of the connection without sending any command to the server.
- IMAP: Added CheckConnectionState/​GetConnectionState methods to check the state of the connection without sending any command to the server.
- MIME: Invalid MIME messages that use LF-only end-of-line markers instead of CRLF are now parsed as well.
- MIME: Entities with a missing body are assumed to have an empty body.
- MIME: Default Hebrew charset has been changed from iso-8859-8 to windows-1255.
- MIME: If both iso-8859-1 and iso-8859-2 are unable to encode the text, windows-1252 and windows-1250 are also tested before trying additional charsets.
- MIME: Fixed MimeEntity.Name and ContentDisposition.FileName properties that might fail for some filenames with invalid characters.
- MIME: Embedded messages encoded as base64 or quoted-printable are now parsed correctly.
- MIME: If content transfer encoding value is an empty string, 7bit is assumed instead.
- MIME: Maximum allowed line length on input was extended to 65536.
- MIME: Rules for parsing address headers were relaxed to allow more kinds of invalid input data.
- MIME: Header parser enhanced to assembly multi-byte characters that were split accross several encoded blocks.
- MIME: IgnoreUnparsableHeaders option assumes a reasonable default for invalid content type headers.
- Released
- March062007
1.0.2621.0 #
(build 2621 from 2007-03-06)
Detailed list of changes:
- FTP: Enhanced handling of uploads terminated by the server. More meaningful exceptions are now reported.
- FTP: Compatibility enhancements in download aborting code.
- FTP: Fixed a bug that caused the Close method of the Stream returned by GetDownloadStream to fail with some servers on fast networks.
- FTP: Fixed a minor bug in FtpResponse class.
- FTP: IPv6 support with .NET Framework 1.1/2.0/3.0 and .NET Compact Framework 2.0.
- Time: IPv6 support with .NET Framework 1.1/2.0/3.0 and .NET Compact Framework 2.0.
- TLS/SSL: New refactorred TLS/SSL core introduced.
- SFTP: IPv6 support with .NET Framework 1.1/2.0/3.0 and .NET Compact Framework 2.0.
- SSH: Fingerprint property added to SshPrivateKey class.
- SMTP: IPv6 support with .NET Framework 1.1/2.0/3.0
- IMAP: IPv6 support with .NET Framework 1.1/2.0/3.0
- POP3: IPv6 support with .NET Framework 1.1/2.0/3.0
- MIME: Fixed a bug in one of the MailAddress constructors that caused an exception to be thrown when a specifically malformed e-mail address was encountered by Imap's GetMessageList in envelope mode.
- Released
- January112007
1.0.2567.0 #
(build 2567 from 2007-01-11)
Detailed list of changes:
- FTP: Fixed a bug in the Close method of the stream returned by GetUploadStream and GetDownloadStream method.
- FTP: Rebex Secure FTP renamed to Rebex FTP/SSL in order to avoid confusion with Rebex SFTP.
- Cryptography: Added PrivateKeyInfo class and an ability to load and save private keys.
- Cryptography: Fixed a bug in DSAManaged class that made impossible to use keys of some sizes.
- Cryptography: Random big integer generator optimized.
- Cryptography: Several typos in documentation fixed.
- SFTP: Added support for RSA and DSA public key authentication.
- SFTP: Added workaround for ShellFTP server that has a bad habit of dropping SSH sessions after the SFTP session is closed.
- SSH: Added support for RSA and DSA public key authentication.
- SSH: Added support for Diffie-Hellman Group Exchange authentication (RFC 4419).
- SSH: Fixed a bug that caused Timeout value to be ignored when waiting for the server's initial message.
- SSH: SshFingerprint class made serializable.
- Released
- December122006
1.0.2537.0 #
(build 2537 from 2006-12-12)
Detailed list of changes:
- FTP: Fixed bad ArgumentExceptions in Ftp.Connect and FtpList.GetFiles methods.
- SFTP: Initial public release.
- MIME: Fixed a bug that often made serialization impossible. This also affected serialization of ImapMessageCollection and Pop3MessageCollection.
- Released
- November302006
1.0.2525.0 #
(build 2525 from 2006-11-30)
Detailed list of changes:
- IMAP: Fixed a bug in message structure parser that could cause GetMessageList or GetMessageInfo to fail if retrieving attachment info or HTML and text bodies.
- Released
- November272006
1.0.2522.0 #
(build 2522 from 2006-11-27)
Detailed list of changes:
- FTP: GetUploadStream/GetDownloadStream methods optimized. They no longer use a background thread and should be faster and more reliable.
- TLS/SSL: Fixed a bug in the Compact Framework version that caused an unnecessary slowdown when using SSL/TLS.
- Time: The API has been completely redesigned to be more intuitive and easier to use.
- Time: Added SystemClock class for setting the local system clock in Windows.
- Time: Native builds for .NET Framework 3.5, 3.0, 2.0, 1.1, 1.0 and .NET Compact Framework 2.0, 1.0 now available.
- Time: The source code and samples no longer requires the 'unsafe' switch.
- Time: Assembly is now CLS-compliant.
- MIME: Following parsers made more benevolent: date header, content type parameter parser, address parser, MIME version parser, quoted-printable header parser and Base64 parser.
- MIME: Fixed a bug in phrase header parser that could cause the library to hang.
- IMAP: Fixed a bug in ImapFolder that caused a wrong vaule NotSeenMessageCount for folders returned by Imap.GetFolderInfo method.
- IMAP: Added AttachmentInfo to ImapListFields enum and the corresponding HasAttachment property to ImapMessageInfo class to make it possible to determine whether the message has any attachments without downloading it.
- Released
- October182006
1.0.2482.0 #
(build 2482 from 2006-10-18)
Detailed list of changes:
- FTP: Default transfer mode is now binary.
- FTP: Added setter to TransferType property, making SetTransferType method obsolete.
- FTP: Added CheckConnectionState/​GetConnectionState methods to check the state of the connection without sending any command to the server.
- FTP: MLSD file and directory listing parser is now able to parse legacy mlst-05 style listings.
- FTP: Added UploadBufferLength property to manipulate the size of the upload bufffer.
- FTP: Added a workaround to the CF version for a transfer problem that often occurs when using ActiveSync to connected to a FTP server running on the same machine as ActiveSync. This makes the IgnorePassiveModeAddress option unnecessary in these cases.
- FTP: The workaround for legacy FTP servers that don't understand 'PBSZ' command was extended to cover sessions explicitly secured using 'AUTH SSL' command. It only used to apply to implicitly secured FTP sessions.
- Cryptography: Fixed a bug in DSAManaged class that made impossible to use keys of less common sizes.
- MIME: Fixed a bug that could cause the parser to throw ArgumentNullException if a specifically-malformed Content-Type header was encountered.
- Released
- September152006
1.0.2449.0 #
(build 2449 from 2006-09-15)
Detailed list of changes:
- FTP: Fixed a bug in the VB.NET version of WinFormGet sample that made it fail in .NET Framework 2.0.
- FTP: Fixed a minor bug in WinFormClient sample that made it possible for ClearCommandChannel command to be called for unsecured connections.
- Released
- September052006
1.0.2439.0 #
(build 2439 from 2006-09-05)
Detailed list of changes:
- TLS/SSL: Several TLS/SSL optimization changes.
- ProxySocket: Added support for NTLM authentication through HTTP CONNECT proxies.
- Cryptography: Several new methods.
- MIME: Fixed a bug that could cause the parser to hang if a specifically-malformed Content-Type header was encountered.
- MIME: Base64 parser made more liberal.
- MIME: Address list parser enhanced to be able to parse more variants of malformed lists.
- IMAP: Added support for NTLM authentication.
- POP3: Added support for NTLM authentication.
- SMTP: Added support for NTLM authentication.
- IMAP: Added support for EXTERNAL authentication (to be used with client certificate authentication).
- Released
- August252006
1.0.2428.0 #
(build 2428 from 2006-08-25)
Detailed list of changes:
- FTP: Fixed a bug that made the VMS file and directory listing parser fail in rare circumstances.
- FTP: Added IgnorePassiveModeAddress option as a workaround for FTP servers or firewalls that instruct the client to connect to an unaccessible IP address when initializing passive mode data connection.
- FTP: Fixed a bug in the finalizer that could cause an exception when the Ftp object using TLS/SSL was finalized.
- FTP: Added workaround for FileZilla FTP server. FileZilla FTP server is seriously broken and reports an error with 25-50% probability when an upload using TLS/SSL is finished. (This also happens when its own FTP client is used.)
- TLS/SSL: Fixed a bug that could cause a failure or timeout on extremely fast connections.
- Cryptography: A PKCS#7 parser and encoder added.
- Cryptography: Several new methods added to Certificate and CertificateStore classes.
- Mail: Initial release of Rebex Secure Mail for .NET with support for S/MIME and SMTP/SSL, POP3/SSL and IMAP/SSL.
- MIME: Several minor changes and fixes, such as missing parameter checks.
- IMAP: Added support for retrieving the text and HTML body of a message without downloading the attachments.
- POP3: Initial release of Rebex POP3/SSL for .NET with support for S/MIME and SMTP/SSL and POP3/SSL.
- IMAP: Initial release of Rebex IMAP/SSL for .NET with support for S/MIME and SMTP/SSL and IMAP/SSL.
- Released
- July102006
1.0.2382.0 #
(build 2382 from 2006-07-10)
Detailed list of changes:
- FTP: File and directory listings parser was optimized, it is now much faster.
- FTP: SupportedExtensions and EnabledExtensions added to make it possible to determine and enable/disable FTP protocol extensions.
- FTP: Support for MLSD file and directory listings added. GetList now uses this as default on servers that support this extension.
- FTP: The LF character is now treated as an end-of-line marker, just like CRLF sequence, to enable Rebex FTP to work with buggy servers that send LF instead of CRLF.
- TLS/SSL: Fixed a bug that caused the connection not to be closed correctly under special circumstances.
- ProxySocket: Fixed a bug that caused the proxy password to be ignored (since build 2305).
- Cryptography: Several new methods and classes added.
- Cryptography: Internal ASN.1 parser replaced by a recent version.
- Cryptography: Fixed a bug in RSA signature format for MD5 and SHA-1.
- MIME: Fixed a bug in RFC 2231 parameter parser that caused the mail message parser to fail in certain circumstances.
- MIME: Priority of messages was reversed when set, it is correct now.
- IMAP: Added support for non-synchronizing literals (LITERAL+ extension).
- IMAP: Search method enhanced to support searching for non-ASCII characters.
- IMAP: Fixed a bug in the message list parser that caused it to fail if ampersand was encountered.
- IMAP: Non-ASCII command arguments are now sent as literals, as required by the RFC.
- IMAP: Default encoding changed to iso-8859-1 which was found to be the most compatible.
- Released
- June122006
1.0.2354.0 #
(build 2354 from 2006-06-12)
Detailed list of changes:
- FTP: Server feature detection added (the FEAT command). Can be disabled using DoNotDetectFeatures option for complete compatibility with previous versions.
- FTP: Added workaround for Nofeel FTP Server in TLS/SSL mode that is unable to handle the final handshake message and first block of data in the same packet.
- TLS/SSL: Fixed a bug that caused the connection not to be closed correctly if the server ignores TLS/SSL close notifications.
- Cryptography: GetSubjectKeyIdentifier method added to Certificate class.
- Cryptography: Added several missing argument checks.
- Cryptography: Certificates other than RSA and DSS now load as well.
- IMAP: Added support for unsolicited CAPABILITY response included in a welcome message.
- Released
- April242006
1.0.2305.0 #
(build 2305 from 2006-04-24 )
Detailed list of changes:
- FTP: Version numbering scheme changed.
- FTP: DefaultPort constant with a value of 21 added to Ftp class.
- FTP: Custom directory list parser is now allowed to set the FtpItem to null, which causes the line not to be parsed.
- FTP: Internal asynchronous methods framework upgraded to the latest version.
- FTP: Several missing connection state checks added.
- FTP: Most ArgumentExceptions enhanced and some missing added.
- FTP: Overall code beautification.
- FTP: Added TimeoutAsynchronousMethods option to make asynchronous methods optionally time out in the same way the synchronous methods do. (By default, only synchronous methods time out.)
- FTP: Size of sent blocks in .NET Compact Framework changed to 1460, which seems to be more compatible.
- FTP: ResumableClient sample added to Compact Framework version.
- FTP: A .NET Compact Framework version of Rebex FTP/SSL is now available as well.
- TLS/SSL: Changes for compatibility with .NET Compact Framework's implementation of System.Net.Sockets.
- MIME: New robust Base64 decoder that can handle a wider range of broken input.
- POP3: Enhanced the message of the exception that is thrown when an authentication using an unsupported method is attempted.
- IMAP: Fixed a bug that caused the client not to work with Courier IMAP.
- IMAP: Enhanced the message of the exception that is thrown when an authentication using an unsupported method is attempted.
- SMTP: Enhanced the message of the exception that is thrown when an authentication using an unsupported method is attempted.
- Released
- March022006
1.0.2258.0 #
(build 2258 from 2006-03-02)
Detailed list of changes:
- MIME: Content-Type is now specified in all entities, even if not required by the RFC, to deal with Mozilla Thunderbird's MIME parser.
- SMTP: Waits for all 'RCPT TO' replies prior to sending the 'DATA' command when pipelining is supported and chunking is unsupported, to deal with SMTP servers such as XMail that accept and deliver even an empty mail body.
- Released
- February282006
1.0.2253.0 #
(build 2253 from 2006-02-28)
Detailed list of changes:
- Mail: Initial release of Rebex Mail for .NET.
- POP3: Initial release of Rebex POP3 for .NET.
- IMAP: Initial release of Rebex IMAP for .NET.
- Released
- November142005
1.0.19.0 #
(build 19 from 2005-11-14)
Detailed list of changes:
- FTP: FtpException is now based on Exception instead of InvalidOperationException.
- FTP: FtpList is now serializable.
- FTP: Fixed a bug that caused the PutUniqueFile method to throw an exception.
- FTP: Added several COM-interop related attributes to some classes to allow basic FTP functionality to be used through COM.
- FTP: Disconnect method changed to not throw an exception unless another operation is in progress to reflect the way most people use this method.
- FTP: Added KeepAliveDuringTransferInterval property to allow specifying the interval for KeepAliveDuringTransfer option.
- FTP: Behavior of Begin.../End... methods changed so that a call to End... is required after an end of the operation prior to additional calls to Begin... methods.
- FTP: Ftp properties IsSecured, TlsSocket, LocalEndPoint and RemoreEndPoint now LocalEndPoint and RemoreEndPoint now throw InvalidOperationException when not connected.
- FTP: Added SendDataAsynchronously option to upload data using BeginSend/EndSend instead of Send to deal with hanging Send on some Windows Mobile devices.
- FTP: The library and samples support .NET Framework 2.0 and Visual Studio .NET 2005.
- FTP: Fixed a missing Data property in FtpTlsDebugEventArgs class.
- FTP: Added ForceSilentCcc option to deal with buggy FTP servers that have a habit of not sending CloseNotify messages while shutdowning SSL after a response to CCC command.
- FTP: Fixed a bug that caused the Connect or Secure method to close the connection if the FTP server replies to AUTH SSL command by an obsolete 3xx response.
- FTP: BeginClearCommand method now actually returns the IAsyncResult.
- FTP: TlsDebug event is now being called from the same thread that the current operation runs in.
- TLS/SSL: Added new TlsDebugEventType UnexpectedException for easier handling of unexpected exceptions thrown from inside the SSL/TLS code.
- TLS/SSL: Added SilentUnprotect option to enable shutdown of SSL channel without sending the CloseNotify message. Needed to deal with buggy SSL implementations.
- TLS/SSL: Added DoNotBufferDate option for enhanced control over the SSL channel.
- TLS/SSL: Minor internal changes towards the forthcoming Compact Framework support.
- Cryptography: Fixed a bug that caused the Certificate.Decrypt method to return an array of wrong length.
- Released
- July292005
1.0.18.0 #
(build 18 from 2005-07-29)
Detailed list of changes:
- FTP: Added ClearCommandChannel method to revert from protected to unprotected control channel.
- FTP: Library doesn't assume anything about the protection state upon connection, which makes it compatible with Covalent FTP Server.
- FTP: Enhancements in unix file list parser to support more variants of unix file listings.
- FTP: Added KeepAliveDuringTransfer option to deal with buggy firewalls that have a habit of terminating idle control connection during long file transfers.
- FTP: FtpWebRequest.GetResponse now returns an empty response for FTP upload instead of throwing an exception.
- FTP: Compact Framework FTP running on full .NET now sends TCP signals with ABOR command during transfer.
- FTP: Removed workaround for ActiveSync (prior to build 4034) bug from the CF version that made it impossible to close data connections successfully.
- FTP: Changes to enable C# 2.0 compilation with no warnings.
- FTP: Trial version for .NET Compact Framework now works with .NET CF 2.0.
- FTP: Exception handling code in several places cleaned a bit. Other minorchanges. Few lines of unnecessary code removed.
- FTP: 'Cannot change state' exception messages modified to be more understandable.
- FTP: Fixed a bug that caused the library not to detect closed control connection in some cases.
- FTP: Asynchronous method framework enhanced to allow null arguments to be passed to asynchronous Ftp methods.
- FTP: FtpException, ProxySocketException, FtpProxy, FtpItem and FtpList classes are serializable.
- TLS/SSL: Added TlsSocket.Unprotect method to allow reverting back from TLS to unencrypted socket.
- ProxySocket: ProxySocketException, FtpProxy classes are serializable.
- Cryptography: Various changes in Rebex Security to make Secure FTP for .NET completely compatible with 64bit version of .NET Framework 2.0.
- Cryptography: CertificateChain enhanced to allow certificate validation using local machine chain engine in addition to current user chain engine.
- Cryptography: CertificateStore constructor now accepts certificate store location, making it possible to use local machine store and others.
- Cryptography: CertificateStore class now cleans all unmanaged resources when disposed.
- Cryptography: Certificate, CertificateChain, CertificateException, DistinguishedName, TlsCipher and TlsException classes are serializable.
- Released
- December082004
1.0.17.0 #
(build 17 from 2004-12-08)
Detailed list of changes:
- FTP: First release of FTP over TLS/SSL.
- Released
- November102004
1.0.16.0 #
(build 16 from 2004-11-10)
Detailed list of changes:
- FTP: Fixed a bug that caused Timeout exception to be thrown instead of OperationAborted exception in special circumstances.
- FTP: List parser understands a rare variant of Unix directory listing with interchanged month and day parts.
- FTP: Ftp.Disconnect method always closes the connection, even if the object is not in ready state.
- ProxySocket: Fixed a bug in Socks5 authentication code (incorrect version in authentication messages).
- Released
- September232004
1.0.15.0 #
(build 15 from 2004-09-23)
Detailed list of changes:
- FTP: Fixed a bug that caused the library to remain in a wrong state when disconnected by the server.
- Released
- September012004
1.0.14.0 #
(build 14 from 2004-09-01)
Detailed list of changes:
- FTP: Underlying locking/unlocking/async/aborting code fixed to get rid of 'Another operation is pending' exception after timeouts.
- FTP: Abort method can be called at any time, even inside callbacks.
- FTP: ChangeDirectory accepts an empty path.
- FTP: Assembly have been marked as CLS-compliant.
- ProxySocket: Fixed a bug in ProxySocket's Accept method that could cause active mode transfers to hang under rare circumstances with some servers
- ProxySocket: Assembly have been marked as CLS-compliant.
- Released
- April022004
1.0.13.0 #
(build 13 from 2004-04-02)
Detailed list of changes:
- ProxySocket: Lots of changes and improvements to the proxy code.
- ProxySocket: GetAddressLong and GetAddressBytes methods added to ProxySocket class to overcome differences between .NET 1.0 and 1.1.
- FTP: Added a new override for Ftp.GetList method to allow arguments.
- FTP: Added a new property BytesSinceLastEvent to TransferProgress event. It contains the number of bytes transferred since the last call.
- FTP: Enhancements in file transfer routines, allowing higher transfer rate on high-speed connections.
- FTP: All references to obsolete IPAddress.Address in Socks4/Socks5 and FTP code replaced either with calls to ProxySocket.GetAddressLong or ProxySocket.GetAddressBytes.
- FTP: All references to DateTime.Now.Ticks replaced by more appropriate Environment.TickCount.
- FTP: Logoff method was renamed to Reinitialize and a new empty Logoff method was added to solve the confusion it caused.
- FTP: Fixed a bug that caused TransferProgress event not to be raised with FtpTransferState.None when the transfer is finished.
- FTP: Fixed problems in trial version key check on PocketPC 2003 emulator.
- Released
- January142004
1.0.12.0 #
(build 12 from 2004-01-14)
Detailed list of changes:
- Time: Initial release.
- Released
- November242003
1.0.11.0 #
(build 11 from 2003-11-24)
Detailed list of changes:
- ProxySocket: Enhancement in Available property of the ProxySocket class.
- FTP: Fixed a bug that caused trial version not to work in ASP.NET with impersonation enabled.
- Released
- November072003
1.0.10.0 #
(build 10 from 2003-11-07)
Detailed list of changes:
- ProxySocket: Fixed a bug in synchronous methods of the ProxySocket that caused them to hang.
- FTP: New overloads for Sort method added to FtpList.
- FTP: Corrected the Version property of the Ftp class that returned wrong version number.
- FTP: No IP addresses are resolved using DNS now.
- Released
- November012003
1.0.9.0 #
(build 9 from 2003-11-01)
Detailed list of changes:
- ProxySocket: Assembly divided into two parts: FTP and Proxy Socket.
- FTP: Tested with Mono 0.28.
- FTP: Event handlers can now also be used for FtpWebRequest.
- FTP: Fixed a bug that could cause a file transfer to fail with some servers and hang under certain circumstances.
- FTP: Fixed a bug in FTP stream code that caused an exception to be thrown if the transfer was too fast.
- FTP: More characters are now allowed in remote paths (better interoperability with VMS).
- FTP: Fixed a bug that caused Ftp class to become unusable if unable to open a local file during asynchronous PutFile or GetFile.
- FTP: Few missing error messages fixed.
- FTP: Minor fixes in FtpProxy class.
- FTP: Server compatibility enhancements in data transfer and aborting code.
- Released
- September012003
1.0.8.0 #
(build 8 from 2003-09-01)
Detailed list of changes:
- FTP: New overloads for GetNameList and GetRawList methods added.
- Released
- August282003
1.0.7.0 #
(build 7 from 2003-08-28)
Detailed list of changes:
- FTP: Many enhancements in the underlying proxy code.
- FTP: Abort command is more reliable.
- FTP: Large number of smaller cosmetic changes in the code.
- FTP: Changes towards better portability.
- Released
- August202003
1.0.6.0 #
(build 6 from 2003-08-20)
Detailed list of changes:
- FTP: Fixed a bug in HttpConnect proxy code that caused the beginning of the data stream to be discarded under certain circumstances.
- Released
- August142003
1.0.5.0 #
(build 5 from 2003-08-14)
Detailed list of changes:
- FTP: Fixed a bug that caused timeout with Microsoft ISA server (Socks4a + active mode only).
- FTP: Fixed a misspelled error id (Socked.Timeout instead of Socket.Timeout) in proxy code. It caused the misspelled id to be used as an exception message instead of the real description.
- FTP: Compatibility enhancements of Abort code - now compatible withGlobalScape FTP Server.
- Released
- August122003
1.0.4.0 #
(build 4 from 2003-08-12)
Detailed list of changes:
- FTP: Minor bug fixed in EPLF list parser (invalid handling of dates > 2038).
- FTP: Fixed a bug that caused an unexpected exception to be thrown when calling Ftp.Connect with an empty hostname.
- Released
- July032003
1.0.2.0 #
(build 2 from 2003-07-03)
Detailed list of changes:
- FTP: Server compatibility enhancements in file transfer aborting code. (There were problems with WarFTPd and some older versions of Serv-U.)
- FTP: Ftp.Disconnect method now does not throw exception if an error is encountered.
- FTP: Fixed a bug in Unix list parser that caused an exception while parsing ftp://ftp.netscape.com/dev/.
- FTP: Fixed a bug in Socks4/Socks5 proxy code that caused an exception to be thrown for some IP addresses.
- FTP: Removed few lines of unused code in HTTP proxy code.
- FTP: Default character encoding is now Encoding.Default instead of Encoding.ASCII.
- FTP: Several bugfixes in WinFormClient sample.
- FTP: ConsoleClient code sample now supports resuming aborted transfers and uploading directory trees.
- Released
- April142003
1.0.1.0 #
(build 1 from 2003-04-14)
Detailed list of changes:
- FTP: Initial release.