Commit Graph

39 Commits

Author SHA1 Message Date
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