private static KeyPair generateKeyPairInternal(Address addr, int strenght) throws GeneralSecurityException {
AssertArgument.assertTrue(addr == null || addr.getPrivKey() != null, "Wallet does not control private key for: " + addr);
SecureRandom secrnd = addr != null ? new DeterministicRandom(addr) : new SecureRandom();
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
KeyPairGeneratorSpi spi = (KeyPairGeneratorSpi) kpg;
spi.initialize(strenght, secrnd);
KeyPair keyPair = kpg.generateKeyPair();
PublicKey pubKey = decodePublicKey(encodeKey(keyPair.getPublic()));
return new KeyPair(pubKey, keyPair.getPrivate());
}
}