]> git.proxmox.com Git - libgit2.git/blobdiff - src/hash.c
New upstream version 1.3.0+dfsg.1
[libgit2.git] / src / hash.c
index f3645a91393a57a36684664aefbdea60caa12c49..5a7278e4225673a9f615dc6fa2144a811eaf82eb 100644 (file)
@@ -5,9 +5,72 @@
  * 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;
@@ -20,7 +83,7 @@ int git_hash_buf(git_oid *out, const void *data, size_t len)
                error = git_hash_final(out, &ctx);
 
        git_hash_ctx_cleanup(&ctx);
-       
+
        return error;
 }