From: Aki Tuomi Date: Fri, 21 Feb 2025 08:47:28 +0000 (+0200) Subject: lib-sasl: Add dsasl_client_mech_uses_password() X-Git-Tag: 2.4.1~123 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d50689b54cf7dfb94457d2dfd008125db77ae765;p=thirdparty%2Fdovecot%2Fcore.git lib-sasl: Add dsasl_client_mech_uses_password() This indicates whether mechanism uses password at all. --- diff --git a/src/lib-sasl/dsasl-client-private.h b/src/lib-sasl/dsasl-client-private.h index 9cc0ba9b11..d1a6174678 100644 --- a/src/lib-sasl/dsasl-client-private.h +++ b/src/lib-sasl/dsasl-client-private.h @@ -5,6 +5,7 @@ enum dsasl_mech_security_flags { DSASL_MECH_SEC_ALLOW_NULS = BIT(1), + DSASL_MECH_SEC_NO_PASSWORD = BIT(2), }; struct dsasl_client { diff --git a/src/lib-sasl/dsasl-client.c b/src/lib-sasl/dsasl-client.c index 71d6bef957..d1919505d0 100644 --- a/src/lib-sasl/dsasl-client.c +++ b/src/lib-sasl/dsasl-client.c @@ -34,6 +34,11 @@ const char *dsasl_client_mech_get_name(const struct dsasl_client_mech *mech) return mech->name; } +bool dsasl_client_mech_uses_password(const struct dsasl_client_mech *mech) +{ + return (mech->flags & DSASL_MECH_SEC_NO_PASSWORD) == 0; +} + void dsasl_client_mech_register(const struct dsasl_client_mech *mech) { unsigned int idx; diff --git a/src/lib-sasl/dsasl-client.h b/src/lib-sasl/dsasl-client.h index 1b3a7fa808..1fef8ba93b 100644 --- a/src/lib-sasl/dsasl-client.h +++ b/src/lib-sasl/dsasl-client.h @@ -23,6 +23,7 @@ extern const struct dsasl_client_mech dsasl_client_mech_plain; const struct dsasl_client_mech *dsasl_client_mech_find(const char *name); const char *dsasl_client_mech_get_name(const struct dsasl_client_mech *mech); +bool dsasl_client_mech_uses_password(const struct dsasl_client_mech *mech); struct dsasl_client *dsasl_client_new(const struct dsasl_client_mech *mech, const struct dsasl_client_settings *set); diff --git a/src/lib-sasl/mech-external.c b/src/lib-sasl/mech-external.c index 7df94b4fd6..2484f2d514 100644 --- a/src/lib-sasl/mech-external.c +++ b/src/lib-sasl/mech-external.c @@ -53,6 +53,7 @@ mech_external_output(struct dsasl_client *_client, const struct dsasl_client_mech dsasl_client_mech_external = { .name = "EXTERNAL", .struct_size = sizeof(struct external_dsasl_client), + .flags = DSASL_MECH_SEC_NO_PASSWORD, .input = mech_external_input, .output = mech_external_output