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 #include "openssl.h"
9
git_hash_sha1_global_init(void)10 int git_hash_sha1_global_init(void)
11 {
12 return 0;
13 }
14
git_hash_sha1_ctx_init(git_hash_sha1_ctx * ctx)15 int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx)
16 {
17 return git_hash_sha1_init(ctx);
18 }
19
git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx * ctx)20 void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx)
21 {
22 GIT_UNUSED(ctx);
23 }
24
git_hash_sha1_init(git_hash_sha1_ctx * ctx)25 int git_hash_sha1_init(git_hash_sha1_ctx *ctx)
26 {
27 GIT_ASSERT_ARG(ctx);
28
29 if (SHA1_Init(&ctx->c) != 1) {
30 git_error_set(GIT_ERROR_SHA1, "hash_openssl: failed to initialize hash context");
31 return -1;
32 }
33
34 return 0;
35 }
36
git_hash_sha1_update(git_hash_sha1_ctx * ctx,const void * data,size_t len)37 int git_hash_sha1_update(git_hash_sha1_ctx *ctx, const void *data, size_t len)
38 {
39 GIT_ASSERT_ARG(ctx);
40
41 if (SHA1_Update(&ctx->c, data, len) != 1) {
42 git_error_set(GIT_ERROR_SHA1, "hash_openssl: failed to update hash");
43 return -1;
44 }
45
46 return 0;
47 }
48
git_hash_sha1_final(git_oid * out,git_hash_sha1_ctx * ctx)49 int git_hash_sha1_final(git_oid *out, git_hash_sha1_ctx *ctx)
50 {
51 GIT_ASSERT_ARG(ctx);
52
53 if (SHA1_Final(out->id, &ctx->c) != 1) {
54 git_error_set(GIT_ERROR_SHA1, "hash_openssl: failed to finalize hash");
55 return -1;
56 }
57
58 return 0;
59 }
60