package org.bouncycastle.pqc.crypto.test;
import java.io.IOException;
import java.security.SecureRandom;
import java.text.ParseException;
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.XMSSMTPublicKeyParameters;
import org.bouncycastle.pqc.crypto.xmss.XMSSUtil;
import junit.framework.TestCase;
/**
* Test cases for XMSSMTPublicKey class.
*
*/
public class XMSSMTPublicKeyTest extends TestCase {
public void testPublicKeyParsingSHA256() throws IOException, ClassNotFoundException {
XMSSMTParameters params = new XMSSMTParameters(20, 10, new SHA256Digest(), new SecureRandom());
XMSSMT mt = new XMSSMT(params);
mt.generateKeys();
byte[] privateKey = mt.exportPrivateKey();
byte[] publicKey = mt.exportPublicKey();
try {
mt.importState(privateKey, publicKey);
} catch (ParseException e) {
e.printStackTrace();
}
assertTrue(XMSSUtil.compareByteArray(publicKey, mt.exportPublicKey()));
}
public void testConstructor() {
XMSSMTParameters params = new XMSSMTParameters(20, 10, new SHA256Digest(), new NullPRNG());
XMSSMTPublicKeyParameters pk = null;
try {
pk = new XMSSMTPublicKeyParameters.Builder(params).build();
} catch (ParseException ex) {
ex.printStackTrace();
}
byte[] pkByte = pk.toByteArray();
/* check everything is 0 */
for (int i = 0; i < pkByte.length; i++) {
assertEquals(0x00, pkByte[i]);
}
}
}