release-request-d8901a87-7dd0-4cc8-a44e-d04982e429da-for-git_oc-mr1-release-4198291 snap-temp-L50900000084068812
Change-Id: I19aff53d1dee20843225ad4f08e1c2df8f544e71
diff --git a/src/test/java/com/android/apksig/ApkVerifierTest.java b/src/test/java/com/android/apksig/ApkVerifierTest.java
index 2bb3487..05ffafb 100644
--- a/src/test/java/com/android/apksig/ApkVerifierTest.java
+++ b/src/test/java/com/android/apksig/ApkVerifierTest.java
@@ -714,6 +714,57 @@
assertVerified(verify("mismatched-compression-method.apk"));
}
+ @Test
+ public void testV1SignedAttrs() throws Exception {
+ assertVerified(verify("v1-only-with-signed-attrs.apk"));
+ }
+
+ @Test
+ public void testV1SignedAttrsNotInDerOrder() throws Exception {
+ // Android does not re-order SignedAttributes despite it being a SET OF. Pre-N, Android
+ // treated them as SEQUENCE OF, meaning no re-ordering is necessary. From N onwards, it
+ // treats them as SET OF, but does not re-encode into SET OF during verification if all
+ // attributes parsed fine.
+ assertVerified(verify("v1-only-with-signed-attrs-wrong-order.apk"));
+ }
+
+ @Test
+ public void testV1SignedAttrsMissingContentType() throws Exception {
+ // SignedAttributes must contain ContentType
+ assertVerificationFailure(
+ verify("v1-only-with-signed-attrs-missing-content-type.apk"),
+ Issue.JAR_SIG_VERIFY_EXCEPTION);
+ }
+
+ @Test
+ public void testV1SignedAttrsWrongContentType() throws Exception {
+ assertVerificationFailure(
+ verify("v1-only-with-signed-attrs-wrong-content-type.apk"),
+ Issue.JAR_SIG_DID_NOT_VERIFY);
+ }
+
+ @Test
+ public void testV1SignedAttrsMultipleGoodDigests() throws Exception {
+ // Only one digest must be present SignedAttributes
+ assertVerificationFailure(
+ verify("v1-only-with-signed-attrs-multiple-good-digests.apk"),
+ Issue.JAR_SIG_PARSE_EXCEPTION);
+ }
+
+ @Test
+ public void testV1SignedAttrsWrongDigest() throws Exception {
+ assertVerificationFailure(
+ verify("v1-only-with-signed-attrs-wrong-digest.apk"),
+ Issue.JAR_SIG_DID_NOT_VERIFY);
+ }
+
+ @Test
+ public void testV1SignedAttrsWrongSignature() throws Exception {
+ assertVerificationFailure(
+ verify("v1-only-with-signed-attrs-wrong-signature.apk"),
+ Issue.JAR_SIG_DID_NOT_VERIFY);
+ }
+
private ApkVerifier.Result verify(String apkFilenameInResources)
throws IOException, ApkFormatException, NoSuchAlgorithmException {
return verify(apkFilenameInResources, null, null);
@@ -817,7 +868,8 @@
if (msg.length() > 0) {
msg.append('\n');
}
- msg.append("JAR signer ").append(signerName).append(": ").append(issue);
+ msg.append("JAR signer ").append(signerName).append(": ")
+ .append(issue.getIssue()).append(" ").append(issue);
}
}
for (ApkVerifier.Result.V2SchemeSignerInfo signer : result.getV2SchemeSigners()) {
diff --git a/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-missing-content-type.apk b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-missing-content-type.apk
new file mode 100644
index 0000000..0a3ae81
--- /dev/null
+++ b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-missing-content-type.apk
Binary files differ
diff --git a/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-multiple-good-digests.apk b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-multiple-good-digests.apk
new file mode 100644
index 0000000..e207261
--- /dev/null
+++ b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-multiple-good-digests.apk
Binary files differ
diff --git a/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-content-type.apk b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-content-type.apk
new file mode 100644
index 0000000..37b8560
--- /dev/null
+++ b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-content-type.apk
Binary files differ
diff --git a/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-digest.apk b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-digest.apk
new file mode 100644
index 0000000..9968555
--- /dev/null
+++ b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-digest.apk
Binary files differ
diff --git a/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-order.apk b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-order.apk
new file mode 100644
index 0000000..8a7c53e
--- /dev/null
+++ b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-order.apk
Binary files differ
diff --git a/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-signature.apk b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-signature.apk
new file mode 100644
index 0000000..a686fbf
--- /dev/null
+++ b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs-wrong-signature.apk
Binary files differ
diff --git a/src/test/resources/com/android/apksig/v1-only-with-signed-attrs.apk b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs.apk
new file mode 100644
index 0000000..49b1d83
--- /dev/null
+++ b/src/test/resources/com/android/apksig/v1-only-with-signed-attrs.apk
Binary files differ