diff --git a/core/java/android/util/apk/SourceStampVerifier.java b/core/java/android/util/apk/SourceStampVerifier.java index f9e312146ccf0..11d7a005a6479 100644 --- a/core/java/android/util/apk/SourceStampVerifier.java +++ b/core/java/android/util/apk/SourceStampVerifier.java @@ -142,16 +142,21 @@ public abstract class SourceStampVerifier { private static SourceStampVerificationResult verify( RandomAccessFile apk, byte[] sourceStampCertificateDigest, byte[] manifestBytes) { + SignatureInfo signatureInfo; try { - SignatureInfo signatureInfo = + signatureInfo = ApkSigningBlockUtils.findSignature(apk, SOURCE_STAMP_BLOCK_ID); + } catch (IOException | SignatureNotFoundException | RuntimeException e) { + return SourceStampVerificationResult.notPresent(); + } + try { Map> signatureSchemeApkContentDigests = getSignatureSchemeApkContentDigests(apk, manifestBytes); return verify( signatureInfo, getSignatureSchemeDigests(signatureSchemeApkContentDigests), sourceStampCertificateDigest); - } catch (IOException | SignatureNotFoundException | RuntimeException e) { + } catch (IOException | RuntimeException e) { return SourceStampVerificationResult.notVerified(); } } diff --git a/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java b/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java index bc0bddba2f207..e0c583ddc9787 100644 --- a/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java +++ b/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java @@ -100,7 +100,7 @@ public class SourceStampVerifierTest { SourceStampVerificationResult result = SourceStampVerifier.verify(mPrimaryApk.getAbsolutePath()); - assertTrue(result.isPresent()); + assertFalse(result.isPresent()); assertFalse(result.isVerified()); assertNull(result.getCertificate()); }