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

LMOtsParameters

public sealed class LMOtsParameters
using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Nist; using Org.BouncyCastle.Utilities.Collections; using Org.BouncyCastle.Utilities.IO; using System; using System.Collections.Generic; using System.IO; using System.Runtime.CompilerServices; namespace Org.BouncyCastle.Pqc.Crypto.Lms { public sealed class LMOtsParameters { public static LMOtsParameters sha256_n32_w1 = new LMOtsParameters(1, 32, 1, 265, 7, 8516, NistObjectIdentifiers.IdSha256); public static LMOtsParameters sha256_n32_w2 = new LMOtsParameters(2, 32, 2, 133, 6, 4292, NistObjectIdentifiers.IdSha256); public static LMOtsParameters sha256_n32_w4 = new LMOtsParameters(3, 32, 4, 67, 4, 2180, NistObjectIdentifiers.IdSha256); public static LMOtsParameters sha256_n32_w8 = new LMOtsParameters(4, 32, 8, 34, 0, 1124, NistObjectIdentifiers.IdSha256); public static LMOtsParameters sha256_n24_w1 = new LMOtsParameters(5, 24, 1, 200, 8, 5436, NistObjectIdentifiers.IdSha256); public static LMOtsParameters sha256_n24_w2 = new LMOtsParameters(6, 24, 2, 101, 6, 2940, NistObjectIdentifiers.IdSha256); public static LMOtsParameters sha256_n24_w4 = new LMOtsParameters(7, 24, 4, 51, 4, 1500, NistObjectIdentifiers.IdSha256); public static LMOtsParameters sha256_n24_w8 = new LMOtsParameters(8, 24, 8, 26, 0, 1020, NistObjectIdentifiers.IdSha256); public static LMOtsParameters shake256_n32_w1 = new LMOtsParameters(9, 32, 1, 265, 7, 8516, NistObjectIdentifiers.IdShake256Len); public static LMOtsParameters shake256_n32_w2 = new LMOtsParameters(10, 32, 2, 133, 6, 4292, NistObjectIdentifiers.IdShake256Len); public static LMOtsParameters shake256_n32_w4 = new LMOtsParameters(11, 32, 4, 67, 4, 2180, NistObjectIdentifiers.IdShake256Len); public static LMOtsParameters shake256_n32_w8 = new LMOtsParameters(12, 32, 8, 34, 0, 1124, NistObjectIdentifiers.IdShake256Len); public static LMOtsParameters shake256_n24_w1 = new LMOtsParameters(13, 24, 1, 200, 8, 5436, NistObjectIdentifiers.IdShake256Len); public static LMOtsParameters shake256_n24_w2 = new LMOtsParameters(14, 24, 2, 101, 6, 2940, NistObjectIdentifiers.IdShake256Len); public static LMOtsParameters shake256_n24_w4 = new LMOtsParameters(15, 24, 4, 51, 4, 1500, NistObjectIdentifiers.IdShake256Len); public static LMOtsParameters shake256_n24_w8 = new LMOtsParameters(16, 24, 8, 26, 0, 1020, NistObjectIdentifiers.IdShake256Len); private static Dictionary<int, LMOtsParameters> ParametersByID = new Dictionary<int, LMOtsParameters> { { sha256_n32_w1.ID, sha256_n32_w1 }, { sha256_n32_w2.ID, sha256_n32_w2 }, { sha256_n32_w4.ID, sha256_n32_w4 }, { sha256_n32_w8.ID, sha256_n32_w8 }, { sha256_n24_w1.ID, sha256_n24_w1 }, { sha256_n24_w2.ID, sha256_n24_w2 }, { sha256_n24_w4.ID, sha256_n24_w4 }, { sha256_n24_w8.ID, sha256_n24_w8 }, { shake256_n32_w1.ID, shake256_n32_w1 }, { shake256_n32_w2.ID, shake256_n32_w2 }, { shake256_n32_w4.ID, shake256_n32_w4 }, { shake256_n32_w8.ID, shake256_n32_w8 }, { shake256_n24_w1.ID, shake256_n24_w1 }, { shake256_n24_w2.ID, shake256_n24_w2 }, { shake256_n24_w4.ID, shake256_n24_w4 }, { shake256_n24_w8.ID, shake256_n24_w8 } }; private readonly int m_id; private readonly int m_n; private readonly int m_w; private readonly int m_p; private readonly int m_ls; private readonly uint m_sigLen; private readonly DerObjectIdentifier m_digestOid; public int ID => m_id; public int N => m_n; public int W => m_w; public int P => m_p; public int Ls => m_ls; public int SigLen => Convert.ToInt32(m_sigLen); public DerObjectIdentifier DigestOid => m_digestOid; public static LMOtsParameters GetParametersByID(int id) { return CollectionUtilities.GetValueOrNull(ParametersByID, id); } internal static LMOtsParameters ParseByID(BinaryReader binaryReader) { int num = BinaryReaders.ReadInt32BigEndian(binaryReader); if (!ParametersByID.TryGetValue(num, out LMOtsParameters value)) { DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(24, 1); defaultInterpolatedStringHandler.AppendLiteral("unknown LMOtsParameters "); defaultInterpolatedStringHandler.AppendFormatted(num); throw new InvalidDataException(defaultInterpolatedStringHandler.ToStringAndClear()); } return value; } internal LMOtsParameters(int id, int n, int w, int p, int ls, uint sigLen, DerObjectIdentifier digestOid) { m_id = id; m_n = n; m_w = w; m_p = p; m_ls = ls; m_sigLen = sigLen; m_digestOid = digestOid; } } }