package ser.issue52;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.junit.Test;
import org.nustaq.serialization.FSTConfiguration;
import java.math.BigInteger;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
import java.security.Security;
import java.security.spec.RSAKeyGenParameterSpec;
/**
* Created by ruedi on 01/02/15.
*/
public class I52 {
// Fermat F4, largest known fermat prime
private static final BigInteger PUBLIC_EXP = new BigInteger("10001", 16);;
private static final int STRENGTH = 1024;
@Test
public void test() throws Exception {
// install BouncyCastle provider
Security.addProvider(new BouncyCastleProvider());
// generate a keypair
KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "BC");
RSAKeyGenParameterSpec params = new RSAKeyGenParameterSpec(STRENGTH, PUBLIC_EXP);
gen.initialize(params, new SecureRandom());
KeyPair keyPair = gen.generateKeyPair();
FSTConfiguration fst = FSTConfiguration.createDefaultConfiguration();
// serialize
byte[] serialized = fst.asByteArray(keyPair);
// deserialize --> crash
KeyPair deserialized = (KeyPair) fst.asObject(serialized);
}
}