SecureBinary4 for mcxn557s, Revision: a0

Type: object

If the conditions in the "If" tab are respected, then the conditions in the "Then" tab should be respected. Otherwise, the conditions in the "Else" tab should be respected.

Type: object

Type: enum (of boolean or null)

Must be one of:

  • true
  • null
Type: object

The following properties are required:

  • containerKeyBlobEncryptionKey
Type: object

The chip family name

Type: enum (of string)

NXP chip family identifier.

Must be one of:

  • "mcxn556s"
  • "mcxn557s"

MCU revision

Type: enum (of string)

Revision of silicon. The 'latest' name, means most current revision.

Must be one of:

  • "a0"
  • "latest"

Part Common Key

Type: stringFormat: file-or-hex-value-or-config-string

Path to PCK/NPK 256 or 128 bit key in plain hex string format or path to binary file or hex string.

KDK access rights

Type: enum (of integer)

Accepted values are 0, 1, 2 and 3. Value used as key properties for key derivation process, more details can be found in CSSv2 manual.

Must be one of:

  • 0
  • 1
  • 2
  • 3

Description

Type: string

Description up to 16 characters, longer will be truncated. Stored in SB4.0 manifest.

SB4 filename

Type: string

Generated SB4 container filename.

Enable NXP Container encryption

Type: boolean

If false, generated SB4.0 blocks are not encrypted, only for testing, ROM won't accept unencrypted SB4.0 file. If option is missing, SB4.0 file is automatically encrypted.

SB4 file force timestamp

Type: string or numberFormat: number

For testing purposes. This option can override real timestamp of SB4 file.

Image version.

Type: number or stringFormat: number

Image version used for rollback protection in SB4 format. While primarily designed for dual boot scenarios in MBI (Master Boot Image), this field provides security through firmware version validation.

Rollback Protection Mechanism:
The image version must be equal to or greater than the version stored in fuses or PFR (Protected Flash Region) to ensure proper rollback protection.

Version Calculation (e.g., MCXN556s series):
The firmware version is calculated by combining the image version with the fuse version:

fwversion = (imageVersion << 8) | fuseversion

Validation Process:
During rollback protection, the calculated firmware version is checked against the 'SECUREFWVERSION' value stored in the CFPA (Customer Field Programmable Area) page. Only firmware with versions equal to or higher than the stored value will be allowed to execute.

Super Root Key (SRK) set

Type: enum (of string)

Defines which set is used to authenticate the container.

Must be one of:

  • "oem"
  • "nxp"

Used SRK

Type: number or stringFormat: number

Which key from SRK set is being used.

Fuse version

Type: number or stringFormat: number

The value must be equal or greater than the version stored in fuses or PFR to provide proper rollback protection. For example, on the MCXN556s series, the fuse version is used for rollback protection, where it is joined with the image version to create a firmware version 'fwversion = (imageVersion << 8) | (fuseversion)'. During rollback protection, the firmware version is checked against 'SECUREFWVERSION' in the CFPA page.

AHAB container signer

Type: string

Signature provider configuration in format 'type=<identifier>;<key1>=<value1>;<key2>=<value2>' or a private key used for sign the container header. Header can be signed by SRK. The referenced SRK must not have been revoked.

AHAB container signer for second signature (PQC only)

Type: string

Signature provider configuration in format 'type=<identifier>;<key1>=<value1>;<key2>=<value2>' or a private key used for second sign (PQC only) of the container header. Header can be signed by SRK. The referenced SRK must not have been revoked.

SRK Table

Type: object

SRK (Super Root key) table definition.

CA Flag

Type: boolean

CA Flag is used by HAB to indicate if the SRK is allowed to sign other keys

Super Root Key (SRK) table

Type: array of string

Table containing the used SRK records. All SRKs must be of the same type. Supported signing algorithms are: RSA-PSS, ECDSA, Dilithium or SM2. Supported hash algorithms: sha256, sha384, sha512, sha3256, sha3384, sha3_512, sm3. Supported key sizes/curves: prime256v1, sec384r1, sec512r1, rsa2048, rsa4096, dilithium3, sm2. Certificate may be of Certificate Authority. Dilithium algorithms are supported just in new type of AHAB container

