xtest: optionally skip some slow tests

Moves some slow tests to level 1 instead of level 0 to speed up the
default tests.

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
diff --git a/host/xtest/xtest_1000.c b/host/xtest/xtest_1000.c
index 456424f..9210477 100644
--- a/host/xtest/xtest_1000.c
+++ b/host/xtest/xtest_1000.c
@@ -1177,7 +1177,10 @@
 	int i;
 	double mean_concurrency;
 	double concurrency;
-	const int nb_loops = 50;
+	int nb_loops = 50;
+
+	if (level == 0)
+		nb_loops /= 2;
 
 	mean_concurrency = 0;
 	for (i = 0; i < nb_loops; i++) {
diff --git a/host/xtest/xtest_4000.c b/host/xtest/xtest_4000.c
index c38ea0d..d92296e 100644
--- a/host/xtest/xtest_4000.c
+++ b/host/xtest/xtest_4000.c
@@ -2936,8 +2936,8 @@
 		  opt_salt(vect ## _salt_len) \
 	  } }
 
-#define XTEST_AC_RSA_CASE(algo, mode, vect, opt_crt_array, opt_salt) \
-	XTEST_AC_CASE(0, algo, mode, vect, \
+#define XTEST_AC_RSA_CASE(level, algo, mode, vect, opt_crt_array, opt_salt) \
+	XTEST_AC_CASE(level, algo, mode, vect, \
 		      XTEST_AC_RSA_UNION(vect, opt_crt_array, opt_salt))
 
 #define XTEST_AC_DSA_UNION(vect) \
@@ -2964,201 +2964,237 @@
 
 static const struct xtest_ac_case xtest_ac_cases[] = {
 	/* RSA test without crt parameters */
-	XTEST_AC_RSA_CASE(TEE_ALG_RSA_NOPAD, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSA_NOPAD, TEE_MODE_ENCRYPT,
 			  ac_rsassa_vect1, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSA_NOPAD, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSA_NOPAD, TEE_MODE_DECRYPT,
 			  ac_rsassa_vect1, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSA_NOPAD, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSA_NOPAD, TEE_MODE_ENCRYPT,
 			  ac_rsassa_vect2, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSA_NOPAD, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSA_NOPAD, TEE_MODE_DECRYPT,
 			  ac_rsassa_vect2, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect3, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect3, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect4, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect4, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect5, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect5, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect6, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect6, NULL_ARRAY, WITHOUT_SALT),
-
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect7, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect7, NULL_ARRAY, WITHOUT_SALT),
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+			  ac_rsassa_vect8, NULL_ARRAY, WITHOUT_SALT),
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+			  ac_rsassa_vect8, NULL_ARRAY, WITHOUT_SALT),
 
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
-			  ac_rsassa_vect8, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
-			  ac_rsassa_vect8, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA224, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA224, TEE_MODE_SIGN,
 			  ac_rsassa_vect16, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA224, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA224, TEE_MODE_VERIFY,
 			  ac_rsassa_vect16, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA256, TEE_MODE_SIGN,
+
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA256, TEE_MODE_SIGN,
 			  ac_rsassa_vect9, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA256, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA256, TEE_MODE_VERIFY,
 			  ac_rsassa_vect9, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA384, TEE_MODE_SIGN,
+
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA384, TEE_MODE_SIGN,
 			  ac_rsassa_vect10, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA384, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA384, TEE_MODE_VERIFY,
 			  ac_rsassa_vect10, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA512, TEE_MODE_SIGN,
+
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA512, TEE_MODE_SIGN,
 			  ac_rsassa_vect11, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA512, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA512, TEE_MODE_VERIFY,
 			  ac_rsassa_vect11, NULL_ARRAY, WITHOUT_SALT),
 
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA1,
+			  TEE_MODE_VERIFY,
 			  ac_rsassa_vect12, NULL_ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect12, NULL_ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA224, TEE_MODE_VERIFY,
+
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA224,
+			  TEE_MODE_VERIFY,
 			  ac_rsassa_vect17, NULL_ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA224, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA224,
+			  TEE_MODE_SIGN,
 			  ac_rsassa_vect17, NULL_ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256, TEE_MODE_VERIFY,
+
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256,
+			  TEE_MODE_VERIFY,
 			  ac_rsassa_vect13, NULL_ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256,
+			  TEE_MODE_SIGN,
 			  ac_rsassa_vect13, NULL_ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA384, TEE_MODE_VERIFY,
+
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA384,
+			  TEE_MODE_VERIFY,
 			  ac_rsassa_vect14, NULL_ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA384, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA384,
+			  TEE_MODE_SIGN,
 			  ac_rsassa_vect14, NULL_ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA512, TEE_MODE_VERIFY,
+
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA512,
+			  TEE_MODE_VERIFY,
 			  ac_rsassa_vect15, NULL_ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA512, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA512,
