gnunet-svn
[Top][All Lists]
Advanced

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

[taler-donau] branch master updated: [donau] some changes on keys


From: gnunet
Subject: [taler-donau] branch master updated: [donau] some changes on keys
Date: Tue, 19 Dec 2023 00:44:21 +0100

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

lukas-matyja pushed a commit to branch master
in repository donau.

The following commit(s) were added to refs/heads/master by this push:
     new a10a8ef  [donau] some changes on keys
a10a8ef is described below

commit a10a8efbfa1e3f0d3b4b50ebe46c10076edc7e0c
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
AuthorDate: Tue Dec 19 00:44:37 2023 +0100

    [donau] some changes on keys
---
 src/donau/donau-httpd.c      |   8 -
 src/donau/donau-httpd.h      |  54 +-----
 src/donau/donau-httpd_keys.c | 417 ++++---------------------------------------
 src/donau/donau-httpd_keys.h |  53 +++++-
 4 files changed, 91 insertions(+), 441 deletions(-)

diff --git a/src/donau/donau-httpd.c b/src/donau/donau-httpd.c
index e3f9dea..299240a 100644
--- a/src/donau/donau-httpd.c
+++ b/src/donau/donau-httpd.c
@@ -70,14 +70,6 @@ static int allow_address_reuse;
  */
 const struct GNUNET_CONFIGURATION_Handle *DH_cfg;
 
-/**
- * Configuration of age restriction
- *
- * Set after loading the library, enabled in database event handler.
- */
-bool DH_age_restriction_enabled = false;
-struct TALER_AgeRestrictionConfig DH_age_restriction_config = {0};
-
 /**
  * Handle to the HTTP server.
  */
diff --git a/src/donau/donau-httpd.h b/src/donau/donau-httpd.h
index 5550330..eac4efd 100644
--- a/src/donau/donau-httpd.h
+++ b/src/donau/donau-httpd.h
@@ -35,11 +35,6 @@
  */
 extern struct GNUNET_TIME_Relative DH_max_keys_caching;
 
-/**
- * How long is the delay before we close reserves?
- */
-extern struct GNUNET_TIME_Relative DH_reserve_closing_delay;
-
 /**
  * The donau's configuration.
  */
@@ -61,17 +56,12 @@ extern int DH_check_invariants_flag;
  * as building new /keys responses is expensive. Should only be
  * enabled for testcases, development and test systems.
  */
-extern int DH_allow_keys_timetravel;
+//extern int DH_allow_keys_timetravel;
 
 /**
- * Option set to #GNUNET_YES if rewards are allowed.
+ * Main directory with   data.
  */
-extern int DH_enable_rewards;
-
-/**
- * Main directory with revocation data.
- */
-extern char *DH_revocation_directory;
+//extern char *DH_revocation_directory;
 
 /**
  * True if we should commit suicide once all active
@@ -96,21 +86,6 @@ extern struct TALER_AttributeEncryptionKeyP DH_attribute_key;
  */
 extern struct DONAUDB_Plugin *DH_plugin;
 
-/**
- * Absolute STEFAN parameter.
- */
-extern struct TALER_Amount DH_stefan_abs;
-
-/**
- * Logarithmic STEFAN parameter.
- */
-extern struct TALER_Amount DH_stefan_log;
-
-/**
- * Linear STEFAN parameter.
- */
-extern struct TALER_Amount DH_stefan_lin;
-
 /**
  * Default number of fractional digits to render
  * amounts with.
@@ -122,18 +97,6 @@ extern unsigned int DH_currency_fraction_digits;
  */
 extern char *DH_currency;
 
-/**
- * Name of the KYC-AML-trigger evaluation binary.
- */
-extern char *DH_kyc_aml_trigger;
-
-/**
- * What is the largest amount we allow a peer to
- * merge into a reserve before always triggering
- * an AML check?
- */
-extern struct TALER_Amount DH_aml_threshold;
-
 /**
  * Our (externally visible) base URL.
  */
