我正在链接来自源的静态库构建,并且包括本地头,而不是/usr/include
中的头,但Xcode仍然列表可能起到折旧的作用,并且它无法找到符号。有没有人让libssl在Lion上工作?
答案 0 :(得分:2)
是的,狮子会不推荐使用SSL功能。
您应该使用 CommonCrypto 中的内容。基本上,它具有所有SSL功能的替代品,并且它们通常是兼容的。
例如,如果您使用MD5(openssl / md5.h),您将获得那些已弃用的警告。 您可以包含CommonDigest,并使用CC_MD5_ *函数,而不是旧的MD5_ *函数。
您还应该能够生成兼容性标头,以支持其他系统。 类似的东西:
#if defined( __APPLE__ )
#include <CommonCrypto/CommonDigest.h>
#ifdef MD5_DIGEST_LENGTH
#undef MD5_DIGEST_LENGTH
#endif
#define MD5_Init CC_MD5_Init
#define MD5_Update CC_MD5_Update
#define MD5_Final CC_MD5_Final
#define MD5_DIGEST_LENGTH CC_MD5_DIGEST_LENGTH
#define MD5_CTX CC_MD5_CTX
#else
#include <openssl/md5.h>
#endif
这仅适用于MD5,但您应该可以为大多数其他功能执行此操作。
修改强>
CommonCrypto仅通过CCCryptor支持对称加密。
如果您需要非对称加密,则应使用Security framework。
请务必查看安全Transforms Programming Guide。
答案 1 :(得分:0)
对于任何追随我的人,Apple的安全框架都有您想要的,特别是SecKeyGeneratePair
,SecItemCopyMatching
(从钥匙串获取密钥),SecItemExport
(导出到PEM格式)和SecKeyCreateFromData
(从NSData创建密钥)。使用SecTransform
s完成签名和验证。如果您搜索正确的术语,Apple会为所有这些功能提供合理的文档。