]> git.proxmox.com Git - libgit2.git/blob - src/hash.h
New upstream version 1.3.0+dfsg.1
[libgit2.git] / src / hash.h
1 /*
2 * Copyright (C) the libgit2 contributors. All rights reserved.
3 *
4 * This file is part of libgit2, distributed under the GNU GPL v2 with
5 * a Linking Exception. For full terms see the included COPYING file.
6 */
7
8 #ifndef INCLUDE_hash_h__
9 #define INCLUDE_hash_h__
10
11 #include "common.h"
12
13 #include "git2/oid.h"
14
15 typedef struct {
16 void *data;
17 size_t len;
18 } git_buf_vec;
19
20 typedef enum {
21 GIT_HASH_ALGO_UNKNOWN = 0,
22 GIT_HASH_ALGO_SHA1,
23 } git_hash_algo_t;
24
25 #include "hash/sha1.h"
26
27 typedef struct git_hash_ctx {
28 union {
29 git_hash_sha1_ctx sha1;
30 } ctx;
31 git_hash_algo_t algo;
32 } git_hash_ctx;
33
34 int git_hash_global_init(void);
35
36 int git_hash_ctx_init(git_hash_ctx *ctx);
37 void git_hash_ctx_cleanup(git_hash_ctx *ctx);
38
39 int git_hash_init(git_hash_ctx *c);
40 int git_hash_update(git_hash_ctx *c, const void *data, size_t len);
41 int git_hash_final(git_oid *out, git_hash_ctx *c);
42
43 int git_hash_buf(git_oid *out, const void *data, size_t len);
44 int git_hash_vec(git_oid *out, git_buf_vec *vec, size_t n);
45
46 #endif