AESCBC: AES (Advanced Encryption Standard) Cipher Block Chaining Driver

The AESCBC driver encrypts messages of any practical length that have a length evenly divisible by the block size. Unlike ECB, it guarantees confidentiality of the entire message.


AESCBC Configuration Synopsis

AESCBC.aescbcImplementation = 'AESCBCXXF3';// AESCBC Implementation
inst.interruptPriority = '15';// Interrupt Priority

AESCBC Module Configuration Options

Displays AESCBC delegates available for the CC3500 device.

Displays AESCBC delegates available for the CC3500 device.

Since there is only one delegate, it is a read-only value that cannot be changed. Please refer to the TI-Drivers implementation matrix for all available drivers and documentation.

Valid options include the following:

'AESCBCXXF3'


AESCBC Instance Configuration Options

Crypto peripheral interrupt priority

This configuration allows you to configure the hardware interrupt priority.

Valid options include the following:

'15'15 - Lowest Priority
'14'
'13'
'12'
'11'
'10'
'9'
'8'
'7'
'6'
'5'
'4'
'3'
'2'
'1'1 - Highest Priority


AESCCM: AES (Advanced Encryption Standard) Counter with Cipher Block Chaining Message Authentication Code (CBC-MAC) Driver

The AESCCM driver combines CBC-MAC with an AES block cipher in CTR mode of operation. This combination of block cipher modes enables CCM to encrypt messages of any length and not only multiples of the block cipher block size.


AESCCM Configuration Synopsis

AESCCM.aesccmImplementation = 'AESCCMXXF3';// AESCCM Implementation
inst.interruptPriority = '15';// Interrupt Priority

AESCCM Module Configuration Options

Displays AESCCM delegates available for the CC3500 device.

Displays AESCCM delegates available for the CC3500 device.

Since there is only one delegate, it is a read-only value that cannot be changed. Please refer to the TI-Drivers implementation matrix for all available drivers and documentation.

Valid options include the following:

'AESCCMXXF3'


AESCCM Instance Configuration Options

Crypto peripheral interrupt priority

This configuration allows you to configure the hardware interrupt priority.

Valid options include the following:

'15'15 - Lowest Priority
'14'
'13'
'12'
'11'
'10'
'9'
'8'
'7'
'6'
'5'
'4'
'3'
'2'
'1'1 - Highest Priority


AESCMAC: AES (Advanced Encryption Standard) Cipher-based Message Authentication Code (CMAC)

The AESCMAC driver generates or verifies a message authentication code using AES in CMAC or CBC-MAC mode.


AESCMAC Configuration Synopsis

AESCMAC.aescmacImplementation = 'AESCMACXXF3';// AESCMAC Implementation
inst.interruptPriority = '15';// Interrupt Priority

AESCMAC Module Configuration Options

Displays AESCMAC delegates available for the CC3500 device.

Displays AESCMAC delegates available for the CC3500 device.

Since there is only one delegate, it is a read-only value that cannot be changed. Please refer to the TI-Drivers implementation matrix for all available drivers and documentation.

Valid options include the following:

'AESCMACXXF3'


AESCMAC Instance Configuration Options

Crypto peripheral interrupt priority

This configuration allows you to configure the hardware interrupt priority.

Valid options include the following:

'15'15 - Lowest Priority
'14'
'13'
'12'
'11'
'10'
'9'
'8'
'7'
'6'
'5'
'4'
'3'
'2'
'1'1 - Highest Priority


AESCTR: AES (Advanced Encryption Standard) Counter Mode Driver

The AESCTR driver encrypts messages of any practical length. Unlike AESECB, it guarantees confidentiality of the entire message when the message is larger than one block.


AESCTR Configuration Synopsis

AESCTR.aesctrImplementation = 'AESCTRXXF3';// AESCTR Implementation
inst.interruptPriority = '15';// Interrupt Priority

AESCTR Module Configuration Options

Displays AESCTR delegates available for the CC3500 device.

Displays AESCTR delegates available for the CC3500 device.

Since there is only one delegate, it is a read-only value that cannot be changed. Please refer to the TI-Drivers implementation matrix for all available drivers and documentation.

Valid options include the following:

'AESCTRXXF3'


AESCTR Instance Configuration Options

Crypto peripheral interrupt priority

This configuration allows you to configure the hardware interrupt priority.

Valid options include the following:

'15'15 - Lowest Priority
'14'
'13'
'12'
'11'
'10'
'9'
'8'
'7'
'6'
'5'
'4'
'3'
'2'
'1'1 - Highest Priority


AESECB: AES (Advanced Encryption Standard) Electronic Code Book (ECB) Driver

