次の方法で共有


サポートされているプロトコルの列挙

サポートされているプロトコルと暗号スイートは、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 でサポートされているアルゴリズムとキー サイズを列挙し、サポートされている暗号スイートの内部的にリストを構築します。