summaryrefslogtreecommitdiff
path: root/src/exchange/taler-exchange-httpd_management_extensions.c
diff options
context:
space:
mode:
authorÖzgür Kesim <oec-taler@kesim.org>2022-01-22 00:26:43 +0100
committerÖzgür Kesim <oec-taler@kesim.org>2022-01-22 00:26:43 +0100
commit1962ed6b0b44c6c7d3503b3340da1be147e25f87 (patch)
tree753f6eb6a598e86b7ebd8e24251ca2eacb65dcb7 /src/exchange/taler-exchange-httpd_management_extensions.c
parent0b56de6c994d3e525aa2d0195ff4607db3f14715 (diff)
downloadexchange-1962ed6b0b44c6c7d3503b3340da1be147e25f87.tar.gz
exchange-1962ed6b0b44c6c7d3503b3340da1be147e25f87.tar.bz2
exchange-1962ed6b0b44c6c7d3503b3340da1be147e25f87.zip
improvements in extension handling
- extensions_sig is needed globally - keep original json with config of extension - fixed various bugs re: extension handling
Diffstat (limited to 'src/exchange/taler-exchange-httpd_management_extensions.c')
-rw-r--r--src/exchange/taler-exchange-httpd_management_extensions.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/exchange/taler-exchange-httpd_management_extensions.c b/src/exchange/taler-exchange-httpd_management_extensions.c
index 8476e669d..17db8e8c4 100644
--- a/src/exchange/taler-exchange-httpd_management_extensions.c
+++ b/src/exchange/taler-exchange-httpd_management_extensions.c
@@ -49,6 +49,7 @@ struct SetExtensionsContext
{
uint32_t num_extensions;
struct Extension *extensions;
+ struct TALER_MasterSignatureP extensions_sig;
};
/**
@@ -132,6 +133,9 @@ set_extensions (void *cls,
}
+ /* All extensions configured, update the signature */
+ TEH_extensions_sig = sec->extensions_sig;
+
return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT; /* only 'success', so >=0, matters here */
}
@@ -143,15 +147,14 @@ TEH_handler_management_post_extensions (
{
MHD_RESULT ret;
json_t *extensions;
- struct TALER_MasterSignatureP sig = {0};
+ struct SetExtensionsContext sec = {0};
struct GNUNET_JSON_Specification top_spec[] = {
GNUNET_JSON_spec_json ("extensions",
&extensions),
GNUNET_JSON_spec_fixed_auto ("extensions_sig",
- &sig),
+ &sec.extensions_sig),
GNUNET_JSON_spec_end ()
};
- struct SetExtensionsContext sec = {0};
/* Parse the top level json structure */
{
@@ -193,7 +196,7 @@ TEH_handler_management_post_extensions (
if (GNUNET_OK != TALER_exchange_offline_extension_config_hash_verify (
&h_config,
&TEH_master_public_key,
- &sig))
+ &sec.extensions_sig))
{
GNUNET_JSON_parse_free (top_spec);
return TALER_MHD_reply_with_error (
@@ -248,7 +251,6 @@ TEH_handler_management_post_extensions (
TALER_EC_GENERIC_PARAMETER_MALFORMED,
"invalid configuration for extension");
goto CLEANUP;
-
}
/* We have a validly signed JSON object for the extension. Increment its