blob: c2dcb88925f3869dbd664ec4c9c947fb5c0664f5 [file] [log] [blame]
/********************************************************************************
* Marvell GPL License Option
*
* If you received this File from Marvell, you may opt to use, redistribute and/or
* modify this File in accordance with the terms and conditions of the General
* Public License Version 2, June 1991 (the "GPL License"), a copy of which is
* available along with the File in the license.txt file or by writing to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
* on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
*
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
* WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
* DISCLAIMED. The GPL License provides additional details about this warranty
* disclaimer.
******************************************************************************/
#ifndef _TEE_INTERNAL_STORAGE_PERSISTENT_API_H_
#define _TEE_INTERNAL_STORAGE_PERSISTENT_API_H_
#include "tee_internal_common.h"
#include "tee_internal_storage_generic_api.h"
typedef enum
{
TEE_DATA_SEEK_SET = 0,
TEE_DATA_SEEK_CUR,
TEE_DATA_SEEK_END
} TEE_Whence;
/** Handle on a persistent object enumerator */
typedef struct TEE_ObjectEnum* TEE_ObjectEnumHandle;
enum TEE_StorageType {
TEE_STORAGE_PRIVATE = 0x00000001,
};
enum TEE_DataFlag {
TEE_DATA_FLAG_ACCESS_READ = 0x00000001,
TEE_DATA_FLAG_ACCESS_WRITE = 0x00000002,
TEE_DATA_FLAG_ACCESS_WRITE_META = 0x00000004,
TEE_DATA_FLAG_SHARE_READ = 0x00000010,
TEE_DATA_FLAG_SHARE_WRITE = 0x00000020,
TEE_DATA_FLAG_CREATE = 0x00000200,
TEE_DATA_FLAG_EXCLUSIVE = 0x00000400,
};
enum TEE_Miscellaneous {
TEE_DATA_MAX_POSITION = 0xFFFFFFFF,
TEE_OBJECT_ID_MAX_LEN = 64,
};
typedef int (*GenTSKeyFunc)(
const uint8_t *seedBuf,
size_t seedLen,
uint8_t* uniqueKey,
size_t uniqueKeyLen);
TEE_Result TEE_OpenPersistentObject(
uint32_t storageID,
void* objectID,
size_t objectIDLen,
uint32_t flags,
TEE_ObjectHandle* object);
TEE_Result TEE_CreatePersistentObject(
uint32_t storageID,
void* objectID,
size_t objectIDLen,
uint32_t flags,
TEE_ObjectHandle attributes,
void* initialData,
size_t initialDataLen,
TEE_ObjectHandle* object);
void TEE_FreePersistentObject(TEE_ObjectHandle object);
void TEE_CloseAndDeletePersistentObject(TEE_ObjectHandle object);
TEE_Result TEE_AllocatePersistentObjectEnumerator(
TEE_ObjectEnumHandle* objectEnumerator);
void TEE_FreePersistentObjectEnumerator(TEE_ObjectEnumHandle
objectEnumerator);
void TEE_ResetPersistentObjectEnumerator(TEE_ObjectEnumHandle
objectEnumerator);
TEE_Result TEE_StartPersistentObjectEnumerator(
TEE_ObjectEnumHandle objectEnumerator,
uint32_t storageID);
TEE_Result TEE_GetNextPersistentObject(
TEE_ObjectEnumHandle objectEnumerator,
TEE_ObjectInfo* objectInfo,
void* objectID,
size_t* objectIDLen);
TEE_Result TEE_ReadObjectData(
TEE_ObjectHandle object,
void* buffer,
size_t size,
uint32_t* count);
TEE_Result TEE_WriteObjectData(
TEE_ObjectHandle object,
void* buffer,
size_t size);
TEE_Result TEE_SeekObjectData(
TEE_ObjectHandle object,
int32_t offset,
TEE_Whence whence);
void TEE_RegisterGenKey(GenTSKeyFunc GenFigoTSKey);
#endif /* _TEE_INTERNAL_STORAGE_PERSISTENT_API_H_ */