3rdPartyLibraries/iTechSharp/srcbc/crypto/parameters/ECKeyGenerationParameters.cs
2023-06-21 12:46:23 -04:00

56 lines
1.4 KiB
C#

using System;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.CryptoPro;
using Org.BouncyCastle.Security;
namespace Org.BouncyCastle.Crypto.Parameters
{
public class ECKeyGenerationParameters
: KeyGenerationParameters
{
private readonly ECDomainParameters domainParams;
private readonly DerObjectIdentifier publicKeyParamSet;
public ECKeyGenerationParameters(
ECDomainParameters domainParameters,
SecureRandom random)
: base(random, domainParameters.N.BitLength)
{
this.domainParams = domainParameters;
}
public ECKeyGenerationParameters(
DerObjectIdentifier publicKeyParamSet,
SecureRandom random)
: this(LookupParameters(publicKeyParamSet), random)
{
this.publicKeyParamSet = publicKeyParamSet;
}
public ECDomainParameters DomainParameters
{
get { return domainParams; }
}
public DerObjectIdentifier PublicKeyParamSet
{
get { return publicKeyParamSet; }
}
private static ECDomainParameters LookupParameters(
DerObjectIdentifier publicKeyParamSet)
{
if (publicKeyParamSet == null)
throw new ArgumentNullException("publicKeyParamSet");
ECDomainParameters p = ECGost3410NamedCurves.GetByOid(publicKeyParamSet);
if (p == null)
throw new ArgumentException("OID is not a valid CryptoPro public key parameter set", "publicKeyParamSet");
return p;
}
}
}