1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.bouncycastle.crypto.params; 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.math.BigInteger; 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.SecureRandom; 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.bouncycastle.crypto.KeyGenerationParameters; 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class RSAKeyGenerationParameters 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project extends KeyGenerationParameters 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{ 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private BigInteger publicExponent; 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private int certainty; 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public RSAKeyGenerationParameters( 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BigInteger publicExponent, 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecureRandom random, 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int strength, 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int certainty) 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(random, strength); 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (strength < 12) 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("key strength too small"); 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // public exponent cannot be even 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!publicExponent.testBit(0)) 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("public exponent cannot be even"); 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.publicExponent = publicExponent; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.certainty = certainty; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public BigInteger getPublicExponent() 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return publicExponent; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getCertainty() 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return certainty; 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 49