From 3c5a73d29ec4de0e22d03e5a1c15af4f096e5cbb Mon Sep 17 00:00:00 2001 From: James Booth Date: Wed, 21 May 2014 20:35:01 +0100 Subject: [PATCH] Use libgcrypt instead of libgnutls for SHA1 hashing --- configure.ac | 7 +++---- src/common.c | 17 ++++++----------- src/profanity.c | 3 --- 3 files changed, 9 insertions(+), 18 deletions(-) diff --git a/configure.ac b/configure.ac index f94adcb7..c9886277 100644 --- a/configure.ac +++ b/configure.ac @@ -122,8 +122,7 @@ PKG_CHECK_MODULES([glib], [glib-2.0 >= 2.26], [], [AC_MSG_ERROR([glib 2.26 or higher is required for profanity])]) PKG_CHECK_MODULES([curl], [libcurl], [], [AC_MSG_ERROR([libcurl is required for profanity])]) -PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.8.0], [], - [AC_MSG_ERROR([gnutls is required for profanity])]) +AX_LIB_GCRYPT([yes]) AS_IF([test "x$PLATFORM" = xosx], [LIBS="$LIBS -lcurl"]) @@ -219,9 +218,9 @@ AC_CHECK_HEADERS([ncurses.h], [], []) AM_CFLAGS="-Wall -Wno-deprecated-declarations" AS_IF([test "x$PACKAGE_STATUS" = xdevelopment], [AM_CFLAGS="$AM_CFLAGS -Wunused -Werror"]) -AM_CPPFLAGS="$AM_CPPFLAGS $glib_CFLAGS $curl_CFLAGS $libnotify_CFLAGS $LIBGNUTLS_CFLAGS" +AM_CPPFLAGS="$AM_CPPFLAGS $glib_CFLAGS $curl_CFLAGS $libnotify_CFLAGS $GCRYPT_CFLAGS" AM_CPPFLAGS="$AM_CPPFLAGS -DTHEMES_PATH=\"\\\"$THEMES_PATH\\\"\"" -LIBS="$LIBS $glib_LIBS $curl_LIBS $libnotify_LIBS $LIBGNUTLS_LIBS" +LIBS="$LIBS $glib_LIBS $curl_LIBS $libnotify_LIBS $GCRYPT_LIBS" AC_SUBST(AM_CFLAGS) AC_SUBST(AM_CPPFLAGS) diff --git a/src/common.c b/src/common.c index 260dec1a..4ad7f0bd 100644 --- a/src/common.c +++ b/src/common.c @@ -31,8 +31,7 @@ #include #include #include -#include -#include +#include #include "log.h" #include "common.h" @@ -393,16 +392,12 @@ generate_unique_id(char *prefix) char * sha1_hash(char *str) { - gnutls_hash_hd_t dig; - gnutls_digest_algorithm_t algorithm = GNUTLS_DIG_SHA1; + int msg_length = strlen(str); + int hash_length = gcry_md_get_algo_dlen(GCRY_MD_SHA1); + unsigned char hash[ hash_length ]; + gcry_md_hash_buffer(GCRY_MD_SHA1, hash, str, msg_length); - gnutls_hash_init(&dig, algorithm); - gnutls_hash(dig, str, strlen(str)); - - unsigned char output[20]; - gnutls_hash_output(dig, output); - - return g_base64_encode(output, sizeof(output)); + return g_base64_encode(hash, sizeof(hash)); } int diff --git a/src/profanity.c b/src/profanity.c index ce0ee431..209289e2 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -31,7 +31,6 @@ #include #include -#include #include "profanity.h" #include "chat_session.h" @@ -258,7 +257,6 @@ _init(const int disable_tls, char *log_level) setlocale(LC_ALL, ""); // ignore SIGPIPE signal(SIGPIPE, SIG_IGN); - gnutls_global_init(); _create_directories(); log_level_t prof_log_level = log_level_from_string(log_level); prefs_load(); @@ -307,7 +305,6 @@ _shutdown(void) accounts_close(); cmd_uninit(); log_close(); - gnutls_global_deinit(); } static void