Я использую API WinHttp и WinHttpQueryOption, в частности, чтобы убедиться, что мое соединение использует сильное шифрование https. Для этого я делаю следующее:Попытка устранить двусмысленность в отношении SECURITY_FLAG_STRENGTH_ * flags
DWORD dwHttpSecurityFlags = 0;
DWORD dwcbSzSec = sizeof(dwHttpSecurityFlags);
if(WinHttpQueryOption(hRequest, WINHTTP_OPTION_SECURITY_FLAGS, &dwHttpSecurityFlags, &dwcbSzSec))
{
//Check security -- for connection to employ 128-bit encryption
if((dwHttpSecurityFlags & SECURITY_FLAG_SECURE) &&
(dwHttpSecurityFlags & (SECURITY_FLAG_STRENGTH_WEAK |
SECURITY_FLAG_STRENGTH_MEDIUM |
SECURITY_FLAG_STRENGTH_STRONG)) == SECURITY_FLAG_STRENGTH_STRONG)
{
//Passed security check
}
else
{
//Security check failed
}
}
else
{
//API Failed
}
Но я не очень понятно, как SECURITY_FLAG_STRENGTH_* flags используются - как битовые флаги, или как один только для значений?
Если посмотреть в файле заголовка, они определены как таковые:
#define SECURITY_FLAG_SECURE 0x00000001 // can query only
#define SECURITY_FLAG_STRENGTH_WEAK 0x10000000
#define SECURITY_FLAG_STRENGTH_MEDIUM 0x40000000
#define SECURITY_FLAG_STRENGTH_STRONG 0x20000000
, который намекает на использование побитового, но это не имеет смысла для соединения использовать как 40-разрядные и 128- разрядное сильное шифрование.
Может кто-нибудь прояснить это? Правильно ли мой код?
Что именно вы пытаетесь проверить? Я не понимаю ваш код условия. – torvin
@torvin: 'Проверить безопасность - для подключения к использованию 128-битного шифрования' – c00000fd