Énumération des protocoles pris en charge
Les protocoles et les suites de chiffrement pris en charge peuvent être répertoriés par les appels à CryptGetProvParam avec PP_ENUMALGS ou PP_ENUMALGS_EX. La valeur PP_ENUMALGS_EX fonctionne comme PP_ENUMALGS, mais retourne une structure PROV_ENUMALGS_EX qui contient des informations plus complètes sur les algorithmes pris en charge par le fournisseur.
Pour plus d’informations sur les indicateurs de protocole définis et leurs valeurs, consultez Indicateurs de protocole.
Étant donné que le membre hCryptProv est le handle d’un contexte de chiffrement ouvert acquis à l’aide de CryptAcquireContext avec son paramètre dwProvType défini sur PROV_RSA_SCHANNEL, l’exemple suivant répertorie les noms de tous les algorithmes disponibles dans le csp.
PROV_ENUMALGS_EX EnumAlgs; // Structure to hold information on
// a supported algorithm
DWORD dFlag = CRYPT_FIRST; // Flag indicating that the first
// supported algorithm is to be
// enumerated. Changed to 0 after the
// first call to the function.
cbData = sizeof(PROV_ENUMALGS_EX);
while( CryptGetProvParam(
hCryptProv, // handle to an open cryptographic provider
PP_ENUMALGS_EX,
(BYTE *)&EnumAlgs, // information on the next algorithm
&cbData, // number of bytes in the PROV_ENUMALGS_EX
dFlag)) // flag to indicate whether this is a first or
// subsequent algorithm supported by the
// CSP.
{
printf("Supported Algorithm name %s\n", EnumAlgs.szName);
dFlag = CRYPT_NEXT; // Set to CRYPT_NEXT after the first call,
} // end of while loop. When all of the supported algorithms have
// been enumerated, the function returns FALSE.
Le tableau suivant répertorie certains algorithmes retournés par un fournisseur de solutions Cloud PROV_RSA_SCHANNEL standard. Notez que ni les maC SHA SSL2 ni le chiffrement SSL2 DES ne sont pris en charge par le fournisseur de solutions Cloud dans cet exemple.
Identificateur d’algorithme | Longueur de clé minimale | Longueur maximale de clé | Protocoles | Nom de l'algorithme |
---|---|---|---|---|
CALG_RSA_KEYX | 512 | 2 048 | 0x0007 | « RSA_KEYX » |
CALG_MD5 | 128 | 128 | 0x0007 | « MD5 » |
CALG_SHA | 160 | 160 | 0x0005 | « SHA » |
CALG_RC4 | 40 | 128 | 0x0007 | « RC4 » |
CALG_DES | 56 | 56 | 0x0005 | « DES » |
Pour préparer l’envoi de messages ClientHello ou ServerHello, le moteur de protocole Schannel énumère les algorithmes et les tailles de clé pris en charge par le fournisseur de solutions Cloud et crée une liste en interne des suites de chiffrement prises en charge.