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
无法将证书/密钥添加到Xamarin iOS密钥链中_Xamarin_Xamarin.ios_Keychain - Fatal编程技术网

无法将证书/密钥添加到Xamarin iOS密钥链中

无法将证书/密钥添加到Xamarin iOS密钥链中,xamarin,xamarin.ios,keychain,Xamarin,Xamarin.ios,Keychain,我正在尝试使用SecKeyChain将我的证书和私钥添加到iOS密钥链中。我尝试了SecKeyChain.Add和SecKeyChain.AddIdentity,但第一个返回我SecStatusCode参数,另一个抛出System.InvalidOperationException:Param。有人能帮我解决这个问题吗?从Xamarin网站上很难找到这些方法的详细文档 using(NSData crt = NSData.FromFile("client1.p12")) { X509Cer

我正在尝试使用SecKeyChain将我的证书和私钥添加到iOS密钥链中。我尝试了SecKeyChain.Add和SecKeyChain.AddIdentity,但第一个返回我SecStatusCode参数,另一个抛出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仍显示参数。

问题已解决。事实证明,我们需要在authentications.plist文件中启用keychain。详细步骤: