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
