java类android.content.pm.Signature的实例源码

SignatureUtils.java 文件源码 项目:android-security 阅读 38 收藏 0 点赞 0 评论 0
public static boolean checkSignature(Context context) {
    try {
        PackageInfo packageInfo = context.getPackageManager()
                .getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : packageInfo.signatures) {
            MessageDigest sha = MessageDigest.getInstance("SHA");
            sha.update(signature.toByteArray());
            final String currentSignature = Base64.encodeToString(sha.digest(), Base64.DEFAULT);
            if (SIGNATURE.equals(currentSignature)) {
                return true;
            }
        }
    } catch (Exception e) {
        Log.e(TAG, "Failed to check signature", e);
    }

    return false;
}
InstalledAppTestUtils.java 文件源码 项目:mobile-store 阅读 38 收藏 0 点赞 0 评论 0
public static void install(Context context,
                           String packageName,
                           int versionCode, String versionName,
                           @Nullable String signingCert,
                           @Nullable String hash) {
    PackageInfo info = new PackageInfo();
    info.packageName = packageName;
    info.versionCode = versionCode;
    info.versionName = versionName;
    info.applicationInfo = new ApplicationInfo();
    info.applicationInfo.publicSourceDir = "/tmp/mock-location";
    if (signingCert != null) {
        info.signatures = new Signature[]{new Signature(signingCert)};
    }

    String hashType = "sha256";
    if (hash == null) {
        hash = "00112233445566778899aabbccddeeff";
    }

    InstalledAppProviderService.insertAppIntoDb(context, info, hashType, hash);
}
ScreenFilterMonitorImpl.java 文件源码 项目:Nird2 阅读 39 收藏 0 点赞 0 评论 0
private boolean isPlayServices(String pkg) {
    if (!PLAY_SERVICES_PACKAGE.equals(pkg)) return false;
    try {
        PackageInfo sigs = pm.getPackageInfo(pkg, GET_SIGNATURES);
        // The genuine Play Services app should have a single signature
        Signature[] signatures = sigs.signatures;
        if (signatures == null || signatures.length != 1) return false;
        // Extract the public key from the signature
        CertificateFactory certFactory =
                CertificateFactory.getInstance("X509");
        byte[] signatureBytes = signatures[0].toByteArray();
        InputStream in = new ByteArrayInputStream(signatureBytes);
        X509Certificate cert =
                (X509Certificate) certFactory.generateCertificate(in);
        byte[] publicKeyBytes = cert.getPublicKey().getEncoded();
        String publicKey = StringUtils.toHexString(publicKeyBytes);
        return PLAY_SERVICES_PUBLIC_KEY.equals(publicKey);
    } catch (NameNotFoundException | CertificateException e) {
        if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
        return false;
    }
}
Update.java 文件源码 项目:stynico 阅读 45 收藏 0 点赞 0 评论 0
private void setViewPager()
  {
final String packname = getPackageName();
try
{
    PackageInfo packageInfo = getPackageManager().getPackageInfo(packname, PackageManager.GET_SIGNATURES);
    Signature[] signs = packageInfo.signatures;
    Signature sign = signs[0];
    int code = sign.hashCode();
    if (code != 312960342)
    {       
        ti();

    }
    else
    {
        //
    }
}
catch (PackageManager.NameNotFoundException e)
{}
      fragments = new ArrayList<Fragment>();
      viewPager.setAdapter(viewPagerAdapter);
      mTabLayout.setupWithViewPager(viewPager);
      mTabLayout.setTabsFromPagerAdapter(viewPagerAdapter);
  }
Facebook.java 文件源码 项目:AndroidBackendlessChat 阅读 33 收藏 0 点赞 0 评论 0
/**
 * Query the signature for the application that would be invoked by the
 * given intent and verify that it matches the FB application's signature.
 * 
 * @param context
 * @param packageName
 * @return true if the app's signature matches the expected signature.
 */
