gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] 06/08: [wip, #7267] more refined age commitment conflic


From: gnunet
Subject: [taler-exchange] 06/08: [wip, #7267] more refined age commitment conflict response during deposit
Date: Wed, 13 Dec 2023 14:53:06 +0100

This is an automated email from the git hooks/post-receive script.

oec pushed a commit to branch master
in repository exchange.

commit 227dc29fcd78f0cd6b394ff2716c548f9be2adb6
Author: Özgür Kesim <oec-taler@kesim.org>
AuthorDate: Wed Dec 13 14:33:23 2023 +0100

    [wip, #7267] more refined age commitment conflict response during deposit
    
    Distinguish between and communicate:
    
    a) null hash value expected, got non-null
    b) non-null hash value expected, got null
    c) hash value of known coin differ from given
---
 src/exchange/taler-exchange-httpd_db.c        |   8 +-
 src/exchange/taler-exchange-httpd_responses.c |  32 +-
 src/exchange/taler-exchange-httpd_responses.h |   3 +
 src/exchangedb/pg_batch_ensure_coin_known.c   | 222 ++++---
 src/exchangedb/pg_ensure_coin_known.c         |  23 +-
 src/include/taler_exchangedb_plugin.h         | 812 ++++++++++++++------------
 6 files changed, 586 insertions(+), 514 deletions(-)

diff --git a/src/exchange/taler-exchange-httpd_db.c 
b/src/exchange/taler-exchange-httpd_db.c
index a00a9785..5be12a50 100644
--- a/src/exchange/taler-exchange-httpd_db.c
+++ b/src/exchange/taler-exchange-httpd_db.c
@@ -22,6 +22,7 @@
 #include <pthread.h>
 #include <jansson.h>
 #include <gnunet/gnunet_json_lib.h>
+#include "taler_exchangedb_plugin.h"
 #include "taler_json_lib.h"
 #include "taler_mhd_lib.h"
 #include "taler_exchangedb_lib.h"
@@ -37,7 +38,7 @@ TEH_make_coin_known (const struct TALER_CoinPublicInfo *coin,
 {
   enum TALER_EXCHANGEDB_CoinKnownStatus cks;
   struct TALER_DenominationHashP h_denom_pub;
-  struct TALER_AgeCommitmentHash h_age_commitment;
+  struct TALER_AgeCommitmentHash h_age_commitment = {{{0}}};
 
   /* make sure coin is 'known' in database */
   cks = TEH_plugin->ensure_coin_known (TEH_plugin->cls,
@@ -69,10 +70,13 @@ TEH_make_coin_known (const struct TALER_CoinPublicInfo 
*coin,
       &h_denom_pub,
       &coin->coin_pub);
     return GNUNET_DB_STATUS_HARD_ERROR;
-  case TALER_EXCHANGEDB_CKS_AGE_CONFLICT:
+  case TALER_EXCHANGEDB_CKS_AGE_CONFLICT_EXPECTED_NULL:
+  case TALER_EXCHANGEDB_CKS_AGE_CONFLICT_EXPECTED_NON_NULL:
+  case TALER_EXCHANGEDB_CKS_AGE_CONFLICT_VALUE_DIFFERS:
     *mhd_ret = TEH_RESPONSE_reply_coin_age_commitment_conflict (
       connection,
       TALER_EC_EXCHANGE_GENERIC_COIN_CONFLICTING_AGE_HASH,
+      cks,
       &h_denom_pub,
       &coin->coin_pub,
       &h_age_commitment);
diff --git a/src/exchange/taler-exchange-httpd_responses.c 
b/src/exchange/taler-exchange-httpd_responses.c
index c1aa9db6..2d8dede5 100644
--- a/src/exchange/taler-exchange-httpd_responses.c
+++ b/src/exchange/taler-exchange-httpd_responses.c
@@ -23,9 +23,11 @@
  * @author Christian Grothoff
  */
 #include "platform.h"
+#include <gnunet/gnunet_json_lib.h>
 #include <microhttpd.h>
 #include <zlib.h>
 #include "taler-exchange-httpd_responses.h"
+#include "taler_exchangedb_plugin.h"
 #include "taler_util.h"
 #include "taler_json_lib.h"
 #include "taler_mhd_lib.h"
@@ -181,10 +183,31 @@ MHD_RESULT
 TEH_RESPONSE_reply_coin_age_commitment_conflict (
   struct MHD_Connection *connection,
   enum TALER_ErrorCode ec,
+  enum TALER_EXCHANGEDB_CoinKnownStatus status,
   const struct TALER_DenominationHashP *h_denom_pub,
   const struct TALER_CoinSpendPublicKeyP *coin_pub,
-  const struct TALER_AgeCommitmentHash *h_age_commitment_hash)
+  const struct TALER_AgeCommitmentHash *h_age_commitment)
 {
+  const struct TALER_AgeCommitmentHash *hac = h_age_commitment;
+  const char *conflict_detail;
+
+  switch (status)
+  {
+
+  case TALER_EXCHANGEDB_CKS_AGE_CONFLICT_EXPECTED_NULL:
+    conflict_detail = "expected NULL age commitment hash";
+    hac = NULL;
+    break;
+  case TALER_EXCHANGEDB_CKS_AGE_CONFLICT_EXPECTED_NON_NULL:
+    conflict_detail = "unexpected NULL age commitment hash";
+    break;
+  case TALER_EXCHANGEDB_CKS_AGE_CONFLICT_VALUE_DIFFERS:
+    conflict_detail = "expected age commitment hash differs";
+    break;
+  default:
+    GNUNET_assert (0);
+  }
+
   return TALER_MHD_REPLY_JSON_PACK (
     connection,
     TALER_ErrorCode_get_http_status_safe (ec),
@@ -193,8 +216,11 @@ TEH_RESPONSE_reply_coin_age_commitment_conflict (
                                 coin_pub),
     GNUNET_JSON_pack_data_auto ("h_denom_pub",
                                 h_denom_pub),
-    GNUNET_JSON_pack_data_auto ("h_age_commitment_hash",
-                                h_age_commitment_hash)
+    GNUNET_JSON_pack_allow_null (
+      GNUNET_JSON_pack_data_auto ("expected_age_commitment_hash",
+                                  hac)),
+    GNUNET_JSON_pack_string ("conflict_detail",
+                             conflict_detail)
     );
 }
 
diff --git a/src/exchange/taler-exchange-httpd_responses.h 
b/src/exchange/taler-exchange-httpd_responses.h
index 5fe106e1..b10a7282 100644
--- a/src/exchange/taler-exchange-httpd_responses.h
+++ b/src/exchange/taler-exchange-httpd_responses.h
@@ -31,6 +31,7 @@
 #include "taler_error_codes.h"
 #include "taler-exchange-httpd.h"
 #include "taler-exchange-httpd_db.h"
+#include "taler_exchangedb_plugin.h"
 
 
 /**
@@ -167,6 +168,7 @@ TEH_RESPONSE_reply_coin_insufficient_funds (
  *
  * @param connection connection to the client
  * @param ec error code to return
+ * @param cks specific conflict type
  * @param h_denom_pub hash of the denomination of the coin
  * @param coin_pub public key of the coin
  * @param h_age_commitment hash of the age commitment as found in the database
@@ -176,6 +178,7 @@ MHD_RESULT
 TEH_RESPONSE_reply_coin_age_commitment_conflict (
   struct MHD_Connection *connection,
   enum TALER_ErrorCode ec,
+  enum TALER_EXCHANGEDB_CoinKnownStatus cks,
   const struct TALER_DenominationHashP *h_denom_pub,
   const struct TALER_CoinSpendPublicKeyP *coin_pub,
   const struct TALER_AgeCommitmentHash *h_age_commitment);
diff --git a/src/exchangedb/pg_batch_ensure_coin_known.c 
b/src/exchangedb/pg_batch_ensure_coin_known.c
index e4981306..aca2732c 100644
--- a/src/exchangedb/pg_batch_ensure_coin_known.c
+++ b/src/exchangedb/pg_batch_ensure_coin_known.c
@@ -17,10 +17,14 @@
  * @file exchangedb/pg_batch_ensure_coin_known.c
  * @brief Implementation of the batch_ensure_coin_known function for Postgres
  * @author Christian Grothoff
+ *
+ * FIXME: use the array support for postgres to simplify this code!
+ *
  */
 #include "platform.h"
 #include "taler_error_codes.h"
 #include "taler_dbevents.h"
+#include "taler_exchangedb_plugin.h"
 #include "taler_pq_lib.h"
 #include "pg_batch_ensure_coin_known.h"
 #include "pg_helper.h"
@@ -93,14 +97,37 @@ insert1 (struct PostgresClosure *pg,
     result[0].denom_conflict = true;
   }
 
-  if ( (! is_age_hash_null) &&
-       (0 != GNUNET_memcmp (&result[0].h_age_commitment,
-                            &coin->h_age_commitment)) )
+  if ( (! is_denom_pub_hash_null) &&
+       (0 != GNUNET_memcmp (&result[0].denom_hash,
+                            &coin[0].denom_pub_hash)) )
+  {
+    GNUNET_break_op (0);
+    result[0].denom_conflict = true;
+  }
+
+  result[0].age_conflict = TALER_AgeCommitmentHash_NoConflict;
+
+  if (is_age_hash_null != coin[0].no_age_commitment)
+  {
+    if (is_age_hash_null)
+    {
+      GNUNET_break_op (0);
+      result[0].age_conflict = TALER_AgeCommitmentHash_NullExpected;
+    }
+    else
+    {
+      GNUNET_break_op (0);
+      result[0].age_conflict = TALER_AgeCommitmentHash_ValueExpected;
+    }
+  }
+  else if ( (! is_age_hash_null) &&
+            (0 != GNUNET_memcmp (&result[0].h_age_commitment,
+                                 &coin[0].h_age_commitment)) )
   {
-    GNUNET_break (GNUNET_is_zero (&result[0].h_age_commitment));
     GNUNET_break_op (0);
-    result[0].age_conflict = true;
+    result[0].age_conflict = TALER_AgeCommitmentHash_ValueDiffers;
   }
+
   return qs;
 }
 
@@ -111,10 +138,8 @@ insert2 (struct PostgresClosure *pg,
          struct TALER_EXCHANGEDB_CoinInfo result[2])
 {
   enum GNUNET_DB_QueryStatus qs;
-  bool is_denom_pub_hash_null = false;
-  bool is_age_hash_null = false;
-  bool is_denom_pub_hash_null2 = false;
-  bool is_age_hash_null2 = false;
+  bool is_denom_pub_hash_null[2] = {false, false};
+  bool is_age_hash_null[2] = {false, false};
 
   PREPARE (pg,
            "batch2_known_coin",
@@ -150,11 +175,11 @@ insert2 (struct PostgresClosure *pg,
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("denom_pub_hash",
                                             &result[0].denom_hash),
-      &is_denom_pub_hash_null),
+      &is_denom_pub_hash_null[0]),
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("age_commitment_hash",
                                             &result[0].h_age_commitment),
-      &is_age_hash_null),
+      &is_age_hash_null[0]),
     GNUNET_PQ_result_spec_bool ("existed2",
                                 &result[1].existed),
     GNUNET_PQ_result_spec_uint64 ("known_coin_id2",
@@ -162,11 +187,11 @@ insert2 (struct PostgresClosure *pg,
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("denom_pub_hash2",
                                             &result[1].denom_hash),
-      &is_denom_pub_hash_null2),
+      &is_denom_pub_hash_null[1]),
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("age_commitment_hash2",
                                             &result[1].h_age_commitment),
