В попытке следовать некоторым рекомендациям по безопасности для покупок в приложении здесь: http://developer.android.com/guide/market/billing/billing_best_practices.html
Я пытаюсь выполнить проверку подписи на сервере, а не в самом приложении. В идеале я хотел бы использовать библиотеки php openssl, и похоже, что следующий код должен работать:
Я заменяю подпись на декодированную base64 строку подписи в пакете покупки приложения и использую данные из того же пакета. Открытый ключ должен быть в формате PEM, и я добавил токены BEGIN и END и некоторые разрывы строк.
Моя проблема в том, что я не могу получить этот PHP-код для успешной проверки данных / подписи, и я не знаю, что нужно изменить, чтобы заставить его работать правильно.
Если я использую openssl, создайте закрытый и открытый ключи, создайте подпись для тех же данных с помощью sha1 и прогоните ее через приведенный выше код php, он работает нормально и успешно проходит проверку.
Вот как я использую OpenSSL:
openssl genrsa -out private.pem
openssl rsa -in private.pem -pubout -out public.pem
затем я использую private.pem и некоторый код php для генерации подписи:
...
openssl_sign($data, $signature, $pkeyid);
...
Есть ли у кого-нибудь рабочий образец кода php со стороной сервера проверка подписей в приложении?
Я мог бы просто запустить эквивалентный java-код, который есть в примере приложения, и он, кажется, работает нормально, но я хотел бы использовать php напрямую, если это возможно.