지원되는 프로토콜 열거
지원되는 프로토콜 및 암호 그룹은 PP_ENUMALGS 또는 PP_ENUMALGS_EX CryptGetProvParam 호출하여 나열할 수 있습니다. PP_ENUMALGS_EX 값은 PP_ENUMALGS 같이 작동하지만 공급자가 지원하는 알고리즘에 대한 보다 광범위한 정보를 포함하는 PROV_ENUMALGS_EX 구조를 반환합니다.
정의된 프로토콜 플래그 및 해당 값에 대한 자세한 내용은 프로토콜 플래그참조하세요.
hCryptProv 멤버가 dwProvType 매개 변수가 PROV_RSA_SCHANNEL 설정된 CryptAcquireContext 사용하여 획득한 개방형 암호화 컨텍스트핸들 경우 다음 예제에서는 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에서 SSL2 SHA MAC 및 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에서 지원하는 알고리즘 및 키 크기를 열거하고 지원되는 암호 그룹 내부적으로 목록을 작성합니다.