commit 676875fd480f759018c688b60073606ef3a2d4af
parent d2b54123ab407a45e0a97c818211a6f0259abfb5
Author: Christian Grothoff <grothoff@gnunet.org>
Date: Mon, 13 Oct 2025 22:54:17 +0200
fix #10485
Diffstat:
3 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_post-challenge-ID.c b/src/backend/taler-merchant-httpd_post-challenge-ID.c
@@ -140,6 +140,11 @@ struct MfaState
enum GNUNET_GenericReturnValue suspended;
/**
+ * Type of critical operation being authorized.
+ */
+ enum TALER_MERCHANT_MFA_CriticalOperation op;
+
+ /**
* Set to true if sending worked.
*/
bool send_ok;
@@ -461,7 +466,7 @@ phase_send_challenge (struct MfaState *mfa)
GNUNET_asprintf (&mfa->msg,
"%s\nTaler-Merchant:\n%s",
mfa->code,
- mfa->hc->instance->settings.id);
+ TALER_MERCHANT_MFA_co2s (mfa->op));
{
const char *off = mfa->msg;
size_t left = strlen (off);
@@ -505,14 +510,13 @@ phase_lookup (struct MfaState *mfa)
struct GNUNET_TIME_Absolute confirmation_date;
struct GNUNET_TIME_Absolute retransmission_date;
struct TALER_MERCHANT_MFA_BodySalt salt;
- enum TALER_MERCHANT_MFA_CriticalOperation op;
qs = TMH_db->lookup_mfa_challenge (TMH_db->cls,
mfa->challenge_id,
&mfa->h_body,
&salt,
&mfa->required_address,
- &op,
+ &mfa->op,
&confirmation_date,
&retransmission_date,
&retry_counter,
diff --git a/src/include/taler_merchant_util.h b/src/include/taler_merchant_util.h
@@ -103,6 +103,18 @@ enum TALER_MERCHANT_MFA_CriticalOperation
/**
+ * Convert critical operation enumeration value to string
+ * suitable for human readers.
+ *
+ * @param co input to convert
+ * @return operation value as string
+ */
+const char *
+TALER_MERCHANT_MFA_co2s (
+ enum TALER_MERCHANT_MFA_CriticalOperation co);
+
+
+/**
* Convert critical operation enumeration value to string.
*
* @param co input to convert
diff --git a/src/util/mfa.c b/src/util/mfa.c
@@ -82,6 +82,30 @@ TALER_MERCHANT_MFA_co_from_string (const char *str)
const char *
+TALER_MERCHANT_MFA_co2s (
+ enum TALER_MERCHANT_MFA_CriticalOperation co)
+{
+ static const char *co_s[] = {
+ [TALER_MERCHANT_MFA_CO_NONE] = NULL,
+ [TALER_MERCHANT_MFA_CO_INSTANCE_PROVISION] = "create new instance",
+ [TALER_MERCHANT_MFA_CO_ACCOUNT_CONFIGURATION] = "configure bank accounts",
+ [TALER_MERCHANT_MFA_CO_AUTH_CONFIGURATION] =
+ "change authentication configuration",
+ [TALER_MERCHANT_MFA_CO_INSTANCE_DELETION] = "delete instance",
+ [TALER_MERCHANT_MFA_CO_AUTH_TOKEN_CREATION] = "create authentication token"
+ };
+
+ if ( (co < 0) ||
+ (co >= sizeof (co_s) / sizeof (co_s[0])) )
+ {
+ GNUNET_break (0);
+ return NULL;
+ }
+ return co_s[co];
+}
+
+
+const char *
TALER_MERCHANT_MFA_channel_to_string (
enum TALER_MERCHANT_MFA_Channel ch)
{