gpt4 book ai didi

ios - SecPKCS12Import when p12 requires an empty passphrase

转载 作者:IT王子 更新时间:2023-10-29 05:28:02 30 4
gpt4 key购买 nike

我在 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 的问题。

或者也许有办法克服这个问题?

最佳答案

我认为这是 Cocoa SDK 的缺陷,请参阅 rdar://22909471 .

不幸的是,该雷达作为现有雷达的复制品已被关闭。我会向 Apple 提交一份额外的错误报告来提升这个问题。我可以想到两种选择:

  1. 为您的 p12 blob 添加密码。

  2. 将证书转换为 DER 编码。 This answer可能有帮助。

关于ios - SecPKCS12Import when p12 requires an empty passphrase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39392338/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com