@@ -149,12 +112,6 @@ extern volatile bool MHD_terminating;
  */
 extern struct GNUNET_CURL_Context *DH_curl_ctx;
 
-/*
- * Signature of the offline master key of all enabled extensions' configuration
- */
-extern struct TALER_MasterSignatureP DH_extensions_sig;
-extern bool DH_extensions_signed;
-
 /**
  * @brief Struct describing an URL and the handler for it.
  */
@@ -308,9 +265,4 @@ struct DH_RequestHandler
   bool nargs_is_upper_bound;
 };
 
-
-/* Age restriction configuration */
-extern bool DH_age_restriction_enabled;
-extern struct TALER_AgeRestrictionConfig DH_age_restriction_config;
-
 #endif
diff --git a/src/donau/donau-httpd_keys.c b/src/donau/donau-httpd_keys.c
index 8aa634d..3ed384f 100644
--- a/src/donau/donau-httpd_keys.c
+++ b/src/donau/donau-httpd_keys.c
@@ -22,12 +22,10 @@
 #include "taler/platform.h"
 #include "taler/taler_json_lib.h"
 #include "taler/taler_mhd_lib.h"
-#include "taler_kyclogic_lib.h"
-#include "taler_dbevents.h"
-#include "taler-donau-httpd.h"
-#include "taler-donau-httpd_config.h"
-#include "taler-donau-httpd_keys.h"
-#include "taler-donau-httpd_responses.h"
+#include "donau-httpd.h"
+//#include "donau-httpd_config.h"
+#include "donau-httpd_keys.h"
+#include "donau-httpd_responses.h"
 #include "donaudb_plugin.h"
 #include "taler/taler_extensions.h"
 
@@ -54,13 +52,13 @@ struct HelperDenomination
   /**
    * When will the helper start to use this key for signing?
    */
-  struct GNUNET_TIME_Timestamp start_time;
+  //struct GNUNET_TIME_Timestamp start_time;
 
   /**
    * For how long will the helper allow signing? 0 if
    * the key was revoked or purged.
    */
-  struct GNUNET_TIME_Relative validity_duration;
+  //struct GNUNET_TIME_Relative validity_duration;
 
   /**
    * Hash of the full denomination key.
@@ -70,7 +68,7 @@ struct HelperDenomination
   /**
    * Signature over this key from the security module's key.
    */
-  struct TALER_SecurityModuleSignatureP sm_sig;
+  struct TALER_SecurityModuleSignatureP sm_sig; // when to use the module key 
and when the master key?
 
   /**
    * The (full) public key.
@@ -107,29 +105,29 @@ struct HelperDenomination
 /**
  * Signatures of an auditor over a denomination key of this donau.
  */
-struct DH_AuditorSignature
-{
-  /**
-   * We store the signatures in a DLL.
-   */
-  struct DH_AuditorSignature *prev;
+// struct DH_AuditorSignature
+// {
+//   /**
+//    * We store the signatures in a DLL.
+//    */
+//   struct DH_AuditorSignature *prev;
 
-  /**
-   * We store the signatures in a DLL.
-   */
-  struct DH_AuditorSignature *next;
+//   /**
+//    * We store the signatures in a DLL.
+//    */
+//   struct DH_AuditorSignature *next;
 
-  /**
-   * A signature from the auditor.
-   */
-  struct TALER_AuditorSignatureP asig;
+//   /**
+//    * A signature from the auditor.
+//    */
+//   struct TALER_AuditorSignatureP asig;
 
-  /**
-   * Public key of the auditor.
-   */
-  struct TALER_AuditorPublicKeyP apub;
+//   /**
+//    * Public key of the auditor.
+//    */
+//   struct TALER_AuditorPublicKeyP apub;
 
-};
+// };
 
 
 /**
@@ -140,13 +138,13 @@ struct HelperSignkey
   /**
    * When will the helper start to use this key for signing?
    */
