diff options
Diffstat (limited to 'include/my_md5.h')
-rw-r--r-- | include/my_md5.h | 94 |
1 files changed, 26 insertions, 68 deletions
diff --git a/include/my_md5.h b/include/my_md5.h index 4f90541067b..5a0c60e7bfa 100644 --- a/include/my_md5.h +++ b/include/my_md5.h @@ -1,7 +1,8 @@ #ifndef MY_MD5_INCLUDED #define MY_MD5_INCLUDED -/* Copyright (C) 2000 MySQL AB +/* Copyright (c) 2000, 2012, Oracle and/or its affiliates. + Copyright (c) 2013 Monty Program Ab This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,79 +17,36 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* See md5.c for explanation and copyright information. */ +#include "m_string.h" -/* - * $FreeBSD: src/contrib/cvs/lib/md5.h,v 1.2 1999/12/11 15:10:02 peter Exp $ - */ +#define MD5_HASH_SIZE 16 /* Hash size in bytes */ -#if defined(HAVE_YASSL) || defined(HAVE_OPENSSL) /* - Use MD5 implementation provided by the SSL libraries. + Wrapper function for MD5 implementation. */ - -#if defined(HAVE_YASSL) - -C_MODE_START - -void my_md5_hash(char *digest, const char *buf, int len); - -C_MODE_END - -#else /* HAVE_YASSL */ - -#include <openssl/md5.h> - -#define MY_MD5_HASH(digest, buf, len) \ -do { \ - MD5_CTX ctx; \ - MD5_Init (&ctx); \ - MD5_Update (&ctx, buf, len); \ - MD5_Final (digest, &ctx); \ -} while (0) - -#endif /* HAVE_YASSL */ - -#else /* HAVE_YASSL || HAVE_OPENSSL */ -/* Fallback to the MySQL's implementation. */ - -/* Unlike previous versions of this code, uint32 need not be exactly - 32 bits, merely 32 bits or more. Choosing a data type which is 32 - bits instead of 64 is not important; speed is considerably more - important. ANSI guarantees that "unsigned long" will be big enough, - and always using it seems to have few disadvantages. */ -typedef uint32 cvs_uint32; - -typedef struct { - cvs_uint32 buf[4]; - cvs_uint32 bits[2]; - unsigned char in[64]; -} my_MD5Context; - -C_MODE_START - -void my_MD5Init (my_MD5Context *context); -void my_MD5Update (my_MD5Context *context, - unsigned char const *buf, unsigned len); -void my_MD5Final (unsigned char digest[16], - my_MD5Context *context); - -C_MODE_END - -#define MY_MD5_HASH(digest,buf,len) \ -do { \ - my_MD5Context ctx; \ - my_MD5Init (&ctx); \ - my_MD5Update (&ctx, buf, len); \ - my_MD5Final (digest, &ctx); \ -} while (0) - -#endif /* defined(HAVE_YASSL) || defined(HAVE_OPENSSL) */ - -C_MODE_START +#ifdef __cplusplus +extern "C" { +#endif void compute_md5_hash(char *digest, const char *buf, int len); -C_MODE_END +/* + Convert an array of bytes to a hexadecimal representation. + + Used to generate a hexadecimal representation of a message digest. +*/ +static inline void array_to_hex(char *to, const unsigned char *str, uint len) +{ + const unsigned char *str_end= str + len; + for (; str != str_end; ++str) + { + *to++= _dig_vec_lower[((uchar) *str) >> 4]; + *to++= _dig_vec_lower[((uchar) *str) & 0x0F]; + } +} + +#ifdef __cplusplus +} +#endif #endif /* MY_MD5_INCLUDED */ |