More .NET components

Release notes for Rebex Time for .NET

2017-05-09 Version 2017 R3 #
(build number 6339)

NuGet packages

Rebex components just got official NuGet packages!

If you have an active subscription, you will get NuGet packages as part of Rebex components. 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 1.1

This release adds experimental support for .NET Core 1.1 (or rather .NET Standard 1.5/1.6) to all Rebex components.

In addition to .NET Core on Windows, Linux and macOS, .NET Standard edition of Rebex components 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.

Complete list of changes of version 2017 R3

  • All: Added NuGet packages.
  • All: Added experimental support for .NET Core 1.1 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.
  • 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).
  • Core: Fixed incorrect handling of CNG RSA keys.

2017-03-22 Version 2017 R2 #
(build number 6291)

Support for Visual Studio 2017

All Rebex components 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.

Maintenance release

This is a maintenance release with enhancements in the shared functionality.

Complete list of changes of version 2017 R2

  • All: Mono 2.10 is no longer supported. (Mono 3.x and 4.x still supported.)
  • 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.

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

Maintenance release

This is a maintenance release with enhancements in the shared functionality.

Complete list of changes of version 2017 R1

  • Cryptography: Added support for ValidationOptions.UseCacheOnly on .NET CF.
  • Cryptography: Substantially optimized CRL parsing code used by enhanced certificate validator on .NET Compact Framework.

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

Maintenance release

This is a maintenance release with enhancements in the shared functionality.

Complete list of changes of version 2016 R3

  • Cryptography: Improved ASN.1 time node parser.
  • Cryptography: Added support for certificate validation on Universal Windows Platform.
  • Cryptography: Added custom X509 certificate validator for .NET Compact Framework with full SHA-2 support on all platforms.
  • Cryptography: Fixed parsing of 'Intended Usage' extension when 'Decipher Only' was specified.
  • Cryptography: Added static Create method to SHA256Managed/SHA384Managed/SHA512Managed classes on .NET Compact Framework.
  • Cryptography: ValidationResult.ErrorCode deprecated and replaced with NativeErrorCode.
  • Cryptography: Optimized memory usage in CMS/PKCS #7 (SingedData/EnvelopedData classes).
  • Cryptography: Added missing argument checks to CertificateIssuer methods.
  • Cryptography: Added support for Base64-encoded files with CRLF end-of-line sequences to CertificateChain.LoadP7b method.
  • Cryptography: Fixed HMAC calculation based on SHA-384 and SHA-512 on NET Compact Framework and Mono platforms.
  • Cryptography: Added Rebex.Security.Certificates.CertificateEngine class to make it possible to implement custom X509 chain building and validation engines.
  • Core: Added ConsoleLogWriter for Xamarin platforms.
  • Core: Added Rebex.TeeLogWriter class that makes it possible to log to multiple log writers.
  • Core: Added LocalItem.GetChecksum methods and related types.

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

Maintenance release

This is a maintenance release with enhancements in the shared functionality.

Complete list of changes of version 2016 R2.2

  • 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).
  • Core: Added workaround for broken FileStream.SetLength on some .NET Compact Framework platforms.

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

Maintenance release

This is a maintenance release with enhancements and fixes in the shared functionality.

Complete list of changes of version 2016 R2.1

  • Cryptography: Fixed AsymmetricKeyAlgorithm.SignHash (in 2016 R2, it falls back to RSAManaged without trying to use RSACryptoServiceProvider first).
  • Cryptography: Fixed CertificateIssuer.IssueRevocationList method that ignored signatureHashAlgorithm argument and always used SHA-1.
  • Core: FileLogWriter on Windows Store 8.x / Universal Windows Platform is now thread-safe.
  • Core: Fixed LocalItem(string) constructor on Windows Store 8.x / Universal Windows Platform.
  • Core: Added workaround for broken handling of surrogate pairs when converting to "iso-8859-1" using System.Text.Encoding on Mono 4.x.

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

