hash.h 1.08 KB
Newer Older
1
/*
Edward Thomson committed
2
 * Copyright (C) the libgit2 contributors. All rights reserved.
Vicent Marti committed
3 4 5
 *
 * This file is part of libgit2, distributed under the GNU GPL v2 with
 * a Linking Exception. For full terms see the included COPYING file.
6
 */
7

8 9 10
#ifndef INCLUDE_hash_h__
#define INCLUDE_hash_h__

11 12
#include "common.h"

13
#include "hash/sha1.h"
14

15 16 17
typedef struct {
	void *data;
	size_t len;
18
} git_str_vec;
19

20
typedef enum {
21 22 23
	GIT_HASH_ALGORITHM_NONE = 0,
	GIT_HASH_ALGORITHM_SHA1
} git_hash_algorithm_t;
24

25 26 27
typedef struct git_hash_ctx {
	union {
		git_hash_sha1_ctx sha1;
28
	} ctx;
29
	git_hash_algorithm_t algorithm;
30 31
} git_hash_ctx;

32 33
int git_hash_global_init(void);

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
#endif