14 |
* "CRAM-MD5". |
* "CRAM-MD5". |
15 |
*/ |
*/ |
16 |
int |
int |
17 |
imf_cram_md5(int *sock, char *user, char *pass) |
imf_cram_md5(conn_t * conn, char *user, char *pass) |
18 |
{ |
{ |
19 |
int i, n; |
int i, n; |
20 |
unsigned int t; |
unsigned int t; |
23 |
unsigned int mdlen; |
unsigned int mdlen; |
24 |
HMAC_CTX hmac; |
HMAC_CTX hmac; |
25 |
|
|
26 |
t = imap_authenticate(sock, "CRAM-MD5", 0); |
t = imap_authenticate(conn, "CRAM-MD5", 0); |
27 |
|
|
28 |
if (authenticate_response(sock, t, &chal) == RESPONSE_NONE) { |
if (authenticate_response(conn, t, &chal) == RESPONSE_NONE) { |
29 |
n = strlen(chal) * 3 / 4 + 1; |
n = strlen(chal) * 3 / 4 + 1; |
30 |
resp = (char *)xmalloc(n); |
resp = (char *)xmalloc(n); |
31 |
memset(resp, 0, n); |
memset(resp, 0, n); |
57 |
|
|
58 |
EVP_EncodeBlock(out, buf, strlen(buf)); |
EVP_EncodeBlock(out, buf, strlen(buf)); |
59 |
|
|
60 |
imap_authenticate(sock, out, 1); |
imap_authenticate(conn, out, 1); |
61 |
|
|
62 |
xfree(buf); |
xfree(buf); |
63 |
xfree(out); |
xfree(out); |
64 |
} |
} |
65 |
return authenticate_response(sock, t, NULL); |
return authenticate_response(conn, t, NULL); |
66 |
} |
} |
67 |
|
|
68 |
#endif /* CRAM_MD5 */ |
#endif /* CRAM_MD5 */ |