public abstract class AsymmetricAlgorithm : IDisposable { // Protected Constructors protected AsymmetricAlgorithm( ); // Protected Instance Fields protected int KeySizeValue; protected KeySizes[ ] LegalKeySizesValue; // Public Instance Properties public abstract string KeyExchangeAlgorithm{get; } public virtual int KeySize{set; get; } public virtual KeySizes[ ] LegalKeySizes{get; } public abstract string SignatureAlgorithm{get; } // Public Static Methods public static AsymmetricAlgorithm Create( ); public static AsymmetricAlgorithm Create(string algName); // Public Instance Methods public void Clear( ); public abstract void FromXmlString(string xmlString); public abstract string ToXmlString(bool includePrivateParameters); // Protected Instance Methods protected abstract void Dispose(bool disposing); }
An asymmetric algorithm is one where the sender and the recipient do not share the same knowledge (i.e. only one party knows the secret key). All asymmetric algorithm implementation classes inherit from this abstract class. Implementations are instantiated using the Create( ) method, which accepts the name of an implementation as a String argument; the default implementation class is created if no name is specified; the system administrator determines the default class.
The LegalKeySizes property returns an array of the KeySizes class, specifing the set of key lengths supported by an implementation class. The KeySize property gets or sets the key length. The FromXmlString( ) and ToXmlString( ) methods import and export key parameters as XML strings.
Differences in the design of asymmetric algorithms mean that there is little common functionality embodied in this type; individual algorithm classes, such as RSA and DSA, define members for data encryption and digital signatures.