+			  TEE_MODE_SIGN,
 			  ac_rsassa_vect15, NULL_ARRAY, WITH_SALT),
 
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect1, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect1, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect2, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect2, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect15, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect15, NULL_ARRAY, WITHOUT_SALT),
 
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_DECRYPT,
 			  ac_rsaes_oaep_vect1, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_ENCRYPT,
 			  ac_rsaes_oaep_vect1, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_DECRYPT,
 			  ac_rsaes_oaep_vect2, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_ENCRYPT,
 			  ac_rsaes_oaep_vect2, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_DECRYPT,
 			  ac_rsaes_oaep_vect10, NULL_ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_ENCRYPT,
 			  ac_rsaes_oaep_vect10, NULL_ARRAY, WITHOUT_SALT),
 
 	/* RSA test with crt parameters */
-	XTEST_AC_RSA_CASE(TEE_ALG_RSA_NOPAD, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSA_NOPAD, TEE_MODE_ENCRYPT,
 			  ac_rsassa_vect1, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSA_NOPAD, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSA_NOPAD, TEE_MODE_DECRYPT,
 			  ac_rsassa_vect1, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSA_NOPAD, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSA_NOPAD, TEE_MODE_ENCRYPT,
 			  ac_rsassa_vect2, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSA_NOPAD, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSA_NOPAD, TEE_MODE_DECRYPT,
 			  ac_rsassa_vect2, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect3, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect3, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect4, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect4, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect5, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect5, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect6, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect6, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect7, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect7, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect8, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA1, TEE_MODE_VERIFY,
 			  ac_rsassa_vect8, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA256, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA256, TEE_MODE_SIGN,
 			  ac_rsassa_vect9, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA256, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_V1_5_SHA256, TEE_MODE_VERIFY,
 			  ac_rsassa_vect9, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA384, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA384, TEE_MODE_SIGN,
 			  ac_rsassa_vect10, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA384, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA384, TEE_MODE_VERIFY,
 			  ac_rsassa_vect10, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA512, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA512, TEE_MODE_SIGN,
 			  ac_rsassa_vect11, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_V1_5_SHA512, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_V1_5_SHA512, TEE_MODE_VERIFY,
 			  ac_rsassa_vect11, ARRAY, WITHOUT_SALT),
 
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA1, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA1,
+			  TEE_MODE_VERIFY,
 			  ac_rsassa_vect12, ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA1, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1,TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA1, TEE_MODE_SIGN,
 			  ac_rsassa_vect12, ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA224, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA224,
+			  TEE_MODE_VERIFY,
 			  ac_rsassa_vect17, ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA224, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA224,
+			  TEE_MODE_SIGN,
 			  ac_rsassa_vect17, ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256,
+			  TEE_MODE_VERIFY,
 			  ac_rsassa_vect13, ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256,
+			  TEE_MODE_SIGN,
 			  ac_rsassa_vect13, ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA384, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA384,
+			  TEE_MODE_VERIFY,
 			  ac_rsassa_vect14, ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA384, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA384,
+			  TEE_MODE_SIGN,
 			  ac_rsassa_vect14, ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA512, TEE_MODE_VERIFY,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA512,
+			  TEE_MODE_VERIFY,
 			  ac_rsassa_vect15, ARRAY, WITH_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA512, TEE_MODE_SIGN,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA512,
+			  TEE_MODE_SIGN,
 			  ac_rsassa_vect15, ARRAY, WITH_SALT),
 
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect1, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect1, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect2, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect2, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_DECRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect15, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_V1_5, TEE_MODE_ENCRYPT,
 			  ac_rsaes_pkcs1_v1_5_vect15, ARRAY, WITHOUT_SALT),
 
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_DECRYPT,
 			  ac_rsaes_oaep_vect1, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(0, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_ENCRYPT,
 			  ac_rsaes_oaep_vect1, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_DECRYPT,
 			  ac_rsaes_oaep_vect2, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_ENCRYPT,
 			  ac_rsaes_oaep_vect2, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_DECRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_DECRYPT,
 			  ac_rsaes_oaep_vect10, ARRAY, WITHOUT_SALT),
