diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2014-10-24 13:29:11 +0200 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2014-10-24 13:31:18 +0200 |
commit | d9c0dbb042fc86a939d7393342cd469abda746ac (patch) | |
tree | d387dd2cf848da568c38f0401f63e639d47e4d43 /src/hash/hash_common_crypto.h | |
parent | 943fde7f8c1d270c2f0b73ff52f07b91e1983390 (diff) | |
download | libgit2-cmn/common-crypto.tar.gz |
hash: use CommonCrypto on OSX for SHA-1cmn/common-crypto
OSX has its own cryptographic library, let's make use of it instead of
calling out to OpenSSL.
Diffstat (limited to 'src/hash/hash_common_crypto.h')
-rw-r--r-- | src/hash/hash_common_crypto.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/hash/hash_common_crypto.h b/src/hash/hash_common_crypto.h new file mode 100644 index 000000000..eeeddd0cc --- /dev/null +++ b/src/hash/hash_common_crypto.h @@ -0,0 +1,44 @@ +/* + * 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. + */ + +#ifndef INCLUDE_hash_common_crypto_h__ +#define INCLUDE_hash_common_crypto_h__ + +#include "hash.h" + +#include <CommonCrypto/CommonDigest.h> + +struct git_hash_ctx { + CC_SHA1_CTX c; +}; + +#define git_hash_global_init() 0 +#define git_hash_ctx_init(ctx) git_hash_init(ctx) +#define git_hash_ctx_cleanup(ctx) + +GIT_INLINE(int) git_hash_init(git_hash_ctx *ctx) +{ + assert(ctx); + CC_SHA1_Init(&ctx->c); + return 0; +} + +GIT_INLINE(int) git_hash_update(git_hash_ctx *ctx, const void *data, size_t len) +{ + assert(ctx); + CC_SHA1_Update(&ctx->c, data, len); + return 0; +} + +GIT_INLINE(int) git_hash_final(git_oid *out, git_hash_ctx *ctx) +{ + assert(ctx); + CC_SHA1_Final(out->id, &ctx->c); + return 0; +} + +#endif /* INCLUDE_hash_common_crypto_h__ */ |