/** * 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. */ #ifndef __S_ERROR_H__ #define __S_ERROR_H__ #define S_SUCCESS ((S_RESULT)0x00000000) #define SM_SUCCESS S_SUCCESS #define TEEC_SUCCESS S_SUCCESS #define SST_SUCCESS S_SUCCESS /** * Generic error code : Generic error **/ #define S_ERROR_GENERIC ((S_RESULT)0xFFFF0000) #define SM_ERROR_GENERIC S_ERROR_GENERIC #define TEEC_ERROR_GENERIC S_ERROR_GENERIC #define SST_ERROR_GENERIC S_ERROR_GENERIC /** * Generic error code : The underlying security system denies the access to the * object **/ #define S_ERROR_ACCESS_DENIED ((S_RESULT)0xFFFF0001) #define SM_ERROR_ACCESS_DENIED S_ERROR_ACCESS_DENIED #define TEEC_ERROR_ACCESS_DENIED S_ERROR_ACCESS_DENIED #define SST_ERROR_ACCESS_DENIED S_ERROR_ACCESS_DENIED /** * Generic error code : The pending operation is cancelled. **/ #define S_ERROR_CANCEL ((S_RESULT)0xFFFF0002) #define SM_ERROR_CANCEL S_ERROR_CANCEL #define TEEC_ERROR_CANCEL S_ERROR_CANCEL /** * Generic error code : The underlying system detects a conflict **/ #define S_ERROR_ACCESS_CONFLICT ((S_RESULT)0xFFFF0003) #define SM_ERROR_EXCLUSIVE_ACCESS S_ERROR_ACCESS_CONFLICT #define TEEC_ERROR_ACCESS_CONFLICT S_ERROR_ACCESS_CONFLICT #define SST_ERROR_ACCESS_CONFLICT S_ERROR_ACCESS_CONFLICT /** * Generic error code : Too much data for the operation or some data remain * unprocessed by the operation. **/ #define S_ERROR_EXCESS_DATA ((S_RESULT)0xFFFF0004) #define SM_ERROR_EXCESS_DATA S_ERROR_EXCESS_DATA #define TEEC_ERROR_EXCESS_DATA S_ERROR_EXCESS_DATA /** * Generic error code : Error of data format **/ #define S_ERROR_BAD_FORMAT ((S_RESULT)0xFFFF0005) #define SM_ERROR_FORMAT S_ERROR_BAD_FORMAT #define TEEC_ERROR_BAD_FORMAT S_ERROR_BAD_FORMAT /** * Generic error code : The specified parameters are invalid **/ #define S_ERROR_BAD_PARAMETERS ((S_RESULT)0xFFFF0006) #define SM_ERROR_ILLEGAL_ARGUMENT S_ERROR_BAD_PARAMETERS #define TEEC_ERROR_BAD_PARAMETERS S_ERROR_BAD_PARAMETERS #define SST_ERROR_BAD_PARAMETERS S_ERROR_BAD_PARAMETERS /** * Generic error code : Illegal state for the operation. **/ #define S_ERROR_BAD_STATE ((S_RESULT)0xFFFF0007) #define SM_ERROR_ILLEGAL_STATE S_ERROR_BAD_STATE #define TEEC_ERROR_BAD_STATE S_ERROR_BAD_STATE /** * Generic error code : The item is not found **/ #define S_ERROR_ITEM_NOT_FOUND ((S_RESULT)0xFFFF0008) #define SM_ERROR_ITEM_NOT_FOUND S_ERROR_ITEM_NOT_FOUND #define TEEC_ERROR_ITEM_NOT_FOUND S_ERROR_ITEM_NOT_FOUND #define SST_ERROR_ITEM_NOT_FOUND S_ERROR_ITEM_NOT_FOUND /** * Generic error code : The specified operation is not implemented **/ #define S_ERROR_NOT_IMPLEMENTED ((S_RESULT)0xFFFF0009) #define SM_ERROR_NOT_IMPLEMENTED S_ERROR_NOT_IMPLEMENTED #define TEEC_ERROR_NOT_IMPLEMENTED S_ERROR_NOT_IMPLEMENTED /** * Generic error code : The specified operation is not supported **/ #define S_ERROR_NOT_SUPPORTED ((S_RESULT)0xFFFF000A) #define SM_ERROR_NOT_SUPPORTED S_ERROR_NOT_SUPPORTED #define TEEC_ERROR_NOT_SUPPORTED S_ERROR_NOT_SUPPORTED /** * Generic error code : Insufficient data is available for the operation. **/ #define S_ERROR_NO_DATA ((S_RESULT)0xFFFF000B) #define SM_ERROR_NO_DATA S_ERROR_NO_DATA #define TEEC_ERROR_NO_DATA S_ERROR_NO_DATA /** * Generic error code : Not enough memory to perform the operation **/ #define S_ERROR_OUT_OF_MEMORY ((S_RESULT)0xFFFF000C) #define SM_ERROR_OUT_OF_MEMORY S_ERROR_OUT_OF_MEMORY #define TEEC_ERROR_OUT_OF_MEMORY S_ERROR_OUT_OF_MEMORY #define SST_ERROR_OUT_OF_MEMORY S_ERROR_OUT_OF_MEMORY /** * Generic error code : The service is currently unable to handle the request; * try later **/ #define S_ERROR_BUSY ((S_RESULT)0xFFFF000D) #define SM_ERROR_BUSY S_ERROR_BUSY #define TEEC_ERROR_BUSY S_ERROR_BUSY /** * Generic error code : security violation **/ #define S_ERROR_SECURITY ((S_RESULT)0xFFFF000F) #define SM_ERROR_SECURITY S_ERROR_SECURITY #define TEEC_ERROR_SECURITY S_ERROR_SECURITY /** * Generic error code : the buffer is too short **/ #define S_ERROR_SHORT_BUFFER ((S_RESULT)0xFFFF0010) #define SM_ERROR_SHORT_BUFFER S_ERROR_SHORT_BUFFER #define TEEC_ERROR_SHORT_BUFFER S_ERROR_SHORT_BUFFER /** * Generic error code : SControl Asynchronous Operations are not supported. */ #define S_ERROR_ASYNC_OPERATIONS_NOT_SUPPORTED ((S_RESULT)0xFFFF0011) #define SM_ERROR_ASYNC_OPERATIONS_NOT_SUPPORTED S_ERROR_ASYNC_OPERATIONS_NOT_SUPPORTED /** * Generic error code : the number of handles currently created * for a specific resource has reached the maximum amount. **/ #define S_ERROR_NO_MORE_HANDLES ((S_RESULT)0xFFFF0013) /** * Generic error code : the monotonic counter is corrupted **/ #define S_ERROR_CORRUPTED ((S_RESULT)0xFFFF0014) /** * Generic error code : the operation is not terminated **/ #define S_PENDING ((S_RESULT)0xFFFF2000) /** * Generic error code : A timeout occurred **/ #define S_ERROR_TIMEOUT ((S_RESULT)0xFFFF3001) /** * Error code: Error of the underlying OS. **/ #define S_ERROR_UNDERLYING_OS ((S_RESULT)0xFFFF3002) #define TEEC_ERROR_OS S_ERROR_UNDERLYING_OS /** * Error code: The operation is cancelled by a signal. **/ #define S_ERROR_CANCELLED_BY_SIGNAL ((S_RESULT)0xFFFF3003) /** * Generic error code : Overflow **/ #define S_ERROR_OVERFLOW ((S_RESULT)0xFFFF300F) #define SST_ERROR_OVERFLOW S_ERROR_OVERFLOW /** * Generic error code : The item already exists **/ #define S_ERROR_ITEM_EXISTS ((S_RESULT)0xFFFF3012) /** * Generic error code : The application reported an error. The code of the * applicative error is encoded in the message data. */ #define S_ERROR_SERVICE ((S_RESULT)0xFFFF1000) #define SM_ERROR_SERVICE S_ERROR_SERVICE #define S_PENDING ((S_RESULT)0xFFFF2000) #define SM_PENDING S_PENDING /** * Generic error code : Critical error causing the platform to shutdown. */ #define S_ERROR_CRITICAL ((S_RESULT)0xFFFF3010) /** * Generic error code : the underlying peripheral is unreachable. */ #define S_ERROR_UNREACHABLE ((S_RESULT)0xFFFF3013) /*------------------------------------------------------------------------------ Communication Error Codes ------------------------------------------------------------------------------*/ /** * Generic communication error **/ #define S_ERROR_COMMUNICATION ((S_RESULT)0xFFFF000E) #define SM_ERROR_COMMUNICATION S_ERROR_COMMUNICATION #define TEEC_ERROR_COMMUNICATION S_ERROR_COMMUNICATION /** * Error of communication : Error of protocol **/ #define S_ERROR_CONNECTION_PROTOCOL ((S_RESULT)0xFFFF3020) /** * Error of communication : The connection is broken. **/ #define S_ERROR_CONNECTION_BROKEN ((S_RESULT)0xFFFF3021) /** * Error of communication : Error during the connection setup. **/ #define S_ERROR_CONNECTION_SETUP ((S_RESULT)0xFFFF3022) /** * Error of communication : The connection is refused by the distant target. **/ #define S_ERROR_CONNECTION_REFUSED ((S_RESULT)0xFFFF3023) /** * Error of communication: The target of the connection is dead **/ #define S_ERROR_TARGET_DEAD ((S_RESULT)0xFFFF3024) #define SM_ERROR_TARGET_DEAD S_ERROR_TARGET_DEAD #define TEEC_ERROR_TARGET_DEAD S_ERROR_TARGET_DEAD /*------------------------------------------------------------------------------ Storage Error Codes ------------------------------------------------------------------------------*/ /** File system error code: not enough space to complete the operation. */ #define S_ERROR_STORAGE_NO_SPACE ((S_RESULT)0xFFFF3041) #define SST_ERROR_NO_SPACE 0xFFFF3041 /** * File system error code: The file system is corrupted. */ #define S_ERROR_STORAGE_CORRUPTED ((S_RESULT)0xFFFF3045) #define SST_ERROR_CORRUPTED S_ERROR_STORAGE_CORRUPTED /** * File system error code: The file system is unreachable. */ #define S_ERROR_STORAGE_UNREACHABLE ((S_RESULT)0xFFFF3046) /*------------------------------------------------------------------------------ Authentication / X509 error codes ------------------------------------------------------------------------------*/ #define S_ERROR_AUTHENTICATION_FAILED ((S_RESULT)0xFFFF3060) #define S_ERROR_WRONG_SIGNATURE ((S_RESULT)0xFFFF3061) #define S_ERROR_BAD_CERTIFICATE ((S_RESULT)0xFFFF3062) #define S_ERROR_WRONG_ISSUER ((S_RESULT)0xFFFF3063) #define S_ERROR_CERTIFICATE_EXPIRED ((S_RESULT)0xFFFF3064) /*------------------------------------------------------------------------------ Crypto error codes ------------------------------------------------------------------------------*/ #define S_ERROR_BAD_KEY ((S_RESULT)0xFFFF3070) /*------------------------------------------------------------------------------ Indicates the physical memory is in TCM ------------------------------------------------------------------------------*/ #define S_ERROR_ARM_MEMORY_IS_TCM ((S_RESULT)0xFFFF3100) /*------------------------------------------------------------------------------ VM-specific Error Codes ------------------------------------------------------------------------------*/ #define S_ERROR_UNCAUGHT_EXCEPTION ((S_RESULT)0xFFFF3080) #define S_ERROR_TRUSTED_INTERPRETER ((S_RESULT)0xFFFF3081) /*------------------------------------------------------------------------------ Range [0xFFFF3200:0xFFFF35FF] is reserved for internal use ------------------------------------------------------------------------------*/ #endif /* __S_ERROR_H__ */