3
我有一個加密/ php問題,我希望有人可以幫助我。 我的問題是我有一個簽名的PKCS7塊,我試圖在PHP中進行驗證。 然而,當我運行下面的PHP命令:在PHP中調用openssl_pkcs7_verify時指定輸入格式類型
openssl_pkcs7_verify($myfile, PKCS7_BINARY | PKCS7_NOVERIFY, $signers_file);
我收到以下錯誤:
p7container = OpenSSL::PKCS7.new(file_contents);
mystore = OpenSSL::X509::Store.new
p7container.verify(nil, store, nil, OpenSSL::PKCS7::NOVERIFY)
它的工作原理:
PKCS7 routines:SMIME_read_PKCS7:no content type
如果我使用它紅寶石像這樣做。
另外,如果我通過OpenSSL的命令行運行它:
openssl smime -verify -inform der -in my_data_file -noverify
它也適用。但是,如果我運行以下命令:
openssl smime -verify -in my_data_file -noverify
這是相同的命令,但不指定通知參數,它失敗前指定的相同的錯誤消息,關於「沒有內容類型」,這使得它看起來我需要指定輸入文件格式。任何想法,我可以通過PHP做到這一點?
預先感謝您的幫助,
Hi @goldmine, 感謝您的回覆。這實際上是我們最終做的,但我們想知道是否有辦法直接在openssl_pkcs7_verify調用中設置-inform選項,特別是因爲可能會有更多的pkcs7調用,而且不一定會要爲每個調用調用命令行工具。 – Hawkeye001
@ Hawkeye001,最接近使用openssl_pkcs7_verify函數的唯一方法是在使用函數之前對文件進行base64編碼(更多詳細信息,請參閱此鏈接http://www.rootmanager.com/iphone-ota-configuration/iphone- ota-setup-with-signed-mobileconfig.html,請參閱「簽署.mobileconfig」文件,討論使用php簽署.mobileconfig:反轉,應該給我們想要的)。不過,我可能會堅持使用exec。 – quentinadam