SecPKCS12Import 上的 documentation 声明如下:
这意味着“items”参数(该函数的第三个参数)中返回的项目不应自动添加到钥匙串(keychain)中。但是,我发现使用该功能时,这些项目会自动添加到钥匙串(keychain)中。如果我尝试使用 SecItemAdd 添加它们,我会得到 errSecDuplicateItem。
这是一个错误还是应该这样?为什么会自动添加项目?
下面是一些示例代码:
NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys:@"password", (id)kSecImportExportPassphrase, nil];
CFArrayRef items_ = NULL;
OSStatus ret = SecPKCS12Import((CFDataRef)pkcs12data /* get this from somewhere … */, (CFDictionaryRef)options, &items_);
如果您使用该代码然后打开钥匙串(keychain)访问,您将看到证书和私钥已添加到钥匙串(keychain)中。
问候,
大卫。
最佳答案
似乎 Apple 的文档对于该链接 (SecPKCS12Import) 可能已过时,因为此链接 https://developer.apple.com/library/ios/qa/qa1745/_index.html 提到“读取 PKCS#12 格式的 blob,然后使用 SecPKCS12Import 函数将 blob 的内容导入应用程序的钥匙串(keychain)。 ..”
按照文档修订日期,QA1745 比证书、 key 和信任服务引用更新。
关于ios - 为什么 SecPKCS12Import 会自动将 SecIdentities 添加到 Keychain?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33181127/