Verificação de assinatura de compra no aplicativo com PHP openssl

Em uma tentativa de seguir algumas das diretrizes de segurança para compras no aplicativo aqui:http: //developer.android.com/guide/market/billing/billing_best_practices.htm Estou tentando fazer a validação da assinatura em um servidor, e não no próprio aplicativo. Idealmente, eu gostaria de usar as bibliotecas php openssl e parece que código como o seguinte deve funcionar:

$public_key_str = file_get_contents("./pubKey/out");
$public_key_str = trim($public_key_str);
$key = openssl_get_publickey($public_key_str);
if(!$key)
{
echo 'Can\'t get public key';
}
$signature = base64_decode( $signature );
$ok = openssl_verify($data, $signature, $key);
var_dump($ok);

Sei que minha assinatura e minha chave pública estão corretas, mas $ ok é 0! A assinatura que tento usar é a sequência do pacote de compra de aplicativos. Acho que minha chave está correta e o problema está na assinatura. Quando tento decodificá-lo da base64 com: openssl enc -base64 -d -in signature -A> signature.bin, tenho a mesma string com base64_decode (). Alguma ideia

UPD: também realmente não entendo o que devo passar no openssl_verify () como $ data? Meus dados são assim:

$data = '{"nonce":5550262978898439313,"orders":[{"notificationId":"android.test.purchased","orderId":"transactionId.android.test.purchased","packageName":"com.ads.testbilling","productId":"android.test.purchased","purchaseTime":1308224646237,"purchaseState":0}]}';

questionAnswers(1)

yourAnswerToTheQuestion