52 unsigned int param_length,
54 unsigned int scratch_length)
57 (void) scratch_length;
61 if (1 != param_length)
63 param_values[0] = NULL;
100 void *param_values[],
103 unsigned int param_length,
105 unsigned int scratch_length)
108 (void) scratch_length;
110 if (1 != param_length)
112 param_values[0] = (
void *)
data;
113 param_lengths[0] = data_len;
114 param_formats[0] = 1;
146 static uint8_t bt = 1;
147 static uint8_t bf = 0;
172 void *param_values[],
175 unsigned int param_length,
177 unsigned int scratch_length)
179 const uint16_t *u_hbo =
data;
183 (void) scratch_length;
185 if (1 != param_length)
189 *u_nbo = htons (*u_hbo);
190 param_values[0] = (
void *) u_nbo;
191 param_lengths[0] =
sizeof(uint16_t);
192 param_formats[0] = 1;
229 void *param_values[],
232 unsigned int param_length,
234 unsigned int scratch_length)
236 const uint32_t *u_hbo =
data;
240 (void) scratch_length;
242 if (1 != param_length)
246 *u_nbo = htonl (*u_hbo);
247 param_values[0] = (
void *) u_nbo;
248 param_lengths[0] =
sizeof(uint32_t);
249 param_formats[0] = 1;
286 void *param_values[],
289 unsigned int param_length,
291 unsigned int scratch_length)
293 const uint64_t *u_hbo =
data;
297 (void) scratch_length;
299 if (1 != param_length)
304 param_values[0] = (
void *) u_nbo;
305 param_lengths[0] =
sizeof(uint64_t);
306 param_formats[0] = 1;
343 void *param_values[],
346 unsigned int param_length,
348 unsigned int scratch_length)
350 const int16_t *u_hbo =
data;
354 (void) scratch_length;
356 if (1 != param_length)
361 param_values[0] = (
void *) u_nbo;
362 param_lengths[0] =
sizeof(int16_t);
363 param_formats[0] = 1;
400 void *param_values[],
403 unsigned int param_length,
405 unsigned int scratch_length)
407 const int64_t *u_hbo =
data;
411 (void) scratch_length;
413 if (1 != param_length)
418 param_values[0] = (
void *) u_nbo;
419 param_lengths[0] =
sizeof(int64_t);
420 param_formats[0] = 1;
457 void *param_values[],
460 unsigned int param_length,
462 unsigned int scratch_length)
469 if (1 != param_length)
474 param_values[0] = (
void *) buf;
475 param_lengths[0] = buf_size;
476 param_formats[0] = 1;
513 void *param_values[],
516 unsigned int param_length,
518 unsigned int scratch_length)
525 if (1 != param_length)
530 param_values[0] = (
void *) buf;
531 param_lengths[0] = buf_size;
532 param_formats[0] = 1;
568 void *param_values[],
571 unsigned int param_length,
573 unsigned int scratch_length)
580 if (1 != param_length)
588 param_values[0] = (
void *) u_nbo;
589 param_lengths[0] =
sizeof(uint64_t);
590 param_formats[0] = 1;
627 void *param_values[],
630 unsigned int param_length,
632 unsigned int scratch_length)
639 if (1 != param_length)
647 param_values[0] = (
void *) u_nbo;
648 param_lengths[0] =
sizeof(uint64_t);
649 param_formats[0] = 1;
765 void *param_values[],
768 unsigned int param_length,
770 unsigned int scratch_length)
773 size_t num = data_len;
777 size_t *string_lengths = NULL;
778 void *elements = NULL;
781 (void) (param_length);
782 (void) (scratch_length);
788 same_sized = (0 !=
meta->same_size);
790#define RETURN_UNLESS(cond) \
794 GNUNET_break ((cond)); \
803 size_t x =
sizeof(uint32_t);
815 x = num *
meta->same_size;
829 if (
meta->continuous)
831 const char *ptr =
data;
832 for (
unsigned int i = 0; i < num; i++)
834 size_t len = strlen (ptr);
835 string_lengths[i] = len;
841 const char **str = (
const char **)
data;
842 for (
unsigned int i = 0; i < num; i++)
843 string_lengths[i] = strlen (str[i]);
846 sizes = string_lengths;
849 for (
unsigned int i = 0; i < num; i++)
852 total_size += sizes[i];
864 char *in = (
char *)
data;
865 char *out = elements;
869 .has_null = htonl (0),
872 .oid = htonl (
meta->oid),
881 for (
unsigned int i = 0; i < num; i++)
883 size_t sz = same_sized ?
meta->same_size : sizes[i];
884 uint32_t hsz = htonl (sz);
889 out +=
sizeof(uint32_t);
896 *(
bool *) out = (*(
bool *) in);
903 *(uint16_t *) out = htons (*(uint16_t *) in);
912 v = htonl (*(uint32_t *) in);
936 if (
meta->continuous)
942 ptr = ((
const void **)
data)[i];
964 if (!
meta->continuous)
977 if (!
meta->continuous)
990 if (!
meta->continuous)
1002 if (val > INT64_MAX)
1010 if (
meta->continuous)
1025 param_values[0] = elements;
1026 param_lengths[0] = total_size;
1027 param_formats[0] = 1;
1028 scratch[0] = elements;
1056 const void *elements,
1057 const size_t *sizes,
1088 const bool *elements,
1110 const uint16_t *elements,
1132 const uint32_t *elements,
1154 const uint64_t *elements,
1176 const void *elements,
1177 const size_t *sizes,
1199 const void *elements[
static num],
1200 const size_t *sizes,
1222 const void *elements,
1245 const void *elements[
static num],
1268 const char *elements,
1290 const char *elements[
static num],
1459 void *param_values[],
1460 int param_lengths[],
1461 int param_formats[],
1462 unsigned int param_length,
1464 unsigned int scratch_length)
1478 be = htonl ((uint32_t) public_key->
cipher);
1479 switch (public_key->
cipher)
1492 len = tlen +
sizeof (be);
1497 switch (public_key->
cipher)
1515 param_values[0] = (
void *) buf;
1516 param_lengths[0] = len;
1517 param_formats[0] = 1;
1559 void *param_values[],
1560 int param_lengths[],
1561 int param_formats[],
1562 unsigned int param_length,
1564 unsigned int scratch_length)
1578 be = htonl ((uint32_t) private_key->
cipher);
1579 switch (private_key->
cipher)
1592 len = tlen +
sizeof (be);
1597 switch (private_key->
cipher)
1615 param_values[0] = (
void *) buf;
1616 param_lengths[0] = len;
1617 param_formats[0] = 1;
1659 void *param_values[],
1660 int param_lengths[],
1661 int param_formats[],
1662 unsigned int param_length,
1664 unsigned int scratch_length)
1678 be[0] = htonl ((uint32_t) ubs->
cipher);
1679 be[1] = htonl (0x00);
1693 len = tlen +
sizeof (be);
1716 param_values[0] = (
void *) buf;
1717 param_lengths[0] = len;
1718 param_formats[0] = 1;
1760 void *param_values[],
1761 int param_lengths[],
1762 int param_formats[],
1763 unsigned int param_length,
1765 unsigned int scratch_length)
1779 be[0] = htonl ((uint32_t) bs->
cipher);
1780 be[1] = htonl (0x01);
1794 len = tlen +
sizeof (be);
1817 param_values[0] = (
void *) buf;
1818 param_lengths[0] = len;
1819 param_formats[0] = 1;
static mp_limb_t u[(((256)+GMP_NUMB_BITS - 1)/GMP_NUMB_BITS)]
static struct GNUNET_ARM_Handle * h
Connection with ARM.
static char * data
The data to insert into the dht.
static char * res
Currently read line or NULL on EOF.
static struct GNUNET_FS_MetaData * meta
Meta-data provided via command-line option.
static struct GNUNET_CRYPTO_EddsaPublicKey pub
static struct GNUNET_FS_DirectoryBuilder * db
commonly used definitions; globals in this file are exempt from the rule that the module name ("commo...
helper functions for Postgres DB interactions
#define GNUNET_PQ_query_param_auto_from_type(x)
Generate fixed-size query parameter with size determined by variable type.
enum GNUNET_GenericReturnValue GNUNET_PQ_get_oid_by_name(struct GNUNET_PQ_Context *db, const char *name, Oid *oid)
Returns the oid for a given datatype by name.
Functions related to time.
size_t GNUNET_CRYPTO_rsa_public_key_encode(const struct GNUNET_CRYPTO_RsaPublicKey *key, void **buffer)
Encode the public key in a format suitable for storing it into a file.
uint64_t GNUNET_htonll(uint64_t n)
Convert unsigned 64-bit integer to network byte order.
size_t GNUNET_CRYPTO_rsa_signature_encode(const struct GNUNET_CRYPTO_RsaSignature *sig, void **buffer)
Encode the given signature in a format suitable for storing it into a file.
#define GNUNET_htobe16(x)
#define GNUNET_memcpy(dst, src, n)
Call memcpy() but check for n being 0 first.
size_t GNUNET_CRYPTO_rsa_private_key_encode(const struct GNUNET_CRYPTO_RsaPrivateKey *key, void **buffer)
Encode the private key in a format suitable for storing it into a file.
@ GNUNET_CRYPTO_BSA_CS
Clause Blind Schnorr signature.
@ GNUNET_CRYPTO_BSA_RSA
RSA blind signature.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur.
#define GNUNET_new(type)
Allocate a struct or union of the given type.
#define GNUNET_malloc(size)
Wrapper around malloc.
#define GNUNET_new_array(n, type)
Allocate a size n array with structs or unions of the given type.
#define GNUNET_free(ptr)
Wrapper around free.
shared internal data structures of libgnunetpq
array_types
Internal types that are supported as array types.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_fixed_size(const void *ptr, size_t ptr_size)
Generate query parameter for a buffer ptr of ptr_size bytes.
static int qconv_fixed(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)
Function called to convert input argument into SQL parameters.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_ptrs_rel_time(unsigned int num, const struct GNUNET_TIME_Relative *elements[], struct GNUNET_PQ_Context *db)
Generate query parameter for an array of relative time stamps (pointers)
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_uint64(const uint64_t *x)
Generate query parameter for an uint64_t in host byte order.
static int qconv_rel_time(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)
Function called to convert input argument into SQL parameters.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_abs_time(unsigned int num, const struct GNUNET_TIME_Absolute *elements, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of absolute time stamps (continuous)
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_null(void)
Generate query parameter to create a NULL value.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_ptrs_timestamp(unsigned int num, const struct GNUNET_TIME_Timestamp *elements[], struct GNUNET_PQ_Context *db)
Generate query parameter for an array of time stamps (pointers)
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_blind_sign_pub(const struct GNUNET_CRYPTO_BlindSignPublicKey *pub)
Generate query parameter for a blind sign public key of variable size.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_ptrs_abs_time(unsigned int num, const struct GNUNET_TIME_Absolute *elements[], struct GNUNET_PQ_Context *db)
Generate query parameter for an array of absolute time stamps (pointers)
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_uint32(unsigned int num, const uint32_t *elements, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of uint32_t in host byte order.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_unblinded_sig(const struct GNUNET_CRYPTO_UnblindedSignature *sig)
Generate query parameter for an unblinded signature of variable size.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_ptrs_bytes(unsigned int num, const void *elements[static num], const size_t *sizes, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of buffers elements, with sizes sizes.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_absolute_time(const struct GNUNET_TIME_Absolute *x)
Generate query parameter for an absolute time value.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_relative_time(const struct GNUNET_TIME_Relative *x)
Generate query parameter for a relative time value.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_uint64(unsigned int num, const uint64_t *elements, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of uint64 in host byte order.
#define RETURN_UNLESS(cond)
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_int64(const int64_t *x)
Generate query parameter for an int64_t in host byte order.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_uint16(const uint16_t *x)
Generate query parameter for an uint16_t in host byte order.
static int qconv_unblinded_sig(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)
Function called to convert input argument into SQL parameters.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_rsa_public_key(const struct GNUNET_CRYPTO_RsaPublicKey *x)
Generate query parameter for an RSA public key.
static int qconv_blinded_sig(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)
Function called to convert input argument into SQL parameters.
static int qconv_null(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)
Function called to convert input argument into SQL parameters.
static int qconv_blind_sign_pub(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)
Function called to convert input argument into SQL parameters.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_bool(unsigned int num, const bool *elements, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of bool in host byte order.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_absolute_time_nbo(const struct GNUNET_TIME_AbsoluteNBO *x)
Generate query parameter for an absolute time value.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_ptrs_string(unsigned int num, const char *elements[static num], struct GNUNET_PQ_Context *db)
Generate query parameter for an array of strings (pointers)
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_bytes(unsigned int num, const void *elements, const size_t *sizes, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of buffers elements, each of corresponding size given in sizes.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_bool(bool b)
Pass a boolean into a query.
static void qconv_array_cls_cleanup(void *cls)
Callback to cleanup a qconv_array_cls to be used during GNUNET_PQ_cleanup_query_params_closures.
static int qconv_uint64(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)
Function called to convert input argument into SQL parameters.
static int qconv_blind_sign_priv(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)
Function called to convert input argument into SQL parameters.
static int qconv_uint32(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)
Function called to convert input argument into SQL parameters.
static int qconv_int16(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)
Function called to convert input argument into SQL parameters.
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)
Function called to convert input argument into SQL parameters for arrays.
static int qconv_abs_time(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)
Function called to convert input argument into SQL parameters.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_blind_sign_priv(const struct GNUNET_CRYPTO_BlindSignPrivateKey *priv)
Generate query parameter for a blind sign private key of variable size.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_blinded_sig(const struct GNUNET_CRYPTO_BlindedSignature *b_sig)
Generate query parameter for a blinded signature of variable size.
static int qconv_rsa_signature(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)
Function called to convert input argument into SQL parameters.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_timestamp(unsigned int num, const struct GNUNET_TIME_Timestamp *elements, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of time stamps (continuous)
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_rel_time(unsigned int num, const struct GNUNET_TIME_Relative *elements, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of relative time stamps (continuous)
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_uint16(unsigned int num, const uint16_t *elements, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of uint16_t in host byte order.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_uint32(const uint32_t *x)
Generate query parameter for an uint32_t in host byte order.
static int qconv_uint16(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)
Function called to convert input argument into SQL parameters.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_timestamp(const struct GNUNET_TIME_Timestamp *x)
Generate query parameter for a timestamp.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_int16(const int16_t *x)
Generate query parameter for an int16_t in host byte order.
static int qconv_rsa_public_key(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)
Function called to convert input argument into SQL parameters.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_timestamp_nbo(const struct GNUNET_TIME_TimestampNBO *x)
Generate query parameter for a timestamp in NBO.
static int qconv_int64(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)
Function called to convert input argument into SQL parameters.
static struct GNUNET_PQ_QueryParam query_param_array_generic(unsigned int num, bool continuous, const void *elements, const size_t *sizes, size_t same_size, enum array_types typ, Oid oid)
Function to generate a typ specific query parameter and corresponding closure.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_ptrs_bytes_same_size(unsigned int num, const void *elements[static num], size_t same_size, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of pointers to buffers elements, each of the same size size.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_string(unsigned int num, const char *elements, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of strings (continuous)
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_string(const char *ptr)
Generate query parameter for a string.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_array_bytes_same_size(unsigned int num, const void *elements, size_t same_size, struct GNUNET_PQ_Context *db)
Generate query parameter for an array of buffers elements, each of the same size size.
struct GNUNET_PQ_QueryParam GNUNET_PQ_query_param_rsa_signature(const struct GNUNET_CRYPTO_RsaSignature *x)
Generate query parameter for an RSA signature.
Type of private signing keys for blind signing.
struct GNUNET_CRYPTO_CsPrivateKey cs_private_key
If we use GNUNET_CRYPTO_BSA_CS in cipher.
struct GNUNET_CRYPTO_RsaPrivateKey * rsa_private_key
If we use GNUNET_CRYPTO_BSA_RSA in cipher.
enum GNUNET_CRYPTO_BlindSignatureAlgorithm cipher
Type of the public key.
union GNUNET_CRYPTO_BlindSignPrivateKey::@17 details
Details, depending on cipher.
Type of public signing keys for blind signatures.
union GNUNET_CRYPTO_BlindSignPublicKey::@16 details
Details, depending on cipher.
struct GNUNET_CRYPTO_CsPublicKey cs_public_key
If we use GNUNET_CRYPTO_BSA_CS in cipher.
enum GNUNET_CRYPTO_BlindSignatureAlgorithm cipher
Type of the public key.
struct GNUNET_CRYPTO_RsaPublicKey * rsa_public_key
If we use GNUNET_CRYPTO_BSA_RSA in cipher.
Type for blinded signatures.
struct GNUNET_CRYPTO_CsBlindSignature blinded_cs_answer
If we use GNUNET_CRYPTO_BSA_CS in cipher.
union GNUNET_CRYPTO_BlindedSignature::@15 details
Details, depending on cipher.
enum GNUNET_CRYPTO_BlindSignatureAlgorithm cipher
Type of the signature.
struct GNUNET_CRYPTO_RsaSignature * blinded_rsa_signature
If we use GNUNET_CRYPTO_BSA_RSA in cipher.
The public information of an RSA key pair.
Type of (unblinded) signatures.
struct GNUNET_CRYPTO_RsaSignature * rsa_signature
If we use GNUNET_CRYPTO_BSA_RSA in cipher.
union GNUNET_CRYPTO_UnblindedSignature::@14 details
Details, depending on cipher.
struct GNUNET_CRYPTO_CsSignature cs_signature
If we use GNUNET_CRYPTO_BSA_CS in cipher.
enum GNUNET_CRYPTO_BlindSignatureAlgorithm cipher
Type of the signature.
Handle to Postgres database.
Description of a DB query parameter.
Time for absolute time used by GNUnet, in microseconds and in network byte order.
Time for absolute times used by GNUnet, in microseconds.
uint64_t abs_value_us
The actual value.
Time for relative time used by GNUnet, in microseconds.
uint64_t rel_value_us
The actual value.
Time for timestamps used by GNUnet, in seconds and in network byte order.
Time for timestamps used by GNUnet, in microseconds rounded to seconds.
struct GNUNET_TIME_Absolute abs_time
The actual value.
Closure for the array type handlers.
const size_t * sizes
If not null, contains the array of sizes (the size of the array is the .size field in the ambient GNU...
enum array_types typ
Type of the array elements.
size_t same_size
If size and c_sizes are NULL, this field defines the same size for each element in the array.
Oid oid
Oid of the array elements.
bool continuous
If true, the array parameter to the data pointer to the qconv_array is a continuous byte array of dat...