343{
344 struct Md5Ctx md5ctx = { 0 };
345 unsigned char digest[16];
346 char hash[33] = { 0 };
347 char buf[1024] = { 0 };
348
351
354
356 {
359 }
360
361
363
364
370
371
372 snprintf(buf,
sizeof(buf),
"APOP %s %s\r\n", adata->
conn->
account.
user, hash);
373
374 switch (
pop_query(adata, buf,
sizeof(buf)))
375 {
376 case 0:
378 case -1:
380 }
381
382
384
386}
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.