2011-06-16 10 views
10

Chcąc przestrzegać pewnych wytycznych bezpieczeństwa w aplikacji zakup tutaj: http://developer.android.com/guide/market/billing/billing_best_practices.html Próbuję zrobić walidacji podpisu na serwerze zamiast w aplikacji iteself . Chciałbym idealnie lubią używać bibliotek php OpenSSL i to wygląda kodu takie jak następujące powinny działać:w aplikacji weryfikacji podpisu zakup z PHP OpenSSL

$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); 

Znam zarówno mój podpis i klucz publiczny są poprawne, ale jest ok $ 0! Podpis, którego próbuję użyć, to ciąg z pakietu zakupu aplikacji. Zgadnij, mój klucz jest poprawny, a problem leży w podpisie. Kiedy próbuję zdekodować go z base64 za pomocą: openssl enc -base64 -d -in podpis -A> signature.bin, mam ciąg taki sam z base64_decode(). Jakieś pomysły ?

UPD: również ja naprawdę nie rozumiem tego, co powinienem przekazać w openssl_verify() jako danych $? Moje dane wygląda następująco:

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

proszę sformatować kod poprawnie, to znaczy zamiast korzystania odwrócone, pojedyncze apostrofy na każdej linii tiret go z 4 pomieszczeń (lub po prostu wybrać linie i naciśnij Ctrl + K) – ThiefMaster

+0

Przepraszam za to – user801255

+0

porady tutaj: http: //crazyviraj.blogspot.com/2011/06/some-notes-on-implementing-in-app.html – psychotik

Odpowiedz

Powiązane problemy