xtest 6xxx: test multiple storage IDs as supported by OP-TEE

Update xtest 6xxx to test the OP-TEE specific storage IDs
(TEE_STORAGE_PRIVATE_REE, TEE_STORAGE_PRIVATE_RPMB) in addition to the
default, GP-defined value: TEE_STORAGE_PRIVATE. Which values are
enabled is determined at compile time based on whether CFG_REE_FS and
CFG_RPMB_FS are 'y' or 'n' (these values are exported by optee_os and
may be overriden).

Among all the tests in the 6xxx series, 6010 and 6011 are not updated
(i.e., they test only TEE_STORAGE_PRIVATE) because they are GP tests.

xtest_20000.c is updated accordingly, due to the change in the
interface between xtest and the secure storage TA.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Tested-by: David Brown <david.brown@linaro.org>
Reviewed-by: David Brown <david.brown@linaro.org>
diff --git a/ta/storage/storage.c b/ta/storage/storage.c
index db13466..006d6c2 100644
--- a/ta/storage/storage.c
+++ b/ta/storage/storage.c
@@ -45,10 +45,11 @@
 
 	ASSERT_PARAM_TYPE(TEE_PARAM_TYPES
 			  (TEE_PARAM_TYPE_MEMREF_INPUT,
-			   TEE_PARAM_TYPE_VALUE_INOUT, TEE_PARAM_TYPE_NONE,
+			   TEE_PARAM_TYPE_VALUE_INOUT,
+			   TEE_PARAM_TYPE_VALUE_INPUT,
 			   TEE_PARAM_TYPE_NONE));
 
-	res = TEE_OpenPersistentObject(TEE_STORAGE_PRIVATE,
+	res = TEE_OpenPersistentObject(params[2].value.a,
 					params[0].memref.buffer,
 					params[0].memref.size,
 					params[1].value.a, &o);
@@ -68,7 +69,7 @@
 			   TEE_PARAM_TYPE_VALUE_INPUT,
 			   TEE_PARAM_TYPE_MEMREF_INPUT));
 
-	res = TEE_CreatePersistentObject(TEE_STORAGE_PRIVATE,
+	res = TEE_CreatePersistentObject(params[2].value.b,
 		 params[0].memref.buffer, params[0].memref.size,
 		 params[1].value.a,
 		 (TEE_ObjectHandle)(uintptr_t)params[2].value.a,
@@ -84,11 +85,11 @@
 
 	ASSERT_PARAM_TYPE(TEE_PARAM_TYPES
 			  (TEE_PARAM_TYPE_MEMREF_INPUT,
-			   TEE_PARAM_TYPE_NONE,
+			   TEE_PARAM_TYPE_VALUE_INPUT,
 			   TEE_PARAM_TYPE_NONE,
 			   TEE_PARAM_TYPE_NONE));
 
-	res = TEE_CreatePersistentObject(TEE_STORAGE_PRIVATE,
+	res = TEE_CreatePersistentObject(params[1].value.a,
 		 params[0].memref.buffer, params[0].memref.size,
 		 TEE_DATA_FLAG_OVERWRITE,
 		 NULL, NULL, 0, NULL);
@@ -236,7 +237,7 @@
 			  (TEE_PARAM_TYPE_VALUE_INPUT, TEE_PARAM_TYPE_NONE,
 			   TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE));
 
-	return TEE_StartPersistentObjectEnumerator(oe, TEE_STORAGE_PRIVATE);
+	return TEE_StartPersistentObjectEnumerator(oe, params[0].value.b);
 }
 
 TEE_Result ta_storage_cmd_next_enum(uint32_t param_types, TEE_Param params[4])
@@ -304,8 +305,9 @@
 			 TEE_DATA_FLAG_SHARE_READ |
 			 TEE_DATA_FLAG_SHARE_WRITE;
 
-	(void)param_types;
-	(void)params;
+	ASSERT_PARAM_TYPE(TEE_PARAM_TYPES
+			  (TEE_PARAM_TYPE_VALUE_INPUT, TEE_PARAM_TYPE_NONE,
+			   TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE));
 
 	result = TEE_AllocateTransientObject(TEE_TYPE_AES, key_size,
 					     &transient_key);
@@ -322,7 +324,7 @@
 	}
 
 	TEE_GetObjectInfo1(transient_key, &keyInfo);
-	result = TEE_CreatePersistentObject(TEE_STORAGE_PRIVATE,
+	result = TEE_CreatePersistentObject(params[0].value.a,
 					    &objectID, sizeof(objectID),
 					    flags, transient_key, NULL, 0,
 					    &persistent_key);
@@ -340,7 +342,7 @@
 
 	TEE_CloseObject(persistent_key);
 
-	result = TEE_OpenPersistentObject(TEE_STORAGE_PRIVATE,
+	result = TEE_OpenPersistentObject(params[0].value.a,
 					  &objectID, sizeof(objectID),
 					  flags, &key);
 	if (result != TEE_SUCCESS) {
@@ -397,14 +399,16 @@
 			  TEE_DATA_FLAG_ACCESS_WRITE_META;
 	int i = 0;
 
-	(void)param_types;
 	(void)params;
+	ASSERT_PARAM_TYPE(TEE_PARAM_TYPES
+			  (TEE_PARAM_TYPE_VALUE_INPUT, TEE_PARAM_TYPE_NONE,
+			   TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE));
 
 	for (i = 0; i < 20; i++) {
 		DMSG("\n\nLOOP : %d", i);
 		object = TEE_HANDLE_NULL;
 		object_id = i;
-		res = TEE_CreatePersistentObject(TEE_STORAGE_PRIVATE,
+		res = TEE_CreatePersistentObject(params[0].value.a,
 						 &object_id, sizeof(int), flags,
 						 TEE_HANDLE_NULL, NULL, 0,
 						 &object);