ALG_ID
This data type specifies algorithm identifiers. Most of the functions in the CryptoAPI pass parameters of this data type that are defined in the Wincrypt.h header file as follows.
Authors of custom cryptographic service providers (CSPs) can define algorithm identifiers. The identifiers used by custom CSPs for the key specifications AT_KEYEXCHANGE and AT_SIGNATURE are providerdependent. The following table shows the algorithm identifiers that are currently defined.
Constant  Description 

CALG_AES_128 
128bit AES block encryption algorithm. 
CALG_AES_192 
192bit AES block encryption algorithm. 
CALG_AES_256 
256bit AES block encryption algorithm. 
CALG_AGREEDKEY_ANY 
Temporary algorithm identifier for handles of DiffieHellman–agreed keys. 
CALG_CYLINK_MEK* 
An algorithm to create a 40bit DES key that has parity bits and zeroed key bits to make its key length 64 bits. 
CALG_DES 
DES encryption algorithm. 
CALG_DESX 
DES encryption algorithm. 
CALG_3DES 
Triple DES encryption algorithm. 
CALG_3DES_112 
Twokey triple DES encryption algorithm, with effective key length equal to 112 bits. 
CALG_DH_EPHEM 
DiffieHellman ephemeral key exchange algorithm. 
CALG_DH_SF 
DiffieHellman store and forward key exchange algorithm. 
CALG_DSS_SIGN 
DSA publickey signature algorithm. 
CALG_HMAC* 
HMAC keyedhash algorithm. 
CALG_KEA_KEYX 
KEA key exchange algorithm (FORTEZZA). 
CALG_MAC* 
MAC keyedhash algorithm. 
CALG_MD2* 
MD2 hashing algorithm. 
CALG_MD4 
MD4 hashing algorithm. 
CALG_MD5* 
MD5 Hashing algorithm. 
CALG_RC2* 
RC2 block encryption algorithm. 
CALG_RC4* 
RC4 stream encryption algorithm. 
CALG_RC5 
RC5 block encryption algorithm. 
CALG_RSA_KEYX* 
RSA publickey key exchange algorithm. 
CALG_RSA_SIGN* 
RSA publickey signature algorithm. 
CALG_SEAL 
SEAL encryption algorithm. 
CALG_SHA* 
SHA hashing algorithm. 
CALG_SHA1* 
Same as CALG_SHA, except that it generates a 160bit message digest or hash. 
CALG_SHA_256 
Generates a 256bit message digest or hash. 
CALG_SHA_384 
Generates a 384bit message digest or hash. 
CALG_SHA_512 
Generates a 512bit message digest or hash. 
CALG_SKIPJACK 
Skipjack block encryption algorithm (FORTEZZA). 
CALG_SSL3_SHAMD5 
SSL3 client authentication algorithm. 
CALG_TEK 
TEK algorithm (FORTEZZA). 
CALG_SSL3_SHAMD5 
Used by the schannel.dll operations system. This identifier should not be used by applications. 
CALG_SSL3_MASTER 
Used by the schannel.dll operations system. This identifier should not be used by applications. 
CALG_SCHANNEL_MASTER_HASH 
Used by the schannel.dll operations system. This identifier should not be used by applications. 
CALG_SCHANNEL_MAC_KEY 
Used by the schannel.dll operations system. This identifier should not be used by applications. 
CALG_SCHANNEL_ENC_KEY 
Used by the schannel.dll operations system. This identifier should not be used by applications. 
CALG_PCT1_MASTER 
Used by the schannel.dll operations system. This identifier should not be used by applications. 
CALG_SSL2_MASTER 
Used by the schannel.dll operations system. This identifier should not be used by applications. 
CALG_TLS1_MASTER 
Used by the schannel.dll operations system. This identifier should not be used by applications. 
CALG_TLS1PRF 
Used by the schannel.dll operations system. This identifier should not be used by applications. 
* Algorithms supported by the Microsoft Base Cryptographic Provider.
For the Microsoft Base Cryptographic Provider and the Microsoft Enhanced Cryptographic Provider, the following identifiers are used for the key specifications AT_KEYEXCHANGE and AT_SIGNATURE:

CALG_RSA_KEYX for AT_KEYEXCHANGE

CALG_RSA_SIGN for AT_SIGNATURE
For the Microsoft DSS Cryptographic Provider and the DiffieHellman Provider, the following identifiers are used for the key specifications AT_KEYEXCHANGE and AT_SIGNATURE:

CALG_DH_SF for AT_KEYEXCHANGE

CALG_DSS_SIGN for AT_SIGNATURE