gnunet-svn
[Top][All Lists]
Advanced

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

[taler-donau] branch master updated: remove array support


From: gnunet
Subject: [taler-donau] branch master updated: remove array support
Date: Mon, 01 Jan 2024 18:35:31 +0100

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

johannes-casaburi pushed a commit to branch master
in repository donau.

The following commit(s) were added to refs/heads/master by this push:
     new aedec9e  remove array support
aedec9e is described below

commit aedec9e01340d53c8586b6db70f5d69dc47e1c98
Author: Casaburi Johannes <johannes.casaburi@students.bfh.ch>
AuthorDate: Mon Jan 1 18:34:50 2024 +0100

    remove array support
---
 src/pq/pq_common.h       |  48 --------
 src/pq/pq_query_helper.c | 282 -----------------------------------------------
 2 files changed, 330 deletions(-)

diff --git a/src/pq/pq_common.h b/src/pq/pq_common.h
deleted file mode 100644
index b8946e2..0000000
--- a/src/pq/pq_common.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-  This file is part of TALER
-  Copyright (C) 2023 Taler Systems SA
-
-  TALER is free software; you can redistribute it and/or modify it under the
-  terms of the GNU General Public License as published by the Free Software
-  Foundation; either version 3, or (at your option) any later version.
-
-  TALER is distributed in the hope that it will be useful, but WITHOUT ANY
-  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License along with
-  TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
-*/
-/**
- * @file pq/pq_common.h
- * @brief common defines for the pq functions
- * @author Johannes Casaburi
- */
-#ifndef DONAU_PQ_COMMON_H_
-#define DONAU_PQ_COMMON_H_
-
-#include "taler/taler_util.h"
-
-/**
- * Internal types that are supported as DONAU-specific array types.
- *
- * To support a new type,
- *   1. add a new entry into this list,
- *   2. for query-support, implement the size calculation and memory copying in
- *      qconv_array() accordingly, in pq_query_helper.c
- *   3. provide a query-API for arrays of the type, by calling
- *      query_param_array_generic with the appropriate parameters,
- *      in pq_query_helper.c
- *   4. for result-support, implement memory copying by adding another case
- *      to extract_array_generic, in pq_result_helper.c
- *   5. provide a result-spec-API for arrays of the type,
- *      in pq_result_helper.c
- *   6. expose the API's in taler_pq_lib.h
- */
-enum DONAU_PQ_ArrayType
-{
-  DONAU_PQ_array_of_blinded_donation_id_kps,
-};
-
-#endif  /* TALER_PQ_COMMON_H_ */
-/* end of pg/pq_common.h */
diff --git a/src/pq/pq_query_helper.c b/src/pq/pq_query_helper.c
index 121ee15..2b85d90 100644
--- a/src/pq/pq_query_helper.c
+++ b/src/pq/pq_query_helper.c
@@ -23,7 +23,6 @@
 #include <gnunet/gnunet_pq_lib.h>
 #include <taler/taler_pq_lib.h>
 #include "donau_util.h"
