Add installation tests for APKs of all different signature algorithm
when using v4 along with v3 or v2.

Test: atest android.appsecurity.cts.PkgInstallSignatureVerificationTest#testInstallV4WithV2NoVeritySigner; atest android.appsecurity.cts.PkgInstallSignatureVerificationTest#testInstallV4WithV2VeritySigner; atest android.appsecurity.cts.PkgInstallSignatureVerificationTest#testInstallV4WithV3NoVeritySigner; atest android.appsecurity.cts.PkgInstallSignatureVerificationTest#testInstallV4WithV3VeritySigner

Bug: 155356577
Change-Id: Ia85b383e6713fde53065ffc5babc5c1db0ed9d87
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/README.md b/hostsidetests/appsecurity/res/pkgsigverify/README.md
index 278a960..41b7509 100644
--- a/hostsidetests/appsecurity/res/pkgsigverify/README.md
+++ b/hostsidetests/appsecurity/res/pkgsigverify/README.md
@@ -25,7 +25,8 @@
 Generation of these apks was performed using the `apksigner` command-line tool,
 which lives at `tools/apksig/src/apksigner/java/com/android/apksigner/` in the
 android source tree.  Please refer to the usage instructions there for how to
-sign APKs using different keystores, providers, etc.  
+sign APKs using different keystores, providers, etc.  The generation commands
+for some of the APKs are in `generate-apks.sh`.
 
 ## Invalid cases
 
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/generate-apks.sh b/hostsidetests/appsecurity/res/pkgsigverify/generate-apks.sh
new file mode 100644
index 0000000..5a248dd
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/generate-apks.sh
@@ -0,0 +1,26 @@
+# Generating the APKs for certain methods
+# Run this script from the repo's top-level directory.
+
+# testInstallV4WithV2NoVeritySigner (without verity)
+apksigner sign --v2-signing-enabled true --v3-signing-enabled false --v4-signing-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/dsa-3072.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/dsa-3072.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled true --v3-signing-enabled false --v4-signing-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p256.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p256.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled true --v3-signing-enabled false --v4-signing-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-2048.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-2048.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled true --v3-signing-enabled false --v4-signing-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p384.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p384.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withEC.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled true --v3-signing-enabled false --v4-signing-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-4096.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-4096.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withRSA.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+
+# testInstallV4WithV2VeritySigner (with verity, and only for the DSA key / the smaller-sized keys of RSA/EC, since the verity algorithm is not used otherwise)
+apksigner sign --v2-signing-enabled true --v3-signing-enabled false --v4-signing-enabled --verity-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/dsa-3072.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/dsa-3072.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA-Verity.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled true --v3-signing-enabled false --v4-signing-enabled --verity-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p256.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p256.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC-Verity.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled true --v3-signing-enabled false --v4-signing-enabled --verity-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-2048.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-2048.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA-Verity.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+
+# testInstallV4WithV3NoVeritySigner (without verity)
+apksigner sign --v2-signing-enabled false --v3-signing-enabled true --v4-signing-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/dsa-3072.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/dsa-3072.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled false --v3-signing-enabled true --v4-signing-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p256.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p256.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled false --v3-signing-enabled true --v4-signing-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-2048.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-2048.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled false --v3-signing-enabled true --v4-signing-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p384.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p384.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withEC.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled false --v3-signing-enabled true --v4-signing-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-4096.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-4096.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withRSA.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+
+# testInstallV4WithV3VeritySigner (with verity, and only for the DSA key / the smaller-sized keys of RSA/EC, since the verity algorithm is not used otherwise)
+apksigner sign --v2-signing-enabled false --v3-signing-enabled true --v4-signing-enabled --verity-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/dsa-3072.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/dsa-3072.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA-Verity.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled false --v3-signing-enabled true --v4-signing-enabled --verity-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p256.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/ec-p256.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC-Verity.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
+apksigner sign --v2-signing-enabled false --v3-signing-enabled true --v4-signing-enabled --verity-enabled --key cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-2048.pk8 --cert cts/hostsidetests/appsecurity/certs/pkgsigverify/rsa-2048.x509.pem -out cts/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA-Verity.apk cts/hostsidetests/appsecurity/res/pkgsigverify/original.apk
\ No newline at end of file
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA-Verity.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA-Verity.apk
new file mode 100644
index 0000000..213e198
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA-Verity.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA-Verity.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA-Verity.apk.idsig
new file mode 100644
index 0000000..048af17
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA-Verity.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA.apk
new file mode 100644
index 0000000..a651006
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA.apk.idsig
new file mode 100644
index 0000000..c8946cc
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withDSA.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC-Verity.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC-Verity.apk
new file mode 100644
index 0000000..c978a6e
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC-Verity.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC-Verity.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC-Verity.apk.idsig
new file mode 100644
index 0000000..5fdb129
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC-Verity.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC.apk
new file mode 100644
index 0000000..effc27b
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC.apk.idsig
new file mode 100644
index 0000000..6d2bfc9
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withEC.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA-Verity.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA-Verity.apk
new file mode 100644
index 0000000..1e08644
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA-Verity.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA-Verity.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA-Verity.apk.idsig
new file mode 100644
index 0000000..cae9964
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA-Verity.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA.apk
new file mode 100644
index 0000000..924b9b5
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA.apk.idsig
new file mode 100644
index 0000000..b2de3d2
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha256withRSA.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withEC.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withEC.apk
new file mode 100644
index 0000000..88b0fc3
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withEC.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withEC.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withEC.apk.idsig
new file mode 100644
index 0000000..557d594
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withEC.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withRSA.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withRSA.apk
new file mode 100644
index 0000000..65bc8d8
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withRSA.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withRSA.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withRSA.apk.idsig
new file mode 100644
index 0000000..a07820b
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v2-Sha512withRSA.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA-Verity.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA-Verity.apk
new file mode 100644
index 0000000..14397d7
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA-Verity.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA-Verity.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA-Verity.apk.idsig
new file mode 100644
index 0000000..8f5afd9
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA-Verity.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA.apk
new file mode 100644
index 0000000..c0c219bd
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA.apk.idsig
new file mode 100644
index 0000000..d49906a
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withDSA.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC-Verity.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC-Verity.apk
new file mode 100644
index 0000000..4f02363
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC-Verity.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC-Verity.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC-Verity.apk.idsig
new file mode 100644
index 0000000..e43c5db
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC-Verity.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC.apk
new file mode 100644
index 0000000..b214336
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC.apk.idsig
new file mode 100644
index 0000000..19d38d5
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withEC.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA-Verity.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA-Verity.apk
new file mode 100644
index 0000000..bbbfc8a
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA-Verity.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA-Verity.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA-Verity.apk.idsig
new file mode 100644
index 0000000..baf3dfe
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA-Verity.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA.apk
new file mode 100644
index 0000000..d89010c
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA.apk.idsig
new file mode 100644
index 0000000..3874174
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha256withRSA.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withEC.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withEC.apk
new file mode 100644
index 0000000..4fc5045
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withEC.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withEC.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withEC.apk.idsig
new file mode 100644
index 0000000..4e41817
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withEC.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withRSA.apk b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withRSA.apk
new file mode 100644
index 0000000..2029c67
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withRSA.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withRSA.apk.idsig b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withRSA.apk.idsig
new file mode 100644
index 0000000..e9cd2ca
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v4-digest-v3-Sha512withRSA.apk.idsig
Binary files differ
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/PkgInstallSignatureVerificationTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/PkgInstallSignatureVerificationTest.java
index 23e95f1..406c410 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/PkgInstallSignatureVerificationTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/PkgInstallSignatureVerificationTest.java
@@ -16,6 +16,8 @@
 
 package android.appsecurity.cts;
 