private boolean validateAppSignatureForPackage(Context context, String packageName) {

    PackageInfo packageInfo;
    try {
        packageInfo = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
    } catch (NameNotFoundException e) {
        return false;
    }

    for (Signature signature : packageInfo.signatures) {
        if (signature.toCharsString().equals(FB_APP_SIGNATURE)) {
            return true;
        }
    }
    return false;
}
ScreenFilterMonitorImpl.java 文件源码 项目:Nird2 阅读 44 收藏 0 点赞 0 评论 0
private boolean isPlayServices(String pkg) {
    if (!PLAY_SERVICES_PACKAGE.equals(pkg)) return false;
    try {
        PackageInfo sigs = pm.getPackageInfo(pkg, GET_SIGNATURES);
        // The genuine Play Services app should have a single signature
        Signature[] signatures = sigs.signatures;
        if (signatures == null || signatures.length != 1) return false;
        // Extract the public key from the signature
        CertificateFactory certFactory =
                CertificateFactory.getInstance("X509");
        byte[] signatureBytes = signatures[0].toByteArray();
        InputStream in = new ByteArrayInputStream(signatureBytes);
        X509Certificate cert =
                (X509Certificate) certFactory.generateCertificate(in);
        byte[] publicKeyBytes = cert.getPublicKey().getEncoded();
        String publicKey = StringUtils.toHexString(publicKeyBytes);
        return PLAY_SERVICES_PUBLIC_KEY.equals(publicKey);
    } catch (NameNotFoundException | CertificateException e) {
        if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
        return false;
    }
}
MiuiPushActivateService.java 文件源码 项目:MiPushFramework 阅读 35 收藏 0 点赞 0 评论 0
private boolean verifySignatures(String str) {
    try {
        PackageInfo packageInfo = getPackageManager().getPackageInfo(str, PackageManager.GET_SIGNATURES);
        if (packageInfo.signatures != null) {
            for (Object obj : packageInfo.signatures) {
                for (Signature equals : MIUI_PLATFORM_SIGNATURES) {
                    if (equals.equals(obj)) {
                        return true;
                    }
                }
            }
        }
    } catch (NameNotFoundException e) {
    }
    return false;
}
MainActivity.java 文件源码 项目:OkSign 阅读 34 收藏 0 点赞 0 评论 0
private void updateSignatures(String packageName) {
  List<PackageInfo> list =
      getPackageManager().getInstalledPackages(PackageManager.GET_SIGNATURES);
  PackageInfo packageInfo = null;
  for (PackageInfo info : list) {
    if (info.packageName.equals(packageName)) {
      packageInfo = info;
      break;
    }
  }
  if (packageInfo == null) {
    packageView.setError("Cannot find package.");
    return;
  }
  Signature[] signs = packageInfo.signatures;
  signatures.clear();
  for (Signature sign : signs) {
    ByteString byteString = ByteString.of(sign.toByteArray());
    signatures.add(byteString.md5().hex());
  }
  signaturesView.getAdapter().notifyDataSetChanged();
}
Facebook.java 文件源码 项目:chat-sdk-android-push-firebase 阅读 39 收藏 0 点赞 0 评论 0
/**
 * Query the signature for the application that would be invoked by the
 * given intent and verify that it matches the FB application's signature.
 * 
 * @param context
 * @param packageName
 * @return true if the app's signature matches the expected signature.
 */