-#include "pq_common.h"
 
 
 /**
@@ -123,285 +122,4 @@ TALER_PQ_query_param_donation_unit_pub (
 }
 
 
-/** ------------------- Array support  -----------------------------------**/
-
-/**
- * Closure for the array type handlers.
- *
- * May contain sizes information for the data, given (and handled) by the
- * caller.
- */
-struct qconv_array_cls
-{
-  /**
-   * If not null, contains the array of sizes (the size of the array is the
-   * .size field in the ambient GNUNET_PQ_QueryParam struct). We do not free
-   * this memory.
-   *
-   * If not null, this value has precedence over @a sizes, which MUST be NULL 
*/
-  const size_t *sizes;
-
-  /**
-   * If @a size and @a c_sizes are NULL, this field defines the same size
-   * for each element in the array.
-   */
-  size_t same_size;
-
-  /**
-   * If true, the array parameter to the data pointer to the qconv_array is a
-   * continuous byte array of data, either with @a same_size each or sizes
-   * provided bytes by @a sizes;
-   */
-  bool continuous;
-
-  /**
-   * Type of the array elements
-   */
-  enum DONAU_PQ_ArrayType typ;
-
-  /**
-   * Oid of the array elements
-   */
-  Oid oid;
-
-  /**
-   * db context, needed for OID-lookup of basis-types
-   */
-  struct GNUNET_PQ_Context *db;
-};
-
-/**
- * Callback to cleanup a qconv_array_cls to be used during
- * GNUNET_PQ_cleanup_query_params_closures
- */
-static void
-qconv_array_cls_cleanup (void *cls)
-{
-  GNUNET_free (cls);
-}
-
-
-/**
- * Function called to convert input argument into SQL parameters for arrays
- *
- * Note: the format for the encoding of arrays for libpq is not very well
- * documented.  We peeked into various sources (postgresql and libpqtypes) for
- * guidance.
- *
- * @param cls Closure of type struct qconv_array_cls*
- * @param data Pointer to first element in the array
- * @param data_len Number of _elements_ in array @a data (if applicable)
- * @param[out] param_values SQL data to set
- * @param[out] param_lengths SQL length data to set
- * @param[out] param_formats SQL format data to set
- * @param param_length number of entries available in the @a param_values, @a 
param_lengths and @a param_formats arrays
- * @param[out] scratch buffer for dynamic allocations (to be done via 
#GNUNET_malloc()
- * @param scratch_length number of entries left in @a scratch
- * @return -1 on error, number of offsets used in @a scratch otherwise
- */
-static int
-qconv_array (
-  void *cls,
-  const void *data,
-  size_t data_len,
-  void *param_values[],
-  int param_lengths[],
-  int param_formats[],
-  unsigned int param_length,
-  void *scratch[],
-  unsigned int scratch_length)
-{
-  struct qconv_array_cls *meta = cls;
-  size_t num = data_len;
-  size_t tlen;
-  size_t total_size;
-  const size_t *sizes;
-  bool same_sized;
-  void *elements = NULL;
-  bool noerror = true;
-  /* needed to capture the encoded rsa signatures */
-  void **buffers = NULL;
-  size_t *buffer_lengths = NULL;
-
-  (void) (param_length);
-  (void) (scratch_length);
-
-  GNUNET_assert (NULL != meta);
-  GNUNET_assert (num < INT_MAX);
-
-  sizes = meta->sizes;
-  same_sized = (0 != meta->same_size);
-
-#define RETURN_UNLESS(cond) \
-        do { \
-          if (! (cond)) \
-          { \
-            GNUNET_break ((cond)); \
-            noerror = false; \
-            goto DONE; \
-          } \
-        } while (0)
-
-  /* Calculate sizes and check bounds */
-  {
-    /* num * length-field */
-    size_t x = sizeof(uint32_t);
-    size_t y = x * num;
-    RETURN_UNLESS ((0 == num) || (y / num == x));
-
-    /* size of header */
-    total_size  = x = sizeof(struct GNUNET_PQ_ArrayHeader_P);
-    total_size += y;
-    RETURN_UNLESS (total_size >= x);
-
-    /* sizes of elements */
-    if (same_sized)
-    {
-      x = num * meta->same_size;
-      RETURN_UNLESS ((0 == num) || (x / num == meta->same_size));
-
-      y = total_size;
-      total_size += x;
-      RETURN_UNLESS (total_size >= y);
-    }
-    else  /* sizes are different per element */
-    {
-      switch (meta->typ)
-      {
-      case DONAU_PQ_array_of_blinded_donation_id_kps:
-        {
-          const struct DONAU_BlindedUniqueDonationIdentifierKeyPair *budi_kps =
-            data;
-          size_t len;
-
-          buffers  = GNUNET_new_array (num, void *);
-          buffer_lengths  = GNUNET_new_array (num, size_t);
-
-          for (size_t i = 0; i<num; i++)
-          {
-            const struct GNUNET_CRYPTO_BlindedMessage *bm = &budi_kps[i].
-                                                            blinded_udi;
-
-            switch (bm->cipher) // ?
-            {
-            case GNUNET_CRYPTO_BSA_RSA:
-              tlen = bm->details.rsa_blinded_message.blinded_msg_size;
-              break;
-            case GNUNET_CRYPTO_BSA_CS:
-              tlen = sizeof (bm->details.cs_blinded_message);
-              break;
-            default:
-              GNUNET_assert (0);
-            }
-
-            len = tlen + sizeof (bm);
-            buffer_lengths[i] = len;
-
-            y = total_size;
-            total_size += len;
-            RETURN_UNLESS (total_size >= y);
-          }
-          sizes = buffer_lengths;
-          break;
-        }
-      default:
-        GNUNET_assert (0);
-      }
-    }
-
-    RETURN_UNLESS (INT_MAX > total_size);
-    RETURN_UNLESS (0 != total_size);
-
-    elements = GNUNET_malloc (total_size);
-  }
-
-  /* Write data */
-  {
-    char *out = elements;
-    struct GNUNET_PQ_ArrayHeader_P h = {
-      .ndim = htonl (1),        /* We only support one-dimensional arrays */
-      .has_null = htonl (0),    /* We do not support NULL entries in arrays */
-      .lbound = htonl (1),      /* Default start index value */
-      .dim = htonl (num),
-      .oid = htonl (meta->oid),
-    };
-
-    /* Write header */
-    GNUNET_memcpy (out,
-                   &h,
-                   sizeof(h));
-    out += sizeof(h);
-
-    /* Write elements */
-    for (size_t i = 0; i < num; i++)
-    {
-      size_t sz = same_sized ? meta->same_size : sizes[i];
-
-      *(uint32_t *) out = htonl (sz);
-      out += sizeof(uint32_t);
-      switch (meta->typ)
-      {
-      case DONAU_PQ_array_of_blinded_donation_id_kps:
-        {
-          const struct DONAU_BlindedUniqueDonationIdentifierKeyPair *budi_kps =
-            data;
-          const struct GNUNET_CRYPTO_BlindedMessage *bm = &budi_kps[i].
-                                                          blinded_udi;
-          uint32_t be[2];
-
-          be[0] = htonl ((uint32_t) bm->cipher);
-          be[1] = htonl (0x01);     /* magic margker: blinded */
-          GNUNET_memcpy (out,
-                         &be,
-                         sizeof(be));
-          out += sizeof(be);
-          sz -= sizeof(be);
-
-          switch (bm->cipher)
-          {
-          case GNUNET_CRYPTO_BSA_RSA:
-            /* For RSA, 'same_sized' must have been false */
-            GNUNET_assert (NULL != buffers);
-            GNUNET_memcpy (out,
-                           buffers[i],
-                           sz);
-            break;
-          case GNUNET_CRYPTO_BSA_CS:
-            GNUNET_memcpy (out,
-                           &bm->details.cs_blinded_message,
-                           sz);
-            break;
-          default:
-            GNUNET_assert (0);
-          }
-          break;
-        }
-      default:
-        {
-          GNUNET_assert (0);
-          break;
-        }
-      }
-      out += sz;
-    }
-  }
-  param_values[0] = elements;
-  param_lengths[0] = total_size;
-  param_formats[0] = 1;
-  scratch[0] = elements;
-
-DONE:
-  if (NULL != buffers)
-  {
-    for (size_t i = 0; i<num; i++)
-      GNUNET_free (buffers[i]);
-    GNUNET_free (buffers);
-  }
-  GNUNET_free (buffer_lengths);
-  if (noerror)
-    return 1;
-  return -1;
-}
-
-
 /* end of pq/pq_query_helper.c */

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