Silicon Labs Secure Engine Manager API definitions.
The tamper configuration is one-time-programmable, and is done using the initialise OTP command to the SE (see sl_se_init_otp). This means that tamper settings must be written together with secure boot settings, and are immutable after they are written. After tamper has been initialized, it is possible to temporarily disable one or several tamper signals using an authenticated command, similar to secure debug unlock. This is only possible if the debug public key has been installed on the device. It is only possible to disable the customer enabled response. The default response to a signal cannot be disabled.
Tamper is configured by providing the following:
Setting | Description |
|---|---|
Tamper response levels | A response level for each tamper signal. |
Filter settings | The tamper filter counter has two settings:
These options can be set to the values given in the tables in the Response Filter section. Please see the examples section for a suggested use of the tamper filter signal. |
Flags | The tamper flags is used to configure two options:
|
Reset threshold | The number of consecutive tamper resets before the the part enters debug mode. |
Example Usage#
The glitch detectors can see spurious activations, and should typically not be used to directly drive a serious tamper response. Instead they should feed their signals into a tamper interrupt (to handle the response logic on the M33), or into the tamper filter counter, which can be used to activate a high level response if a number of incidents occur in a short time window. The time period and counter threshold must be tuned to the use case. In the following example the device will erase OTP and become inoperable if 4 glitch signals is seen in a 1 minute time period.
Since you can only configure tamper once for each device, please make sure that this is the configuration you actually want before you execute this example on actual device.
sl_se_otp_init_t otp_settings_init = SL_SE_OTP_INIT_DEFAULT;
// Configure tamper levels
otp_settings_init.tamper_levels[SL_SE_TAMPER_SIGNAL_FILTER] = SL_SE_TAMPER_LEVEL_PERMANENTLY_ERASE_OTP;
otp_settings_init.tamper_levels[SL_SE_TAMPER_SIGNAL_VGLITCHFALLING] = SL_SE_TAMPER_LEVEL_FILTER;
otp_settings_init.tamper_levels[SL_SE_TAMPER_SIGNAL_VGLITCHRISING] = SL_SE_TAMPER_LEVEL_FILTER;
otp_settings_init.tamper_levels[SL_SE_TAMPER_SIGNAL_DGLITCH] = SL_SE_TAMPER_LEVEL_FILTER;
// Configure tamper filter options
otp_settings_init.tamper_filter_period = SL_SE_TAMPER_FILTER_PERIOD_1MIN;
otp_settings_init.tamper_filter_threshold = SL_SE_TAMPER_FILTER_THRESHOLD_4;
// Commit OTP settings. This command is only available once!
sl_se_init_otp(&otp_settings_init);
RTOS Mode and Multi-Thread Safety#
Note
The SE Manager API is multi-thread safe, but does not support preemption. This means the API cannot be called from ISR or critical/atomic sections when running in an RTOS thread. When using the SE Manager API in a bare-metal application, it is the application developer's responsibility to not call the SE Manager APIs when another operation is in progress.
The SE Manager supports multi-thread safe APIs for MicriumOS and FreeRTOS interfacing with CMSIS RTOS2 APIs.
In the cases where Micrium OS or FreeRTOS are included in the project (RTOS-mode), the SE Manager will be configured with threading and yield support. Configure sl_se_command_context_t with sl_se_set_yield to yield the CPU core when the SE Manager is waiting for the Secure Engine to complete a mailbox command.
For threading support the SE Manager applies an SE lock mechanism to protect the Secure Engine Mailbox interface from being accessed by more than one thread, ensuring multi-thread safety. For yielding the CPU core while waiting for the SE, the SE Manager APIs that invoke SE mailbox commands will wait on a semaphore which is signaled in the ISR that handles the SE mailbox completion interrupt. Hence other threads may run on the CPU core while the SE is processing the mailbox command.
License#
Copyright 2020 Silicon Laboratories Inc. www.silabs.com
SPDX-License-Identifier: Zlib
The licensor of this software is Silicon Laboratories Inc.
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
This notice may not be removed or altered from any source distribution.
Macros#
Context initialization values.
Default configuration for OTP initialisation structure.
Flags that can be used with asymmetric keys Asymmetric key can only be used for signing (not key exchange)
Described key belongs to a custom ECC domain.
Storage buffer contains public part of an asymmetric key.
Storage buffer contains private part of an asymmetric key.
Allow usage of this key by other bus masters or TrustZone levels than the one which created/imported the key.
Old definition. Retained for backwards compatibility.
Flags that can be used with symmetric keys Usage of key requires DPA countermeasures.
Usage of key requires DFA countermeasures.
Do not allow exporting the key to plaintext.
Indicate that the key has been generated by this device.
Indicate that the key can only be used to sign SE generated content.
Mask for algorithm field in key type.
Offset of algorithm field in key type.
Mask for attributes field in key type.
Offset of attributes field in key type.
Symmetric key type.
Symmetric key type for AES-128 (16 byte key)
Symmetric key type for AES-192 (24 byte key)
Symmetric key type for AES-256 (32 byte key)
ECC Weierstrass Prime key type.
ECC Montgomery key type.
EDDSA key type.
ECC NIST P-192.
ECC NIST P-224.
ECC NIST P-256.
ECC Ed25519 key for EdDSA.
ECC X25519 key for ECDH.
Symmetric key type for ChaCha20.
ECC NIST P-384.
ECC NIST P-521.
ECC X448 key for ECDH.
ECC Ed448 key for EdDSA.
Key storage methods.
Key is stored encrypted in application memory.
Key is stored inside the SE, and will persist until system reset or explicitly deleted.
Key is one of the pre-defined keys (pre-loaded or write-once) available in the SE.
Key is stored in the KSURAM, an internal Key Slot RAM.
List of available internal SE key slots.
Internal volatile slot 1.
Internal volatile slot 2.
Internal volatile slot 3.
Minimum key slot value for internal keys.
Internal TrustZone root key.
Internal immutable application secure debug key.
Internal immutable application AES-128 key (bootloader key)
Internal immutable application secure boot key.
Internal immutable application attestation key.
Internal immutable SE attestation key.
KSU IDs.
Size overhead for wrapped keys.
Defines mapping the PBKDF2 PRFs to corresponding sl_se_hash_type_t values.
HMAC-SHA-1.
HMAC-SHA-224.
HMAC-SHA-256.
HMAC-SHA-384.
HMAC-SHA-512.
SE Challenge size.
Certificate key size.
Certificate signature size.
Batch ID certificate.
SE ID certificate.
Host ID certificate.
No action taken.
Generate interrupt.
Increment filter counter.
System reset.
Erase OTP - THIS WILL MAKE THE DEVICE INOPERATIONAL!
Reserved tamper signal.
Filter counter exceeds threshold.
SE watchdog timeout.
Crypto error detected.
SE RAM 2-bit ECC error.
Reserved tamper signal.
SE major fault detected.
L2 instruction cache error.
Reserved tamper signal.
Secure boot of user code failed.
Unauthorised command received over the Mailbox interface.
Unauthorised command received over the DCI interface.
SE software triggers an assert.
Reserved tamper signal.
Integrity error of internal storage is detected.
TRNG monitor detected lack of entropy.
Debug lock internal logic check failed.
Any tamper detection.
OTP alarm triggered.
SE ICache RAM error.
SE RAM 1-bit ECC error.
Brown-out-detector threshold alert.
On-device temperature sensor.
DPLL lock failure.
SoC PLL failure.
External tamper detect.
KSU ECC 1-bit error.
KSU ECC 2-bit error.
QSPI reseed error.
PRS channel 0 asserted.
PRS channel 1 asserted.
PRS channel 2 asserted.
Number of tamper signals.
Timeout ~32ms.
Timeout ~64ms.
Timeout ~128ms.
Timeout ~256ms.
Timeout ~512ms.
Timeout ~1s.
Timeout ~2s.
Timeout ~4.1s.
Timeout ~8.2s.
Timeout ~16.4s.
Timeout ~32.8s.
Timeout ~1.1min.
Timeout ~2.2min.
Timeout ~4.4min.
Timeout ~8.7min.
Timeout ~17.5min.
Timeout ~35min.
Timeout ~1.2h.
Timeout ~2.3h.
Timeout ~4.7h.
Timeout ~9.3h.
Timeout ~18.6h.
Timeout ~1.6days.
Timeout ~3.1days.
Timeout ~6.2days.
Timeout ~12.4days.
Timeout ~24.9days.
Timeout ~49.7days.
Timeout ~99.4days.
Timeout ~198.8days.
Timeout ~397.7days.
Timeout ~795.4days.
Counter threshold 2.
Counter threshold 4.
Counter threshold 8.
Counter threshold 16.
Counter threshold 32.
Counter threshold 64.
Counter threshold 128.
Counter threshold 256.
Tamper flags.
Tamper is kept alive during sleep (down to EM3)
Block size for the AES.
Default streaming hash context.
SHA1 streaming hash context.
SHA224 streaming hash context.
SHA256 streaming hash context.
SHA384 streaming hash context.
SHA512 streaming hash context.
The maximum number of code regions available on the device.
Macro Definition Documentation#
SL_SE_COMMAND_CONTEXT_INIT#
#define SL_SE_COMMAND_CONTEXT_INITValue:
{ SLI_SE_MAILBOX_COMMAND_DEFAULT(0), false, false }Context initialization values.
Some of the context values are not fully initialized. The user will need to call the corresponding initialization function in order to fully initialize the context objects for further use in the SE Manager API. The purpose of these initialization values is to set the context objects to a known safe state initially when the context object is declared.
SL_SE_OTP_INIT_DEFAULT#
#define SL_SE_OTP_INIT_DEFAULTValue:
Default configuration for OTP initialisation structure.
SL_SE_KEY_FLAG_ASYMMETRIC_SIGNING_ONLY#
#define SL_SE_KEY_FLAG_ASYMMETRIC_SIGNING_ONLYValue:
(1UL << 10)
Flags that can be used with asymmetric keys Asymmetric key can only be used for signing (not key exchange)
SL_SE_KEY_FLAG_ASYMMETRIC_USES_CUSTOM_DOMAIN#
#define SL_SE_KEY_FLAG_ASYMMETRIC_USES_CUSTOM_DOMAINValue:
(1UL << 12)
Described key belongs to a custom ECC domain.
SL_SE_KEY_FLAG_ASYMMETRIC_BUFFER_HAS_PUBLIC_KEY#
#define SL_SE_KEY_FLAG_ASYMMETRIC_BUFFER_HAS_PUBLIC_KEYValue:
(1UL << 13)
Storage buffer contains public part of an asymmetric key.
SL_SE_KEY_FLAG_ASYMMETRIC_BUFFER_HAS_PRIVATE_KEY#
#define SL_SE_KEY_FLAG_ASYMMETRIC_BUFFER_HAS_PRIVATE_KEYValue:
(1UL << 14)
Storage buffer contains private part of an asymmetric key.
SL_SE_KEY_FLAG_ALLOW_ANY_ACCESS#
#define SL_SE_KEY_FLAG_ALLOW_ANY_ACCESSValue:
(1UL << 15)
Allow usage of this key by other bus masters or TrustZone levels than the one which created/imported the key.
SL_SE_KEY_FLAG_ASYMMMETRIC_SIGNING_ONLY#
#define SL_SE_KEY_FLAG_ASYMMMETRIC_SIGNING_ONLYValue:
(SL_SE_KEY_FLAG_ASYMMETRIC_SIGNING_ONLY)
Old definition. Retained for backwards compatibility.
SL_SE_KEY_FLAG_SYMMETRIC_KEY_USAGE_REQUIRE_DPA#
#define SL_SE_KEY_FLAG_SYMMETRIC_KEY_USAGE_REQUIRE_DPAValue:
(1 << 9)
Flags that can be used with symmetric keys Usage of key requires DPA countermeasures.
SL_SE_KEY_FLAG_SYMMETRIC_KEY_USAGE_REQUIRE_DFA#
#define SL_SE_KEY_FLAG_SYMMETRIC_KEY_USAGE_REQUIRE_DFAValue:
(1 << 8)
Usage of key requires DFA countermeasures.
SL_SE_KEY_FLAG_NON_EXPORTABLE#
#define SL_SE_KEY_FLAG_NON_EXPORTABLEValue:
(1UL << 24)
Do not allow exporting the key to plaintext.
SL_SE_KEY_FLAG_IS_DEVICE_GENERATED#
#define SL_SE_KEY_FLAG_IS_DEVICE_GENERATEDValue:
(1UL << 25)
Indicate that the key has been generated by this device.
This flag is only valid when using the SE to generate a key and makes it non-exportable.
SL_SE_KEY_FLAG_IS_RESTRICTED#
#define SL_SE_KEY_FLAG_IS_RESTRICTEDValue:
(1UL << 25 | 1UL << 24)
Indicate that the key can only be used to sign SE generated content.
This flag is only valid when using the SE to generate a key and makes it non-exportable.
SL_SE_KEY_TYPE_ALGORITHM_MASK#
#define SL_SE_KEY_TYPE_ALGORITHM_MASKValue:
0xf0000000
Mask for algorithm field in key type.
SL_SE_KEY_TYPE_ALGORITHM_OFFSET#
#define SL_SE_KEY_TYPE_ALGORITHM_OFFSETValue:
28
Offset of algorithm field in key type.
SL_SE_KEY_TYPE_ATTRIBUTES_MASK#
#define SL_SE_KEY_TYPE_ATTRIBUTES_MASKValue:
0x00007fff
Mask for attributes field in key type.
SL_SE_KEY_TYPE_ATTRIBUTES_OFFSET#
#define SL_SE_KEY_TYPE_ATTRIBUTES_OFFSETValue:
0
Offset of attributes field in key type.
SL_SE_KEY_TYPE_AES_128#
#define SL_SE_KEY_TYPE_AES_128Value:
0x00000010
Symmetric key type for AES-128 (16 byte key)
SL_SE_KEY_TYPE_AES_192#
#define SL_SE_KEY_TYPE_AES_192Value:
0x00000018
Symmetric key type for AES-192 (24 byte key)
SL_SE_KEY_TYPE_AES_256#
#define SL_SE_KEY_TYPE_AES_256Value:
0x00000020
Symmetric key type for AES-256 (32 byte key)
SL_SE_KEY_TYPE_ECC_WEIERSTRASS_PRIME_CUSTOM#
#define SL_SE_KEY_TYPE_ECC_WEIERSTRASS_PRIME_CUSTOMValue:
(0x8U << SL_SE_KEY_TYPE_ALGORITHM_OFFSET)
ECC Weierstrass Prime key type.
SL_SE_KEY_TYPE_ECC_MONTGOMERY#
#define SL_SE_KEY_TYPE_ECC_MONTGOMERYValue:
(0xbU << SL_SE_KEY_TYPE_ALGORITHM_OFFSET)
ECC Montgomery key type.
SL_SE_KEY_TYPE_ECC_EDDSA#
#define SL_SE_KEY_TYPE_ECC_EDDSAValue:
(0xcU << SL_SE_KEY_TYPE_ALGORITHM_OFFSET)
EDDSA key type.
SL_SE_KEY_TYPE_ECC_P192#
#define SL_SE_KEY_TYPE_ECC_P192Value:
(SL_SE_KEY_TYPE_ECC_WEIERSTRASS_PRIME_CUSTOM | (0x18))
ECC NIST P-192.
SL_SE_KEY_TYPE_ECC_P224#
#define SL_SE_KEY_TYPE_ECC_P224Value:
(SL_SE_KEY_TYPE_ECC_WEIERSTRASS_PRIME_CUSTOM | (0x1C))
ECC NIST P-224.
SL_SE_KEY_TYPE_ECC_P256#
#define SL_SE_KEY_TYPE_ECC_P256Value:
(SL_SE_KEY_TYPE_ECC_WEIERSTRASS_PRIME_CUSTOM | (0x20))
ECC NIST P-256.
SL_SE_KEY_TYPE_ECC_ED25519#
#define SL_SE_KEY_TYPE_ECC_ED25519Value:
(SL_SE_KEY_TYPE_ECC_EDDSA | (0x20))
ECC Ed25519 key for EdDSA.
SL_SE_KEY_TYPE_ECC_X25519#
#define SL_SE_KEY_TYPE_ECC_X25519Value:
(SL_SE_KEY_TYPE_ECC_MONTGOMERY | (0x20))
ECC X25519 key for ECDH.
SL_SE_KEY_TYPE_CHACHA20#
#define SL_SE_KEY_TYPE_CHACHA20Value:
0x00000020
Symmetric key type for ChaCha20.
SL_SE_KEY_TYPE_ECC_P384#
#define SL_SE_KEY_TYPE_ECC_P384Value:
(SL_SE_KEY_TYPE_ECC_WEIERSTRASS_PRIME_CUSTOM | (0x30))
ECC NIST P-384.
SL_SE_KEY_TYPE_ECC_P521#
#define SL_SE_KEY_TYPE_ECC_P521Value:
(SL_SE_KEY_TYPE_ECC_WEIERSTRASS_PRIME_CUSTOM | (0x42))
ECC NIST P-521.
SL_SE_KEY_TYPE_ECC_X448#
#define SL_SE_KEY_TYPE_ECC_X448Value:
(SL_SE_KEY_TYPE_ECC_MONTGOMERY | (0x38))
ECC X448 key for ECDH.
SL_SE_KEY_TYPE_ECC_ED448#
#define SL_SE_KEY_TYPE_ECC_ED448Value:
(SL_SE_KEY_TYPE_ECC_EDDSA | (0x38))
ECC Ed448 key for EdDSA.
SL_SE_KEY_STORAGE_EXTERNAL_PLAINTEXT#
#define SL_SE_KEY_STORAGE_EXTERNAL_PLAINTEXTValue:
0x00
Key storage methods.
Key is stored in a plaintext buffer in application memory. Application can save its in-memory buffer to non-volatile memory as needed to provide key persistence.
SL_SE_KEY_STORAGE_EXTERNAL_WRAPPED#
#define SL_SE_KEY_STORAGE_EXTERNAL_WRAPPEDValue:
0x01
Key is stored encrypted in application memory.
This ensures the key in wrapped form is only usable on a specific device. If the key additionally needs to be prevented from ever being output as plaintext, also set the corresponding permission bit. Application can save its in-memory buffer to non-volatile memory as needed to provide key persistence. Keys stored in this way should use the flag SL_SE_KEY_FLAG_NON_EXPORTABLE unless there is a specific need to access the key value outside the SE.
SL_SE_KEY_STORAGE_INTERNAL_VOLATILE#
#define SL_SE_KEY_STORAGE_INTERNAL_VOLATILEValue:
0x02
Key is stored inside the SE, and will persist until system reset or explicitly deleted.
Keys stored in this way should use the flag SL_SE_KEY_FLAG_NON_EXPORTABLE unless there is a specific need to access the key value outside the SE.
SL_SE_KEY_STORAGE_INTERNAL_IMMUTABLE#
#define SL_SE_KEY_STORAGE_INTERNAL_IMMUTABLEValue:
0x03
Key is one of the pre-defined keys (pre-loaded or write-once) available in the SE.
See documentation for a list of available keys.
SL_SE_KEY_STORAGE_INTERNAL_KSU#
#define SL_SE_KEY_STORAGE_INTERNAL_KSUValue:
0x04
Key is stored in the KSURAM, an internal Key Slot RAM.
SL_SE_KEY_SLOT_VOLATILE_0#
#define SL_SE_KEY_SLOT_VOLATILE_0Value:
0x00
List of available internal SE key slots.
Internal volatile slot 0
SL_SE_KEY_SLOT_INTERNAL_MIN#
#define SL_SE_KEY_SLOT_INTERNAL_MINValue:
0xF7
Minimum key slot value for internal keys.
SL_SE_KEY_SLOT_TRUSTZONE_ROOT_KEY#
#define SL_SE_KEY_SLOT_TRUSTZONE_ROOT_KEYValue:
0xF7
Internal TrustZone root key.
SL_SE_KEY_SLOT_APPLICATION_SECURE_DEBUG_KEY#
#define SL_SE_KEY_SLOT_APPLICATION_SECURE_DEBUG_KEYValue:
0xF8
Internal immutable application secure debug key.
SL_SE_KEY_SLOT_APPLICATION_AES_128_KEY#
#define SL_SE_KEY_SLOT_APPLICATION_AES_128_KEYValue:
0xFA
Internal immutable application AES-128 key (bootloader key)
SL_SE_KEY_SLOT_APPLICATION_SECURE_BOOT_KEY#
#define SL_SE_KEY_SLOT_APPLICATION_SECURE_BOOT_KEYValue:
0xFC
Internal immutable application secure boot key.
SL_SE_KEY_SLOT_APPLICATION_ATTESTATION_KEY#
#define SL_SE_KEY_SLOT_APPLICATION_ATTESTATION_KEYValue:
0xFE
Internal immutable application attestation key.
SL_SE_KEY_SLOT_SE_ATTESTATION_KEY#
#define SL_SE_KEY_SLOT_SE_ATTESTATION_KEYValue:
0xFF
Internal immutable SE attestation key.
SLI_SE_WRAPPED_KEY_OVERHEAD#
#define SLI_SE_WRAPPED_KEY_OVERHEADValue:
(12 + 16)
Size overhead for wrapped keys.
SL_SE_PRF_AES_CMAC_128#
#define SL_SE_PRF_AES_CMAC_128Value:
SL_SE_HASH_NONE
Defines mapping the PBKDF2 PRFs to corresponding sl_se_hash_type_t values.
CMAC-AES-128
SL_SE_TAMPER_LEVEL_PERMANENTLY_ERASE_OTP#
#define SL_SE_TAMPER_LEVEL_PERMANENTLY_ERASE_OTPValue:
7
Erase OTP - THIS WILL MAKE THE DEVICE INOPERATIONAL!
SL_SE_TAMPER_SIGNAL_RESERVED_1#
#define SL_SE_TAMPER_SIGNAL_RESERVED_1Value:
0x0
Reserved tamper signal.
SL_SE_TAMPER_SIGNAL_FILTER_COUNTER#
#define SL_SE_TAMPER_SIGNAL_FILTER_COUNTERValue:
0x1
Filter counter exceeds threshold.
SL_SE_TAMPER_SIGNAL_CRYPTO_ERROR#
#define SL_SE_TAMPER_SIGNAL_CRYPTO_ERRORValue:
0x3
Crypto error detected.
SL_SE_TAMPER_SIGNAL_SE_RAM_ECC_2#
#define SL_SE_TAMPER_SIGNAL_SE_RAM_ECC_2Value:
0x4
SE RAM 2-bit ECC error.
SL_SE_TAMPER_SIGNAL_RESERVED_2#
#define SL_SE_TAMPER_SIGNAL_RESERVED_2Value:
0x5
Reserved tamper signal.
SL_SE_TAMPER_SIGNAL_SE_MAJOR_FAULT#
#define SL_SE_TAMPER_SIGNAL_SE_MAJOR_FAULTValue:
0x6
SE major fault detected.
SL_SE_TAMPER_SIGNAL_L2ICACHE#
#define SL_SE_TAMPER_SIGNAL_L2ICACHEValue:
0x7
L2 instruction cache error.
SL_SE_TAMPER_SIGNAL_RESERVED_3#
#define SL_SE_TAMPER_SIGNAL_RESERVED_3Value:
0x8
Reserved tamper signal.
SL_SE_TAMPER_SIGNAL_USER_SECURE_BOOT_FAILED#
#define SL_SE_TAMPER_SIGNAL_USER_SECURE_BOOT_FAILEDValue:
0x9
Secure boot of user code failed.
SL_SE_TAMPER_SIGNAL_MAILBOX_AUTHORIZATION_ERROR
#define SL_SE_TAMPER_SIGNAL_MAILBOX_AUTHORIZATION_ERRORValue:
0xA
Unauthorised command received over the Mailbox interface.
SL_SE_TAMPER_SIGNAL_DCI_AUTHORIZATION_ERROR
#define SL_SE_TAMPER_SIGNAL_DCI_AUTHORIZATION_ERRORValue:
0xB
Unauthorised command received over the DCI interface.
SL_SE_TAMPER_SIGNAL_SE_SOFTWARE_ASSERTION#
#define SL_SE_TAMPER_SIGNAL_SE_SOFTWARE_ASSERTIONValue:
0xC
SE software triggers an assert.
SL_SE_TAMPER_SIGNAL_RESERVED_4#
#define SL_SE_TAMPER_SIGNAL_RESERVED_4Value:
0xD
Reserved tamper signal.
SL_SE_TAMPER_SIGNAL_SELFTEST_FAILED#
#define SL_SE_TAMPER_SIGNAL_SELFTEST_FAILEDValue:
0xE
Integrity error of internal storage is detected.
SL_SE_TAMPER_SIGNAL_TRNG_MONITOR#
#define SL_SE_TAMPER_SIGNAL_TRNG_MONITORValue:
0xF
TRNG monitor detected lack of entropy.
SL_SE_TAMPER_SIGNAL_SECURE_LOCK_ERROR#
#define SL_SE_TAMPER_SIGNAL_SECURE_LOCK_ERRORValue:
0x10
Debug lock internal logic check failed.
SL_SE_TAMPER_SIGNAL_SE_RAM_ECC_1#
#define SL_SE_TAMPER_SIGNAL_SE_RAM_ECC_1Value:
0x14
SE RAM 1-bit ECC error.
SL_SE_TAMPER_SIGNAL_BOD#
#define SL_SE_TAMPER_SIGNAL_BODValue:
0x15
Brown-out-detector threshold alert.
SL_SE_TAMPER_SIGNAL_TEMPERATURE_SENSOR#
#define SL_SE_TAMPER_SIGNAL_TEMPERATURE_SENSORValue:
0x16
On-device temperature sensor.
SL_SE_TAMPER_SIGNAL_DPLL_LOCK_FAIL#
#define SL_SE_TAMPER_SIGNAL_DPLL_LOCK_FAILValue:
0x17
DPLL lock failure.
SL_SE_TAMPER_SIGNAL_QSPI_RESEED_ERR#
#define SL_SE_TAMPER_SIGNAL_QSPI_RESEED_ERRValue:
0x1C
QSPI reseed error.
SL_SE_TAMPER_SIGNAL_NUM_SIGNALS#
#define SL_SE_TAMPER_SIGNAL_NUM_SIGNALSValue:
0x20
Number of tamper signals.
SL_SE_TAMPER_FILTER_PERIOD_2DAYS#
#define SL_SE_TAMPER_FILTER_PERIOD_2DAYSValue:
0x16
Timeout ~1.6days.
SL_SE_TAMPER_FILTER_PERIOD_3DAYS#
#define SL_SE_TAMPER_FILTER_PERIOD_3DAYSValue:
0x17
Timeout ~3.1days.
SL_SE_TAMPER_FILTER_PERIOD_6DAYS#
#define SL_SE_TAMPER_FILTER_PERIOD_6DAYSValue:
0x18
Timeout ~6.2days.
SL_SE_TAMPER_FILTER_PERIOD_12DAYS#
#define SL_SE_TAMPER_FILTER_PERIOD_12DAYSValue:
0x19
Timeout ~12.4days.
SL_SE_TAMPER_FILTER_PERIOD_25DAYS#
#define SL_SE_TAMPER_FILTER_PERIOD_25DAYSValue:
0x1A
Timeout ~24.9days.
SL_SE_TAMPER_FILTER_PERIOD_50DAYS#
#define SL_SE_TAMPER_FILTER_PERIOD_50DAYSValue:
0x1B
Timeout ~49.7days.
SL_SE_TAMPER_FILTER_PERIOD_100DAYS#
#define SL_SE_TAMPER_FILTER_PERIOD_100DAYSValue:
0x1C
Timeout ~99.4days.
SL_SE_TAMPER_FILTER_PERIOD_199DAYS#
#define SL_SE_TAMPER_FILTER_PERIOD_199DAYSValue:
0x1D
Timeout ~198.8days.
SL_SE_TAMPER_FILTER_PERIOD_398DAYS#
#define SL_SE_TAMPER_FILTER_PERIOD_398DAYSValue:
0x1E
Timeout ~397.7days.
SL_SE_TAMPER_FILTER_PERIOD_795DAYS#
#define SL_SE_TAMPER_FILTER_PERIOD_795DAYSValue:
0x1F
Timeout ~795.4days.
SL_SE_TAMPER_FILTER_THRESHOLD_2#
#define SL_SE_TAMPER_FILTER_THRESHOLD_2Value:
0x7
Counter threshold 2.
SL_SE_TAMPER_FILTER_THRESHOLD_4#
#define SL_SE_TAMPER_FILTER_THRESHOLD_4Value:
0x6
Counter threshold 4.
SL_SE_TAMPER_FILTER_THRESHOLD_8#
#define SL_SE_TAMPER_FILTER_THRESHOLD_8Value:
0x5
Counter threshold 8.
SL_SE_TAMPER_FILTER_THRESHOLD_16#
#define SL_SE_TAMPER_FILTER_THRESHOLD_16Value:
0x4
Counter threshold 16.
SL_SE_TAMPER_FILTER_THRESHOLD_32#
#define SL_SE_TAMPER_FILTER_THRESHOLD_32Value:
0x3
Counter threshold 32.
SL_SE_TAMPER_FILTER_THRESHOLD_64#
#define SL_SE_TAMPER_FILTER_THRESHOLD_64Value:
0x2
Counter threshold 64.
SL_SE_TAMPER_FILTER_THRESHOLD_128#
#define SL_SE_TAMPER_FILTER_THRESHOLD_128Value:
0x1
Counter threshold 128.
SL_SE_TAMPER_FILTER_THRESHOLD_256#
#define SL_SE_TAMPER_FILTER_THRESHOLD_256Value:
0x0
Counter threshold 256.
SL_SE_TAMPER_FLAG_DGLITCH_ALWAYS_ON#
#define SL_SE_TAMPER_FLAG_DGLITCH_ALWAYS_ONValue:
(1UL << 1)
Tamper flags.
Digital glitch detector always on
SL_SE_TAMPER_FLAG_KEEP_TAMPER_ALIVE_DURING_SLEEP#
#define SL_SE_TAMPER_FLAG_KEEP_TAMPER_ALIVE_DURING_SLEEPValue:
(1UL << 2)
Tamper is kept alive during sleep (down to EM3)
SL_SE_HASH_STREAMING_INIT_DEFAULT#
#define SL_SE_HASH_STREAMING_INIT_DEFAULTValue:
{ NULL, 0, 0, NULL }Default streaming hash context.
SL_SE_SHA1_STREAMING_INIT_DEFAULT#
#define SL_SE_SHA1_STREAMING_INIT_DEFAULTValue:
{ { 0 }, { 0 }, { 0 } }SHA1 streaming hash context.
SL_SE_SHA224_STREAMING_INIT_DEFAULT#
#define SL_SE_SHA224_STREAMING_INIT_DEFAULTValue:
{ { 0 }, { 0 }, { 0 } }SHA224 streaming hash context.
SL_SE_SHA256_STREAMING_INIT_DEFAULT#
#define SL_SE_SHA256_STREAMING_INIT_DEFAULTValue:
{ { 0 }, { 0 }, { 0 } }SHA256 streaming hash context.
SL_SE_SHA384_STREAMING_INIT_DEFAULT#
#define SL_SE_SHA384_STREAMING_INIT_DEFAULTValue:
{ { 0 }, { 0 }, { 0 } }SHA384 streaming hash context.
SL_SE_SHA512_STREAMING_INIT_DEFAULT#
#define SL_SE_SHA512_STREAMING_INIT_DEFAULTValue:
{ { 0 }, { 0 }, { 0 } }SHA512 streaming hash context.
SL_SE_MAX_CODE_REGIONS#
#define SL_SE_MAX_CODE_REGIONSValue:
8
The maximum number of code regions available on the device.
The number of available code regions may be different on future devices.