xamarin - 无法将证书/密钥添加到 Xamarin iOS 钥匙串中
问题描述
我正在尝试使用 SecKeyChain 将我的证书和私钥添加到 iOS 钥匙串中。我尝试了 SecKeyChain.Add() 和 SecKeyChain.AddIdentity(),但第一个返回我 SecStatusCode“Param”,另一个抛出“System.InvalidOperationException:Param”。有人可以帮我解决这个问题吗?从 Xamarin 网站上很难找到这些方法的详细文档。
using(NSData crt = NSData.FromFile("client1.p12"))
{
X509Certificate2 certificate = new X509Certificate2(crt.ToArray(), password);
var identity = SecIdentity.Import(certificate.Export(X509ContentType.Pkcs12, password), password);
var record = new SecRecord(SecKind.Certificate);
record.Label = "client1_crt";
record.SetValueRef(identity.Certificate);
SecStatusCode secStatus = SecKeyChain.Add(record);
SecKeyChain.AddIdentity(identity)
}
我也尝试过这种方式:
using (NSData crt = NSData.FromFile("client1-crt.der")
{
SecStatusCode secStatus = SecKeyChain.Add(new SecRecord(SecKind.Certificate)
{
ApplicationLabel = "client1_crt",
KeySizeInBits = 512,
KeyClass = SecKeyClass.Public,
ValueData = NSData.FromString(crt)
});
}
但是 secStatus 仍然显示“Param”。
解决方案
问题解决了。原来我们需要在 Entitlements.plist 文件中启用钥匙串。详细详细步骤:
https ://forums.xamarin.com/discussion/comment/330146#Comment_330146
推荐阅读
- java - 亚马逊 IAP 未启动购买对话框
- macos - 是否有任何脚本可以在 mac 钥匙串中将受信任的证书标记为 root?
- mysql - 为什么 NoSql 数据库比关系数据库扩展性更好?我应该如何在它们之间进行选择?
- html - 使用 Flexbox,即使在行换行之后,如何将两个项目分开?
- json - 如何创建要解码的 JSON URL 队列
- excel - Mailmerge - 从一个名称由分隔符分隔的 Excel 单元格中挑选照片
- php - 用于提取 css 规则和双花括号的正则表达式
- python - 使用 time.sleep 处理键盘中断异常
- reactjs - MapView.Polyline 在与 expo 的本机反应中引发错误(我正在使用 android 进行测试)
- swift - y 位置需要约束,x 位置需要约束