summaryrefslogtreecommitdiff
path: root/libavutil
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2013-06-02 17:48:49 -0300
committerJames Almer <jamrial@gmail.com>2013-06-15 18:49:12 -0300
commitb6249acae6963691211af21dc262be7ac0d9b090 (patch)
tree237b514b8b095bfb5dab2bb2980dcc597a20bf8e /libavutil
parent194fde38349e0cf9020849d48d886ed804e4d714 (diff)
lavu/hash: Add support for SHA-2 512
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavutil')
-rw-r--r--libavutil/hash.c25
-rw-r--r--libavutil/hash.h2
-rw-r--r--libavutil/version.h4
3 files changed, 28 insertions, 3 deletions
diff --git a/libavutil/hash.c b/libavutil/hash.c
index 03c7ca3f06..11d8d05b72 100644
--- a/libavutil/hash.c
+++ b/libavutil/hash.c
@@ -25,6 +25,7 @@
#include "md5.h"
#include "murmur3.h"
#include "sha.h"
+#include "sha512.h"
#include "avstring.h"
#include "error.h"
@@ -37,6 +38,10 @@ enum hashtype {
SHA160,
SHA224,
SHA256,
+ SHA512_224,
+ SHA512_256,
+ SHA384,
+ SHA512,
CRC32,
ADLER32,
NUM_HASHES
@@ -58,6 +63,10 @@ struct {
[SHA160] = {"SHA160", 20},
[SHA224] = {"SHA224", 28},
[SHA256] = {"SHA256", 32},
+ [SHA512_224] = {"SHA512/224", 28},
+ [SHA512_256] = {"SHA512/256", 32},
+ [SHA384] = {"SHA384", 48},
+ [SHA512] = {"SHA512", 64},
[CRC32] = {"CRC32", 4},
[ADLER32] = {"adler32", 4},
};
@@ -96,6 +105,10 @@ int av_hash_alloc(AVHashContext **ctx, const char *name)
case SHA160:
case SHA224:
case SHA256: res->ctx = av_sha_alloc(); break;
+ case SHA512_224:
+ case SHA512_256:
+ case SHA384:
+ case SHA512: res->ctx = av_sha512_alloc(); break;
case CRC32: res->crctab = av_crc_get_table(AV_CRC_32_IEEE_LE); break;
case ADLER32: break;
}
@@ -115,6 +128,10 @@ void av_hash_init(AVHashContext *ctx)
case SHA160: av_sha_init(ctx->ctx, 160); break;
case SHA224: av_sha_init(ctx->ctx, 224); break;
case SHA256: av_sha_init(ctx->ctx, 256); break;
+ case SHA512_224: av_sha512_init(ctx->ctx, 224); break;
+ case SHA512_256: av_sha512_init(ctx->ctx, 256); break;
+ case SHA384: av_sha512_init(ctx->ctx, 384); break;
+ case SHA512: av_sha512_init(ctx->ctx, 512); break;
case CRC32: ctx->crc = UINT32_MAX; break;
case ADLER32: ctx->crc = 1; break;
}
@@ -128,6 +145,10 @@ void av_hash_update(AVHashContext *ctx, const uint8_t *src, int len)
case SHA160:
case SHA224:
case SHA256: av_sha_update(ctx->ctx, src, len); break;
+ case SHA512_224:
+ case SHA512_256:
+ case SHA384:
+ case SHA512: av_sha512_update(ctx->ctx, src, len); break;
case CRC32: ctx->crc = av_crc(ctx->crctab, ctx->crc, src, len); break;
case ADLER32: ctx->crc = av_adler32_update(ctx->crc, src, len); break;
}
@@ -141,6 +162,10 @@ void av_hash_final(AVHashContext *ctx, uint8_t *dst)
case SHA160:
case SHA224:
case SHA256: av_sha_final(ctx->ctx, dst); break;
+ case SHA512_224:
+ case SHA512_256:
+ case SHA384:
+ case SHA512: av_sha512_final(ctx->ctx, dst); break;
case CRC32: AV_WB32(dst, ctx->crc ^ UINT32_MAX); break;
case ADLER32: AV_WB32(dst, ctx->crc); break;
}
diff --git a/libavutil/hash.h b/libavutil/hash.h
index 5dd8712a3e..9bf715e1ac 100644
--- a/libavutil/hash.h
+++ b/libavutil/hash.h
@@ -58,7 +58,7 @@ const char *av_hash_get_name(const struct AVHashContext *ctx);
* with larger sizes will not be considered an ABI change and should not cause
* your code to overflow a buffer.
*/
-#define AV_HASH_MAX_SIZE 32
+#define AV_HASH_MAX_SIZE 64
/**
* Get the size of the resulting hash value in bytes.
diff --git a/libavutil/version.h b/libavutil/version.h
index ba5f14e79a..ff98c6985c 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -75,8 +75,8 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 52
-#define LIBAVUTIL_VERSION_MINOR 35
-#define LIBAVUTIL_VERSION_MICRO 101
+#define LIBAVUTIL_VERSION_MINOR 36
+#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \