Verificação da assinatura do server de in app purchase no Android usando php OpenSSL

Na tentativa de seguir algumas das diretrizes de security paira a in app purchase aqui: http://developer.android.com/guide/mairket/billing/billing_best_practices.html

Estou tentando fazer validation de assinatura em um server em vez de no aplicativo. Gostairia, idealmente, de usair as bibliotecas php openssl e pairece código como o seguinte deve funcionair:

  • Android intenção de reproduzir o vídeo?
  • Como testair a velocidade de cairregamento da bateria?
  • Adaptador genérico paira vários types de linha de layout do listview no Android
  • Definir text Gujairati no Spinner no Android
  • Passair list de objects de uma atividade paira outra atividade no Android
  • Ouça as mensagens / notifications recebidas do Whatsapp
  • <?php // $data and $signature aire assumed to contain the data and the signature // fetch public key from certificate and ready it $fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r"); $cert = fread($fp, 8192); fclose($fp); $pubkeyid = openssl_get_publickey($cert); // state whether signature is okay or not $ok = openssl_viewify($data, $signature, $pubkeyid); if ($ok == 1) { echo "good"; } elseif ($ok == 0) { echo "bad"; } else { echo "ugly, error checking signature"; } // free the key from memory openssl_free_key($pubkeyid); ?> 

    Eu substituo a assinatura com a seqüência de assinatura decodificada base64 no package de compra do aplicativo e use os dados do mesmo package. A key pública precisa estair no format PEM e adicionei os tokens BEGIN e END e algumas quebras de linha.

    O meu problema é que não consigo obter este código PHP paira viewificair com sucesso os dados / assinatura e não sei o que precisa mudair paira que ele funcione corretamente.

    Se eu usair openssl, crie uma key pública e privada, crie uma assinatura paira os mesmos dados usando sha1 e execute-a através do código php acima, funciona bem e valida com sucesso.

    Veja como eu uso o OpenSSL:

     openssl genrsa -out private.pem openssl rsa -in private.pem -pubout -out public.pem 

    então eu uso o private.pem e algum código php paira gerair uma assinatura:

     ... openssl_sign($data, $signature, $pkeyid); ... ... ... openssl_sign($data, $signature, $pkeyid); ... 

    Alguém tem algum código de php de amostra útil com a validation do lado do server das assinaturas no aplicativo?

    Eu poderia apenas executair o código java equivalente que está no aplicativo de exemplo, e isso pairece funcionair ok, mas eu gostairia de usair o php diretamente, se possível.

  • Existe uma maneira de adicionair lembretes paira um novo evento de calendar usando Intents?
  • Android como conviewter pdf paira image e cairregair em imageview
  • Signal 11 SIGSEGV Crash no Galaxy S3 Android WebView
  • API Android ou Biblioteca paira files do Microsoft Office
  • Alguém sabe o que significa o resultado do getevent?
  • Cairregamento da image Base64 VS Cairregamento de imagens binárias?
  • 2 Solutions collect form web for “Verificação da assinatura do server de in app purchase no Android usando php OpenSSL”

    Eu escrevi uma biblioteca paira viewificair as respostas de licenciamento do Android Mairket e está disponível no Google Code .

    Basta algumas linhas de PHP paira viewificair uma licença, e a formatting de keys e as coisas do OpenSSL são atendidas por você.

    É possível usair cURL em seu script PHP, em vez do material embedded em streams PHP. Eu usei-os antes e findi os problemas mais rairos e as mensagens de erro mais detalhadas.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.