// // DiffieHellman.cs: Defines a base class from which all Diffie-Hellman implementations inherit // // Author: // Pieter Philippaerts (Pieter@mentalis.org) // // (C) 2003 The Mentalis.org Team (http://www.mentalis.org/) // using System; using System.Text; using System.Security; using System.Security.Cryptography; using Mono.Math; namespace Org.Mentalis.Security.Cryptography { /// /// Defines a base class from which all Diffie-Hellman implementations inherit. /// internal abstract class DiffieHellman : AsymmetricAlgorithm { /// /// Creates an instance of the default implementation of the algorithm. /// /// A new instance of the default implementation of DiffieHellman. public static new DiffieHellman Create () { return Create ("Mono.Security.Cryptography.DiffieHellman"); } /// /// Creates an instance of the specified implementation of . /// /// The name of the implementation of DiffieHellman to use. /// A new instance of the specified implementation of DiffieHellman. public static new DiffieHellman Create (string algName) { return (DiffieHellman) CryptoConfig.CreateFromName (algName); } /// /// Initializes a new instance. /// public DiffieHellman() {} /// /// When overridden in a derived class, creates the key exchange data. /// /// The key exchange data to be sent to the intended recipient. public abstract byte[] CreateKeyExchange(); /// /// When overridden in a derived class, extracts secret information from the key exchange data. /// /// The key exchange data within which the secret information is hidden. /// The secret information derived from the key exchange data. public abstract byte[] DecryptKeyExchange(byte[] keyEx); /// /// When overridden in a derived class, exports the . /// /// true to include private parameters; otherwise, false. /// The parameters for Diffie-Hellman. public abstract DHParameters ExportParameters (bool includePrivate); /// /// When overridden in a derived class, imports the specified . /// /// The parameters for Diffie-Hellman. public abstract void ImportParameters (DHParameters parameters); #if UNUSED private byte[] GetNamedParam(SecurityElement se, string param) { SecurityElement sep = se.SearchForChildByTag(param); if (sep == null) return null; return Convert.FromBase64String(sep.Text); } #endif /// /// Reconstructs a object from an XML string. /// /// The XML string to use to reconstruct the DiffieHellman object. /// One of the values in the XML string is invalid. public override void FromXmlString (string xmlString) { if (xmlString == null) throw new ArgumentNullException (); throw new NotImplementedException(); } /// /// Creates and returns an XML string representation of the current object. /// /// true to include private parameters; otherwise, false. /// An XML string encoding of the current DiffieHellman object. public override string ToXmlString (bool includePrivateParameters) { throw new NotImplementedException(); } } }