Must contain a minimum of 4 items

Must contain a maximum of 4 items

No Additional Items

Each item of this array must be:

SRK key

Type: stringFormat: file

Path to SRK Key file.

Second SRK Table

Type: object

CA Flag

Type: boolean

CA Flag is used by HAB to indicate if the SRK is allowed to sign other keys

Super Root Key (SRK) table

Type: array of string

Table containing the used SRK Dilithium records. All SRKs must be of the same type. Supported signing algorithms are: Dilithium level 3. Supported hash algorithms: sha3256, sha3384, sha3_512. Certificate may be of Certificate Authority.

Must contain a minimum of 4 items

Must contain a maximum of 4 items

No Additional Items

Each item of this array must be:

SRK key

Type: stringFormat: file

Path to SRK Key file.

The AHAB certificate

Type: stringFormat: file

The file that contains AHAB certificate. It could be used already prepared binary form signed by SRK, or it is possible to use configuration YAML file of certificate and the AHAB export process it will export it itself.

Images HASH type

Type: enum (of string)

HASH type of image.

Must be one of:

  • "sha256"
  • "sha384"
  • "sha512"

Target Core ID

Type: enum (of string)

Target core id to select kind of image.

Must be one of:

  • "cortex-m33"
  • "nbu"

SB3.1 Commands

Type: array

Secure Binary v3.1 commands block, list of all possible options - Modify it according to your application

No Additional Items

Each item of this array must be:


Type: object

Erase

Type: object

Performs a flash erase of the given address range. The erase will be rounded up to the sector size.

Address

Type: string or numberFormat: number

Address of memory block to be erased.

Size

Type: string or numberFormat: number

Size of memory block to be erased.

Memory ID

Type: string or numberFormat: number

ID of memory block to be erased.

Type: object

Load


If set, then the data to write immediately follows the range header. The length field contains the actual data length

Type: object

If the conditions in the "If" tab are respected, then the conditions in the "Then" tab should be respected. Otherwise, the conditions in the "Else" tab should be respected.

Type: object

Type: enum (of boolean or null)

Must be one of:

  • false
  • false
  • null
Type: object

The following properties are required:

  • sectorSize
Type: object

If the conditions in the "If" tab are respected, then the conditions in the "Then" tab should be respected. Otherwise, the conditions in the "Else" tab should be respected.

Type: object


Must not be:

Type: object
Must match regular expression: ^(0x|0b)|,|^[0-9]+$

Type: object

The following properties are required:

  • data
Type: object

The following properties are required:

  • file
Type: object

The following properties are required:

  • value
Type: object

The following properties are required:

  • values

Address

Type: string or numberFormat: number

Address of memory block to be loaded.

Memory ID

Type: string or numberFormat: number

ID of memory block to be loaded.

Binary file.

Type: stringFormat: file

32-bit binary values delimited by comma to be programmed or a list with multiple values as integers or 32-bit binary values.

Type: string, number or array

Binary value

Type: string or number

Data to be loaded

Type: string, number or array

The data to be loaded, it could be defined in following formats:
- 32-bit value. Value will be converted to binary in little endian format. Example: '0xB38AA899' or '0b111000'
- Array of 32-bit binary values delimited by comma to be loaded. Individual 32-bit values will be stored in little endian format. Example: 0x1234, 0x5678, 0, 12345678
- List of integers passed as an array.
- Path to binary file. Example: my_binary.bin

Data compression

Type: boolean

Use LZMA compression of date before loading onto the target

Memory sector size

Type: string or numberFormat: number

Size of memory sector where data should be loaded.

Type: object

Execute

Type: object

Address is the jump-to address. No further processing of SB after jump, ROM do not expect to return.

Address

Type: string or numberFormat: number

Jump-to address to start execute code.

Type: object

Program Fuses

Type: object

Address is OTP index of fuses to be programmed (Check the reference manual for more information). Values is a comma separated list of 32bit values.

Address

Type: string or numberFormat: number

OTP Index of fuses to be programmed. Depends on the chip ROM.

Binary values

