目录

安全存储

Overview

iTrustee提供安全存储机制,用于TEE中数据的存储读写等操作。安全存储机制实现了不同TA间数据相互隔离,保障数据的安全。

Method Summary

Qualifier and Type

Method Name and Description

void

TEE_GetObjectInfo(TEE_ObjectHandle object, TEE_ObjectInfo *objectInfo)

对object的一些通用操作,主要用来获取Object的信息。

void

TEE_RestrictObjectUsage( TEE_ObjectHandle object, uint32_t objectUsage)

可以用该函数限制object的使用权限。

TEE_Result

TEE_GetObjectBufferAttribute(TEE_ObjectHandle object, uint32_t attributeID, void *buffer, size_t *size)

获取object Attribute的buffer。

TEE_Result

TEE_GetObjectValueAttribute(TEE_ObjectHandle object, uint32_t attributeID, uint32_t *a, uint32_t *b)

获取object Attribute的value。

void

TEE_CloseObject(TEE_ObjectHandle object)

关闭object,该object可以为persistent或者transient。

TEE_Result

TEE_AllocateTransientObject(uint32_t objectType, uint32_t maxObjectSize, TEE_ObjectHandle *object)

分配一个未初始化的transient object,用来存放加解密操作用的key或key-pair。

void

TEE_FreeTransientObject(TEE_ObjectHandle object)

释放用TEE_AllocateTransientObject分配的transient object的资源。

void

TEE_ResetTransientObject(TEE_ObjectHandle object)

重置transient object, 使其回到初始状态。

TEE_Result

TEE_PopulateTransientObject(TEE_ObjectHandle object, TEE_Attribute *attrs, uint32_t attrCount)

给object赋值attribute。

void

TEE_InitRefAttribute(TEE_Attribute* attr, uint32_t attributeID , void* buffer, size_t length)

赋值产生一个buffer类型的attribute。

void

TEE_InitValueAttribute(TEE_Attribute *attr, uint32_t attributeID, uint32_t a, uint32_t b)

赋值产生一个value类型的attribute。

void

TEE_CopyObjectAttributes(TEE_ObjectHandle destObject, TEE_ObjectHandle srcObject)

该函数用一个初始化的object handle的attributes给一个未初始化的object handle赋值。

TEE_Result

TEE_GenerateKey(TEE_ObjectHandle object, uint32_t keySize, TEE_Attribute* params, uint32_t paramCount)

该函数产生一个随机key或者key-pair并赋值给key object。

TEE_Result

TEE_OpenPersistentObject(uint32_t storageID, void *objectID, size_t objectIDLen, uint32_t flags, TEE_ObjectHandle* object)

打开一个persistent 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)

创建一个persistent object。

void

TEE_CloseAndDeletePersistentObject( TEE_ObjectHandle object)

关闭并且删除object。

TEE_Result

TEE_RenamePersistentObject(TEE_ObjectHandle object, void* newObjectID, size_t newObjectIDLen)

object重命名。

TEE_Result

TEE_ReadObjectData(TEE_ObjectHandle object, void *buffer, size_t size, uint32_t *count)

该函数从object的data stream读取size字节数据,放到buffer指针指定的buffer,操作完成后将实际读取值写到count。

TEE_Result

TEE_WriteObjectData(TEE_ObjectHandle object, void* buffer, size_t size)

该函数从buffer中写入size字节的数据到object的data stream。

TEE_Result

TEE_TruncateObjectData(TEE_ObjectHandle object, uint32_t size)

该函数改变data stream大小。

TEE_Result

TEE_SeekObjectData(TEE_ObjectHandle object, int32_t offset, TEE_Whence whence)

该函数设置object handle的数据位置。

TEE_Result

TEE_InfoObjectData(TEE_ObjectHandle object, uint32_t *pos, uint32_t *len)

该函数获取数据流读取的位置和文件大小。

Methods

[h2]TEE_GetObjectInfo

Method

void TEE_GetObjectInfo(TEE_ObjectHandle object, TEE_ObjectInfo *objectInfo)

对object的一些通用操作,主要用来获取Object的信息。

Parameters

Name

Description

object

需要提取objectInfo的object handle。

objectInfo

