如何解决如何在 Microsoft Schannel 握手期间避免 NCrypt Pin 提示,该证书带有 CNG 密钥,其中 PIN 已经以编程方式提供
我有使用 CNG 密钥与提供商“Microsoft 平台密钥提供程序”创建的客户端证书。 CNG 密钥具有使用 CNG 参数 NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG 进行强密钥身份验证的密码。
我正在尝试将证书用于 TLS 连接,并且在我的 SChannel 客户端实现中,我在握手期间收到 PIN 提示,这是正常的。
为了避免 PIN 提示,我尝试使用以下代码模板将 PIN 设置为证书上下文,如此链接中所述 Windows C++ crypto API: how to disable pin code UI for smart card .我确保使用 CRYPT_ACQUIRE_CACHE_FLAG | CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG 在方法中检索 HCRYPTPROV_OR_NCRYPT_KEY_HANDLE 并通过设置属性 NCRYPT_PIN_PROPERTY 设置 PIN。因此,将来将在设置 PIN 的相同证书上下文中打开相同的 Ncrypt 密钥。
证书上下文提供给传递给 AcquireCredentialsHandle() 的 SCHANNEL_CRED。但是我看到 AcquireCredentialsHandle() 正在从证书上下文中打开 NCrypt 密钥的一个新对象,最后在握手过程中再次询问 PIN。
我的目标是避免在握手期间出现此 PIN 提示,因为我会以编程方式提供它。如果有人能帮我解决这个问题,我将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。