blob: eac934263bd14aa25f2141a678bf55c057148715 [file] [log] [blame]
package org.bouncycastle.pqc.crypto.test;
import junit.framework.TestCase;
import org.bouncycastle.crypto.digests.SHA256Digest;
import org.bouncycastle.crypto.digests.SHA512Digest;
import org.bouncycastle.pqc.crypto.xmss.XMSSMT;
import org.bouncycastle.pqc.crypto.xmss.XMSSMTParameters;
import org.bouncycastle.pqc.crypto.xmss.XMSSMTSignature;
import org.bouncycastle.pqc.crypto.xmss.XMSSParameters;
import org.bouncycastle.pqc.crypto.xmss.XMSSReducedSignature;
import org.bouncycastle.util.Arrays;
/**
* Test cases for XMSSReducedSignature class.
*/
public class XMSSReducedSignatureTest
extends TestCase
{
public void testSignatureParsingSHA256()
{
XMSSMTParameters params = new XMSSMTParameters(8, 2, new SHA256Digest());
XMSSMT mt = new XMSSMT(params, new NullPRNG());
mt.generateKeys();
byte[] message = new byte[1024];
byte[] sig1 = mt.sign(message);
XMSSMTSignature sig2 = new XMSSMTSignature.Builder(params).withSignature(sig1).build();
XMSSReducedSignature reducedSignature1 = sig2.getReducedSignatures().get(0);
byte[] reducedSignatureBinary = reducedSignature1.toByteArray();
XMSSReducedSignature reducedSignature2 = new XMSSReducedSignature.Builder(new XMSSParameters(4, new SHA256Digest())).withReducedSignature(reducedSignatureBinary).build();
assertTrue(Arrays.areEqual(reducedSignatureBinary, reducedSignature2.toByteArray()));
}
public void testSignatureParsingSHA512()
{
XMSSMTParameters params = new XMSSMTParameters(4, 2, new SHA512Digest());
XMSSMT mt = new XMSSMT(params, new NullPRNG());
mt.generateKeys();
byte[] message = new byte[1024];
byte[] sig1 = mt.sign(message);
XMSSMTSignature sig2 = new XMSSMTSignature.Builder(params).withSignature(sig1).build();
XMSSReducedSignature reducedSignature1 = sig2.getReducedSignatures().get(0);
byte[] reducedSignatureBinary = reducedSignature1.toByteArray();
XMSSReducedSignature reducedSignature2 = new XMSSReducedSignature.Builder(new XMSSParameters(2, new SHA512Digest())).withReducedSignature(reducedSignatureBinary).build();
assertTrue(Arrays.areEqual(reducedSignatureBinary, reducedSignature2.toByteArray()));
}
public void testConstructor()
{
XMSSReducedSignature sig = new XMSSReducedSignature.Builder(new XMSSParameters(4, new SHA512Digest())).build();
byte[] sigByte = sig.toByteArray();
/* check everything is 0 */
for (int i = 0; i < sigByte.length; i++)
{
assertEquals(0x00, sigByte[i]);
}
}
}