提取之后存放objectInfo的结构体。

Return

Type

Description

void

-

[h2]TEE_RestrictObjectUsage

Method

void TEE_RestrictObjectUsage( TEE_ObjectHandle object, uint32_t objectUsage)

可以用该函数限制object的使用权限。

Parameters

Name

Description

object

需要限制的object handle。

objectUsage

要限制的usage,取值在Usage_Constants结构中。

Return

Type

Description

void

-

[h2]TEE_GetObjectBufferAttribute

Method

TEE_Result TEE_GetObjectBufferAttribute(TEE_ObjectHandle object, uint32_t attributeID, void *buffer, size_t *size)

获取object Attribute 的buffer。

Parameters

Name

Description

object

需要获取的目标object的handle。

attributeID

需要获取的attributeID。

buffer

存放提取的attribute 的buffer内容,需要提前分配。

size

获取到的buffer内容大小。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_GetObjectValueAttribute

Method

TEE_Result TEE_GetObjectValueAttribute(TEE_ObjectHandle object, uint32_t attributeID, uint32_t *a, uint32_t *b)

获取object Attribute的value。

Parameters

Name

Description

object

需要获取的目标object handle。

attributeID

需要获取的attributeID。

a

用来存放提取的attribute的a,需要提前分配,如果用户对其不感兴趣,可以为null,如果a和b同时为null该函数无意义。

b

用来存放提取的attribute的b,需要提前分配,如果用户对其不感兴趣,可以为null,如果a和b同时为null该函数无意义。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_CloseObject

Method

void TEE_CloseObject(TEE_ObjectHandle object)

关闭object,该object可以为persistent或者transient。

Parameters

Name

Description

object

需要获取的目标object handle。

Return

Type

Description

void

-

[h2]TEE_AllocateTransientObject

Method

TEE_Result TEE_AllocateTransientObject(uint32_t objectType, uint32_t maxObjectSize, TEE_ObjectHandle *object)

分配一个未初始化的transient object,用来存放加解密操作用的key或key-pair。

Parameters

Name

Description

objectType

需要创建object的类型。

maxObjectSize

object大小。

object

指向新创建的handle指针。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_FreeTransientObject

Method

void TEE_FreeTransientObject(TEE_ObjectHandle object)

释放用TEE_AllocateTransientObject分配的transient object的资源。

Parameters

Name

Description

object

需要释放的object handle。

Return

Type

Description

void

-

[h2]TEE_ResetTransientObject

Method

void TEE_ResetTransientObject(TEE_ObjectHandle object)

重置transient object, 使其回到初始状态。

Parameters

Name

Description

object

需要重置的object handle。

Return

Type

Description

void

-

[h2]TEE_PopulateTransientObject

Method

TEE_Result TEE_PopulateTransientObject(TEE_ObjectHandle object, TEE_Attribute *attrs, uint32_t attrCount)

给object赋值attribute。

Parameters

Name

Description

object

需要赋值的object handle,已创建但未初始化。

attrs

用来赋值的attributes数组。

attrCount

用来赋值的attributes数组大小。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_InitRefAttribute

Method

void TEE_InitRefAttribute(TEE_Attribute* attr, uint32_t attributeID , void* buffer, size_t length)

赋值产生一个buffer类型的attribute。

Parameters

Name

Description

attrs

待赋值的attribute。

attributeID

属性 ID。

buffer

赋值的buffer。

length

buffer的长度。。

Return

Type

Description

void

-

[h2]TEE_InitValueAttribute

Method

void TEE_InitValueAttribute(TEE_Attribute *attr, uint32_t attributeID, uint32_t a, uint32_t b)

赋值产生一个value类型的attribute。

Parameters

Name

Description

attrs

待赋值的attribute。

attributeID

属性 ID。

a

赋值参数a。

b

赋值参数b。

Return

Type

Description

void

-

[h2]TEE_CopyObjectAttributes

Method

void TEE_CopyObjectAttributes(TEE_ObjectHandle destObject, TEE_ObjectHandle srcObject)

该函数用一个初始化的object handle的attributes给一个未初始化的object handle赋值。

Parameters

Name

Description

destObject

一个未初始化的transient object。

srcObject

一个初始化的transient object。

Return

