mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
cmd: blob: Instantiate RNG before running CMD_BLOB
U-Boot can instantiate CAAM RNG if needed by crypto operations. Call sec_init() prior running a blob operation to ensure RNG is correctly instantiated. Make sure CAAM clock is enabled and check if a job ring is available for that operation. Signed-off-by: Breno Lima <breno.lima@nxp.com> Reviewed-by: Ye Li <ye.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
parent
4e682d555d
commit
81d5605a86
2 changed files with 17 additions and 0 deletions
14
cmd/blob.c
14
cmd/blob.c
|
@ -9,6 +9,10 @@
|
|||
#include <malloc.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <linux/compiler.h>
|
||||
#if defined(CONFIG_ARCH_MX6) || defined(CONFIG_ARCH_MX7)
|
||||
#include <fsl_sec.h>
|
||||
#include <asm/arch/clock.h>
|
||||
#endif
|
||||
|
||||
/**
|
||||
* blob_decap() - Decapsulate the data as a blob
|
||||
|
@ -74,6 +78,16 @@ static int do_blob(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||
src_ptr = (uint8_t *)(uintptr_t)src_addr;
|
||||
dst_ptr = (uint8_t *)(uintptr_t)dst_addr;
|
||||
|
||||
#if defined(CONFIG_ARCH_MX6) || defined(CONFIG_ARCH_MX7)
|
||||
|
||||
hab_caam_clock_enable(1);
|
||||
|
||||
u32 out_jr_size = sec_in32(CONFIG_SYS_FSL_JR0_ADDR +
|
||||
FSL_CAAM_ORSR_JRa_OFFSET);
|
||||
if (out_jr_size != FSL_CAAM_MAX_JR_SIZE)
|
||||
sec_init();
|
||||
#endif
|
||||
|
||||
if (enc)
|
||||
ret = blob_encap(km_ptr, src_ptr, dst_ptr, len);
|
||||
else
|
||||
|
|
|
@ -344,6 +344,9 @@ struct sg_entry {
|
|||
#define FSL_CAAM_MP_PRVK_BYTES 32
|
||||
#define FSL_CAAM_MP_MES_DGST_BYTES 32
|
||||
|
||||
#define FSL_CAAM_ORSR_JRa_OFFSET 0x102c
|
||||
#define FSL_CAAM_MAX_JR_SIZE 4
|
||||
|
||||
/* blob_dek:
|
||||
* Encapsulates the src in a secure blob and stores it dst
|
||||
* @src: reference to the plaintext
|
||||
|
|
Loading…
Reference in a new issue