public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Ruchika Gupta <ruchika.gupta@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 9/9] [v3] rsa: Use checksum algorithms from struct hash_algo
Date: Tue, 30 Dec 2014 08:58:50 +0000	[thread overview]
Message-ID: <1419929930304.17049@freescale.com> (raw)
In-Reply-To: <CAPnjgZ2DkqNvgSVqcygDF5RY4SAXUH3JE75UiM+LQUuqmFGuKQ@mail.gmail.com>

Hi Simon,

> -----Original Message-----
> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
> Sent: Tuesday, December 30, 2014 2:42 AM
> To: Gupta Ruchika-R66431
> Cc: U-Boot Mailing List; Sun York-R58495
> Subject: Re: [PATCH 9/9] [v3] rsa: Use checksum algorithms from struct
> hash_algo
> 
> Hi Ruchika,
> 
> On 29 December 2014 at 00:59, Ruchika Gupta <ruchika.gupta@freescale.com>
> wrote:
> > Hi Simon,
> >
> >> -----Original Message-----
> >> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
> >> Sent: Wednesday, December 24, 2014 6:20 AM
> >> To: Gupta Ruchika-R66431
> >> Cc: U-Boot Mailing List; Sun York-R58495
> >> Subject: Re: [PATCH 9/9] [v3] rsa: Use checksum algorithms from
> >> struct hash_algo
> >>
> >> Hi Ruchika,
> >>
> >> On 23 December 2014 at 04:32, Ruchika Gupta
> >> <ruchika.gupta@freescale.com>
> >> wrote:
> >> > Currently the hash functions used in RSA are called directly from
> >> > the
> >> > sha1 and sha256 libraries. Change the RSA checksum library to use
> >> > the progressive hash API's registered with struct hash_algo. This
> >> > will allow the checksum library to use the hardware accelerated
> >> > progressive hash
> >> API's once available.
> >> >
> >> > Signed-off-by: Ruchika Gupta <ruchika.gupta@freescale.com>
> >> > CC: Simon Glass <sjg@chromium.org>
> >> > ---
> >> > Changes in v3:
> >> > Modified rsa-verify to check for return from checksum function
> >> >
> >> > Changes in v2:
> >> > Added generic function hash_calculate. Pass an additional argument
> >> > as name of algorithm.
> >> >
> >> >  common/image-sig.c            |  6 ++---
> >> >  include/image.h               |  5 ++--
> >> >  include/u-boot/rsa-checksum.h |  7 +++---
> >> >  lib/rsa/rsa-checksum.c        | 53
> >> +++++++++++++++++++++++++++++++++++++++----
> >> >  lib/rsa/rsa-verify.c          |  7 +++++-
> >> >  5 files changed, 64 insertions(+), 14 deletions(-)
> >> >
> >> > diff --git a/common/image-sig.c b/common/image-sig.c index
> >> > 8601eda..2c9f0cd 100644
> >> > --- a/common/image-sig.c
> >> > +++ b/common/image-sig.c
> >> > @@ -38,7 +38,7 @@ struct checksum_algo checksum_algos[] = {  #if
> >> > IMAGE_ENABLE_SIGN
> >> >                 EVP_sha1,
> >> >  #endif
> >> > -               sha1_calculate,
> >> > +               hash_calculate,
> >> >                 padding_sha1_rsa2048,
> >> >         },
> >> >         {
> >> > @@ -48,7 +48,7 @@ struct checksum_algo checksum_algos[] = {  #if
> >> > IMAGE_ENABLE_SIGN
> >> >                 EVP_sha256,
> >> >  #endif
> >> > -               sha256_calculate,
> >> > +               hash_calculate,
> >> >                 padding_sha256_rsa2048,
> >> >         },
> >> >         {
> >> > @@ -58,7 +58,7 @@ struct checksum_algo checksum_algos[] = {  #if
> >> > IMAGE_ENABLE_SIGN
> >> >                 EVP_sha256,
> >> >  #endif
> >> > -               sha256_calculate,
> >> > +               hash_calculate,
> >> >                 padding_sha256_rsa4096,
> >> >         }
> >> >
> >> > diff --git a/include/image.h b/include/image.h index
> >> > af30d60..ec55f23
> >> > 100644
> >> > --- a/include/image.h
> >> > +++ b/include/image.h
> >> > @@ -926,8 +926,9 @@ struct checksum_algo {  #if IMAGE_ENABLE_SIGN
> >> >         const EVP_MD *(*calculate_sign)(void);  #endif
> >> > -       void (*calculate)(const struct image_region region[],
> >> > -                         int region_count, uint8_t *checksum);
> >> > +       int (*calculate)(const char *name,
> >> > +                        const struct image_region region[],
> >> > +                        int region_count, uint8_t *checksum);
> >> >         const uint8_t *rsa_padding;  };
> >> >
> >> > diff --git a/include/u-boot/rsa-checksum.h
> >> > b/include/u-boot/rsa-checksum.h index c996fb3..c546c80 100644
> >> > --- a/include/u-boot/rsa-checksum.h
> >> > +++ b/include/u-boot/rsa-checksum.h
> >> > @@ -16,9 +16,8 @@ extern const uint8_t padding_sha256_rsa4096[];
> >> > extern const uint8_t padding_sha256_rsa2048[];  extern const
> >> > uint8_t padding_sha1_rsa2048[];
> >> >
> >> > -void sha256_calculate(const struct image_region region[], int
> >> region_count,
> >> > -                     uint8_t *checksum);
> >> > -void sha1_calculate(const struct image_region region[], int
> region_count,
> >> > -                   uint8_t *checksum);
> >> > +int hash_calculate(const char *name,
> >> > +                  const struct image_region region[], int region_count,
> >> > +                  uint8_t *checksum);
> >> >
> >>
> >> This could use a function comment.
> >>
> >> >  #endif
> >> > diff --git a/lib/rsa/rsa-checksum.c b/lib/rsa/rsa-checksum.c index
> >> > 8d8b59f..7f1909a 100644
> >> > --- a/lib/rsa/rsa-checksum.c
> >> > +++ b/lib/rsa/rsa-checksum.c
> >> > @@ -10,12 +10,13 @@
> >> >  #include <asm/byteorder.h>
> >> >  #include <asm/errno.h>
> >> >  #include <asm/unaligned.h>
> >> > +#include <hash.h>
> >> >  #else
> >> >  #include "fdt_host.h"
> >> > -#endif
> >> > -#include <u-boot/rsa.h>
> >> >  #include <u-boot/sha1.h>
> >> >  #include <u-boot/sha256.h>
> >> > +#endif
> >> > +#include <u-boot/rsa.h>
> >> >
> >> >  /* PKCS 1.5 paddings as described in the RSA PKCS#1 v2.1 standard.
> >> > */
> >> >
> >> > @@ -136,7 +137,33 @@ const uint8_t
> >> > padding_sha256_rsa4096[RSA4096_BYTES -
> >> SHA256_SUM_LEN] = {
> >> >         0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20  };
> >> >
> >> > -void sha1_calculate(const struct image_region region[], int
> >> > region_count,
> >> > +#ifndef USE_HOSTCC
> >> > +int hash_calculate(const char *name,
> >> > +                   const struct image_region region[],
> >> > +                   int region_count, uint8_t *checksum) {
> >> > +       struct hash_algo *algo;
> >> > +       int ret = 0;
> >> > +       void *ctx;
> >> > +       uint32_t i;
> >> > +       i = 0;
> >> > +
> >> > +       ret = hash_progressive_lookup_algo(name, &algo);
> >> > +       if (ret)
> >> > +               return ret;
> >> > +
> >> > +       algo->hash_init(algo, &ctx);
> >> > +       for (i = 0; i < region_count - 1; i++)
> >> > +               algo->hash_update(algo, ctx, region[i].data,
> >> > + region[i].size, 0);
> >> > +
> >> > +       algo->hash_update(algo, ctx, region[i].data, region[i].size, 1);
> >> > +       algo->hash_finish(algo, ctx, checksum, algo->digest_size);
> >> > +
> >> > +       return 0;
> >> > +}
> >> > +
> >> > +#else
> >>
> >> The above looks good, but what is happening here? Why do you need to
> >> do something different for USE_HOSTCC?
> > The hash_algo struct is defined in common/hash.c which doesn?t get
> > compiled for tools. That is why I did it differently for USE_HOSTCC
> 
> I wonder if we should compile hash.c for tools? Would that be easier or
> harder?
I had tried doing that but it gave me loads of compilation errors. I thought it would be better to leave it for now.
> 
> [snip]
> 
> Regards,
> Simon

Regards,
Ruchika

      reply	other threads:[~2014-12-30  8:58 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-23 11:32 [U-Boot] [PATCH 0/9] [v3] rsa: Modify rsa lib to use hw acceleration Ruchika Gupta
2014-12-23 11:32 ` [U-Boot] [PATCH 1/9] [v3] rsa: Split the rsa-verify to separate the modular exponentiation Ruchika Gupta
2014-12-24  0:47   ` Simon Glass
2014-12-23 11:32 ` [U-Boot] [PATCH 2/9] [v3] FIT: Modify option FIT_SIGNATURE in Kconfig Ruchika Gupta
2014-12-24  0:47   ` Simon Glass
2014-12-23 11:32 ` [U-Boot] [PATCH 3/9] [v3] DM: crypto/rsa: Add rsa Modular Exponentiation DM driver Ruchika Gupta
2014-12-24  0:48   ` Simon Glass
2014-12-23 11:32 ` [U-Boot] [PATCH 4/9] [v3] configs: Move CONFIG_FIT_SIGNATURE to defconfig Ruchika Gupta
2014-12-24  0:48   ` Simon Glass
2014-12-23 11:32 ` [U-Boot] [PATCH 5/9] [v3] lib/rsa: Modify rsa to use DM driver if available Ruchika Gupta
2014-12-24  0:49   ` Simon Glass
     [not found]     ` <BY1PR0301MB1288C126892D064BE49D4E6FEF540@BY1PR0301MB1288.namprd03.prod.outlook.com>
2014-12-29 21:10       ` Simon Glass
2014-12-23 11:32 ` [U-Boot] [PATCH 6/9] [v3] DM: crypto/fsl - Add Freescale rsa DM driver Ruchika Gupta
2014-12-24  0:49   ` Simon Glass
2014-12-23 11:32 ` [U-Boot] [PATCH 7/9] [v3] lib/rsa: Add Kconfig option for HW accelerated RSA Ruchika Gupta
2014-12-24  0:49   ` Simon Glass
2014-12-29  7:05     ` Ruchika Gupta
2014-12-29 20:28       ` Simon Glass
2014-12-23 11:32 ` [U-Boot] [PATCH 8/9] [v3] hash: Add function to find hash_algo struct with progressive hash Ruchika Gupta
2014-12-24  0:50   ` Simon Glass
2014-12-29  7:07     ` Ruchika Gupta
2014-12-29 21:13       ` Simon Glass
2014-12-30  9:04         ` Ruchika Gupta
2014-12-23 11:32 ` [U-Boot] [PATCH 9/9] [v3] rsa: Use checksum algorithms from struct hash_algo Ruchika Gupta
2014-12-24  0:50   ` Simon Glass
     [not found]     ` <BY1PR0301MB1288E92E4FEF74B81F040302EF510@BY1PR0301MB1288.namprd03.prod.outlook.com>
2014-12-29  8:00       ` Ruchika Gupta
2014-12-29 21:12       ` Simon Glass
2014-12-30  8:58         ` Ruchika Gupta [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1419929930304.17049@freescale.com \
    --to=ruchika.gupta@freescale.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox