Edited at

Android in-app-billing のデータが改ざんされていないかの検証

More than 5 years have passed since last update.

メモです。表題の通り。


利用される値



  • license_key
    ディベロッパーコンソール > アプリ > サービスとAPI の「バイナリに追加する Base64 エンコードの RSA 公開鍵です。スペースはすべて削除してください。」の下にある文字列


  • purchase_data
    購入時のIntentから INAPP_PURCHASE_DATA で取り出せる値


  • signature
    購入時のIntentから INAPP_DATA_SIGNATURE で取り出せる値


検証コード

def verify(data, sign)

verifier.verify(OpenSSL::Digest::SHA1.new, Base64.decode64(sign), data)
end

def verifier
@_verifier ||= OpenSSL::PKey::RSA.new(Base64.decode64(license_key))
end

if ! verify(purchase_data, signature)
raise 'データが改ざんされています'
end