【发布时间】:2017-01-16 11:15:32
【问题描述】:
我在 p12 中有一个私钥,其中设置了空密码。
现在,当我尝试在 OS X 或 iOS 上使用 SecPKCS12Import 导入此私钥时,出现错误(在 Windows 上等效)。
- (NSError *)setClientIdentityCertificateFromPKCS12Data: (NSData *)PKCS12Data withPassword: (NSString *)password
{
OSStatus securityError = errSecSuccess;
const void *keys[] = { kSecImportExportPassphrase };
const void *values[] = { (__bridge CFStringRef)password };
CFDictionaryRef optionsDictionary = NULL;
optionsDictionary = CFDictionaryCreate(
NULL, keys,
values, (password?1:0),
NULL, NULL);
CFArrayRef items = NULL;
securityError = SecPKCS12Import((__bridge CFDataRef)PKCS12Data,
optionsDictionary,
&items);
密码为空时我尝试了不同的组合:
optionsDictionary = NULL-
optionsDictionary没有值 -
optionsDictionary和@""键值kSecImportExportPassphrase
它总是以securityError 结尾,不等于errSecSuccess。分别:
-
securityError=-25260"导入/导出需要密码。" -
securityError=-25260"导入/导出需要密码。" -
securityError=-25264“PKCS12导入时MAC验证失败(密码错误?)”
现在我很好,它不起作用。我认为没有密码的p12 是一种安全威胁,但如果这是它不起作用的原因,我需要一些说明这一点的文档。
到目前为止,我已经尝试过谷歌,但没有运气。
我也尝试将此文件导入 OS X Keychain 应用程序,结果相同(密码无效),所以这肯定是 SecPKCS12Import 的问题。
或者也许有办法克服这个问题?
【问题讨论】:
标签: ios objective-c swift macos security