blob: a38530f5ba1924e254eaed81f24071fb12d06bf7 [file] [log] [blame]
package org.bouncycastle.pqc.crypto.test;
import java.text.ParseException;
import junit.framework.TestCase;
import org.bouncycastle.crypto.digests.SHA256Digest;
import org.bouncycastle.pqc.crypto.xmss.NullPRNG;
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.XMSSUtil;
/**
* Test cases for XMSS^MT signature class.
*/
public class XMSSMTSignatureTest extends TestCase {
public void testSignatureParsingSHA256() {
int totalHeight = 6;
int layers = 3;
byte[] message = new byte[1024];
XMSSMTParameters params = new XMSSMTParameters(totalHeight, layers, new SHA256Digest(), new NullPRNG());
XMSSMT xmssMT = new XMSSMT(params);
xmssMT.generateKeys();
byte[] signature1 = xmssMT.sign(message);
XMSSMTSignature mtSignature = null;
try {
mtSignature = new XMSSMTSignature.Builder(params).withSignature(signature1).build();
byte[] signature2 = mtSignature.toByteArray();
assertTrue(XMSSUtil.compareByteArray(signature1, signature2));
} catch (ParseException e) {
e.printStackTrace();
fail();
}
}
public void testConstructor() {
XMSSMTParameters params = new XMSSMTParameters(20, 10, new SHA256Digest(), new NullPRNG());
XMSSMTSignature sig = null;
try {
sig = new XMSSMTSignature.Builder(params).build();
} catch (ParseException ex) {
ex.printStackTrace();
}
byte[] sigByte = sig.toByteArray();
/* check everything is 0 */
for (int i = 0; i < sigByte.length; i++) {
assertEquals(0x00, sigByte[i]);
}
}
}