mirror of https://github.com/ARMmbed/mbed-os.git
274 lines
13 KiB
C
274 lines
13 KiB
C
/**************************************************************************************
|
|
* 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
|
|
|
|
|
|
|
|
|