Support for Xamarin June 2016 Update

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

Complete list of changes of version 2016 R2

  • Cryptography: Fixed detection of native SHA-2 support in .NET Compact Framework version.
  • Cryptography: Added support for more variants of OpenSSL/OpenSSH (SSLeay) key files.
  • Cryptography: Fixed Certificate.Associate to work with DSA keys.
  • Cryptography: Added CrlNumber property to CertificateRevocationList object.
  • Cryptography: Added support for SHA-2 certificates to Certificate.VerifyHash in .NET 2.0 on Windows with FIPS-compliant mode enabled.
  • Cryptography: Certificate.LoadPfx and CertificateChain.LoadPfx methods now specify Exportable options by default (in addition to UserKeySet).
  • Cryptography: Added workaround for RSA implementations that reject rare signatures shorter than the key size.
  • Core: Enhanced SSPI error messages.
  • Core: Fixed LogWriterBase.Level default value.
  • Core: Fixed compatibility issue in Xamarin edition (caused by a breaking change in June 2016 update of Xamarin).

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

Experimental assemblies for Windows Store Apps

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

Maintenance release

This is a maintenance release with enhancements in the shared functionality.

Complete list of changes of version 2016 R1

  • All: Added workaround for Xamarin.Android whose Dns.GetHostEntry resolves 'localhost' to device's external IP address.
  • All: Rebex assemblies are now signed with SHA-256 signatures in addition to legacy SHA-1 signatures.
  • Cryptography: Enhanced cryptographic provider initialization error message.
  • Cryptography: Added workaround for PuTTY keys with bad data at the end.
  • Core: Fixed multi-file operations to never modify input FileSet's BasePath.
  • Core: ThreadPool is now used to handle background operations instead of a custom implementation.
  • Core: Enhanced multithread operation support in log writers.

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

Fixed Xamarin mobile platform detection

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

Complete list of changes of version 2015 R4.1

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

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

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

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

Asynchronous methods in NTP, Time and Daytime clients

We added Task-based asynchronous methods to Rebex Time component. 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.

Complete list of changes of version 2015 R4

  • All: Enhanced platform detection code.
  • Time: Added asynchronous API.
  • Cryptography: Fixed final empty block handling in Twofish/Blowfish/ArcTwo TransformFinalBlock with PKCS #7 padding.
  • Cryptography: SSH and TLS/SSL now use Java-based Diffie-Hellman objects on Xamarin.Android platform to speed up negotiation.
  • Core: Fixed end-of-line sequences in LogWriterBase, optimized FileLogWriter.
  • Core: Added workaround for broken ASN.1 time values with the second part of "60".

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

Maintenance release

This update brings several enhancements and bugfixes.

Complete list of changes of version 2015 R3

  • All: Fixed Version property of Ftp, Imap, Pop3, Scp, Sftp, Smtp and Ssh classes to return a proper version number. Changed Ftp.Version to a static propery to match the other objects.
  • Cryptography: Enhanced weak signature algorithm detection during certificate validation on Xamarin.iOS.
  • Core: Connect methods no longer require FileIOPermission (used to determine the assembly version for a log).

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

Maintenance release

This update brings several enhancements and bugfixes.

Complete list of changes of version 2015 R2

  • Cryptography: Added support for SSLeay private keys with AES-256-CBC encryption.
  • Cryptography: Fixed broken HashSize property in SHA-2 CSP on .NET Compact Framework.

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

Support for Xamarin Unified API

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

Complete list of changes of version 2015 R1

  • All: Added support for Xamarin.iOS unified API.

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

Legacy SSL 3.0 disabled by default in TLS/SSL-enabled components.

TLS 1.1 is now used by default in TLS/SSL-enabled components. 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.

Maintenance release

This update brings several improvements, workarounds and bugfixes.

