123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- /**************************************************************************************
- * 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
|