我正在链接从源代码构建的静态库,并包括本地 header ,而不是 /usr/include
中的 header ,但 Xcode 仍然列出可能已贬值的函数,并且无法找到符号。有人在 Lion 上使用 libssl 吗?
最佳答案
是的,Lion 上已弃用 SSL 函数。
您应该使用 CommonCrypto 中的内容。基本上,它可以替代所有 SSL 功能,并且它们通常是兼容的。
例如,如果您使用 MD5 (openssl/md5.h),您将收到这些已弃用的警告。 您可以包含 CommonDigest,并使用 CC_MD5_* 函数,而不是旧的 MD5_* 函数。
您还应该能够生成兼容性 header ,以支持其他系统。 类似于:
#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 .
关于cocoa - 如何在 Lion 上将 libssl 与 Cocoa 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8908203/