-      &is_age_hash_null2),
+      &is_age_hash_null[1]),
     GNUNET_PQ_result_spec_end
   };
 
@@ -188,38 +213,40 @@ insert2 (struct PostgresClosure *pg,
     break; /* continued below */
   }
 
-  if ( (! is_denom_pub_hash_null) &&
-       (0 != GNUNET_memcmp (&result[0].denom_hash,
-                            &coin[0].denom_pub_hash)) )
+  for (int i = 0; i < 2; i++)
   {
-    GNUNET_break_op (0);
-    result[0].denom_conflict = true;
-  }
+    if ( (! is_denom_pub_hash_null[i]) &&
+         (0 != GNUNET_memcmp (&result[i].denom_hash,
+                              &coin[i].denom_pub_hash)) )
+    {
+      GNUNET_break_op (0);
+      result[i].denom_conflict = true;
+    }
 
-  if ( (! is_age_hash_null) &&
-       (0 != GNUNET_memcmp (&result[0].h_age_commitment,
-                            &coin[0].h_age_commitment)) )
-  {
-    GNUNET_break (GNUNET_is_zero (&result[0].h_age_commitment));
-    GNUNET_break_op (0);
-    result[0].age_conflict = true;
-  }
-  if ( (! is_denom_pub_hash_null2) &&
-       (0 != GNUNET_memcmp (&result[1].denom_hash,
-                            &coin[1].denom_pub_hash)) )
-  {
-    GNUNET_break_op (0);
-    result[1].denom_conflict = true;
-  }
+    result[i].age_conflict = TALER_AgeCommitmentHash_NoConflict;
 
-  if ( (! is_age_hash_null) &&
-       (0 != GNUNET_memcmp (&result[1].h_age_commitment,
-                            &coin[1].h_age_commitment)) )
-  {
-    GNUNET_break (GNUNET_is_zero (&result[1].h_age_commitment));
-    GNUNET_break_op (0);
-    result[1].age_conflict = true;
+    if (is_age_hash_null[i] != coin[i].no_age_commitment)
+    {
+      if (is_age_hash_null[i])
+      {
+        GNUNET_break_op (0);
+        result[i].age_conflict = TALER_AgeCommitmentHash_NullExpected;
+      }
+      else
+      {
+        GNUNET_break_op (0);
+        result[i].age_conflict = TALER_AgeCommitmentHash_ValueExpected;
+      }
+    }
+    else if ( (! is_age_hash_null[i]) &&
+              (0 != GNUNET_memcmp (&result[i].h_age_commitment,
+                                   &coin[i].h_age_commitment)) )
+    {
+      GNUNET_break_op (0);
+      result[i].age_conflict = TALER_AgeCommitmentHash_ValueDiffers;
+    }
   }
+
   return qs;
 }
 
@@ -230,14 +257,8 @@ insert4 (struct PostgresClosure *pg,
          struct TALER_EXCHANGEDB_CoinInfo result[4])
 {
   enum GNUNET_DB_QueryStatus qs;
-  bool is_denom_pub_hash_null = false;
-  bool is_age_hash_null = false;
-  bool is_denom_pub_hash_null2 = false;
-  bool is_age_hash_null2 = false;
-  bool is_denom_pub_hash_null3 = false;
-  bool is_age_hash_null3 = false;
-  bool is_denom_pub_hash_null4 = false;
-  bool is_age_hash_null4 = false;
+  bool is_denom_pub_hash_null[4] = {false, false, false, false};
+  bool is_age_hash_null[4] = {false, false, false, false};
   PREPARE (pg,
            "batch4_known_coin",
            "SELECT"
@@ -290,11 +311,11 @@ insert4 (struct PostgresClosure *pg,
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("denom_pub_hash",
                                             &result[0].denom_hash),
-      &is_denom_pub_hash_null),
+      &is_denom_pub_hash_null[0]),
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("age_commitment_hash",
                                             &result[0].h_age_commitment),
-      &is_age_hash_null),
+      &is_age_hash_null[0]),
     GNUNET_PQ_result_spec_bool ("existed2",
                                 &result[1].existed),
     GNUNET_PQ_result_spec_uint64 ("known_coin_id2",
@@ -302,11 +323,11 @@ insert4 (struct PostgresClosure *pg,
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("denom_pub_hash2",
                                             &result[1].denom_hash),
-      &is_denom_pub_hash_null2),
+      &is_denom_pub_hash_null[1]),
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("age_commitment_hash2",
                                             &result[1].h_age_commitment),
-      &is_age_hash_null2),
+      &is_age_hash_null[1]),
     GNUNET_PQ_result_spec_bool ("existed3",
                                 &result[2].existed),
     GNUNET_PQ_result_spec_uint64 ("known_coin_id3",
@@ -314,11 +335,11 @@ insert4 (struct PostgresClosure *pg,
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("denom_pub_hash3",
                                             &result[2].denom_hash),
-      &is_denom_pub_hash_null3),
+      &is_denom_pub_hash_null[2]),
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("age_commitment_hash3",
                                             &result[2].h_age_commitment),
-      &is_age_hash_null3),
+      &is_age_hash_null[2]),
     GNUNET_PQ_result_spec_bool ("existed4",
                                 &result[3].existed),
     GNUNET_PQ_result_spec_uint64 ("known_coin_id4",
@@ -326,11 +347,11 @@ insert4 (struct PostgresClosure *pg,
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("denom_pub_hash4",
                                             &result[3].denom_hash),
-      &is_denom_pub_hash_null4),
+      &is_denom_pub_hash_null[3]),
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_auto_from_type ("age_commitment_hash4",
                                             &result[3].h_age_commitment),
-      &is_age_hash_null4),
+      &is_age_hash_null[3]),
     GNUNET_PQ_result_spec_end
   };
 
@@ -352,69 +373,40 @@ insert4 (struct PostgresClosure *pg,
     break; /* continued below */
   }
 
-  if ( (! is_denom_pub_hash_null) &&
-       (0 != GNUNET_memcmp (&result[0].denom_hash,
-                            &coin[0].denom_pub_hash)) )
+  for (int i = 0; i < 4; i++)
   {
-    GNUNET_break_op (0);
-    result[0].denom_conflict = true;
-  }
-  if ( (! is_age_hash_null) &&
-       (0 != GNUNET_memcmp (&result[0].h_age_commitment,
-                            &coin[0].h_age_commitment)) )
-  {
-    GNUNET_break (GNUNET_is_zero (&result[0].h_age_commitment));
-    GNUNET_break_op (0);
-    result[0].age_conflict = true;
-  }
+    if ( (! is_denom_pub_hash_null[i]) &&
+         (0 != GNUNET_memcmp (&result[i].denom_hash,
+                              &coin[i].denom_pub_hash)) )
+    {
+      GNUNET_break_op (0);
+      result[i].denom_conflict = true;
+    }
 
-  if ( (! is_denom_pub_hash_null2) &&
-       (0 != GNUNET_memcmp (&result[1].denom_hash,
-                            &coin[1].denom_pub_hash)) )
-  {
-    GNUNET_break_op (0);
-    result[1].denom_conflict = true;
-  }
-  if ( (! is_age_hash_null2) &&
-       (0 != GNUNET_memcmp (&result[1].h_age_commitment,
-                            &coin[1].h_age_commitment)) )
-  {
-    GNUNET_break (GNUNET_is_zero (&result[1].h_age_commitment));
-    GNUNET_break_op (0);
-    result[1].age_conflict = true;
-  }
+    result[i].age_conflict = TALER_AgeCommitmentHash_NoConflict;
 
-  if ( (! is_denom_pub_hash_null3) &&
-       (0 != GNUNET_memcmp (&result[2].denom_hash,
-                            &coin[2].denom_pub_hash)) )
-  {
-    GNUNET_break_op (0);
-    result[2].denom_conflict = true;
-  }
-  if ( (! is_age_hash_null3) &&
-       (0 != GNUNET_memcmp (&result[2].h_age_commitment,
-                            &coin[2].h_age_commitment)) )
-  {
-    GNUNET_break (GNUNET_is_zero (&result[2].h_age_commitment));
-    GNUNET_break_op (0);
-    result[2].age_conflict = true;
+    if (is_age_hash_null[i] != coin[i].no_age_commitment)
+    {
+      if (is_age_hash_null[i])
+      {
+        GNUNET_break_op (0);
+        result[i].age_conflict = TALER_AgeCommitmentHash_NullExpected;
+      }
+      else
+      {
+        GNUNET_break_op (0);
+        result[i].age_conflict = TALER_AgeCommitmentHash_ValueExpected;
+      }
+    }
+    else if ( (! is_age_hash_null[i]) &&
+              (0 != GNUNET_memcmp (&result[i].h_age_commitment,
+                                   &coin[i].h_age_commitment)) )
+    {
+      GNUNET_break_op (0);
+      result[i].age_conflict = TALER_AgeCommitmentHash_ValueDiffers;
+    }
   }
 
-  if ( (! is_denom_pub_hash_null4) &&
-       (0 != GNUNET_memcmp (&result[3].denom_hash,
-                            &coin[3].denom_pub_hash)) )
-  {
-    GNUNET_break_op (0);
-    result[3].denom_conflict = true;
-  }
-  if ( (! is_age_hash_null4) &&
-       (0 != GNUNET_memcmp (&result[3].h_age_commitment,
-                            &coin[3].h_age_commitment)) )
-  {
-    GNUNET_break (GNUNET_is_zero (&result[3].h_age_commitment));
-    GNUNET_break_op (0);
-    result[3].age_conflict = true;
-  }
   return qs;
 }
 
