Я использую следующий код для запроса текущего соединения TLS:
SecPkgContext_ConnectionInfo data;
QueryContextAttributes(&myHandle, SECPKG_ATTR_CONNECTION_INFO, &data);
Возвращает правильную структуру со всеми полями:
typedef struct _SecPkgContext_ConnectionInfo {
DWORD dwProtocol;
ALG_ID aiCipher;
DWORD dwCipherStrength;
ALG_ID aiHash;
DWORD dwHashStrength;
ALG_ID aiExch;
DWORD dwExchStrength;
} SecPkgContext_ConnectionInfo, *PSecPkgContext_ConnectionInfo;
согласно документации MSDN: https://docs.microsoft.com/en-us/windows/win32/api/schannel/ns-schannel-secpkgcontext_connectioninfo
Однако поле aiExch
имеет значение 0xAE06, которое, как мне кажется (из файла wincrypt.h), определено как CALG_ECDH_EPHEM
, но в документации упоминаются только два возможных значения:
CALG_RSA_KEYX 0xA400 // RSA key exchange
CALG_DH_EPHEM 0xAA02 // Diffie-Hellman key exchange.
Теперь вопросы:
- Что означает значение 0xAE06 / CALG_ECDH_EPHEM?
- Какие другие значения может иметь поле
aiExch
?