Delen via


Ondersteunde protocollen inventariseren

Ondersteunde protocollen en coderingssuites kunnen worden vermeld door aanroepen naar CryptGetProvParam- met PP_ENUMALGS of PP_ENUMALGS_EX. De PP_ENUMALGS_EX waarde werkt als PP_ENUMALGS, maar retourneert een PROV_ENUMALGS_EX structuur die uitgebreidere informatie bevat over de algoritmen die door de provider worden ondersteund.

Zie Protocolvlagmenvoor meer informatie over gedefinieerde protocolvlagmen en hun waarden.

Gezien dat het hCryptProv element de is van een open cryptografische context verkregen met behulp van CryptAcquireContext met de parameter dwProvType ingesteld op PROV_RSA_SCHANNEL, geeft het volgende voorbeeld de namen weer van alle algoritmen die beschikbaar zijn in de 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.

De volgende tabel bevat enkele algoritmen die worden geretourneerd door een typische binnenlandse PROV_RSA_SCHANNEL CSP. U ziet dat SSL2 SHA MACs en SSL2 DES-versleuteling niet worden ondersteund door de CSP in dit voorbeeld.

Algoritme-identificatie Minimale sleutellengte Maximale sleutellengte Protocollen Naam van algoritme
CALG_RSA_KEYX 512 2048 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"

 

Ter voorbereiding op het verzenden van ClientHello- of ServerHello-berichten, inventariseert de Schannel protocolengine de algoritmen en sleutelgrootten die worden ondersteund door de CSP en bouwt een lijst intern met ondersteunde coderingssuites.