diff --git a/src/exchangedb/pg_ensure_coin_known.c 
b/src/exchangedb/pg_ensure_coin_known.c
index 952acf24..307b8df5 100644
--- a/src/exchangedb/pg_ensure_coin_known.c
+++ b/src/exchangedb/pg_ensure_coin_known.c
@@ -21,6 +21,7 @@
 #include "platform.h"
 #include "taler_error_codes.h"
 #include "taler_dbevents.h"
+#include "taler_exchangedb_plugin.h"
 #include "taler_pq_lib.h"
 #include "pg_ensure_coin_known.h"
 #include "pg_helper.h"
@@ -143,13 +144,25 @@ TEH_PG_ensure_coin_known (void *cls,
     return TALER_EXCHANGEDB_CKS_DENOM_CONFLICT;
   }
 
-  if ( (! is_age_hash_null) &&
-       (0 != GNUNET_memcmp (h_age_commitment,
-                            &coin->h_age_commitment)) )
+  if (is_age_hash_null != coin->no_age_commitment)
+  {
+    if (is_age_hash_null)
+    {
+      GNUNET_break_op (0);
+      return TALER_EXCHANGEDB_CKS_AGE_CONFLICT_EXPECTED_NULL;
+    }
+    else
+    {
+      GNUNET_break_op (0);
+      return TALER_EXCHANGEDB_CKS_AGE_CONFLICT_EXPECTED_NON_NULL;
+    }
+  }
+  else if ( (! is_age_hash_null) &&
+            (0 != GNUNET_memcmp (h_age_commitment,
+                                 &coin->h_age_commitment)) )
   {
-    GNUNET_break (GNUNET_is_zero (h_age_commitment));
     GNUNET_break_op (0);
-    return TALER_EXCHANGEDB_CKS_AGE_CONFLICT;
+    return TALER_EXCHANGEDB_CKS_AGE_CONFLICT_VALUE_DIFFERS;
   }
 
   return TALER_EXCHANGEDB_CKS_PRESENT;
diff --git a/src/include/taler_exchangedb_plugin.h 
b/src/include/taler_exchangedb_plugin.h
index 6da27863..596764b1 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -29,6 +29,23 @@
 #include "taler_signatures.h"
 #include "taler_extensions_policy.h"
 
+/**
+ * The conflict that can occur for the age restriction
+ */
+enum TALER_EXCHANGEDB_AgeCommitmentHash_Conflict
+{
+  /* Value OK, no conflict */
+  TALER_AgeCommitmentHash_NoConflict    = 0,
+
+  /* Given hash had a value, but NULL (or zero) was expected */
+  TALER_AgeCommitmentHash_NullExpected  = 1,
+
+  /* Given hash was NULL, but value was expected */
+  TALER_AgeCommitmentHash_ValueExpected = 2,
+
+  /* Given hash differs from value in the known coin */
+  TALER_AgeCommitmentHash_ValueDiffers  = 3,
+};
 
 /**
  * Per-coin information returned when doing a batch insert.
@@ -63,11 +80,12 @@ struct TALER_EXCHANGEDB_CoinInfo
   bool denom_conflict;
 
   /**
-   * True if the known coin has a different age restriction;
+   * Indicates if and what kind of conflict with the age
+   * restriction of the known coin was present;
    * application will find age commitment of the already
    * known coin in @e h_age_commitment.
    */
-  bool age_conflict;
+  enum TALER_EXCHANGEDB_AgeCommitmentHash_Conflict age_conflict;
 };
 
 
@@ -3538,7 +3556,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure
    */
   enum GNUNET_GenericReturnValue
-  (*drop_tables)(void *cls);
+    (*drop_tables)(void *cls);
 
   /**
    * Create the necessary tables if they are not present
@@ -3551,9 +3569,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure
    */
   enum GNUNET_GenericReturnValue
-  (*create_tables)(void *cls,
-                   bool support_partitions,
-                   uint32_t num_partitions);
+    (*create_tables)(void *cls,
+                     bool support_partitions,
+                     uint32_t num_partitions);
 
 
   /**
@@ -3565,8 +3583,8 @@ struct TALER_EXCHANGEDB_Plugin
    * @return #GNUNET_OK on success
    */
   enum GNUNET_GenericReturnValue
-  (*start)(void *cls,
-           const char *name);
+    (*start)(void *cls,
+             const char *name);
 
 
   /**
@@ -3578,8 +3596,8 @@ struct TALER_EXCHANGEDB_Plugin
    * @return #GNUNET_OK on success
    */
   enum GNUNET_GenericReturnValue
-  (*start_read_committed)(void *cls,
-                          const char *name);
+    (*start_read_committed)(void *cls,
+                            const char *name);
 
   /**
    * Start a READ ONLY serializable transaction.
@@ -3590,8 +3608,8 @@ struct TALER_EXCHANGEDB_Plugin
    * @return #GNUNET_OK on success
    */
   enum GNUNET_GenericReturnValue
-  (*start_read_only)(void *cls,
-                     const char *name);
+    (*start_read_only)(void *cls,
+                       const char *name);
 
 
   /**
@@ -3601,7 +3619,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*commit)(void *cls);
+    (*commit)(void *cls);
 
 
   /**
@@ -3615,7 +3633,7 @@ struct TALER_EXCHANGEDB_Plugin
    *         #GNUNET_SYSERR on hard errors
    */
   enum GNUNET_GenericReturnValue
-  (*preflight)(void *cls);
+    (*preflight)(void *cls);
 
 
   /**
@@ -3682,7 +3700,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return status of the query
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_denomination_info)(
+    (*insert_denomination_info)(
     void *cls,
     const struct TALER_DenominationPublicKey *denom_pub,
     const struct TALER_EXCHANGEDB_DenominationKeyInformation *issue);
@@ -3697,7 +3715,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_denomination_info)(
+    (*get_denomination_info)(
     void *cls,
     const struct TALER_DenominationHashP *denom_pub_hash,
     struct TALER_EXCHANGEDB_DenominationKeyInformation *issue);
@@ -3715,9 +3733,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*iterate_denomination_info)(void *cls,
-                               TALER_EXCHANGEDB_DenominationCallback cb,
-                               void *cb_cls);
+    (*iterate_denomination_info)(void *cls,
+                                 TALER_EXCHANGEDB_DenominationCallback cb,
+                                 void *cb_cls);
 
 
   /**
@@ -3731,9 +3749,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*iterate_denominations)(void *cls,
-                           TALER_EXCHANGEDB_DenominationsCallback cb,
-                           void *cb_cls);
+    (*iterate_denominations)(void *cls,
+                             TALER_EXCHANGEDB_DenominationsCallback cb,
+                             void *cb_cls);
 
   /**
    * Function called to invoke @a cb on every non-revoked exchange signing key
@@ -3746,9 +3764,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*iterate_active_signkeys)(void *cls,
-                             TALER_EXCHANGEDB_ActiveSignkeysCallback cb,
-                             void *cb_cls);
+    (*iterate_active_signkeys)(void *cls,
+                               TALER_EXCHANGEDB_ActiveSignkeysCallback cb,
+                               void *cb_cls);
 
 
   /**
@@ -3761,9 +3779,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*iterate_active_auditors)(void *cls,
-                             TALER_EXCHANGEDB_AuditorsCallback cb,
-                             void *cb_cls);
+    (*iterate_active_auditors)(void *cls,
+                               TALER_EXCHANGEDB_AuditorsCallback cb,
+                               void *cb_cls);
 
 
   /**
@@ -3777,7 +3795,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*iterate_auditor_denominations)(
+    (*iterate_auditor_denominations)(
     void *cls,
     TALER_EXCHANGEDB_AuditorDenominationsCallback cb,
     void *cb_cls);
@@ -3793,8 +3811,8 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*reserves_get)(void *cls,
-                  struct TALER_EXCHANGEDB_Reserve *reserve);
+    (*reserves_get)(void *cls,
+                    struct TALER_EXCHANGEDB_Reserve *reserve);
 
 
   /**
@@ -3806,7 +3824,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*reserves_get_origin)(
+    (*reserves_get_origin)(
     void *cls,
     const struct TALER_ReservePublicKeyP *reserve_pub,
     struct TALER_PaytoHashP *h_payto);
@@ -3821,9 +3839,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*drain_kyc_alert)(void *cls,
-                     uint32_t trigger_type,
-                     struct TALER_PaytoHashP *h_payto);
+    (*drain_kyc_alert)(void *cls,
+                       uint32_t trigger_type,
+                       struct TALER_PaytoHashP *h_payto);
 
 
   /**
@@ -3837,7 +3855,7 @@ struct TALER_EXCHANGEDB_Plugin
    *             set to the status of the
    */
   enum GNUNET_DB_QueryStatus
