HssSigner
using Org.BouncyCastle.Crypto;
using System;
using System.IO;
namespace Org.BouncyCastle.Pqc.Crypto.Lms
{
public sealed class HssSigner : IMessageSigner
{
private HssPrivateKeyParameters privKey;
private HssPublicKeyParameters pubKey;
public void Init(bool forSigning, ICipherParameters param)
{
if (forSigning)
privKey = (HssPrivateKeyParameters)param;
else
pubKey = (HssPublicKeyParameters)param;
}
public byte[] GenerateSignature(byte[] message)
{
try {
return Hss.GenerateSignature(privKey, message).GetEncoded();
} catch (IOException ex) {
throw new Exception("unable to encode signature: " + ex.Message);
}
}
public bool VerifySignature(byte[] message, byte[] signature)
{
try {
return Hss.VerifySignature(pubKey, HssSignature.GetInstance(signature, pubKey.Level), message);
} catch (IOException ex) {
throw new Exception("unable to decode signature: " + ex.Message);
}
}
}
}