2012-06-26 28 views
4

我的理解是OpenSSL is deprecated in OSX 10.7 in favor of Common Crypto,但我似乎无法得到关于如何从OpenSSL的代码到公共的密码代码转换很好地处理。特别是,我正在查看App Store receipt validation with ValidateStoreReceipt。我开始试图找到一种方式来获得在PKCS#7的容器,这似乎是在dictionaryWithAppStoreReceipt第一步的内容,但我无法找到如何做的文档。用Common Crypto替换OpenSSL依赖? (Mac App Store的收据确认)

是否有可能改写这个代码,以便不依赖于OpenSSL的?如果是这样,怎么样?有没有我错过的文档或教程?

回答

4

没有必要停止使用OpenSSL。弃用的是OpenSSL动态库,您仍然可以从openssl.org获取静态库/源,并将其静态链接到您的代码。

由苹果弃用给出的理由是,自己的OpenSSL建议对动态链接的库更改版本之间太多。通过静态链接您的代码将始终使用您构建的库的版本,而不是以后可能不兼容的版本,目前安装在系统上。

+2

嗯,有*是*需要停止使用。如果继续使用OpenSSL,您可以(a)与系统版本链接,该版本可能以不兼容的方式更改,或者可能永远不会更新以修复安全漏洞;或(b)与您自己的版本链接,每当OpenSSL安全修补程序影响您时,您都需要更新该版本。后者可能意味着您的用户必须在大约同一时间重新安装大量应用程序才能解决相同的OpenSSL问题。 – alastair

+0

很高兴知道OpenSSL在这种使用中是否可替换,或者如果没有其他方式来提取有效负载信息并使用内置库进行验证。 – Conor

+1

@Conor - 是的,您可以使用CommonCrypto替换OpenSSL的用于商店收货验证。 SHA例程或多或少地是1-1替换,只是名称更改;将PKCS7拉开比名称更改多一点,但没有太大差别。这些文档是基本的/不存在的,所以,遵循苹果的劝诫,不要在这种情况下复制代码,从你的OpenSSL代码开始,在谷歌的帮助下搜索(近似)等价物 - 这里有例子 - 你应该找到你'将能够将您独特的OpenSSL解决方案合理快速地转换为CC。祝你好运! – CRD