merge(third_party/git): Merge squashed git subtree at v2.23.0
Merge commit '1b593e1ea4
' as 'third_party/git'
This commit is contained in:
commit
7ef0d62730
3629 changed files with 1139935 additions and 0 deletions
96
third_party/git/compat/apple-common-crypto.h
vendored
Normal file
96
third_party/git/compat/apple-common-crypto.h
vendored
Normal file
|
@ -0,0 +1,96 @@
|
|||
/* suppress inclusion of conflicting openssl functions */
|
||||
#define OPENSSL_NO_MD5
|
||||
#define HEADER_HMAC_H
|
||||
#define HEADER_SHA_H
|
||||
#include <CommonCrypto/CommonHMAC.h>
|
||||
#define EVP_md5(...) kCCHmacAlgMD5
|
||||
/* CCHmac doesn't take md_len and the return type is void */
|
||||
#define HMAC git_CC_HMAC
|
||||
static inline unsigned char *git_CC_HMAC(CCHmacAlgorithm alg,
|
||||
const void *key, int key_len,
|
||||
const unsigned char *data, size_t data_len,
|
||||
unsigned char *md, unsigned int *md_len)
|
||||
{
|
||||
CCHmac(alg, key, key_len, data, data_len, md);
|
||||
return md;
|
||||
}
|
||||
|
||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
|
||||
#define APPLE_LION_OR_NEWER
|
||||
#include <Security/Security.h>
|
||||
/* Apple's TYPE_BOOL conflicts with config.c */
|
||||
#undef TYPE_BOOL
|
||||
#endif
|
||||
|
||||
#ifndef SHA1_MAX_BLOCK_SIZE
|
||||
#error Using Apple Common Crypto library requires setting SHA1_MAX_BLOCK_SIZE
|
||||
#endif
|
||||
|
||||
#ifdef APPLE_LION_OR_NEWER
|
||||
#define git_CC_error_check(pattern, err) \
|
||||
do { \
|
||||
if (err) { \
|
||||
die(pattern, (long)CFErrorGetCode(err)); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define EVP_EncodeBlock git_CC_EVP_EncodeBlock
|
||||
static inline int git_CC_EVP_EncodeBlock(unsigned char *out,
|
||||
const unsigned char *in, int inlen)
|
||||
{
|
||||
CFErrorRef err;
|
||||
SecTransformRef encoder;
|
||||
CFDataRef input, output;
|
||||
CFIndex length;
|
||||
|
||||
encoder = SecEncodeTransformCreate(kSecBase64Encoding, &err);
|
||||
git_CC_error_check("SecEncodeTransformCreate failed: %ld", err);
|
||||
|
||||
input = CFDataCreate(kCFAllocatorDefault, in, inlen);
|
||||
SecTransformSetAttribute(encoder, kSecTransformInputAttributeName,
|
||||
input, &err);
|
||||
git_CC_error_check("SecTransformSetAttribute failed: %ld", err);
|
||||
|
||||
output = SecTransformExecute(encoder, &err);
|
||||
git_CC_error_check("SecTransformExecute failed: %ld", err);
|
||||
|
||||
length = CFDataGetLength(output);
|
||||
CFDataGetBytes(output, CFRangeMake(0, length), out);
|
||||
|
||||
CFRelease(output);
|
||||
CFRelease(input);
|
||||
CFRelease(encoder);
|
||||
|
||||
return (int)strlen((const char *)out);
|
||||
}
|
||||
|
||||
#define EVP_DecodeBlock git_CC_EVP_DecodeBlock
|
||||
static int inline git_CC_EVP_DecodeBlock(unsigned char *out,
|
||||
const unsigned char *in, int inlen)
|
||||
{
|
||||
CFErrorRef err;
|
||||
SecTransformRef decoder;
|
||||
CFDataRef input, output;
|
||||
CFIndex length;
|
||||
|
||||
decoder = SecDecodeTransformCreate(kSecBase64Encoding, &err);
|
||||
git_CC_error_check("SecEncodeTransformCreate failed: %ld", err);
|
||||
|
||||
input = CFDataCreate(kCFAllocatorDefault, in, inlen);
|
||||
SecTransformSetAttribute(decoder, kSecTransformInputAttributeName,
|
||||
input, &err);
|
||||
git_CC_error_check("SecTransformSetAttribute failed: %ld", err);
|
||||
|
||||
output = SecTransformExecute(decoder, &err);
|
||||
git_CC_error_check("SecTransformExecute failed: %ld", err);
|
||||
|
||||
length = CFDataGetLength(output);
|
||||
CFDataGetBytes(output, CFRangeMake(0, length), out);
|
||||
|
||||
CFRelease(output);
|
||||
CFRelease(input);
|
||||
CFRelease(decoder);
|
||||
|
||||
return (int)strlen((const char *)out);
|
||||
}
|
||||
#endif /* APPLE_LION_OR_NEWER */
|
Loading…
Add table
Add a link
Reference in a new issue