-  struct GNUNET_TIME_Timestamp start_time;
+  //struct GNUNET_TIME_Timestamp start_time;
 
   /**
    * For how long will the helper allow signing? 0 if
    * the key was revoked or purged.
    */
-  struct GNUNET_TIME_Relative validity_duration;
+  //struct GNUNET_TIME_Relative validity_duration;
 
   /**
    * The public key.
@@ -238,7 +236,7 @@ struct KeysResponseData
    * The client's request must include this date or a higher one
    * for this response to be applicable.
    */
-  struct GNUNET_TIME_Timestamp cherry_pick_date;
+  struct GNUNET_TIME_Timestamp cherry_pick_date; 
 
 };
 
@@ -264,7 +262,7 @@ struct SigningKey
    * The long-term offline master key's signature for this signing key.
    * Signs over @e donau_pub and @e meta.
    */
-  struct TALER_MasterSignatureP master_sig;
+  //struct TALER_MasterSignatureP master_sig;
 
 };
 
@@ -284,28 +282,6 @@ struct DH_KeyStateHandle
    */
   struct GNUNET_CONTAINER_MultiPeerMap *signkey_map;
 
-  /**
-   * Head of DLL of our global fees.
-   */
-  struct DH_GlobalFee *gf_head;
-
-  /**
-   * Tail of DLL of our global fees.
-   */
-  struct DH_GlobalFee *gf_tail;
-
-  /**
-   * json array with the auditors of this donau. Contains exactly
-   * the information needed for the "auditors" field of the /keys response.
-   */
-  json_t *auditors;
-
-  /**
-   * json array with the global fees of this donau. Contains exactly
-   * the information needed for the "global_fees" field of the /keys response.
-   */
-  json_t *global_fees;
-
   /**
    * Sorted array of responses to /keys (MUST be sorted by cherry-picking 
date) of
    * length @e krd_array_length;
@@ -338,19 +314,19 @@ struct DH_KeyStateHandle
   /**
    * When did we initiate the key reloading?
    */
-  struct GNUNET_TIME_Timestamp reload_time;
+  //struct GNUNET_TIME_Timestamp reload_time;
 
   /**
    * What is the period at which we rotate keys
    * (signing or denomination keys)?
    */
-  struct GNUNET_TIME_Relative rekey_frequency;
+  //struct GNUNET_TIME_Relative rekey_frequency;
 
   /**
    * When does our online signing key expire and we
    * thus need to re-generate this response?
    */
-  struct GNUNET_TIME_Timestamp signature_expires;
+  //struct GNUNET_TIME_Timestamp signature_expires;
 
   /**
    * True if #finish_keys_response() was not yet run and this key state
@@ -646,7 +622,7 @@ check_denom_rsa_sm_pub (const struct 
TALER_SecurityModulePublicKeyP *sm_pub)
                   "Our RSA security module changed its key. This must not 
happen.\n");
       GNUNET_assert (0);
     }
-    denom_rsa_sm_pub = *sm_pub; /* TOFU ;-) */
+    denom_rsa_sm_pub = *sm_pub; /* TOFU ;-) Trust on first use?*/
   }
 }
 
