- Initial commit

This commit is contained in:
Timur Kozanov
2026-07-03 05:02:26 +03:00
commit 374ff1e689
4080 changed files with 388870 additions and 0 deletions

View File

@ -0,0 +1,85 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Security;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Crypto
{
/**
* The base class for symmetric, or secret, cipher key generators.
*/
public class CipherKeyGenerator
{
protected internal SecureRandom random;
protected internal int strength;
private bool uninitialised = true;
private int defaultStrength;
public CipherKeyGenerator()
{
}
internal CipherKeyGenerator(
int defaultStrength)
{
if (defaultStrength < 1)
throw new ArgumentException("strength must be a positive value", "defaultStrength");
this.defaultStrength = defaultStrength;
}
public int DefaultStrength
{
get { return defaultStrength; }
}
/**
* initialise the key generator.
*
* @param param the parameters to be used for key generation
*/
public void Init(KeyGenerationParameters parameters)
{
if (parameters == null)
throw new ArgumentNullException(nameof(parameters));
this.uninitialised = false;
EngineInit(parameters);
}
protected virtual void EngineInit(KeyGenerationParameters parameters)
{
this.random = parameters.Random;
this.strength = (parameters.Strength + 7) / 8;
}
/**
* Generate a secret key.
*
* @return a byte array containing the key value.
*/
public byte[] GenerateKey()
{
if (uninitialised)
{
if (defaultStrength < 1)
throw new InvalidOperationException("Generator has not been initialised");
uninitialised = false;
EngineInit(new KeyGenerationParameters(CryptoServicesRegistrar.GetSecureRandom(), defaultStrength));
}
return EngineGenerateKey();
}
protected virtual byte[] EngineGenerateKey()
{
return SecureRandom.GetNextBytes(random, strength);
}
}
}
#pragma warning restore
#endif