From d7d271eb97e18bcfa6db9530ed9049d825032a77 Mon Sep 17 00:00:00 2001 From: Sarat Chand Savitala Date: Wed, 29 Apr 2015 17:10:19 +0530 Subject: [PATCH] sw_apps:zynqmp_fsbl: Fix to make decryption work when authentication disabled When authentication of partitions is not enabled, decryption is failing. This patch fixes this issue. Signed-off-by: Sarat Chand Savitala --- .../zynqmp_fsbl/src/xfsbl_partition_load.c | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_partition_load.c b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_partition_load.c index 8ffe7ede..32b8e082 100644 --- a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_partition_load.c +++ b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_partition_load.c @@ -885,16 +885,20 @@ static u32 XFsbl_PartitionValidation(XFsblPs * FsblInstancePtr, u32 DestinationCpu=0U; u32 ExecState=0U; u32 CpuNo=0U; - u32 ImageOffset = 0U; -#ifdef XFSBL_RSA - u32 Length=0U; + XFsblPs_PartitionHeader * PartitionHeader; +#if defined(XFSBL_RSA) u32 HashLen=0U; #endif - u64 LoadAddress=0U; - XFsblPs_PartitionHeader * PartitionHeader; +#if defined(XFSBL_AES) + u32 ImageOffset = 0U; u32 FsblIv[XIH_BH_IV_LENGTH / 4U]; u32 UnencryptedLength; u32 IvLocation; +#endif +#if defined(XFSBL_RSA) || defined(XFSBL_AES) + u32 Length=0U; + u64 LoadAddress=0U; +#endif /** * Update the variables @@ -967,6 +971,20 @@ static u32 XFsbl_PartitionValidation(XFsblPs * FsblInstancePtr, */ } +#if defined(XFSBL_RSA) || defined(XFSBL_AES) + if ((IsAuthenticationEnabled == TRUE) || (IsEncryptionEnabled == TRUE)) + { + LoadAddress = PartitionHeader->DestinationLoadAddress; + Length = PartitionHeader->TotalDataWordLength * 4U; + Status = XFsbl_GetLoadAddress(DestinationCpu, + &LoadAddress, Length); + if (XFSBL_SUCCESS != Status) + { + goto END; + } + } +#endif + /** * Authentication Check */ @@ -987,15 +1005,6 @@ static u32 XFsbl_PartitionValidation(XFsblPs * FsblInstancePtr, HashLen = XFSBL_HASH_TYPE_SHA3; } - LoadAddress = PartitionHeader->DestinationLoadAddress; - Length = PartitionHeader->TotalDataWordLength * 4U; - Status = XFsbl_GetLoadAddress(DestinationCpu, - &LoadAddress, Length); - if (XFSBL_SUCCESS != Status) - { - goto END; - } - /** * cache disbale can be removed */