0

我正在链接从源代码构建的静态库,包括本地头文件,而不是/usr/include. 有没有人让 libssl 在 Lion 上工作?

4

2 回答 2

2

是的,SSL 功能在 Lion 上已被弃用。

你应该改用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 Transforms Programming Guide

于 2012-01-18T10:07:09.333 回答
0

对于任何追随我的人,Apple 的安全框架有你正在寻找的东西,特别是SecKeyGeneratePairSecItemCopyMatching从钥匙串中获取密钥)、SecItemExport(导出为 PEM 格式)和SecKeyCreateFromData(从 NSData 生成密钥)。签名和验证都是用SecTransforms 完成的。如果您搜索正确的术语,Apple 会为所有这些功能提供合理的文档。

于 2012-01-20T10:23:58.157 回答