Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 桌面应用程序如何使用Microsoft Passport(Windows Hello)签署邮件?_Authentication_Winapi_Windows 10_Windows Hello - Fatal编程技术网

Authentication 桌面应用程序如何使用Microsoft Passport(Windows Hello)签署邮件?

Authentication 桌面应用程序如何使用Microsoft Passport(Windows Hello)签署邮件?,authentication,winapi,windows-10,windows-hello,Authentication,Winapi,Windows 10,Windows Hello,使用Microsoft密码(Windows Hello),当用户为其本地帐户设置PIN时,将为其提供一个公钥/私钥对。此密钥对存储在计算机的TPM上 您可以通过要求“开始”菜单“设置PIN登录”来为您的帐户创建证书 以下文章介绍了UWP(“Metro”)应用程序中使用的API: 有用于获取用户公钥和对消息签名的API: var openKeyResult = await KeyCredentialManager.OpenAsync(AccountId); if (openKeyResult.S

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

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

以下文章介绍了UWP(“Metro”)应用程序中使用的API:

有用于获取用户公钥和对消息签名的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证书用作客户端证书将非常有趣/有用。

桌面Win32应用程序是否可以使用
Windows.Security
命名空间?在这种情况下,您可以简单地使用UWP类型(使用C++/CX、或)。啊,有趣的是,异步回调可能很棘手,我将对此进行研究。同时,我还注意到,我的系统上有一个CryptoAPI KSP,名为“Microsoft Passport密钥存储提供程序”,因此我将查看是否可以通过显式选择KSP来访问CNG密钥句柄。上述任何一种都完全支持异步操作,尽管使用C++/WinRT仍然有点繁琐(将在将来的更新中解决;请参阅)。对此有任何更新吗?我找到了允许.NET桌面应用程序使用UWP API的NuGet()。不幸的是,该类似乎不在中。您是否以某种方式使其工作?我从未使其工作:(桌面Win32应用程序是否可以使用
Windows.Security
命名空间?在这种情况下,您可以简单地使用UWP类型(与C++/CX、或一起)。啊,有趣的是,异步回调可能很棘手,我将对此进行研究。同时,我还注意到我的系统上有一个名为“Microsoft Passport Key Storage Provider”,因此我将查看是否可以通过显式选择KSP来访问CNG密钥句柄。上述任何一种方法都完全支持异步操作,尽管使用C++/WinRT仍然有点乏味(将在将来的更新中解决;请参阅)。对此有任何更新吗?我找到了NuGet()这将允许.NET桌面应用程序使用UWP API。不幸的是,该类似乎不在中。您是否以某种方式使其工作?我从未使其工作:(