* a Linking Exception. For full terms see the included COPYING file.
*/
-#include "common.h"
#include "hash.h"
+int git_hash_global_init(void)
+{
+ return git_hash_sha1_global_init();
+}
+
+int git_hash_ctx_init(git_hash_ctx *ctx)
+{
+ int error;
+
+ if ((error = git_hash_sha1_ctx_init(&ctx->ctx.sha1)) < 0)
+ return error;
+
+ ctx->algo = GIT_HASH_ALGO_SHA1;
+
+ return 0;
+}
+
+void git_hash_ctx_cleanup(git_hash_ctx *ctx)
+{
+ switch (ctx->algo) {
+ case GIT_HASH_ALGO_SHA1:
+ git_hash_sha1_ctx_cleanup(&ctx->ctx.sha1);
+ return;
+ default:
+ /* unreachable */ ;
+ }
+}
+
+int git_hash_init(git_hash_ctx *ctx)
+{
+ switch (ctx->algo) {
+ case GIT_HASH_ALGO_SHA1:
+ return git_hash_sha1_init(&ctx->ctx.sha1);
+ default:
+ /* unreachable */ ;
+ }
+ GIT_ASSERT(0);
+ return -1;
+}
+
+int git_hash_update(git_hash_ctx *ctx, const void *data, size_t len)
+{
+ switch (ctx->algo) {
+ case GIT_HASH_ALGO_SHA1:
+ return git_hash_sha1_update(&ctx->ctx.sha1, data, len);
+ default:
+ /* unreachable */ ;
+ }
+ GIT_ASSERT(0);
+ return -1;
+}
+
+int git_hash_final(git_oid *out, git_hash_ctx *ctx)
+{
+ switch (ctx->algo) {
+ case GIT_HASH_ALGO_SHA1:
+ return git_hash_sha1_final(out, &ctx->ctx.sha1);
+ default:
+ /* unreachable */ ;
+ }
+ GIT_ASSERT(0);
+ return -1;
+}
+
int git_hash_buf(git_oid *out, const void *data, size_t len)
{
git_hash_ctx ctx;
error = git_hash_final(out, &ctx);
git_hash_ctx_cleanup(&ctx);
-
+
return error;
}