.. _cmake-option-Applet: | |
Applet | |
========================== | |
.. option:: 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. | |
``-DApplet=None``: Compiling without any Applet Support | |
``-DApplet=A71CH``: A71CH (ECC) | |
``-DApplet=SE05X_A``: SE050 Type A (ECC) | |
``-DApplet=SE05X_B``: SE050 Type B (RSA) | |
``-DApplet=SE05X_C``: SE050 (Super set of A + B) | |
.. _cmake-option-SE05X_Ver: | |
SE05X_Ver | |
============================= | |
.. option:: SE05X_Ver | |
SE05X Applet version. | |
Selection of Applet version 03_XX enables SE050 features. | |
Selection of Applet version 06_00 enables SE051 features. | |
``-DSE05X_Ver=03_XX``: SE050 | |
``-DSE05X_Ver=06_00``: SE051 | |
.. _cmake-option-Host: | |
Host | |
======================== | |
.. option:: Host | |
Host where the software stack is running | |
e.g. Windows, PC Linux, Embedded Linux, Kinetis like embedded platform | |
``-DHost=Darwin``: OS X / Macintosh | |
``-DHost=PCLinux32``: PC/Laptop Linux with 32bit libraries | |
``-DHost=PCLinux64``: PC/Laptop Linux with 64bit libraries | |
``-DHost=PCWindows``: PC/Laptop Windows | |
``-DHost=Cygwin``: Using Cygwin | |
``-DHost=frdmk64f``: Embedded Kinetis Freedom K64F | |
``-DHost=evkmimxrt1060``: Embedded Kinetis i.MX RT 1060 | |
``-DHost=lpcxpresso55s``: Embedded LPCXpresso55s (No demarcation of secure/non-secure world) | |
``-DHost=lpcxpresso55s_ns``: Non Secure world of LPCXpresso55s | |
``-DHost=lpcxpresso55s_s``: Secure world of LPCXpresso55s | |
``-DHost=iMXLinux``: Embedded Linux on i.MX | |
``-DHost=Raspbian``: Embedded Linux on RaspBerry PI | |
``-DHost=Android``: Android | |
.. _cmake-option-SMCOM: | |
SMCOM | |
========================= | |
.. option:: 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. | |
``-DSMCOM=None``: Not using any Communication layer | |
``-DSMCOM=JRCP_V2``: Socket Interface New Implementation | |
``-DSMCOM=JRCP_V1``: Socket Interface Old Implementation. | |
This is the interface used from Host PC when when we run jrcpv1_server | |
from the linux PC. | |
``-DSMCOM=VCOM``: Virtual COM Port | |
``-DSMCOM=SCI2C``: Smart Card I2C for A71CH and A71CH | |
``-DSMCOM=T1oI2C``: T=1 over I2C for SE050 | |
``-DSMCOM=PCSC``: CCID PC/SC reader interface | |
.. _cmake-option-HostCrypto: | |
HostCrypto | |
============================== | |
.. option:: HostCrypto | |
Counterpart Crypto on Host | |
What is being used as a cryptographic library on the host. | |
As of now only OpenSSL / mbedTLS is supported | |
``-DHostCrypto=MBEDTLS``: Use mbedTLS as host crypto | |
``-DHostCrypto=MBEDCRYPTO``: Use mbed-crypto as host crypto | |
Required for ARM-PSA / TF-M | |
``-DHostCrypto=OPENSSL``: Use OpenSSL as host crypto | |
``-DHostCrypto=User``: User Implementation of Host Crypto | |
e.g. Files at ``sss/src/user/crypto`` have low level AES/CMAC primitives. | |
The files at ``sss/src/user`` use those primitives. | |
This becomes an example for users with their own AES Implementation | |
This then becomes integration without mbedTLS/OpenSSL for SCP03 / AESKey. | |
.. note:: ECKey abstraction is not implemented/available yet. | |
``-DHostCrypto=None``: NO Host Crypto | |
Note, this is unsecure and only provided for experimentation | |
on platforms that do not have an mbedTLS PORT | |
Many :ref:`sssftr-control` have to be disabled to have a valid build. | |
.. _cmake-option-RTOS: | |
RTOS | |
======================== | |
.. option:: RTOS | |
Choice of Operating system | |
Default would mean nothing special. | |
i.e. Without any RTOS on embedded system, or default APIs on PC/Linux | |
``-DRTOS=Default``: No specific RTOS. Either bare matal on embedded system or native linux or Windows OS | |
``-DRTOS=FreeRTOS``: Free RTOS for embedded systems | |
.. _cmake-option-mbedTLS_ALT: | |
mbedTLS_ALT | |
=============================== | |
.. option:: 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 | |
``-DmbedTLS_ALT=SSS``: Use SSS Layer ALT implementation | |
``-DmbedTLS_ALT=A71CH``: Legacy implementation | |
``-DmbedTLS_ALT=None``: Not using any mbedTLS_ALT | |
When this is selected, cloud demos can not work with mbedTLS | |
.. _cmake-option-SCP: | |
SCP | |
======================= | |
.. option:: SCP | |
Secure Channel Protocol | |
In case we enable secure channel to Secure Element, which interface to be used. | |
``-DSCP=None`` | |
``-DSCP=SCP03_SSS``: Use SSS Layer for SCP. Used for SE050 family. | |
``-DSCP=SCP03_HostCrypto``: Use Host Crypto Layer for SCP03. Legacy implementation. Used for older demos of A71CH Family. | |
.. _cmake-option-FIPS: | |
FIPS | |
======================== | |
.. option:: FIPS | |
Enable or disable FIPS | |
This selection mostly impacts tests, and generally not the actual Middleware | |
``-DFIPS=None``: NO FIPS | |
``-DFIPS=SE050``: SE050 IC FIPS | |
.. _cmake-option-SE05X_Auth: | |
SE05X_Auth | |
============================== | |
.. option:: SE05X_Auth | |
SE050 Authentication | |
This settings is used by examples to connect using various options | |
to authenticate with the Applet. | |
The SE05X_Auth options can be changed for KSDK Demos and Examples. | |
To change SE05X_Auth option follow below steps. | |
Set flag ``SSS_HAVE_SCP_SCP03_SSS`` to 1 and Reset flag ``SSS_HAVE_SCP_NONE`` to 0. | |
To change SE05X_Auth option other than ``None`` and ``PlatfSCP03``, | |
execute se05x_Delete_and_test_provision.exe in order to provision the Authentication Key. | |
To change SE05X_Auth option to ``ECKey`` or ``ECKey_PlatfSCP03``, | |
Set additional flag ``SSS_HAVE_HOSTCRYPTO_ANY`` to 1. | |
``-DSE05X_Auth=None``: Use the default session (i.e. session less) login | |
``-DSE05X_Auth=UserID``: Do User Authentication with UserID | |
``-DSE05X_Auth=PlatfSCP03``: Use Platform SCP for connection to SE | |
``-DSE05X_Auth=AESKey``: Do User Authentication with AES Key | |
Earlier this was called AppletSCP03 | |
``-DSE05X_Auth=ECKey``: Do User Authentication with EC Key | |
Earlier this was called FastSCP | |
``-DSE05X_Auth=UserID_PlatfSCP03``: UserID and PlatfSCP03 | |
``-DSE05X_Auth=AESKey_PlatfSCP03``: AESKey and PlatfSCP03 | |
``-DSE05X_Auth=ECKey_PlatfSCP03``: ECKey and PlatfSCP03 | |
.. _cmake-option-A71CH_AUTH: | |
A71CH_AUTH | |
============================== | |
.. option:: A71CH_AUTH | |
A71CH Authentication | |
This settings is used by SSS-API based examples to connect using either plain or authenticated to the A71CH. | |
``-DA71CH_AUTH=None``: Plain communication, not authenticated or encrypted | |
``-DA71CH_AUTH=SCP03``: SCP03 enabled | |
.. _cmake-option-Log: | |
Log | |
======================= | |
.. option:: Log | |
Logging | |
``-DLog=Default``: Default Logging | |
``-DLog=Verbose``: Very Verbose logging | |
``-DLog=Silent``: Totally silent logging | |
.. _cmake-option-CMAKE_BUILD_TYPE: | |
CMAKE_BUILD_TYPE | |
==================================== | |
.. option:: CMAKE_BUILD_TYPE | |
See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html | |
For embedded builds, this choices sets optimization levels. | |
For MSVC builds, build type is selected from IDE As well | |
``-DCMAKE_BUILD_TYPE=Debug``: For developer | |
``-DCMAKE_BUILD_TYPE=Release``: Optimization enabled and debug symbols removed | |
``-DCMAKE_BUILD_TYPE=RelWithDebInfo``: Optimization enabled but with debug symbols | |
``-DCMAKE_BUILD_TYPE=``: Empty Allowed | |
.. _sssftr-control: | |
Feature Control | |
========================= | |
Using these options, you can enable/disable individual features. | |
See :numref:`ftr-file-reduce-code-size` :ref:`ftr-file-reduce-code-size` | |
for details on it's usage and relevance. | |
.. option:: SSSFTR_SE05X_AES | |
SE05X Secure Element : Symmetric AES | |
.. option:: SSSFTR_SE05X_ECC | |
SE05X Secure Element : Elliptic Curve Cryptography | |
.. option:: SSSFTR_SE05X_RSA | |
SE05X Secure Element : RSA | |
.. option:: SSSFTR_SE05X_KEY_SET | |
SE05X Secure Element : KEY operations : SET Key | |
.. option:: SSSFTR_SE05X_KEY_GET | |
SE05X Secure Element : KEY operations : GET Key | |
.. option:: SSSFTR_SE05X_AuthECKey | |
SE05X Secure Element : Authenticate via ECKey | |
.. option:: SSSFTR_SE05X_AuthSession | |
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. | |
.. option:: SSSFTR_SE05X_CREATE_DELETE_CRYPTOOBJ | |
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. | |
.. option:: SSSFTR_SW_AES | |
Software : Symmetric AES | |
.. option:: SSSFTR_SW_ECC | |
Software : Elliptic Curve Cryptography | |
.. option:: SSSFTR_SW_RSA | |
Software : RSA | |
.. option:: SSSFTR_SW_KEY_SET | |
Software : KEY operations : SET Key | |
.. option:: SSSFTR_SW_KEY_GET | |
Software : KEY operations : GET Key | |
.. option:: SSSFTR_SW_TESTCOUNTERPART | |
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. | |
.. _deprecated-defines: | |
Deprecated Defines | |
======================== | |
Keept and for time being for backwards compatibility. They will be removed in | |
some future release. | |
- ``WithApplet_SE05X`` is renamed to ``SSS_HAVE_APPLET_SE05X_IOT`` | |
- ``WithApplet_SE050_A`` is renamed to ``SSS_HAVE_APPLET_SE05X_A`` | |
- ``WithApplet_SE050_B`` is renamed to ``SSS_HAVE_APPLET_SE05X_B`` | |
- ``WithApplet_SE050_C`` is renamed to ``SSS_HAVE_APPLET_SE05X_C`` | |
- ``SSS_HAVE_SE050_A`` is renamed to ``SSS_HAVE_APPLET_SE05X_A`` | |
- ``SSS_HAVE_SE050_B`` is renamed to ``SSS_HAVE_APPLET_SE05X_B`` | |
- ``SSS_HAVE_SE050_C`` is renamed to ``SSS_HAVE_APPLET_SE05X_C`` | |
- ``SSS_HAVE_SE05X`` is renamed to ``SSS_HAVE_APPLET_SE05X_IOT`` | |
- ``SSS_HAVE_SE`` is renamed to ``SSS_HAVE_APPLET`` | |
- ``SSS_HAVE_LOOPBACK`` is renamed to ``SSS_HAVE_APPLET_LOOPBACK`` | |
- ``SSS_HAVE_ALT`` is renamed to ``SSS_HAVE_MBEDTLS_ALT`` | |
- ``WithApplet_None`` is renamed to ``SSS_HAVE_APPLET_NONE`` | |
- ``SSS_HAVE_None`` is renamed to ``SSS_HAVE_APPLET_NONE`` | |
- ``WithApplet_A71CH`` is renamed to ``SSS_HAVE_APPLET_A71CH`` | |
- ``SSS_HAVE_A71CH`` is renamed to ``SSS_HAVE_APPLET_A71CH`` | |
- ``WithApplet_A71CL`` is renamed to ``SSS_HAVE_APPLET_A71CL`` | |
- ``SSS_HAVE_A71CL`` is renamed to ``SSS_HAVE_APPLET_A71CL`` | |
- ``WithApplet_A71CH_SIM`` is renamed to ``SSS_HAVE_APPLET_A71CH_SIM`` | |
- ``SSS_HAVE_A71CH_SIM`` is renamed to ``SSS_HAVE_APPLET_A71CH_SIM`` | |
- ``WithApplet_SE05X_A`` is renamed to ``SSS_HAVE_APPLET_SE05X_A`` | |
- ``SSS_HAVE_SE05X_A`` is renamed to ``SSS_HAVE_APPLET_SE05X_A`` | |
- ``WithApplet_SE05X_B`` is renamed to ``SSS_HAVE_APPLET_SE05X_B`` | |
- ``SSS_HAVE_SE05X_B`` is renamed to ``SSS_HAVE_APPLET_SE05X_B`` | |
- ``WithApplet_SE05X_C`` is renamed to ``SSS_HAVE_APPLET_SE05X_C`` | |
- ``SSS_HAVE_SE05X_C`` is renamed to ``SSS_HAVE_APPLET_SE05X_C`` | |
- ``WithApplet_SE05X_L`` is renamed to ``SSS_HAVE_APPLET_SE05X_L`` | |
- ``SSS_HAVE_SE05X_L`` is renamed to ``SSS_HAVE_APPLET_SE05X_L`` | |
- ``WithApplet_LoopBack`` is renamed to ``SSS_HAVE_APPLET_LOOPBACK`` | |
- ``SSS_HAVE_LoopBack`` is renamed to ``SSS_HAVE_APPLET_LOOPBACK`` | |
- ``SSS_HAVE_MBEDTLS`` is renamed to ``SSS_HAVE_HOSTCRYPTO_MBEDTLS`` | |
- ``SSS_HAVE_MBEDCRYPTO`` is renamed to ``SSS_HAVE_HOSTCRYPTO_MBEDCRYPTO`` | |
- ``SSS_HAVE_OPENSSL`` is renamed to ``SSS_HAVE_HOSTCRYPTO_OPENSSL`` | |
- ``SSS_HAVE_USER`` is renamed to ``SSS_HAVE_HOSTCRYPTO_USER`` | |
- ``SSS_HAVE_NONE`` is renamed to ``SSS_HAVE_HOSTCRYPTO_NONE`` | |
- ``SSS_HAVE_ALT_SSS`` is renamed to ``SSS_HAVE_MBEDTLS_ALT_SSS`` | |
- ``SSS_HAVE_ALT_A71CH`` is renamed to ``SSS_HAVE_MBEDTLS_ALT_A71CH`` | |
- ``SSS_HAVE_ALT_NONE`` is renamed to ``SSS_HAVE_MBEDTLS_ALT_NONE`` | |
- ``SSS_HAVE_SE05X_Auth_None`` is renamed to ``SSS_HAVE_SE05X_AUTH_NONE`` | |
- ``SSS_HAVE_SE05X_Auth_UserID`` is renamed to ``SSS_HAVE_SE05X_AUTH_USERID`` | |
- ``SSS_HAVE_SE05X_Auth_PlatfSCP03`` is renamed to ``SSS_HAVE_SE05X_AUTH_PLATFSCP03`` | |
- ``SSS_HAVE_SE05X_Auth_AESKey`` is renamed to ``SSS_HAVE_SE05X_AUTH_AESKEY`` | |
- ``SSS_HAVE_SE05X_Auth_ECKey`` is renamed to ``SSS_HAVE_SE05X_AUTH_ECKEY`` | |
- ``SSS_HAVE_SE05X_Auth_UserID_PlatfSCP03`` is renamed to ``SSS_HAVE_SE05X_AUTH_USERID_PLATFSCP03`` | |
- ``SSS_HAVE_SE05X_Auth_AESKey_PlatfSCP03`` is renamed to ``SSS_HAVE_SE05X_AUTH_AESKEY_PLATFSCP03`` | |
- ``SSS_HAVE_SE05X_Auth_ECKey_PlatfSCP03`` is renamed to ``SSS_HAVE_SE05X_AUTH_ECKEY_PLATFSCP03`` |