add all
This commit is contained in:
85
Packages/com.tivadar.best.http/Runtime/3rdParty/BouncyCastle/crypto/CipherKeyGenerator.cs
vendored
Normal file
85
Packages/com.tivadar.best.http/Runtime/3rdParty/BouncyCastle/crypto/CipherKeyGenerator.cs
vendored
Normal 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
|
||||
Reference in New Issue
Block a user