Type: string or number

32bit binary values delimited by comma or one 32 bit integer to be programmed.

Type: object

Program IFR

Type: object

The startAddress will be the address into the IFR region, length will be in number of bytes to write to IFR region. The data to write to IFR region at the given address will immediately follow the header

Address

Type: string or numberFormat: number

Address of IFR region to be programmed.

Binary file.

Type: stringFormat: file

32-bit binary values delimited by comma to be programmed or a list with multiple values as integer or 32-bit binary values.

Type: string, number or array

Binary value

Type: string or number

Data to be loaded

Type: string, number or array

The data to be loaded, it could be defined in following formats:
- 32-bit value. Value will be converted to binary in little endian format. Example: '0xB38AA899' or '0b111000'
- Array of 32-bit binary values delimited by comma to be loaded. Individual 32-bit values will be stored in little endian format. Example: 0x1234, 0x5678, 0, 12345678
- List of integers passed as an array.
- Path to binary file. Example: my_binary.bin

Type: object

Load CMAC

Type: object

If set, then the data to write immediately follows the range header. The length field contains the actual data length. ROM is calculating cmac from loaded data and storing on address known by ROM decided based on startAddress.

Address

Type: string or numberFormat: number

Address of memory block to be CMAC loaded.

Memory ID

Type: string or numberFormat: number

ID of memory block to be CMAC loaded.

Binary file

Type: stringFormat: file

Binary file to be loaded.

Type: object

Copy

Type: object

Used for copying data from one place to another. 32 bytes fixed size.

Address From

Type: string or numberFormat: number

Address of memory block to be copied.

Memory ID From

Type: string or numberFormat: number

ID of memory block to be copied.

Size

Type: string or numberFormat: number

Size of memory block to be copied.

Address To

Type: string or numberFormat: number

Address of memory where block to be copied.

Memory ID To

Type: string or numberFormat: number

ID of memory block where to be copied.

Type: object

Load with HASH locking

Type: object

If set, then the data to write immediately follows the range header. The length field contains the actual data length. ROM is calculating hash of the data and storing the value in the last 64 bytes of the loaded data, which are reserved for it.

Address

Type: string or numberFormat: number

Address of memory block to be loaded.

Memory ID

Type: string or numberFormat: number

ID of memory block to be loaded.

Binary file

Type: stringFormat: file

Binary file to be loaded.

Type: object

Load Key Blob

Type: object

Wrapped key blob immediately follows the range key blob header. The length field contains the actual data length.

Offset

Type: string or numberFormat: number

Offset of the key blob.

Wrapping key ID

Type: enum (of string)

Wrapping ID of key blob.

Must be one of:

  • "NXP_CUST_KEK_INT_SK"
  • "NXP_CUST_KEK_EXT_SK"

Binary file

Type: stringFormat: file

Binary file to be loaded.

Key Blob as plain text

Type: enum (of string)

Indicates whether key is provided as plaintext or not. If it's in plaintext this option also indicates whether it's as binary or hex

Must be one of:

  • "no"
  • "bin"
  • "hex"
Type: object

Configure memory

Type: object

Configure memory.

Address

Type: string or numberFormat: number

Configuration address.

Memory ID

Type: string or numberFormat: number

ID of memory block to be configured.

Type: object

Fill memory

Type: object

Used for filling of the memory range by same repeated int32 pattern.

Address

Type: string or numberFormat: number

Address of memory block to be filled.

Size

Type: string or numberFormat: number

Size of memory block to be filled.

Pattern

Type: string or numberFormat: number

Pattern which will be used to fill memory.

Type: object

Check firmware version

Type: object

Checks FW version value specified in command for specified counter ID. FW version value in command must be greater than value programmed in OTP to be accepted, otherwise rollback is detected and receive SB fails

Value - Firmware version

Type: string or numberFormat: number

Firmware version to be compared.

Counter ID

Type: enum (of string)

ID of FW counter to be checked.

Must be one of:

  • "none"
  • "nonsecure"
  • "secure"
  • "radio"
  • "snt"
  • "bootloader"
  • "radio_lp"
Type: object

Reset

Type: object

Resets the target