Mar*_*k R 12 security macos objective-c ios swift
我在p12中有一个私钥,其密码设置为空.现在,当我尝试SecPKCS12Import在OS X或iOS上使用导入此私钥时,我遇到了错误(相当于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);
Run Code Online (Sandbox Code Playgroud)
密码为空时我尝试了不同的组合:
optionsDictionary = NULLoptionsDictionary 没有价值观optionsDictionary与@""关键值kSecImportExportPassphrase它始终securityError不等于errSecSuccess.分别:
securityError=-25260 "导入/导出需要密码短语."securityError=-25260 "导入/导出需要密码短语."securityError=-25264 "PKCS12导入期间MAC验证失败(密码错误?)"现在我很好,它不起作用.我认为p12没有密码是一种安全威胁,但如果这就是它无法工作的原因,我需要一些文件来说明这一点.到目前为止,我已经试图谷歌没有运气了.
我也尝试将此文件导入OS X Keychain应用程序,结果相同(密码无效),所以这一定是问题SecPKCS12Import.
或者也许有办法克服这个问题?
我相信这是 Cocoa SDK 的一个缺陷,请参阅rdar://22909471。
不幸的是,该雷达作为现有雷达的骗局已被关闭。我会向 Apple 提交一份额外的错误报告来解决这个问题。我可以想到两种选择:
为您的 p12 blob 添加密码。
将证书转换为 DER 编码。 这个答案可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
831 次 |
| 最近记录: |