]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: mech-scram - Move get_scram_server_first() to auth-scram-server.c.
authorStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 26 Sep 2022 23:28:13 +0000 (01:28 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 27 Jan 2023 09:34:54 +0000 (09:34 +0000)
src/auth/auth-scram-server.c
src/auth/mech-scram.c

index 079fe93979cccd75cd038578bf30306ec1f0ee55..7eb3c34454239d7c678f739b3183f1343e94d7d6 100644 (file)
@@ -157,3 +157,43 @@ parse_scram_client_first(struct scram_auth_request *request,
        request->client_first_message_bare = p_strdup(request->pool, cfm_bare);
        return TRUE;
 }
+
+static const char *
+get_scram_server_first(struct scram_auth_request *request,
+                      int iter, const char *salt)
+{
+       unsigned char snonce[SCRAM_SERVER_NONCE_LEN+1];
+       string_t *str;
+       size_t i;
+
+       /* RFC 5802, Section 7:
+
+          server-first-message =
+                            [reserved-mext ","] nonce "," salt ","
+                            iteration-count ["," extensions]
+
+          nonce           = "r=" c-nonce [s-nonce]
+
+          salt            = "s=" base64
+
+          iteration-count = "i=" posit-number
+                            ;; A positive number.
+        */
+
+       random_fill(snonce, sizeof(snonce)-1);
+
+       /* Make sure snonce is printable and does not contain ',' */
+       for (i = 0; i < sizeof(snonce)-1; i++) {
+               snonce[i] = (snonce[i] % ('~' - '!')) + '!';
+               if (snonce[i] == ',')
+                       snonce[i] = '~';
+       }
+       snonce[sizeof(snonce)-1] = '\0';
+       request->snonce = p_strndup(request->pool, snonce, sizeof(snonce));
+
+       str = t_str_new(32 + strlen(request->cnonce) + sizeof(snonce) +
+                       strlen(salt));
+       str_printfa(str, "r=%s%s,s=%s,i=%d", request->cnonce, request->snonce,
+                   salt, iter);
+       return str_c(str);
+}
index d4d04eece67228df9f87801a8e71cef3d8e4a731..39c8806f8e3dba6ed62717dd71d5cb4d57827b4e 100644 (file)
@@ -48,46 +48,6 @@ struct scram_auth_request {
        unsigned char *server_key;
 };
 
-static const char *
-get_scram_server_first(struct scram_auth_request *request,
-                      int iter, const char *salt)
-{
-       unsigned char snonce[SCRAM_SERVER_NONCE_LEN+1];
-       string_t *str;
-       size_t i;
-
-       /* RFC 5802, Section 7:
-
-          server-first-message =
-                            [reserved-mext ","] nonce "," salt ","
-                            iteration-count ["," extensions]
-
-          nonce           = "r=" c-nonce [s-nonce]
-
-          salt            = "s=" base64
-
-          iteration-count = "i=" posit-number
-                            ;; A positive number.
-        */
-
-       random_fill(snonce, sizeof(snonce)-1);
-
-       /* Make sure snonce is printable and does not contain ',' */
-       for (i = 0; i < sizeof(snonce)-1; i++) {
-               snonce[i] = (snonce[i] % ('~' - '!')) + '!';
-               if (snonce[i] == ',')
-                       snonce[i] = '~';
-       }
-       snonce[sizeof(snonce)-1] = '\0';
-       request->snonce = p_strndup(request->pool, snonce, sizeof(snonce));
-
-       str = t_str_new(32 + strlen(request->cnonce) + sizeof(snonce) +
-                       strlen(salt));
-       str_printfa(str, "r=%s%s,s=%s,i=%d", request->cnonce, request->snonce,
-                   salt, iter);
-       return str_c(str);
-}
-
 static const char *get_scram_server_final(struct scram_auth_request *request)
 {
        const struct hash_method *hmethod = request->hash_method;