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.