2013-03-22 20 views
1

每當我嘗試添加自己的通存摺失敗是由於:存摺,PHP,並簽署

清單簽名沒有成功地驗證

我的簽名代碼如下:

$privKey = "certs/key.pem"; 
$keyPassword = "PASSWORD"; 
$wwdr = "certs/wwdr.pem"; 
$cert = file_get_contents("certs/certificate.pem"); 
$certData = openssl_x509_read($cert); 

openssl_pkcs7_sign($path . "/" . "manifest.json", 
$path . "/" . "signature", 
$certData, 
array("file://" . $privKey, $keyPassword), 
array(), 
PKCS7_BINARY|PKCS7_NOATTR|PKCS7_DETACHED, 
"certs/wwdr.pem"); 

謝謝!

+0

你是否正確使用WWDR獲取數據? – 2013-03-22 04:06:23

+0

我應該得到它有什麼不同嗎? – caycehouse 2013-03-22 04:08:44

+0

結帳這個https://github.com/tschoffelen/PHP-PKPass/blob/master/src/PKPass.php – 2013-03-22 04:08:48

回答

0

嘗試以下,使用證書文件,而不是它的內容和去除PKSC7_NOATTR,因爲通過iOS 6.1.1的,簽名應包含簽約日期。

openssl_pkcs7_sign($path . "/manifest.json", 
      $path . "/signature", 
      'file://' . $fullPathTo . 'certs/certificate.pem', 
      array('file://' . $fullPathTo . $privKey, $keyPassword), 
      array(), 
      PKCS7_BINARY|PKCS7_DETACHED, 
      $fullPathTo . $wwdr); 

openssl_pkcs7_sign創建一個電子郵件attachement,所以你還需要提取簽名部分,因爲這是所有.pkpass束需求。

// Read the signature file 
$email = file_get_contents($path . "/signature"); 

// Extract the signature using a regex 
$pattern = "/.*?Content-Disposition: attachment; filename=\".*?\"(.*?)-----.*?/sm"; 
preg_match_all($pattern, $email, $signature); 

// Base64 encode the part of result we need 
$signature = base64_decode($signature[1][0]); 

// Write contents to a new signature file 
file_put_contents ($path . "/signature", $signature); 

如果仍然不提取,檢查你的證書是有效的通行證類型ID證書,你的私鑰是正確的爲您的證書。你甚至可能想檢查你的PHP日誌來驗證openssl_pkcs7_sign命令是否正確執行。


更新

當我嘗試你.pkpass包添加到存摺,我得到的設備控制檯下面的錯誤。

<Warning>: Invalid data error reading pass pass.datafarms.peppermints/123456. Manifest JSON didn't parse: The operation couldn’t be completed. (Cocoa error 3840.) 

你的簽名文件看起來不錯,錯誤在於你的代碼,該代碼計算SHA1哈希和建設manifest.json

看着你.pkpass包,你的表現在兩個方面腐敗的一部分:

  1. 它包含多個對象
  2. 的SHA1值不匹配,該文件的內容

對於這個.pkpass捆綁,你的manifest.json的應該是:

{ 
    "strip.png" : "f95387c0843a51dac73f1b0a3181da9c99ba3dc4", 
    "[email protected]" : "f325a97fc6bafbe53a5e8feb7b2c509a8ceb6b10", 
    "[email protected]" : "7b7b025774128b95e50f2bcda55e608412e95a37", 
    "[email protected]" : "68b61c27657a0018da71c7f73626c8a891da753c", 
    "icon.png" : "6b15fa477ece83fdd4f544a2381444272a0e39a0", 
    "logo.png" : "7cf1d842afde33c4b14978f330cf98d05c3e57f2", 
    "pass.json" : "971417ec80638736cb3392d6d5db53d554f138a4", 
} 

但是目前我們:

{ 
    "strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8", 
    "[email protected]" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26", 
    "[email protected]" : "f36816f173aa9011186b80b140dfc49395d31051", 
    "[email protected]" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad", 
    "icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d", 
    "logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8", 
    "pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb", 
}{ 
    "strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8", 
    "[email protected]" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26", 
    "[email protected]" : "f36816f173aa9011186b80b140dfc49395d31051", 
    "[email protected]" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad", 
    "icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d", 
    "logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8", 
    "pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb", 
}{ 
    "strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8", 
    "[email protected]" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26", 
    "[email protected]" : "f36816f173aa9011186b80b140dfc49395d31051", 
    "[email protected]" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad", 
    "icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d", 
    "logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8", 
    "pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb", 
}{ 
    "strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8", 
    "[email protected]" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26", 
    "[email protected]png" : "f36816f173aa9011186b80b140dfc49395d31051", 
    "[email protected]" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad", 
    "icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d", 
    "logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8", 
    "pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb", 
}{ 
    "strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8", 
    "[email protected]" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26", 
    "[email protected]" : "f36816f173aa9011186b80b140dfc49395d31051", 
    "[email protected]" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad", 
    "icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d", 
    "logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8", 
    "pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb", 
}{ 
    "strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8", 
    "[email protected]" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26", 
    "[email protected]" : "f36816f173aa9011186b80b140dfc49395d31051", 
    "[email protected]" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad", 
    "icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d", 
    "logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8", 
    "pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb", 
}{ 
    "strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8", 
    "[email protected]" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26", 
    "[email protected]" : "f36816f173aa9011186b80b140dfc49395d31051", 
    "[email protected]" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad", 
    "icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d", 
    "logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8", 
    "pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb", 
}{ 
    "strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8", 
    "[email protected]" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26", 
    "[email protected]" : "f36816f173aa9011186b80b140dfc49395d31051", 
    "[email protected]" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad", 
    "icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d", 
    "logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8", 
    "pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb", 
}{ 
    "strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8", 
    "[email protected]" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26", 
    "[email protected]" : "f36816f173aa9011186b80b140dfc49395d31051", 
    "[email protected]" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad", 
    "icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d", 
    "logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8", 
    "pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb", 
}{ 
    "strip.png" : "156b528933284a0a58fc316897e1b7d202dfe3e8", 
    "[email protected]" : "99f5dc1a0c5ed300193f87e42d8632f7251a3f26", 
    "[email protected]" : "f36816f173aa9011186b80b140dfc49395d31051", 
    "[email protected]" : "c10dd92e6c043c4bcf6214251d6fcb2a760cd9ad", 
    "icon.png" : "d181ad4208e06afb63d5e6049a40521b458da19d", 
    "logo.png" : "81c27284f77a447375ba39fb2f0005eeaccf28d8", 
    "pass.json" : "e5960e9004d5fff241d77415413d609f47d7b2fb", 
} 
+0

我試過你讓我做的以上,它仍然給我同樣的錯誤,我知道我的證書應該是有效的,並且我沒有得到任何錯誤的PHP日誌中的錯誤。 – caycehouse 2013-03-24 18:31:20

+0

你可以發佈一個鏈接到你的腳本創建的.pkpass包。這應該爲它失敗的原因提供一些線索。 – PassKit 2013-03-25 01:39:48

+0

查看更新後的答案 - 問題出在你的'manifest.json'上,而不是你的簽名。 – PassKit 2013-03-26 04:26:19