summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Wiklander <jens.wiklander@linaro.org>2022-12-08 12:05:02 +0100
committerJérôme Forissier <jerome@forissier.org>2023-02-02 00:13:53 +0100
commita75d2b979fb0c53c038933eca21e2fd88ba6fd12 (patch)
treed51d1826aa398ad4a8d3f118266904b7cb9cae5f
parent92aded210eb58210f8f37db766ee15ff5948b859 (diff)
regression 6013: test transforming transient object to persistent
Extends regression case 6013 to test transforming a transient object into a persistent object with TEE_CreatePersistentObject(). This is a new feature in TEE Internal API v1.3 and is done by supplying a NULL pointer instead of an output object pointer to TEE_CreatePersistentObject(). Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
-rw-r--r--ta/storage/storage.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/ta/storage/storage.c b/ta/storage/storage.c
index 4ad8f8c..3db9d41 100644
--- a/ta/storage/storage.c
+++ b/ta/storage/storage.c
@@ -467,6 +467,27 @@ TEE_Result ta_storage_cmd_key_in_persistent(uint32_t param_types,
goto cleanup2;
}
+ TEE_CloseAndDeletePersistentObject1(persistent_key);
+
+ /* Transform the transient object into a persistent object */
+ result = TEE_CreatePersistentObject(params[0].value.a,
+ &objectID, sizeof(objectID),
+ flags, transient_key, NULL, 0,
+ NULL);
+ if (result != TEE_SUCCESS) {
+ EMSG("Failed to create a persistent key: 0x%x", result);
+ goto cleanup2;
+ }
+ persistent_key = transient_key;
+ transient_key = TEE_HANDLE_NULL;
+
+ TEE_GetObjectInfo1(persistent_key, &keyInfo2);
+ result = check_obj(&keyInfo, &keyInfo2);
+ if (result != TEE_SUCCESS) {
+ EMSG("keyInfo and keyInfo2 are different");
+ goto cleanup2;
+ }
+
TEE_CloseObject(persistent_key);
result = TEE_OpenPersistentObject(params[0].value.a,