Xamarin.iOS KeyChain身份不持久

时间:2018-12-14 13:07:33

标签: ios xamarin xamarin.ios

我创建了一个自签名的.pfx文件,当我将其拖到仿真器上时,将出现导入屏幕,我可以单击并在仿真器钥匙串上使用select * from cert;,然后看到导入的证书。

当我在代码中加载此证书并尝试添加它时,我从保存操作中返回了Success,但是在随后尝试访问身份时,它返回了ItemNotFound,进一步那就是,当我在导入后检查KeyChain时,表中也没有证书。

await certStream.CopyToAsync(ms);

var options = NSDictionary.FromObjectsAndKeys(new[]
{
   NSObject.FromObject("CertPassword")
}, new[] 
{
    SecImportExport.Passphrase
});

var result = SecImportExport.ImportPkcs12(ms.ToArray(), options, out 
    NSDictionary[] imports);
if (result != SecStatusCode.Success)
    throw new Exception("Failed importing certificate identity");

var identity = imports[0][SecImportExport.Identity];
certRecord.SetValueRef(new SecIdentity(identity.Handle));
var identityImportResult = SecKeyChain.Add(certRecord);

var savedIdentity = SecKeyChain.QueryAsRecord(new 
    SecRecord(SecKind.Identity)
{
    Label = "ApplicationIdentityCertificate"
}, out SecStatusCode savedResult);

在阅读过程中,我确保有一个与模拟器关联的权利,并且它具有钥匙串共享权利,因为似乎有轶事证据表明这有时还会影响保存到钥匙串的能力。 / p>

1 个答案:

答案 0 :(得分:0)

所以我终于设法解决了这个问题。事实证明,我错过了SecKeyChain类上可用的一个非常简单的方法。

writer = pd.ExcelWriter('output-in-percent.xlsx')
test.to_excel(writer, 'Sheet1')
writer.save()

以上代码段是我需要进行的更改,现在身份已以正确的捆绑包ID存储在钥匙串中,并且我们的应用程序可以加载证书和私钥,无论出于何种原因,都可以通过{{ 1}}方法不适用于身份。