【问题标题】:Replace OpenSSL dependence with Common Crypto? (Mac App Store Receipt Validation)用 Common Crypto 替换 OpenSSL 依赖? (Mac App Store 收据验证)
【发布时间】:2012-06-27 14:14:05
【问题描述】:

我的理解是OpenSSL is deprecated in OSX 10.7 in favor of Common Crypto,但我似乎无法很好地处理如何从 OpenSSL 代码转换为 Common Crypto 代码。特别是,我正在查看App Store receipt validation with ValidateStoreReceipt。我首先尝试找到一种方法来获取 PKCS#7 容器的内容,这似乎是dictionaryWithAppStoreReceipt 中的第一步,但我找不到任何有关如何操作的文档。

是否可以重写此代码以不依赖于 OpenSSL?如果是这样,怎么做?是否有我错过的文档或教程?

【问题讨论】:

    标签: objective-c macos openssl osx-lion commoncrypto


    【解决方案1】:

    无需停止使用 OpenSSL。不推荐使用的是 OpenSSL 动态库,您仍然可以从 openssl.org 获取静态库/源并将其静态链接到您的代码。

    Apple 给出的弃用原因是 OpenSSL 自己建议不要使用动态链接,因为库在版本之间变化太大。通过静态链接,您的代码将始终使用您构建的库的版本,而不是当前安装在系统上的更高版本,可能不兼容。

    【讨论】:

    • 好吧,需要停止使用它。如果您继续使用 OpenSSL,您可以 (a) 链接到系统版本,该版本可能会以不兼容的方式更改,或者可能永远不会更新以修复安全漏洞;或 (b) 链接到您自己的版本,只要 OpenSSL 安全补丁影响您,您就需要更新该版本。后者可能意味着您的用户必须几乎同时重新安装大量应用程序才能解决相同的 OpenSSL 问题。
    • 很高兴知道 OpenSSL 在此用途中是否可替换,或者是否没有其他方法可以提取有效负载信息并使用内置库进行验证。
    • @Conor - 是的,您可以将 OpenSSL 的使用替换为 CommonCrypto 进行商店收据验证。 SHA 例程或多或少是 1-1 替换,只是名称更改;将 PKCS7 分开只是名称更改而已,但差别不大。该文档是基本的/不存在的,因此,按照 Apple 的劝告不要在这种情况下复制代码,从您的 OpenSSL 代码开始,并在 Google 的帮助下搜索(接近)等价物——那里有例子——你应该找到你将能够合理快速地将您独特的 OpenSSL 解决方案转换为 CC。祝你好运!
    • 感谢您提供的信息。苹果对这种情况的管理不善令人难以置信,而且缺乏文档是可怕的。这整个混乱应该是对 Apple 提供的库的一次调用。混淆的安全性根本不是安全性。
    • @Conor - 你曾经能够用 CommonCrypto 替换 OpenSSL 来验证收据吗?如果是这样,您是否能够找到更多有关它的文档,或者您愿意为我阐明它吗?我现在正在尝试过渡。
    猜你喜欢
    • 2011-05-14
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    相关资源
    最近更新 更多