Android アプリケーションで IAB v3 に取り組んでいます。購入が成功するたびに、Google開発者コンソールによって生成された公開鍵による検証のために、アプリが署名データと署名をphpサーバーに送り返すようにします。次のコードを見つけました。
<?php
// $data and $signature are assumed to contain the data and the signature
// fetch public key from certificate and ready it
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);
// state whether signature is okay or not
$ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1) {
echo "good";
} elseif ($ok == 0) {
echo "bad";
} else {
echo "ugly, error checking signature";
}
// free the key from memory
openssl_free_key($pubkeyid);
?>
今、私は問題を抱えています。Google から提供された公開鍵は、Base64 でエンコードされた文字列です。その文字列キーを「.pem」形式に変換する方法がわかりません。
Base64 でエンコードされたキーを上記のコードの "$pubkeyid" に配置した場合。警告が表示されます。
Warning: openssl_verify() [function.openssl-verify]: supplied key param cannot be coerced into a public key in myxxx.php.
String Base64 Encoded 公開鍵を PHP Accept 形式に変換するにはどうすればよいですか?
誰かが上記の経験または解決策を持っていますか? 助けてください。どうもありがとう。