From 0b56de6c994d3e525aa2d0195ff4607db3f14715 Mon Sep 17 00:00:00 2001 From: Özgür Kesim Date: Tue, 11 Jan 2022 15:24:43 +0100 Subject: [age restriction] progress 12/n - taler-offline-tool now handles extensions - command "extensions" added with subcommands "show" and "sign" - parses extensions from taler config - shows and signs of extensions and their configurations - creates signed set of configurations for upload - added test for retrieval of extension config - simplified signature verification for extensions - remove per-extension signatures, also from DB schema - adjust prepared statements accordingly - adjust DB event handler for extensions - allow NULL for config for extension in DB schema - handler for /management/extensions adjusted to new datastructures - changed test for TALER_denom_blind/TALER_denom_sign_blinded with and without TALER_AgeHash - minor updates and various fixes --- src/exchangedb/plugin_exchangedb_postgres.c | 41 ++++++++++++++++++----------- 1 file changed, 26 insertions(+), 15 deletions(-) (limited to 'src/exchangedb/plugin_exchangedb_postgres.c') diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index 4b0096078..918fc38ca 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -2745,15 +2745,17 @@ prepare_statements (struct PostgresClosure *pg) /* Used in #postgres_set_extension_config */ GNUNET_PQ_make_prepare ( "set_extension_config", - "INSERT INTO extensions (name, config, config_sig) VALUES ($1, $2, $3) " + "INSERT INTO extensions (name, config) VALUES ($1, $2) " "ON CONFLICT (name) " - "DO UPDATE SET (config, config_sig) = ($2, $3)", - 3), + "DO UPDATE SET config=$2", + 2), /* Used in #postgres_get_extension_config */ GNUNET_PQ_make_prepare ( "get_extension_config", - "SELECT (config) FROM extensions" - " WHERE name=$1;", + "SELECT " + " config " + "FROM extensions" + " WHERE name=$1;", 1), GNUNET_PQ_PREPARED_STATEMENT_END }; @@ -11410,20 +11412,20 @@ postgres_delete_shard_locks (void *cls) * @param cls the @e cls of this struct with the plugin-specific state * @param extension_name the name of the extension * @param config JSON object of the configuration as string - * @param config_sig signature of the configuration by the offline master key * @return transaction status code */ enum GNUNET_DB_QueryStatus postgres_set_extension_config (void *cls, const char *extension_name, - const char *config, - const struct TALER_MasterSignatureP *config_sig) + const char *config) { struct PostgresClosure *pg = cls; + struct GNUNET_PQ_QueryParam pcfg = (NULL == config || 0 == *config) ? + GNUNET_PQ_query_param_null () : + GNUNET_PQ_query_param_string (config); struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_string (extension_name), - GNUNET_PQ_query_param_string (config), - GNUNET_PQ_query_param_auto_from_type (config_sig), + pcfg, GNUNET_PQ_query_param_end }; @@ -11452,15 +11454,24 @@ postgres_get_extension_config (void *cls, GNUNET_PQ_query_param_string (extension_name), GNUNET_PQ_query_param_end }; + bool is_null; struct GNUNET_PQ_ResultSpec rs[] = { - GNUNET_PQ_result_spec_string ("config", config), + GNUNET_PQ_result_spec_allow_null ( + GNUNET_PQ_result_spec_string ("config", config), + &is_null), GNUNET_PQ_result_spec_end }; + enum GNUNET_DB_QueryStatus qs; - return GNUNET_PQ_eval_prepared_singleton_select (pg->conn, - "get_extension_config", - params, - rs); + qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn, + "get_extension_config", + params, + rs); + if (is_null) + { + *config = NULL; + } + return qs; } -- cgit v1.2.3