]> git.proxmox.com Git - libgit2.git/blob - src/util/hash/sha.h
New upstream version 1.5.0+ds
[libgit2.git] / src / util / hash / sha.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_sha_h__
9 #define INCLUDE_hash_sha_h__
10
11 #include "git2_util.h"
12
13 typedef struct git_hash_sha1_ctx git_hash_sha1_ctx;
14 typedef struct git_hash_sha256_ctx git_hash_sha256_ctx;
15
16 #if defined(GIT_SHA1_COMMON_CRYPTO) || defined(GIT_SHA256_COMMON_CRYPTO)
17 # include "common_crypto.h"
18 #endif
19
20 #if defined(GIT_SHA1_OPENSSL) || defined(GIT_SHA256_OPENSSL)
21 # include "openssl.h"
22 #endif
23
24 #if defined(GIT_SHA1_WIN32) || defined(GIT_SHA256_WIN32)
25 # include "win32.h"
26 #endif
27
28 #if defined(GIT_SHA1_MBEDTLS) || defined(GIT_SHA256_MBEDTLS)
29 # include "mbedtls.h"
30 #endif
31
32 #if defined(GIT_SHA1_COLLISIONDETECT)
33 # include "collisiondetect.h"
34 #endif
35
36 #if defined(GIT_SHA256_BUILTIN)
37 # include "builtin.h"
38 #endif
39
40 /*
41 * SHA1
42 */
43
44 #define GIT_HASH_SHA1_SIZE 20
45
46 int git_hash_sha1_global_init(void);
47
48 int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx);
49 void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx);
50
51 int git_hash_sha1_init(git_hash_sha1_ctx *c);
52 int git_hash_sha1_update(git_hash_sha1_ctx *c, const void *data, size_t len);
53 int git_hash_sha1_final(unsigned char *out, git_hash_sha1_ctx *c);
54
55 /*
56 * SHA256
57 */
58
59 #define GIT_HASH_SHA256_SIZE 32
60
61 int git_hash_sha256_global_init(void);
62
63 int git_hash_sha256_ctx_init(git_hash_sha256_ctx *ctx);
64 void git_hash_sha256_ctx_cleanup(git_hash_sha256_ctx *ctx);
65
66 int git_hash_sha256_init(git_hash_sha256_ctx *c);
67 int git_hash_sha256_update(git_hash_sha256_ctx *c, const void *data, size_t len);
68 int git_hash_sha256_final(unsigned char *out, git_hash_sha256_ctx *c);
69
70 #endif