The AESECB driver encrypts or decrypts one or multiple blocks of plain-text or cipher-text by directly encrypting or decrypting input blocks using AES.


AESECB Configuration Synopsis

AESECB.aesecbImplementation = 'AESECBXXF3';// AESECB Implementation
inst.interruptPriority = '15';// Interrupt Priority

AESECB Module Configuration Options

Displays AESECB delegates available for the CC3500 device.

Displays AESECB delegates available for the CC3500 device.

Since there is only one delegate, it is a read-only value that cannot be changed. Please refer to the TI-Drivers implementation matrix for all available drivers and documentation.

Valid options include the following:

'AESECBXXF3'


AESECB Instance Configuration Options

Crypto peripheral interrupt priority

This configuration allows you to configure the hardware interrupt priority.

Valid options include the following:

'15'15 - Lowest Priority
'14'
'13'
'12'
'11'
'10'
'9'
'8'
'7'
'6'
'5'
'4'
'3'
'2'
'1'1 - Highest Priority


AESGCM: AES (Advanced Encryption Standard) Galois Counter Mode (GCM) Driver

The AESGCM driver combines GHASH with the AES block cipher in CTR mode of operation. This combination of block cipher mode and GHASH based MAC enables GCM to encrypt messages of any length and not only multiples of the block cipher block size.


AESGCM Configuration Synopsis

AESGCM.aesgcmImplementation = 'AESGCMLPF3';// AESGCM Implementation
inst.interruptPriority = '15';// Interrupt Priority

AESGCM Module Configuration Options

Displays AESGCM delegates available for the CC3500 device.

Displays AESGCM delegates available for the CC3500 device.

Since there is only one delegate, it is a read-only value that cannot be changed. Please refer to the TI-Drivers implementation matrix for all available drivers and documentation.

Valid options include the following:

'AESGCMLPF3'


AESGCM Instance Configuration Options

Crypto peripheral interrupt priority

This configuration allows you to configure the hardware interrupt priority.

Valid options include the following:

'15'15 - Lowest Priority
'14'
'13'
'12'
'11'
'10'
'9'
'8'
'7'
'6'
'5'
'4'
'3'
'2'
'1'1 - Highest Priority


CryptoKeyKeyStore_PSA: PSA Crypto and KeyStore

The PSA Crypto API provides APIs to import, export, copy, and destroy KeyStore keys which are referenced using a key identifier. These keys are subject to usage restrictions as defined by the key attributes assigned during key import. Depending on these restrictions, the keys can be used via their key identifiers for future PSA Crypto operations.


CryptoKeyKeyStore_PSA Configuration Synopsis

CryptoKeyKeyStore_PSA.totalSlotCount = 59;// Total Key Slots
CryptoKeyKeyStore_PSA.assetStoreSlotCount = 53;// Asset Store Key Slots
CryptoKeyKeyStore_PSA.persistentKeyCacheSlots = 1;// Persistent Key Cache Slots
CryptoKeyKeyStore_PSA.volatileSlotCount = 5;// Volatile Key Slots
CryptoKeyKeyStore_PSA.volatileMemoryPoolSize = 2760;// Volatile Key Material Storage Space
CryptoKeyKeyStore_PSA.ramUsage = 6123;// KeyStore RAM Usage (bytes)
CryptoKeyKeyStore_PSA.persistentNumKeys = 45;// Number of Persistent Keys
CryptoKeyKeyStore_PSA.useSWCrypto = true;// Use MbedTLS SW Crypto
CryptoKeyKeyStore_PSA.aesConfig = ;// Volatile AES Key Configuration
CryptoKeyKeyStore_PSA.ecc224PlaintextNumVolatile = 0;// ECC-224 Plaintext Keys
CryptoKeyKeyStore_PSA.ecc256PlaintextNumVolatile = 0;// ECC-256 Plaintext Keys
CryptoKeyKeyStore_PSA.ecc384PlaintextNumVolatile = 0;// ECC-384 Plaintext Keys
CryptoKeyKeyStore_PSA.ecc512PlaintextNumVolatile = 0;// ECC-512 Plaintext Keys
CryptoKeyKeyStore_PSA.ecc521PlaintextNumVolatile = 0;// ECC-521 Plaintext Keys
CryptoKeyKeyStore_PSA.ecc224EncryptedNumVolatile = 0;// ECC-224 Encrypted Keys
CryptoKeyKeyStore_PSA.ecc256EncryptedNumVolatile = 0;// ECC-256 Encrypted Keys
CryptoKeyKeyStore_PSA.ecc384EncryptedNumVolatile = 0;// ECC-384 Encrypted Keys
CryptoKeyKeyStore_PSA.ecc512EncryptedNumVolatile = 0;// ECC-512 Encrypted Keys
CryptoKeyKeyStore_PSA.ecc521EncryptedNumVolatile = 0;// ECC-521 Encrypted Keys

