Bagikan melalui


Menghitung Protokol yang Didukung

Protokol dan cipher suite yang didukung dapat dicantumkan dengan panggilan ke CryptGetProvParam dengan PP_ENUMALGS atau PP_ENUMALGS_EX. Nilai PP_ENUMALGS_EX berfungsi seperti PP_ENUMALGS tetapi mengembalikan struktur PROV_ENUMALGS_EX yang menyimpan informasi yang lebih luas tentang algoritma yang didukung oleh penyedia.

Untuk informasi selengkapnya tentang bendera protokol yang ditentukan dan nilainya, lihat Bendera Protokol.

Mengingat bahwa anggota hCryptProv adalah handel dari konteks kriptografi terbuka yang diperoleh dengan menggunakan CryptAcquireContext dengan parameter dwProvType-nya diatur ke PROV_RSA_SCHANNEL, contoh berikut mencantumkan nama semua algoritma yang tersedia di 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.

Tabel berikut mencantumkan beberapa algoritma yang dikembalikan oleh CSP PROV_RSA_SCHANNEL domestik biasa. Perhatikan bahwa tidak ada MAC SSL2 SHA atau enkripsi DES SSL2 yang didukung oleh CSP dalam contoh ini.

Pengidentifikasi algoritma Panjang kunci minimum Panjang kunci maksimum Protokol Nama algoritma
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"

 

Untuk bersiap mengirim pesan ClientHello atau ServerHello, mesin protokol Schannel menghitung algoritma dan ukuran kunci yang didukung oleh CSP dan membangun daftar suite sandi yang didukung secara internal.