public static boolean verifyApk(File file) throws IOException { ApkVerifier verifier = new Builder(file).build(); try { Result result = verifier.verify(); return result.isVerified() && result.isVerifiedUsingV1Scheme() && result.isVerifiedUsingV2Scheme(); } catch (ApkFormatException e) { throw new IOException(e); } catch (NoSuchAlgorithmException e) { throw new IOException(e); } }
builder.escape(String.format(result.isVerifiedUsingV2Scheme() ? sigSucc : sigFail, 2)); builder.append("</h2>\n");
public void testOverrideSignature() throws IOException, ApkFormatException, NoSuchAlgorithmException { File f = newTestFile(); // don't write with APK Signature Scheme v2 Block ID 0x7109871a PackerCommon.writeString(f, "OverrideSignatureSchemeBlock", 0x7109871a); assertEquals("OverrideSignatureSchemeBlock", PackerCommon.readString(f, 0x7109871a)); ApkVerifier verifier = new Builder(f).build(); Result result = verifier.verify(); final List<IssueWithParams> errors = result.getErrors(); if (errors != null && errors.size() > 0) { for (IssueWithParams error : errors) { System.out.println("testOverrideSignature " + error); } } assertTrue(result.containsErrors()); assertFalse(result.isVerified()); assertFalse(result.isVerifiedUsingV1Scheme()); assertFalse(result.isVerifiedUsingV2Scheme()); }
if ((result.isVerifiedUsingV1Scheme()) && (result.isVerifiedUsingV2Scheme())) { ArrayList<Result.V1SchemeSignerInfo> v1Signers = new ArrayList<>(result.getV1SchemeSigners()); if (result.isVerifiedUsingV2Scheme()) { for (Result.V2SchemeSignerInfo signerInfo : result.getV2SchemeSigners()) { result.addSignerCertificate(signerInfo.getCertificate());
logMsg.append("Verifies\n"); logMsg.append("Verified using v1 scheme (JAR signing): ").append(apkVerifierResult.isVerifiedUsingV1Scheme()); logMsg.append("Verified using v2 scheme (APK Signature Scheme v2): ").append(apkVerifierResult.isVerifiedUsingV2Scheme()); logMsg.append("Number of signers: ").append(signerCertificates.size()); return new Result(false, warnings, errors, logMsg.toString(), apkVerifierResult.isVerifiedUsingV1Scheme(), apkVerifierResult.isVerifiedUsingV2Scheme(), certInfoList); return new Result(true, warnings, errors, logMsg.toString(), apkVerifierResult.isVerifiedUsingV1Scheme(), apkVerifierResult.isVerifiedUsingV2Scheme(), certInfoList);
public static boolean apkVerified(File f) throws ApkFormatException, NoSuchAlgorithmException, IOException { ApkVerifier verifier = new Builder(f).build(); Result result = verifier.verify(); return result.isVerified() && result.isVerifiedUsingV1Scheme() && result.isVerifiedUsingV2Scheme() && !result.containsErrors(); } }