如何在Lion上使用libssl和Cocoa?

时间:2012-01-18 09:57:41

标签: cocoa osx-lion libssl

我正在链接来自源的静态库构建,并且包括本地头,而不是/usr/include中的头,但Xcode仍然列表可能起到折旧的作用,并且它无法找到符号。有没有人让libssl在Lion上工作?

2 个答案:

答案 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的安全框架都有您想要的,特别是SecKeyGeneratePairSecItemCopyMatching(从钥匙串获取密钥),SecItemExport(导出到PEM格式)和SecKeyCreateFromData(从NSData创建密钥)。使用SecTransform s完成签名和验证。如果您搜索正确的术语,Apple会为所有这些功能提供合理的文档。