| /* |
| * |
| * Copyright 2018-2020 NXP |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /** |
| * @par Description |
| * This file is the communication specific Host API of the A70CM/CI and A71CH secure module. |
| * It also customizes the Generic Ax library for this specific product instance |
| * @par History |
| * 1.0 27-march-2014 : Initial version |
| * 7-may-2017 : Unified version for A70CM, CI and A71CH |
| * |
| *****************************************************************************/ |
| #ifndef _SM_API_ |
| #define _SM_API_ |
| |
| #include "sm_types.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <PlugAndTrust_HostLib_Ver.h> |
| |
| #define AX_HOST_LIB_MAJOR (PLUGANDTRUST_HOSTLIB_VER_MAJOR) //!< Major number A71CH Host Library |
| #define AX_HOST_LIB_MINOR (PLUGANDTRUST_HOSTLIB_VER_MINOR) //!< Minor (High Nibble)/Patch number (Low Nibble) of A71CH Host Library |
| |
| /*! |
| * @addtogroup sss_sscp_a71ch |
| * @{ |
| */ |
| |
| #define SE_CONNECT_TYPE_START 0x000 |
| |
| typedef enum |
| { |
| kType_SE_Conn_Type_NONE = 0, |
| /** Used for A71XX Family */ |
| kType_SE_Conn_Type_SCII2C = SE_CONNECT_TYPE_START + 2, |
| /** Used for PC/OSX for virtual COM Port */ |
| kType_SE_Conn_Type_VCOM = SE_CONNECT_TYPE_START + 3, |
| /** Used for Legacy JRCP V1 protocol with iMX Linux Proxy */ |
| kType_SE_Conn_Type_JRCP_V1 = SE_CONNECT_TYPE_START + 4, |
| /** Used for New JRCP Protocol */ |
| kType_SE_Conn_Type_JRCP_V2 = SE_CONNECT_TYPE_START + 5, |
| /** Used for T=1 over I2C for SE050 family */ |
| kType_SE_Conn_Type_T1oI2C = SE_CONNECT_TYPE_START + 6, |
| /** Used for Use NFC Interface to talk to SE */ |
| kType_SE_Conn_Type_NFC = SE_CONNECT_TYPE_START + 7, |
| /** Used for Use a software layer to talk to SE |
| * This logicaly allows double encryption of packets |
| * from same host and allows multi-tenenancy |
| * |
| * Channel can be deemed as "Secure Channel" where applicable. |
| * |
| * Or it may be a plain "arbiter" to allow plain communication from |
| * multiple threads on the same application. |
| */ |
| kType_SE_Conn_Type_Channel = SE_CONNECT_TYPE_START + 8, |
| |
| kType_SE_Conn_Type_PCSC = SE_CONNECT_TYPE_START + 9, |
| |
| kType_SE_Conn_Type_LAST, |
| kType_SE_Conn_Type_SIZE = 0x7FFF |
| } SSS_Conn_Type_t; |
| |
| #define SELECT_APPLET 0 //!< Select predefined applet |
| #define SELECT_NONE 1 //!< Don't issue a select |
| #define SELECT_SSD 2 //!< Select SSD |
| |
| /** |
| * Contains the information required to resume a connection with the Security Module. |
| * Its content is only to be interpreted by the Host Library. |
| * The semantics of the param1 and param2 fields depends on the link layer. |
| */ |
| typedef struct { |
| U16 connType; |
| U16 param1; //!< Useage depends on link layer |
| U16 param2; //!< Useage depends on link layer |
| U16 hostLibVersion; //!< MSByte contains major version (::AX_HOST_LIB_MAJOR); LSByte contains minor version of HostLib (::AX_HOST_LIB_MINOR) |
| U32 appletVersion; /*!< MSByte contains major version; |
| 3 leading bits of LSByte contains minor version of Applet; |
| Last bit of LSByte encodes whether Applet is in Debug Mode, a '1' means 'Debug Mode' is available */ |
| U16 sbVersion; //!< Expected to be 0x0000 |
| U8 select; //!< Applet selection mode |
| } SmCommState_t; |
| |
| /** \name Communication functions |
| @{ */ |
| U16 SM_Close(void *conn_ctx, U8 mode); |
| U16 SM_Connect(void *conn_ctx, SmCommState_t *commState, U8 *atr, U16 *atrLen); |
| U16 SM_ConnectWithAID(SmCommState_t *commState, U8* appletAID, U16 appletAIDLen, U8 *atr, U16 *atrLen); |
| U16 SM_RjctConnect(void **conn_ctx, const char *connectString, SmCommState_t *commState, U8 *atr, U16 *atrLen); |
| U16 SM_RjctConnectWithAID(const char *connectString, SmCommState_t *commState, U8* appletAID, U16 appletAIDLen, U8 *atr, U16 *atrLen); |
| U16 SM_I2CConnect(void **conn_ctx, SmCommState_t *commState, U8 *atr, U16 *atrLen, const char *pConnString); |
| |
| U16 SM_SendAPDU(U8 *cmd, U16 cmdLen, U8 *resp, U16 *respLen); |
| /** @}*/ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif //_SM_API_ |