43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
|
|
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
|
||
|
|
|
||
|
|
using System;
|
||
|
|
|
||
|
|
using Org.BouncyCastle.Crypto.Parameters;
|
||
|
|
using Org.BouncyCastle.Math;
|
||
|
|
|
||
|
|
namespace Org.BouncyCastle.Crypto.Generators
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* a basic Diffie-Hellman key pair generator.
|
||
|
|
*
|
||
|
|
* This generates keys consistent for use with the basic algorithm for
|
||
|
|
* Diffie-Hellman.
|
||
|
|
*/
|
||
|
|
public class DHBasicKeyPairGenerator
|
||
|
|
: IAsymmetricCipherKeyPairGenerator
|
||
|
|
{
|
||
|
|
private DHKeyGenerationParameters param;
|
||
|
|
|
||
|
|
public virtual void Init(
|
||
|
|
KeyGenerationParameters parameters)
|
||
|
|
{
|
||
|
|
this.param = (DHKeyGenerationParameters)parameters;
|
||
|
|
}
|
||
|
|
|
||
|
|
public virtual AsymmetricCipherKeyPair GenerateKeyPair()
|
||
|
|
{
|
||
|
|
DHKeyGeneratorHelper helper = DHKeyGeneratorHelper.Instance;
|
||
|
|
DHParameters dhp = param.Parameters;
|
||
|
|
|
||
|
|
BigInteger x = helper.CalculatePrivate(dhp, param.Random);
|
||
|
|
BigInteger y = helper.CalculatePublic(dhp, x);
|
||
|
|
|
||
|
|
return new AsymmetricCipherKeyPair(
|
||
|
|
new DHPublicKeyParameters(y, dhp),
|
||
|
|
new DHPrivateKeyParameters(x, dhp));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif
|