merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit 676875fd480f759018c688b60073606ef3a2d4af
parent d2b54123ab407a45e0a97c818211a6f0259abfb5
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Mon, 13 Oct 2025 22:54:17 +0200

fix #10485

Diffstat:
Msrc/backend/taler-merchant-httpd_post-challenge-ID.c | 10+++++++---
Msrc/include/taler_merchant_util.h | 12++++++++++++
Msrc/util/mfa.c | 24++++++++++++++++++++++++
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) {