Re: [PATCH v7 3/3] imap-send: eliminate HMAC deprecation warnings on Mac OS X
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 18, 2013, 01:58 UTC
- Message-ID
- <7v4ne1vyjv.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1368837158-13915-4-git-send-email-sunshine@sunshineco.com>
Eric Sunshine <sunshine@sunshineco.com> writes:
Show 35 quoted lines
> From: David Aguilar <davvid@gmail.com> > > As of Mac OS X 10.7, Apple deprecated all OpenSSL functions due to > OpenSSL ABI instability. Silence the warnings by using Apple's > CommonCrypto HMAC replacement functions. > > [es: reworded commit message; eliminated abuse of > COMMON_DIGEST_FOR_OPENSSL by checking NO_APPLE_COMMON_CRYPTO instead] > > Signed-off-by: David Aguilar <davvid@gmail.com> > Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> > --- > imap-send.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/imap-send.c b/imap-send.c > index d9bcfb4..642448c 100644 > --- a/imap-send.c > +++ b/imap-send.c > @@ -29,8 +29,18 @@ > #ifdef NO_OPENSSL > typedef void *SSL; > #else > +#ifndef NO_APPLE_COMMON_CRYPTO > +#include <CommonCrypto/CommonHMAC.h> > +#define HMAC_CTX CCHmacContext > +#define HMAC_Init(hmac, key, len, algo) CCHmacInit(hmac, algo, key, len) > +#define HMAC_Update CCHmacUpdate > +#define HMAC_Final(hmac, hash, ptr) CCHmacFinal(hmac, hash) > +#define HMAC_CTX_cleanup > +#define EVP_md5() kCCHmacAlgMD5 > +#else > #include <openssl/evp.h> > #include <openssl/hmac.h> > +#endif
Doesn't this mean people on platforms that do not care what Apple does have to define NO_APPLE_COMMON_CRYPTO?
How about stopping this double-negation and do it more like this?
* In Makefile (1/3), in uname_S == Darwin section, define COMPAT_CFLAGS += DAPPLE_COMMON_CRYPTO by default, unless the builder declines it with "make NO_APPLE_COMMON_CRYPTO=NoThanks"
* Express this part as
#ifdef APPLE_COMMON_CRYPTO
... do the common crypto thing ...
#else
... everybody else ...
#endif> #include <openssl/x509v3.h> > #endif