Partager via


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