Проверка подписи сервера покупки в приложении Android с использованием php OpenSSL

В попытке следовать некоторым рекомендациям по безопасности для покупок в приложении здесь: 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 напрямую, если это возможно.

23
задан Michael Fredrickson 13 April 2012 в 18:04
поделиться