[FFmpeg-devel] [PATCH] SHA-256 support

Kostya kostya.shishkov
Wed Jun 10 07:35:39 CEST 2009


On Tue, Jun 09, 2009 at 09:16:10PM +0200, Michael Niedermayer wrote:
> On Tue, Jun 09, 2009 at 09:32:24PM +0300, Kostya wrote:
> > On Tue, Jun 09, 2009 at 04:47:09PM +0200, Michael Niedermayer wrote:
> > > On Tue, Jun 09, 2009 at 08:13:40AM +0300, Kostya wrote:
> > [...]
> > > > /* Hash a single 512-bit block. This is the core of the algorithm. */
> > > > 
> > > > static void transform(uint32_t state[5], const uint8_t buffer[64])
> > > 
> > > doxy?
> >  
> > no
> 
> make it a yes please
 
you know, in this phrase punctiation can radically alter its meaning

[...]
> >  Makefile |    6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 9f3b5755dfe516571ef2196e1460c648e15423b1  sha2.patch
> > Index: libavutil/Makefile
> > ===================================================================
> > --- libavutil/Makefile	(revision 18770)
> > +++ libavutil/Makefile	(working copy)
> > @@ -17,7 +17,8 @@
> >            mem.h                                                         \
> >            pixfmt.h                                                      \
> >            rational.h                                                    \
> > -          sha1.h
> > +          sha1.h                                                        \
> > +          sha2.h
> 
> the sha2.h should also have a \ at the end so future patches are dont need to
> move the lack of a \ down
 
ok

[...]
> > 
> > void av_sha224_init(struct AVSHA256* context);
> > #define av_sha224_update av_sha_256_update
> > void av_sha224_final(struct AVSHA256* context, uint8_t digest[28]);
> > 
> > void av_sha256_init(struct AVSHA256* context);
> > void av_sha256_update(struct AVSHA256* context, const uint8_t* data, unsigned int len);
> > void av_sha256_final(struct AVSHA256* context, uint8_t digest[32]);
> 
> i think a int bits is nicer than 2 sets of functions
> it also might safe you from some comments about code duplication
 
why not, done
 
> [...]
> 
> > static void transform(uint32_t state[5], const uint8_t buffer[64])
> > {
> >     unsigned int i, a, b, c, d, e, f, g, h;
> >     uint32_t block[16];
> >     uint32_t T1, T2;
> > 
> >     a = state[0];
> >     b = state[1];
> >     c = state[2];
> >     d = state[3];
> >     e = state[4];
> >     f = state[5];
> >     g = state[6];
> >     h = state[7];
> > #if CONFIG_SMALL
> >     for (i = 0; i < 64; i++) {
> >         if (i < 16) {
> >             T1 = block[i] = be2me_32(((const uint32_t*)buffer)[i]);
> >         } else {
> >             block[i & 0xF] +=            block[(i +  9) & 0xF]
> >                             + sigma0_256(block[(i +  1) & 0xF])
> >                             + sigma1_256(block[(i + 14) & 0xF]);
> >             T1 = block[i & 0xF];
> 
> now you removed the other part of the optimization
> please restore the size of the block array and get rid of the & 0xF

Not removed.
The code I used (http://www.aarongifford.com/computers/sha2-1.0.tar.gz)
does not have such kind of optimization, so I have to add it myself.
Done though.

> [...]
> -- 
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sha2.patch
Type: text/x-diff
Size: 1428 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090610/8449f506/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sha2.h
Type: text/x-chdr
Size: 1693 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090610/8449f506/attachment.h>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sha2.c
Type: text/x-csrc
Size: 8688 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090610/8449f506/attachment.c>



More information about the ffmpeg-devel mailing list