package org.bouncycastle.pqc.crypto.newhope; import java.security.SecureRandom; import org.bouncycastle.crypto.AsymmetricCipherKeyPair; import org.bouncycastle.crypto.AsymmetricCipherKeyPairGenerator; import org.bouncycastle.crypto.KeyGenerationParameters; public class NHKeyPairGenerator implements AsymmetricCipherKeyPairGenerator { private SecureRandom random; public void init(KeyGenerationParameters param) { this.random = param.getRandom(); } public AsymmetricCipherKeyPair generateKeyPair() { byte[] pubData = new byte[NewHope.SENDA_BYTES]; short[] secData = new short[NewHope.POLY_SIZE]; NewHope.keygen(random, pubData, secData); return new AsymmetricCipherKeyPair(new NHPublicKeyParameters(pubData), new NHPrivateKeyParameters(secData)); } }