Esempio n. 1
0
        /// <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);
        }
Esempio n. 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("xmlString");
            }

            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);
                }
            }
        }
Esempio n. 3
0
        public override void FromXmlString(string xmlString)
        {
            if (xmlString == null)
            {
                throw new ArgumentNullException(nameof(xmlString));
            }
            DHParameters parameters = new DHParameters();

            try
            {
                SecurityParser securityParser = new SecurityParser();
                securityParser.LoadXml(xmlString);
                SecurityElement xml = securityParser.ToXml();
                if (xml.Tag != "DHKeyValue")
                {
                    throw new CryptographicException();
                }
                parameters.P = this.GetNamedParam(xml, "P");
                parameters.G = this.GetNamedParam(xml, "G");
                parameters.X = this.GetNamedParam(xml, "X");
                this.ImportParameters(parameters);
            }
            finally
            {
                if (parameters.P != null)
                {
                    Array.Clear((Array)parameters.P, 0, parameters.P.Length);
                }
                if (parameters.G != null)
                {
                    Array.Clear((Array)parameters.G, 0, parameters.G.Length);
                }
                if (parameters.X != null)
                {
                    Array.Clear((Array)parameters.X, 0, parameters.X.Length);
                }
            }
        }
Esempio n. 4
0
        public override void FromXmlString(string xmlString)
        {
            if (xmlString == null)
            {
                throw new ArgumentNullException("xmlString");
            }
            DHParameters parameters = default(DHParameters);

            try
            {
                SecurityParser securityParser = new SecurityParser();
                securityParser.LoadXml(xmlString);
                SecurityElement securityElement = securityParser.ToXml();
                if (securityElement.Tag != "DHKeyValue")
                {
                    throw new CryptographicException();
                }
                parameters.P = GetNamedParam(securityElement, "P");
                parameters.G = GetNamedParam(securityElement, "G");
                parameters.X = GetNamedParam(securityElement, "X");
                ImportParameters(parameters);
            }
            finally
            {
                if (parameters.P != null)
                {
                    Array.Clear(parameters.P, 0, parameters.P.Length);
                }
                if (parameters.G != null)
                {
                    Array.Clear(parameters.G, 0, parameters.G.Length);
                }
                if (parameters.X != null)
                {
                    Array.Clear(parameters.X, 0, parameters.X.Length);
                }
            }
        }
Esempio n. 5
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)
        {
            StringBuilder 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());
        }
Esempio n. 6
0
 public abstract void ImportParameters(DHParameters parameters);
Esempio n. 7
0
		/// <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);
		}
Esempio n. 8
0
		/// <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;
		}
		/// <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 ("xmlString");

			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);
			}
		}
Esempio n. 10
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);
Esempio n. 11
0
		public DHPrivateKey (DHParameters dhpars)
		{
			Parameters = dhpars;
		}