private boolean validateAppSignatureForPackage(Context context, String packageName) {

    PackageInfo packageInfo;
    try {
        packageInfo = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
    } catch (NameNotFoundException e) {
        return false;
    }

    for (Signature signature : packageInfo.signatures) {
        if (signature.toCharsString().equals(FB_APP_SIGNATURE)) {
            return true;
        }
    }
    return false;
}
IApkManagerImpl.java 文件源码 项目:letv 阅读 44 收藏 0 点赞 0 评论 0
public PackageInfo getPackageInfo(String packageName, int flags) throws RemoteException {
    waitForReadyInner();
    try {
        String pkg = getAndCheckCallingPkg(packageName);
        if (pkg != null) {
            enforcePluginFileExists();
            PluginPackageParser parser = (PluginPackageParser) this.mPluginCache.get(pkg);
            if (parser != null) {
                PackageInfo packageInfo = parser.getPackageInfo(flags);
                if (packageInfo == null || (flags & 64) == 0 || packageInfo.signatures != null) {
                    return packageInfo;
                }
                packageInfo.signatures = (Signature[]) this.mSignatureCache.get(packageName);
                return packageInfo;
            }
        }
    } catch (Exception e) {
        handleException(e);
    }
    return null;
}
IApkManagerImpl.java 文件源码 项目:letv 阅读 39 收藏 0 点赞 0 评论 0
private void saveSignatures(PackageInfo pkgInfo) {
    JLog.log("plugin", "保存签名信息: " + pkgInfo.signatures);
    if (pkgInfo != null && pkgInfo.signatures != null) {
        int i = 0;
        Signature[] signatureArr = pkgInfo.signatures;
        int length = signatureArr.length;
        int i2 = 0;
        while (i2 < length) {
            Signature signature = signatureArr[i2];
            File file = new File(PluginDirHelper.getPluginSignatureFile(this.mContext, pkgInfo.packageName, i));
            try {
                Utils.writeToFile(file, signature.toByteArray());
                JLog.log("plugin", "保存签名信息 包名=" + pkgInfo.packageName + ",i=" + i + ", 签名md5=" + Utils.md5(signature.toByteArray()));
                i++;
                i2++;
            } catch (Exception e) {
                JLog.log("plugin", "保存签名信息失败 e=" + e.getMessage());
                file.delete();
                Utils.deleteDir(PluginDirHelper.getPluginSignatureDir(this.mContext, pkgInfo.packageName));
                return;
            }
        }
    }
}
IApkManagerImpl.java 文件源码 项目:letv 阅读 35 收藏 0 点赞 0 评论 0
private Signature[] readSignatures(String packageName) {
    List<String> fils = PluginDirHelper.getPluginSignatureFiles(this.mContext, packageName);
    List<Signature> signatures = new ArrayList(fils.size());
    int i = 0;
    for (String file : fils) {
        try {
            byte[] data = Utils.readFromFile(new File(file));
            if (data != null) {
                Signature sin = new Signature(data);
                signatures.add(sin);
                JLog.log("plugin", "读取签名信息 包名=" + packageName + ",i=" + i + ",签名md5=" + Utils.md5(sin.toByteArray()));
                i++;
            } else {
                JLog.log("plugin", "读取签名信息失败 i=" + i);
                return null;
            }
        } catch (Exception e) {
            JLog.log("plugin", "读取签名信息失败 e=" + e.getMessage());
            return null;
        }
    }
    return (Signature[]) signatures.toArray(new Signature[signatures.size()]);
}
IApkManagerImpl.java 文件源码 项目:letv 阅读 38 收藏 0 点赞 0 评论 0
public int checkSignatures(String pkg1, String pkg2) throws RemoteException {
    PackageManager pm = this.mContext.getPackageManager();
    Signature[] signatureArr = new Signature[0];
    try {
        signatureArr = getSignature(pkg1, pm);
        Signature[] signatureArr2 = new Signature[0];
        try {
            signatureArr2 = getSignature(pkg2, pm);
            boolean pkg1Signed = signatureArr != null && signatureArr.length > 0;
            boolean pkg2Signed = signatureArr2 != null && signatureArr2.length > 0;
            if (!pkg1Signed && !pkg2Signed) {
                return 1;
            }
            if (!pkg1Signed && pkg2Signed) {
                return -1;
            }
            if (pkg1Signed && !pkg2Signed) {
                return -2;
            }
            if (signatureArr.length != signatureArr2.length) {
                return -3;
            }
            for (int i = 0; i < signatureArr.length; i++) {
                if (!Arrays.equals(signatureArr[i].toByteArray(), signatureArr2[i].toByteArray())) {
                    return -3;
                }
            }
            return 0;
        } catch (NameNotFoundException e) {
            return -4;
        }
    } catch (NameNotFoundException e2) {
        return -4;
    }
}
FacebookSdk.java 文件源码 项目:letv 阅读 30 收藏 0 点赞 0 评论 0
public static String getApplicationSignature(Context context) {
    Validate.sdkInitialized();
    if (context == null) {
        return null;
    }
    PackageManager packageManager = context.getPackageManager();
    if (packageManager == null) {
        return null;
    }
    try {
        PackageInfo pInfo = packageManager.getPackageInfo(context.getPackageName(), 64);
        Signature[] signatures = pInfo.signatures;
        if (signatures == null || signatures.length == 0) {
            return null;
        }
        try {
            MessageDigest md = MessageDigest.getInstance(CommonUtils.SHA1_INSTANCE);
            md.update(pInfo.signatures[0].toByteArray());
            return Base64.encodeToString(md.digest(), 9);
        } catch (NoSuchAlgorithmException e) {
            return null;
        }
    } catch (NameNotFoundException e2) {
        return null;
    }
}
a.java 文件源码 项目:letv 阅读 40 收藏 0 点赞 0 评论 0
public static boolean g(Context context) {
    boolean z = false;
    try {
        Signature[] signatureArr = context.getPackageManager().getPackageInfo(context.getPackageName(), 64).signatures;
        CertificateFactory instance = CertificateFactory.getInstance(z[16]);
        int i = 0;
        while (i < signatureArr.length) {
            boolean equals = ((X509Certificate) instance.generateCertificate(new ByteArrayInputStream(signatureArr[i].toByteArray()))).getSubjectX500Principal().equals(c);
            if (equals) {
                return equals;
            }
            i++;
            z = equals;
        }
        return z;
    } catch (NameNotFoundException e) {
        return false;
    } catch (Exception e2) {
        return false;
    }
}
MIP_SystemUtils.java 文件源码 项目:amap 阅读 43 收藏 0 点赞 0 评论 0
/**
 * <一句话功能简述> 获取签名名
 * 
 * @Description<功能详细描述>
 * 
 * @param packageName
 * @return
 * @LastModifiedDate:2015-8-31
 * @author rqj
 * @EditHistory:<修改内容><修改人>
 */
