Как скомпилировать и использовать CommonCrypto для iOS 4? - PullRequest
0 голосов
/ 31 марта 2012

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

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

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

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

0 голосов
/ 03 мая 2013

Подводя итог, поскольку ответ @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 uint8_t *salt, size_t saltLen,
                      CCPseudoRandomAlgorithm prf, uint rounds, 
                      uint8_t *derivedKey, size_t derivedKeyLen)
                      __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);

И

uint
CCCalibratePBKDF(CCPBKDFAlgorithm algorithm, size_t passwordLen, size_t saltLen,
                 CCPseudoRandomAlgorithm prf, size_t derivedKeyLen, uint32_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 используется iOS 4.2.

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

...