-	XTEST_AC_RSA_CASE(TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1, TEE_MODE_ENCRYPT,
+	XTEST_AC_RSA_CASE(1, TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1,
+			  TEE_MODE_ENCRYPT,
 			  ac_rsaes_oaep_vect10, ARRAY, WITHOUT_SALT),
 
 	/* DSA tests */
 	/* [mod = L=1024, N=160, SHA-1] */
-	XTEST_AC_DSA_CASE(0, TEE_ALG_DSA_SHA1, TEE_MODE_VERIFY, ac_dsa_vect1),
-	XTEST_AC_DSA_CASE(0, TEE_ALG_DSA_SHA1, TEE_MODE_SIGN, ac_dsa_vect1),
+	XTEST_AC_DSA_CASE(1, TEE_ALG_DSA_SHA1, TEE_MODE_VERIFY, ac_dsa_vect1),
+	XTEST_AC_DSA_CASE(1, TEE_ALG_DSA_SHA1, TEE_MODE_SIGN, ac_dsa_vect1),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA1, TEE_MODE_VERIFY, ac_dsa_vect2),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA1, TEE_MODE_SIGN, ac_dsa_vect2),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA1, TEE_MODE_VERIFY, ac_dsa_vect3),
@@ -3193,8 +3229,8 @@
 	/* [mod = L=1024, N=160, SHA-512] - GP NOT SUPPORTED */
 	/* [mod = L=2048, N=224, SHA-1] - GP NOT SUPPORTED */
 	/* [mod = L=2048, N=224, SHA-224] */
-	XTEST_AC_DSA_CASE(0, TEE_ALG_DSA_SHA224, TEE_MODE_VERIFY, ac_dsa_vect91),
-	XTEST_AC_DSA_CASE(0, TEE_ALG_DSA_SHA224, TEE_MODE_SIGN, ac_dsa_vect91),
+	XTEST_AC_DSA_CASE(1, TEE_ALG_DSA_SHA224, TEE_MODE_VERIFY, ac_dsa_vect91),
+	XTEST_AC_DSA_CASE(1, TEE_ALG_DSA_SHA224, TEE_MODE_SIGN, ac_dsa_vect91),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA224, TEE_MODE_VERIFY, ac_dsa_vect92),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA224, TEE_MODE_SIGN, ac_dsa_vect92),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA224, TEE_MODE_VERIFY, ac_dsa_vect93),
@@ -3258,8 +3294,8 @@
 	/* [mod = L=2048, N=224, SHA-512] - GP NOT SUPPORTED */
 	/* [mod = L=2048, N=256, SHA-1] - GP NOT SUPPORTED */
 	/* [mod = L=2048, N=256, SHA-224] */
-	XTEST_AC_DSA_CASE(0, TEE_ALG_DSA_SHA224, TEE_MODE_VERIFY, ac_dsa_vect166),
-	XTEST_AC_DSA_CASE(0, TEE_ALG_DSA_SHA224, TEE_MODE_SIGN, ac_dsa_vect166),
+	XTEST_AC_DSA_CASE(1, TEE_ALG_DSA_SHA224, TEE_MODE_VERIFY, ac_dsa_vect166),
+	XTEST_AC_DSA_CASE(1, TEE_ALG_DSA_SHA224, TEE_MODE_SIGN, ac_dsa_vect166),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA224, TEE_MODE_VERIFY, ac_dsa_vect167),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA224, TEE_MODE_SIGN, ac_dsa_vect167),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA224, TEE_MODE_VERIFY, ac_dsa_vect168),
@@ -3289,8 +3325,8 @@
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA224, TEE_MODE_VERIFY, ac_dsa_vect180),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA224, TEE_MODE_SIGN, ac_dsa_vect180),
 	/* [mod = L=2048, N=256, SHA-256] */
-	XTEST_AC_DSA_CASE(0, TEE_ALG_DSA_SHA256, TEE_MODE_VERIFY, ac_dsa_vect181),
-	XTEST_AC_DSA_CASE(0, TEE_ALG_DSA_SHA256, TEE_MODE_SIGN, ac_dsa_vect181),
+	XTEST_AC_DSA_CASE(1, TEE_ALG_DSA_SHA256, TEE_MODE_VERIFY, ac_dsa_vect181),
+	XTEST_AC_DSA_CASE(1, TEE_ALG_DSA_SHA256, TEE_MODE_SIGN, ac_dsa_vect181),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA256, TEE_MODE_VERIFY, ac_dsa_vect182),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA256, TEE_MODE_SIGN, ac_dsa_vect182),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA256, TEE_MODE_VERIFY, ac_dsa_vect183),
@@ -3324,8 +3360,8 @@
 	/* [mod = L=3072, N=256, SHA-1] - GP NOT SUPPORTED */
 	/* [mod = L=3072, N=256, SHA-224] - GP NOT SUPPORTED */
 	/* [mod = L=3072, N=256, SHA-256] */
