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 	assert(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 	assert(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 	assert(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