桌面应用如何使用Microsoft Passport(Windows Hello)对邮件进行签名?

时间:2016-10-25 09:17:32

标签: authentication winapi windows-10 windows-hello

使用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访问它的方法。

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

0 个答案:

没有答案