diff --git a/crypto/src/crypto/generators/DHBasicKeyPairGenerator.cs b/crypto/src/crypto/generators/DHBasicKeyPairGenerator.cs
index 51b3af687..7842df683 100644
--- a/crypto/src/crypto/generators/DHBasicKeyPairGenerator.cs
+++ b/crypto/src/crypto/generators/DHBasicKeyPairGenerator.cs
@@ -11,24 +11,24 @@ namespace Org.BouncyCastle.Crypto.Generators
* This generates keys consistent for use with the basic algorithm for
* Diffie-Hellman.
*/
+ // TODO[api] sealed
+ [Obsolete("Use 'DHKeyPairGenerator' instead")]
public class DHBasicKeyPairGenerator
: IAsymmetricCipherKeyPairGenerator
{
- private DHKeyGenerationParameters param;
+ private DHKeyGenerationParameters m_parameters;
- public virtual void Init(
- KeyGenerationParameters parameters)
+ public virtual void Init(KeyGenerationParameters parameters)
{
- this.param = (DHKeyGenerationParameters)parameters;
+ m_parameters = (DHKeyGenerationParameters)parameters;
}
public virtual AsymmetricCipherKeyPair GenerateKeyPair()
{
- DHKeyGeneratorHelper helper = DHKeyGeneratorHelper.Instance;
- DHParameters dhp = param.Parameters;
+ DHParameters dhp = m_parameters.Parameters;
- BigInteger x = helper.CalculatePrivate(dhp, param.Random);
- BigInteger y = helper.CalculatePublic(dhp, x);
+ BigInteger x = DHKeyGeneratorHelper.CalculatePrivate(dhp, m_parameters.Random);
+ BigInteger y = DHKeyGeneratorHelper.CalculatePublic(dhp, x);
return new AsymmetricCipherKeyPair(
new DHPublicKeyParameters(y, dhp),
diff --git a/crypto/src/crypto/generators/DHKeyGeneratorHelper.cs b/crypto/src/crypto/generators/DHKeyGeneratorHelper.cs
index 68aba64f7..e5f1fbaf1 100644
--- a/crypto/src/crypto/generators/DHKeyGeneratorHelper.cs
+++ b/crypto/src/crypto/generators/DHKeyGeneratorHelper.cs
@@ -1,5 +1,3 @@
-using System;
-
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Math;
using Org.BouncyCastle.Math.EC.Multiplier;
@@ -8,17 +6,9 @@ using Org.BouncyCastle.Utilities;
namespace Org.BouncyCastle.Crypto.Generators
{
- class DHKeyGeneratorHelper
+ internal static class DHKeyGeneratorHelper
{
- internal static readonly DHKeyGeneratorHelper Instance = new DHKeyGeneratorHelper();
-
- private DHKeyGeneratorHelper()
- {
- }
-
- internal BigInteger CalculatePrivate(
- DHParameters dhParams,
- SecureRandom random)
+ internal static BigInteger CalculatePrivate(DHParameters dhParams, SecureRandom random)
{
int limit = dhParams.L;
@@ -29,9 +19,7 @@ namespace Org.BouncyCastle.Crypto.Generators
{
BigInteger x = new BigInteger(limit, random).SetBit(limit - 1);
if (WNafUtilities.GetNafWeight(x) >= minWeight)
- {
return x;
- }
}
}
@@ -42,11 +30,7 @@ namespace Org.BouncyCastle.Crypto.Generators
min = BigInteger.One.ShiftLeft(m - 1);
}
- BigInteger q = dhParams.Q;
- if (q == null)
- {
- q = dhParams.P;
- }
+ BigInteger q = dhParams.Q ?? dhParams.P;
BigInteger max = q.Subtract(BigInteger.Two);
{
@@ -55,16 +39,12 @@ namespace Org.BouncyCastle.Crypto.Generators
{
BigInteger x = BigIntegers.CreateRandomInRange(min, max, random);
if (WNafUtilities.GetNafWeight(x) >= minWeight)
- {
return x;
- }
}
}
}
- internal BigInteger CalculatePublic(
- DHParameters dhParams,
- BigInteger x)
+ internal static BigInteger CalculatePublic(DHParameters dhParams, BigInteger x)
{
return dhParams.G.ModPow(x, dhParams.P);
}
diff --git a/crypto/src/crypto/generators/DHKeyPairGenerator.cs b/crypto/src/crypto/generators/DHKeyPairGenerator.cs
index 3bf58ba1b..171d86f92 100644
--- a/crypto/src/crypto/generators/DHKeyPairGenerator.cs
+++ b/crypto/src/crypto/generators/DHKeyPairGenerator.cs
@@ -11,24 +11,23 @@ namespace Org.BouncyCastle.Crypto.Generators
* This generates keys consistent for use in the MTI/A0 key agreement protocol
* as described in "Handbook of Applied Cryptography", Pages 516-519.
*/
+ // TODO[api] sealed
public class DHKeyPairGenerator
: IAsymmetricCipherKeyPairGenerator
{
- private DHKeyGenerationParameters param;
+ private DHKeyGenerationParameters m_parameters;
- public virtual void Init(
- KeyGenerationParameters parameters)
+ public virtual void Init(KeyGenerationParameters parameters)
{
- this.param = (DHKeyGenerationParameters)parameters;
+ m_parameters = (DHKeyGenerationParameters)parameters;
}
public virtual AsymmetricCipherKeyPair GenerateKeyPair()
{
- DHKeyGeneratorHelper helper = DHKeyGeneratorHelper.Instance;
- DHParameters dhp = param.Parameters;
+ DHParameters dhp = m_parameters.Parameters;
- BigInteger x = helper.CalculatePrivate(dhp, param.Random);
- BigInteger y = helper.CalculatePublic(dhp, x);
+ BigInteger x = DHKeyGeneratorHelper.CalculatePrivate(dhp, m_parameters.Random);
+ BigInteger y = DHKeyGeneratorHelper.CalculatePublic(dhp, x);
return new AsymmetricCipherKeyPair(
new DHPublicKeyParameters(y, dhp),
diff --git a/crypto/src/crypto/generators/ElGamalKeyPairGenerator.cs b/crypto/src/crypto/generators/ElGamalKeyPairGenerator.cs
index 227e7fe94..790e3dacf 100644
--- a/crypto/src/crypto/generators/ElGamalKeyPairGenerator.cs
+++ b/crypto/src/crypto/generators/ElGamalKeyPairGenerator.cs
@@ -11,30 +11,28 @@ namespace Org.BouncyCastle.Crypto.Generators
* This Generates keys consistent for use with ElGamal as described in
* page 164 of "Handbook of Applied Cryptography".</p>
*/
+ // TODO[api] sealed
public class ElGamalKeyPairGenerator
: IAsymmetricCipherKeyPairGenerator
{
- private ElGamalKeyGenerationParameters param;
+ private ElGamalKeyGenerationParameters m_parameters;
- public void Init(
- KeyGenerationParameters parameters)
+ public void Init(KeyGenerationParameters parameters)
{
- this.param = (ElGamalKeyGenerationParameters) parameters;
+ m_parameters = (ElGamalKeyGenerationParameters)parameters;
}
public AsymmetricCipherKeyPair GenerateKeyPair()
{
- DHKeyGeneratorHelper helper = DHKeyGeneratorHelper.Instance;
- ElGamalParameters egp = param.Parameters;
+ ElGamalParameters egp = m_parameters.Parameters;
DHParameters dhp = new DHParameters(egp.P, egp.G, null, 0, egp.L);
- BigInteger x = helper.CalculatePrivate(dhp, param.Random);
- BigInteger y = helper.CalculatePublic(dhp, x);
+ BigInteger x = DHKeyGeneratorHelper.CalculatePrivate(dhp, m_parameters.Random);
+ BigInteger y = DHKeyGeneratorHelper.CalculatePublic(dhp, x);
return new AsymmetricCipherKeyPair(
new ElGamalPublicKeyParameters(y, egp),
new ElGamalPrivateKeyParameters(x, egp));
}
}
-
}
diff --git a/crypto/src/tls/crypto/impl/bc/BcTlsDHDomain.cs b/crypto/src/tls/crypto/impl/bc/BcTlsDHDomain.cs
index 6a947c23b..7d71fe9d6 100644
--- a/crypto/src/tls/crypto/impl/bc/BcTlsDHDomain.cs
+++ b/crypto/src/tls/crypto/impl/bc/BcTlsDHDomain.cs
@@ -109,7 +109,7 @@ namespace Org.BouncyCastle.Tls.Crypto.Impl.BC
public virtual AsymmetricCipherKeyPair GenerateKeyPair()
{
- DHBasicKeyPairGenerator keyPairGenerator = new DHBasicKeyPairGenerator();
+ DHKeyPairGenerator keyPairGenerator = new DHKeyPairGenerator();
keyPairGenerator.Init(new DHKeyGenerationParameters(m_crypto.SecureRandom, m_domainParameters));
return keyPairGenerator.GenerateKeyPair();
}
|