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

LmsSigner

public sealed class LmsSigner : IMessageSigner
using Org.BouncyCastle.Crypto; using System; using System.IO; namespace Org.BouncyCastle.Pqc.Crypto.Lms { public sealed class LmsSigner : IMessageSigner { private LmsPrivateKeyParameters m_privateKey; private LmsPublicKeyParameters m_publicKey; public void Init(bool forSigning, ICipherParameters param) { if (forSigning) m_privateKey = (LmsPrivateKeyParameters)param; else m_publicKey = (LmsPublicKeyParameters)param; } public byte[] GenerateSignature(byte[] message) { try { return Lms.GenerateSign(m_privateKey, message).GetEncoded(); } catch (IOException ex) { throw new Exception("unable to encode signature: " + ex.Message); } } public bool VerifySignature(byte[] message, byte[] signature) { try { return Lms.VerifySignature(m_publicKey, LmsSignature.GetInstance(signature), message); } catch (IOException ex) { throw new Exception("unable to decode signature: " + ex.Message); } } } }