CryptoKeyKeyStore_PSA Module Configuration Options

The total number of keys (of any lifetime) that can be placed in KeyStore. Each key slot, regardless of key type, occupies 83 bytes of data for metadata alone.

Sets the number of keys that can be actively stored in the HSM Asset Store.

This value changes the number of HSM Asset Store keys that can be referenced by KeyStore at once. The slot count should be reduced per the needs of the application, to save RAM usage by KeyStore slots.

Pre-define a non-configurable value for the number of slots that will be reserved to cache keys that also get stored in NVM.

The number of volatile keys that can be stored in KeyStore at a given time. This is determined by the number of volatile keys that are selected for usage.

This is the amount of RAM space that will be necessary to hold the specified number of volatile keys of the given sizes, as well as the space required for caching 3 persistent keys, in KeyStore's memory allocator pool.

RAM space required for all keys and key metadata.

This is the amount of RAM space that will be necessary to hold the specified number of keys of the given sizes & types, as well as the space required for caching 1 persistent keys and storing all key metadata.

This is the number of keys that can be stored in KeyStore flash at a given time.

This value should be set based on the flash size available for KeyStore, as determined by the Memory Map SysConfig module. 45 keys require at least 16KB of KeyStore flash space. Another known valid configuration is 22 keys for 8KB of flash space.

Allows MbedTLS SW Crypto implementations to be used for select crypto operations that the HSM doesn't support.

Volatile AES Key Configuration [CryptoKeyKeyStore_PSA.aesConfig = ]

This is the number of ECC-224 keys planned to be used and stored in plaintext in Key Store RAM.

This is the number of ECC-256 keys planned to be used and stored in plaintext in Key Store RAM.

This is the number of ECC-384 keys planned to be used and stored in plaintext in Key Store RAM.

This is the number of ECC-512 keys planned to be used and stored in plaintext in Key Store RAM.

This is the number of ECC-521 keys planned to be used and stored in plaintext in Key Store RAM.

This is the number of ECC-224 keys planned to be used and stored in encrypted format in Key Store RAM.

This is the number of ECC-256 keys planned to be used and stored in encrypted format in Key Store RAM.

This is the number of ECC-384 keys planned to be used and stored in encrypted format in Key Store RAM.

This is the number of ECC-512 keys planned to be used and stored in encrypted format in Key Store RAM.

This is the number of ECC-521 keys planned to be used and stored in encrypted format in Key Store RAM.


ECDSA: Elliptic Curve Digital Signature Algorithm (ECDSA) Driver

The ECDSA driver provides APIs for generating and verifying digital signatures.


ECDSA Configuration Synopsis

ECDSA.ecdsaImplementation = 'ECDSAXXF3HSM';// ECDSA Implementation

ECDSA Module Configuration Options

Displays ECDSA delegates available for the CC3500 device.

Displays ECDSA delegates available for the CC3500 device.

Since there is only one delegate, it is a read-only value that cannot be changed. Please refer to the TI-Drivers implementation matrix for all available drivers and documentation.

Valid options include the following:

'ECDSAXXF3HSM'


EDDSA: Edwards Curve Digital Signature Algorithm (EDDSA) Driver

The EDDSA driver provides APIs for generating and verifying digital signatures.


EDDSA Configuration Synopsis

EDDSA.eddsaImplementation = 'EDDSAXXF3HSM';// EDDSA Implementation

EDDSA Module Configuration Options

Displays EDDSA delegates available for the CC3500 device.

Displays EDDSA delegates available for the CC3500 device.

Since there is only one delegate, it is a read-only value that cannot be changed. Please refer to the TI-Drivers implementation matrix for all available drivers and documentation.

Valid options include the following:

'EDDSAXXF3HSM'


RNG: Random Number Generator (RNG)

The RNG driver generates random data of variable lengths from a pool of entropy. The pool of entropy is maintained by the driver using implementation-specific sources of entropy. The output is suitable for applications requiring cryptographically random data such as keying material for private or symmetric keys.


RNG Configuration Synopsis

RNG.rngReturnBehavior = 'RNG_RETURN_BEHAVIOR_POLLING';// Return Behavior
inst.$name = 'CONFIG_RNG_{num}';// Name

RNG Module Configuration Options

The return behavior (RNG_RETURN_BEHAVIOR) which will be used for all instances of the driver. All instances must be opened using this setting.

