使用JarSigner

时间:2015-10-05 17:26:57

标签: android jarsigner jar-signing

我想使用JarSigner从Java代码验证APK。我正在编写一个以编程方式安装APK(非常类似于Google Play)的应用程序,在安装之前检查以下内容:

  • 验证.SF文件本身的签名。验证列出的摘要 在.SF文件中的每个条目中,每个条目都在 清单。
    验证.SF文件中每个条目中列出的摘要 清单中的每个相应部分 阅读每个文件 在.SF文件中有条目的JAR文件。在读的时候, 计算文件的摘要,然后将结果与 清单部分中此文件的摘要。

这就像在命令行上使用-verify选项运行jarsigner一样

我查了Java文档,我想我可以使用JarSigner.verifyJar() API。但这不是公共方法。有没有人试图从Java代码验证APK?会欣赏任何指针。

1 个答案:

答案 0 :(得分:2)

你可以这样得到你的签名:

PackageInfo packageInfo = context.getPackageManager().getPackageInfo(
    context.getPackageName(), PackageManager.GET_SIGNATURES);

List<String> list = new ArrayList<>();

for (Signature signature : packageInfo.signatures) {
    MessageDigest md = MessageDigest.getInstance("SHA");
    md.update(signature.toByteArray());
    final String currentSignature = Base64.encodeToString(md.digest(), Base64.DEFAULT);
    list.add(currentSignature);
}

查看this article了解完整详情。