ssl - SSPI Schannel API 返回 0xAE06 或 CALG_ECDH_EPHEM 的未记录值
问题描述
我正在使用以下代码查询当前的 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;
但是,该字段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
还可以具有哪些其他值?
解决方案
从ALG_ID:
CALG_ECDH_EPHEM | 0x0000ae06 | 临时椭圆曲线 Diffie-Hellman 密钥交换算法。
[!Note]
仅通过 Cryptography API: Next Generation 支持此算法Windows Server 2003 和 Windows XP:不支持此算法。
我不能告诉你还会出现什么。
推荐阅读
- javascript - 打字稿 - 面临的问题属性不能分配给基本类型中的相同属性
- javascript - 必须包含大写字母、小写字母、数字、可打印的 ASCI 字符且没有空格的字符串的正则表达式
- java - 活动重新开始时秒表重置
- python - 保存 IPython.core.display.Image 对象
- android - 将模块转换为外部 gradle 依赖项会缩短构建时间吗?
- c# - 除了使用作业调度程序之外,.NET 中是否有调度通知(推送)和任务作业的替代方案?
- php - 更改多维数组中的键
- node.js - TypeError:无法读取属性“集合”
- bash - linux中的感叹号是什么意思?
- three.js - Three.js - 将热图纹理应用于点云