@@ -1182,16 +1158,8 @@ static void
 destroy_key_state (struct DH_KeyStateHandle *ksh,
                    bool free_helper)
 {
-  struct DH_GlobalFee *gf;
-
   clear_response_cache (ksh);
-  while (NULL != (gf = ksh->gf_head))
-  {
-    GNUNET_CONTAINER_DLL_remove (ksh->gf_head,
-                                 ksh->gf_tail,
-                                 gf);
-    GNUNET_free (gf);
-  }
+
   GNUNET_CONTAINER_multihashmap_iterate (ksh->denomkey_map,
                                          &clear_denomination_cb,
                                          ksh);
@@ -1200,10 +1168,6 @@ destroy_key_state (struct DH_KeyStateHandle *ksh,
                                          &clear_signkey_cb,
                                          ksh);
   GNUNET_CONTAINER_multipeermap_destroy (ksh->signkey_map);
-  json_decref (ksh->auditors);
-  ksh->auditors = NULL;
-  json_decref (ksh->global_fees);
-  ksh->global_fees = NULL;
   if (free_helper)
   {
     destroy_key_helpers (ksh->helpers);
@@ -1316,7 +1280,7 @@ DH_keys_finished ()
  * @param cls closure with a `struct DH_KeyStateHandle *`
  * @param denom_pub public key of the denomination
  * @param h_denom_pub hash of @a denom_pub
- * @param meta meta data information about the denomination type (value, 
expirations, fees)
+ * @param meta meta data information about the denomination type (value, year)
  * @param master_sig master signature affirming the validity of this 
denomination
  * @param recoup_possible true if the key was revoked and clients can 
currently recoup
  *        coins of this denomination
@@ -1341,7 +1305,6 @@ denomination_info_cb (
         meta->expire_deposit,
         meta->expire_legal,
         &meta->value,
-        &meta->fees,
         &DH_master_public_key,
         master_sig))
   {
@@ -1901,12 +1864,6 @@ create_krd (struct DH_KeyStateHandle *ksh,
                              DH_currency),
     GNUNET_JSON_pack_uint64 ("currency_fraction_digits",
                              DH_currency_fraction_digits),
-    TALER_JSON_pack_amount ("stefan_abs",
-                            &DH_stefan_abs),
-    TALER_JSON_pack_amount ("stefan_log",
-                            &DH_stefan_log),
-    TALER_JSON_pack_amount ("stefan_lin",
-                            &DH_stefan_lin),
     GNUNET_JSON_pack_string ("asset_type",
                              asset_type),
     GNUNET_JSON_pack_bool ("rewards_allowed",
@@ -1926,15 +1883,8 @@ create_krd (struct DH_KeyStateHandle *ksh,
     GNUNET_JSON_pack_array_incref ("accounts",
                                    json_object_get (wsh->json_reply,
                                                     "accounts")),
-    GNUNET_JSON_pack_object_incref ("wire_fees",
-                                    json_object_get (wsh->json_reply,
-                                                     "fees")),
     GNUNET_JSON_pack_array_incref ("denominations",
                                    grouped_denominations),
-    GNUNET_JSON_pack_array_incref ("auditors",
-                                   ksh->auditors),
-    GNUNET_JSON_pack_array_incref ("global_fees",
-                                   ksh->global_fees),
     GNUNET_JSON_pack_timestamp ("list_issue_date",
                                 last_cherry_pick_date),
     GNUNET_JSON_pack_data_auto ("eddsa_pub",
@@ -1945,23 +1895,6 @@ create_krd (struct DH_KeyStateHandle *ksh,
                                 &grouped_donau_sig));
   GNUNET_assert (NULL != keys);
 
-  /* Set wallet limit if KYC is configured */
-  {
-    json_t *wblwk = NULL;
-
-    TALER_KYCLOGIC_kyc_iterate_thresholds (
-      TALER_KYCLOGIC_KYC_TRIGGER_WALLET_BALANCE,
-      &wallet_threshold_cb,
-      &wblwk);
-    if (NULL != wblwk)
-      GNUNET_assert (
-        0 ==
-        json_object_set_new (
-          keys,
-          "wallet_balance_limit_without_kyc",
-          wblwk));
-  }
-
   /* Signal support for the configured, enabled extensions. */
   {
     json_t *extensions = json_object ();
@@ -2235,7 +2168,7 @@ finish_keys_response (struct DH_KeyStateHandle *ksh)
 
       last_cherry_pick_date = dk->meta.start;
       /*
-       * Group the denominations by {cipher, value, fees, age_mask}.
+       * Group the denominations by {cipher, value}.
        *
        * For each group we save the group meta-data and the list of
        * denominations in this group as a json-blob in the multihashmap
@@ -2249,9 +2182,7 @@ finish_keys_response (struct DH_KeyStateHandle *ksh)
         struct GNUNET_HashCode key;
         struct TALER_DenominationGroup meta = {
           .cipher = dk->denom_pub.cipher,
-          .value = dk->meta.value,
-          .fees = dk->meta.fees,
-          .age_mask = dk->meta.age_mask,
+          .value = dk->meta.value
         };
 
         /* Search the group/JSON-blob for the key */
@@ -2282,8 +2213,6 @@ finish_keys_response (struct DH_KeyStateHandle *ksh)
           group->json = GNUNET_JSON_PACK (
             GNUNET_JSON_pack_string ("cipher",
                                      cipher),
-            TALER_JSON_PACK_DENOM_FEES ("fee",
-                                        &meta.fees),
             TALER_JSON_pack_amount ("value",
                                     &meta.value));
           GNUNET_assert (NULL != group->json);
@@ -2485,83 +2414,6 @@ CLEANUP:
 }
 
 
-/**
- * Called with information about global fees.
- *
- * @param cls `struct DH_KeyStateHandle *` we are building
- * @param fees the global fees we charge
- * @param purse_timeout when do purses time out
- * @param history_expiration how long are account histories preserved
- * @param purse_account_limit how many purses are free per account
- * @param start_date from when are these fees valid (start date)
- * @param end_date until when are these fees valid (end date, exclusive)
- * @param master_sig master key signature affirming that this is the correct
- *                   fee (of purpose #TALER_SIGNATURE_MASTER_GLOBAL_FEES)
- */
-static void
-global_fee_info_cb (
-  void *cls,
-  const struct TALER_GlobalFeeSet *fees,
-  struct GNUNET_TIME_Relative purse_timeout,
-  struct GNUNET_TIME_Relative history_expiration,
-  uint32_t purse_account_limit,
-  struct GNUNET_TIME_Timestamp start_date,
-  struct GNUNET_TIME_Timestamp end_date,
-  const struct TALER_MasterSignatureP *master_sig)
-{
-  struct DH_KeyStateHandle *ksh = cls;
-  struct DH_GlobalFee *gf;
-
-  if (GNUNET_OK !=
-      TALER_donau_offline_global_fee_verify (
-        start_date,
-        end_date,
-        fees,
-        purse_timeout,
-        history_expiration,
-        purse_account_limit,
-        &DH_master_public_key,
-        master_sig))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Database has global fee with invalid signature. Skipping 
entry. Did the donau offline public key change?\n");
-    return;
-  }
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Found global fees with %u purses\n",
-              purse_account_limit);
-  gf = GNUNET_new (struct DH_GlobalFee);
-  gf->start_date = start_date;
-  gf->end_date = end_date;
-  gf->fees = *fees;
-  gf->purse_timeout = purse_timeout;
-  gf->history_expiration = history_expiration;
-  gf->purse_account_limit = purse_account_limit;
-  gf->master_sig = *master_sig;
-  GNUNET_CONTAINER_DLL_insert (ksh->gf_head,
-                               ksh->gf_tail,
-                               gf);
-  GNUNET_assert (
-    0 ==
-    json_array_append_new (
-      ksh->global_fees,
-      GNUNET_JSON_PACK (
-        GNUNET_JSON_pack_timestamp ("start_date",
-                                    start_date),
-        GNUNET_JSON_pack_timestamp ("end_date",
-                                    end_date),
-        TALER_JSON_PACK_GLOBAL_FEES (fees),
-        GNUNET_JSON_pack_time_rel ("history_expiration",
-                                   history_expiration),
-        GNUNET_JSON_pack_time_rel ("purse_timeout",
-                                   purse_timeout),
-        GNUNET_JSON_pack_uint64 ("purse_account_limit",
-                                 purse_account_limit),
-        GNUNET_JSON_pack_data_auto ("master_sig",
-                                    master_sig))));
-}
-
-
 /**
  * Create a key state.
  *
@@ -2602,20 +2454,9 @@ build_key_state (struct HelperState *hs,
                                                             true);
   ksh->signkey_map = GNUNET_CONTAINER_multipeermap_create (32,
                                                            false /* MUST be 
false! */);
-  ksh->auditors = json_array ();
-  GNUNET_assert (NULL != ksh->auditors);
   /* NOTE: fetches master-signed signkeys, but ALSO those that were revoked! */
   GNUNET_break (GNUNET_OK ==
                 DH_plugin->preflight (DH_plugin->cls));
-  if (NULL != ksh->global_fees)
-    json_decref (ksh->global_fees);
-  ksh->global_fees = json_array ();
-  qs = DH_plugin->get_global_fees (DH_plugin->cls,
-                                    &global_fee_info_cb,
-                                    ksh);
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Loading global fees from DB: %d\n",
-              qs);
   if (qs < 0)
   {
     GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR != qs);
