Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC] Symbol versioning in libutee.so, the easy part #5833

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions lib/libutee/libutee.ver
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
GP_1.1 { TEE_[A-Z]*; };
GP_1.3.1 { };

8 changes: 8 additions & 0 deletions lib/libutee/tee_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,7 @@ static void check_invoke_param(uint32_t pt, TEE_Param params[TEE_NUM_PARAMS])
}
}

SYMVER_GP131(TEE_OpenTASession);
TEE_Result TEE_OpenTASession(const TEE_UUID *destination,
uint32_t cancellationRequestTimeout,
uint32_t paramTypes,
Expand Down Expand Up @@ -363,6 +364,7 @@ TEE_Result TEE_OpenTASession(const TEE_UUID *destination,
return res;
}

SYMVER_COMPAT_GP11(TEE_OpenTASession);
TEE_Result __GP11_TEE_OpenTASession(const TEE_UUID *destination,
uint32_t cancellationRequestTimeout,
uint32_t paramTypes,
Expand Down Expand Up @@ -420,6 +422,7 @@ void TEE_CloseTASession(TEE_TASessionHandle session)
}
}

SYMVER_GP131(TEE_InvokeTACommand);
TEE_Result TEE_InvokeTACommand(TEE_TASessionHandle session,
uint32_t cancellationRequestTimeout,
uint32_t commandID, uint32_t paramTypes,
Expand Down Expand Up @@ -473,6 +476,7 @@ TEE_Result TEE_InvokeTACommand(TEE_TASessionHandle session,
return res;
}

SYMVER_COMPAT_GP11(TEE_InvokeTACommand);
TEE_Result __GP11_TEE_InvokeTACommand(TEE_TASessionHandle session,
uint32_t cancellationRequestTimeout,
uint32_t commandID, uint32_t paramTypes,
Expand Down Expand Up @@ -558,6 +562,7 @@ bool TEE_MaskCancellation(void)

/* System API - Memory Management */

SYMVER_GP131(TEE_CheckMemoryAccessRights);
TEE_Result TEE_CheckMemoryAccessRights(uint32_t accessFlags, void *buffer,
size_t size)
{
Expand Down Expand Up @@ -591,6 +596,7 @@ TEE_Result TEE_CheckMemoryAccessRights(uint32_t accessFlags, void *buffer,
return TEE_SUCCESS;
}

SYMVER_COMPAT_GP11(TEE_CheckMemoryAccessRights);
TEE_Result __GP11_TEE_CheckMemoryAccessRights(uint32_t accessFlags,
void *buffer, uint32_t size)
{
Expand Down Expand Up @@ -701,6 +707,7 @@ void TEE_GetREETime(TEE_Time *time)
TEE_Panic(res);
}

SYMVER_GP131(TEE_Malloc);
void *TEE_Malloc(size_t len, uint32_t hint)
{
switch (hint) {
Expand Down Expand Up @@ -741,6 +748,7 @@ void *TEE_Malloc(size_t len, uint32_t hint)
return NULL;
}

SYMVER_COMPAT_GP11(TEE_Malloc);
void *__GP11_TEE_Malloc(uint32_t size, uint32_t hint)
{
return TEE_Malloc(size, hint);
Expand Down
6 changes: 6 additions & 0 deletions lib/libutee/tee_api_arith_mpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ static void get_mpi(mbedtls_mpi *mpi, const TEE_BigInt *bigInt)
}
}

SYMVER_GP131(TEE_BigIntInit);
void TEE_BigIntInit(TEE_BigInt *bigInt, size_t len)
{
struct bigint_hdr *hdr = (struct bigint_hdr *)bigInt;
Expand All @@ -131,11 +132,13 @@ void TEE_BigIntInit(TEE_BigInt *bigInt, size_t len)
hdr->alloc_size = len - BIGINT_HDR_SIZE_IN_U32;
}

SYMVER_COMPAT_GP11(TEE_BigIntInit);
void __GP11_TEE_BigIntInit(TEE_BigInt *bigInt, uint32_t len)
{
TEE_BigIntInit(bigInt, len);
}

SYMVER_GP131(TEE_BigIntConvertFromOctetString);
TEE_Result TEE_BigIntConvertFromOctetString(TEE_BigInt *dest,
const uint8_t *buffer,
size_t bufferLen, int32_t sign)
Expand All @@ -161,6 +164,7 @@ TEE_Result TEE_BigIntConvertFromOctetString(TEE_BigInt *dest,
return res;
}

SYMVER_COMPAT_GP11(TEE_BigIntConvertFromOctetString);
TEE_Result __GP11_TEE_BigIntConvertFromOctetString(TEE_BigInt *dest,
const uint8_t *buffer,
uint32_t bufferLen,
Expand All @@ -169,6 +173,7 @@ TEE_Result __GP11_TEE_BigIntConvertFromOctetString(TEE_BigInt *dest,
return TEE_BigIntConvertFromOctetString(dest, buffer, bufferLen, sign);
}

SYMVER_GP131(TEE_BigIntConvertToOctetString);
TEE_Result TEE_BigIntConvertToOctetString(uint8_t *buffer, size_t *bufferLen,
const TEE_BigInt *bigInt)
{
Expand All @@ -191,6 +196,7 @@ TEE_Result TEE_BigIntConvertToOctetString(uint8_t *buffer, size_t *bufferLen,
return res;
}

SYMVER_COMPAT_GP11(TEE_BigIntConvertToOctetString);
TEE_Result __GP11_TEE_BigIntConvertToOctetString(uint8_t *buffer,
uint32_t *bufferLen,
const TEE_BigInt *bigInt)
Expand Down
32 changes: 32 additions & 0 deletions lib/libutee/tee_api_objects.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ void __utee_from_gp11_attr(struct utee_attribute *ua,
* These functions will be removed at some future major revision of
* this specification
*/
SYMVER_GP131(TEE_GetObjectInfo);
void TEE_GetObjectInfo(TEE_ObjectHandle object, TEE_ObjectInfo *objectInfo)
{
struct utee_object_info info = { };
Expand Down Expand Up @@ -81,6 +82,7 @@ void TEE_GetObjectInfo(TEE_ObjectHandle object, TEE_ObjectInfo *objectInfo)
}
}

SYMVER_COMPAT_GP11(TEE_GetObjectInfo);
void __GP11_TEE_GetObjectInfo(TEE_ObjectHandle object,
__GP11_TEE_ObjectInfo *objectInfo)
{
Expand Down Expand Up @@ -110,6 +112,7 @@ void __GP11_TEE_GetObjectInfo(TEE_ObjectHandle object,
}
}

SYMVER_GP131(TEE_GetObjectInfo1);
TEE_Result TEE_GetObjectInfo1(TEE_ObjectHandle object,
TEE_ObjectInfo *objectInfo)
{
Expand All @@ -134,6 +137,7 @@ TEE_Result TEE_GetObjectInfo1(TEE_ObjectHandle object,
return res;
}

SYMVER_COMPAT_GP11(TEE_GetObjectInfo1);
TEE_Result __GP11_TEE_GetObjectInfo1(TEE_ObjectHandle object,
__GP11_TEE_ObjectInfo *objectInfo)
{
Expand Down Expand Up @@ -194,6 +198,7 @@ TEE_Result TEE_RestrictObjectUsage1(TEE_ObjectHandle object, uint32_t objectUsag
return res;
}

SYMVER_GP131(TEE_GetObjectBufferAttribute);
TEE_Result TEE_GetObjectBufferAttribute(TEE_ObjectHandle object,
uint32_t attributeID, void *buffer,
size_t *size)
Expand Down Expand Up @@ -230,6 +235,7 @@ TEE_Result TEE_GetObjectBufferAttribute(TEE_ObjectHandle object,
return res;
}

SYMVER_COMPAT_GP11(TEE_GetObjectBufferAttribute);
TEE_Result __GP11_TEE_GetObjectBufferAttribute(TEE_ObjectHandle object,
uint32_t attributeID,
void *buffer, uint32_t *size)
Expand All @@ -244,6 +250,7 @@ TEE_Result __GP11_TEE_GetObjectBufferAttribute(TEE_ObjectHandle object,
return res;
}

SYMVER_GP131(TEE_GetObjectValueAttribute);
TEE_Result TEE_GetObjectValueAttribute(TEE_ObjectHandle object,
uint32_t attributeID, uint32_t *a,
uint32_t *b)
Expand Down Expand Up @@ -305,6 +312,7 @@ void TEE_CloseObject(TEE_ObjectHandle object)

/* Data and Key Storage API - Transient Object Functions */

SYMVER_GP131(TEE_AllocateTransientObject);
TEE_Result TEE_AllocateTransientObject(TEE_ObjectType objectType,
uint32_t maxObjectSize,
TEE_ObjectHandle *object)
Expand All @@ -316,6 +324,7 @@ TEE_Result TEE_AllocateTransientObject(TEE_ObjectType objectType,
object);
}

SYMVER_COMPAT_GP11(TEE_AllocateTransientObject);
TEE_Result __GP11_TEE_AllocateTransientObject(TEE_ObjectType objectType,
uint32_t maxKeySize,
TEE_ObjectHandle *object)
Expand Down Expand Up @@ -378,6 +387,7 @@ void TEE_ResetTransientObject(TEE_ObjectHandle object)
TEE_Panic(res);
}

SYMVER_GP131(TEE_PopulateTransientObject);
TEE_Result TEE_PopulateTransientObject(TEE_ObjectHandle object,
const TEE_Attribute *attrs,
uint32_t attrCount)
Expand Down Expand Up @@ -407,6 +417,7 @@ TEE_Result TEE_PopulateTransientObject(TEE_ObjectHandle object,
return res;
}

SYMVER_COMPAT_GP11(TEE_PopulateTransientObject);
TEE_Result __GP11_TEE_PopulateTransientObject(TEE_ObjectHandle object,
const __GP11_TEE_Attribute *attrs,
uint32_t attrCount)
Expand Down Expand Up @@ -436,6 +447,7 @@ TEE_Result __GP11_TEE_PopulateTransientObject(TEE_ObjectHandle object,
return res;
}

SYMVER_GP131(TEE_InitRefAttribute);
void TEE_InitRefAttribute(TEE_Attribute *attr, uint32_t attributeID,
const void *buffer, size_t length)
{
Expand All @@ -448,6 +460,7 @@ void TEE_InitRefAttribute(TEE_Attribute *attr, uint32_t attributeID,
attr->content.ref.length = length;
}

SYMVER_COMPAT_GP11(TEE_InitRefAttribute);
void __GP11_TEE_InitRefAttribute(__GP11_TEE_Attribute *attr,
uint32_t attributeID,
const void *buffer, uint32_t length)
Expand All @@ -461,6 +474,7 @@ void __GP11_TEE_InitRefAttribute(__GP11_TEE_Attribute *attr,
attr->content.ref.length = length;
}

SYMVER_GP131(TEE_InitValueAttribute);
void TEE_InitValueAttribute(TEE_Attribute *attr, uint32_t attributeID,
uint32_t a, uint32_t b)
{
Expand All @@ -473,6 +487,7 @@ void TEE_InitValueAttribute(TEE_Attribute *attr, uint32_t attributeID,
attr->content.value.b = b;
}

SYMVER_COMPAT_GP11(TEE_InitValueAttribute);
void __GP11_TEE_InitValueAttribute(__GP11_TEE_Attribute *attr,
uint32_t attributeID,
uint32_t a, uint32_t b)
Expand Down Expand Up @@ -543,6 +558,7 @@ TEE_Result TEE_CopyObjectAttributes1(TEE_ObjectHandle destObject,
return res;
}

SYMVER_GP131(TEE_GenerateKey);
TEE_Result TEE_GenerateKey(TEE_ObjectHandle object, uint32_t keySize,
const TEE_Attribute *params, uint32_t paramCount)
{
Expand All @@ -561,6 +577,7 @@ TEE_Result TEE_GenerateKey(TEE_ObjectHandle object, uint32_t keySize,
return res;
}

SYMVER_COMPAT_GP11(TEE_GenerateKey);
TEE_Result __GP11_TEE_GenerateKey(TEE_ObjectHandle object, uint32_t keySize,
const __GP11_TEE_Attribute *params,
uint32_t paramCount)
Expand All @@ -582,6 +599,7 @@ TEE_Result __GP11_TEE_GenerateKey(TEE_ObjectHandle object, uint32_t keySize,

/* Data and Key Storage API - Persistent Object Functions */

SYMVER_GP131(TEE_OpenPersistentObject);
TEE_Result TEE_OpenPersistentObject(uint32_t storageID, const void *objectID,
size_t objectIDLen, uint32_t flags,
TEE_ObjectHandle *object)
Expand Down Expand Up @@ -610,6 +628,7 @@ TEE_Result TEE_OpenPersistentObject(uint32_t storageID, const void *objectID,
return res;
}

SYMVER_COMPAT_GP11(TEE_OpenPersistentObject);
TEE_Result __GP11_TEE_OpenPersistentObject(uint32_t storageID,
const void *objectID,
uint32_t objectIDLen, uint32_t flags,
Expand All @@ -619,6 +638,7 @@ TEE_Result __GP11_TEE_OpenPersistentObject(uint32_t storageID,
flags, object);
}

SYMVER_GP131(TEE_CreatePersistentObject);
TEE_Result TEE_CreatePersistentObject(uint32_t storageID, const void *objectID,
size_t objectIDLen, uint32_t flags,
TEE_ObjectHandle attributes,
Expand Down Expand Up @@ -657,6 +677,7 @@ TEE_Result TEE_CreatePersistentObject(uint32_t storageID, const void *objectID,
return res;
}

SYMVER_COMPAT_GP11(TEE_CreatePersistentObject);
TEE_Result __GP11_TEE_CreatePersistentObject(uint32_t storageID,
const void *objectID,
uint32_t objectIDLen,
Expand Down Expand Up @@ -732,6 +753,7 @@ TEE_Result TEE_RenamePersistentObject(TEE_ObjectHandle object,
return res;
}

SYMVER_COMPAT_GP11(TEE_RenamePersistentObject);
TEE_Result __GP11_TEE_RenamePersistentObject(TEE_ObjectHandle object,
const void *newObjectID,
uint32_t newObjectIDLen)
Expand Down Expand Up @@ -806,6 +828,7 @@ TEE_Result TEE_StartPersistentObjectEnumerator(TEE_ObjectEnumHandle
return res;
}

SYMVER_GP131(TEE_GetNextPersistentObject);
TEE_Result TEE_GetNextPersistentObject(TEE_ObjectEnumHandle objectEnumerator,
TEE_ObjectInfo *objectInfo,
void *objectID, size_t *objectIDLen)
Expand Down Expand Up @@ -847,6 +870,7 @@ TEE_Result TEE_GetNextPersistentObject(TEE_ObjectEnumHandle objectEnumerator,
return res;
}

SYMVER_COMPAT_GP11(TEE_GetNextPersistentObject);
TEE_Result
__GP11_TEE_GetNextPersistentObject(TEE_ObjectEnumHandle objectEnumerator,
__GP11_TEE_ObjectInfo *objectInfo,
Expand Down Expand Up @@ -891,6 +915,7 @@ __GP11_TEE_GetNextPersistentObject(TEE_ObjectEnumHandle objectEnumerator,

/* Data and Key Storage API - Data Stream Access Functions */

SYMVER_GP131(TEE_ReadObjectData);
TEE_Result TEE_ReadObjectData(TEE_ObjectHandle object, void *buffer,
size_t size, size_t *count)
{
Expand All @@ -917,6 +942,7 @@ TEE_Result TEE_ReadObjectData(TEE_ObjectHandle object, void *buffer,
return res;
}

SYMVER_COMPAT_GP11(TEE_ReadObjectData);
TEE_Result __GP11_TEE_ReadObjectData(TEE_ObjectHandle object, void *buffer,
uint32_t size, uint32_t *count)
{
Expand All @@ -930,6 +956,7 @@ TEE_Result __GP11_TEE_ReadObjectData(TEE_ObjectHandle object, void *buffer,
return res;
}

SYMVER_GP131(TEE_WriteObjectData);
TEE_Result TEE_WriteObjectData(TEE_ObjectHandle object, const void *buffer,
size_t size)
{
Expand Down Expand Up @@ -958,12 +985,14 @@ TEE_Result TEE_WriteObjectData(TEE_ObjectHandle object, const void *buffer,
return res;
}

SYMVER_COMPAT_GP11(TEE_WriteObjectData);
TEE_Result __GP11_TEE_WriteObjectData(TEE_ObjectHandle object,
const void *buffer, uint32_t size)
{
return TEE_WriteObjectData(object, buffer, size);
}

SYMVER_GP131(TEE_TruncateObjectData);
TEE_Result TEE_TruncateObjectData(TEE_ObjectHandle object, size_t size)
{
TEE_Result res;
Expand All @@ -985,12 +1014,14 @@ TEE_Result TEE_TruncateObjectData(TEE_ObjectHandle object, size_t size)
return res;
}

SYMVER_COMPAT_GP11(TEE_TruncateObjectData);
TEE_Result __GP11_TEE_TruncateObjectData(TEE_ObjectHandle object,
uint32_t size)
{
return TEE_TruncateObjectData(object, size);
}

SYMVER_GP131(TEE_SeekObjectData);
TEE_Result TEE_SeekObjectData(TEE_ObjectHandle object, intmax_t offset,
TEE_Whence whence)
{
Expand Down Expand Up @@ -1047,6 +1078,7 @@ TEE_Result TEE_SeekObjectData(TEE_ObjectHandle object, intmax_t offset,
return res;
}

SYMVER_COMPAT_GP11(TEE_SeekObjectData);
TEE_Result __GP11_TEE_SeekObjectData(TEE_ObjectHandle object, int32_t offset,
TEE_Whence whence)
{
Expand Down