如何为iOS 4编译和使用CommonCrypto?

时间:2012-03-31 18:45:19

标签: iphone ios xcode commoncrypto

由于CCKeyDerivationPBKDF在iOS 5.0之后才可用,因此人们建议使用CommonCrypto的开源代码:

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

我的问题是 - 如何在现有项目中使用此开源代码?我们应该创建dylib并以某种方式将其包含在项目中或获取源代码文件并将它们添加到现有项目中吗?你是如何在Xcode中做到的?你如何确保在iOS 4设备/模拟器上运行时,它找到了函数?

感谢。

2 个答案:

答案 0 :(得分:2)

我必须在我的Xcode项目中包含CommonKeyDerivation.c,CommonKeyDerivation.h,CommonKeyDerivationPriv.h,但这已经足够了 - 因为似乎CCKeyDerivationPBKDF所需的其他支持/底层函数已经包含在iOS4 CommonCrypto中。

答案 1 :(得分: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);

如果Snow Leopard针对iOS 4.2,则将__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA)更改为此__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_2)

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