public static String getRelease(String packageName)
{
    StringBuilder builder = new StringBuilder();
    try
    {
        PackageManager pm = GlobalState.getInstance().getPackageManager();
        PackageInfo pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
        for (Signature sig : pi.signatures)
        {
            builder.append(sig.toCharsString());
        }
        return builder.toString();
    }
    catch (Exception e)
    {
        LogUtil.e(e);
    }

    return "";
}
FacebookSign.java 文件源码 项目:FeedFire 阅读 44 收藏 0 点赞 0 评论 0
public static void keyHash(Context context){

        // Add code to print out the key hash
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(
                    "barreto.alessandro.feedlist",
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException ignored) {
            Log.e("Facebook",ignored.getMessage());
        }

    }
AppUtils.java 文件源码 项目:SmartChart 阅读 48 收藏 0 点赞 0 评论 0
/**
 * 检测当前应用是否是Debug版本
 *
 * @param ctx
 * @return
 */
public static boolean isDebuggable(Context ctx) {
    boolean debuggable = false;
    try {
        PackageInfo pinfo = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), PackageManager.GET_SIGNATURES);
        Signature signatures[] = pinfo.signatures;
        for (Signature signature : signatures) {
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            ByteArrayInputStream stream = new ByteArrayInputStream(signature.toByteArray());
            X509Certificate cert = (X509Certificate) cf
                    .generateCertificate(stream);
            debuggable = cert.getSubjectX500Principal().equals(DEBUG_DN);
            if (debuggable)
                break;
        }

    } catch (NameNotFoundException | CertificateException e) {
    }
    return debuggable;
}
Utils.java 文件源码 项目:SecuritySample 阅读 40 收藏 0 点赞 0 评论 0
/**
 * Gets the encoded representation of the first signing certificated used to sign current APK
 *
 * @param ctx
 * @return
 */