-	XTEST_AC_DSA_CASE(0, TEE_ALG_DSA_SHA256, TEE_MODE_VERIFY, ac_dsa_vect256),
-	XTEST_AC_DSA_CASE(0, TEE_ALG_DSA_SHA256, TEE_MODE_SIGN, ac_dsa_vect256),
+	XTEST_AC_DSA_CASE(1, TEE_ALG_DSA_SHA256, TEE_MODE_VERIFY, ac_dsa_vect256),
+	XTEST_AC_DSA_CASE(1, TEE_ALG_DSA_SHA256, TEE_MODE_SIGN, ac_dsa_vect256),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA256, TEE_MODE_VERIFY, ac_dsa_vect257),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA256, TEE_MODE_SIGN, ac_dsa_vect257),
 	XTEST_AC_DSA_CASE(15, TEE_ALG_DSA_SHA256, TEE_MODE_VERIFY, ac_dsa_vect258),
@@ -3420,9 +3456,9 @@
 	XTEST_AC_ECDSA_CASE(15, TEE_ALG_ECDSA_P192, TEE_MODE_SIGN,
 			    nist_186_2_ecdsa_testvector_15),
 	/* [P-224] */
-	XTEST_AC_ECDSA_CASE(0, TEE_ALG_ECDSA_P224, TEE_MODE_VERIFY,
+	XTEST_AC_ECDSA_CASE(1, TEE_ALG_ECDSA_P224, TEE_MODE_VERIFY,
 			    nist_186_2_ecdsa_testvector_16),
-	XTEST_AC_ECDSA_CASE(0, TEE_ALG_ECDSA_P224, TEE_MODE_SIGN,
+	XTEST_AC_ECDSA_CASE(1, TEE_ALG_ECDSA_P224, TEE_MODE_SIGN,
 			    nist_186_2_ecdsa_testvector_16),
 	XTEST_AC_ECDSA_CASE(15, TEE_ALG_ECDSA_P224, TEE_MODE_VERIFY,
 			    nist_186_2_ecdsa_testvector_17),
@@ -3481,9 +3517,9 @@
 	XTEST_AC_ECDSA_CASE(15, TEE_ALG_ECDSA_P224, TEE_MODE_SIGN,
 			    nist_186_2_ecdsa_testvector_30),
 	/* [P-256] */
-	XTEST_AC_ECDSA_CASE(0, TEE_ALG_ECDSA_P256, TEE_MODE_VERIFY,
+	XTEST_AC_ECDSA_CASE(1, TEE_ALG_ECDSA_P256, TEE_MODE_VERIFY,
 			    nist_186_2_ecdsa_testvector_31),
-	XTEST_AC_ECDSA_CASE(0, TEE_ALG_ECDSA_P256, TEE_MODE_SIGN,
+	XTEST_AC_ECDSA_CASE(1, TEE_ALG_ECDSA_P256, TEE_MODE_SIGN,
 			    nist_186_2_ecdsa_testvector_31),
 	XTEST_AC_ECDSA_CASE(15, TEE_ALG_ECDSA_P256, TEE_MODE_VERIFY,
 			    nist_186_2_ecdsa_testvector_32),
@@ -3542,9 +3578,9 @@
 	XTEST_AC_ECDSA_CASE(15, TEE_ALG_ECDSA_P256, TEE_MODE_SIGN,
 			    nist_186_2_ecdsa_testvector_45),
 	/* [P-384] */
-	XTEST_AC_ECDSA_CASE(0, TEE_ALG_ECDSA_P384, TEE_MODE_VERIFY,
+	XTEST_AC_ECDSA_CASE(1, TEE_ALG_ECDSA_P384, TEE_MODE_VERIFY,
 			    nist_186_2_ecdsa_testvector_46),
-	XTEST_AC_ECDSA_CASE(0, TEE_ALG_ECDSA_P384, TEE_MODE_SIGN,
+	XTEST_AC_ECDSA_CASE(1, TEE_ALG_ECDSA_P384, TEE_MODE_SIGN,
 			    nist_186_2_ecdsa_testvector_46),
 	XTEST_AC_ECDSA_CASE(15, TEE_ALG_ECDSA_P384, TEE_MODE_VERIFY,
 			    nist_186_2_ecdsa_testvector_47),
@@ -3603,9 +3639,9 @@
 	XTEST_AC_ECDSA_CASE(15, TEE_ALG_ECDSA_P384, TEE_MODE_SIGN,
 			    nist_186_2_ecdsa_testvector_60),
 	/* [P-521] */
-	XTEST_AC_ECDSA_CASE(0, TEE_ALG_ECDSA_P521, TEE_MODE_VERIFY,
+	XTEST_AC_ECDSA_CASE(1, TEE_ALG_ECDSA_P521, TEE_MODE_VERIFY,
 			    nist_186_2_ecdsa_testvector_61),
-	XTEST_AC_ECDSA_CASE(0, TEE_ALG_ECDSA_P521, TEE_MODE_SIGN,
+	XTEST_AC_ECDSA_CASE(1, TEE_ALG_ECDSA_P521, TEE_MODE_SIGN,
 			    nist_186_2_ecdsa_testvector_61),
 	XTEST_AC_ECDSA_CASE(15, TEE_ALG_ECDSA_P521, TEE_MODE_VERIFY,
 			    nist_186_2_ecdsa_testvector_62),
@@ -4413,34 +4449,35 @@
 	size_t n;
 	uint32_t key_size;
 	static const struct {
+		unsigned level;
 		const char *name;
 		uint32_t key_type;
 		uint32_t quanta;
 		uint32_t min_size;
 		uint32_t max_size;
 	} key_types[] = {
-		{ "AES", TEE_TYPE_AES, 64, 128,
+		{ 0, "AES", TEE_TYPE_AES, 64, 128,
 		  256 /* valid sizes 128, 192, 256 */ },
-		{ "DES", TEE_TYPE_DES, 56, 56, 56 /* valid size 56 */ },
-		{ "DES3", TEE_TYPE_DES3, 56, 112,
+		{ 0, "DES", TEE_TYPE_DES, 56, 56, 56 /* valid size 56 */ },
+		{ 0, "DES3", TEE_TYPE_DES3, 56, 112,
 		  168 /* valid sizes 112, 168 */ },
-		{ "HMAC-MD5", TEE_TYPE_HMAC_MD5, 8, 64, 512 },
-		{ "HMAC-SHA1", TEE_TYPE_HMAC_SHA1, 8, 80, 512 },
-		{ "HMAC-SHA224", TEE_TYPE_HMAC_SHA224, 8, 112, 512 },
-		{ "HMAC-SHA256", TEE_TYPE_HMAC_SHA256, 8, 192, 1024 },
-		{ "HMAC-SHA384", TEE_TYPE_HMAC_SHA384, 8, 256, 1024 },
-		{ "HMAC-SHA512", TEE_TYPE_HMAC_SHA512, 8, 256, 1024 },
-		{ "Generic secret", TEE_TYPE_GENERIC_SECRET, 8, 128, 4096 },
-		{ "RSA-2048", TEE_TYPE_RSA_KEYPAIR, 1, 2048, 2048 },
+		{ 0, "HMAC-MD5", TEE_TYPE_HMAC_MD5, 8, 64, 512 },
+		{ 0, "HMAC-SHA1", TEE_TYPE_HMAC_SHA1, 8, 80, 512 },
+		{ 0, "HMAC-SHA224", TEE_TYPE_HMAC_SHA224, 8, 112, 512 },
+		{ 0, "HMAC-SHA256", TEE_TYPE_HMAC_SHA256, 8, 192, 1024 },
+		{ 0, "HMAC-SHA384", TEE_TYPE_HMAC_SHA384, 8, 256, 1024 },
+		{ 0, "HMAC-SHA512", TEE_TYPE_HMAC_SHA512, 8, 256, 1024 },
+		{ 0, "Generic secret", TEE_TYPE_GENERIC_SECRET, 8, 128, 4096 },
+		{ 1, "RSA-2048", TEE_TYPE_RSA_KEYPAIR, 1, 2048, 2048 },
 
 		/* New tests added to check non-regression of issue #5398 */
-		{ "RSA-256", TEE_TYPE_RSA_KEYPAIR, 1, 256, 256 },
-		{ "RSA-384", TEE_TYPE_RSA_KEYPAIR, 1, 384, 384 },
-		{ "RSA-512", TEE_TYPE_RSA_KEYPAIR, 1, 512, 512 },
-		{ "RSA-640", TEE_TYPE_RSA_KEYPAIR, 1, 640, 640 },
-		{ "RSA-768", TEE_TYPE_RSA_KEYPAIR, 1, 768, 768 },
-		{ "RSA-896", TEE_TYPE_RSA_KEYPAIR, 1, 896, 896 },
-		{ "RSA-1024", TEE_TYPE_RSA_KEYPAIR, 1, 1024, 1024 },
+		{ 0, "RSA-256", TEE_TYPE_RSA_KEYPAIR, 1, 256, 256 },
+		{ 1, "RSA-384", TEE_TYPE_RSA_KEYPAIR, 1, 384, 384 },
+		{ 1, "RSA-512", TEE_TYPE_RSA_KEYPAIR, 1, 512, 512 },
+		{ 1, "RSA-640", TEE_TYPE_RSA_KEYPAIR, 1, 640, 640 },
+		{ 1, "RSA-768", TEE_TYPE_RSA_KEYPAIR, 1, 768, 768 },
+		{ 1, "RSA-896", TEE_TYPE_RSA_KEYPAIR, 1, 896, 896 },
+		{ 1, "RSA-1024", TEE_TYPE_RSA_KEYPAIR, 1, 1024, 1024 },
 	};
 
 	for (n = 0; n < ARRAY_SIZE(key_types); n++) {
@@ -4448,6 +4485,9 @@
 		uint32_t max_size = key_types[n].max_size;
 		uint32_t quanta = key_types[n].quanta;
 
+		if (key_types[n].level > level)
+			continue;
+
 		Do_ADBG_BeginSubCase(c, "Generate %s key", key_types[n].name);
 
 		for (key_size = min_size; key_size <= max_size;
@@ -4486,6 +4526,7 @@
 	&vect ## _private_bits, \
 	ARRAY(vect ## _subprime)
 	static const struct {
+		unsigned level;
 		uint32_t key_size;
 		const uint8_t *p;
 		size_t p_len;
@@ -4495,40 +4536,43 @@
 		const uint8_t *subprime;
 		size_t subprime_len;
 	} key_types[] = {
-		{ 256, XTEST_DH_GK_DATA(keygen_dh256) },
-		{ 256, XTEST_DH_GK_DATA(keygen_dh320) },
-		{ 384, XTEST_DH_GK_DATA(keygen_dh384) },
-		{ 256, XTEST_DH_GK_DATA(keygen_dh448) },
-		{ 512, XTEST_DH_GK_DATA(keygen_dh512) },
-		{ 288, XTEST_DH_GK_DATA(keygen_dh576) },
-		{ 640, XTEST_DH_GK_DATA(keygen_dh640) },
-		{ 352, XTEST_DH_GK_DATA(keygen_dh704) },
-		{ 768, XTEST_DH_GK_DATA(keygen_dh768) },
-		{ 416, XTEST_DH_GK_DATA(keygen_dh832) },
-		{ 896, XTEST_DH_GK_DATA(keygen_dh896) },
-		{ 480, XTEST_DH_GK_DATA(keygen_dh960) },
-		{ 1024, XTEST_DH_GK_DATA(keygen_dh1024) },
-		{ 544, XTEST_DH_GK_DATA(keygen_dh1088) },
-		{ 1152, XTEST_DH_GK_DATA(keygen_dh1152) },
-		{ 608, XTEST_DH_GK_DATA(keygen_dh1216) },
-		{ 1280, XTEST_DH_GK_DATA(keygen_dh1280) },
-		{ 672, XTEST_DH_GK_DATA(keygen_dh1344) },
-		{ 1408, XTEST_DH_GK_DATA(keygen_dh1408) },
-		{ 736, XTEST_DH_GK_DATA(keygen_dh1472) },
-		{ 1536, XTEST_DH_GK_DATA(keygen_dh1536) },
-		{ 800, XTEST_DH_GK_DATA(keygen_dh1600) },
-		{ 1664, XTEST_DH_GK_DATA(keygen_dh1664) },
-		{ 864, XTEST_DH_GK_DATA(keygen_dh1728) },
-		{ 1792, XTEST_DH_GK_DATA(keygen_dh1792) },
-		{ 928, XTEST_DH_GK_DATA(keygen_dh1856) },
-		{ 1920, XTEST_DH_GK_DATA(keygen_dh1920) },
-		{ 992, XTEST_DH_GK_DATA(keygen_dh1984) },
-		{ 2048, XTEST_DH_GK_DATA(keygen_dh2048) },
-		{ 256, XTEST_DH_GK_DATA_SUBPRIME(keygen_dh2048_subprime) }
+		{ 0, 256, XTEST_DH_GK_DATA(keygen_dh256) },
+		{ 1, 256, XTEST_DH_GK_DATA(keygen_dh320) },
+		{ 1, 384, XTEST_DH_GK_DATA(keygen_dh384) },
+		{ 1, 256, XTEST_DH_GK_DATA(keygen_dh448) },
+		{ 1, 512, XTEST_DH_GK_DATA(keygen_dh512) },
+		{ 1, 288, XTEST_DH_GK_DATA(keygen_dh576) },
+		{ 1, 640, XTEST_DH_GK_DATA(keygen_dh640) },
+		{ 1, 352, XTEST_DH_GK_DATA(keygen_dh704) },
+		{ 1, 768, XTEST_DH_GK_DATA(keygen_dh768) },
+		{ 1, 416, XTEST_DH_GK_DATA(keygen_dh832) },
+		{ 1, 896, XTEST_DH_GK_DATA(keygen_dh896) },
+		{ 1, 480, XTEST_DH_GK_DATA(keygen_dh960) },
+		{ 1, 1024, XTEST_DH_GK_DATA(keygen_dh1024) },
+		{ 1, 544, XTEST_DH_GK_DATA(keygen_dh1088) },
+		{ 1, 1152, XTEST_DH_GK_DATA(keygen_dh1152) },
+		{ 1, 608, XTEST_DH_GK_DATA(keygen_dh1216) },
+		{ 1, 1280, XTEST_DH_GK_DATA(keygen_dh1280) },
+		{ 1, 672, XTEST_DH_GK_DATA(keygen_dh1344) },
+		{ 1, 1408, XTEST_DH_GK_DATA(keygen_dh1408) },
+		{ 1, 736, XTEST_DH_GK_DATA(keygen_dh1472) },
+		{ 1, 1536, XTEST_DH_GK_DATA(keygen_dh1536) },
+		{ 1, 800, XTEST_DH_GK_DATA(keygen_dh1600) },
+		{ 1, 1664, XTEST_DH_GK_DATA(keygen_dh1664) },
+		{ 1, 864, XTEST_DH_GK_DATA(keygen_dh1728) },
+		{ 1, 1792, XTEST_DH_GK_DATA(keygen_dh1792) },
+		{ 1, 928, XTEST_DH_GK_DATA(keygen_dh1856) },
+		{ 1, 1920, XTEST_DH_GK_DATA(keygen_dh1920) },
+		{ 1, 992, XTEST_DH_GK_DATA(keygen_dh1984) },
+		{ 1, 2048, XTEST_DH_GK_DATA(keygen_dh2048) },
+		{ 1, 256, XTEST_DH_GK_DATA_SUBPRIME(keygen_dh2048_subprime) }
 	};
 
 
 	for (n = 0; n < ARRAY_SIZE(key_types); n++) {
+		if (key_types[n].level > level)
+			continue;
+
 		Do_ADBG_BeginSubCase(c,
 				     "Generate DH key %d bits - Private bits = %d",
 				     key_types[n].key_size,
@@ -4583,6 +4627,7 @@
 	ARRAY(vect ## _g), \
 	ARRAY(vect ## _q)
 	static const struct {
+		unsigned level;
 		uint32_t key_size;
 		const uint8_t *prime;
 		size_t prime_len;
@@ -4591,19 +4636,22 @@
 		const uint8_t *sub_prime;
 		size_t sub_prime_len;
 	} key_types[] = {
-		{ 1024, XTEST_DSA_GK_DATA(keygen_dsa_test1) },
-		{ 512, XTEST_DSA_GK_DATA(keygen_dsa512) },
-		{ 576, XTEST_DSA_GK_DATA(keygen_dsa576) },
-		{ 640, XTEST_DSA_GK_DATA(keygen_dsa640) },
-		{ 704, XTEST_DSA_GK_DATA(keygen_dsa704) },
-		{ 768, XTEST_DSA_GK_DATA(keygen_dsa768) },
-		{ 832, XTEST_DSA_GK_DATA(keygen_dsa832) },
-		{ 896, XTEST_DSA_GK_DATA(keygen_dsa896) },
-		{ 960, XTEST_DSA_GK_DATA(keygen_dsa960) },
-		{ 1024, XTEST_DSA_GK_DATA(keygen_dsa1024) },
+		{ 1, 1024, XTEST_DSA_GK_DATA(keygen_dsa_test1) },
+		{ 0, 512, XTEST_DSA_GK_DATA(keygen_dsa512) },
+		{ 1, 576, XTEST_DSA_GK_DATA(keygen_dsa576) },
+		{ 1, 640, XTEST_DSA_GK_DATA(keygen_dsa640) },
+		{ 1, 704, XTEST_DSA_GK_DATA(keygen_dsa704) },
+		{ 1, 768, XTEST_DSA_GK_DATA(keygen_dsa768) },
+		{ 1, 832, XTEST_DSA_GK_DATA(keygen_dsa832) },
+		{ 1, 896, XTEST_DSA_GK_DATA(keygen_dsa896) },
+		{ 1, 960, XTEST_DSA_GK_DATA(keygen_dsa960) },
+		{ 1, 1024, XTEST_DSA_GK_DATA(keygen_dsa1024) },
 	};
 
 	for (n = 0; n < ARRAY_SIZE(key_types); n++) {
+		if (key_types[n].level > level)
+			continue;
+
 		Do_ADBG_BeginSubCase(c, "Generate DSA key %d bits",
 				     key_types[n].key_size);
 		param_count = 0;
@@ -4637,27 +4685,41 @@
 	TEE_Attribute params[4];
 
 	static const struct {
+		unsigned level;
 		const char *name;
 		uint32_t algo;
 		uint32_t curve;
 		uint32_t key_size;
 	} key_types[] = {
 	/* ECDSA */
-	{ "ECDSA-192", TEE_TYPE_ECDSA_KEYPAIR, TEE_ECC_CURVE_NIST_P192, 192 },
-	{ "ECDSA-224", TEE_TYPE_ECDSA_KEYPAIR, TEE_ECC_CURVE_NIST_P224, 224 },
-	{ "ECDSA-256", TEE_TYPE_ECDSA_KEYPAIR, TEE_ECC_CURVE_NIST_P256, 256 },
-	{ "ECDSA-384", TEE_TYPE_ECDSA_KEYPAIR, TEE_ECC_CURVE_NIST_P384, 384 },
-	{ "ECDSA-521", TEE_TYPE_ECDSA_KEYPAIR, TEE_ECC_CURVE_NIST_P521, 521 },
+	{ 0, "ECDSA-192", TEE_TYPE_ECDSA_KEYPAIR, TEE_ECC_CURVE_NIST_P192,
+		192 },
+	{ 1, "ECDSA-224", TEE_TYPE_ECDSA_KEYPAIR, TEE_ECC_CURVE_NIST_P224,
+		224 },
+	{ 1, "ECDSA-256", TEE_TYPE_ECDSA_KEYPAIR, TEE_ECC_CURVE_NIST_P256,
+		256 },
+	{ 1, "ECDSA-384", TEE_TYPE_ECDSA_KEYPAIR, TEE_ECC_CURVE_NIST_P384,
+		384 },
+	{ 1, "ECDSA-521", TEE_TYPE_ECDSA_KEYPAIR, TEE_ECC_CURVE_NIST_P521,
+		521 },
 
 	/* ECDH */
-	{ "ECDH-192", TEE_TYPE_ECDH_KEYPAIR, TEE_ECC_CURVE_NIST_P192, 192 },
-	{ "ECDH-224", TEE_TYPE_ECDH_KEYPAIR, TEE_ECC_CURVE_NIST_P224, 224 },
-	{ "ECDH-256", TEE_TYPE_ECDH_KEYPAIR, TEE_ECC_CURVE_NIST_P256, 256 },
-	{ "ECDH-384", TEE_TYPE_ECDH_KEYPAIR, TEE_ECC_CURVE_NIST_P384, 384 },
-	{ "ECDH-521", TEE_TYPE_ECDH_KEYPAIR, TEE_ECC_CURVE_NIST_P521, 521 },
+	{ 0, "ECDH-192", TEE_TYPE_ECDH_KEYPAIR, TEE_ECC_CURVE_NIST_P192,
+		192 },
+	{ 1, "ECDH-224", TEE_TYPE_ECDH_KEYPAIR, TEE_ECC_CURVE_NIST_P224,
+		224 },
+	{ 1, "ECDH-256", TEE_TYPE_ECDH_KEYPAIR, TEE_ECC_CURVE_NIST_P256,
+		256 },
+	{ 1, "ECDH-384", TEE_TYPE_ECDH_KEYPAIR, TEE_ECC_CURVE_NIST_P384,
+		384 },
+	{ 1, "ECDH-521", TEE_TYPE_ECDH_KEYPAIR, TEE_ECC_CURVE_NIST_P521,
+		521 },
 	};
 
 	for (n = 0; n < ARRAY_SIZE(key_types); n++) {
+		if (key_types[n].level > level)
+			continue;
+
 		Do_ADBG_BeginSubCase(c, "Generate %s", key_types[n].name);
 		param_count = 0;
 
diff --git a/host/xtest/xtest_4000_data.h b/host/xtest/xtest_4000_data.h
index 7de0ddc..288aab6 100644
--- a/host/xtest/xtest_4000_data.h
+++ b/host/xtest/xtest_4000_data.h
@@ -5991,7 +5991,7 @@
 		.out      = nist_kas_ecc_cdh_testvector_1_out,
 	},
 	{
-		.level    = 0,
+		.level    = 1,
 		.algo     = TEE_ALG_ECDH_P192,
 		.curve    = TEE_ECC_CURVE_NIST_P192,
 		.keysize  = 192,
@@ -6242,7 +6242,7 @@
 		.out      = nist_kas_ecc_cdh_testvector_26_out,
 	},
 	{
-		.level    = 0,
+		.level    = 1,
 		.algo     = TEE_ALG_ECDH_P224,
 		.curve    = TEE_ECC_CURVE_NIST_P224,
 		.keysize  = 224,
@@ -6493,7 +6493,7 @@
 		.out      = nist_kas_ecc_cdh_testvector_51_out,
 	},
 	{
-		.level    = 0,
+		.level    = 1,
 		.algo     = TEE_ALG_ECDH_P256,
 		.curve    = TEE_ECC_CURVE_NIST_P256,
 		.keysize  = 256,
@@ -6744,7 +6744,7 @@
 		.out      = nist_kas_ecc_cdh_testvector_76_out,
 	},
 	{
-		.level    = 0,
+		.level    = 1,
 		.algo     = TEE_ALG_ECDH_P384,
 		.curve    = TEE_ECC_CURVE_NIST_P384,
 		.keysize  = 384,
@@ -6995,7 +6995,7 @@
 		.out      = nist_kas_ecc_cdh_testvector_101_out,
 	},
 	{
-		.level    = 0,
+		.level    = 1,
 		.algo     = TEE_ALG_ECDH_P521,
 		.curve    = TEE_ECC_CURVE_NIST_P521,
 		.keysize  = 521,