From: Markus Valentin Date: Thu, 2 Apr 2020 06:38:32 +0000 (+0200) Subject: auth: Extract private header from mech-digest-md5 X-Git-Tag: 2.3.11.2~173 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3000a49491572c32f9f0bff639604bb81e58baf5;p=thirdparty%2Fdovecot%2Fcore.git auth: Extract private header from mech-digest-md5 This is needed to allow testing of the mech-digest-md5 mechanism. --- diff --git a/src/auth/Makefile.am b/src/auth/Makefile.am index 1e4a24d7a7..cf46e430a0 100644 --- a/src/auth/Makefile.am +++ b/src/auth/Makefile.am @@ -166,6 +166,7 @@ headers = \ auth-master-connection.h \ mech-otp-skey-common.h \ mech-plain-common.h \ + mech-digest-md5-private.h \ mech-scram.h \ auth-penalty.h \ auth-policy.h \ diff --git a/src/auth/mech-digest-md5-private.h b/src/auth/mech-digest-md5-private.h new file mode 100644 index 0000000000..fb9ff803a7 --- /dev/null +++ b/src/auth/mech-digest-md5-private.h @@ -0,0 +1,38 @@ +#ifndef MECH_DIGEST_MD5_PRIVATE_H +#define MECH_DIGEST_MD5_PRIVATE_H + +#include "auth-request.h" + +enum qop_option { + QOP_AUTH = 0x01, /* authenticate */ + QOP_AUTH_INT = 0x02, /* + integrity protection, not supported yet */ + QOP_AUTH_CONF = 0x04, /* + encryption, not supported yet */ + + QOP_COUNT = 3 +}; + +struct digest_auth_request { + struct auth_request auth_request; + + pool_t pool; + + /* requested: */ + char *nonce; + enum qop_option qop; + + /* received: */ + char *username; + char *cnonce; + char *nonce_count; + char *qop_value; + char *digest_uri; /* may be NULL */ + char *authzid; /* may be NULL, authorization ID */ + unsigned char response[32]; + unsigned long maxbuf; + bool nonce_found:1; + + /* final reply: */ + char *rspauth; +}; + +#endif diff --git a/src/auth/mech-digest-md5.c b/src/auth/mech-digest-md5.c index 9e81907b78..98057eb410 100644 --- a/src/auth/mech-digest-md5.c +++ b/src/auth/mech-digest-md5.c @@ -6,6 +6,7 @@ #include "base64.h" #include "buffer.h" #include "hex-binary.h" +#include "mech-digest-md5-private.h" #include "md5.h" #include "randgen.h" #include "str.h" @@ -19,40 +20,8 @@ /* Linear whitespace */ #define IS_LWS(c) ((c) == ' ' || (c) == '\t') -enum qop_option { - QOP_AUTH = 0x01, /* authenticate */ - QOP_AUTH_INT = 0x02, /* + integrity protection, not supported yet */ - QOP_AUTH_CONF = 0x04, /* + encryption, not supported yet */ - - QOP_COUNT = 3 -}; - static const char *qop_names[] = { "auth", "auth-int", "auth-conf" }; -struct digest_auth_request { - struct auth_request auth_request; - - pool_t pool; - - /* requested: */ - char *nonce; - enum qop_option qop; - - /* received: */ - char *username; - char *cnonce; - char *nonce_count; - char *qop_value; - char *digest_uri; /* may be NULL */ - char *authzid; /* may be NULL, authorization ID */ - unsigned char response[32]; - unsigned long maxbuf; - bool nonce_found:1; - - /* final reply: */ - char *rspauth; -}; - static string_t *get_digest_challenge(struct digest_auth_request *request) { const struct auth_settings *set = request->auth_request.set;