Complete list of changes of version 2014 R3

  • All: Added more overloads to asynchronous Connect and Login methods.
  • All: Removed legacy Connect methods and enumerations from Xamarin.iOS and Xamarin.Android version (should never have been there).
  • Cryptography: Fixed SymmetricKeyAlgorithm.Padding for non-CBC modes.
  • Cryptography: Added support for base-64 encoded P7B certificate chains.
  • Cryptography: Changed padding of parameters exported by DSAManaged.ExportParameters to match DSACryptoServiceProvider.
  • Cryptography: Added AsymmetricKeyAlgorithm.PublicOnly property.
  • Cryptography: Added workaround for non-working HMACSHA256/384/512 on some FIPS-only systems.
  • Cryptography: Added CertificateExtension.EnhancedKeyUsage method Useful when constructing certificate requests using CertificateRequest object.
  • Cryptography: Fixed DiffieHellmanManaged.KeySize that sometimes reported shorter bit lengths.
  • Cryptography: Several new AsymmetricKeyAlgorithm-based methods added to Certificate and CertificationRequest.
  • Core: Added LocalItem.Attributes property.
  • Core: PKCS #12 key loading routines changed to not persist keys in Windows key storage by default.
  • Core: Added ConsoleLogWriter, a console-based log writer class.

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

Maintenance release

This update brings several improvements, workarounds and bugfixes.

Complete list of changes of version 2014 R2

  • All: Eliminated "Unknown heap type" warnings in Mono.
  • Time: Removed non-working SynchronizeSystemClock methods from Xamarin.iOS and Xamarin.Android binaries.
  • Cryptography: Added Load, Save and Generate methods to PrivateKeyInfo and PublicKeyInfo classes.
  • Cryptography: Enhanced CertificationRequest class to support request generating in addition to parsing.
  • Cryptography: Fixed behavior with disabled UseFipsAlgorithmOnly on FIPS-only systems.

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

Maintenance release

This update brings several improvements, workarounds and bugfixes.

Complete list of changes of version 2014 R1

  • All: Various small low-level optimizations.
  • Cryptography: Fixed a bug in MD5SHA1 signature validation on .NET Compact Framework.
  • Cryptography: Fixed AES CSP availability detection in FIPS-compliant mode.
  • Cryptography: Fixed sorting of PKCS #7 signature attributes.
  • Cryptography: Added support for AES-128-CBC SSLeay private keys.
  • Cryptography: Added workaround for certificates and keys in Base64-encoded format ending with a zero octet.
  • Core: Assemblies made more obfuscator-friendly.
  • Core: Fixed null value comparisons in FileSystemItemComparer.

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

Support for Xamarin.iOS and Xamarin.Android

