Is there a way to retrieve the signature of the key used to sign an APK? I signed my APK with my key from my keystore. How can I retrieve it programmatically?
The package manager will give you the signing certificate for any installed package. You can then print out the details of the signing key, e.g.
final PackageManager packageManager = context.getPackageManager();
final List packageList = packageManager.getInstalledPackages(PackageManager.GET_SIGNATURES);
for (PackageInfo p : packageList) {
final String strName = p.applicationInfo.loadLabel(packageManager).toString();
final String strVendor = p.packageName;
sb.append("
" + strName + " / " + strVendor + "
");
final Signature[] arrSignatures = p.signatures;
for (final Signature sig : arrSignatures) {
/*
* Get the X.509 certificate.
*/
final byte[] rawCert = sig.toByteArray();
InputStream certStream = new ByteArrayInputStream(rawCert);
try {
CertificateFactory certFactory = CertificateFactory.getInstance("X509");
X509Certificate x509Cert = (X509Certificate) certFactory.generateCertificate(certStream);
sb.append("Certificate subject: " + x509Cert.getSubjectDN() + "
");
sb.append("Certificate issuer: " + x509Cert.getIssuerDN() + "
");
sb.append("Certificate serial number: " + x509Cert.getSerialNumber() + "
");
sb.append("
");
}
catch (CertificateException e) {
// e.printStackTrace();
}
}
}