| /* |
| * Copyright 2019,2020 NXP |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /** @file */ |
| |
| #ifndef se05x_perso_API_H |
| #define se05x_perso_API_H |
| |
| #include "se05x_tlv.h" |
| |
| smStatus_t Se05x_API_Perso_SelectApplet(pSe05xSession_t session_ctx); |
| |
| #define SE05X_API_PERSO_U8_CREATE_API_SET(P1P2) \ |
| smStatus_t Se05x_API_Perso_Set_##P1P2(pSe05xSession_t session_ctx, uint8_t in_value) |
| |
| #define SE05X_API_PERSO_U8_CREATE_API_GET(P1P2) \ |
| smStatus_t Se05x_API_Perso_Get_##P1P2(pSe05xSession_t session_ctx, uint8_t *out_value) |
| |
| #define SE05X_API_PERSO_U16_CREATE_API_SET(P1P2) \ |
| smStatus_t Se05x_API_Perso_Set_##P1P2(pSe05xSession_t session_ctx, uint16_t in_value) |
| |
| #define SE05X_API_PERSO_U16_CREATE_API_GET(P1P2) \ |
| smStatus_t Se05x_API_Perso_Get_##P1P2(pSe05xSession_t session_ctx, uint16_t *out_value) |
| |
| #define SE05X_API_PERSO_AU8_CREATE_API_SET(P1P2) \ |
| smStatus_t Se05x_API_Perso_Set_##P1P2(pSe05xSession_t session_ctx, const uint8_t *in_buf, size_t in_bufLen) |
| |
| #define SE05X_API_PERSO_AU8_CREATE_API_GET(P1P2) \ |
| smStatus_t Se05x_API_Perso_Get_##P1P2(pSe05xSession_t session_ctx, uint8_t *out_buf, size_t *out_bufLen) |
| |
| /** Deletable module com/nxp/id/jcop/iot_extended |
| * |
| * ID = D276000085304A434F504D4F440B |
| * |
| * Extension to Elliptic Curve Cryptography. */ |
| #define SE05X_API_PERSO_MOD_IOT_EXTENDED \ |
| { \ |
| 0xD2, 0x76, 0x00, 0x00, 0x85, 0x30, 0x4A, 0x43, 0x4F, 0x50, 0x4D, 0x4F, 0x44, 0x0B, \ |
| } |
| |
| /** Deletable module com/nxp/id/jcop/iot_base |
| * |
| * ID = D276000085304A434F504D4F440A |
| * |
| * Collection of crypto algorithms often used in IoT devices. */ |
| #define SE05X_API_PERSO_MOD_IOT_BASE \ |
| { \ |
| 0xD2, 0x76, 0x00, 0x00, 0x85, 0x30, 0x4A, 0x43, 0x4F, 0x50, 0x4D, 0x4F, 0x44, 0x0A, \ |
| } |
| |
| /** Deletable module com/nxp/id/jcopx/egovaccelerators |
| * |
| * ID = D276000085304A434F506E |
| * |
| * Secure Messaging Accelerators for eGovernment applications and modular arithmetic math API. */ |
| #define SE05X_API_PERSO_MODX_EGOVACCELERATORS \ |
| { \ |
| 0xD2, 0x76, 0x00, 0x00, 0x85, 0x30, 0x4A, 0x43, 0x4F, 0x50, 0x6E, \ |
| } |
| |
| /** Deletable module com/nxp/id/jcop/rsakeygen |
| * |
| * ID = D276000085304A434F504D4F4400 |
| * |
| * On chip generation of RSA keys. */ |
| #define SE05X_API_PERSO_MOD_RSAKEYGEN \ |
| { \ |
| 0xD2, 0x76, 0x00, 0x00, 0x85, 0x30, 0x4A, 0x43, 0x4F, 0x50, 0x4D, 0x4F, 0x44, 0x00, \ |
| } |
| /** |
| * Get value of TCL_ATS_CURRENT_HISTLEN_CHARS |
| * |
| * Length(1 bytes): Defines the actually used length of the historical |
| * characters in configuration item TCL_ATS_HISTCHARS |
| */ |
| smStatus_t Se05x_API_Perso_Get_TCL_ATS_CURRENT_HISTLEN_CHARS(pSe05xSession_t session_ctx, uint8_t *out_value); |
| |
| /** |
| * Configuration of TCL_ATS_CURRENT_HISTLEN_CHARS |
| * |
| * Length(1 bytes): Defines the actually used length of the historical |
| * characters in configuration item TCL_ATS_HISTCHARS |
| */ |
| smStatus_t Se05x_API_Perso_Set_TCL_ATS_CURRENT_HISTLEN_CHARS(pSe05xSession_t session_ctx, uint8_t in_value); |
| |
| /** |
| * Get value of TCL_ATS_HISTCHARS |
| * |
| * Byte array (max 20 bytes): Historical characters used for T=CL. |
| */ |
| smStatus_t Se05x_API_Perso_Get_TCL_ATS_HISTCHARS(pSe05xSession_t session_ctx, uint8_t *out_buf, size_t *out_bufLen); |
| |
| /** |
| * Configuration of TCL_ATS_HISTCHARS |
| * |
| * Byte array (max 20 bytes): Historical characters used for T=CL. |
| */ |
| smStatus_t Se05x_API_Perso_Set_TCL_ATS_HISTCHARS(pSe05xSession_t session_ctx, const uint8_t *in_buf, size_t in_bufLen); |
| |
| /** |
| * Get value of 7816_ATR_COLD_HIST_LEN_CHARS |
| * Length(1 bytes): |
| * |
| * |
| * - Histchar length for Cold Reset ISO7816 protocol. |
| */ |
| smStatus_t Se05x_API_Perso_Get_7816_ATR_COLD_HIST_LEN_CHARS(pSe05xSession_t session_ctx, uint8_t *out_value); |
| |
| /** |
| * Configuration of 7816_ATR_COLD_HIST_LEN_CHARS |
| * Length(1 bytes): |
| * |
| * |
| * - Histchar length for Cold Reset ISO7816 protocol. |
| */ |
| smStatus_t Se05x_API_Perso_Set_7816_ATR_COLD_HIST_LEN_CHARS(pSe05xSession_t session_ctx, uint8_t in_value); |
| |
| /** |
| * Get value of 7816_ATR_COLD_HIST |
| * |
| * Byte array (max 15 bytes): Histchars for Cold Reset ISO7816 protocol |
| */ |
| smStatus_t Se05x_API_Perso_Get_7816_ATR_COLD_HIST(pSe05xSession_t session_ctx, uint8_t *out_buf, size_t *out_bufLen); |
| |
| /** |
| * Configuration of 7816_ATR_COLD_HIST |
| * |
| * Byte array (max 15 bytes): Histchars for Cold Reset ISO7816 protocol |
| */ |
| smStatus_t Se05x_API_Perso_Set_7816_ATR_COLD_HIST(pSe05xSession_t session_ctx, const uint8_t *in_buf, size_t in_bufLen); |
| |
| /** |
| * Get value of 7816_ATR_WARM_HIST_LEN_CHARS |
| * Length(1 bytes): |
| * |
| * |
| * - Histchar length for Warm Reset ISO7816 protocol |
| */ |
| smStatus_t Se05x_API_Perso_Get_7816_ATR_WARM_HIST_LEN_CHARS(pSe05xSession_t session_ctx, uint8_t *out_value); |
| |
| /** |
| * Configuration of 7816_ATR_WARM_HIST_LEN_CHARS |
| * Length(1 bytes): |
| * |
| * |
| * - Histchar length for Warm Reset ISO7816 protocol |
| */ |
| smStatus_t Se05x_API_Perso_Set_7816_ATR_WARM_HIST_LEN_CHARS(pSe05xSession_t session_ctx, uint8_t in_value); |
| |
| /** |
| * Get value of 7816_ATR_WARM_HIST |
| * |
| * Byte array (max 15 bytes): Histchars for Warm Reset ISO7816 protocol. |
| */ |
| smStatus_t Se05x_API_Perso_Get_7816_ATR_WARM_HIST(pSe05xSession_t session_ctx, uint8_t *out_buf, size_t *out_bufLen); |
| |
| /** |
| * Configuration of 7816_ATR_WARM_HIST |
| * |
| * Byte array (max 15 bytes): Histchars for Warm Reset ISO7816 protocol. |
| */ |
| smStatus_t Se05x_API_Perso_Set_7816_ATR_WARM_HIST(pSe05xSession_t session_ctx, const uint8_t *in_buf, size_t in_bufLen); |
| |
| /** |
| * Get value of I2C_SLAVE_ADDRESS |
| * |
| * 1-byte value: I2C slave address of product. |
| */ |
| smStatus_t Se05x_API_Perso_Get_I2C_SLAVE_ADDRESS(pSe05xSession_t session_ctx, uint8_t *out_value); |
| |
| /** |
| * Configuration of I2C_SLAVE_ADDRESS |
| * |
| * 1-byte value: I2C slave address of product. |
| */ |
| smStatus_t Se05x_API_Perso_Set_I2C_SLAVE_ADDRESS(pSe05xSession_t session_ctx, uint8_t in_value); |
| |
| /** |
| * Get value of I2C_PARAMS |
| * 1-byte value: Bitmask to configure the I2C protocol Each bit of the bitmask switches the feature: |
| * |
| * |
| * - 0 = Off, feature disabled |
| * |
| * - 1 = On, feature enabled |
| * |
| * - bit 0 : Slave clock stretching (0=clock stretching disabled, 1=clock |
| * stretching enabled) |
| * |
| * - bit 1 : Enable power saving mode after sending End of APDU Session |
| * response (0=power save mode disabled, 1=power save mode enabled) |
| * |
| * - bit 2 : Select flavour of T1I2C protocol (0=NXP flavour, 1=GP flavour) |
| * |
| * - bit 3 : Select the T1I2C protocol communication mode (0=Semi Non- |
| * Blocking Communication, 1=Blocking Communication) |
| * |
| * - bit 7-4: Interface detection delay time during start up (multiplied by |
| * 100 us) |
| */ |
| smStatus_t Se05x_API_Perso_Get_I2C_PARAMS(pSe05xSession_t session_ctx, uint8_t *out_value); |
| |
| /** |
| * Configuration of I2C_PARAMS |
| * 1-byte value: Bitmask to configure the I2C protocol Each bit of the bitmask switches the feature: |
| * |
| * |
| * - 0 = Off, feature disabled |
| * |
| * - 1 = On, feature enabled |
| * |
| * - bit 0 : Slave clock stretching (0=clock stretching disabled, 1=clock |
| * stretching enabled) |
| * |
| * - bit 1 : Enable power saving mode after sending End of APDU Session |
| * response (0=power save mode disabled, 1=power save mode enabled) |
| * |
| * - bit 2 : Select flavour of T1I2C protocol (0=NXP flavour, 1=GP flavour) |
| * |
| * - bit 3 : Select the T1I2C protocol communication mode (0=Semi Non- |
| * Blocking Communication, 1=Blocking Communication) |
| * |
| * - bit 7-4: Interface detection delay time during start up (multiplied by |
| * 100 us) |
| */ |
| smStatus_t Se05x_API_Perso_Set_I2C_PARAMS(pSe05xSession_t session_ctx, uint8_t in_value); |
| |
| /** |
| * Get value of ATR_I2C_IF_BYTES |
| * |
| * Byte array: ATR definition for I2C interface. |
| */ |
| smStatus_t Se05x_API_Perso_Get_ATR_I2C_IF_BYTES(pSe05xSession_t session_ctx, uint8_t *out_buf, size_t *out_bufLen); |
| |
| /** |
| * Configuration of ATR_I2C_IF_BYTES |
| * |
| * Byte array: ATR definition for I2C interface. |
| */ |
| smStatus_t Se05x_API_Perso_Set_ATR_I2C_IF_BYTES(pSe05xSession_t session_ctx, const uint8_t *in_buf, size_t in_bufLen); |
| |
| /** |
| * Get value of PRSWL_ENABLED |
| * 1-byte value: Configuration to enable/disable periodic Static Wear Leveling |
| * |
| * |
| * - 0x00: Periodic static wear leveling is disabled. Enable periodic |
| * Static Wear Leveling: |
| * |
| * - Bit 0...6: a counter of APDUs after which the static wearlevelling is |
| * triggered. if 0, static wearlevelling is disabled and will only be |
| * executed during startup. Any other value (range 1 ... 127) will count |
| * the incoming APDUs and trigger the wear levelling when this counter is |
| * reached |
| * |
| * - Bit 7: steers time dependent behavior when set to 1, Static |
| * Wearlevelling will also happen every 3.5 hours (about) when the active |
| * interface is T1I2C. It will not have any effect on TCL or CT |
| * interface. |
| */ |
| smStatus_t Se05x_API_Perso_Get_PRSWL_ENABLED(pSe05xSession_t session_ctx, uint8_t *out_value); |
| |
| /** |
| * Configuration of PRSWL_ENABLED |
| * 1-byte value: Configuration to enable/disable periodic Static Wear Leveling |
| * |
| * |
| * - 0x00: Periodic static wear leveling is disabled. Enable periodic |
| * Static Wear Leveling: |
| * |
| * - Bit 0...6: a counter of APDUs after which the static wearlevelling is |
| * triggered. if 0, static wearlevelling is disabled and will only be |
| * executed during startup. Any other value (range 1 ... 127) will count |
| * the incoming APDUs and trigger the wear levelling when this counter is |
| * reached |
| * |
| * - Bit 7: steers time dependent behavior when set to 1, Static |
| * Wearlevelling will also happen every 3.5 hours (about) when the active |
| * interface is T1I2C. It will not have any effect on TCL or CT |
| * interface. |
| */ |
| smStatus_t Se05x_API_Perso_Set_PRSWL_ENABLED(pSe05xSession_t session_ctx, uint8_t in_value); |
| |
| /** |
| * Get value of FIPS_MODE_ENABLED |
| * |
| * 1-byte value: 0x00 = FIPS disabled; 0x01 = FIPS enabled. |
| */ |
| smStatus_t Se05x_API_Perso_Get_FIPS_MODE_ENABLED(pSe05xSession_t session_ctx, uint8_t *out_value); |
| |
| /** |
| * Get value of CIP_I2C_IF_BYTES |
| * |
| * Byte array: ATR definition for I2C interface. |
| */ |
| smStatus_t Se05x_API_Perso_Get_CIP_I2C_IF_BYTES(pSe05xSession_t session_ctx, uint8_t *out_buf, size_t *out_bufLen); |
| |
| /** |
| * Configuration of CIP_I2C_IF_BYTES |
| * |
| * Byte array: ATR definition for I2C interface. |
| */ |
| smStatus_t Se05x_API_Perso_Set_CIP_I2C_IF_BYTES(pSe05xSession_t session_ctx, const uint8_t *in_buf, size_t in_bufLen); |
| |
| /** |
| * Get value of ATR_CIP_I2C_HIST_CHARS |
| * |
| * Byte array (max 25 bytes): ATR Historical Character definition for I2C |
| * interface. |
| */ |
| smStatus_t Se05x_API_Perso_Get_ATR_CIP_I2C_HIST_CHARS( |
| pSe05xSession_t session_ctx, uint8_t *out_buf, size_t *out_bufLen); |
| |
| /** |
| * Configuration of ATR_CIP_I2C_HIST_CHARS |
| * |
| * Byte array (max 25 bytes): ATR Historical Character definition for I2C |
| * interface. |
| */ |
| smStatus_t Se05x_API_Perso_Set_ATR_CIP_I2C_HIST_CHARS( |
| pSe05xSession_t session_ctx, const uint8_t *in_buf, size_t in_bufLen); |
| |
| /** |
| * Configuration of DELETE_OS_MODULE |
| * |
| * Byte array: AID of module to be deleted . |
| */ |
| smStatus_t Se05x_API_Perso_Set_DELETE_OS_MODULE(pSe05xSession_t session_ctx, const uint8_t *in_buf, size_t in_bufLen); |
| |
| #endif /* se05x_perso_API_h */ |