Commit Graph

49 Commits

Author SHA1 Message Date
Javier Viguera 3d2718abb7 trustfence-sign-artifact: fix AHAB-containerizing command for ccimx91
The ccmx91 uses the same AHAB-containerizing command as the ccimx93,
so fix the code to remove the hardcoding check for the ccimx93.

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2024-11-20 18:57:24 +01:00
Mike Engel d11b291f9a meta-digi: add new CCMX91 platform into DEY
This commits adds the CCMX91 platform to the DEY
build system. Furthermore, it creates generic ccimx9
support to be used for the CCiMX91 and CCiMX93
platform.

https://onedigi.atlassian.net/browse/DEL-9106

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
Signed-off-by: Mike Engel <Mike.Engel@digi.com>
2024-07-19 07:32:00 +02:00
Arturo Buzarra b9d9a0104b trustfence: stm: fix PKI tree check for ccmp13 platform
This commit fixes a race condition where, if you have an existing PKI tree with
the new format (one key_pass file for each key), the script detects that the
PKI tree is incomplete because it is always trying to find the key_pass.txt
file with the old format. This commit adds an additional validation step to
verify the new keys format.

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2024-03-26 12:37:06 +01:00
Javier Viguera f67d59d7b8 meta-digi: support SRK revocation mask when signing boot artifacts
The script to sign the boot artifacts lacked the support to configure the
revocation mask. The at-the-moment supported platforms did not need it,
but the ccimx93 does need it, so implement it in this commit.

https://onedigi.atlassian.net/browse/DEL-8704

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2024-03-12 18:12:56 +01:00
Javier Viguera 15211c3133 trustfence-sign-artifact: implement support for ccimx93
https://onedigi.atlassian.net/browse/DEL-8704

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2024-03-12 12:18:59 +01:00
Javier Viguera 765fa48acc trustfence-sign-artifact: move srktool parameters to the platform data
With the introduction of the ccimx93 support in the following commits, the
srktool parameters not only differ for HAB/AHAB devices but also between
devices using AHAB (for example, different parameters for ccimx8x and
ccimx93). Thus, move this information to the platform-specific data table.

https://onedigi.atlassian.net/browse/DEL-8704

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2024-03-12 12:18:59 +01:00
Javier Viguera d8454cecc7 trustfence-sign-artifact: create a table for platform-specific data
It is a cosmetic change, as there is no change in functionality, but
convert the if..elif..fi structure to a table with the platform-specific
data, so it's easier to maintain and extend.

https://onedigi.atlassian.net/browse/DEL-8704

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2024-03-12 12:18:59 +01:00
Hector Palacios 4f33afcbcf trustfence: split ccmp13 passwords in 8 files and set SWUPDATE keys
For signing SWU files we need to set a couple of variables:
 - SWUPDATE_PRIVATE_KEY_TEMPLATE to the private key file
 - SWUPDATE_PASSWORD_FILE to the password of the private key

The latter must only contain one password, whereas the current key_pass.txt
file had (for the ccmp13) the eight keys separated by a white space.

