【发布时间】:2016-04-26 06:37:39
【问题描述】:
我想在 OS-X 10.11 下解析 asn1 格式。
不幸的是,Apple 不再将 openssl 作为其 SDK 的一部分。相反,我建议在以下标头中使用一个内部包:
SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Security.framework/Versions/A/Headers/SecAsn1Coder.h
不幸的是,我解析 asn1 文件并提取给定字段所需的 API 似乎与原始的 openssl API 大不相同。
在 openssl 中,include/openssl/asn1.h 中定义的函数“asn1parse”获取一个 DER 格式的文件,对其进行解码并返回代表 asn1 树的输出文本。
在 Apple 实施中,我发现“SecAsn1Decode”可能提供相同的功能。文档说输出参数(void *dest)是指向“由调用者分配的特定于模板的结构”的指针,但我不明白我应该期待什么结构以及应该分配多少内存?
也许你可以帮助我了解如何使用它。欢迎任何参考。
【问题讨论】:
-
Apple's Developer Tech Support recommends that if you want OpenSSL functionality,您构建自己的库版本并将其包含在您的应用程序中。这就是我这些天在自己的应用程序中所做的事情。
-
@MichaelDautermann,感谢您指出这一点,但我已经在“CommonCrypto/CommonCrypto.h”中找到了替代 openssl 的 Apple 替代加密框架,您可以在其中进行各种 sha/hash 计算,并且在为了完全结束我对 SDK 外部源的依赖,我需要 asn1 解析器。如果可行,我想知道如何。
-
您可以在
/Applications/.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/Security.framework/Headers/SecAsn1Templates.h中查找模板常量。搜索SecAsn1Decode site:apple.com 时有很多点击和示例代码。您可以使用filetype:c进一步完善它。 -
@jww,感谢您的帮助,我查看了模板常量,但我想知道如何获取我希望提取的每个字段的模板。好吧,我想我必须在调用函数之前弄清楚。
标签: c macos security openssl asn.1