将openSSL添加到Swift OS X项目以进行收据验证

jba*_*aga 6 macos swift

我试图在Swift OS X项目中包含OpenSSL以进行收据验证.

我已经成功构建了必要的OpenSSL头文件和库文件.我已将它们添加到我的项目中,但是这样做并未提示创建桥接头文件.我已经使用#import手动为每个openssl头文件创建了桥接头文件.在项目构建设置中,我已将"swift编译器 - 代码生成"下的目标C桥接头设置为我的桥接头.我已经按照收据验证编程指南中的描述生成了有效负载格式的ans1c文件:"清单1-1 ASN.1有​​效载荷格式的定义"并将它们添加到我的桥接头中.

我构建时遇到很多编译错误,主要是openSSL头文件中的未知类型名称,我认为这些文件会在ans1c头文件中定义,但它们不是.我也收到错误"无法导入桥接头...(我的桥接头文件)".

我的想法已经不多了,可能不得不放弃openSSL进行收据验证.如果有人知道我做错了什么,或者你有另一种方法进行验证,我很乐意听到.我的应用程序将有IAP,所以我似乎需要某种方式来检查收据.

jba*_*aga 3

我终于弄清楚了编译器错误的根源。XCode 对 openssl 标头的位置非常挑剔。如果我直接链接到标题为“openssl”的头目录,则会出现编译器错误。如果我链接到名为“include”的父文件夹,则没有错误!

我不明白这种行为,但至少现在我有一个解决方案。感谢Receigen上关于将OpenSSL 添加为静态库的说明,我最终准确地遵循了该说明,我能够发现错误的根源。

  • 我也一直在与这个作斗争,对于任何新手来说,事实证明,在 openssl 1.0.2a 中,还需要调整 openssl/rsa.h 文件以从 cocoa/ 中忘记在 complex.h 中定义的“I”基础框架。这可以通过将“#undef I”放在 rsa.h 文件中“struct rsa_meth_st”上方来完成 (2认同)