Valid options include the following:

'RNG_RETURN_BEHAVIOR_POLLING'Polling
'RNG_RETURN_BEHAVIOR_BLOCKING'Blocking


RNG Instance Configuration Options

The C/C++ identifier used in applications as the index parameter passed to RNG runtime APIs

This name is declared in the generated ti_drivers_config.h file so applications can reference this instance symbolically. Additionally, this name is used to declare an 'extern const' which allows libraries to define symbolic names for required driver configurations without needing to rebuild library source files. The 'const' identifier is declared as the same name with a _CONST suffix. The name can be set to any globally unique name that is also a valid C/C++ identifier.

The SysConfig tooling ensures that all names defined in a configuration are unique. When instances are first created, SysConfig gives them a default name, CONFIG_RNG_, that's made unique by appending a numeric id. If you provide a name, it's checked against all other instance names in the configuration and, if another instance has the same name, an error is triggered. The additional 'const' declaration is assumed to also be globally unique.

Note: since not all names are added to ti_drivers_config.h, it's possible that some names will not be allowed even though they do not actually collide in the generated files.


SHA2: Secure Hash Algorithm (SHA2) Driver

The SHA2 driver provides access to the SHA2 family of cryptographic hashes that map an input of arbitrary length to a fixed-length output with negligible probability of collision.


SHA2 Configuration Synopsis

SHA2.sha2Implementation = 'SHA2XXF3HSM';// SHA2 Implementation

SHA2 Module Configuration Options

Displays SHA2 delegates available for the CC3500 device.

Displays SHA2 delegates available for the CC3500 device.

Since there is only one delegate, it is a read-only value that cannot be changed. Please refer to the TI-Drivers implementation matrix for all available drivers and documentation.

Valid options include the following:

'SHA2XXF3HSM'


TRNG: True Random Number Generator (TRNG)

The TRNG driver generates numbers of variable lengths from a source of entropy. The output is suitable for applications requiring cryptographically secure random numbers such as keying material for private or symmetric keys.


TRNG Configuration Synopsis

TRNG.trngImplementation = 'TRNGXXF3HSM';// TRNG Implementation
inst.$name = 'CONFIG_TRNG_{num}';// Name

TRNG Module Configuration Options

Displays TRNG delegates available for the CC3500 device.

Displays TRNG delegates available for the CC3500 device.

Since there is only one delegate, it is a read-only value that cannot be changed. Please refer to the TI-Drivers implementation matrix for all available drivers and documentation.

Valid options include the following:

'TRNGXXF3HSM'


TRNG Instance Configuration Options

The C/C++ identifier used in applications as the index parameter passed to TRNG runtime APIs

This name is declared in the generated ti_drivers_config.h file so applications can reference this instance symbolically. Additionally, this name is used to declare an 'extern const' which allows libraries to define symbolic names for required driver configurations without needing to rebuild library source files. The 'const' identifier is declared as the same name with a _CONST suffix. The name can be set to any globally unique name that is also a valid C/C++ identifier.

The SysConfig tooling ensures that all names defined in a configuration are unique. When instances are first created, SysConfig gives them a default name, CONFIG_TRNG_, that's made unique by appending a numeric id. If you provide a name, it's checked against all other instance names in the configuration and, if another instance has the same name, an error is triggered. The additional 'const' declaration is assumed to also be globally unique.

Note: since not all names are added to ti_drivers_config.h, it's possible that some names will not be allowed even though they do not actually collide in the generated files.


How to Read SysConfig Synopsis Lines

SysConfig configuration scripts consist of a sequence of assignments to configuration parameters defined by the modules used in an application. There are two types of assignments: assignments to module-level configuration parameters (that apply to all instances of the module) and assignments to instance-level configuration parameters (which are specific to the instance alone). All configuration parameters have a default value that's used in the event that it's not explicitly set in the configuration script.

Synopsis lines of the form
MOD.paramName = defaultValue
illustrate an assignment of a module configuration parameter's default value to the configuration parameter itself.

Similarily,
inst.paramName = defaultValue
illustrates an assignment of a instance configuration parameter's default value to the configuration parameter itself.

For example, the following is a snippet of a SysConfg script that configures the GPIO module and a GPIO instance.

// Add the GPIO module to this configuration
var GPIO = system.addModule('/ti/drivers/GPIO');
// Set a GPIO module configuration parameter
GPIO.optimizeCallbackTableSize = true;
// Add a new GPIO instance
var led = GPIO.addInstance();
// Set this instance's configuration parameters
led.$name = 'LED';
led.mode = 'Output';