+import static org.junit.Assume.assumeTrue;
+
 import android.platform.test.annotations.SecurityTest;
 
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
@@ -803,6 +805,7 @@
         if (!hasIncrementalFeature()) {
             return;
         }
+
         // APK generated with:
         // apksigner sign --v2-signing-enabled true --v3-signing-enabled false --v4-signing-enabled
         assertInstallV4Succeeds("v4-digest-v2.apk");
@@ -813,6 +816,7 @@
         if (!hasIncrementalFeature()) {
             return;
         }
+
         // APK generated with:
         // apksigner sign --v2-signing-enabled false --v3-signing-enabled true --v4-signing-enabled
         assertInstallV4Succeeds("v4-digest-v3.apk");
@@ -823,11 +827,74 @@
         if (!hasIncrementalFeature()) {
             return;
         }
+
         // APK generated with:
         // apksigner sign --v2-signing-enabled true --v3-signing-enabled true --v4-signing-enabled
         assertInstallV4Succeeds("v4-digest-v2v3.apk");
     }
 
+    public void testInstallV4WithV2NoVeritySigner() throws Exception {
+        // V4 is only enabled on devices with Incremental feature
+        if (!hasIncrementalFeature()) {
+            return;
+        }
+
+        // APK generated with:
+        // --v2-signing-enabled true --v3-signing-enabled false --v4-signing-enabled
+        // Full commands in generate-apks.sh
+        assertInstallV4Succeeds("v4-digest-v2-Sha256withDSA.apk");
+        assertInstallV4Succeeds("v4-digest-v2-Sha256withEC.apk");
+        assertInstallV4Succeeds("v4-digest-v2-Sha256withRSA.apk");
+        assertInstallV4Succeeds("v4-digest-v2-Sha512withEC.apk");
+        assertInstallV4Succeeds("v4-digest-v2-Sha512withRSA.apk");
+    }
+
+    public void testInstallV4WithV2VeritySigner() throws Exception {
+        // V4 is only enabled on devices with Incremental feature
+        if (!hasIncrementalFeature()) {
+            return;
+        }
+
+        // APK generated with:
+        // --v2-signing-enabled true --v3-signing-enabled false
+        // --v4-signing-enabled --verity-enabled
+        // Full commands in generate-apks.sh
+        assertInstallV4Succeeds("v4-digest-v2-Sha256withDSA-Verity.apk");
+        assertInstallV4Succeeds("v4-digest-v2-Sha256withEC-Verity.apk");
+        assertInstallV4Succeeds("v4-digest-v2-Sha256withRSA-Verity.apk");
+    }
+
+    public void testInstallV4WithV3NoVeritySigner() throws Exception {
+        // V4 is only enabled on devices with Incremental feature
+        if (!hasIncrementalFeature()) {
+            return;
+        }
+
+        // APK generated with:
+        // --v2-signing-enabled false --v3-signing-enabled true --v4-signing-enabled
+        // Full commands in generate-apks.sh
+        assertInstallV4Succeeds("v4-digest-v3-Sha256withDSA.apk");
+        assertInstallV4Succeeds("v4-digest-v3-Sha256withEC.apk");
+        assertInstallV4Succeeds("v4-digest-v3-Sha256withRSA.apk");
+        assertInstallV4Succeeds("v4-digest-v3-Sha512withEC.apk");
+        assertInstallV4Succeeds("v4-digest-v3-Sha512withRSA.apk");
+    }
+
+    public void testInstallV4WithV3VeritySigner() throws Exception {
+        // V4 is only enabled on devices with Incremental feature
+        if (!hasIncrementalFeature()) {
+            return;
+        }
+
+        // APK generated with:
+        // --v2-signing-enabled false --v3-signing-enabled true
+        // --v4-signing-enabled --verity-enabled
+        // Full commands in generate-apks.sh
+        assertInstallV4Succeeds("v4-digest-v3-Sha256withDSA-Verity.apk");
+        assertInstallV4Succeeds("v4-digest-v3-Sha256withEC-Verity.apk");
+        assertInstallV4Succeeds("v4-digest-v3-Sha256withRSA-Verity.apk");
+    }
+
     public void testInstallV4WithV2SignerDoesNotVerify() throws Exception {
         // V4 is only enabled on devices with Incremental feature
         if (!hasIncrementalFeature()) {
@@ -917,6 +984,12 @@
         if (!installResult.equals("Success\n")) {
             fail("Failed to install " + apkFilenameInResources + ": " + installResult);
         }
+        try {
+            uninstallPackage();
+        } catch (Exception e) {
+            throw new RuntimeException(
+                    "Failed to uninstall after installing " + apkFilenameInResources, e);
+        }
     }
 
     private void assertInstallV4FailsWithError(String apkFilenameInResources, String errorSubstring)