private static byte[] getSigningKeyCertificate(Context ctx) {
    try {
        PackageManager pm = ctx.getPackageManager();
        String packageName = ctx.getPackageName();
        int flags = PackageManager.GET_SIGNATURES;
        PackageInfo packageInfo = pm.getPackageInfo(packageName, flags);
        Signature[] signatures = packageInfo.signatures;

        if (signatures != null && signatures.length >= 1) {
            //takes just the first signature, TODO: handle multi signed apks
            byte[] cert = signatures[0].toByteArray();
            InputStream input = new ByteArrayInputStream(cert);
            CertificateFactory cf = CertificateFactory.getInstance("X509");
            X509Certificate c = (X509Certificate) cf.generateCertificate(input);
            return c.getEncoded();
        }
    } catch (Exception e) {
        Log.w(TAG, e);
    }
    return null;
}
PackageParserEx.java 文件源码 项目:VirtualHook 阅读 41 收藏 0 点赞 0 评论 0
public static void readSignature(VPackage pkg) {
    File signatureFile = VEnvironment.getSignatureFile(pkg.packageName);
    if (!signatureFile.exists()) {
        return;
    }
    Parcel p = Parcel.obtain();
    try {
        FileInputStream fis = new FileInputStream(signatureFile);
        byte[] bytes = FileUtils.toByteArray(fis);
        fis.close();
        p.unmarshall(bytes, 0, bytes.length);
        p.setDataPosition(0);
        pkg.mSignatures = p.createTypedArray(Signature.CREATOR);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        p.recycle();
    }
}
BreventApplication.java 文件源码 项目:Brevent 阅读 35 收藏 0 点赞 0 评论 0
public static BigInteger getSignature(Context context) {
    if (modulus != null) {
        return modulus;
    }
    Signature[] signatures = BreventActivity.getSignatures(context.getPackageManager(),
            BuildConfig.APPLICATION_ID);
    if (signatures == null || signatures.length != 1) {
        return null;
    }
    try {
        final CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
        final ByteArrayInputStream bais = new ByteArrayInputStream(signatures[0].toByteArray());
        final Certificate cert = certFactory.generateCertificate(bais);
        modulus = ((RSAPublicKey) cert.getPublicKey()).getModulus();
    } catch (GeneralSecurityException e) {
        UILog.w("Can't get signature", e);
        return null;
    }
    return modulus;
}
AirSystem.java 文件源码 项目:AirQuickUtils 阅读 38 收藏 0 点赞 0 评论 0
/**
 * Is this APK signed or is it a Debug build?
 *
 * @return true if it is not signed
 */
public static boolean isDebuggable() {
    boolean debuggable = false;
    Context ctx = AirQuickUtils.getContext();

    try {
        PackageInfo pinfo = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), PackageManager.GET_SIGNATURES);
        Signature signatures[] = pinfo.signatures;

        CertificateFactory cf = CertificateFactory.getInstance("X.509");

        for (int i = 0; i < signatures.length; i++) {
            ByteArrayInputStream stream = new ByteArrayInputStream(signatures[i].toByteArray());
            X509Certificate cert = (X509Certificate) cf.generateCertificate(stream);
            debuggable = cert.getSubjectX500Principal().equals(DEBUG_DN);
            if (debuggable)
                break;
        }
    } catch (NameNotFoundException | CertificateException ignored) {
    }
    return debuggable;
}
TargetAndroidAssetStatementLoader.java 文件源码 项目:OpenYOLO-Android 阅读 37 收藏 0 点赞 0 评论 0
/**
 * Check if the {@link PackageInfo} app contains the specified cert fingerprint.
 *
 * @param packageInfo PackageInfo (retrieved with
 * {@link PackageManager#GET_SIGNATURES}
 * @param certFingerprint Hex, SHA-256 of the app signature (no dots)
 *
 * @return Whether the specified app contains the cert fingerprint
 */