-  (*reserves_in_insert)(
+    (*reserves_in_insert)(
     void *cls,
     const struct TALER_EXCHANGEDB_ReserveInInfo *reserves,
     unsigned int reserves_length,
@@ -3854,10 +3872,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return statement execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*lock_nonce)(void *cls,
-                const struct GNUNET_CRYPTO_CsSessionNonce *nonce,
-                const struct TALER_DenominationHashP *denom_pub_hash,
-                const union TALER_EXCHANGEDB_NonceLockTargetP *target);
+    (*lock_nonce)(void *cls,
+                  const struct GNUNET_CRYPTO_CsSessionNonce *nonce,
+                  const struct TALER_DenominationHashP *denom_pub_hash,
+                  const union TALER_EXCHANGEDB_NonceLockTargetP *target);
 
 
   /**
@@ -3872,9 +3890,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return statement execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_withdraw_info)(void *cls,
-                       const struct TALER_BlindedCoinHashP *bch,
-                       struct TALER_EXCHANGEDB_CollectableBlindcoin 
*collectable);
+    (*get_withdraw_info)(void *cls,
+                         const struct TALER_BlindedCoinHashP *bch,
+                         struct TALER_EXCHANGEDB_CollectableBlindcoin *
+                         collectable);
 
 
   /**
@@ -3905,7 +3924,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*do_batch_withdraw)(
+    (*do_batch_withdraw)(
     void *cls,
     struct GNUNET_TIME_Timestamp now,
     const struct TALER_ReservePublicKeyP *reserve_pub,
@@ -3934,7 +3953,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*do_batch_withdraw_insert)(
+    (*do_batch_withdraw_insert)(
     void *cls,
     const union GNUNET_CRYPTO_BlindSessionNonce *nonce,
     const struct TALER_EXCHANGEDB_CollectableBlindcoin *collectable,
@@ -3956,7 +3975,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return statement execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_age_withdraw)(
+    (*get_age_withdraw)(
     void *cls,
     const struct TALER_ReservePublicKeyP *reserve_pub,
     const struct TALER_AgeWithdrawCommitmentHashP *ach,
@@ -3978,7 +3997,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*do_age_withdraw)(
+    (*do_age_withdraw)(
     void *cls,
     const struct TALER_EXCHANGEDB_AgeWithdraw *commitment,
     struct GNUNET_TIME_Timestamp now,
@@ -3999,7 +4018,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_policy_details)(
+    (*get_policy_details)(
     void *cls,
     const struct GNUNET_HashCode *hc,
     struct TALER_PolicyDetails *detail);
@@ -4017,7 +4036,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*persist_policy_details)(
+    (*persist_policy_details)(
     void *cls,
     const struct TALER_PolicyDetails *details,
     uint64_t *policy_details_serial_id,
@@ -4039,7 +4058,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*do_deposit)(
+    (*do_deposit)(
     void *cls,
     const struct TALER_EXCHANGEDB_BatchDeposit *bd,
     struct GNUNET_TIME_Timestamp *exchange_timestamp,
@@ -4062,7 +4081,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*do_melt)(
+    (*do_melt)(
     void *cls,
     const struct TALER_RefreshMasterSecretP *rms,
     struct TALER_EXCHANGEDB_Refresh *refresh,
@@ -4079,7 +4098,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*add_policy_fulfillment_proof)(
+    (*add_policy_fulfillment_proof)(
     void *cls,
     struct TALER_PolicyFulfillmentTransactionData *fulfillment);
 
@@ -4098,7 +4117,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*cs_refreshes_reveal)(
+    (*cs_refreshes_reveal)(
     void *cls,
     const struct GNUNET_CRYPTO_CsSessionNonce *nonce,
     const struct TALER_CoinSpendPublicKeyP *old_coin_pub,
@@ -4121,7 +4140,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*do_refund)(
+    (*do_refund)(
     void *cls,
     const struct TALER_EXCHANGEDB_Refund *refund,
     const struct TALER_Amount *deposit_fee,
@@ -4149,7 +4168,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*do_recoup)(
+    (*do_recoup)(
     void *cls,
     const struct TALER_ReservePublicKeyP *reserve_pub,
     uint64_t reserve_out_serial_id,
@@ -4179,7 +4198,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*do_recoup_refresh)(
+    (*do_recoup_refresh)(
     void *cls,
     const struct TALER_CoinSpendPublicKeyP *old_coin_pub,
     uint64_t rrc_serial,
@@ -4210,13 +4229,13 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_reserve_history)(void *cls,
-                         const struct TALER_ReservePublicKeyP *reserve_pub,
-                         uint64_t start_off,
-                         uint64_t etag_in,
-                         uint64_t *etag_out,
-                         struct TALER_Amount *balance,
-                         struct TALER_EXCHANGEDB_ReserveHistory **rhp);
+    (*get_reserve_history)(void *cls,
+                           const struct TALER_ReservePublicKeyP *reserve_pub,
+                           uint64_t start_off,
+                           uint64_t etag_in,
+                           uint64_t *etag_out,
+                           struct TALER_Amount *balance,
+                           struct TALER_EXCHANGEDB_ReserveHistory **rhp);
 
 
   /**
@@ -4228,9 +4247,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_reserve_balance)(void *cls,
-                         const struct TALER_ReservePublicKeyP *reserve_pub,
-                         struct TALER_Amount *balance);
+    (*get_reserve_balance)(void *cls,
+                           const struct TALER_ReservePublicKeyP *reserve_pub,
+                           struct TALER_Amount *balance);
 
 
   /**
@@ -4293,10 +4312,21 @@ struct TALER_EXCHANGEDB_Plugin
      */
     TALER_EXCHANGEDB_CKS_DENOM_CONFLICT = -3,
 
+    /**
+     * Conflicting coin (expected NULL age hash) already in database.
+     */
+    TALER_EXCHANGEDB_CKS_AGE_CONFLICT_EXPECTED_NULL = -4,
+
+    /**
+     * Conflicting coin (unexpected NULL age hash) already in database.
+     */
+    TALER_EXCHANGEDB_CKS_AGE_CONFLICT_EXPECTED_NON_NULL = -5,
+
     /**
      * Conflicting coin (different age hash) already in database.
      */
-    TALER_EXCHANGEDB_CKS_AGE_CONFLICT = -4,
+    TALER_EXCHANGEDB_CKS_AGE_CONFLICT_VALUE_DIFFERS = -6,
+
   }
   (*ensure_coin_known)(void *cls,
                        const struct TALER_CoinPublicInfo *coin,
@@ -4316,7 +4346,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status, non-negative on success
    */
   enum GNUNET_DB_QueryStatus
-  (*batch_ensure_coin_known)(
+    (*batch_ensure_coin_known)(
     void *cls,
     const struct TALER_CoinPublicInfo *coin,
     struct TALER_EXCHANGEDB_CoinInfo *result,
@@ -4332,9 +4362,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status, non-negative on success
    */
   enum GNUNET_DB_QueryStatus
-  (*get_known_coin)(void *cls,
-                    const struct TALER_CoinSpendPublicKeyP *coin_pub,
-                    struct TALER_CoinPublicInfo *coin_info);
+    (*get_known_coin)(void *cls,
+                      const struct TALER_CoinSpendPublicKeyP *coin_pub,
+                      struct TALER_CoinPublicInfo *coin_info);
 
 
   /**
@@ -4347,10 +4377,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_coin_denomination)(void *cls,
-                           const struct TALER_CoinSpendPublicKeyP *coin_pub,
-                           uint64_t *known_coin_id,
-                           struct TALER_DenominationHashP *denom_hash);
+    (*get_coin_denomination)(void *cls,
+                             const struct TALER_CoinSpendPublicKeyP *coin_pub,
+                             uint64_t *known_coin_id,
+                             struct TALER_DenominationHashP *denom_hash);
 
 
   /**
@@ -4370,7 +4400,7 @@ struct TALER_EXCHANGEDB_Plugin
    */
   // FIXME: rename!
   enum GNUNET_DB_QueryStatus
-  (*have_deposit2)(
+    (*have_deposit2)(
     void *cls,
     const struct TALER_PrivateContractHashP *h_contract_terms,
     const struct TALER_MerchantWireHashP *h_wire,
@@ -4390,8 +4420,8 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query result status
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_refund)(void *cls,
-                   const struct TALER_EXCHANGEDB_Refund *refund);
+    (*insert_refund)(void *cls,
+                     const struct TALER_EXCHANGEDB_Refund *refund);
 
 
   /**
@@ -4406,12 +4436,14 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query result status
    */
   enum GNUNET_DB_QueryStatus
-  (*select_refunds_by_coin)(void *cls,
-                            const struct TALER_CoinSpendPublicKeyP *coin_pub,
-                            const struct TALER_MerchantPublicKeyP 
*merchant_pub,
-                            const struct TALER_PrivateContractHashP 
*h_contract,
-                            TALER_EXCHANGEDB_RefundCoinCallback cb,
-                            void *cb_cls);
+    (*select_refunds_by_coin)(void *cls,
+                              const struct TALER_CoinSpendPublicKeyP *coin_pub,
+                              const struct
+                              TALER_MerchantPublicKeyP *merchant_pub,
+                              const struct
+                              TALER_PrivateContractHashP *h_contract,
+                              TALER_EXCHANGEDB_RefundCoinCallback cb,
+                              void *cb_cls);
 
 
   /**
@@ -4428,11 +4460,11 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_ready_deposit)(void *cls,
-                       uint64_t start_shard_row,
-                       uint64_t end_shard_row,
-                       struct TALER_MerchantPublicKeyP *merchant_pub,
-                       char **payto_uri);
+    (*get_ready_deposit)(void *cls,
+                         uint64_t start_shard_row,
+                         uint64_t end_shard_row,
+                         struct TALER_MerchantPublicKeyP *merchant_pub,
+                         char **payto_uri);
 
 
   /**
@@ -4447,7 +4479,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*aggregate)(
+    (*aggregate)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     const struct TALER_MerchantPublicKeyP *merchant_pub,
@@ -4468,7 +4500,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*create_aggregation_transient)(
+    (*create_aggregation_transient)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     const char *exchange_account_section,
@@ -4490,7 +4522,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*select_aggregation_transient)(
+    (*select_aggregation_transient)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     const struct TALER_MerchantPublicKeyP *merchant_pub,
@@ -4509,7 +4541,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*find_aggregation_transient)(
+    (*find_aggregation_transient)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     TALER_EXCHANGEDB_TransientAggregationCallback cb,
@@ -4528,7 +4560,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*update_aggregation_transient)(
+    (*update_aggregation_transient)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     const struct TALER_WireTransferIdentifierRawP *wtid,
@@ -4546,7 +4578,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*delete_aggregation_transient)(
+    (*delete_aggregation_transient)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     const struct TALER_WireTransferIdentifierRawP *wtid);
@@ -4564,10 +4596,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_melt)(void *cls,
-              const struct TALER_RefreshCommitmentP *rc,
-              struct TALER_EXCHANGEDB_Melt *melt,
-              uint64_t *melt_serial_id);
+    (*get_melt)(void *cls,
+                const struct TALER_RefreshCommitmentP *rc,
+                struct TALER_EXCHANGEDB_Melt *melt,
+                uint64_t *melt_serial_id);
 
 
   /**
@@ -4585,7 +4617,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query status for the transaction
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_refresh_reveal)(
+    (*insert_refresh_reveal)(
     void *cls,
     uint64_t melt_serial_id,
     uint32_t num_rrcs,
@@ -4606,10 +4638,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_refresh_reveal)(void *cls,
-                        const struct TALER_RefreshCommitmentP *rc,
-                        TALER_EXCHANGEDB_RefreshCallback cb,
-                        void *cb_cls);
+    (*get_refresh_reveal)(void *cls,
+                          const struct TALER_RefreshCommitmentP *rc,
+                          TALER_EXCHANGEDB_RefreshCallback cb,
+                          void *cb_cls);
 
 
   /**
@@ -4625,10 +4657,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return statement execution status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_link_data)(void *cls,
-                   const struct TALER_CoinSpendPublicKeyP *coin_pub,
-                   TALER_EXCHANGEDB_LinkCallback ldc,
-                   void *tdc_cls);
+    (*get_link_data)(void *cls,
+                     const struct TALER_CoinSpendPublicKeyP *coin_pub,
+                     TALER_EXCHANGEDB_LinkCallback ldc,
+                     void *tdc_cls);
 
 
   /**
@@ -4652,7 +4684,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_coin_transactions)(
+    (*get_coin_transactions)(
     void *cls,
     const struct TALER_CoinSpendPublicKeyP *coin_pub,
     uint64_t start_off,
@@ -4685,10 +4717,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query status of the transaction
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_wire_transfer)(void *cls,
-                          const struct TALER_WireTransferIdentifierRawP *wtid,
-                          TALER_EXCHANGEDB_AggregationDataCallback cb,
-                          void *cb_cls);
+    (*lookup_wire_transfer)(void *cls,
+                            const struct TALER_WireTransferIdentifierRawP 
*wtid,
+                            TALER_EXCHANGEDB_AggregationDataCallback cb,
+                            void *cb_cls);
 
 
   /**
@@ -4713,7 +4745,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_transfer_by_deposit)(
+    (*lookup_transfer_by_deposit)(
     void *cls,
     const struct TALER_PrivateContractHashP *h_contract_terms,
     const struct TALER_MerchantWireHashP *h_wire,
@@ -4740,12 +4772,12 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_wire_fee)(void *cls,
-                     const char *wire_method,
-                     struct GNUNET_TIME_Timestamp start_date,
-                     struct GNUNET_TIME_Timestamp end_date,
-                     const struct TALER_WireFeeSet *fees,
-                     const struct TALER_MasterSignatureP *master_sig);
+    (*insert_wire_fee)(void *cls,
+                       const char *wire_method,
+                       struct GNUNET_TIME_Timestamp start_date,
+                       struct GNUNET_TIME_Timestamp end_date,
+                       const struct TALER_WireFeeSet *fees,
+                       const struct TALER_MasterSignatureP *master_sig);
 
 
   /**
@@ -4762,15 +4794,15 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_global_fee)(void *cls,
-                       struct GNUNET_TIME_Timestamp start_date,
-                       struct GNUNET_TIME_Timestamp end_date,
-                       const struct TALER_GlobalFeeSet *fees,
-                       struct GNUNET_TIME_Relative purse_timeout,
-                       struct GNUNET_TIME_Relative history_expiration,
-                       uint32_t purse_account_limit,
+    (*insert_global_fee)(void *cls,
+                         struct GNUNET_TIME_Timestamp start_date,
+                         struct GNUNET_TIME_Timestamp end_date,
+                         const struct TALER_GlobalFeeSet *fees,
+                         struct GNUNET_TIME_Relative purse_timeout,
+                         struct GNUNET_TIME_Relative history_expiration,
+                         uint32_t purse_account_limit,
 
-                       const struct TALER_MasterSignatureP *master_sig);
+                         const struct TALER_MasterSignatureP *master_sig);
 
 
   /**
@@ -4786,13 +4818,13 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query status of the transaction
    */
   enum GNUNET_DB_QueryStatus
-  (*get_wire_fee)(void *cls,
-                  const char *type,
-                  struct GNUNET_TIME_Timestamp date,
-                  struct GNUNET_TIME_Timestamp *start_date,
-                  struct GNUNET_TIME_Timestamp *end_date,
-                  struct TALER_WireFeeSet *fees,
-                  struct TALER_MasterSignatureP *master_sig);
+    (*get_wire_fee)(void *cls,
+                    const char *type,
+                    struct GNUNET_TIME_Timestamp date,
+                    struct GNUNET_TIME_Timestamp *start_date,
+                    struct GNUNET_TIME_Timestamp *end_date,
+                    struct TALER_WireFeeSet *fees,
+                    struct TALER_MasterSignatureP *master_sig);
 
 
   /**
@@ -4810,15 +4842,15 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query status of the transaction
    */
   enum GNUNET_DB_QueryStatus
-  (*get_global_fee)(void *cls,
-                    struct GNUNET_TIME_Timestamp date,
-                    struct GNUNET_TIME_Timestamp *start_date,
-                    struct GNUNET_TIME_Timestamp *end_date,
-                    struct TALER_GlobalFeeSet *fees,
-                    struct GNUNET_TIME_Relative *purse_timeout,
-                    struct GNUNET_TIME_Relative *history_expiration,
-                    uint32_t *purse_account_limit,
-                    struct TALER_MasterSignatureP *master_sig);
+    (*get_global_fee)(void *cls,
+                      struct GNUNET_TIME_Timestamp date,
+                      struct GNUNET_TIME_Timestamp *start_date,
+                      struct GNUNET_TIME_Timestamp *end_date,
+                      struct TALER_GlobalFeeSet *fees,
+                      struct GNUNET_TIME_Relative *purse_timeout,
+                      struct GNUNET_TIME_Relative *history_expiration,
+                      uint32_t *purse_account_limit,
+                      struct TALER_MasterSignatureP *master_sig);
 
 
   /**
@@ -4832,10 +4864,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_expired_reserves)(void *cls,
-                          struct GNUNET_TIME_Timestamp now,
-                          TALER_EXCHANGEDB_ReserveExpiredCallback rec,
-                          void *rec_cls);
+    (*get_expired_reserves)(void *cls,
+                            struct GNUNET_TIME_Timestamp now,
+                            TALER_EXCHANGEDB_ReserveExpiredCallback rec,
+                            void *rec_cls);
 
 
   /**
@@ -4850,7 +4882,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_unfinished_close_requests)(
+    (*get_unfinished_close_requests)(
     void *cls,
     TALER_EXCHANGEDB_ReserveExpiredCallback rec,
     void *rec_cls);
@@ -4871,7 +4903,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code, 0 if operation is already in the DB
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_reserve_open_deposit)(
+    (*insert_reserve_open_deposit)(
     void *cls,
     const struct TALER_CoinPublicInfo *cpi,
     const struct TALER_CoinSpendSignatureP *coin_sig,
@@ -4901,19 +4933,19 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*do_reserve_open)(void *cls,
-                     const struct TALER_ReservePublicKeyP *reserve_pub,
-                     const struct TALER_Amount *total_paid,
-                     const struct TALER_Amount *reserve_payment,
-                     uint32_t min_purse_limit,
-                     const struct TALER_ReserveSignatureP *reserve_sig,
-                     struct GNUNET_TIME_Timestamp desired_expiration,
-                     struct GNUNET_TIME_Timestamp now,
-                     const struct TALER_Amount *open_fee,
-                     bool *no_funds,
-                     struct TALER_Amount *reserve_balance,
-                     struct TALER_Amount *open_cost,
-                     struct GNUNET_TIME_Timestamp *final_expiration);
+    (*do_reserve_open)(void *cls,
+                       const struct TALER_ReservePublicKeyP *reserve_pub,
+                       const struct TALER_Amount *total_paid,
+                       const struct TALER_Amount *reserve_payment,
+                       uint32_t min_purse_limit,
+                       const struct TALER_ReserveSignatureP *reserve_sig,
+                       struct GNUNET_TIME_Timestamp desired_expiration,
+                       struct GNUNET_TIME_Timestamp now,
+                       const struct TALER_Amount *open_fee,
+                       bool *no_funds,
+                       struct TALER_Amount *reserve_balance,
+                       struct TALER_Amount *open_cost,
+                       struct GNUNET_TIME_Timestamp *final_expiration);
 
 
   /**
@@ -4929,7 +4961,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code, 0 if reserve unknown
    */
   enum GNUNET_DB_QueryStatus
-  (*select_reserve_close_info)(
+    (*select_reserve_close_info)(
     void *cls,
     const struct TALER_ReservePublicKeyP *reserve_pub,
     struct TALER_Amount *balance,
@@ -4952,7 +4984,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code, 0 if reserve unknown
    */
   enum GNUNET_DB_QueryStatus
-  (*select_reserve_close_request_info)(
+    (*select_reserve_close_request_info)(
     void *cls,
     const struct TALER_ReservePublicKeyP *reserve_pub,
     uint64_t rowid,
@@ -4976,7 +5008,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code, @a kac aborting with #GNUNET_NO is not 
an error
    */
   enum GNUNET_DB_QueryStatus
-  (*iterate_reserve_close_info)(
+    (*iterate_reserve_close_info)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     struct GNUNET_TIME_Absolute time_limit,
@@ -4998,14 +5030,15 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_reserve_closed)(void *cls,
-                           const struct TALER_ReservePublicKeyP *reserve_pub,
-                           struct GNUNET_TIME_Timestamp execution_date,
-                           const char *receiver_account,
-                           const struct TALER_WireTransferIdentifierRawP *wtid,
-                           const struct TALER_Amount *amount_with_fee,
-                           const struct TALER_Amount *closing_fee,
-                           uint64_t close_request_row);
+    (*insert_reserve_closed)(void *cls,
+                             const struct TALER_ReservePublicKeyP *reserve_pub,
+                             struct GNUNET_TIME_Timestamp execution_date,
+                             const char *receiver_account,
+                             const struct
+                             TALER_WireTransferIdentifierRawP *wtid,
+                             const struct TALER_Amount *amount_with_fee,
+                             const struct TALER_Amount *closing_fee,
+                             uint64_t close_request_row);
 
 
   /**
@@ -5018,10 +5051,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return query status code
    */
   enum GNUNET_DB_QueryStatus
-  (*wire_prepare_data_insert)(void *cls,
-                              const char *type,
-                              const char *buf,
-                              size_t buf_size);
+    (*wire_prepare_data_insert)(void *cls,
+                                const char *type,
+                                const char *buf,
+                                size_t buf_size);
 
 
   /**
@@ -5032,8 +5065,8 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*wire_prepare_data_mark_finished)(void *cls,
-                                     uint64_t rowid);
+    (*wire_prepare_data_mark_finished)(void *cls,
+                                       uint64_t rowid);
 
 
   /**
@@ -5044,8 +5077,8 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*wire_prepare_data_mark_failed)(void *cls,
-                                   uint64_t rowid);
+    (*wire_prepare_data_mark_failed)(void *cls,
+                                     uint64_t rowid);
 
 
   /**
@@ -5060,11 +5093,11 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*wire_prepare_data_get)(void *cls,
-                           uint64_t start_row,
-                           uint64_t limit,
-                           TALER_EXCHANGEDB_WirePreparationIterator cb,
-                           void *cb_cls);
+    (*wire_prepare_data_get)(void *cls,
+                             uint64_t start_row,
+                             uint64_t limit,
+                             TALER_EXCHANGEDB_WirePreparationIterator cb,
+                             void *cb_cls);
 
 
   /**
@@ -5076,7 +5109,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return #GNUNET_OK on success
    */
   enum GNUNET_GenericReturnValue
-  (*start_deferred_wire_out)(void *cls);
+    (*start_deferred_wire_out)(void *cls);
 
 
   /**
@@ -5093,7 +5126,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*store_wire_transfer_out)(
+    (*store_wire_transfer_out)(
     void *cls,
     struct GNUNET_TIME_Timestamp date,
     const struct TALER_WireTransferIdentifierRawP *wtid,
@@ -5111,7 +5144,7 @@ struct TALER_EXCHANGEDB_Plugin
    *         #GNUNET_SYSERR on DB errors
    */
   enum GNUNET_GenericReturnValue
-  (*gc)(void *cls);
+    (*gc)(void *cls);
 
 
   /**
@@ -5125,10 +5158,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_coin_deposits_above_serial_id)(void *cls,
-                                          uint64_t serial_id,
-                                          TALER_EXCHANGEDB_DepositCallback cb,
-                                          void *cb_cls);
+    (*select_coin_deposits_above_serial_id)(void *cls,
+                                            uint64_t serial_id,
+                                            TALER_EXCHANGEDB_DepositCallback 
cb,
+                                            void *cb_cls);
 
 
   /**
@@ -5142,7 +5175,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_purse_requests_above_serial_id)(
+    (*select_purse_requests_above_serial_id)(
     void *cls,
     uint64_t serial_id,
     TALER_EXCHANGEDB_PurseRequestCallback cb,
@@ -5160,7 +5193,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_purse_deposits_above_serial_id)(
+    (*select_purse_deposits_above_serial_id)(
     void *cls,
     uint64_t serial_id,
     TALER_EXCHANGEDB_PurseDepositCallback cb,
@@ -5178,7 +5211,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_account_merges_above_serial_id)(
+    (*select_account_merges_above_serial_id)(
     void *cls,
     uint64_t serial_id,
     TALER_EXCHANGEDB_AccountMergeCallback cb,
@@ -5196,7 +5229,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_purse_merges_above_serial_id)(
+    (*select_purse_merges_above_serial_id)(
     void *cls,
     uint64_t serial_id,
     TALER_EXCHANGEDB_PurseMergeCallback cb,
@@ -5215,7 +5248,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_purse_decisions_above_serial_id)(
+    (*select_purse_decisions_above_serial_id)(
     void *cls,
     uint64_t serial_id,
     bool refunded,
@@ -5234,7 +5267,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_all_purse_decisions_above_serial_id)(
+    (*select_all_purse_decisions_above_serial_id)(
     void *cls,
     uint64_t serial_id,
     TALER_EXCHANGEDB_AllPurseDecisionCallback cb,
@@ -5251,7 +5284,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_purse_deposits_by_purse)(
+    (*select_purse_deposits_by_purse)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     TALER_EXCHANGEDB_PurseRefundCoinCallback cb,
@@ -5269,10 +5302,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_refreshes_above_serial_id)(void *cls,
-                                      uint64_t serial_id,
-                                      TALER_EXCHANGEDB_RefreshesCallback cb,
-                                      void *cb_cls);
+    (*select_refreshes_above_serial_id)(void *cls,
+                                        uint64_t serial_id,
+                                        TALER_EXCHANGEDB_RefreshesCallback cb,
+                                        void *cb_cls);
 
 
   /**
@@ -5286,10 +5319,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_refunds_above_serial_id)(void *cls,
-                                    uint64_t serial_id,
-                                    TALER_EXCHANGEDB_RefundCallback cb,
-                                    void *cb_cls);
+    (*select_refunds_above_serial_id)(void *cls,
+                                      uint64_t serial_id,
+                                      TALER_EXCHANGEDB_RefundCallback cb,
+                                      void *cb_cls);
 
 
   /**
@@ -5303,10 +5336,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_reserves_in_above_serial_id)(void *cls,
-                                        uint64_t serial_id,
-                                        TALER_EXCHANGEDB_ReserveInCallback cb,
-                                        void *cb_cls);
+    (*select_reserves_in_above_serial_id)(void *cls,
+                                          uint64_t serial_id,
+                                          TALER_EXCHANGEDB_ReserveInCallback 
cb,
+                                          void *cb_cls);
 
 
   /**
@@ -5321,7 +5354,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_reserves_in_above_serial_id_by_account)(
+    (*select_reserves_in_above_serial_id_by_account)(
     void *cls,
     const char *account_name,
     uint64_t serial_id,
@@ -5341,7 +5374,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_withdrawals_above_serial_id)(
+    (*select_withdrawals_above_serial_id)(
     void *cls,
     uint64_t serial_id,
     TALER_EXCHANGEDB_WithdrawCallback cb,
@@ -5359,10 +5392,11 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_wire_out_above_serial_id)(void *cls,
-                                     uint64_t serial_id,
-                                     TALER_EXCHANGEDB_WireTransferOutCallback 
cb,
-                                     void *cb_cls);
+    (*select_wire_out_above_serial_id)(void *cls,
+                                       uint64_t serial_id,
+                                       TALER_EXCHANGEDB_WireTransferOutCallback
+                                       cb,
+                                       void *cb_cls);
 
   /**
    * Function called to select outgoing wire transfers the exchange
@@ -5376,7 +5410,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_wire_out_above_serial_id_by_account)(
+    (*select_wire_out_above_serial_id_by_account)(
     void *cls,
     const char *account_name,
     uint64_t serial_id,
@@ -5395,10 +5429,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_recoup_above_serial_id)(void *cls,
-                                   uint64_t serial_id,
-                                   TALER_EXCHANGEDB_RecoupCallback cb,
-                                   void *cb_cls);
+    (*select_recoup_above_serial_id)(void *cls,
+                                     uint64_t serial_id,
+                                     TALER_EXCHANGEDB_RecoupCallback cb,
+                                     void *cb_cls);
 
 
   /**
@@ -5412,7 +5446,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_recoup_refresh_above_serial_id)(
+    (*select_recoup_refresh_above_serial_id)(
     void *cls,
     uint64_t serial_id,
     TALER_EXCHANGEDB_RecoupRefreshCallback cb,
@@ -5430,7 +5464,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_reserve_open_above_serial_id)(
+    (*select_reserve_open_above_serial_id)(
     void *cls,
     uint64_t serial_id,
     TALER_EXCHANGEDB_ReserveOpenCallback cb,
@@ -5448,7 +5482,7 @@ struct TALER_EXCHANGEDB_Plugin
  * @return transaction status code
  */
   enum GNUNET_DB_QueryStatus
-  (*select_reserve_closed_above_serial_id)(
+    (*select_reserve_closed_above_serial_id)(
     void *cls,
     uint64_t serial_id,
     TALER_EXCHANGEDB_ReserveClosedCallback cb,
@@ -5466,7 +5500,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_reserve_by_h_blind)(
+    (*get_reserve_by_h_blind)(
     void *cls,
     const struct TALER_BlindedCoinHashP *bch,
     struct TALER_ReservePublicKeyP *reserve_pub,
@@ -5484,7 +5518,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_old_coin_by_h_blind)(
+    (*get_old_coin_by_h_blind)(
     void *cls,
     const struct TALER_BlindedCoinHashP *h_blind_ev,
     struct TALER_CoinSpendPublicKeyP *old_coin_pub,
@@ -5501,7 +5535,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_denomination_revocation)(
+    (*insert_denomination_revocation)(
     void *cls,
     const struct TALER_DenominationHashP *denom_pub_hash,
     const struct TALER_MasterSignatureP *master_sig);
@@ -5518,7 +5552,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_denomination_revocation)(
+    (*get_denomination_revocation)(
     void *cls,
     const struct TALER_DenominationHashP *denom_pub_hash,
     struct TALER_MasterSignatureP *master_sig,
@@ -5536,7 +5570,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_batch_deposits_missing_wire)(
+    (*select_batch_deposits_missing_wire)(
     void *cls,
     uint64_t min_batch_deposit_serial_id,
     TALER_EXCHANGEDB_WireMissingCallback cb,
@@ -5554,7 +5588,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_aggregations_above_serial)(
+    (*select_aggregations_above_serial)(
     void *cls,
     uint64_t min_tracking_serial_id,
     TALER_EXCHANGEDB_AggregationCallback cb,
@@ -5576,7 +5610,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_justification_for_missing_wire)(
+    (*select_justification_for_missing_wire)(
     void *cls,
     const struct TALER_PaytoHashP *wire_target_h_payto,
     char **payto_uri,
@@ -5594,7 +5628,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_auditor_timestamp)(
+    (*lookup_auditor_timestamp)(
     void *cls,
     const struct TALER_AuditorPublicKeyP *auditor_pub,
     struct GNUNET_TIME_Timestamp *last_date);
@@ -5611,7 +5645,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_auditor_status)(
+    (*lookup_auditor_status)(
     void *cls,
     const struct TALER_AuditorPublicKeyP *auditor_pub,
     char **auditor_url,
@@ -5630,7 +5664,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_auditor)(
+    (*insert_auditor)(
     void *cls,
     const struct TALER_AuditorPublicKeyP *auditor_pub,
     const char *auditor_url,
@@ -5651,7 +5685,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*update_auditor)(
+    (*update_auditor)(
     void *cls,
     const struct TALER_AuditorPublicKeyP *auditor_pub,
     const char *auditor_url,
@@ -5669,9 +5703,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_wire_timestamp)(void *cls,
-                           const char *payto_uri,
-                           struct GNUNET_TIME_Timestamp *last_date);
+    (*lookup_wire_timestamp)(void *cls,
+                             const char *payto_uri,
+                             struct GNUNET_TIME_Timestamp *last_date);
 
 
   /**
@@ -5689,13 +5723,13 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_wire)(void *cls,
-                 const char *payto_uri,
-                 const char *conversion_url,
-                 const json_t *debit_restrictions,
-                 const json_t *credit_restrictions,
-                 struct GNUNET_TIME_Timestamp start_date,
-                 const struct TALER_MasterSignatureP *master_sig);
+    (*insert_wire)(void *cls,
+                   const char *payto_uri,
+                   const char *conversion_url,
+                   const json_t *debit_restrictions,
+                   const json_t *credit_restrictions,
+                   struct GNUNET_TIME_Timestamp start_date,
+                   const struct TALER_MasterSignatureP *master_sig);
 
 
   /**
@@ -5712,13 +5746,13 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*update_wire)(void *cls,
-                 const char *payto_uri,
-                 const char *conversion_url,
-                 const json_t *debit_restrictions,
-                 const json_t *credit_restrictions,
-                 struct GNUNET_TIME_Timestamp change_date,
-                 bool enabled);
+    (*update_wire)(void *cls,
+                   const char *payto_uri,
+                   const char *conversion_url,
+                   const json_t *debit_restrictions,
+                   const json_t *credit_restrictions,
+                   struct GNUNET_TIME_Timestamp change_date,
+                   bool enabled);
 
 
   /**
@@ -5730,9 +5764,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_wire_accounts)(void *cls,
-                       TALER_EXCHANGEDB_WireAccountCallback cb,
-                       void *cb_cls);
+    (*get_wire_accounts)(void *cls,
+                         TALER_EXCHANGEDB_WireAccountCallback cb,
+                         void *cb_cls);
 
 
   /**
@@ -5746,10 +5780,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_wire_fees)(void *cls,
-                   const char *wire_method,
-                   TALER_EXCHANGEDB_WireFeeCallback cb,
-                   void *cb_cls);
+    (*get_wire_fees)(void *cls,
+                     const char *wire_method,
+                     TALER_EXCHANGEDB_WireFeeCallback cb,
+                     void *cb_cls);
 
 
   /**
@@ -5761,9 +5795,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_global_fees)(void *cls,
-                     TALER_EXCHANGEDB_GlobalFeeCallback cb,
-                     void *cb_cls);
+    (*get_global_fees)(void *cls,
+                       TALER_EXCHANGEDB_GlobalFeeCallback cb,
+                       void *cb_cls);
 
 
   /**
@@ -5775,7 +5809,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_signkey_revocation)(
+    (*insert_signkey_revocation)(
     void *cls,
     const struct TALER_ExchangePublicKeyP *exchange_pub,
     const struct TALER_MasterSignatureP *master_sig);
@@ -5790,7 +5824,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_signkey_revocation)(
+    (*lookup_signkey_revocation)(
     void *cls,
     const struct TALER_ExchangePublicKeyP *exchange_pub,
     struct TALER_MasterSignatureP *master_sig);
@@ -5805,7 +5839,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_denomination_key)(
+    (*lookup_denomination_key)(
     void *cls,
     const struct TALER_DenominationHashP *h_denom_pub,
     struct TALER_EXCHANGEDB_DenominationKeyMetaData *meta);
@@ -5822,7 +5856,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*add_denomination_key)(
+    (*add_denomination_key)(
     void *cls,
     const struct TALER_DenominationHashP *h_denom_pub,
     const struct TALER_DenominationPublicKey *denom_pub,
@@ -5841,7 +5875,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*activate_signing_key)(
+    (*activate_signing_key)(
     void *cls,
     const struct TALER_ExchangePublicKeyP *exchange_pub,
     const struct TALER_EXCHANGEDB_SignkeyMetaData *meta,
@@ -5857,7 +5891,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_signing_key)(
+    (*lookup_signing_key)(
     void *cls,
     const struct TALER_ExchangePublicKeyP *exchange_pub,
     struct TALER_EXCHANGEDB_SignkeyMetaData *meta);
@@ -5873,7 +5907,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_auditor_denom_sig)(
+    (*insert_auditor_denom_sig)(
     void *cls,
     const struct TALER_DenominationHashP *h_denom_pub,
     const struct TALER_AuditorPublicKeyP *auditor_pub,
@@ -5890,7 +5924,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_auditor_denom_sig)(
+    (*select_auditor_denom_sig)(
     void *cls,
     const struct TALER_DenominationHashP *h_denom_pub,
     const struct TALER_AuditorPublicKeyP *auditor_pub,
@@ -5910,7 +5944,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_wire_fee_by_time)(
+    (*lookup_wire_fee_by_time)(
     void *cls,
     const char *wire_method,
     struct GNUNET_TIME_Timestamp start_time,
@@ -5933,7 +5967,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_global_fee_by_time)(
+    (*lookup_global_fee_by_time)(
     void *cls,
     struct GNUNET_TIME_Timestamp start_time,
     struct GNUNET_TIME_Timestamp end_time,
@@ -5954,9 +5988,9 @@ struct TALER_EXCHANGEDB_Plugin
    *         @a table does not have a serial number
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_serial_by_table)(void *cls,
-                            enum TALER_EXCHANGEDB_ReplicatedTable table,
-                            uint64_t *serial);
+    (*lookup_serial_by_table)(void *cls,
+                              enum TALER_EXCHANGEDB_ReplicatedTable table,
+                              uint64_t *serial);
 
   /**
    * Lookup records above @a serial number in @a table. Used in
@@ -5971,11 +6005,11 @@ struct TALER_EXCHANGEDB_Plugin
    *         @a table does not have a serial number
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_records_by_table)(void *cls,
-                             enum TALER_EXCHANGEDB_ReplicatedTable table,
-                             uint64_t serial,
-                             TALER_EXCHANGEDB_ReplicationCallback cb,
-                             void *cb_cls);
+    (*lookup_records_by_table)(void *cls,
+                               enum TALER_EXCHANGEDB_ReplicatedTable table,
+                               uint64_t serial,
+                               TALER_EXCHANGEDB_ReplicationCallback cb,
+                               void *cb_cls);
 
 
   /**
@@ -5989,8 +6023,8 @@ struct TALER_EXCHANGEDB_Plugin
    *         @a table does not have a serial number
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_records_by_table)(void *cls,
-                             const struct TALER_EXCHANGEDB_TableData *td);
+    (*insert_records_by_table)(void *cls,
+                               const struct TALER_EXCHANGEDB_TableData *td);
 
 
   /**
@@ -6006,12 +6040,12 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*begin_shard)(void *cls,
-                 const char *job_name,
-                 struct GNUNET_TIME_Relative delay,
-                 uint64_t shard_size,
-                 uint64_t *start_row,
-                 uint64_t *end_row);
+    (*begin_shard)(void *cls,
+                   const char *job_name,
+                   struct GNUNET_TIME_Relative delay,
+                   uint64_t shard_size,
+                   uint64_t *start_row,
+                   uint64_t *end_row);
 
   /**
    * Function called to abort work on a shard.
@@ -6023,10 +6057,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*abort_shard)(void *cls,
-                 const char *job_name,
-                 uint64_t start_row,
-                 uint64_t end_row);
+    (*abort_shard)(void *cls,
+                   const char *job_name,
+                   uint64_t start_row,
+                   uint64_t end_row);
 
   /**
    * Function called to persist that work on a shard was completed.
@@ -6038,10 +6072,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*complete_shard)(void *cls,
-                    const char *job_name,
-                    uint64_t start_row,
-                    uint64_t end_row);
+    (*complete_shard)(void *cls,
+                      const char *job_name,
+                      uint64_t start_row,
+                      uint64_t end_row);
 
 
   /**
@@ -6057,12 +6091,12 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*begin_revolving_shard)(void *cls,
-                           const char *job_name,
-                           uint32_t shard_size,
-                           uint32_t shard_limit,
-                           uint32_t *start_row,
-                           uint32_t *end_row);
+    (*begin_revolving_shard)(void *cls,
+                             const char *job_name,
+                             uint32_t shard_size,
+                             uint32_t shard_limit,
+                             uint32_t *start_row,
+                             uint32_t *end_row);
 
 
   /**
@@ -6076,10 +6110,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*release_revolving_shard)(void *cls,
-                             const char *job_name,
-                             uint32_t start_row,
-                             uint32_t end_row);
+    (*release_revolving_shard)(void *cls,
+                               const char *job_name,
+                               uint32_t start_row,
+                               uint32_t end_row);
 
 
   /**
@@ -6092,7 +6126,7 @@ struct TALER_EXCHANGEDB_Plugin
    *         #GNUNET_SYSERR on failure
    */
   enum GNUNET_GenericReturnValue
-  (*delete_shard_locks)(void *cls);
+    (*delete_shard_locks)(void *cls);
 
 
   /**
@@ -6105,9 +6139,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*set_extension_manifest)(void *cls,
-                            const char *extension_name,
-                            const char *manifest);
+    (*set_extension_manifest)(void *cls,
+                              const char *extension_name,
+                              const char *manifest);
 
 
   /**
@@ -6120,9 +6154,9 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_extension_manifest)(void *cls,
-                            const char *extension_name,
-                            char **manifest);
+    (*get_extension_manifest)(void *cls,
+                              const char *extension_name,
+                              char **manifest);
 
 
   /**
@@ -6140,14 +6174,14 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_partner)(void *cls,
-                    const struct TALER_MasterPublicKeyP *master_pub,
-                    struct GNUNET_TIME_Timestamp start_date,
-                    struct GNUNET_TIME_Timestamp end_date,
-                    struct GNUNET_TIME_Relative wad_frequency,
-                    const struct TALER_Amount *wad_fee,
-                    const char *partner_base_url,
-                    const struct TALER_MasterSignatureP *master_sig);
+    (*insert_partner)(void *cls,
+                      const struct TALER_MasterPublicKeyP *master_pub,
+                      struct GNUNET_TIME_Timestamp start_date,
+                      struct GNUNET_TIME_Timestamp end_date,
+                      struct GNUNET_TIME_Relative wad_frequency,
+                      const struct TALER_Amount *wad_fee,
+                      const char *partner_base_url,
+                      const struct TALER_MasterSignatureP *master_sig);
 
 
   /**
@@ -6163,10 +6197,10 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_contract)(void *cls,
-                     const struct TALER_PurseContractPublicKeyP *purse_pub,
-                     const struct TALER_EncryptedContract *econtract,
-                     bool *in_conflict);
+    (*insert_contract)(void *cls,
+                       const struct TALER_PurseContractPublicKeyP *purse_pub,
+                       const struct TALER_EncryptedContract *econtract,
+                       bool *in_conflict);
 
 
   /**
@@ -6181,7 +6215,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_contract)(
+    (*select_contract)(
     void *cls,
     const struct TALER_ContractDiffiePublicP *pub_ckey,
     struct TALER_PurseContractPublicKeyP *purse_pub,
@@ -6199,7 +6233,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_contract_by_purse)(
+    (*select_contract_by_purse)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     struct TALER_EncryptedContract *econtract);
@@ -6225,7 +6259,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_purse_request)(
+    (*insert_purse_request)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     const struct TALER_PurseMergePublicKeyP *merge_pub,
@@ -6248,7 +6282,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code (#GNUNET_DB_STATUS_SUCCESS_NO_RESULTS if 
no purse expired in the given time interval).
    */
   enum GNUNET_DB_QueryStatus
-  (*expire_purse)(
+    (*expire_purse)(
     void *cls,
     struct GNUNET_TIME_Absolute start_time,
     struct GNUNET_TIME_Absolute end_time);
@@ -6269,7 +6303,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_purse)(
+    (*select_purse)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     struct GNUNET_TIME_Timestamp *purse_creation,
@@ -6297,7 +6331,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_purse_request)(
+    (*get_purse_request)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     struct TALER_PurseMergePublicKeyP *merge_pub,
@@ -6325,7 +6359,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_purse_by_merge_pub)(
+    (*select_purse_by_merge_pub)(
     void *cls,
     const struct TALER_PurseMergePublicKeyP *merge_pub,
     struct TALER_PurseContractPublicKeyP *purse_pub,
@@ -6361,7 +6395,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*do_purse_deposit)(
+    (*do_purse_deposit)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     const struct TALER_CoinSpendPublicKeyP *coin_pub,
@@ -6386,7 +6420,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*do_purse_delete)(
+    (*do_purse_delete)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     const struct TALER_PurseContractSignatureP *purse_sig,
@@ -6405,7 +6439,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*set_purse_balance)(
+    (*set_purse_balance)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     const struct TALER_Amount *balance);
@@ -6426,7 +6460,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_purse_deposit)(
+    (*get_purse_deposit)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     const struct TALER_CoinSpendPublicKeyP *coin_pub,
@@ -6456,7 +6490,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*do_purse_merge)(
+    (*do_purse_merge)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     const struct TALER_PurseMergeSignatureP *merge_sig,
@@ -6487,7 +6521,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*do_reserve_purse)(
+    (*do_reserve_purse)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     const struct TALER_PurseMergeSignatureP *merge_sig,
@@ -6513,7 +6547,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_purse_merge)(
+    (*select_purse_merge)(
     void *cls,
     const struct TALER_PurseContractPublicKeyP *purse_pub,
     struct TALER_PurseMergeSignatureP *merge_sig,
@@ -6535,13 +6569,13 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_close_request)(void *cls,
-                          const struct TALER_ReservePublicKeyP *reserve_pub,
-                          const char *payto_uri,
-                          const struct TALER_ReserveSignatureP *reserve_sig,
-                          struct GNUNET_TIME_Timestamp request_timestamp,
-                          const struct TALER_Amount *balance,
-                          const struct TALER_Amount *closing_fee);
+    (*insert_close_request)(void *cls,
+                            const struct TALER_ReservePublicKeyP *reserve_pub,
+                            const char *payto_uri,
+                            const struct TALER_ReserveSignatureP *reserve_sig,
+                            struct GNUNET_TIME_Timestamp request_timestamp,
+                            const struct TALER_Amount *balance,
+                            const struct TALER_Amount *closing_fee);
 
 
   /**
@@ -6557,13 +6591,13 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_drain_profit)(void *cls,
-                         const struct TALER_WireTransferIdentifierRawP *wtid,
-                         const char *account_section,
-                         const char *payto_uri,
-                         struct GNUNET_TIME_Timestamp request_timestamp,
-                         const struct TALER_Amount *amount,
-                         const struct TALER_MasterSignatureP *master_sig);
+    (*insert_drain_profit)(void *cls,
+                           const struct TALER_WireTransferIdentifierRawP *wtid,
+                           const char *account_section,
+                           const char *payto_uri,
+                           struct GNUNET_TIME_Timestamp request_timestamp,
+                           const struct TALER_Amount *amount,
+                           const struct TALER_MasterSignatureP *master_sig);
 
 
   /**
@@ -6580,14 +6614,14 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*get_drain_profit)(void *cls,
-                      const struct TALER_WireTransferIdentifierRawP *wtid,
-                      uint64_t *serial,
-                      char **account_section,
-                      char **payto_uri,
-                      struct GNUNET_TIME_Timestamp *request_timestamp,
-                      struct TALER_Amount *amount,
-                      struct TALER_MasterSignatureP *master_sig);
+    (*get_drain_profit)(void *cls,
+                        const struct TALER_WireTransferIdentifierRawP *wtid,
+                        uint64_t *serial,
+                        char **account_section,
+                        char **payto_uri,
+                        struct GNUNET_TIME_Timestamp *request_timestamp,
+                        struct TALER_Amount *amount,
+                        struct TALER_MasterSignatureP *master_sig);
 
 
   /**
@@ -6604,7 +6638,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*profit_drains_get_pending)(
+    (*profit_drains_get_pending)(
     void *cls,
     uint64_t *serial,
     struct TALER_WireTransferIdentifierRawP *wtid,
@@ -6623,7 +6657,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*profit_drains_set_finished)(
+    (*profit_drains_set_finished)(
     void *cls,
     uint64_t serial);
 
@@ -6639,7 +6673,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_kyc_requirement_for_account)(
+    (*insert_kyc_requirement_for_account)(
     void *cls,
     const char *requirements,
     const struct TALER_PaytoHashP *h_payto,
@@ -6659,7 +6693,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_kyc_requirement_process)(
+    (*insert_kyc_requirement_process)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     const char *provider_section,
@@ -6678,7 +6712,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*get_pending_kyc_requirement_process)(
+    (*get_pending_kyc_requirement_process)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     const char *provider_section,
@@ -6700,7 +6734,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*update_kyc_process_by_row)(
+    (*update_kyc_process_by_row)(
     void *cls,
     uint64_t process_row,
     const char *provider_section,
@@ -6722,7 +6756,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_kyc_requirement_by_row)(
+    (*lookup_kyc_requirement_by_row)(
     void *cls,
     uint64_t requirement_row,
     char **requirements,
@@ -6743,7 +6777,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_kyc_process_by_account)(
+    (*lookup_kyc_process_by_account)(
     void *cls,
     const char *provider_section,
     const struct TALER_PaytoHashP *h_payto,
@@ -6765,7 +6799,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*kyc_provider_account_lookup)(
+    (*kyc_provider_account_lookup)(
     void *cls,
     const char *provider_section,
     const char *provider_legitimization_id,
@@ -6784,7 +6818,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*select_satisfied_kyc_processes)(
+    (*select_satisfied_kyc_processes)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     TALER_EXCHANGEDB_SatisfiedProviderCallback spc,
@@ -6802,7 +6836,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
-  (*iterate_kyc_reference)(
+    (*iterate_kyc_reference)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     TALER_EXCHANGEDB_LegitimizationProcessCallback lpc,
@@ -6821,7 +6855,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code, @a kac aborting with #GNUNET_NO is not 
an error
    */
   enum GNUNET_DB_QueryStatus
-  (*select_withdraw_amounts_for_kyc_check)(
+    (*select_withdraw_amounts_for_kyc_check)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     struct GNUNET_TIME_Absolute time_limit,
@@ -6841,7 +6875,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code, @a kac aborting with #GNUNET_NO is not 
an error
    */
   enum GNUNET_DB_QueryStatus
-  (*select_aggregation_amounts_for_kyc_check)(
+    (*select_aggregation_amounts_for_kyc_check)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     struct GNUNET_TIME_Absolute time_limit,
@@ -6861,7 +6895,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return transaction status code, @a kac aborting with #GNUNET_NO is not 
an error
    */
   enum GNUNET_DB_QueryStatus
-  (*select_merge_amounts_for_kyc_check)(
+    (*select_merge_amounts_for_kyc_check)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     struct GNUNET_TIME_Absolute time_limit,
@@ -6891,7 +6925,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_kyc_attributes)(
+    (*insert_kyc_attributes)(
     void *cls,
     uint64_t process_row,
     const struct TALER_PaytoHashP *h_payto,
@@ -6919,7 +6953,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*select_similar_kyc_attributes)(
+    (*select_similar_kyc_attributes)(
     void *cls,
     const struct GNUNET_ShortHashCode *kyc_prox,
     TALER_EXCHANGEDB_AttributeCallback cb,
@@ -6936,7 +6970,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*select_kyc_attributes)(
+    (*select_kyc_attributes)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     TALER_EXCHANGEDB_AttributeCallback cb,
@@ -6957,7 +6991,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_aml_officer)(
+    (*insert_aml_officer)(
     void *cls,
     const struct TALER_AmlOfficerPublicKeyP *decider_pub,
     const struct TALER_MasterSignatureP *master_sig,
@@ -6977,7 +7011,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status, if member is unknown or not active, 
1 if member is active
    */
   enum GNUNET_DB_QueryStatus
-  (*test_aml_officer)(
+    (*test_aml_officer)(
     void *cls,
     const struct TALER_AmlOfficerPublicKeyP *decider_pub);
 
@@ -6995,7 +7029,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*lookup_aml_officer)(
+    (*lookup_aml_officer)(
     void *cls,
     const struct TALER_AmlOfficerPublicKeyP *decider_pub,
     struct TALER_MasterSignatureP *master_sig,
@@ -7015,7 +7049,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status, 0 if no threshold was set
    */
   enum GNUNET_DB_QueryStatus
-  (*select_aml_threshold)(
+    (*select_aml_threshold)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     enum TALER_AmlDecisionState *decision,
@@ -7033,7 +7067,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*trigger_aml_process)(
+    (*trigger_aml_process)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     const struct TALER_Amount *threshold_crossed);
@@ -7051,7 +7085,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*select_aml_process)(
+    (*select_aml_process)(
     void *cls,
     enum TALER_AmlDecisionState decision,
     uint64_t row_off,
@@ -7071,7 +7105,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*select_aml_history)(
+    (*select_aml_history)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     TALER_EXCHANGEDB_AmlHistoryCallback cb,
@@ -7098,7 +7132,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus
-  (*insert_aml_decision)(
+    (*insert_aml_decision)(
     void *cls,
     const struct TALER_PaytoHashP *h_payto,
     const struct TALER_Amount *new_threshold,

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]