Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
C#Xamarin;私钥-存储和检索_Xamarin_Private Key_X509certificate2 - Fatal编程技术网

C#Xamarin;私钥-存储和检索

C#Xamarin;私钥-存储和检索,xamarin,private-key,x509certificate2,Xamarin,Private Key,X509certificate2,重新启动应用程序后,我在从X509存储检索私钥时遇到问题 我的工作对象是: 我的过程: 1创建存储 Storage = new X509Store(StoreName.TrustedPublisher, StoreLocation.CurrentUser); Storage.Open(OpenFlags.ReadWrite); Storage.Add(Cert); var certs = Storage.Certificates; foreach (var cert in cert

重新启动应用程序后,我在从
X509存储
检索私钥时遇到问题

我的工作对象是:

我的过程:

1创建存储

Storage = new X509Store(StoreName.TrustedPublisher, 
StoreLocation.CurrentUser);
Storage.Open(OpenFlags.ReadWrite);
Storage.Add(Cert);
var certs = Storage.Certificates;
foreach (var cert in certs)
{
   CertsView.Append("Name: " + cert.Subject + "; Has PK: "+ cert.HasPrivateKey +  "\n");
}
2使用私钥创建证书

Cert = new X509Certificate2(
    Convert.FromBase64String("...my certificate..."),
    "",
    X509KeyStorageFlags.UserKeySet | 
    X509KeyStorageFlags.PersistKeySet |
    X509KeyStorageFlags.Exportable);
var privateKey = new RSACryptoServiceProvider();
privateKey.FromXmlString("...my private key relevant to certificate...");
privateKey.PersistKeyInCsp = true;
Cert.PrivateKey = privateKey;
3将证书插入存储器

Storage = new X509Store(StoreName.TrustedPublisher, 
StoreLocation.CurrentUser);
Storage.Open(OpenFlags.ReadWrite);
Storage.Add(Cert);
var certs = Storage.Certificates;
foreach (var cert in certs)
{
   CertsView.Append("Name: " + cert.Subject + "; Has PK: "+ cert.HasPrivateKey +  "\n");
}
4验证带有私钥的证书是否在存储器中

Storage = new X509Store(StoreName.TrustedPublisher, 
StoreLocation.CurrentUser);
Storage.Open(OpenFlags.ReadWrite);
Storage.Add(Cert);
var certs = Storage.Certificates;
foreach (var cert in certs)
{
   CertsView.Append("Name: " + cert.Subject + "; Has PK: "+ cert.HasPrivateKey +  "\n");
}
5重新启动应用程序并再次验证

我能够检索已插入的证书。 但是,此时证书没有私钥


我遗漏了什么?

你解决了这个问题吗?我也在同一个地方。。。