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. |