[U-Boot] [PATCH 8/9] [v4] hash: Add function to find hash_algo struct with progressive hash
Simon Glass
sjg at chromium.org
Tue Jan 6 16:42:32 CET 2015
Hi Ruchika,
On 6 January 2015 at 02:38, Ruchika Gupta <ruchika.gupta at freescale.com> wrote:
> Hi Simon,
>
>> -----Original Message-----
>> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
>> Sent: Saturday, January 03, 2015 3:54 AM
>> To: Gupta Ruchika-R66431
>> Cc: U-Boot Mailing List; Sun York-R58495; Wolfgang Denk
>> Subject: Re: [PATCH 8/9] [v4] hash: Add function to find hash_algo struct
>> with progressive hash
>>
>> Hi Ruchika,
>>
>> On 30 December 2014 at 02:30, Ruchika Gupta <ruchika.gupta at freescale.com>
>> wrote:
>> > The hash_algo structure has some implementations in which progressive
>> > hash API's are not defined. These are basically the hardware based
>> > implementations of SHA. An API is added to find the algo which has
>> > progressive hash API's defined. This can then be integrated with RSA
>> > checksum library which uses Progressive Hash API's.
>> >
>> > Signed-off-by: Ruchika Gupta <ruchika.gupta at freescale.com>
>> > CC: Simon Glass <sjg at chromium.org>
>> > ---
>> > Changes in v4:
>> > Few cosmetic changes. Currently I have not replaced CONFIG_SHA1 with
>> CONFIG_CMD_SHA1SUM.
>> > Waiting for reply from Simon and Denx for the same.
>>
>> ./tools/buildman/buildman -b try-rsa MPC8308RDB boards.cfg is up to date.
>> Nothing to do.
>> Building 10 commits for 1 boards (1 thread, 32 jobs per thread)
>> 10 0 0 /10 MPC8308RDB
>> (try-rsa=458103: asc) u> ./tools/buildman/buildman -b try-rsa MPC8308RDB -sS
>> boards.cfg is up to date. Nothing to do.
>> Summary of 10 commits for 1 boards (1 thread, 32 jobs per thread)
>> 01: Merge branch 'master' of git://git.denx.de/u-boot-usb
>> 02: rsa: Split the rsa-verify to separate the modular exponentiation
>> 03: FIT: Modify option FIT_SIGNATURE in Kconfig
>> 04: DM: crypto/rsa: Add rsa Modular Exponentiation DM driver
>> 05: configs: Move CONFIG_FIT_SIGNATURE to defconfig
>> 06: lib/rsa: Modify rsa to use DM driver
>> 07: DM: crypto/fsl - Add Freescale rsa DM driver
>> 08: lib/rsa: Add Kconfig for devices supporting RSA Modular Exponentiation
>> 09: hash: Add function to find hash_algo struct with progressive hash
>> powerpc: (for 1/1 boards) all +208.0 data +28.0 text +180.0
>> 10: rsa: Use checksum algorithms from struct hash_algo (no errors to report)
>> (try-rsa=458103: asc) u>
>>
>> So this adds 180 bytes of code space. I really don't think that is a big
>> problem, so I think this patch is fine. I'll Wolfgang chime in if he
>> disagrees.
>>
>> >
>> > Changes in v3 :
>> > Corrected ifdef for SHA1
>> >
>> > Changes in v2 :
>> > Added commit message
>> >
>> > common/hash.c | 33 ++++++++++++++++++++++++--------- include/hash.h
>> > | 14 ++++++++++++++
>> > 2 files changed, 38 insertions(+), 9 deletions(-)
>> >
>> > diff --git a/common/hash.c b/common/hash.c index 12d6759..ea1ec60
>> > 100644
>> > --- a/common/hash.c
>> > +++ b/common/hash.c
>> > @@ -20,7 +20,7 @@
>> > #include <asm/io.h>
>> > #include <asm/errno.h>
>> >
>> > -#ifdef CONFIG_CMD_SHA1SUM
>> > +#ifdef CONFIG_SHA1
>> > static int hash_init_sha1(struct hash_algo *algo, void **ctxp) {
>> > sha1_context *ctx = malloc(sizeof(sha1_context)); @@ -125,12
>> > +125,7 @@ static struct hash_algo hash_algo[] = {
>> > CHUNKSZ_SHA256,
>> > },
>> > #endif
>> > - /*
>> > - * This is CONFIG_CMD_SHA1SUM instead of CONFIG_SHA1 since
>> otherwise
>> > - * it bloats the code for boards which use SHA1 but not the 'hash'
>> > - * or 'sha1sum' commands.
>> > - */
>> > -#ifdef CONFIG_CMD_SHA1SUM
>> > +#ifdef CONFIG_SHA1
>> > {
>> > "sha1",
>> > SHA1_SUM_LEN,
>> > @@ -140,7 +135,6 @@ static struct hash_algo hash_algo[] = {
>> > hash_update_sha1,
>> > hash_finish_sha1,
>> > },
>> > -#define MULTI_HASH
>> > #endif
>> > #ifdef CONFIG_SHA256
>> > {
>> > @@ -152,7 +146,6 @@ static struct hash_algo hash_algo[] = {
>> > hash_update_sha256,
>> > hash_finish_sha256,
>> > },
>> > -#define MULTI_HASH
>> > #endif
>> > {
>> > "crc32",
>> > @@ -165,6 +158,10 @@ static struct hash_algo hash_algo[] = {
>> > },
>> > };
>> >
>> > +#if defined(CONFIG_SHA256) || defined(CONFIG_CMD_SHA1SUM) #define
>> > +MULTI_HASH #endif
>> > +
>> > #if defined(CONFIG_HASH_VERIFY) || defined(CONFIG_CMD_HASH) #define
>> > MULTI_HASH #endif @@ -311,6 +308,24 @@ int hash_lookup_algo(const
>> > char *algo_name, struct hash_algo **algop)
>> > return -EPROTONOSUPPORT;
>> > }
>> >
>> > +int hash_progressive_lookup_algo(const char *algo_name,
>> > + struct hash_algo **algop) {
>> > + int i;
>> > +
>> > + for (i = 0; i < ARRAY_SIZE(hash_algo); i++) {
>> > + if (!strcmp(algo_name, hash_algo[i].name)) {
>> > + if (hash_algo[i].hash_init) {
>> > + *algop = &hash_algo[i];
>> > + return 0;
>> > + }
>> > + }
>> > + }
>>
>> Can't you just call hash_lookup_algo() and then check for hash_init?
> Hash_lookup_algo always searches from the start of hash_algo[]. So what you have suggested above wouldn't work.
OK I don't fully understand that, but let's go with what you have for
this series.
Regards,
Simon
More information about the U-Boot
mailing list