Type

Description

void

-

[h2]TEE_GenerateKey

Method

TEE_Result TEE_GenerateKey(TEE_ObjectHandle object, uint32_t keySize, TEE_Attribute* params, uint32_t paramCount)

该函数产生一个随机key或者key-pair并赋值给key object。

Parameters

Name

Description

object

必须是一个未初始化的transient object用来存放产生的key。

keySize

产生key的大小,必须小于或等于object的maximum size。

params

产生key的参数。

paramCount

产生key的参数大小。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_OpenPersistentObject

Method

TEE_Result TEE_OpenPersistentObject(uint32_t storageID, void *objectID, size_t objectIDLen, uint32_t flags, TEE_ObjectHandle* object)

打开一个persistent object。

Parameters

Name

Description

storageID

待访问的Trusted Storage Space。

objectID

objectID。

objectIDLen

objectID长度。

flags

用来控制打开object handle的访问权限和共享权限。

object

object handle,函数执行成功时其中包括打开文件的句柄,如果执行失败,则handle为NULL。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_CreatePersistentObject

Method

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)

创建一个persistent object。

Parameters

Name

Description

storageID

待访问的Trusted Storage Space。

objectID

objectID。

objectIDLen

objectID长度。

flags

用来控制打开object handle的访问权限和共享权限。

attributes

persistent object的属性,可以为空。

initialData

persistent object的初始化数据。

initialDataLen

persistent object的初始化数据长度。

object

object handle,函数执行成功时其中包括打开文件的句柄,如果执行失败,则object为NULL。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_CloseAndDeletePersistentObject

Method

void TEE_CloseAndDeletePersistentObject( TEE_ObjectHandle object)

关闭并且删除object。

Parameters

Name

Description

object

指向目标的object handle。

Return

Type

Description

void

-

[h2]TEE_RenamePersistentObject

Method

TEE_Result TEE_RenamePersistentObject(TEE_ObjectHandle object, void* newObjectID, size_t newObjectIDLen)

object重命名。

Parameters

Name

Description

object

指向目标的object handle。

newObjectID

新的object ID。

newObjectIDLen

新的object ID长度。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_ReadObjectData

Method

TEE_Result TEE_ReadObjectData(TEE_ObjectHandle object, void *buffer, size_t size, uint32_t *count)

该函数从object的data stream读取size字节数据,放到buffer指针指定的buffer,操作完成后将实际读取值写到count。

Parameters

Name

Description

object

指向目标的object handle。

buffer

存储读取数据的buffer。

size

要读取的字节大小。

count

指向成功读取的字节数。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_WriteObjectData

Method

TEE_Result TEE_WriteObjectData(TEE_ObjectHandle object, void* buffer, size_t size)

该函数从buffer中写入size字节的数据到object的data stream。

Parameters

Name

Description

object

指向目标的object handle。

buffer

存储读取数据的buffer。

size

要读取的字节大小。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_TruncateObjectData

Method

TEE_Result TEE_TruncateObjectData(TEE_ObjectHandle object, uint32_t size)

该函数改变data stream大小。

Parameters

Name

Description

object

指向目标的object handle。

size

数据流的大小。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_SeekObjectData

Method

TEE_Result TEE_SeekObjectData(TEE_ObjectHandle object, int32_t offset, TEE_Whence whence)

该函数设置object handle的数据位置。

Parameters

Name

Description

object

指向目标的object handle。

offset

数据位置的偏移值。

whence

开始计算偏移的数据位置,取值:

  • TEE_DATA_SEEK_SET:数据位置设置为从数据开始出偏移offset。
  • TEE_DATA_SEEK_CUR:数据位置从当前位置偏移offset。
  • TEE_DATA_SEEK_END:数据位置从数据末尾偏移offset。

Return

Type

Description

TEE_Result

参见错误码定义。

[h2]TEE_InfoObjectData

Method

TEE_Result TEE_InfoObjectData(TEE_ObjectHandle object, uint32_t *pos, uint32_t *len)

该函数获取数据流读取的位置和文件大小。

Parameters

Name

Description

object

指向目标的object handle。

pos

数据位置。

len

文件大小。

Return

Type

Description

TEE_Result

参见错误码定义。