| /** |
| * @file SE_HAL_Lib.h |
| * @author NXP Semiconductors |
| * @version 1.0 |
| * @par License |
| * |
| * Copyright 2018 NXP |
| * SPDX-License-Identifier: Apache-2.0 |
| * |
| * @par Description |
| * This file provides the SE HAL Library interface for Alibaba. |
| * @par History |
| * 1.0 24-jan-2018 : Initial version |
| * |
| *****************************************************************************/ |
| #ifndef _SE_HAL_LIB_ |
| #define _SE_HAL_LIB_ |
| |
| #include "a71cl_api.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| |
| /** |
| * Opens a communication session with the SE. |
| * @param[in, out] handle The communication handle |
| * @retval ::0 - Success; other - an error code. |
| */ |
| S32 open_session(void **handle); |
| |
| |
| /** |
| * Sends data to the SE and returns the processed data from it. |
| * @param[in] handle The communication handle |
| * @param[in] cmd The command code |
| * @param[in] input The input data |
| * @param[in] input_len The input data length |
| * @param[out] output The output (processed) data |
| * @param[out] output_len The output data length |
| * @retval ::0 - Success; other - an error code. |
| */ |
| S32 invoke_command(void *handle, U32 cmd, |
| void *input, U32 input_len, |
| void *output, U32 *output_len); |
| |
| /** |
| * Closes the communication session with the SE. |
| * @param[in] handle The communication handle |
| * @retval ::0 - Success; other - an error code. |
| */ |
| S32 close_session(void *handle); |
| |
| |
| // Allow up to 16 open handles concurrently |
| #define MAX_SE_HAL_LIB_HANDLES 16 |
| |
| |
| // Command codes |
| #define A71CL_SE_HAL_CMD_READ_CL 0x41 //!< Read CL |
| #define A71CL_SE_HAL_CMD_UPDATE_CL_PRIV_KEY 0x42 //!< Update CL private Key |
| #define A71CL_SE_HAL_CMD_RSA_GENERATE_KEY 0x51 //!< Generate RSA Key |
| #define A71CL_SE_HAL_CMD_RSA_GET_PUB_KEY 0x52 //!< Get RSA PUB_KEY |
| #define A71CL_SE_HAL_CMD_RSA_PRIV_KEY_SIGN 0x53 //!< Sign using RSA Private Key |
| #define A71CL_SE_HAL_CMD_RSA_PUB_KEY_VERIFY 0x54 //!< Verify signature using RSA Public key |
| #define A71CL_SE_HAL_CMD_RSA_PUB_KEY_ENCRYPT 0x55 //!< Encrypt using RSA Public Key |
| #define A71CL_SE_HAL_CMD_RSA_PRIV_KEY_DECRYPT 0x56 //!< Decrypt using RSA Private Key |
| #define A71CL_SE_HAL_CMD_3DES_ENCRYPT 0x57 //!< 3DES Encryption |
| #define A71CL_SE_HAL_CMD_3DES_DECRYPT 0x58 //!< 3DES Decryption |
| #define A71CL_SE_HAL_CMD_3DES_MAC 0x59 //!< 3DES Mac calculation |
| #define A71CL_SE_HAL_CMD_AES_ENCRYPT 0x5A //!< AES Encryption |
| #define A71CL_SE_HAL_CMD_AES_DECRYPT 0x5B //!< AES Decryption |
| #define A71CL_SE_HAL_CMD_AES_MAC 0x5C //!< AES MAC Calculation |
| #define A71CL_SE_HAL_CMD_SEC_WRITE_DATA 0x61 //!< Secure Storage Write Data |
| #define A71CL_SE_HAL_CMD_SEC_READ_DATA 0x62 //!< Secure Storage Read Data |
| #define A71CL_SE_HAL_CMD_SEC_REMOVE_DATA 0x63 //!< Secure Storage Remove Data |
| #define A71CL_SE_HAL_CMD_HASH 0x71 //!< Hash calculation |
| |
| // Error codes |
| #define A71CL_SE_HAL_ERR_SUCCESS 0x00 //!< Operation successfull |
| #define A71CL_SE_HAL_ERR_MEMORY_FAILED 0xC0 //!< Error - Memory Failed |
| #define A71CL_SE_HAL_ERR_LENGTH 0xC1 //!< Error - Length |
| #define A71CL_SE_HAL_ERR_ACCESS_VIOLATION 0xC2 //!< Error - Access Violation, 6982 |
| #define A71CL_SE_HAL_ERR_COND_NOT_SATISFIED 0xC3 //!< Error - Condition not satisfied, 6985 |
| #define A71CL_SE_HAL_ERR_WRONG_INS 0xC4 //!< Error - Wrong instruction |
| #define A71CL_SE_HAL_ERR_NOT_SUPPORTED 0xC5 //!< Error - Not Supported |
| #define A71CL_SE_HAL_ERR_OUT_OF_MEMORY 0xC6 //!< Error - Out of memory |
| #define A71CL_SE_HAL_ERR_INCORRECT_PARAMS 0xC7 //!< Error - incorrect parameters |
| #define A71CL_SE_HAL_ERR_FILE_NOT_FOUND 0xC8 //!< Error - 6A82 |
| #define A71CL_SE_HAL_ERR_RECORD_NOT_FOUND 0xC9 //!< Error - 6A83 |
| #define A71CL_SE_HAL_ERR_CHECKSUM 0xCA //!< Error - Checksum |
| #define A71CL_SE_HAL_ERR_AUTH_FAILED 0xCB //!< Error - Authentication failed ,63Cx ??? |
| #define A71CL_SE_HAL_ERR_KEY_LOCKED 0xCC //!< Error - key locked , 6983 |
| #define A71CL_SE_HAL_ERR_SM_WRONG_MAC 0xCD //!< Error - Secure Messaging Wrong MAC , 6988 |
| #define A71CL_SE_HAL_ERR_DATA_PARAMS_INCORRECT 0xCE //!< Error - Data Params are incorrect , 6A80 |
| #define A71CL_SE_HAL_ERR_DEVICE_LOCKED 0xCF //!< Error - Function not supported, device locked ,6A81 |
| #define A71CL_SE_HAL_ERR_KEY_NOT_FOUND 0xD0 //!< Error - Key not found ,6A88 |
| #define A71CL_SE_HAL_ERR_ADDRESS_BOUNDARY 0xD1 //!< Error - Starting address beyond the board ,6B00 |
| #define A71CL_SE_HAL_ERR_DATA_INVALID 0xD2 //!< Error - Data invalid(get response) ,6F00 |
| #define A71CL_SE_HAL_ERR_OPERATION_FAILED 0xD3 //!< Error - Operation failed |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif //_SE_HAL_LIB_ |