Auflisten unterstützter Protokolle

Unterstützte Protokolle und Verschlüsselungssammlungen können durch Aufrufe von CryptGetProvParam mit PP _ ENUMALGS oder PP _ ENUMALGS EX aufgelistet _ werden. Der PP _ ENUMALGS _ EX-Wert funktioniert wie PP _ ENUMALGS, gibt jedoch eine PROV _ ENUMALGS _ EX-Struktur zurück, die umfangreichere Informationen zu den vom Anbieter unterstützten Algorithmen enthält.

Weitere Informationen zu definierten Protokollflags und deren Werten finden Sie unter Protokollflags.

Da das hCryptProv-Element das Handle eines offenen kryptografischen Kontexts ist, der mithilfe von CryptAcquireContext abgerufen wurde und dessen dwProvType-Parameter auf PROV RSA SCHANNEL festgelegt _ _ ist, werden im folgenden Beispiel die Namen aller im CSP verfügbaren Algorithmen aufgelistet.

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.

In der folgenden Tabelle sind einige Algorithmen aufgeführt, die von einem typischen nationalen PROV _ RSA _ SCHANNEL CSP zurückgegeben werden. Beachten Sie, dass weder SSL2-SHA-MACs noch SSL2-DES-Verschlüsselung vom CSP in diesem Beispiel unterstützt werden.

Algorithmusbezeichner Minimale Schlüssellänge Maximale Schlüssellänge Protokolle Algorithmusname
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"

Um das Senden von ClientHello- oder ServerHello-Nachrichten vorzubereiten, listet die Schannel-Protokoll-Engine die vom CSP unterstützten Algorithmen und Schlüsselgrößen auf und erstellt intern eine Liste der unterstützten Verschlüsselungssammlungen.