/**

@page SS_Cryptalg_asymmetric_ciphers Asymmetric ciphers
\n

<b>Pre-v.8.0</b>

Unlike symmetric ciphers, asymmetric ciphers are algorithms that involve the use of two keys: a private key and a public 
key. The private key is kept secret, while the public key is made publically available.

This type of algorithm generates the keys as key pairs. This means that if one key in the pair is used to encrypt some 
data, only the other key can decrypt it, and vice versa. If the keys in the key pair are called K1 and K2, and the 
message is M, then:

@image html k1_k1m.gif

Key generation, although varies depending on the specific algorithm, is much slower than for symmetric keys.


<hr>

@section types_of_asymmetric_algorithms_supported Types of asymmetric algorithms supported

The following asymmetric algorithms are supported:

@li @ref RSA -- used for both encryption and digital signatures.

@li DH (Diffie-Hellman) -- used for secure exchange of keys between two parties.

@li @ref DSA (Digital Signature Algorithm) -- used for signing data.


 

<hr>

@section base_classes_and_their_derived_classes Base classes and their derived classes 

\c CAsymmetricCipher is the base class which allows a client to use the supported asymmetric algorithms listed above. The 
diagram below shows this base class and derived classes. For detailed information on each component see the Developer 
Library Cryptography API Reference material.

@image html asymmetric.gif

The \c CAsymmetricCipher base class including its derived classes.

Each class defining an asymmetric cipher has a corresponding key class and may have a signature class.




*/