<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.0" />

IsoTrailers

public class IsoTrailers
using System; using System.Collections.Generic; namespace Org.BouncyCastle.Crypto.Signers { public class IsoTrailers { public const int TRAILER_IMPLICIT = 188; public const int TRAILER_RIPEMD160 = 12748; public const int TRAILER_RIPEMD128 = 13004; public const int TRAILER_SHA1 = 13260; public const int TRAILER_SHA256 = 13516; public const int TRAILER_SHA512 = 13772; public const int TRAILER_SHA384 = 14028; public const int TRAILER_WHIRLPOOL = 14284; public const int TRAILER_SHA224 = 14540; public const int TRAILER_SHA512_224 = 14796; public const int TRAILER_SHA512_256 = 16588; private static readonly IDictionary<string, int> TrailerMap = CreateTrailerMap(); private static IDictionary<string, int> CreateTrailerMap() { return new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase) { { "RIPEMD128", 13004 }, { "RIPEMD160", 12748 }, { "SHA-1", 13260 }, { "SHA-224", 14540 }, { "SHA-256", 13516 }, { "SHA-384", 14028 }, { "SHA-512", 13772 }, { "SHA-512/224", 14796 }, { "SHA-512/256", 16588 }, { "Whirlpool", 14284 } }; } public static int GetTrailer(IDigest digest) { if (TrailerMap.TryGetValue(digest.AlgorithmName, out int value)) return value; throw new InvalidOperationException("No trailer for digest"); } public static bool NoTrailerAvailable(IDigest digest) { return !TrailerMap.ContainsKey(digest.AlgorithmName); } } }