サポートされているプロトコルの列挙
サポートされているプロトコルと暗号スイートは、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 によって返されるいくつかのアルゴリズムを示します。 この例では、SSL2 SHA MAC も SSL2 DES 暗号化も CSP でサポートされていないことに注意してください。
アルゴリズム識別子 | キーの最小長 | キーの最大長 | プロトコル | アルゴリズム名 |
---|---|---|---|---|
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 でサポートされているアルゴリズムとキー サイズを列挙し、サポートされている暗号スイートの内部的にリストを構築します。