Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поддерживаемые протоколы и наборы шифров можно перечислить с помощью вызова CryptGetProvParam с PP_ENUMALGS или PP_ENUMALGS_EX. Значение PP_ENUMALGS_EX работает так, как PP_ENUMALGS, но возвращает структуру PROV_ENUMALGS_EX, содержащую более подробную информацию о алгоритмах, поддерживаемых поставщиком.
Дополнительные сведения об определённых флагах протокола и их значениях см. в разделе: Protocol Flags.
Учитывая, что элемент hCryptProv является дескриптором открытого контекста шифрования , приобретенным с помощью CryptAcquireContext с параметром dwProv Type PROV_RSA_SCHANNEL, в следующем примере перечислены имена всех алгоритмов, доступных в 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.
В следующей таблице перечислены некоторые алгоритмы, возвращаемые типичным внутренним PROV_RSA_SCHANNEL CSP. Обратите внимание, что в этом примере CSP не поддерживает ни MAC SSL2 SHA, ни шифрование SSL2 DES.
| Идентификатор алгоритма | Минимальная длина ключа | Максимальная длина ключа | Протоколы | Имя алгоритма |
|---|---|---|---|---|
| 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" |
Чтобы подготовиться к отправке сообщений ClientHello или ServerHello, подсистема протокола Schannel перечисляет алгоритмы и размеры ключей, поддерживаемые CSP, и создает список внутренних поддерживаемых наборов шифров.