查看這裏找到的代碼http://pastebin.com/TKQJ85Z9請注意,該ID已添加到schannel庫中,但顯然VC頭沒有更新,無論如何,您可以從上面的代碼中看到(請參見pastebin URL ),該ID對應於「ECDHE」,也就是橢圓曲線DH與臨時密鑰交換
[編輯]
真正的問題是,價值是非官方的,只能通過一些互聯網搜索發現,這是爲什麼我發佈了一些示例代碼的鏈接;看,它只是發生在我通過看這個蠢https://twitter.com/ericlaw/status/301083494203928576
無論如何要找到答案,這聽起來像微軟CNG SDK的最新版本包含更新的頭文件和庫添加了一個新的常數「QueryContextAttributes「API調用,即SECPKG_ATTR_CIPHER_INFO這樣的調用返回的結構(見下面的代碼定義)命名,其成員」 szCipherSuite「報告中使用的密碼完整的字符串,例如」 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384「
下面是這樣的電話
/*
// -- http://www.microsoft.com/en-us/download/details.aspx?id=1251
typedef struct _SecPkgContext_CipherInfo
{
DWORD dwVersion;
DWORD dwProtocol;
DWORD dwCipherSuite;
DWORD dwBaseCipherSuite;
WCHAR szCipherSuite[SZ_ALG_MAX_SIZE];
WCHAR szCipher[SZ_ALG_MAX_SIZE];
DWORD dwCipherLen;
DWORD dwCipherBlockLen; // in bytes
WCHAR szHash[SZ_ALG_MAX_SIZE];
DWORD dwHashLen;
WCHAR szExchange[SZ_ALG_MAX_SIZE];
DWORD dwMinExchangeLen;
DWORD dwMaxExchangeLen;
WCHAR szCertificate[SZ_ALG_MAX_SIZE];
DWORD dwKeyType;
} SecPkgContext_CipherInfo, *PSecPkgContext_CipherInfo;
*/
static void DisplayConnectionInfo(CtxtHandle *phContext)
{
SECURITY_STATUS Status;
SecPkgContext_CipherInfo CipherInfo = { SECPKGCONTEXT_CIPHERINFO_V1 };
Status = QueryContextAttributes(phContext, SECPKG_ATTR_CIPHER_INFO, &CipherInfo);
if(Status != SEC_E_OK)
{
printf("Error 0x%x querying cipher info\n", Status);
return;
}
printf("%S\n", CipherInfo.szCipherSuite);
}
進一步的相關信息一些示例代碼,請讓MS CNG SDK,並看一下附帶的幫助和頭。