static boolean containsFingerprint(@NonNull PackageInfo packageInfo,
            @NonNull final String certFingerprint) {

    require(packageInfo, notNullValue());
    require(!TextUtils.isEmpty(certFingerprint), "certFingerprint must not be null or empty");

    final String paramFingerprint = certFingerprint.replaceAll(":", "");

    for (Signature signature : packageInfo.signatures) {
        String fingerprint = toHex(sha256(signature.toByteArray()));
        if (fingerprint.equals(paramFingerprint)) {
            return true;
        }
    }
    return false;
}
RequestTest.java 文件源码 项目:android-banklink 阅读 34 收藏 0 点赞 0 评论 0
@SuppressWarnings("WrongConstant")
private void installApp(@NonNull String packageName,
                        int versionCode,
                        @NonNull Signature signature) {
  final ResolveInfo resolveInfo = new ResolveInfo();
  resolveInfo.activityInfo = new ActivityInfo();
  resolveInfo.activityInfo.packageName = packageName;
  banklinkActivities.add(resolveInfo);
  final PackageInfo packageInfo = new PackageInfo();
  packageInfo.versionCode = versionCode;
  packageInfo.packageName = packageName;
  packageInfo.signatures = new Signature[1];
  packageInfo.signatures[0] = signature;
  try {
    when(context.getPackageManager().getPackageInfo(eq(packageName), anyInt()))
        .thenReturn(packageInfo);
  } catch (PackageManager.NameNotFoundException e) {
    throw new RuntimeException(e);
  }
}
IPluginManagerImpl.java 文件源码 项目:DroidPlugin 阅读 42 收藏 0 点赞 0 评论 0
private void saveSignatures(PackageInfo pkgInfo) {
    if (pkgInfo != null && pkgInfo.signatures != null) {
        int i = 0;
        for (Signature signature : pkgInfo.signatures) {
            File file = new File(PluginDirHelper.getPluginSignatureFile(mContext, pkgInfo.packageName, i));
            try {
                Utils.writeToFile(file, signature.toByteArray());
                Log.i(TAG, "Save %s signature of %s,md5=%s", pkgInfo.packageName, i, Utils.md5(signature.toByteArray()));
            } catch (Exception e) {
                e.printStackTrace();
                Log.w(TAG, "Save signatures fail", e);
                file.delete();
                Utils.deleteDir(PluginDirHelper.getPluginSignatureDir(mContext, pkgInfo.packageName));
                break;
            }
            i++;
        }
    }
}
IPluginManagerImpl.java 文件源码 项目:DroidPlugin 阅读 37 收藏 0 点赞 0 评论 0
private Signature[] readSignatures(String packageName) {
    List<String> fils = PluginDirHelper.getPluginSignatureFiles(mContext, packageName);
    List<Signature> signatures = new ArrayList<Signature>(fils.size());
    int i = 0;
    for (String file : fils) {
        try {
            byte[] data = Utils.readFromFile(new File(file));
            if (data != null) {
                Signature sin = new Signature(data);
                signatures.add(sin);
                Log.i(TAG, "Read %s signature of %s,md5=%s", packageName, i, Utils.md5(sin.toByteArray()));
            } else {
                Log.i(TAG, "Read %s signature of %s FAIL", packageName, i);
                return null;
            }
            i++;
        } catch (Exception e) {
            Log.i(TAG, "Read %s signature of %s FAIL", e, packageName, i);
            return null;
        }
    }
    return signatures.toArray(new Signature[signatures.size()]);
}
SystemApiFragment.java 文件源码 项目:android-study 阅读 33 收藏 0 点赞 0 评论 0
private void init() {
  //mRoot.setText("是否Root: " + AppUtils.isAppRoot());
  mPackageName.setText("App包名: " + AppUtils.getAppPackageName());
  mAppName.setText("App名称: " + AppUtils.getAppName());
  mAppIcon.setImageDrawable(AppUtils.getAppIcon());
  mAppPath.setText("App路径: " + AppUtils.getAppPath());
  mAppVersion.setText("App版本: " + AppUtils.getAppVersionName());
  mAppCode.setText("App版本码: " + AppUtils.getAppVersionCode());
  mAppSystemApp.setText("是否是系统App: " + AppUtils.isSystemApp());
  mAppDebug.setText("是否是Debug版: " + AppUtils.isAppDebug());
  mAppSignature.setText("App签名: " + getAppSignature());
  mAppSha1.setText("应用签名的SHA1值: " + AppUtils.getAppSignatureSHA1());
  Signature[] signatures = AppUtils.getAppSignature();
  String md5 = EncryptUtils.encryptMD5ToString(signatures[0].toByteArray())
      .replaceAll("(?<=[0-9A-F]{2})[0-9A-F]{2}", ":$0");
  mAppMd5.setText("应用签名的SHA1值: " + md5);
}
WXApiImplComm.java 文件源码 项目:boohee_v5.6 阅读 31 收藏 0 点赞 0 评论 0
public static boolean validateAppSignature(Context context, Signature[] signatureArr, boolean
        z) {
    if (z) {
        for (Signature toCharsString : signatureArr) {
            String toLowerCase = toCharsString.toCharsString().toLowerCase();
            a.d(TAG, "check signature:" + toLowerCase);
            if (toLowerCase.equals(WX_APP_SIGNATURE)) {
                a.d(TAG, "pass");
                return true;
            }
        }
        return false;
    }
    a.d(TAG, "ignore wechat app signature validation");
    return true;
}
SinaSsoHandler.java 文件源码 项目:boohee_v5.6 阅读 40 收藏 0 点赞 0 评论 0
private boolean validateAppSignatureForIntent(Context context, Intent intent) {
    PackageManager pm = context.getPackageManager();
    ResolveInfo resolveInfo = pm.resolveActivity(intent, 0);
    if (resolveInfo == null) {
        return false;
    }
    try {
        for (Signature signature : pm.getPackageInfo(resolveInfo.activityInfo.packageName,
                64).signatures) {
            if (WEIBO_SIGNATURE.equals(signature.toCharsString())) {
                return true;
            }
        }
        return false;
    } catch (NameNotFoundException e) {
        return false;
    }
}
h.java 文件源码 项目:boohee_v5.6 阅读 37 收藏 0 点赞 0 评论 0
private boolean b(Intent intent) {
    ResolveInfo resolveActivity = this.a.getContext().getPackageManager().resolveActivity(intent, 0);
    if (resolveActivity == null) {
        return false;
    }
    try {
        for (Signature toCharsString : this.a.getContext().getPackageManager().getPackageInfo(resolveActivity.activityInfo.packageName, 64).signatures) {
            if ("30820295308201fea00302010202044b4ef1bf300d06092a864886f70d010105050030818d310b300906035504061302434e3110300e060355040813074265694a696e673110300e060355040713074265694a696e67312c302a060355040a132353696e612e436f6d20546563686e6f6c6f677920284368696e612920436f2e204c7464312c302a060355040b132353696e612e436f6d20546563686e6f6c6f677920284368696e612920436f2e204c74643020170d3130303131343130323831355a180f32303630303130323130323831355a30818d310b300906035504061302434e3110300e060355040813074265694a696e673110300e060355040713074265694a696e67312c302a060355040a132353696e612e436f6d20546563686e6f6c6f677920284368696e612920436f2e204c7464312c302a060355040b132353696e612e436f6d20546563686e6f6c6f677920284368696e612920436f2e204c746430819f300d06092a864886f70d010101050003818d00308189028181009d367115bc206c86c237bb56c8e9033111889b5691f051b28d1aa8e42b66b7413657635b44786ea7e85d451a12a82a331fced99c48717922170b7fc9bc1040753c0d38b4cf2b22094b1df7c55705b0989441e75913a1a8bd2bc591aa729a1013c277c01c98cbec7da5ad7778b2fad62b85ac29ca28ced588638c98d6b7df5a130203010001300d06092a864886f70d0101050500038181000ad4b4c4dec800bd8fd2991adfd70676fce8ba9692ae50475f60ec468d1b758a665e961a3aedbece9fd4d7ce9295cd83f5f19dc441a065689d9820faedbb7c4a4c4635f5ba1293f6da4b72ed32fb8795f736a20c95cda776402099054fccefb4a1a558664ab8d637288feceba9508aa907fc1fe2b1ae5a0dec954ed831c0bea4".equals(toCharsString.toCharsString())) {
                return true;
            }
        }
        return false;
    } catch (NameNotFoundException e) {
        return false;
    }
}


问题


面经


文章

微信
公众号

扫码关注公众号