319{
320 struct Md5Ctx md5ctx = { 0 };
321 unsigned char digest[16];
322 char hash[33] = { 0 };
323 char buf[1024] = { 0 };
324
327
330
332 {
335 }
336
337
339
340
346
347
348 snprintf(buf,
sizeof(buf),
"APOP %s %s\r\n", adata->
conn->
account.
user, hash);
349
350 switch (
pop_query(adata, buf,
sizeof(buf)))
351 {
352 case 0:
354 case -1:
356 }
357
358
360
362}
bool mutt_addr_valid_msgid(const char *msgid)
Is this a valid Message ID?
int mutt_account_getpass(struct ConnAccount *cac)
Fetch password into ConnAccount, if necessary.
#define mutt_message(...)
void mutt_md5_process(const char *str, struct Md5Ctx *md5ctx)
Process a NUL-terminated string.
void mutt_md5_init_ctx(struct Md5Ctx *md5ctx)
Initialise the MD5 computation.
void * mutt_md5_finish_ctx(struct Md5Ctx *md5ctx, void *resbuf)
Process the remaining bytes in the buffer.
void mutt_md5_toascii(const void *digest, char *resbuf)
Convert a binary MD5 digest into ASCII Hexadecimal.
@ POP_A_UNAVAIL
No valid authentication method.
@ POP_A_SUCCESS
Authenticated successfully.
@ POP_A_FAILURE
Authentication failed.
@ POP_A_SOCKET
Connection lost.
#define pop_query(adata, buf, buflen)
struct ConnAccount account
Account details: username, password, etc.
Cursor for the MD5 hashing.
struct Connection * conn
Connection to POP server.
char * timestamp
APOP timestamp.