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

Reply via email to