2011-06-16 11 views
10

: http://developer.android.com/guide/market/billing/billing_best_practices.html Ben bir sunucuda yerine app imza doğrulama yapmaya çalışıyorum iteself . Ben ideal çalışması gerekir Aşağıdaki gibi o koduna benzeyen php openssl kütüphaneleri ve kullanmak istiyorum:Uygulama içi satın alma imza doğrulama uygulama içi alım burada güvenlik yönergelerine bazılarını takip için bir girişim

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

Ben doğru İmzamı hem de ortak anahtarı biliyorum ama Tamam $ 0! Kullanmayı denediğim imza, uygulama satın alma paketindeki dizedir. Sanırım anahtarım doğru ve sorun imzalı. Base64 ile decode çözmeye çalıştığımda: openssl enc -base64 -d -in signature -A> signature.bin, base64_decode() ile aynı dize var. Herhangi bir fikir ?

UPD: ayrıca openssl_verify() içinde $ data olarak ne geçmem gerektiğini gerçekten anlamıyorum. Benim veri şöyle görünür:

$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

yerine 4 boşluklu her satır girintisi üzerine komutu ters tırnak kullanarak (veya basitçe çizgiler ve CTRL + K seçin) üzgünüm – ThiefMaster

+0

yani, düzgün kodunuzu biçimlendirmek Lütfen buraya o – user801255

+0

Bazı ipuçları için: http: //crazyviraj.blogspot.com/2011/06/some-notes-on-implementing-in-app.html – psychotik

cevap