Пример #1
0
        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);
        }
Пример #2
0
        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));
        }