1

使用 Microsoft 密码 (Windows Hello),用户在为其本地帐户设置 PIN 时会获得一个公钥/私钥对。此密钥对存储在计算机的 TPM 上。

您可以通过要求开始菜单“设置 PIN 登录”来为您的帐户创建证书。

以下文章介绍了 UWP(“Metro”)应用程序中使用的 API:https ://msdn.microsoft.com/en-us/windows/uwp/security/microsoft-passport

有用于获取用户公钥和签署消息的 API:

var openKeyResult = await KeyCredentialManager.OpenAsync(AccountId);

if (openKeyResult.Status == KeyCredentialStatus.Success)
{
    var userKey = openKeyResult.Credential;
    var publicKey = userKey.RetrievePublicKey();
    var signResult = await userKey.RequestSignAsync(message);

    if (signResult.Status == KeyCredentialStatus.Success)
    {
        return signResult.Result;
    }
    else if (signResult.Status == KeyCredentialStatus.UserPrefersPassword)
    {

    }
}

如何使用桌面应用程序 (Win32) 获取公钥并签署消息?

我已经检查使用certmgr.msc:遗憾的是,Microsoft Passport 证书没有出现在用户的“个人”证书存储中,所以我看不到使用我的应用程序已经支持的 CryptoAPI/CNG 访问它的方法。

理想情况下,我想做一个独立的签名。了解是否可以将 Passport 证书与 SChannel 一起用作客户端证书会很有趣/有用。

4

0 回答 0