Как я могу использовать libssl с Какао на Lion?
Я ссылаюсь на сборку статической библиотеки из исходного кода, включая локальные заголовки, а не заголовки в /usr/include
, но списки Xcode все еще могут функционировать как устаревшие, и он не может найти символы. Кто-нибудь получил libssl, работающий над Lion?
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.
Если вам нужно асимметричное шифрование, вы должны использовать платформу безопасности.
Обязательно ознакомьтесь с Руководством по программированию преобразований безопасности.
Для тех, кто придет после меня, Apple Security Framework имеет то, что вы ищете, особенно SecKeyGeneratePair
, SecItemCopyMatching
(чтобы получить ключи от цепочки для ключей), SecItemExport
(для экспорта в формат PEM), и SecKeyCreateFromData
(сделать ключ из NSData). Подпишите и убедитесь, что оба сделаны с SecTransform
s. Apple имеет разумную документацию для всех этих функций, если вы ищете правильные термины.