Verificación de la firma de compra en la aplicación con PHP openssl

En un intento de seguir algunas de las directrices de seguridad para la compra en la aplicación aquí: http://developer.android.com/guide/market/billing/billing_best_practices.html Estoy tratando de validar la firma en un servidor en lugar de en la App mismo. Me gustaría idealmente utilizar las bibliotecas php openssl y parece que el código como el siguiente debe 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); 

Sé que mi firma y clave pública son correctas, pero $ ok es 0! La firma que intento utilizar es cadena del paquete de compra de la aplicación. Supongo que mi clave es correcta y el problema está en la firma. Cuando trato de decodificarlo desde base64 con: openssl enc -base64 -d -in firma -A> signature.bin, tengo la misma cadena con base64_decode (). Algunas ideas ?

UPD: también no entiendo lo que debo pasar en openssl_verify () como $ data? Mis datos tienen este aspecto:

 $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}]}'; 

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.