2012-06-26 25 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