Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Obsługiwane protokoły i zestawy szyfrowania można wyświetlać za pomocą wywołań CryptGetProvParam za pomocą PP_ENUMALGS lub PP_ENUMALGS_EX. Wartość PP_ENUMALGS_EX działa jak PP_ENUMALGS, ale zwraca strukturę PROV_ENUMALGS_EX, która zawiera bardziej obszerne informacje na temat algorytmów obsługiwanych przez dostawcę.
Aby uzyskać więcej informacji na temat zdefiniowanych flag protokołu i ich wartości, zobacz Flagi protokołu.
Biorąc pod uwagę, że element członkowski hCryptProv jest dojściem otwartego kontekstu kryptograficznego uzyskanego przy użyciuCryptAcquireContext z dwProvType ustawionym na PROV_RSA_SCHANNEL, w poniższym przykładzie wymieniono nazwy wszystkich algorytmów dostępnych w programie 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.
W poniższej tabeli wymieniono niektóre algorytmy zwracane przez typowy rodzimy CSP PROV_RSA_SCHANNEL. Zwróć uwagę, że w tym przykładzie dostawca usług kryptograficznych nie obsługuje MAC-ów SHA SSL2 ani szyfrowania DES SSL2.
| Identyfikator algorytmu | Minimalna długość klucza | Maksymalna długość klucza | Protokoły | Nazwa algorytmu |
|---|---|---|---|---|
| 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" |
Aby przygotować się do wysyłania komunikatów ClientHello lub ServerHello, aparat protokołu Schannel wylicza algorytmy i rozmiary kluczy obsługiwane przez dostawcę usług kryptograficznych oraz wewnętrznie tworzy listę obsługiwanych pakietów szyfrujących.