/** * Copyright(c) 2011 Trusted Logic. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * Neither the name Trusted Logic nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This header file contains extensions to the TEE Client API that are * specific to the Trusted Foundations implementations */ #ifndef __TEE_CLIENT_API_EX_H__ #define __TEE_CLIENT_API_EX_H__ /* Implementation defined Login types */ #define TEEC_LOGIN_AUTHENTICATION 0x80000000 #define TEEC_LOGIN_PRIVILEGED 0x80000002 /* Type definitions */ typedef struct { uint32_t x; uint32_t y; } TEEC_TimeLimit; typedef struct { char apiDescription[65]; char commsDescription[65]; char TEEDescription[65]; } TEEC_ImplementationInfo; typedef struct { uint32_t pageSize; uint32_t tmprefMaxSize; uint32_t sharedMemMaxSize; uint32_t nReserved3; uint32_t nReserved4; uint32_t nReserved5; uint32_t nReserved6; uint32_t nReserved7; } TEEC_ImplementationLimits; void TEEC_EXPORT TEEC_GetImplementationInfo( TEEC_Context* context, TEEC_ImplementationInfo* description); void TEEC_EXPORT TEEC_GetImplementationLimits( TEEC_ImplementationLimits* limits); void TEEC_EXPORT TEEC_GetTimeLimit( TEEC_Context* context, uint32_t timeout, TEEC_TimeLimit* timeLimit); TEEC_Result TEEC_EXPORT TEEC_OpenSessionEx ( TEEC_Context* context, TEEC_Session* session, const TEEC_TimeLimit* timeLimit, const TEEC_UUID* destination, uint32_t connectionMethod, void* connectionData, TEEC_Operation* operation, uint32_t* errorOrigin); TEEC_Result TEEC_EXPORT TEEC_InvokeCommandEx( TEEC_Session* session, const TEEC_TimeLimit* timeLimit, uint32_t commandID, TEEC_Operation* operation, uint32_t* errorOrigin); TEEC_Result TEEC_EXPORT TEEC_ReadSignatureFile( void** ppSignatureFile, uint32_t* pnSignatureFileLength); #endif /* __TEE_CLIENT_API_EX_H__ */