@@ -2767,27 +2608,6 @@ DH_keys_get_state (void)
 }
 
 
-const struct DH_GlobalFee *
-DH_keys_global_fee_by_time (
-  struct DH_KeyStateHandle *ksh,
-  struct GNUNET_TIME_Timestamp ts)
-{
-  for (const struct DH_GlobalFee *gf = ksh->gf_head;
-       NULL != gf;
-       gf = gf->next)
-  {
-    if (GNUNET_TIME_timestamp_cmp (ts,
-                                   >=,
-                                   gf->start_date) &&
-        GNUNET_TIME_timestamp_cmp (ts,
-                                   <,
-                                   gf->end_date))
-      return gf;
-  }
-  return NULL;
-}
-
-
 struct DH_DenominationKey *
 DH_keys_denomination_by_hash (
   const struct TALER_DenominationHashP *h_denom_pub,
@@ -3375,158 +3195,6 @@ DH_keys_get_handler (struct DH_RequestContext *rc,
 }
 
 
-/**
- * Load extension data, like fees, expiration times (!) and age restriction
- * flags for the denomination type configured in section @a section_name.
- * Before calling this function, the `start` and `validity_duration` times must
- * already be initialized in @a meta.
- *
- * @param section_name section in the configuration to use
- * @param[in,out] meta denomination type data to complete
- * @return #GNUNET_OK on success
- */
-static enum GNUNET_GenericReturnValue
-load_extension_data (const char *section_name,
-                     struct DONAUDB_DenominationKeyMetaData *meta)
-{
-  struct GNUNET_TIME_Relative deposit_duration;
-  struct GNUNET_TIME_Relative legal_duration;
-
-  GNUNET_assert (! GNUNET_TIME_absolute_is_zero (meta->start.abs_time)); /* 
caller bug */
-  if (GNUNET_OK !=
-      GNUNET_CONFIGURATION_get_value_time (DH_cfg,
-                                           section_name,
-                                           "DURATION_SPEND",
-                                           &deposit_duration))
-  {
-    GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
-                               section_name,
-                               "DURATION_SPEND");
-    return GNUNET_SYSERR;
-  }
-  if (GNUNET_OK !=
-      GNUNET_CONFIGURATION_get_value_time (DH_cfg,
-                                           section_name,
-                                           "DURATION_LEGAL",
-                                           &legal_duration))
-  {
-    GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
-                               section_name,
-                               "DURATION_LEGAL");
-    return GNUNET_SYSERR;
-  }
-  meta->expire_deposit
-    = GNUNET_TIME_absolute_to_timestamp (
-        GNUNET_TIME_absolute_add (meta->expire_withdraw.abs_time,
-                                  deposit_duration));
-  meta->expire_legal = GNUNET_TIME_absolute_to_timestamp (
-    GNUNET_TIME_absolute_add (meta->expire_deposit.abs_time,
-                              legal_duration));
-  if (GNUNET_OK !=
-      TALER_config_get_amount (DH_cfg,
-                               section_name,
-                               "VALUE",
-                               &meta->value))
-  {
-    GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR,
-                               "Need amount for option `%s' in section `%s'\n",
-                               "VALUE",
-                               section_name);
-    return GNUNET_SYSERR;
-  }
-  if (0 != strcasecmp (DH_currency,
-                       meta->value.currency))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Need denomination value in section `%s' to use currency 
`%s'\n",
-                section_name,
-                DH_currency);
-    return GNUNET_SYSERR;
-  }
-  if (GNUNET_OK !=
-      TALER_config_get_denom_fees (DH_cfg,
-                                   DH_currency,
-                                   section_name,
-                                   &meta->fees))
-    return GNUNET_SYSERR;
-  meta->age_mask = load_age_mask (section_name);
-  return GNUNET_OK;
-}
-
-
-enum GNUNET_GenericReturnValue
-DH_keys_load_fees (struct DH_KeyStateHandle *ksh,
-                    const struct TALER_DenominationHashP *h_denom_pub,
-                    struct TALER_DenominationPublicKey *denom_pub,
-                    struct DONAUDB_DenominationKeyMetaData *meta)
-{
-  struct HelperDenomination *hd;
-  enum GNUNET_GenericReturnValue ok;
-
-  hd = GNUNET_CONTAINER_multihashmap_get (ksh->helpers->denom_keys,
-                                          &h_denom_pub->hash);
-  if (NULL == hd)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                "Denomination %s not known\n",
-                GNUNET_h2s (&h_denom_pub->hash));
-    return GNUNET_NO;
-  }
-  meta->start = hd->start_time;
-  meta->expire_withdraw = GNUNET_TIME_absolute_to_timestamp (
-    GNUNET_TIME_absolute_add (meta->start.abs_time,
-                              hd->validity_duration));
-  ok = load_extension_data (hd->section_name,
-                            meta);
-  if (GNUNET_OK == ok)
-  {
-    GNUNET_assert (TALER_DENOMINATION_INVALID != hd->denom_pub.cipher);
-    TALER_denom_pub_deep_copy (denom_pub,
-                               &hd->denom_pub);
-  }
-  else
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                "No fees for `%s', voiding key\n",
-                hd->section_name);
-    memset (denom_pub,
-            0,
-            sizeof (*denom_pub));
-  }
-  return ok;
-}
-
-
-enum GNUNET_GenericReturnValue
-DH_keys_get_timing (const struct DONAU_DonauPublicKeyP *donau_pub,
-                     struct DONAUDB_SignkeyMetaData *meta)
-{
-  struct DH_KeyStateHandle *ksh;
-  struct HelperSignkey *hsk;
-  struct GNUNET_PeerIdentity pid;
-
-  ksh = DH_keys_get_state_for_management_only ();
-  if (NULL == ksh)
-  {
-    GNUNET_break (0);
-    return GNUNET_SYSERR;
-  }
-
-  pid.public_key = donau_pub->eddsa_pub;
-  hsk = GNUNET_CONTAINER_multipeermap_get (ksh->helpers->esign_keys,
-                                           &pid);
-  meta->start = hsk->start_time;
-
-  meta->expire_sign = GNUNET_TIME_absolute_to_timestamp (
-    GNUNET_TIME_absolute_add (meta->start.abs_time,
-                              hsk->validity_duration));
-  meta->expire_legal = GNUNET_TIME_absolute_to_timestamp (
-    GNUNET_TIME_absolute_add (meta->expire_sign.abs_time,
-                              signkey_legal_duration));
-  return GNUNET_OK;
-}
-
-
 /**
  * Closure for #add_future_denomkey_cb and #add_future_signkey_cb.
  */
