]> git.proxmox.com Git - libgit2.git/blob - src/hash.h
507c1cb256fd3a1a5709e151fe6a48bc5e1ed964
[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 "hash/sha1.h"
14
15 typedef struct {
16 void *data;
17 size_t len;
18 } git_str_vec;
19
20 typedef enum {
21 GIT_HASH_ALGORITHM_NONE = 0,
22 GIT_HASH_ALGORITHM_SHA1
23 } git_hash_algorithm_t;
24
25 typedef struct git_hash_ctx {
26 union {
27 git_hash_sha1_ctx sha1;
28 } ctx;
29 git_hash_algorithm_t algorithm;
30 } git_hash_ctx;
31
32 int git_hash_global_init(void);
33
34 int git_hash_ctx_init(git_hash_ctx *ctx, git_hash_algorithm_t algorithm);
35 void git_hash_ctx_cleanup(git_hash_ctx *ctx);
36
37 int git_hash_init(git_hash_ctx *c);
38 int git_hash_update(git_hash_ctx *c, const void *data, size_t len);
39 int git_hash_final(unsigned char *out, git_hash_ctx *c);
40
41 int git_hash_buf(unsigned char *out, const void *data, size_t len, git_hash_algorithm_t algorithm);
42 int git_hash_vec(unsigned char *out, git_str_vec *vec, size_t n, git_hash_algorithm_t algorithm);
43
44 int git_hash_fmt(char *out, unsigned char *hash, size_t hash_len);
45
46 #endif