Predefined Provider Types

A number of provider types have already been defined. The following table lists these provider types, along with the algorithms that each type must support. A CSP of a given type is free to support other algorithms in addition to the ones listed.

Provider Type Key Exchange Signature Encryption Hashing
PROV_RSA_FULL RSA RSA RC2, RC4 MD5, SHA
PROV_RSA_SIG n/a RSA n/a MD5, SHA
PROV_DSS n/a DSS N/A MD5, SHA
PROV_DSS_DH DH DSS DES40 MD5, SHA
PROV_DH_SCHANNEL DH DSS RC2, RC4, DES40 MD5, SHA
PROV_FORTEZZA KEA DSS Skipjack SHA
PROV_MS_EXCHANGE RSA RSA CAST MD5
PROV_RSA_SCHANNEL RSA RSA RC2, RC4, DES40 MD5, SHA
PROV_SSL RSA RSA varies varies

If two or more applications plan to exchange keys and encrypted messages, they should both use CSPs of the same type; however, some CSP types may be partially compatible with others.

Anyone writing a custom CSP can define a new provider type. However, this person is then responsible for distributing the new provider type to the authors of any applications that are to use it.

In the event that the previous table mentioned algorithms you are not familiar with, the following table provides a brief description of each.

Algorithm Description
CAST This is a 64-bit symmetric block cipher developed by C. M. Adams and S. E. Tavares. This algorithm is somewhat similar to DES (Data Encryption Standard).
DES National Institute of Standards and Technology (NIST) Data Encryption Standard. This is a 64-bit symmetric block cipher that has a fixed key length of 56 bits.
DH Diffie-Hellman. This is a public-key algorithm used for secure key exchange. It cannot be used for data encryption.
DSS Digital Signature Standard. This standard uses the Digital Signature Algorithm (DSA), which is a public-key cipher used to generate digital signatures. It cannot be used for data encryption.
KEA Key Exchange Algorithm. This is an improved version of Diffie-Hellman.
MD2 A hashing algorithm that produces a 128-bit hash value.
MD4 A hashing algorithm that produces a 128-bit hash value.
MD5 An improved version of MD4. It also produces a 128-bit hash value.
RC2 RC2 Block Cipher. This is a 64-bit symmetric block cipher.
RC4 RC4 Stream Cipher. This is a symmetric stream cipher.
RSA RSA Public-Key Cipher. This is a popular public-key cipher used for both encryption and signatures.
SHA Secure Hash Algorithm. This is a hashing algorithm that produces a 160-bit hash value.
Skipjack This is the algorithm used by the Clipper and Capstone chips. It is a symmetric block cipher with a fixed key length of 80 bits.