package org.bouncycastle.pqc.crypto.test; import java.text.ParseException; import junit.framework.TestCase; import org.bouncycastle.crypto.digests.SHA256Digest; import org.bouncycastle.crypto.digests.SHA512Digest; import org.bouncycastle.pqc.crypto.xmss.NullPRNG; import org.bouncycastle.pqc.crypto.xmss.XMSS; import org.bouncycastle.pqc.crypto.xmss.XMSSParameters; import org.bouncycastle.pqc.crypto.xmss.XMSSSignature; import org.bouncycastle.pqc.crypto.xmss.XMSSUtil; /** * Test cases for XMSSSignature class. * */ public class XMSSSignatureTest extends TestCase { public void testSignatureParsingSHA256() { XMSSParameters params = new XMSSParameters(10, new SHA256Digest(), new NullPRNG()); XMSS xmss = new XMSS(params); xmss.generateKeys(); byte[] message = new byte[1024]; byte[] sig1 = xmss.sign(message); XMSSSignature sig2 = null; try { sig2 = new XMSSSignature.Builder(params).withSignature(sig1).build(); } catch (ParseException ex) { ex.printStackTrace(); fail(); } byte[] sig3 = sig2.toByteArray(); assertEquals(true, XMSSUtil.compareByteArray(sig1, sig3)); } public void testSignatureParsingSHA512() { XMSSParameters params = new XMSSParameters(10, new SHA512Digest(), new NullPRNG()); XMSS xmss = new XMSS(params); xmss.generateKeys(); byte[] message = new byte[1024]; byte[] sig1 = xmss.sign(message); XMSSSignature sig2 = null; try { sig2 = new XMSSSignature.Builder(params).withSignature(sig1).build(); } catch (ParseException ex) { ex.printStackTrace(); fail(); } byte[] sig3 = sig2.toByteArray(); assertEquals(true, XMSSUtil.compareByteArray(sig1, sig3)); } public void testConstructor() { XMSSParameters params = new XMSSParameters(10, new SHA256Digest(), new NullPRNG()); XMSSSignature sig = null; try { sig = new XMSSSignature.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]); } } }