# include <CommonCrypto/CommonDigest.h>
#elif defined(HAVE_GNUTLS)
# include <gnutls/crypto.h>
+# include "md5-internal.h"
#else
# include "md5-internal.h"
#endif /* __APPLE__ */
if (!strcmp(algorithm, "md5"))
- alg = GNUTLS_DIG_MD5;
+ {
+ /*
+ * Some versions of GNU TLS disable MD5 without warning...
+ */
+
+ _cups_md5_state_t state; /* MD5 state info */
+
+ if (hashsize < 16)
+ goto too_small;
+
+ _cupsMD5Init(&state);
+ _cupsMD5Append(&state, data, datalen);
+ _cupsMD5Finish(&state, hash);
+
+ return (16);
+ }
else if (!strcmp(algorithm, "sha"))
alg = GNUTLS_DIG_SHA1;
else if (!strcmp(algorithm, "sha2-224"))
{
_cups_md5_state_t state; /* MD5 state info */
+ if (hashsize < 16)
+ goto too_small;
+
_cupsMD5Init(&state);
_cupsMD5Append(&state, data, datalen);
_cupsMD5Finish(&state, hash);
#include "md5-internal.h"
#include "string-private.h"
-#if !defined(__APPLE__) && !defined(HAVE_GNUTLS)
+#if !defined(__APPLE__)
# define T1 0xd76aa478
# define T2 0xe8c7b756
# define T3 0x242070db
for (i = 0; i < 16; ++i)
digest[i] = (unsigned char)(pms->abcd[i >> 2] >> ((i & 3) << 3));
}
-#endif /* !__APPLE__ && !HAVE_GNUTLS */
+#endif /* !__APPLE__ */