0

由于 CCKeyDerivationPBKDF 直到 iOS 5.0 之后才可用,人们建议使用此处提供的 CommonCrypto 的开源代码:

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

我的问题是——如何在现有项目中使用这个开源代码?我们应该创建 dylib 并以某种方式将其包含在项目中,还是获取源代码文件并将它们添加到现有项目中?你如何在 Xcode 中做到这一点?您如何确保在 iOS 4 设备/模拟器上运行时找到该功能?

谢谢。

4

2 回答 2

2

我必须在我的 Xcode 项目中包含 CommonKeyDerivation.c、CommonKeyDerivation.h、CommonKeyDerivationPriv.h,但这已经足够了——因为 CCKeyDerivationPBKDF 所需的其他支持/基础功能似乎已经包含在 iOS4 CommonCrypto 中。

于 2012-04-01T21:41:29.850 回答
0

总而言之,由于@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);

如果在面向 iOS 4.2 的 Snow Leopard 上将其更改__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA)为此。__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_2)

您可能必须在构建选项中指定包含路径。

于 2013-05-03T12:26:54.003 回答