X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=imap%2Fauth_cram.c;h=0438a8229bea35d361d87a2f3d776adb8d562ffb;hp=8b10f33a860acb60c74b934553939f27614ae55c;hb=3e9a92ab72e04aecb0fc4098098a1b57c5101d84;hpb=df70e07e24add1869bcc9b7af2277d9d0c09a281 diff --git a/imap/auth_cram.c b/imap/auth_cram.c index 8b10f33..0438a82 100644 --- a/imap/auth_cram.c +++ b/imap/auth_cram.c @@ -1,19 +1,10 @@ /* + * Copyright notice from original mutt: * Copyright (C) 1999-2000 Brendan Cully - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. */ /* IMAP login/authentication code */ @@ -25,11 +16,14 @@ #include "mutt.h" #include "imap_private.h" #include "auth.h" -#include "md5.h" #define MD5_BLOCK_LEN 64 #define MD5_DIGEST_LEN 16 +#include +#include +#include + /* forward declarations */ static void hmac_md5 (const char *password, char *challenge, unsigned char *response); @@ -48,7 +42,7 @@ imap_auth_res_t imap_auth_cram_md5 (IMAP_DATA * idata, const char *method) mutt_message _("Authenticating (CRAM-MD5)..."); /* get auth info */ - if (mutt_account_getuser (&idata->conn->account)) + if (mutt_account_getlogin (&idata->conn->account)) return IMAP_AUTH_FAILURE; if (mutt_account_getpass (&idata->conn->account)) return IMAP_AUTH_FAILURE; @@ -66,17 +60,17 @@ imap_auth_res_t imap_auth_cram_md5 (IMAP_DATA * idata, const char *method) while (rc == IMAP_CMD_CONTINUE); if (rc != IMAP_CMD_RESPOND) { - dprint (1, (debugfile, "Invalid response from server: %s\n", ibuf)); + debug_print (1, ("Invalid response from server: %s\n", ibuf)); goto bail; } if ((len = mutt_from_base64 (obuf, idata->cmd.buf + 2)) == -1) { - dprint (1, (debugfile, "Error decoding base64 response.\n")); + debug_print (1, ("Error decoding base64 response.\n")); goto bail; } obuf[len] = '\0'; - dprint (2, (debugfile, "CRAM challenge: %s\n", obuf)); + debug_print (2, ("CRAM challenge: %s\n", obuf)); /* The client makes note of the data and then responds with a string * consisting of the user name, a space, and a 'digest'. The latter is @@ -100,15 +94,15 @@ imap_auth_res_t imap_auth_cram_md5 (IMAP_DATA * idata, const char *method) hmac_response[9], hmac_response[10], hmac_response[11], hmac_response[12], hmac_response[13], hmac_response[14], hmac_response[15]); - dprint (2, (debugfile, "CRAM response: %s\n", obuf)); + debug_print (2, ("CRAM response: %s\n", obuf)); /* XXX - ibuf must be long enough to store the base64 encoding of obuf, * plus the additional debris */ mutt_to_base64 ((unsigned char *) ibuf, (unsigned char *) obuf, - strlen (obuf), sizeof (ibuf) - 2); - safe_strcat (ibuf, sizeof (ibuf), "\r\n"); + m_strlen(obuf), sizeof (ibuf) - 2); + m_strcat(ibuf, sizeof(ibuf), "\r\n"); mutt_socket_write (idata->conn, ibuf); do @@ -116,7 +110,7 @@ imap_auth_res_t imap_auth_cram_md5 (IMAP_DATA * idata, const char *method) while (rc == IMAP_CMD_CONTINUE); if (rc != IMAP_CMD_OK) { - dprint (1, (debugfile, "Error receiving server response.\n")); + debug_print (1, ("Error receiving server response.\n")); goto bail; } @@ -140,8 +134,8 @@ static void hmac_md5 (const char *password, char *challenge, unsigned int secret_len, chal_len; int i; - secret_len = strlen (password); - chal_len = strlen (challenge); + secret_len = m_strlen(password); + chal_len = m_strlen(challenge); /* passwords longer than MD5_BLOCK_LEN bytes are substituted with their MD5 * digests */ @@ -149,14 +143,14 @@ static void hmac_md5 (const char *password, char *challenge, MD5Init (&ctx); MD5Update (&ctx, (unsigned char *) password, secret_len); MD5Final (hash_passwd, &ctx); - strfcpy ((char *) secret, (char *) hash_passwd, MD5_DIGEST_LEN); + m_strcpy((char *)secret, MD5_DIGEST_LEN, (char *)hash_passwd); secret_len = MD5_DIGEST_LEN; } else - strfcpy ((char *) secret, password, sizeof (secret)); + m_strcpy((char *)secret, sizeof(secret), password); - memset (ipad, 0, sizeof (ipad)); - memset (opad, 0, sizeof (opad)); + p_clear(ipad, 1); + p_clear(opad, 1); memcpy (ipad, secret, secret_len); memcpy (opad, secret, secret_len);