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

8
#include "openssl.h"
9

10
int git_hash_sha1_global_init(void)
11 12 13 14
{
	return 0;
}

15
int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx)
16
{
17
	return git_hash_sha1_init(ctx);
18 19
}

20
void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx)
21 22 23 24
{
	GIT_UNUSED(ctx);
}

25
int git_hash_sha1_init(git_hash_sha1_ctx *ctx)
26 27 28 29 30 31 32 33 34 35 36
{
	assert(ctx);

	if (SHA1_Init(&ctx->c) != 1) {
		git_error_set(GIT_ERROR_SHA1, "hash_openssl: failed to initialize hash context");
		return -1;
	}

	return 0;
}

37
int git_hash_sha1_update(git_hash_sha1_ctx *ctx, const void *data, size_t len)
38 39 40 41 42 43 44 45 46 47 48
{
	assert(ctx);

	if (SHA1_Update(&ctx->c, data, len) != 1) {
		git_error_set(GIT_ERROR_SHA1, "hash_openssl: failed to update hash");
		return -1;
	}

	return 0;
}

49
int git_hash_sha1_final(git_oid *out, git_hash_sha1_ctx *ctx)
50 51 52 53 54 55 56 57 58 59
{
	assert(ctx);

	if (SHA1_Final(out->id, &ctx->c) != 1) {
		git_error_set(GIT_ERROR_SHA1, "hash_openssl: failed to finalize hash");
		return -1;
	}

	return 0;
}