Org.BouncyCastle.Crypto.Generators.Gost3410ParametersGenerator.procedure_C C# (CSharp) Метод

procedure_C() приватный Метод

private procedure_C ( BigInteger p, BigInteger q ) : BigInteger
p Org.BouncyCastle.Math.BigInteger
q Org.BouncyCastle.Math.BigInteger
Результат Org.BouncyCastle.Math.BigInteger
		private BigInteger procedure_C(BigInteger p, BigInteger q)
		{
			BigInteger pSub1 = p.Subtract(BigInteger.One);
			BigInteger pSub1Divq = pSub1.Divide(q);

			for(;;)
			{
				BigInteger d = new BigInteger(p.BitLength, init_random);

				// 1 < d < p-1
				if (d.CompareTo(BigInteger.One) > 0 && d.CompareTo(pSub1) < 0)
				{
					BigInteger a = d.ModPow(pSub1Divq, p);

					if (a.CompareTo(BigInteger.One) != 0)
					{
						return a;
					}
				}
			}
		}