Hello community,
here is the log from the commit of package booth for openSUSE:Factory checked in at 2015-07-21 13:27:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/booth (Old)
and /work/SRC/openSUSE:Factory/.booth.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "booth"
Changes:
--------
--- /work/SRC/openSUSE:Factory/booth/booth.changes 2015-07-14 17:44:47.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.booth.new/booth.changes 2015-07-21 13:29:04.000000000 +0200
@@ -1,0 +2,6 @@
+Sat Jul 18 10:09:17 UTC 2015 - dmuhamedagic@suse.com
+
+- Update to version v0.2.0_87_gf59231b:
+ + auth: add support for libgcrypt (bsc#938403)
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ booth.spec ++++++
--- /var/tmp/diff_new_pack.onF4LE/_old 2015-07-21 13:29:05.000000000 +0200
+++ /var/tmp/diff_new_pack.onF4LE/_new 2015-07-21 13:29:05.000000000 +0200
@@ -54,7 +54,7 @@
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: glib2-devel
-BuildRequires: mhash-devel
+BuildRequires: libgcrypt-devel
%if 0%{?fedora} || 0%{?centos} || 0%{?rhel}
BuildRequires: cluster-glue-libs-devel
BuildRequires: pacemaker-libs-devel
++++++ booth.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/.git_info new/booth/.git_info
--- old/booth/.git_info 2015-07-10 12:21:58.000000000 +0200
+++ new/booth/.git_info 2015-07-17 18:31:28.000000000 +0200
@@ -1 +1 @@
-v0.2.0-86-g62eee28
+v0.2.0-87-gf59231b
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/booth.spec new/booth/booth.spec
--- old/booth/booth.spec 2015-07-10 12:16:12.000000000 +0200
+++ new/booth/booth.spec 2015-07-17 18:08:48.000000000 +0200
@@ -37,7 +37,7 @@
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: glib2-devel
-BuildRequires: mhash-devel
+BuildRequires: libgcrypt-devel
%if 0%{?fedora} || 0%{?centos} || 0%{?rhel}
BuildRequires: cluster-glue-libs-devel
BuildRequires: pacemaker-libs-devel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/configure.ac new/booth/configure.ac
--- old/booth/configure.ac 2015-07-10 12:16:12.000000000 +0200
+++ new/booth/configure.ac 2015-07-17 18:08:48.000000000 +0200
@@ -69,11 +69,18 @@
AC_CHECK_LIB([nsl], [t_open])
AC_CHECK_LIB([gpl], [cl_log])
-# mhash for hmac
-mhash_installed="yes"
-AC_CHECK_HEADERS(mhash.h, , [mhash_installed="no"],)
-AC_CHECK_LIB(mhash, mhash_init, , [mhash_installed="no"])
-AM_CONDITIONAL(BUILD_AUTH_C, test "x${mhash_installed}" = "xyes")
+# libgcrypt or mhash for hmac
+libgcrypt_installed="yes"
+AC_CHECK_HEADERS(gcrypt.h, , [libgcrypt_installed="no"],)
+AC_CHECK_LIB(gcrypt, gcry_md_open, , [libgcrypt_installed="no"])
+AM_CONDITIONAL(BUILD_AUTH_C, test "x${libgcrypt_installed}" = "xyes")
+
+if test "x$libgcrypt_installed" = "xno"; then
+ mhash_installed="yes"
+ AC_CHECK_HEADERS(mhash.h, , [mhash_installed="no"],)
+ AC_CHECK_LIB(mhash, mhash_init, , [mhash_installed="no"])
+ AM_CONDITIONAL(BUILD_AUTH_C, test "x${mhash_installed}" = "xyes")
+fi
PKG_CHECK_MODULES(GLIB, [glib-2.0])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/src/auth.c new/booth/src/auth.c
--- old/booth/src/auth.c 2015-07-10 12:16:12.000000000 +0200
+++ new/booth/src/auth.c 2015-07-17 18:08:48.000000000 +0200
@@ -18,6 +18,60 @@
#include "auth.h"
+#if HAVE_LIBGCRYPT
+/* calculate the HMAC of the message in data and store it in result
+ * it is up to the caller to make sure that there's enough space
+ * at result for the MAC
+ */
+int calc_hmac(const void *data, size_t datalen,
+ int hid, unsigned char *result, char *key, int keylen)
+{
+ static gcry_md_hd_t digest;
+ gcry_error_t err;
+
+ if (!digest) {
+ err = gcry_md_open(&digest, hid, GCRY_MD_FLAG_HMAC);
+ if (err) {
+ log_error("gcry_md_open: %s", gcry_strerror(err));
+ return -1;
+ }
+ err = gcry_md_setkey(digest, key, keylen);
+ if (err) {
+ log_error("gcry_md_open: %s", gcry_strerror(err));
+ return -1;
+ }
+ }
+ gcry_md_write(digest, data, datalen);
+ memcpy(result, gcry_md_read(digest, 0), gcry_md_get_algo_dlen(hid));
+ gcry_md_reset(digest);
+ return 0;
+}
+
+/* test HMAC
+ */
+int verify_hmac(const void *data, size_t datalen,
+ int hid, unsigned char *hmac, char *key, int keylen)
+{
+ unsigned char *our_hmac;
+ int rc;
+
+ our_hmac = malloc(gcry_md_get_algo_dlen(hid));
+ if (!our_hmac)
+ return -1;
+
+ rc = calc_hmac(data, datalen, hid, our_hmac, key, keylen);
+ if (rc)
+ goto out_free;
+ rc = memcmp(our_hmac, hmac, gcry_md_get_algo_dlen(hid));
+
+out_free:
+ if (our_hmac)
+ free(our_hmac);
+ return rc;
+}
+#endif
+
+#if HAVE_LIBMHASH
/* calculate the HMAC of the message in data and store it in result
* it is up to the caller to make sure that there's enough space
* at result for the MAC
@@ -72,3 +126,5 @@
free(our_hmac);
return rc;
}
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/src/auth.h new/booth/src/auth.h
--- old/booth/src/auth.h 2015-07-10 12:16:12.000000000 +0200
+++ new/booth/src/auth.h 2015-07-17 18:08:48.000000000 +0200
@@ -17,9 +17,23 @@
*/
#include "b_config.h"
+#include "log.h"
#include