コード例 #1
0
 // initializes the private variables (throws CryptographicException)
 private void Initialize(BigInteger p, BigInteger g, BigInteger x, int secretLen, bool checkInput)
 {
     if (!p.IsProbablePrime() || g <= 0 || g >= p || (x != null && (x <= 0 || x > p - 2)))
         throw new CryptographicException();
     // default is to generate a number as large as the prime this
     // is usually overkill, but it's the most secure thing we can
     // do if the user doesn't specify a desired secret length ...
     if (secretLen == 0)
         secretLen = p.BitCount();
     m_P = p;
     m_G = g;
     if (x == null)
     {
         BigInteger pm1 = m_P - 1;
         for (m_X = BigInteger.GenerateRandom(secretLen);
             m_X >= pm1 || m_X == 0;
             m_X = BigInteger.GenerateRandom(secretLen))
         {
         }
     }
     else
     {
         m_X = x;
     }
 }