12e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/** 22e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Copyright(c) 2011 Trusted Logic. All rights reserved. 32e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * 42e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Redistribution and use in source and binary forms, with or without 52e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * modification, are permitted provided that the following conditions 62e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * are met: 72e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * 82e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * * Redistributions of source code must retain the above copyright 92e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * notice, this list of conditions and the following disclaimer. 102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * * Redistributions in binary form must reproduce the above copyright 112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * notice, this list of conditions and the following disclaimer in 122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * the documentation and/or other materials provided with the 132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * distribution. 142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * * Neither the name Trusted Logic nor the names of its 152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * contributors may be used to endorse or promote products derived 162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * from this software without specific prior written permission. 172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * 182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */ 302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/* 322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * This header file contains extensions to the TEE Client API that are 332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * specific to the Trusted Foundations implementations 342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */ 352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifndef __TEE_CLIENT_API_EX_H__ 362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define __TEE_CLIENT_API_EX_H__ 372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/* Implementation defined Login types */ 392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define TEEC_LOGIN_AUTHENTICATION 0x80000000 402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define TEEC_LOGIN_PRIVILEGED 0x80000002 412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/* Type definitions */ 432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct 452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{ 462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t x; 472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t y; 482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} 492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyTEEC_TimeLimit; 502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct 522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{ 532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley char apiDescription[65]; 542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley char commsDescription[65]; 552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley char TEEDescription[65]; 562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} 572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyTEEC_ImplementationInfo; 582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct 602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{ 612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t pageSize; 622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t tmprefMaxSize; 632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t sharedMemMaxSize; 642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t nReserved3; 652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t nReserved4; 662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t nReserved5; 672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t nReserved6; 682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t nReserved7; 692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} 702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyTEEC_ImplementationLimits; 712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleyvoid TEEC_EXPORT TEEC_GetImplementationInfo( 732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley TEEC_Context* context, 742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley TEEC_ImplementationInfo* description); 752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleyvoid TEEC_EXPORT TEEC_GetImplementationLimits( 772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley TEEC_ImplementationLimits* limits); 782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleyvoid TEEC_EXPORT TEEC_GetTimeLimit( 802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley TEEC_Context* context, 812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t timeout, 822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley TEEC_TimeLimit* timeLimit); 832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyTEEC_Result TEEC_EXPORT TEEC_OpenSessionEx ( 852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley TEEC_Context* context, 862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley TEEC_Session* session, 872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley const TEEC_TimeLimit* timeLimit, 882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley const TEEC_UUID* destination, 892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t connectionMethod, 902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley void* connectionData, 912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley TEEC_Operation* operation, 922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t* errorOrigin); 932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyTEEC_Result TEEC_EXPORT TEEC_InvokeCommandEx( 952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley TEEC_Session* session, 962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley const TEEC_TimeLimit* timeLimit, 972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t commandID, 982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley TEEC_Operation* operation, 992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t* errorOrigin); 1002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 1012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyTEEC_Result TEEC_EXPORT TEEC_ReadSignatureFile( 1022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley void** ppSignatureFile, 1032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t* pnSignatureFileLength); 1042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 1052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif /* __TEE_CLIENT_API_EX_H__ */ 106