/// <summary> /// Construct a key pair generator for DSA keys. /// </summary> /// <param name="keyGenParameters">Domain parameters and algorithm for the generated key.</param> /// <param name="random">A source of randomness for calculating the private value.</param> internal KeyPairGenerator(KeyGenerationParameters keyGenParameters, SecureRandom random) : base(keyGenParameters) { if (CryptoServicesRegistrar.IsInApprovedOnlyMode()) { int effSizeInBits = keyGenParameters.DomainParameters.P.BitLength; if (effSizeInBits != 2048 && effSizeInBits != 3072) { throw new CryptoUnapprovedOperationError("attempt to create key pair with unapproved key size [" + effSizeInBits + "]", keyGenParameters.Algorithm); } Utils.ValidateKeyPairGenRandom(random, Utils.GetAsymmetricSecurityStrength(effSizeInBits), keyGenParameters.Algorithm); } this.domainParameters = keyGenParameters.DomainParameters; this.param = new DsaKeyGenerationParameters(random, getDomainParams(domainParameters)); this.engine.Init(param); }
private static DsaParameters getDomainParams(DsaDomainParameters dsaParams) { return(new DsaParameters(dsaParams.P, dsaParams.Q, dsaParams.G)); }
/// <summary> /// Base constructor for the default algorithm ID. /// </summary> /// <param name="domainParameters">DSA domain parameters representing the parameter set any generated keys will be for.</param> public KeyGenerationParameters(DsaDomainParameters domainParameters) : base(Alg) { this.domainParameters = domainParameters; }