Skip to content

Commit

Permalink
lib/rsa: Modify rsa to use DM driver
Browse files Browse the repository at this point in the history
Modify rsa_verify to use the rsa driver of DM library .The tools
will continue to use the same RSA sw library.

CONFIG_RSA is now dependent on CONFIG_DM. All configurations which
enable FIT based signatures have been modified to enable CONFIG_DM
by default.

Signed-off-by: Ruchika Gupta <[email protected]>
CC: Simon Glass <[email protected]>
Acked-by: Simon Glass <[email protected]>
  • Loading branch information
Ruchika Gupta authored and sjg20 committed Jan 30, 2015
1 parent 11a9662 commit c937ff6
Show file tree
Hide file tree
Showing 14 changed files with 35 additions and 6 deletions.
7 changes: 6 additions & 1 deletion README
Original file line number Diff line number Diff line change
Expand Up @@ -3176,8 +3176,13 @@ CBFS (Coreboot Filesystem) support
This enables the RSA algorithm used for FIT image verification
in U-Boot. See doc/uImage.FIT/signature.txt for more information.

The Modular Exponentiation algorithm in RSA is implemented using
driver model. So CONFIG_DM needs to be enabled by default for this
library to function.

The signing part is build into mkimage regardless of this
option.
option. The software based modular exponentiation is built into
mkimage irrespective of this option.

- bootcount support:
CONFIG_BOOTCOUNT_LIMIT
Expand Down
4 changes: 4 additions & 0 deletions configs/am335x_boneblack_vboot_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,7 @@ CONFIG_SYS_EXTRA_OPTIONS="EMMC_BOOT,ENABLE_VBOOT"
+S:CONFIG_TARGET_AM335X_EVM=y
CONFIG_OF_CONTROL=y
CONFIG_DEFAULT_DEVICE_TREE="am335x-boneblack"
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
CONFIG_FIT_SIGNATURE=y
CONFIG_DM=y
1 change: 1 addition & 0 deletions configs/ids8313_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ CONFIG_MPC83xx=y
CONFIG_FIT=y
CONFIG_FIT_SIGNATURE=y
CONFIG_TARGET_IDS8313=y
CONFIG_DM=y
1 change: 1 addition & 0 deletions configs/sandbox_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ CONFIG_OF_HOSTFILE=y
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
CONFIG_FIT_SIGNATURE=y
CONFIG_DM=y
CONFIG_DEFAULT_DEVICE_TREE="sandbox"
1 change: 1 addition & 0 deletions configs/zynq_microzed_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ CONFIG_OF_CONTROL=y
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
CONFIG_FIT_SIGNATURE=y
CONFIG_DM=y
CONFIG_DEFAULT_DEVICE_TREE="zynq-microzed"
1 change: 1 addition & 0 deletions configs/zynq_zc70x_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ CONFIG_DEFAULT_DEVICE_TREE="zynq-zc702"
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
CONFIG_FIT_SIGNATURE=y
CONFIG_DM=y
1 change: 1 addition & 0 deletions configs/zynq_zc770_xm010_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ CONFIG_DEFAULT_DEVICE_TREE="zynq-zc770-xm010"
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
CONFIG_FIT_SIGNATURE=y
CONFIG_DM=y
1 change: 1 addition & 0 deletions configs/zynq_zc770_xm012_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ CONFIG_DEFAULT_DEVICE_TREE="zynq-zc770-xm012"
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
CONFIG_FIT_SIGNATURE=y
CONFIG_DM=y
1 change: 1 addition & 0 deletions configs/zynq_zc770_xm013_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ CONFIG_DEFAULT_DEVICE_TREE="zynq-zc770-xm013"
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
CONFIG_FIT_SIGNATURE=y
CONFIG_DM=y
1 change: 1 addition & 0 deletions configs/zynq_zed_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ CONFIG_DEFAULT_DEVICE_TREE="zynq-zed"
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
CONFIG_FIT_SIGNATURE=y
CONFIG_DM=y
1 change: 1 addition & 0 deletions configs/zynq_zybo_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ CONFIG_DEFAULT_DEVICE_TREE="zynq-zybo"
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
CONFIG_FIT_SIGNATURE=y
CONFIG_DM=y
6 changes: 2 additions & 4 deletions include/configs/am335x_evm.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,11 @@
#include <configs/ti_am335x_common.h>

#ifndef CONFIG_SPL_BUILD
#ifndef CONFIG_FIT
# define CONFIG_FIT
#endif
# define CONFIG_TIMESTAMP
# define CONFIG_LZO
# ifdef CONFIG_ENABLE_VBOOT
# define CONFIG_FIT_SIGNATURE
# define CONFIG_RSA
# endif
#endif

#define CONFIG_SYS_BOOTM_LEN (16 << 20)
Expand Down
1 change: 0 additions & 1 deletion include/configs/sandbox.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@

#define CONFIG_BOOTSTAGE
#define CONFIG_BOOTSTAGE_REPORT
#define CONFIG_DM
#define CONFIG_CMD_DEMO
#define CONFIG_CMD_DM
#define CONFIG_DM_DEMO
Expand Down
14 changes: 14 additions & 0 deletions lib/rsa/rsa-verify.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <asm/errno.h>
#include <asm/types.h>
#include <asm/unaligned.h>
#include <dm.h>
#else
#include "fdt_host.h"
#include "mkimage.h"
Expand Down Expand Up @@ -43,6 +44,9 @@ static int rsa_verify_key(struct key_prop *prop, const uint8_t *sig,
const uint8_t *padding;
int pad_len;
int ret;
#if !defined(USE_HOSTCC)
struct udevice *mod_exp_dev;
#endif

if (!prop || !sig || !hash || !algo)
return -EIO;
Expand All @@ -63,7 +67,17 @@ static int rsa_verify_key(struct key_prop *prop, const uint8_t *sig,

uint8_t buf[sig_len];

#if !defined(USE_HOSTCC)
ret = uclass_get_device(UCLASS_MOD_EXP, 0, &mod_exp_dev);
if (ret) {
printf("RSA: Can't find Modular Exp implementation\n");
return -EINVAL;
}

ret = rsa_mod_exp(mod_exp_dev, sig, sig_len, prop, buf);
#else
ret = rsa_mod_exp_sw(sig, sig_len, prop, buf);
#endif
if (ret) {
debug("Error in Modular exponentation\n");
return ret;
Expand Down

0 comments on commit c937ff6

Please sign in to comment.