From: Erik Faye-Lund Date: Tue, 09 Feb 2010 14:22:47 GMT Subject: Re: [PATCH 3/4] git-imap-send: Implement CRAM-MD5 auth method Message-ID: <40aa078e1002090622vb65027xa53acff95557a183@mail.gmail.com> In-Reply-To: <1265717345-2118-4-git-send-email-mitake@dcl.info.waseda.ac.jp> On Tue, Feb 9, 2010 at 1:09 PM, Hitoshi Mitake wrote: > +static int auth_cram_md5(struct imap_store *ctx, struct imap_cmd *cmd, const char *prompt) > +{ > +       int ret; > +       char digest[DIGEST_HEX_LEN]; > +       char buf[256], base64_out[256]; > + > +       memset(buf, 0, 256); > +       base64_decode(buf, prompt, strlen(prompt)); > + > +       memset(digest, 0, DIGEST_HEX_LEN); > +       md5_hex_hmac(digest, (const unsigned char *)buf, strlen(buf), > +                    (const unsigned char *)server.pass, strlen(server.pass)); > + > +       memset(buf, 0, 256); > +       strcpy(buf, server.user); > +       strcpy(buf + strlen(buf), " "); > +       strcpy(buf + strlen(buf), digest); > +       memset(base64_out, 0, 256); > +       base64_encode(base64_out, buf, strlen(buf)); > + > +       ret = socket_write(&ctx->imap->buf.sock, base64_out, strlen(base64_out)); Since this is the only location in this function that accesses anything inside ctx, how about just passing the imap_socket itself to the function? That'd make it a bit simpler if, say, I was rewriting send-email in C and wanted to add CRAM-MD5 AUTH support (given that I'd done the work to use imap_socket first)... -- Erik "kusma" Faye-Lund