public void ShouldReturnPrimeWithGenerator(int keySize) { var parameters = mapper.GetParametersByKeySize(keySize); //Single iteration is enough; the content is prime unless altered by formatting. Assert.IsTrue(Primes.IsMRProbablePrime(parameters.Prime, random, 1)); Assert.AreEqual(keySize, parameters.Prime.BitLength); Assert.AreEqual(2, parameters.Generator.IntValue); }
public IAsymmetricKeyPair CreateKeyPair(int keySize, bool useRfc3526Prime) { AsymmetricCipherKeyPair keyPair; if (useRfc3526Prime) { AsymmetricKeyParameters parameters = primes.GetParametersByKeySize(keySize); keyPair = keyPairGenerator.GenerateElGamalKeyPair(keySize, parameters.Prime, parameters.Generator); } else { keyPair = keyPairGenerator.GenerateElGamalKeyPair(keySize); } byte[] publicKeyContent = GetPublicKey(keyPair.Public); byte[] privateKeyContent = GetPrivateKey(keyPair.Private); var publicKey = new ElGamalKey(publicKeyContent, AsymmetricKeyType.Public, GetKeyLength(keyPair.Public)); var privateKey = new ElGamalKey(privateKeyContent, AsymmetricKeyType.Private, GetKeyLength(keyPair.Private)); return(new AsymmetricKeyPair(privateKey, publicKey)); }