Rebex components now support Xamarin.iOS and Xamarin.Android, making it possible to target iPad/iPhone and Android devices! (The only exception is the Terminal Emulation component 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 components now ship with full support for Microsoft Visual Studio 2013. Older Visual Studio versions (2005 and higher) and .NET Framework versions (2.0 and higher) are still supported as well.

Complete list of changes of version 2013 R3

  • All: Xamarin.iOS and Xamarin.Android officially supported in all components except Rebex Terminal Emulation.
  • All: .NET Compact Framework 3.9 officially supported.
  • All: Visual Studio 2013 officially supported.
  • 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.
  • Cryptography: Changed Certificate.FindCertificates method not to include subordinate CAs in the search by default.
  • Cryptography: Fixed CertificateStore.Exists on non-Windows platforms.
  • Cryptography: Added workaround for opening certificate stores in .NET CF that don't exist yet.
  • Cryptography: Added workaround for problem with DSA certificate in .PFX importing code on Windows Embedded Compact 2013.
  • Cryptography: Added .NET CF support for Certificate.Associate(privateKey, permanentBind)
  • Cryptography: Added Certificate.GetAuthorityKeyIdentifier() method.
  • Cryptography: Changed SignerInfo and SignerInfo objects to use NULL parameters for hash algorithms (in order to match RSACryptoServiceProvider behavior).
  • Core: Added FileLogWriter.Path to replace FileLogWriter.Filename.
  • Core: Added LocalItem.ComputeCrc32() method.
  • Core: Signed and encrypted message parsing made more compatible with broken messages.

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

Official support for Mono

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

Complete list of changes of version 2013 R1

  • All: Added support for Mono.
  • All: Fixed finalizers that used to call state-changed events in some cases.
  • Time: Fixed DAYTIME response parser that applied the time zone offset twice in some cases.
  • Cryptography: Added support for anyExtendedKeyUsage attribute (in X509 certificates).
  • Cryptography: Added DiffieHellmanCryptoServiceProvider class.
  • Cryptography: Added PrivateKeyFormat.RawPkcs8 format for PrivateKeyInfo.Save and PrivateKeyInfo.Encode methods.
  • Cryptography: RSAManaged.VerifyHash returns false on error.
  • Cryptography: Fixed ArcTwoTransform to treat EffectiveKeySize of 0 as "current KeySize".
  • Cryptography: HMAC fixed to use block length of 128 for algorithms with hashes larger than 256 bits.
  • Cryptography: Fixed certificate verification to better handle server certificate with missing common name (used to throw NullReferenceException).
  • Cryptography: Fixed handle leak in CertificateStore constructor.
  • Core: Enhanced workaround for Stream.Seek on .NET CF.
  • Core: FileLogWriter enhanced to log assembly version when opening log file.
  • Core: Added missing PublicKeyInfo() constructor.
  • Core: Added FileSet.ContainingDirectoriesIncluded option.
  • Core: Added workaround for instances of FileStream that return "[Unknown]" name.
  • Core: EncodingTools support IBM437 charset on all platforms.
  • Core: Added CertificateFindOptions.None.
  • Core: Added FileSystemItemCollection.UsePath property.

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

Official support for Visual Studio 2012

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

Events now using SynchronizationContext

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

Complete list of changes of version 2012 R3

  • All: Added .NET 4.x-style task-based asynchronous methods to objects previously using .NET 1.x-style Begin/End asynchronous pattern.
  • All: Asynchronous method events are raised using the current synchronization context for the asynchronous operation.
  • All: Added options to force the old-style event behavior (not using the current synchronization context).
  • All: Added Rebex.Legacy namespace to .NET 4.x builds to allow compiling code that uses old-style asynchronous methods.
  • All: Added official support for Visual Studio 2012.
  • 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.
  • Cryptography: Fixed a bug in TransformFinalBlock method of Rebex.Security.Cryptography ciphers that caused interoperability issues with CryptoStream.
  • Cryptography: Fixed PKCS#7 padding check in built-in ciphers.
  • Cryptography: Added EncodingTools class that adds support for all the charsets needed on all platforms.
  • Cryptography: Added auto-detection of a bug in unpatched .NET 3.5's AesCryptoServiceProvider object.
  • Cryptography: Implicit ObjectIdentifier(string) constructor added.
  • Cryptography: Fixed CryptoHelper.CreateAlgorithm to return CSP version of SHA-2 hash algorithms when available.
  • Cryptography: Fixed CertificateFinder property behavior to keep old certificates if no certificates are found by the new finder.
  • Cryptography: Server certificate verification routine now allows certificates with '*.domain.net' names to be used for 'domain.net' in addition to '*.domain.net'.
  • Cryptography: Fixed a bug in private key decryption routine which failed with keys encrypted with PKCS #12 key derivation algorithm.
  • Core: Fixed P/Invokes in NTLM/Kerberos code.
  • Core: AddRange method added to file item collections.
  • Core: FIPS 140-2 compliant mode enhancements.
  • Core: Fixed certificate validation issue on Windows XP and Windows Server 2003.
  • Core: Added Certificate.Thumbprint property.
  • Core: Fixed a bug in certificate chain building routine that caused it to ignore additional stores in some cases.

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

Complete list of changes of version 2012 R2

  • 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.
  • Cryptography: Fixed local/UTC time comparison in Certificate.IsTimeValid.
  • Cryptography: Added implicit conversion between Certificate object and X509Certificate/X509Certificate2 objects.
  • Cryptography: Enhanced compatibility with Mono on non-Windows platforms - Certificate validation now works!
  • Cryptography: Support for saving .PFX/.P12 files added to Certificate.Save method.
  • Cryptography: Added new overloads of Certificate.Associate that make it possible to permanently bind the private key to the certificate.
  • Cryptography: Added Certificate.FriendlyName property.
  • Cryptography: Fixed Certificate.SignHash method which used to fail on .NET 2.0 when an associated key was used for MD5SHA1 signature generation.
  • Cryptography: Fixed MD5Managed.HashSize property which used to return 0.
  • Cryptography: Certificate.HasPrivateKey code in .NET CF version changed to behave identically to .NET version.
  • Core: Added FileSet.Flatten option (makes it possible to ignore source directory structure and copy all files into single target directory).
  • Core: Enhanced error reporting of file-path-based methods.
  • Core: Added LocalItem and LocalItemCollection classes (used by FileSet.GetLocalItems method).

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

Components DLLs have been renamed

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

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.

Complete list of changes of version 2012 R1

  • All: SecurityRuleSet.Level2 is used for .NET 4.0 binaries.
  • All: Added a Stream.Flush() call after each Stream.Seek() or Stream.Position call in .NET Compact Framework (workaround for .NET CF FileStream bug).
  • 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.
  • Cryptography: Faster Blowfish and Twofish algorithms.
  • Cryptography: SubjectPublicKeyInfo.Load method now supports binary keys.
  • Cryptography: Removed lots of CryptoApi dependencies from Certificate code.
  • Cryptography: 4096-bit DSA keys (used by some SSH servers) are no longer rejected.
  • Cryptography: Diffie-Hellman and DSA algorithms fall back to managed ModPow calculation on .NET CF with missing "Enhanced DSA and Diffie-Hellman" CSPs.
  • Cryptography: Added Certificate.Associate(PrivateKeyInfo) method.
  • Cryptography: Certificates associated with a private key using Associate method now support MD5SHA1 hash algorithm and suitable for TLS/SSL client certificate authentication.
  • Core: Fixed a bug in TraceLogWriter that caused an additional newline to be written at the end of each message.
  • Core: Added FileSystemItem and FileSystemItemCollection classes.
  • Core: Better readability in Verbose-level logs.
  • Core: Thread ID added to all log messages.

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

Complete list of changes of version 2.0.3793.0

  • All: Packages for .NET 4.0 and Visual Studio 2010 now available.

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

Complete list of changes of version 2.0.3588.0

  • Time: Version number change only.

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

Complete list of changes of version 2.0.3428.0

  • Time: Version number change only.

2009-01-12 Version 2.0.3300.0 #
(build number 3300)

Complete list of changes of version 2.0.3300.0

  • Time: Packages for .NET Compact Framework 3.5 added.

2008-07-23 Version 2.0.3127.0 #
(build number 3127)

Complete list of changes of version 2.0.3127.0

  • 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.

2007-12-06 Version 2.0.2896.0 #
(build number 2896)

Complete list of changes of version 2.0.2896.0

  • All: Packages for .NET 3.5 and Visual Studio 2008 now available.

2007-03-06 Version 2.0.2621.0 #
(build number 2621)

Complete list of changes of version 2.0.2621.0

  • Time: IPv6 support with .NET Framework 1.1/2.0/3.0 and .NET Compact Framework 2.0.

2006-11-27 Version 2.0.2522.0 #
(build number 2522)

Complete list of changes of version 2.0.2522.0

  • 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.

2004-01-14 Version 1.0.0.0 #
(build number 12)

Complete list of changes of version 1.0.0.0

  • Time: Initial release.