/************************************************************************************** * Copyright (c) 2016-2017, ARM Limited or its affiliates. All rights reserved * * * * This file and the related binary are licensed under the following license: * * * * ARM Object Code and Header Files License, v1.0 Redistribution. * * * * Redistribution and use of object code, header files, and documentation, without * * modification, are permitted provided that the following conditions are met: * * * * 1) Redistributions must reproduce the above copyright notice and the * * following disclaimer in the documentation and/or other materials * * provided with the distribution. * * * * 2) Unless to the extent explicitly permitted by law, no reverse * * engineering, decompilation, or disassembly of is permitted. * * * * 3) Redistribution and use is permitted solely for the purpose of * * developing or executing applications that are targeted for use * * on an ARM-based product. * * * * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * * CONTRIBUTORS "AS IS." ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, * * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * * COPYRIGHT HOLDERS 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 CRYS_ERROR_H #define CRYS_ERROR_H #include "ssi_pal_types.h" #ifdef __cplusplus extern "C" { #endif /*! @file @brief This module defines the error return code types and the numbering spaces of the error codes for each module of the layers listed below. @defgroup crys_error CryptoCell general base error codes @{ @ingroup cryptocell_api */ /*! The definitions of the error number space used for the different modules */ /* ........... Error base numeric mapping definitions ................... */ /* ----------------------------------------------------------------------- */ /*! CRYS error base number. */ #define CRYS_ERROR_BASE 0x00F00000UL /*! Error range number assigned for each layer. */ #define CRYS_ERROR_LAYER_RANGE 0x00010000UL /*! Error range number assigned to each module on its specified layer. */ #define CRYS_ERROR_MODULE_RANGE 0x00000100UL /* Defines the layer index for the error mapping. */ /*! CRYS error layer index. */ #define CRYS_LAYER_ERROR_IDX 0x00UL /*! Low level functions error layer index. */ #define LLF_LAYER_ERROR_IDX 0x01UL /*! Generic error layer index. */ #define GENERIC_ERROR_IDX 0x05UL /* Defines the module index for error mapping */ /*! AES error index.*/ #define AES_ERROR_IDX 0x00UL /*! DES error index.*/ #define DES_ERROR_IDX 0x01UL /*! HASH error index.*/ #define HASH_ERROR_IDX 0x02UL /*! HMAC error index.*/ #define HMAC_ERROR_IDX 0x03UL /*! RSA error index.*/ #define RSA_ERROR_IDX 0x04UL /*! DH error index.*/ #define DH_ERROR_IDX 0x05UL /*! ECPKI error index.*/ #define ECPKI_ERROR_IDX 0x08UL /*! RND error index.*/ #define RND_ERROR_IDX 0x0CUL /*! Common error index.*/ #define COMMON_ERROR_IDX 0x0DUL /*! KDF error index.*/ #define KDF_ERROR_IDX 0x11UL /*! HKDF error index.*/ #define HKDF_ERROR_IDX 0x12UL /*! AESCCM error index.*/ #define AESCCM_ERROR_IDX 0x15UL /*! FIPS error index.*/ #define FIPS_ERROR_IDX 0x17UL /*! PKA error index.*/ #define PKA_MODULE_ERROR_IDX 0x21UL /*! CHACHA error index.*/ #define CHACHA_ERROR_IDX 0x22UL /*! EC montgomery and edwards error index.*/ #define EC_MONT_EDW_ERROR_IDX 0x23UL /*! CHACHA POLY error index.*/ #define CHACHA_POLY_ERROR_IDX 0x24UL /*! POLY error index.*/ #define POLY_ERROR_IDX 0x25UL /*! SRP error index.*/ #define SRP_ERROR_IDX 0x26UL /* .......... defining the error spaces for each module on each layer ........... */ /* ------------------------------------------------------------------------------ */ /*! AES module error base address - 0x00F00000. */ #define CRYS_AES_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * AES_ERROR_IDX ) ) /*! DES module error base address - 0x00F00100. */ #define CRYS_DES_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * DES_ERROR_IDX ) ) /*! HASH module error base address - 0x00F00200. */ #define CRYS_HASH_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * HASH_ERROR_IDX ) ) /*! HMAC module error base address - 0x00F00300. */ #define CRYS_HMAC_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * HMAC_ERROR_IDX ) ) /*! RSA module error base address - 0x00F00400. */ #define CRYS_RSA_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * RSA_ERROR_IDX ) ) /*! DH module error base address - 0x00F00500. */ #define CRYS_DH_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * DH_ERROR_IDX ) ) /*! ECPKI module error base address - 0x00F00800. */ #define CRYS_ECPKI_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * ECPKI_ERROR_IDX ) ) /*! Low level ECPKI module error base address - 0x00F10800. */ #define LLF_ECPKI_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * LLF_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * ECPKI_ERROR_IDX ) ) /*! RND module error base address - 0x00F00C00. */ #define CRYS_RND_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * RND_ERROR_IDX ) ) /*! Low level RND module error base address - 0x00F10C00. */ #define LLF_RND_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * LLF_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * RND_ERROR_IDX ) ) /*! COMMMON module error base address - 0x00F00D00. */ #define CRYS_COMMON_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * COMMON_ERROR_IDX ) ) /*! KDF module error base address - 0x00F01100. */ #define CRYS_KDF_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * KDF_ERROR_IDX ) ) /*! HKDF module error base address - 0x00F01100. */ #define CRYS_HKDF_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * HKDF_ERROR_IDX ) ) /*! AESCCM module error base address - 0x00F01500. */ #define CRYS_AESCCM_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * AESCCM_ERROR_IDX ) ) /*! FIPS module error base address - 0x00F01700. */ #define CRYS_FIPS_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * FIPS_ERROR_IDX ) ) /*! PKA module error base address - 0x00F02100. */ #define PKA_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * PKA_MODULE_ERROR_IDX ) ) /*! CHACHA module error base address - 0x00F02200. */ #define CRYS_CHACHA_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * CHACHA_ERROR_IDX ) ) /*! CHACHA POLY module error base address - 0x00F02400. */ #define CRYS_CHACHA_POLY_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * CHACHA_POLY_ERROR_IDX ) ) /*! POLY module error base address - 0x00F02500. */ #define CRYS_POLY_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * POLY_ERROR_IDX ) ) /*! SRP module error base address - 0x00F02600. */ #define CRYS_SRP_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * SRP_ERROR_IDX ) ) /*! EC MONT_EDW module error base address - 0x00F02300. */ #define CRYS_EC_MONT_EDW_MODULE_ERROR_BASE (CRYS_ERROR_BASE + \ (CRYS_ERROR_LAYER_RANGE * CRYS_LAYER_ERROR_IDX) + \ (CRYS_ERROR_MODULE_RANGE * EC_MONT_EDW_ERROR_IDX ) ) /*! User generic error base address - 0x00F50000 */ #define GENERIC_ERROR_BASE ( CRYS_ERROR_BASE + (CRYS_ERROR_LAYER_RANGE * GENERIC_ERROR_IDX) ) /*! CRYS fatal error. */ #define CRYS_FATAL_ERROR (GENERIC_ERROR_BASE + 0x00UL) /*! CRYS out of resources error. */ #define CRYS_OUT_OF_RESOURCE_ERROR (GENERIC_ERROR_BASE + 0x01UL) /*! CRYS illegal resource value error. */ #define CRYS_ILLEGAL_RESOURCE_VAL_ERROR (GENERIC_ERROR_BASE + 0x02UL) /* ............ The OK (success) definition ....................... */ /*! Success defintion. */ #define CRYS_OK 0 /*! MACRO that defines crys return value. */ #define SASI_CRYS_RETURN_ERROR(retCode, retcodeInfo, funcHandler) \ ((retCode) == 0 ? CRYS_OK : funcHandler(retCode, retcodeInfo)) /************************ Enums ********************************/ /************************ Typedefs ****************************/ /*! The typedef definition of all of the error codes that are returned from the CRYS functions */ typedef uint32_t CRYSError_t; /************************ Structs ******************************/ /************************ Public Variables **********************/ /************************ Public Functions **********************/ #ifdef __cplusplus } #endif /** @} */ #endif