String issuerDN = null;
String subjectDN = null;
String publickey = null;
boolean isSystemApp = false;
List<PackageInfo> packs = pckMan.getInstalledPackages(PackageManager.GET_SIGNATURES);
int count = packs.size();
for (int i = 0; i < count; i++) {
isSystemApp = false;
PackageInfo pi = packs.get(i);
if (pi.versionName == null)
continue;
if ((pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0) {
isSystemApp = true;
}
try {
byte[] signature = pi.signatures[0].toByteArray();
String hash = md5(signature);
CertificateFactory certFactory =
CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)
certFactory.generateCertificate(
new ByteArrayInputStream(signature));
String appname = pi.applicationInfo.loadLabel(pckMan).toString();
Log.d("TRACK", appname);
issuerDN = cert.getIssuerDN().toString();
Log.d("TRACK", issuerDN);
subjectDN = cert.getSubjectDN().toString();
Log.d("TRACK", subjectDN);
publickey = cert.getPublicKey().toString();
Log.d("TRACK", publickey);
Log.d("TRACK-HASH", hash);
} catch (CertificateException e) {
e.printStackTrace();
}
}