blob: 63f947f9275c1532286ff77a43933a02eabc3bc0 [file] [log] [blame]
/* Copyright 2019-2020 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
/* # CMake Features : Start */
/** Applet : The Secure Element Applet
*
* You can compile host library for different Applets listed below.
* Please note, some of these Applets may be for NXP Internal use only.
*/
/** Compiling without any Applet Support */
#cmakedefine01 SSS_HAVE_APPLET_NONE
/** A71CH (ECC) */
#cmakedefine01 SSS_HAVE_APPLET_A71CH
/** A71CL (RSA) */
#cmakedefine01 SSS_HAVE_APPLET_A71CL
/** Similar to A71CH */
#cmakedefine01 SSS_HAVE_APPLET_A71CH_SIM
/** SE050 Type A (ECC) */
#cmakedefine01 SSS_HAVE_APPLET_SE05X_A
/** SE050 Type B (RSA) */
#cmakedefine01 SSS_HAVE_APPLET_SE05X_B
/** SE050 (Super set of A + B) */
#cmakedefine01 SSS_HAVE_APPLET_SE05X_C
/** SE050 (Similar to A71CL) */
#cmakedefine01 SSS_HAVE_APPLET_SE05X_L
/** NXP Internal testing Applet */
#cmakedefine01 SSS_HAVE_APPLET_LOOPBACK
/** SE05X_Ver : SE50 Applet version.
*
* 03_XX would only enable features of version 03.XX version of applet.
* But, this would be compatibility would be added for newer versions of the Applet.
* When 04_XX is selected, it would expose features available in 04_XX at compile time.
*/
/** Any version of SE05X Applet */
#cmakedefine01 SSS_HAVE_SE05X_VER_ANY
/** SE050 */
#cmakedefine01 SSS_HAVE_SE05X_VER_03_XX
/** NXP Internal - 4.4 */
#cmakedefine01 SSS_HAVE_SE05X_VER_04_04
/** NXP Internal - 4.8 */
#cmakedefine01 SSS_HAVE_SE05X_VER_04_08
/** SMCOM : Communication Interface
*
* How the host library communicates to the Secure Element.
* This may be directly over an I2C interface on embedded platform.
* Or sometimes over Remote protocol like JRCP_V1 / JRCP_V2 / VCOM from PC.
*/
/** Not using any Communication layer */
#cmakedefine01 SSS_HAVE_SMCOM_NONE
/** Socket Interface New Implementation */
#cmakedefine01 SSS_HAVE_SMCOM_JRCP_V2
/** Socket Interface Old Implementation.
# This is the interface used from Host PC when when we run jrcpv1_server
# from the linux PC. */
#cmakedefine01 SSS_HAVE_SMCOM_JRCP_V1
/** Virtual COM Port */
#cmakedefine01 SSS_HAVE_SMCOM_VCOM
/** Smart Card I2C for A71CH and A71CH */
#cmakedefine01 SSS_HAVE_SMCOM_SCI2C
/** T=1 over I2C for SE050 */
#cmakedefine01 SSS_HAVE_SMCOM_T1OI2C
/** GP Spec */
#cmakedefine01 SSS_HAVE_SMCOM_T1OI2C_GP1_0
/** Via RC663 Over VCOM Interface from Windows PC */
#cmakedefine01 SSS_HAVE_SMCOM_RC663_VCOM
/** NFC Interface using PN7150 */
#cmakedefine01 SSS_HAVE_SMCOM_PN7150
/** Thread Mode interface */
#cmakedefine01 SSS_HAVE_SMCOM_THREAD
/** CCID PC/SC reader interface */
#cmakedefine01 SSS_HAVE_SMCOM_PCSC
/** HostCrypto : Counterpart Crypto on Host
*
* What is being used as a cryptographic library on the host.
* As of now only OpenSSL / mbedTLS is supported
*/
/** Use mbedTLS as host crypto */
#cmakedefine01 SSS_HAVE_HOSTCRYPTO_MBEDTLS
/** Use mbed-crypto as host crypto */
#cmakedefine01 SSS_HAVE_HOSTCRYPTO_MBEDCRYPTO
/** Use OpenSSL as host crypto */
#cmakedefine01 SSS_HAVE_HOSTCRYPTO_OPENSSL
/** RTOS : Choice of Operating system
*
* Default would mean nothing special.
* i.e. Without any RTOS on embedded system, or default APIs on PC/Linux
*/
/** No specific RTOS. Either bare matal on embedded system or native linux or Windows OS */
#cmakedefine01 SSS_HAVE_RTOS_DEFAULT
/** Free RTOS for embedded systems */
#cmakedefine01 SSS_HAVE_RTOS_FREERTOS
/** mbedTLS_ALT : ALT Engine implementation for mbedTLS
*
* When set to None, mbedTLS would not use ALT Implementation to connect to / use Secure Element.
* This needs to be set to SSS for Cloud Demos over SSS APIs
*/
/** */
#cmakedefine01 SSS_HAVE_MBEDTLS_ALT_NONE
/** Use SSS Layer ALT implementation */
#cmakedefine01 SSS_HAVE_MBEDTLS_ALT_SSS
/** Legacy implementation */
#cmakedefine01 SSS_HAVE_MBEDTLS_ALT_A71CH
/** SCP : Secure Channel Protocol
*
* In case we enable secure channel to Secure Element, which interface to be used.
*/
/** */
#cmakedefine01 SSS_HAVE_SCP_NONE
/** Use SSS Layer for SCP. Used for SE050 family. */
#cmakedefine01 SSS_HAVE_SCP_SCP03_SSS
/** Use Host Crypto Layer for SCP03. Legacy implementation. Used for older demos of A71CH Family. */
#cmakedefine01 SSS_HAVE_SCP_SCP03_HOSTCRYPTO
/** A71CH_AUTH : A71CH Authentication
*
* This settings is used by SSS-API based examples to connect using either plain or authenticated to the A71CH.
*/
/** Plain communication, not authenticated or encrypted */
#cmakedefine01 SSS_HAVE_A71CH_AUTH_NONE
/** SCP03 enabled */
#cmakedefine01 SSS_HAVE_A71CH_AUTH_SCP03
/* ====================================================================== *
* == Feature selection/values ========================================== *
* ====================================================================== */
/** SE05X Secure Element : Symmetric AES */
#cmakedefine01 SSSFTR_SE05X_AES
/** SE05X Secure Element : Elliptic Curve Cryptography */
#cmakedefine01 SSSFTR_SE05X_ECC
/** SE05X Secure Element : RSA */
#cmakedefine01 SSSFTR_SE05X_RSA
/** SE05X Secure Element : KEY operations : SET Key */
#cmakedefine01 SSSFTR_SE05X_KEY_SET
/** SE05X Secure Element : KEY operations : GET Key */
#cmakedefine01 SSSFTR_SE05X_KEY_GET
/** SE05X Secure Element : Authenticate via ECKey */
#cmakedefine01 SSSFTR_SE05X_AuthECKey
/** SE05X Secure Element : Allow creation of user/authenticated session.
*
* If the intended deployment only uses Platform SCP
* Or it is a pure session less integration, this can
* save some code size. */
#cmakedefine01 SSSFTR_SE05X_AuthSession
/** SE05X Secure Element : Allow creation/deletion of Crypto Objects
*
* If disabled, new Crytpo Objects are neither created and
* old/existing Crypto Objects are not deleted.
* It is assumed that during provisioning phase, the required
* Crypto Objects are pre-created or they are never going to
* be needed. */
#cmakedefine01 SSSFTR_SE05X_CREATE_DELETE_CRYPTOOBJ
/** Software : Symmetric AES */
#cmakedefine01 SSSFTR_SW_AES
/** Software : Elliptic Curve Cryptography */
#cmakedefine01 SSSFTR_SW_ECC
/** Software : RSA */
#cmakedefine01 SSSFTR_SW_RSA
/** Software : KEY operations : SET Key */
#cmakedefine01 SSSFTR_SW_KEY_SET
/** Software : KEY operations : GET Key */
#cmakedefine01 SSSFTR_SW_KEY_GET
/** Software : Used as a test counterpart
*
* e.g. Major part of the mebdTLS SSS layer is purely used for
* testing of Secure Element implementation, and can be avoided
* fully during many production scenarios. */
#cmakedefine01 SSSFTR_SW_TESTCOUNTERPART
/* ====================================================================== *
* == Computed Options ================================================== *
* ====================================================================== */
/** Symmetric AES */
#define SSSFTR_AES (SSSFTR_SE05X_AES + SSSFTR_SW_AES)
/** Elliptic Curve Cryptography */
#define SSSFTR_ECC (SSSFTR_SE05X_ECC + SSSFTR_SW_ECC)
/** RSA */
#define SSSFTR_RSA (SSSFTR_SE05X_RSA + SSSFTR_SW_RSA)
/** KEY operations : SET Key */
#define SSSFTR_KEY_SET (SSSFTR_SE05X_KEY_SET + SSSFTR_SW_KEY_SET)
/** KEY operations : GET Key */
#define SSSFTR_KEY_GET (SSSFTR_SE05X_KEY_GET + SSSFTR_SW_KEY_GET)
/** KEY operations */
#define SSSFTR_KEY (SSSFTR_KEY_SET + SSSFTR_KEY_GET)
/** KEY operations */
#define SSSFTR_SE05X_KEY (SSSFTR_SE05X_KEY_SET + SSSFTR_SE05X_KEY_GET)
/** KEY operations */
#define SSSFTR_SW_KEY (SSSFTR_SW_KEY_SET + SSSFTR_SW_KEY_GET)
#define SSS_HAVE_APPLET \
(SSS_HAVE_APPLET_A71CH | SSS_HAVE_APPLET_A71CL | SSS_HAVE_APPLET_A71CH_SIM | SSS_HAVE_APPLET_SE05X_A | SSS_HAVE_APPLET_SE05X_B | SSS_HAVE_APPLET_SE05X_C | SSS_HAVE_APPLET_SE05X_L | SSS_HAVE_APPLET_LOOPBACK)
#define SSS_HAVE_APPLET_SE05X_IOT \
(SSS_HAVE_APPLET_SE05X_A | SSS_HAVE_APPLET_SE05X_B | SSS_HAVE_APPLET_SE05X_C)
#define SSS_HAVE_MBEDTLS_ALT \
(SSS_HAVE_MBEDTLS_SSS | SSS_HAVE_MBEDTLS_A71CH)
/** Deprecated items. Used here for backwards compatibility. */
#define WithApplet_SE05X (SSS_HAVE_APPLET_SE05X_IOT)
#define WithApplet_SE050_A (SSS_HAVE_APPLET_SE05X_A)
#define WithApplet_SE050_B (SSS_HAVE_APPLET_SE05X_B)
#define WithApplet_SE050_C (SSS_HAVE_APPLET_SE05X_C)
#define SSS_HAVE_SE050_A (SSS_HAVE_APPLET_SE05X_A)
#define SSS_HAVE_SE050_B (SSS_HAVE_APPLET_SE05X_B)
#define SSS_HAVE_SE050_C (SSS_HAVE_APPLET_SE05X_C)
#define SSS_HAVE_SE05X (SSS_HAVE_APPLET_SE05X_IOT)
#define SSS_HAVE_SE (SSS_HAVE_APPLET)
#define SSS_HAVE_A71CH (SSS_HAVE_APPLET_A71CH)
#define SSS_HAVE_A71CL (SSS_HAVE_APPLET_A71CL)
#define SSS_HAVE_A71CH_SIM (SSS_HAVE_APPLET_A71CH_SIM)
#define SSS_HAVE_LOOPBACK (SSS_HAVE_APPLET_LOOPBACK)
#define SSS_HAVE_OPENSSL (SSS_HAVE_HOSTCRYPTO_OPENSSL)
#define SSS_HAVE_MBEDTLS (SSS_HAVE_HOSTCRYPTO_MBEDTLS)
#define SSS_HAVE_MBEDCRYPTO (SSS_HAVE_HOSTCRYPTO_MBEDCRYPTO)
#define SSS_HAVE_ALT_SSS (SSS_HAVE_MBEDTLS_ALT_SSS)
#define SSS_HAVE_ALT (SSS_HAVE_MBEDTLS_ALT)
#define WithApplet_None (SSS_HAVE_APPLET_NONE)
#define SSS_HAVE_None (SSS_HAVE_APPLET_NONE)
#define WithApplet_A71CH (SSS_HAVE_APPLET_A71CH)
#define SSS_HAVE_A71CH (SSS_HAVE_APPLET_A71CH)
#define WithApplet_A71CL (SSS_HAVE_APPLET_A71CL)
#define SSS_HAVE_A71CL (SSS_HAVE_APPLET_A71CL)
#define WithApplet_A71CH_SIM (SSS_HAVE_APPLET_A71CH_SIM)
#define SSS_HAVE_A71CH_SIM (SSS_HAVE_APPLET_A71CH_SIM)
#define WithApplet_SE05X_A (SSS_HAVE_APPLET_SE05X_A)
#define SSS_HAVE_SE05X_A (SSS_HAVE_APPLET_SE05X_A)
#define WithApplet_SE05X_B (SSS_HAVE_APPLET_SE05X_B)
#define SSS_HAVE_SE05X_B (SSS_HAVE_APPLET_SE05X_B)
#define WithApplet_SE05X_C (SSS_HAVE_APPLET_SE05X_C)
#define SSS_HAVE_SE05X_C (SSS_HAVE_APPLET_SE05X_C)
#define WithApplet_SE05X_L (SSS_HAVE_APPLET_SE05X_L)
#define SSS_HAVE_SE05X_L (SSS_HAVE_APPLET_SE05X_L)
#define WithApplet_LoopBack (SSS_HAVE_APPLET_LOOPBACK)
#define SSS_HAVE_LoopBack (SSS_HAVE_APPLET_LOOPBACK)
#define SSS_HAVE_MBEDTLS (SSS_HAVE_HOSTCRYPTO_MBEDTLS)
#define SSS_HAVE_MBEDCRYPTO (SSS_HAVE_HOSTCRYPTO_MBEDCRYPTO)
#define SSS_HAVE_OPENSSL (SSS_HAVE_HOSTCRYPTO_OPENSSL)
/* # CMake Features : END */