NeoMutt  2024-12-12-14-g7b49f7
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
smime_verify_sender()

Does the sender match the certificate? More...

+ Collaboration diagram for smime_verify_sender():

Functions

int smime_gpgme_verify_sender (struct Email *e, struct Message *msg)
 Does the sender match the certificate? - Implements CryptModuleSpecs::smime_verify_sender() -.
 
int smime_class_verify_sender (struct Email *e, struct Message *msg)
 Does the sender match the certificate? - Implements CryptModuleSpecs::smime_verify_sender() -.
 

Detailed Description

Does the sender match the certificate?

Parameters
eEmail
msgMessage
Return values
0Success
1Failure

Function Documentation

◆ smime_gpgme_verify_sender()

int smime_gpgme_verify_sender ( struct Email e,
struct Message msg 
)

Does the sender match the certificate? - Implements CryptModuleSpecs::smime_verify_sender() -.

Definition at line 4144 of file crypt_gpgme.c.

4145{
4146 return verify_sender(e);
4147}
static bool verify_sender(struct Email *e)
Verify the sender of a message.
Definition: crypt_gpgme.c:4065
+ Here is the call graph for this function:

◆ smime_class_verify_sender()

int smime_class_verify_sender ( struct Email e,
struct Message msg 
)

Does the sender match the certificate? - Implements CryptModuleSpecs::smime_verify_sender() -.

Definition at line 1065 of file smime.c.

1066{
1067 const char *mbox = NULL, *certfile = NULL;
1068 int rc = 1;
1069
1070 struct Buffer *tempfname = buf_pool_get();
1071 buf_mktemp(tempfname);
1072 FILE *fp_out = mutt_file_fopen(buf_string(tempfname), "w");
1073 if (!fp_out)
1074 {
1075 mutt_perror("%s", buf_string(tempfname));
1076 goto cleanup;
1077 }
1078
1079 const bool encrypt = e->security & SEC_ENCRYPT;
1080 mutt_copy_message(fp_out, e, msg,
1082 encrypt ? (CH_MIME | CH_WEED | CH_NONEWLINE) : CH_NO_FLAGS, 0);
1083
1084 fflush(fp_out);
1085 mutt_file_fclose(&fp_out);
1086
1087 if (!TAILQ_EMPTY(&e->env->from))
1088 {
1090 mbox = buf_string(TAILQ_FIRST(&e->env->from)->mailbox);
1091 }
1092 else if (!TAILQ_EMPTY(&e->env->sender))
1093 {
1095 mbox = buf_string(TAILQ_FIRST(&e->env->sender)->mailbox);
1096 }
1097
1098 if (mbox)
1099 {
1100 certfile = smime_extract_signer_certificate(buf_string(tempfname));
1101 if (certfile)
1102 {
1103 mutt_file_unlink(buf_string(tempfname));
1104 if (smime_handle_cert_email(certfile, mbox, false, NULL, NULL))
1105 {
1106 if (isendwin())
1108 }
1109 else
1110 {
1111 rc = 0;
1112 }
1113 mutt_file_unlink(certfile);
1114 FREE(&certfile);
1115 }
1116 else
1117 {
1118 mutt_any_key_to_continue(_("no certfile"));
1119 }
1120 }
1121 else
1122 {
1123 mutt_any_key_to_continue(_("no mbox"));
1124 }
1125
1126 mutt_file_unlink(buf_string(tempfname));
1127
1128cleanup:
1129 buf_pool_release(&tempfname);
1130 return rc;
1131}
void mutt_expand_aliases(struct AddressList *al)
Expand aliases in a List of Addresses.
Definition: alias.c:295
static const char * buf_string(const struct Buffer *buf)
Convert a buffer to a const char * "string".
Definition: buffer.h:96
int mutt_copy_message(FILE *fp_out, struct Email *e, struct Message *msg, CopyMessageFlags cmflags, CopyHeaderFlags chflags, int wraplen)
Copy a message from a Mailbox.
Definition: copy.c:906
#define CH_NONEWLINE
Don't output terminating newline after the header.
Definition: copy.h:62
#define CH_WEED
Weed the headers?
Definition: copy.h:55
#define MUTT_CM_DECODE_SMIME
Used for decoding S/MIME messages.
Definition: copy.h:48
#define CH_MIME
Ignore MIME fields.
Definition: copy.h:63
#define MUTT_CM_NO_FLAGS
No flags are set.
Definition: copy.h:37
#define MUTT_CM_DECODE_CRYPT
Definition: copy.h:50
#define CH_NO_FLAGS
No flags are set.
Definition: copy.h:53
int mutt_any_key_to_continue(const char *s)
Prompt the user to 'press any key' and wait.
Definition: curs_lib.c:173
void mutt_file_unlink(const char *s)
Delete a file, carefully.
Definition: file.c:221
#define mutt_file_fclose(FP)
Definition: file.h:138
#define mutt_file_fopen(PATH, MODE)
Definition: file.h:137
#define mutt_perror(...)
Definition: logging2.h:93
#define FREE(x)
Definition: memory.h:55
#define _(a)
Definition: message.h:28
#define SEC_ENCRYPT
Email is encrypted.
Definition: lib.h:84
struct Buffer * buf_pool_get(void)
Get a Buffer from the pool.
Definition: pool.c:82
void buf_pool_release(struct Buffer **ptr)
Return a Buffer to the pool.
Definition: pool.c:96
#define TAILQ_FIRST(head)
Definition: queue.h:741
#define TAILQ_EMPTY(head)
Definition: queue.h:739
static char * smime_extract_signer_certificate(const char *infile)
Extract the signer's certificate.
Definition: smime.c:921
static int smime_handle_cert_email(const char *certificate, const char *mailbox, bool copy, char ***buffer, int *num)
Process an email containing certificates.
Definition: smime.c:704
String manipulation buffer.
Definition: buffer.h:36
struct Envelope * env
Envelope information.
Definition: email.h:68
SecurityFlags security
bit 0-10: flags, bit 11,12: application, bit 13: traditional pgp See: ncrypt/lib.h pgplib....
Definition: email.h:43
struct AddressList sender
Email's sender.
Definition: envelope.h:63
struct AddressList from
Email's 'From' list.
Definition: envelope.h:59
#define buf_mktemp(buf)
Definition: tmp.h:33
+ Here is the call graph for this function: