
org.bouncycastle.pqc.crypto.lms.LMSSigner Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-jdk15to18 Show documentation
Show all versions of bcprov-jdk15to18 Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8.
The newest version!
package org.bouncycastle.pqc.crypto.lms;
import java.io.IOException;
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.pqc.crypto.MessageSigner;
public class LMSSigner
implements MessageSigner
{
private LMSPrivateKeyParameters privKey;
private LMSPublicKeyParameters pubKey;
public void init(boolean forSigning, CipherParameters param)
{
if (forSigning)
{
if (param instanceof HSSPrivateKeyParameters)
{
HSSPrivateKeyParameters hssPriv = (HSSPrivateKeyParameters)param;
if (hssPriv.getL() == 1)
{
privKey = hssPriv.getRootKey();
}
else
{
throw new IllegalArgumentException("only a single level HSS key can be used with LMS");
}
}
else
{
privKey = (LMSPrivateKeyParameters)param;
}
}
else
{
if (param instanceof HSSPublicKeyParameters)
{
HSSPublicKeyParameters hssPub = (HSSPublicKeyParameters)param;
if (hssPub.getL() == 1)
{
pubKey = hssPub.getLMSPublicKey();
}
else
{
throw new IllegalArgumentException("only a single level HSS key can be used with LMS");
}
}
else
{
pubKey = (LMSPublicKeyParameters)param;
}
}
}
public byte[] generateSignature(byte[] message)
{
try
{
return LMS.generateSign(privKey, message).getEncoded();
}
catch (IOException e)
{
throw new IllegalStateException("unable to encode signature: " + e.getMessage());
}
}
public boolean verifySignature(byte[] message, byte[] signature)
{
try
{
return LMS.verifySignature(pubKey, LMSSignature.getInstance(signature), message);
}
catch (IOException e)
{
throw new IllegalStateException("unable to decode signature: " + e.getMessage());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy