(2010年02月09日 23:22), Erik Faye-Lund wrote:
On Tue, Feb 9, 2010 at 1:09 PM, Hitoshi Mitake
<mitake@xxxxxxxxxxxxxxxxxxxxx> 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)...
Do you mean that
auth_cram_md5(struct imap_store *ctx, struct imap_cmd *cmd, const char
*prompt)
should be,
auth_cram_md5(struct imap_socket *socket, struct imap_cmd *cmd, const
char *prompt)
?
If this improves portability of cram-md5 auth, of course I agree.
But struct imap_socket is defined in imap-send.c yet.
If you want to separate imap-send.c and cram-md5 auth for
git-send-email, I'll cooperate :)
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html