2 * Copyright (C) the libgit2 contributors. All rights reserved.
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.
8 #ifndef INCLUDE_hash_h__
9 #define INCLUDE_hash_h__
13 #include "hash/sha1.h"
21 GIT_HASH_ALGORITHM_NONE
= 0,
22 GIT_HASH_ALGORITHM_SHA1
23 } git_hash_algorithm_t
;
25 typedef struct git_hash_ctx
{
27 git_hash_sha1_ctx sha1
;
29 git_hash_algorithm_t algorithm
;
32 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
);
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
);
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
);
44 int git_hash_fmt(char *out
, unsigned char *hash
, size_t hash_len
);