On Tue, Jul 28, 2015 at 8:36 PM, James Almer <[email protected]> wrote: > Signed-off-by: James Almer <[email protected]> > --- > libavutil/hmac.c | 31 ++++++++++++++++++++++++++----- > libavutil/hmac.h | 2 ++ > 2 files changed, 28 insertions(+), 5 deletions(-) > > diff --git a/libavutil/hmac.c b/libavutil/hmac.c > index f87728e..318174e 100644 > --- a/libavutil/hmac.c > +++ b/libavutil/hmac.c > @@ -26,7 +26,7 @@ > #include "sha.h" > #include "mem.h" > > -#define MAX_HASHLEN 20 > +#define MAX_HASHLEN 32 > #define MAX_BLOCKLEN 64 > > struct AVHMAC { > @@ -39,11 +39,16 @@ struct AVHMAC { > int keylen; > }; > > -static av_cold void sha1_init(void *ctx) > -{ > - av_sha_init(ctx, 160); > +#define DEFINE_SHA(bits) \ > +static av_cold void sha ## bits ##_init(void *ctx) \ > +{ \ > + av_sha_init(ctx, bits); \ > } > > +DEFINE_SHA(160) > +DEFINE_SHA(224) > +DEFINE_SHA(256) > + > AVHMAC *av_hmac_alloc(enum AVHMACType type) > { > AVHMAC *c = av_mallocz(sizeof(*c)); > @@ -61,7 +66,23 @@ AVHMAC *av_hmac_alloc(enum AVHMACType type) > case AV_HMAC_SHA1: > c->blocklen = 64; > c->hashlen = 20; > - c->init = sha1_init; > + c->init = sha160_init; > + c->update = av_sha_update; > + c->final = av_sha_final; > + c->hash = av_sha_alloc(); > + break; > + case AV_HMAC_SHA224: > + c->blocklen = 64; > + c->hashlen = 28; > + c->init = sha224_init; > + c->update = av_sha_update; > + c->final = av_sha_final; > + c->hash = av_sha_alloc(); > + break; > + case AV_HMAC_SHA256: > + c->blocklen = 64; > + c->hashlen = 32; > + c->init = sha256_init; > c->update = av_sha_update; > c->final = av_sha_final; > c->hash = av_sha_alloc(); > diff --git a/libavutil/hmac.h b/libavutil/hmac.h > index 28c2062..1ed5626 100644 > --- a/libavutil/hmac.h > +++ b/libavutil/hmac.h > @@ -32,6 +32,8 @@ > enum AVHMACType { > AV_HMAC_MD5, > AV_HMAC_SHA1, > + AV_HMAC_SHA224, > + AV_HMAC_SHA256, > }; > > typedef struct AVHMAC AVHMAC; > -- > 2.4.6
SHA-2 is also SHA-384 and SHA-512, anything against just adding all of them for full SHA-2 coverage? - Hendrik _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
