gpt4 book ai didi

cocoa - Security.framework 中的 SecPKCS12Import() 在 OS X 10.6 上失败

转载 作者:行者123 更新时间:2023-12-03 16:09:14 24 4
gpt4 key购买 nike

当我尝试使用SecPKCS12Import()时从 Mac OS X 10.6 提供的安全框架来看,结果代码始终为 errSecUnimplemented ,无论提供的参数如何。

此外,链接器无法找到与 SecImportExport.h 中声明的该函数相关的常量符号(即 kSecImportExportPassphrasekSecImportItemIdentity 等)。

这个库到底发生了什么——该函数是否已实现?为什么链接器可以解析框架中的所有其他符号,但不能解析这些符号?我应该如何将 PKCS12 格式的二进制 blob 转换为 SecIdentityRef 或 SecCertificateRef 和 SecKeyRef 对?

我做错了什么?我确定这是 PEBKAC 问题。 :-)

<小时/>

编辑:我发现我的问题非常不清楚。我知道 Security.framework 已实现,因为我能够毫无问题地使用它提供的其他功能。鉴于此,我相当确定我正确链接到框架,因为如果删除链接,则无法找到任何符号 - 正如预期的那样。当我重新链接框架时,会找到所有符号,但与 SecPKCS12Import() 相关的常量除外。 ,例如kSecImportExportPassphrase , kSecImportItemIdentity

鉴于我无法使用这些符号,我传入了可能不正确的字符串( @"kSecImportItemIdentity" 等),但返回的错误代码是 errSecUnimplemented 。这让我相信也许这个特定的功能还没有实现。

我尝试使用 10.5 SDK,但这当然不起作用。 :-)

<小时/>

编辑:我的导入只是常规的 #import <Security/Security.h> 。为了好玩,我尝试了 #import <Security/SecImportExport.h>也是如此,但这没有改变。也就是说,错误是由链接器发出的,而不是编译器发出的。

我跑了dyldinfo -export Security.framework/Security列出库导出的符号,发现很多new符号,但是 kSecImportExportPassphrase friend 们明显失踪了。这可以解释为什么链接器找不到符号。 SecPKCS12Import 的符号出现在符号表中,我可以毫无问题地调用它,只是功能似乎不存在。

最佳答案

Security.framework 肯定已实现 - 请参阅 Security Reference Update其中记录了 10.6 及之前版本框架中的更改。既然您知道要使用的 header ,我假设您已经查阅了 Security Framework Reference .

您确定正确导入和链接到框架吗? (它位于 /System/Library/Security.framework 中,因此您不必指定路径。)

编译器是否发出警告或错误,指出 SecImportExport.h 中的符号未定义? (如果没有,你怎么知道它们是“已声明但未定义”?)

当您说这在 10.6 上失败时,您是否在早期版本的操作系统上成功尝试过?

<小时/>

编辑:好的,由于您成功使用了 Security.framework 的其他部分,并且您尝试使用的 API 和常量仅为 10.6,因此它看起来不像链接问题。您的导入是什么样子的?您确定正确导入了 SecImportExport.h 吗?这些常量是在 SecPKCS12Import() 函数上方声明的,因此,如果您收到有关常量的警告,您也应该收到有关该函数未定义的警告。

<小时/>

编辑:我已与负责 Security.framework 的 Apple 团队成员确认,此功能目前尚未实现。请在 http://bugreport.apple.com 提交错误以对此进行提示。针对组件安全(新错误),版本X。在您的报告中包含此问题的 URL。抱歉,目前没有更好的答案。

关于cocoa - Security.framework 中的 SecPKCS12Import() 在 OS X 10.6 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1780884/

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