Represents the parameters of the Diffie-Hellman algorithm.
        /// <summary>
        /// Imports the specified <see cref="DHParameters"/>.
        /// </summary>
        /// <param name="parameters">The parameters for <see cref="DiffieHellman"/>.</param>
        /// <exception cref="CryptographicException"><paramref name="P"/> or <paramref name="G"/> is a null reference (<b>Nothing</b> in Visual Basic) -or- <paramref name="P"/> is not a prime number.</exception>
        public override void ImportParameters(DHParameters parameters)
        {
            if (parameters.P == null)
            {
                throw new CryptographicException("Missing P value.");
            }
            if (parameters.G == null)
            {
                throw new CryptographicException("Missing G value.");
            }

            BigInteger p = new BigInteger(parameters.P), g = new BigInteger(parameters.G), x = null;

            if (parameters.X != null)
            {
                x = new BigInteger(parameters.X);
            }
            Initialize(p, g, x, 0, true);
        }
示例#2
0
        /// <summary>
        /// Reconstructs a <see cref="DiffieHellman"/> object from an XML string.
        /// </summary>
        /// <param name="xmlString">The XML string to use to reconstruct the DiffieHellman object.</param>
        /// <exception cref="CryptographicException">One of the values in the XML string is invalid.</exception>
        public override void FromXmlString(string xmlString)
        {
            if (xmlString == null)
            {
                throw new ArgumentNullException();
            }

            DHParameters dhParams = new DHParameters();

            try
            {
                SecurityParser sp = new SecurityParser();
                sp.LoadXml(xmlString);
                SecurityElement se = sp.ToXml();
                if (se.Tag != "DHKeyValue")
                {
                    throw new CryptographicException();
                }

                dhParams.P = GetNamedParam(se, "P");
                dhParams.G = GetNamedParam(se, "G");
                dhParams.X = GetNamedParam(se, "X");
                ImportParameters(dhParams);
            }
            finally
            {
                if (dhParams.P != null)
                {
                    Array.Clear(dhParams.P, 0, dhParams.P.Length);
                }
                if (dhParams.G != null)
                {
                    Array.Clear(dhParams.G, 0, dhParams.G.Length);
                }
                if (dhParams.X != null)
                {
                    Array.Clear(dhParams.X, 0, dhParams.X.Length);
                }
            }
        }
示例#3
0
        /// <summary>
        /// Creates and returns an XML string representation of the current <see cref="DiffieHellman"/> object.
        /// </summary>
        /// <param name="includePrivateParameters"><b>true</b> to include private parameters; otherwise, <b>false</b>.</param>
        /// <returns>An XML string encoding of the current DiffieHellman object.</returns>
        public override string ToXmlString(bool includePrivateParameters)
        {
            var          sb       = new StringBuilder();
            DHParameters dhParams = ExportParameters(includePrivateParameters);

            try
            {
                sb.Append("<DHKeyValue>");

                sb.Append("<P>");
                sb.Append(Convert.ToBase64String(dhParams.P));
                sb.Append("</P>");

                sb.Append("<G>");
                sb.Append(Convert.ToBase64String(dhParams.G));
                sb.Append("</G>");

                if (includePrivateParameters)
                {
                    sb.Append("<X>");
                    sb.Append(Convert.ToBase64String(dhParams.X));
                    sb.Append("</X>");
                }

                sb.Append("</DHKeyValue>");
            }
            finally
            {
                Array.Clear(dhParams.P, 0, dhParams.P.Length);
                Array.Clear(dhParams.G, 0, dhParams.G.Length);
                if (dhParams.X != null)
                {
                    Array.Clear(dhParams.X, 0, dhParams.X.Length);
                }
            }
            return(sb.ToString());
        }
		/// <summary>
		/// Reconstructs a <see cref="DiffieHellman"/> object from an XML string.
		/// </summary>
		/// <param name="xmlString">The XML string to use to reconstruct the DiffieHellman object.</param>
		/// <exception cref="CryptographicException">One of the values in the XML string is invalid.</exception>
		public override void FromXmlString (string xmlString) {
			if (xmlString == null)
				throw new ArgumentNullException ();

			DHParameters dhParams = new DHParameters();
			try {
				SecurityParser sp = new SecurityParser();
				sp.LoadXml(xmlString);
				SecurityElement se = sp.ToXml();
				if (se.Tag != "DHKeyValue")
					throw new CryptographicException();
				dhParams.P = GetNamedParam(se, "P");
				dhParams.G = GetNamedParam(se, "G");
				dhParams.X = GetNamedParam(se, "X");
				ImportParameters(dhParams);
			} finally {
				if (dhParams.P != null)
					Array.Clear(dhParams.P, 0, dhParams.P.Length);
				if (dhParams.G != null)
					Array.Clear(dhParams.G, 0, dhParams.G.Length);
				if (dhParams.X != null)
					Array.Clear(dhParams.X, 0, dhParams.X.Length);
			}
		}
示例#5
0
 /// <summary>
 /// When overridden in a derived class, imports the specified <see cref="DHParameters"/>.
 /// </summary>
 /// <param name="parameters">The parameters for Diffie-Hellman.</param>
 public abstract void ImportParameters(DHParameters parameters);
        /// <summary>
        /// Imports the specified <see cref="DHParameters"/>.
        /// </summary>
        /// <param name="parameters">The parameters for <see cref="DiffieHellman"/>.</param>
        /// <exception cref="CryptographicException"><paramref name="P"/> or <paramref name="G"/> is a null reference (<b>Nothing</b> in Visual Basic) -or- <paramref name="P"/> is not a prime number.</exception>
        public override void ImportParameters(DHParameters parameters)
        {
            if (parameters.P == null)
                throw new CryptographicException("Missing P value.");
            if (parameters.G == null)
                throw new CryptographicException("Missing G value.");

            BigInteger p = new BigInteger(parameters.P), g = new BigInteger(parameters.G), x = null;
            if (parameters.X != null)
            {
                x = new BigInteger(parameters.X);
            }
            Initialize(p, g, x, 0, true);
        }
 /// <summary>
 /// Exports the <see cref="DHParameters"/>.
 /// </summary>
 /// <param name="includePrivateParameters"><b>true</b> to include private parameters; otherwise, <b>false</b>.</param>
 /// <returns>The parameters for <see cref="DiffieHellman"/>.</returns>
 public override DHParameters ExportParameters(bool includePrivateParameters)
 {
     DHParameters ret = new DHParameters();
     ret.P = m_P.getBytes();
     ret.G = m_G.getBytes();
     if (includePrivateParameters)
     {
         ret.X = m_X.getBytes();
     }
     return ret;
 }
示例#8
0
 /// <summary>
 /// When overridden in a derived class, imports the specified <see cref="DHParameters"/>.
 /// </summary>
 /// <param name="parameters">The parameters for Diffie-Hellman.</param>
 public abstract void ImportParameters(DHParameters parameters);
示例#9
0
 public DHPrivateKey(DHParameters dhPrivateParams)
 {
     _key = dhPrivateParams;
 }