Skip to content
Xen edited this page Sep 11, 2025 · 1 revision

Major Version Release

Introducing version 6.0.0 with major to minor changes and bug fixes. This work is towards stabilizing the ABI and API with minimum major changes required to do so.

Here's a brief list of the changes we've made:

  • HashAlgorithmWrapper has been superseded by direct individual .NET implementations, no secrecy or hidden features under the hood, you will have direct access to all available hash algorithms from the universal HashFactory. The added/exposed .NET cryptographic hash algorithms are as follows:

    • HMACMD5
    • HMACSHA1
    • HMACSHA256
    • HMACSHA384
    • HMACSHA512
    • HMACSHA3_256
    • HMACSHA3_384
    • HMACSHA3_512
    • MD5
    • SHA1
    • SHA256
    • SHA384
    • SHA512
    • SHA3_256
    • SHA3_384
    • SHA3_512
  • Config presets such as CRC32 have been replaced with globalized config profile classes. Now every preset is defined and then exposed to the universal factory, from which you can get a list of config profiles for every hash algorithm supported. However, not all algorithms have default configs, so some will continue to return an empty array. This just solves two things:

    • You no longer have to manually look for a specific algorithm's preset, as you can directly retrieve them with a single function call: GetConfigProfiles().
    • You can now fully automate the batch computation process by supplying the first occurrence of available presets from the array GetConfigProfiles(), no longer having to map each one individually.
  • Small typo fixes.

  • Added GetUnavailableHashAlgorithms for .NET8 and later to be able to gather a list of unavailable hash algorithms. This only applies to the exposed cryptographic .NET implementations, specifically to SHA3 implementations, as they are not always available by the underlying operating system, in which case .NET throws an exception. While all .NET implementation wrappings are deriving from IHashAlgorithmWrapperAlgorithm, the platform-dependent ones also derive from IHashAlgorithmWrapperPlatformDependentAlgorithm to explicitly notify about this behaviour. You can directly access the IsSupported bool flag through every implementation deriving from IHashAlgorithmWrapperPlatformDependentAlgorithm, such as HMACSHA3_256 or SHA3_256.

  • Added GetConcreteConfigs method to generic and non-generic universal factory. This returns the concrete config classes of every hash algorithm asked by the HashFunctionType enum. For example, for ICRC, this returns CRCConfig.

  • Added CreateDefaultConcreteConfig method to generic and non-generic universal factory. You can directly create an instance of the given algorithm's concrete config, only if it has a public parameterless constructor. This implementation throws KeyNotFoundException if the interface type is not available through the factory, and NotSupportedException if the concrete config does not have any public parameterless constructor.

  • Added TryCreateDefaultConcreteConfig method to generic and non-generic universal factory. This is the alternative method to CreateDefaultConcreteConfig that internally calls CreateDefaultConcreteConfig and catches the specified exceptions to return false. It's a good alternative for purposes to silently ignore such failures.

  • Renamed GetHashFunctions to CreateHashAlgorithms for clarity.

For the full list of changes, please check our change log.

Click here for the latest available NuGet package.

Clone this wiki locally