Java tutorial
//package com.java2s; //License from project: Apache License import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.Signature; import android.util.Base64; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Main { /** * A double check about app signature that was passed by MainActivity as facetID. * @param facetId a string value composed by app hash. I.e. android:apk-key-hash:Lir5oIjf552K/XN4bTul0VS3GfM * @param context Application Context * @return true if the signature executed on runtime matches if signature sent by MainActivity */ private static boolean checkAppSignature(String facetId, Context context) { try { PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES); for (Signature sign : packageInfo.signatures) { byte[] sB = sign.toByteArray(); MessageDigest messageDigest = MessageDigest.getInstance("SHA1"); messageDigest.update(sign.toByteArray()); String currentSignature = Base64.encodeToString(messageDigest.digest(), Base64.DEFAULT); if (currentSignature.toLowerCase().contains(facetId.split(":")[2].toLowerCase())) { return true; } } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return false; } }