Как скомпилировать и использовать CommonCrypto для iOS 4?

Поскольку CCKeyDerivationPBKDF недоступен только после iOS 5.0, люди предложили использовать открытый код для CommonCrypto, доступный здесь:

http://www.opensource.apple.com/source/CommonCrypto/CommonCrypto-55010/

Мой вопрос: как использовать этот открытый исходный код в существующем проекте? Должны ли мы создать dylib и каким-то образом включить его в проект или взять файлы исходного кода и добавить их в существующий проект? Как вы это делаете в Xcode? Как вы убедитесь, что во время выполнения на устройстве iOS 4/имитаторе он находит функцию?

Благодарю.

2 ответа

Мне пришлось включить CommonKeyDerivation.c, CommonKeyDerivation.h, CommonKeyDerivationPriv.h в мой проект Xcode, но этого было достаточно - потому что, похоже, другие вспомогательные/базовые функции, необходимые CCKeyDerivationPBKDF, уже включены в iOS4 CommonCrypto.


Подводя итог, поскольку ответ @Raj Lalwani не полностью завершен - некоторые детали были опущены !!!

Три файла:

  • CommonKeyDerivation.c
  • CommonKeyDerivation.h
  • CommonKeyDerivationPriv.h

В источнике для CommonKeyDerivation.c, ниже стандартного комментария лицензии Apple, вставьте это:

#define KERNEL

Это отключит ошибку компилятора.

В источнике для CommonKeyDerivation.h есть два прототипа, как показано:

int 
CCKeyDerivationPBKDF( CCPBKDFAlgorithm algorithm, const char *password, size_t passwordLen,
 const ******* *salt, size_t saltLen,
 CCPseudoRandomAlgorithm prf, **** rounds, 
 ******* *derivedKey, size_t derivedKeyLen)
 __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);

А также

****
CCCalibratePBKDF(CCPBKDFAlgorithm algorithm, size_t passwordLen, size_t saltLen,
 CCPseudoRandomAlgorithm prf, size_t derivedKeyLen, ****32_t msec)
 __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);

Измените __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA) на этот __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_2) если на Snow Leopard __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_2) на iOS 4.2.

Возможно, вам придется указать путь включения в настройках сборки.

licensed under cc by-sa 3.0 with attribution.