@@ -3581,13 +3249,6 @@ add_future_denomkey_cb (void *cls,
   meta.expire_withdraw = GNUNET_TIME_absolute_to_timestamp (
     GNUNET_TIME_absolute_add (meta.start.abs_time,
                               hd->validity_duration));
-  if (GNUNET_OK !=
-      load_extension_data (hd->section_name,
-                           &meta))
-  {
-    /* Woops, couldn't determine fee structure!? */
-    return GNUNET_OK;
-  }
   GNUNET_assert (
     0 ==
     json_array_append_new (
@@ -3605,8 +3266,6 @@ add_future_denomkey_cb (void *cls,
                                     meta.expire_legal),
         TALER_JSON_pack_denom_pub ("denom_pub",
                                    &hd->denom_pub),
-        TALER_JSON_PACK_DENOM_FEES ("fee",
-                                    &meta.fees),
         GNUNET_JSON_pack_data_auto ("denom_secmod_sig",
                                     &hd->sm_sig),
         GNUNET_JSON_pack_string ("section_name",
diff --git a/src/donau/donau-httpd_keys.h b/src/donau/donau-httpd_keys.h
index 8bdad4c..e078686 100644
--- a/src/donau/donau-httpd_keys.h
+++ b/src/donau/donau-httpd_keys.h
@@ -55,6 +55,56 @@ struct DH_DonationUnitKey
 
  };
 
+/**
+ * Run internal invariant checks. For debugging.
+ */
+void
+DH_check_invariants (void);
+
+/**
+ * Look up the issue for a unit public key.  Note that the result
+ * must only be used in this thread and only until another key or
+ * key state is resolved.
+ *
+ * @param h_unit_pub hash of donation_unit public key
+ * @param[in,out] conn used to return status message if NULL is returned
+ * @param[out] mret set to the MHD status if NULL is returned
+ * @return the donation_unit key issue,
+ *         or NULL if @a h_unit_pub could not be found
+ */
+struct DH_DonationUnitKey *
+DH_keys_donation_unit_by_hash (
+  const struct DONAU_DonationUnitHashP *h_unit_pub,
+  struct MHD_Connection *conn,
+  MHD_RESULT *mret);
+
+
+/**
+ * Request to sign @a csd for melting.
+ *
+ * @param csd identifies data to blindly sign and key to sign with
+ * @param[out] bs set to the blind signature on success
+ * @return #TALER_EC_NONE on success
+ */
+enum TALER_ErrorCode
+DH_keys_donation_unit_sign (
+  const struct DONAU_BlindedUniqueDonationIdentifierKeyPair *csd,
+  struct DONAU_BlindedDonationUnitSignature *bs);
+
+
+/**
+ * Request to sign @a csds for melting.
+ *
+ * @param csds array with data to blindly sign (and keys to sign with)
+ * @param csds_length length of @a csds array
+ * @param[out] bss array set to the blind signature on success; must be of 
length @a csds_length
+ * @return #TALER_EC_NONE on success
+ */
+enum TALER_ErrorCode
+DH_keys_donation_unit_batch_sign (
+  unsigned int csds_length,
+  const struct DONAU_BlindedUniqueDonationIdentifierKeyPair csds[static 
csds_length],
+  struct DONAU_BlindedDonationUnitSignature bss[static csds_length]);
 
 /**
  * Information needed to derive the CS r_pub.
@@ -77,7 +127,6 @@ struct DH_CsDeriveData
  * Request to derive CS @a r_pub using the donation unit and nonce from @a cdd.
  *
  * @param cdd data to compute @a r_pub from
- * @param for_melt true if this is for a melt operation
  * @param[out] r_pub where to write the result
  * @return #TALER_EC_NONE on success
  */
@@ -93,7 +142,6 @@ DH_keys_donation_unit_cs_r_pub (
  *
  * @param cdds array to compute @a r_pubs from
  * @param cdds_length length of the @a cdds array
- * @param for_melt true if this is for a melt operation
  * @param[out] r_pubs array where to write the result; must be of length @a 
cdds_length
  * @return #DONAU_EC_NONE on success
  */
@@ -101,7 +149,6 @@ enum TALER_ErrorCode
 DH_keys_donation_unit_cs_batch_r_pub (
   const struct DH_CsDeriveData *cdds,
   unsigned int cdds_length,
-  bool for_melt,
   struct GNUNET_CRYPTO_CSPublicRPairP *r_pubs);
 
 /**

-- 
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]