c++ - 从 BCRYPT_SECRET_HANDLE 将共享 secret 导出为 BYTE 数组

标签 c++ c tls1.2 cng ecdhe

我正在使用下一代加密 API (CNG) 实现 ECDHE。我成功生成了公钥和私钥。对于预共享 key ,我使用 BCryptSecretAgreement API,它返回预共享 key secret 句柄 (BCRYPT_SECRET_HANDLE)。

如何从 BCRYPT_SECRET_HANDLE 中将预共享 key 导出为 BYTE 数组?

最佳答案

从 Windows 10 开始,您可以使用 BCRYPT_KDF_RAW_SECRET 调用 BCryptDeriveKey()

生成的 key 数据是原始 secret 。

注意 1:bcrypt.h 表示此格式适用于“WINBLUE”,如果我理解正确的话,它将是 Windows 8.1,但我收到了在 Windows 8.1 和 Windows Server 2012 R2 上使用此 KDF 类型的 STATUS_NOT_SUPPORTED .但是,这适用于 Windows 10。)

注意 2:我发现使用此 KDF 类型返回的数据是小端(BCrypt 中的其他所有内容都是大端)。因此,要在其他大端世界中使用该值,您需要对数据进行字节翻转。

关于c++ - 从 BCRYPT_SECRET_HANDLE 将共享 secret 导出为 BYTE 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38115602/

相关文章:

logging - Kubernetes-Net/http:提取日志时的TLS握手超时(BareMetal)

c++ - 在cuda中分配结构数组后变量丢失

c++ - QDialog - 更改默认标志以排除?按钮

c++ - 将 Windows 身份验证与 cpprestsdk 一起使用?

c++ - 如何将整数句柄转换为 HWND

java - 如何在Android中将字符串从java代码发送到 native C

c - Linux 系统调用和 errno

c - 了解 atoi() 函数

PHP + curl + TLS 1.2

Mac El Capitan 上的 Apache 2.4.16 : how to make it work with TLS 1. 2