2012-03-30 11 views
4

実行時にプログラムでAPKの署名をチェックしたいと思います。自分の開発ワークステーションでキーストアを所有しているので、私はAPKに署名している公開鍵を知ることができませんでした。APKの署名の自己チェック

サイネージの後に公開鍵がどのようになるか分かったら、ソースコードを入力して、現在実行中のアプリケーションがキーと一致するかどうかを確認したいと思います。

可能ですか?その場合は、Eclipseで生成されたキーストアから公開鍵を取得するにはどうすればよいですか?

ありがとうございました。

+0

は[Androidのライセンスチェックサービス](http://developer.android.com/guide/market/licensing/index.html)を考えてみましょう。 –

+1

申し訳ありません、この**は**オフラインで動作する必要があります。アプリのプレビュー版用です。私はこのことに関して関連する質問がありました –

+1

攻撃者が何かを受け入れるようにコードを修正することができるように、自己検査はセキュリティ上の観点からはほとんど意味がありません。 –

答えて

4

あなたはこれを試すことができ、それは

Signature[] sigs = getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures; 
    for (Signature sig : sigs) 
    { 
     // log the sig here 
    } 
0

を動作するはずです私はあなたが持っているように、私は同じような状況があると思います。 ここは私のoriginal solutionです。

あなたが試してみるかもしれません。

Signature sig = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures[0]; 
Signature releaseSig = context.getPackageManager().getPackageAchiveInfo("/mnt/sdcard/myReleaseApk.apk", PackageManager.GET_SIGNATURES).signatures[0]; 
return sig.hashCode() == releaseSig.hashCode;