SSPI Schannel API возвращает недокументированное значение 0xAE06 или CALG_ECDH_EPHEM - PullRequest
0 голосов
/ 15 апреля 2020

Я использую следующий код для запроса текущего соединения 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.

Теперь вопросы:

  1. Что означает значение 0xAE06 / CALG_ECDH_EPHEM?
  2. Какие другие значения может иметь поле aiExch?

1 Ответ

1 голос
/ 15 апреля 2020

С ALG_ID :

CALG_ECDH_EPHEM | 0x0000ae06 | Эфемерный эллипс c кривая Дифф ie - алгоритм обмена ключами Хеллмана.

[! Примечание]
Этот алгоритм поддерживается только через API шифрования: следующее поколение

Windows Server 2003 и Windows XP: этот алгоритм не поддерживается .

Не могу сказать, что еще может появиться.

...