The ALG_ID data type is used to specify algorithm identifiers. Parameters of this data type are passed to most of the functions in the CryptoAPI. This data type is defined in the Wincrypt.h header file as:
typedef unsigned int ALG_ID;
The following table lists the algorithm identifiers that are currently defined. Authors of custom CSPs can define new values. Also, the ALG_ID used by custom CSPs for the key specs AT_KEYEXCHANGE and AT_SIGNATURE are provider dependent. Current mappings follow the table.
Constant | Description |
---|---|
CALG_DSS_SIGN | The digital signature algorithm |
CALG_HMAC† | HMAC keyed hash algorithm |
CALG_MD2† | MD2 hashing algorithm |
CALG_MD4 | MD4 hashing algorithm |
CALG_MD5† | MD5 hashing algorithm |
CALG_SHA† | SHA hashing algorithm |
CALG_SHA1† | Same as CALG_SHA |
CALG_MAC† | MAC keyed hash algorithm |
CALG_SSL3_SHAMD5 | SSL3 client authentication |
CALG_RSA_SIGN† | RSA public-key signature algorithm |
CALG_DSS_SIGN | DSA public-key signature algorithm |
CALG_RSA_KEYX† | RSA public-key key exchange algorithm |
CALG_DES | DES encryption algorithm |
CALG_RC2† | RC2 block encryption algorithm |
CALG_RC4† | RC4 stream encryption algorithm |
CALG_SEAL | SEAL encryption algorithm |
CALG_DH_SF | Diffie-Hellman store and forward key exchange algorithm |
CALG_DH_EPHEM | Diffie-Hellman ephemeral key exchange algorithm |
CALG_AGREEDKEY_ANY | Temporary algorithm identifier for handles of Diffie-Hellman agreed keys |
CALG_KEA_KEYX | KEA key exchange algorithm (FORTEZZA) |
CALG_SKIPJACK | Skipjack block encryption algorithm (FORTEZZA) |
CALG_TEK | TEK (FORTEZZA) |
† Algorithm supported by the Microsoft Base Cryptographic Provider.
For the Microsoft Base Cryptographic Provider and the Microsoft Enhanced Cryptographic Provider, the ALG_ID used for the key specs AT_KEYEXCHANGE and AT_SIGNATURE are as follows:
CALG_RSA_KEYX is used for AT_KEYEXCHANGE
CALG_RSA_SIGN is used for AT_SIGNATURE
For the Microsoft DSS Cryptographic Provider and the Diffie-Hellman Provider, the ALG_ID used for the key specs AT_KEYEXCHANGE and AT_SIGNATURE are as follows:
CALG_DH_SF is used for AT_KEYEXCHANGE
CALG_DSS_SIGN is used for AT_SIGNATURE
CRYPT_ALGORITHM_IDENTIFIER, CryptEncodeObject/CryptDecodeObject Functions,