This commit:
 - If the file key_pass.txt exists, it extracts each key into a separate
   file key_pass0X.txt.
 - If the keys don't exist, generates separate files per key.
 - Changes the permissions of password files to 400.
 - Adapts the sign script to use the single password files.
 - Fixes a few quotes

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
2024-01-03 13:05:05 +01:00
Arturo Buzarra acd2ee22c1 trustfence: stm: rework PKI tree generation for CCMP15 platforms
PKI tree generation for the STM32MP15 cpu provides the undesired file
"publicKeysHashHashes.bin", which is only required by STM32MP13. This commit
generates the PKI tree according to the KeyGen tool documentation to avoid
generate this extra file and avoid confusing the end user.

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2023-08-30 09:53:56 +02:00
Arturo Buzarra 4d6947e02a trustfence: stm: improve error handling for PKI tree generation script
Any errors in the PKI tree generation are not reported to bitbake, so the
script fails silently. This commit adds a validation of the script execution,
and if it fails, it aborts the execution and notifies to bitbake.

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2023-08-30 09:53:56 +02:00
Arturo Buzarra a8809e68c7 trustfence: stm: fix PKI generation for CCMP13 platform
The KeyGen tool to generate 8 key pairs requires 8 consecutive passwords,
however, when the shell expands the passwords variable, it interprets it as a
single string instead of 8 different strings and fails.

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2023-08-30 09:53:56 +02:00
Hector Palacios ae327e8dae trustfence: stm: move generation of PKI out of sign script
Create a new script for the generation of PKI tree for STM platforms
and leave the trustfence-sign-artifact script exclusively for signing.
The new gen-pki script only requires the platform as an argument and the
path to where to save the tree (if it doesn't exist) in
CONFIG_SIGN_KEYS_PATH.

This commit also reverts commit 13c136dbc5 by getting rid of the
trustfence-genpki-native.bb recipe and moving back the PKI generation
functions into trustfence.bbclass. This recipe didn't quite guarantee
that the PKI was generated on time for the recipes that required the
keys to exist, anyway.
Instead, the PKI generation function must be called right after
do_compile() of recipe tf-a-stm32mp to be ready for do_deploy() where
the key is used.

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
2023-08-14 09:19:16 +02:00
Mike Engel 1122980ab9 trustfence: add ccimx6qp platform to the sign tool
Signed-off-by: Mike Engel <Mike.Engel@digi.com>
2023-06-20 16:46:16 +02:00
Hector Palacios f6738c3cb2 trustfence: add artifacts signing script for STM platforms
This script can be called stand-alone or from DEY.
Syntax is :
  trustfence-sign-artifact.sh -p <platform> [-t input-unsigned-image> <output-signed-image>]

If files are omitted, it at least generates random keys if they do not
exist.

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
2023-05-10 17:33:23 +02:00
Hector Palacios 1a81de2c2f trustfence-sign-tools: rename sign script with SOC vendor suffix
This is in preparation of using the same script name for different SOC
vendors (NXP and STM).

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
2023-05-10 17:33:23 +02:00
Hector Palacios 661f59967c trustfence: add function to generate a PKI tree if it doesn't exist
The stand-alone signing script 'trustfence-sign-artifact.sh' checks
if a valid PKI tree exists (by checking the existance of four SRK
files) and if they don't, it calls trustfence-gen-pki.sh (which is
a wrapper over different generators (for HAB or AHAB) to create one.

Recipes such as 'dualboot' or 'recovery-initramfs' may need to call
openssl functions over the PKI tree. These recipes do not currently
generate the PKI tree; they expect it to be already in place.
This might not be the case if the trustfence-sign-artifact.sh script
has not been called yet.

Originally, a fake dependency on virtual/kernel recipe was made to
force it, but it doesn't quite work since the calling only happens
on deploy() while regular DEPENDS doesn't wait for this task.
If the PKI does not exist, a recipe that requires the PKI tree will
fail.

The solution is to create a function on the trustfence.bbclass that
allows any recipe to check for the existance of a PKI tree and
generate it if it doesn't exist. This is repeated inside the
trustfence-sign-artifact.sh, but it needs to be in both places
because this script must work stand-alone.

The generation of the PKI tree takes some seconds so this commit
adds a lock dir to prevent race conditions when called from
different recipes.

It also removes the fake dependency on virtual/kernel and adds a
dependency on trustfence-cst-native (which is the recipe that
provides the PKI generation tool).

Signed-off-by: Hector Palacios <hector.palacios@digi.com>

https://onedigi.atlassian.net/browse/DEL-8430
(cherry picked from commit 6a8bf7afff)
2023-03-21 13:36:58 +01:00
Gonzalo Ruiz 43a68c00de Revert "trustfence-sign-tools: don't encrypt artifacts in ccimx8mn/ccimx8mm projects"
Artifact encryption is now supported for ccimx8mn and ccimx8mm.

This reverts commit 1134e4c07c.

https://onedigi.atlassian.net/browse/DEL-7915

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
(cherry picked from commit 588005bb4b2200e79b180f77671304d9c5bdf509)
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2022-11-25 12:07:01 +01:00
Gabriel Valcazar 54ddb775c4 trustfence-sign-artifact.sh: remove CONFIG_SIGN_MODE as a mandatory parameter
The sign mode needed for each platform is invariable, and since the platform
is already a mandatory parameter for the script, we can store this information
implicitly. Reflect this change in every recipe where the script is used, but
keep the variable at the Yocto level since it's still needed in several places.

https://onedigi.atlassian.net/browse/DEL-7862

Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com>
2022-03-22 12:47:32 +01:00
Gonzalo Ruiz 70de030974 Revert "trustfence: change RAM location to the same values used in u-boot"
The AHAB decryption process takes the encrypted file from the address defined
in U-Boot and decrypts it into the address defined in this script. If both
addresses are the same, the decryption process ends up failing. This
happens even for signed-only images.

Maintain the original addresses in this script so they do not collide.

This reverts commit c970d87d5a.

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2021-12-09 09:19:59 +01:00
Mike Engel c970d87d5a trustfence: change RAM location to the same values used in u-boot
Signed-off-by: Mike Engel <Mike.Engel@digi.com>
2021-12-01 13:11:39 +01:00
Mike Engel ddec434bc8 trustfence: move CC8X read-only signature to the end of the image
This commit moves the read-only container signature to the end of
rootfs image for the CC8X platform.

Signed-off-by: Mike Engel <Mike.Engel@digi.com>
2021-12-01 13:11:39 +01:00
Hector Palacios 82dd2cbc4d trustfence-sign-artifact: re-use RAMDISK address for rootfs
Re-use RAMDISK address for authenticating the rootfs instead
of allocating a new address (if authenticating a rootfs, we're
not using a ramdisk).

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
2021-11-12 09:01:44 +01:00
Mike Engel eb730358e5 trustfence: add read only rootfs signing option to signing script
Signed-off-by: Mike Engel <Mike.Engel@digi.com>
2021-11-11 13:37:30 +01:00
Gabriel Valcazar 1134e4c07c trustfence-sign-tools: don't encrypt artifacts in ccimx8mn/ccimx8mm projects
Attempting to boot encrypted artifacts on these platforms will result in HAB
events caused by CAAM errors. This is due to the CAAM being configured for
non-secure contexts (in regards to Trustzone) while the HAB expects it to be
configured for secure contexts.

For now, only sign artifacts for these platforms even if the project has the
encryption feature enabled.

https://jira.digi.com/browse/DUB-993

Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com>
2021-03-04 13:14:13 +01:00
Gabriel Valcazar daae78b60c trustfence-sign-tools: add ccimx8mm support to the artifact signing script
https://jira.digi.com/browse/DEL-7420

Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com>
2021-02-12 11:37:15 +01:00
Gonzalo Ruiz 39baff1e60 trustfence: add new TRUSTFENCE_SRK_REVOKE_MASK variable
In order to revoke SRKs in platforms with AHAB we need to set a mask
during the signing/encryption process.

Create new TRUSTFENCE_SRK_REVOKE_MASK variable to export the
SRK_REVOKE_MASK variable required by the imx-boot signing script.

The revoke mask is not necessary for signing/encryption of other artifacts,
so set it by default to 0x0.

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2021-01-13 17:00:29 +01:00
Arturo Buzarra 6c7bd330a4 trustfence-sign-artifact: add support for ccimx8x encryption
Add support to sign and encrypt OS artifacts for AHAB devices.

https://jira.digi.com/browse/DEL-7371

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2021-01-08 13:03:36 +01:00
Mike Engel 024732f8cc trustfence: create 128Bit dek when using MX8MN.
This commit creates a 128Bit DEK, which is the max supported
length at the moment for the iMX8M.

Signed-off-by: Mike Engel <Mike.Engel@digi.com>
2020-12-28 11:04:28 +01:00
Arturo Buzarra 6a6ff5080b trustfence: [cosmetic] fix typos on cst templates
https://jira.digi.com/browse/DEL-7175

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2020-09-01 11:29:25 +02:00
Gonzalo Ruiz 168800c3b5 trustfence-sign-artifact: [cosmetic] bring together DTB parameters
Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2020-06-19 16:29:15 +02:00
Gonzalo Ruiz 82157675d8 trustfence-sign-artifact: ccimx8x: preserve original image
Perform AHAB signing process without altering the original file.

https://jira.digi.com/browse/DEL-7024

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2020-06-15 20:06:00 +02:00
Gonzalo Ruiz 38d95cf361 trustfence: add support to sign/encrypt DTB overlays
https://jira.digi.com/browse/DEL-7024

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2020-06-04 19:01:34 +02:00
Gonzalo Ruiz 283e6b0638 trustfence-sign-artifact: set CONFIG_CSF_SIZE to 0x2000 for ccimx8mn
https://jira.digi.com/browse/DEL-7024

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2020-06-04 19:01:34 +02:00
Gonzalo Ruiz 98abd4bc28 trustfence-sign-artifact: add support for ccimx8mn signing
LINUX_ARM64 images include the padding length in the size property of
their header, so for these images read the header size property instead
of calculating it with 'stat'.

https://jira.digi.com/browse/DEL-7024

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2020-06-04 19:01:34 +02:00
Gonzalo Ruiz ea2ffcfee8 trustfence: introduce AHAB container creation into script
https://jira.digi.com/browse/DEL-7024

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2020-06-04 19:01:34 +02:00
Gonzalo Ruiz 5b23f09622 trustfence-sign-artifact: verify CONFIG_SIGN_MODE argument is set
If CONFIG_SIGN_MODE is unset, we were assuming the sign mode to be AHAB
whereas it is preferable to abort the signing process and notify with an
error message.

https://jira.digi.com/browse/DEL-7024

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2020-06-04 19:01:34 +02:00
Gonzalo Ruiz 9b4a03c14c trustfence: [cosmetic] rename script to trustfence-sign-artifact
The signing script is used for signing multiple artifacts, not just the
kernel, so rename it for a broader use.

https://jira.digi.com/browse/DEL-7047

Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
2020-06-04 19:01:34 +02:00
Hector Palacios b1776fcc63 trustfence-sign-kernel.sh: don't generate SRK_efuses for DEY sign script
The only script that needs to generate the SRK_efuses is the sign.sh
script in the U-Boot code. For the rest of signed non-bootable artifacts
this is not required and it was creating the SRK_efuses file on every
recipe where the script was called, like linux-dey and others, which
eventually resulted in a conflict when copying the artifacts to the shared
deploy-image-dir.

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
2020-02-12 18:50:19 +01:00
Hector Palacios 8320168821 trustfence: homogenize SIGN_MODE variables
* prefix TRUSTFENCE_ to variable SIGN_MODE for DEY
* prefix CONFIG_ to variable SIGN_MODE for script

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
2020-02-12 18:50:19 +01:00
Mike Engel 5beec04b6a trustfence: Add Trustfence support for CCMX8X
This commit adds Trustfence support for the CCMX8X
platform.

Signed-off-by: Mike Engel <Mike.Engel@digi.com>

https://jira.digi.com/browse/DEL-6917
2020-02-04 12:20:38 +01:00
David Escalona 748ffed314 trustfence-sign-kernel: fix the IVT table address padding
- The IVT table address inside the kernel image must be aligned at 0x1000
  bytes. The calculation of this offset was not working when the kernel image
  size was multiple of 0x1000 bytes. In this case the IVT table was moved an
  extra offset of 0x1000 bytes, causing U-Boot to fail to validate the image
  as the IVT table was not in the expected location.

  This fix uses the same offset calculation algorithm as U-Boot, ensuring both,
  the sign script and U-Boot will look for the IVT at the same address.

https://jira.digi.com/browse/DEL-3972

Signed-off-by: David Escalona <david.escalona@digi.com>
2017-03-23 14:16:33 +01:00
Diaz de Grenu, Jose af3f883f09 trustfence: [cosmetic] fix usage help
Signed-off-by: Diaz de Grenu, Jose <Jose.DiazdeGrenu@digi.com>
2016-11-09 17:02:52 +01:00
Diaz de Grenu, Jose ed22789224 trustfence: make sign script threadsafe
Ensure that the signing script is not executed in parallel. This is required in
order to avoid problems during PKI generation and CST usage when building with
Yocto or the Android build system.

https://jira.digi.com/browse/DEL-2849

Signed-off-by: Diaz de Grenu, Jose <Jose.DiazdeGrenu@digi.com>
2016-11-09 17:02:18 +01:00
Diaz de Grenu, Jose 6aff5b5524 trustfence: fix sign/encryption for very small artifacts
The HAB on the i.MX6/i.MX6UL expects an entrypoint which is used to pass
execution to U-Boot in the ROM code. In later executions of HAB, U-Boot calls
the HAB but ignores this value.

A fixed value of 0x1000 was being used for the entrypoint, which is too big for
really small artifacts, like bootscripts. This commit reduces the value to
0x100. This allows to sign and encrypt artifacts as small as 260 bytes.

Signed-off-by: Diaz de Grenu, Jose <Jose.DiazdeGrenu@digi.com>
2016-10-19 19:09:53 +02:00
Diaz de Grenu, Jose 934c819fd9 meta-digi-arm: sign/encrypt bootscript
https://jira.digi.com/browse/DUB-679

Signed-off-by: Diaz de Grenu, Jose <Jose.DiazdeGrenu@digi.com>
2016-10-19 10:47:09 +02:00
Diaz de Grenu, Jose 5c4df1ddfd trustfence: add support for signing and encrypting DTBs and ramdisks
This patch introduces some parameters which allow to select the type of image
to be signed. Currently the supported types are:

* linux kernel (-l)
* DTB (-d)
* initramfs (-i)

This also moves the CONFIG_PLATFORM environment variable to a parameter, for
consistency.

https://jira.digi.com/browse/DUB-614
https://jira.digi.com/browse/DUB-615

Signed-off-by: Diaz de Grenu, Jose <Jose.DiazdeGrenu@digi.com>
2016-10-19 10:33:08 +02:00
Diaz de Grenu, Jose 6b0fbddf3b meta-digi-arm: trustfence-sign-tools: simplify script usage outside Yocto
* Check number of arguments
* Add platform argument
* Read user configuration from .config file
* Remove unused variable (dek_blob_size)
* Remove noise in output messages

https://jira.digi.com/browse/DEL-2688

Signed-off-by: Diaz de Grenu, Jose <Jose.DiazdeGrenu@digi.com>
2016-09-12 18:07:28 +02:00
Diaz de Grenu, Jose c5df62cd05 meta-digi-arm: trustfence-sign-tools: avoid using 'xxd'
When writing the fake IVT table in raw, rely on tac (part of the core-utils
package) instead of on xxd.

https://jira.digi.com/browse/DEL-2688

Signed-off-by: Diaz de Grenu, Jose <Jose.DiazdeGrenu@digi.com>
2016-09-12 18:07:28 +02:00
Diaz de Grenu, Jose c8ec33129d meta-digi-arm: trustfence-sign-tools: add sign tools recipe
Add a recipe to include all signing and encryption tools for U-Boot and
kernel images to the SDK. Move existing trustfence kernel scripts to this
new recipe.

This allows to use these scripts not only from the Yocto build system but
also as standalone tools for image signing and encryption.

https://jira.digi.com/browse/DEL-2688

Signed-off-by: Diaz de Grenu, Jose <Jose.DiazdeGrenu@digi.com>
2016-09-12 18:07:28 +02:00