cocoa - 如何在 Lion 上将 libssl 与 Cocoa 一起使用?

标签 cocoa osx-lion libssl

我正在链接从源代码构建的静态库,并包括本地 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/

相关文章:

ios - 如何确定我的 Mac 中是否安装了 CocoaPods?

objective-c - 使用 ScriptingBridge 和 Objective-C 查找前端 Safari 窗口

iphone - NSUserDefault 存在 -iPHONE SDK

python - py2app 在使用 virtualenv 时没有将 Python.framework 复制到新应用程序

bash - 如何递归地删除目录中选择性文件类型的所有文件的尾随空格?

xcode - Control-Command-Up 未在 Lion 上的 Xcode 中切换到对应文件。

objective-c - 在 Xcode 中使用 libssl

iphone - 如何在 objective-c 的 View 中加载两个图像?

openssl - 为什么openssl提供两组相似/重复的API : SSL_* and SSL_CTX_*

c++ - 如何从 C++ 代码打印 libssl 和 libnspr 版本?