diff --git a/Makefile.am b/Makefile.am
index 9b80791..b4f41d1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,8 +10,7 @@ libbrandt_la_SOURCES = \
fp_priv.c \
fp_pub.c \
mp_priv.c \
- mp_pub.c \
- util.c
+ mp_pub.c
libbrandt_la_LIBADD = \
-lgcrypt -lgpg-error -lgnunetutil
diff --git a/brandt.c b/brandt.c
index 86239a8..50ccb67 100644
--- a/brandt.c
+++ b/brandt.c
@@ -33,7 +33,12 @@ BRANDT_init (struct GNUNET_CRYPTO_EccDlogContext *dlogctx)
gcry_error_t err = 0;
if (!gcry_check_version ("1.7.0"))
- eprintf ("libgcrypt version mismatch");
+ {
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
+ "libbrandt",
+ "libgcrypt version mismatch\n");
+ GNUNET_assert (0);
+ }
/* SECMEM cannot be resized dynamically. We do not know how much we need */
if ((err = gcry_control (GCRYCTL_DISABLE_SECMEM, 0)))
diff --git a/crypto.c b/crypto.c
index 6c1b501..dea1617 100644
--- a/crypto.c
+++ b/crypto.c
@@ -32,6 +32,25 @@
#define CURVE "Ed25519"
+/**
+ * Log an error message at log-level 'error' that indicates a failure of the
+ * command 'cmd' with the message given by gcry_strerror(rc) and abort the
+ * programm.
+ */
+#define ASSERT_GCRY(cmd, rc) do { \
+ if (0 != rc) { \
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, \
+ "libbrandt", \
+ "`%s' failed at %s:%d with error: %s\n", \
+ cmd, \
+ __FILE__, \
+ __LINE__, \
+ gcry_strerror (rc)); \
+ GNUNET_abort_ (); \
+ } \
+} while (0)
+
+
struct zkp_challenge_dl {
struct ec_mpi g;
struct ec_mpi v;
@@ -79,7 +98,7 @@ brandt_crypto_init (struct GNUNET_CRYPTO_EccDlogContext *dlogctx)
ec_dlogctx = dlogctx;
rc = gcry_mpi_ec_new (&ec_ctx, NULL, CURVE);
- brandt_assert_gpgerr (rc);
+ ASSERT_GCRY ("gcry_mpi_ec_new", rc);
ec_gen = gcry_mpi_ec_get_point ("g", ec_ctx, 0);
brandt_assert (NULL != ec_gen);
@@ -113,10 +132,10 @@ ec_skey_create (gcry_mpi_t skey)
rc = gcry_sexp_build (&s_keyparam, NULL, "(genkey(ecc(curve \"" CURVE "\")"
"(flags)))");
- brandt_assert_gpgerr (rc);
+ ASSERT_GCRY ("gcry_sexp_build", rc);
rc = gcry_pk_genkey (&priv_sexp, s_keyparam);
- brandt_assert_gpgerr (rc);
+ ASSERT_GCRY ("gcry_pk_genkey", rc);
gcry_sexp_release (s_keyparam);
priv_key = gcry_sexp_find_token (priv_sexp, "private-key", 11);
@@ -148,7 +167,11 @@ ec_keypair_create (gcry_mpi_point_t pkey, gcry_mpi_t skey)
{
gcry_mpi_t sk;
- brandt_assert (NULL != pkey);
+ if (NULL == pkey)
+ {
+ GNUNET_break (NULL != pkey);
+ return;
+ }
sk = (NULL == skey) ? gcry_mpi_new (256) : skey;
ec_skey_create (sk);
@@ -271,7 +294,7 @@ mpi_serialize (struct ec_mpi *dst, gcry_mpi_t src)
rc = gcry_mpi_print (GCRYMPI_FMT_USG, (void *)dst,
sizeof (struct ec_mpi), &rsize, src);
- brandt_assert_gpgerr (rc);
+ ASSERT_GCRY ("gcry_mpi_print", rc);
/* Shift the output to the right, if shorter than available space */
if (rsize && rsize < sizeof (struct ec_mpi))
@@ -301,7 +324,7 @@ mpi_parse (gcry_mpi_t dst, const struct ec_mpi *src)
src,
sizeof (struct ec_mpi),
NULL);
- brandt_assert_gpgerr (rc);
+ ASSERT_GCRY ("gcry_mpi_scan", rc);
gcry_mpi_snatch (dst, ret);
}
@@ -324,15 +347,15 @@ ec_point_serialize (struct ec_mpi *dst, const gcry_mpi_point_t src)
brandt_assert (dst);
rc = gcry_sexp_build (&s, NULL, "(public-key(ecc(curve " CURVE ")))");
- brandt_assert_gpgerr (rc);
+ ASSERT_GCRY ("gcry_sexp_build", rc);
brandt_assert (NULL != s);
rc = gcry_mpi_ec_new (&ctx, s, NULL);
- brandt_assert_gpgerr (rc);
+ ASSERT_GCRY ("gcry_mpi_ec_new", rc);
gcry_sexp_release (s);
rc = gcry_mpi_ec_set_point ("q", src, ctx);
- brandt_assert_gpgerr (rc);
+ ASSERT_GCRY ("gcry_mpi_ec_set_point", rc);
q = gcry_mpi_ec_get_mpi ("q@eddsa", ctx, 0);
brandt_assert (NULL != q);
@@ -359,10 +382,10 @@ ec_point_parse (gcry_mpi_point_t dst, const struct ec_mpi *src)
rc = gcry_sexp_build (&s, NULL, "(public-key(ecc(curve " CURVE ")(q %b)))",
sizeof (struct ec_mpi), src);
- brandt_assert_gpgerr (rc);
+ ASSERT_GCRY ("gcry_sexp_build", rc);
rc = gcry_mpi_ec_new (&ctx, s, NULL);
- brandt_assert_gpgerr (rc);
+ ASSERT_GCRY ("gcry_mpi_ec_new", rc);
gcry_sexp_release (s);
ret = gcry_mpi_ec_get_point ("q", ctx, 0);
diff --git a/util.c b/util.c
deleted file mode 100644
index 76ceab8..0000000
--- a/util.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* This file is part of libbrandt.
- * Copyright (C) 2016 GNUnet e.V.
- *
- * libbrandt is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later
- * version.
- *
- * libbrandt is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * libbrandt. If not, see .
- */
-
-/**
- * @file util.c
- * @brief Implementation of common utility functions.
- * @author Markus Teich
- */
-
-#include "brandt_config.h"
-
-#include
-#include
-#include
-#include
-#include
-
-#include "util.h"
-
-
-static FILE *logstream = NULL;
-
-
-/**
- * setlog sets another output for logging.
- *
- * @param[in] stream The new logging target.
- */
-void
-setlog (FILE *stream)
-{
- logstream = stream;
-}
-
-
-/**
- * xvprintf prints a formatstring with prefix "libbrandt: ". If the format
- * string ends with a ':', the strerror() from errno.h output will be appended.
- * The output is always terminated with a newline.
- *
- * @param[in] fmt The format string
- * @param[in] ap The inputs to the format string
- */
-static void
-xvprintf (const char *fmt, va_list ap)
-{
- fputs ("libbrandt: ", logstream ? logstream : stderr);
-
- vfprintf (logstream ? logstream : stderr, fmt, ap);
-
- if (fmt[0] && fmt[strlen (fmt) - 1] == ':')
- {
- fputc (' ', logstream ? logstream : stderr);
- fputs (strerror (errno), logstream ? logstream : stderr);
- }
- else
- {
- fputc ('\n', logstream ? logstream : stderr);
- }
-}
-
-
-/**
- * eprintf prints an error message and then calls abort() to terminate the
- * process.
- *
- * @param[in] fmt The format string
- * @param[in] ... The inputs to the format string
- */
-void
-eprintf (const char *fmt, ...)
-{
- va_list ap;
-
- va_start (ap, fmt);
- xvprintf (fmt, ap);
- va_end (ap);
-
- abort ();
-}
-
-
-/**
- * weprintf prints a warning message
- *
- * @param[in] fmt The format string
- * @param[in] ... The inputs to the format string
- */
-void
-weprintf (const char *fmt, ...)
-{
- va_list ap;
-
- va_start (ap, fmt);
- xvprintf (fmt, ap);
- va_end (ap);
-}
diff --git a/util.h b/util.h
index 3c13cc4..2043557 100644
--- a/util.h
+++ b/util.h
@@ -23,52 +23,29 @@
#ifndef _BRANDT_UTIL_H
#define _BRANDT_UTIL_H
-void setlog (FILE *stream);
-void eprintf (const char *fmt, ...);
-void weprintf (const char *fmt, ...);
-#undef brandt_assert
-#undef brandt_assert_perror
-#undef brandt_assert_gpgerr
+#define brandt_assert(cond) do { if (!(cond)) { GNUNET_log_from ( \
+ GNUNET_ERROR_TYPE_ERROR, \
+ "libbrandt", \
+ "Assertion failed at %s:%d.\n", \
+ __FILE__, \
+ __LINE__); GNUNET_abort_ (); \
+ } } while (0)
+
#ifdef NDEBUG
-#define brandt_assert(expr) do { \
- (expr) ? (void)(0) : eprintf ( \
- "Assertion failed in file %s line %d function %s: %s", \
- __FILE__, \
- __LINE__, \
- __PRETTY_FUNCTION__, \
- (# expr)); \
-} while (0)
-
-#define brandt_assert_perror(errnum) do { \
- !(errnum) ? (void)(0) : eprintf ( \
- "Assertion failed in file %s line %d function %s:", \
- __FILE__, \
- __LINE__, \
- __PRETTY_FUNCTION__); \
-} while (0)
-
-#define brandt_assert_gpgerr(errnum) do { \
- !(errnum) ? (void)(0) : eprintf ( \
- "Assertion failed in file %s line %d function %s: %s", \
- __FILE__, \
- __LINE__, \
- __PRETTY_FUNCTION__, \
- gcry_strerror ((errnum))); \
-} while (0)
-
#define DP(point) ((void)(gcry_log_debugpnt (# point, point, ec_ctx)))
-#define DM(mpi) ((void)(gcry_log_debugmpi (# mpi, mpi)))
-#define DS(sexp) ((void)(gcry_log_debugsxp (# sexp, sexp)))
+#define DM(mpi) ((void)(gcry_log_debugmpi (# mpi, mpi)))
+#define DS(sexp) ((void)(gcry_log_debugsxp (# sexp, sexp)))
#else /* ifdef NDEBUG */
-#define brandt_assert(expr) ((void)(expr))
-#define brandt_assert_perror(errnum) ((void)(errnum))
-#define brandt_assert_gpgerr(errnum) ((void)(errnum))
+#define DP(point) ((void)(0))
+#define DM(mpi) ((void)(0))
+#define DS(sexp) ((void)(0))
#endif /* ifdef NDEBUG */
+
#endif /* ifndef _BRANDT_UTIL_H */