コード例 #1
0
ファイル: tee_api_objects.c プロジェクト: AIdrifter/optee_os
TEE_Result TEE_CreatePersistentObject(uint32_t storageID, void *objectID,
				      uint32_t objectIDLen, uint32_t flags,
				      TEE_ObjectHandle attributes,
				      const void *initialData,
				      uint32_t initialDataLen,
				      TEE_ObjectHandle *object)
{
	TEE_Result res;
	uint32_t obj;

	if (storageID != TEE_STORAGE_PRIVATE) {
		res = TEE_ERROR_ITEM_NOT_FOUND;
		goto err;
	}

	if (!objectID) {
		res = TEE_ERROR_ITEM_NOT_FOUND;
		goto err;
	}

	if (objectIDLen > TEE_OBJECT_ID_MAX_LEN) {
		res = TEE_ERROR_BAD_PARAMETERS;
		goto err;
	}

	res = utee_storage_obj_create(storageID, objectID, objectIDLen, flags,
				      (unsigned long)attributes, initialData,
				      initialDataLen, &obj);
	if (res == TEE_SUCCESS) {
		if (object)
			*object = (TEE_ObjectHandle)(uintptr_t)obj;
		else
			res = utee_cryp_obj_close(obj);
		if (res == TEE_SUCCESS)
			goto out;
	}
err:
	if (object)
		*object = TEE_HANDLE_NULL;
	if (res == TEE_ERROR_ITEM_NOT_FOUND ||
	    res == TEE_ERROR_ACCESS_CONFLICT ||
	    res == TEE_ERROR_OUT_OF_MEMORY ||
	    res == TEE_ERROR_STORAGE_NO_SPACE ||
	    res == TEE_ERROR_CORRUPT_OBJECT ||
	    res == TEE_ERROR_STORAGE_NOT_AVAILABLE)
		return res;
	TEE_Panic(0);
out:
	return TEE_SUCCESS;
}
コード例 #2
0
ファイル: tee_api_objects.c プロジェクト: hsibert/optee_os
TEE_Result TEE_CreatePersistentObject(uint32_t storageID, void *objectID,
                                      size_t objectIDLen, uint32_t flags,
                                      TEE_ObjectHandle attributes,
                                      const void *initialData,
                                      size_t initialDataLen,
                                      TEE_ObjectHandle *object)
{
    if (storageID != TEE_STORAGE_PRIVATE)
        return TEE_ERROR_ITEM_NOT_FOUND;

    if (objectID == NULL)
        return TEE_ERROR_ITEM_NOT_FOUND;

    if (objectIDLen > TEE_OBJECT_ID_MAX_LEN)
        TEE_Panic(0);

    if (object == NULL)
        return TEE_ERROR_BAD_PARAMETERS;

    return utee_storage_obj_create(storageID, objectID, objectIDLen, flags,
                                   attributes, initialData, initialDataLen,
                                   object);
}