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.