#endif
#include "mutt.h"
+#include "ascii.h"
+#include "handler.h"
#include "mutt_curses.h"
#include "mime.h"
#include "copy.h"
/* no .p7c, .p10 support yet. */
- len = mutt_strlen (t) - 4;
+ len = str_len (t) - 4;
if (len > 0 && *(t + len) == '.') {
len++;
if (!ascii_strcasecmp ((t + len), "p7m"))
return -1;
}
- fseek (s->fpin, a->hdr_offset, 0);
+ fseeko (s->fpin, a->hdr_offset, 0);
bytes = a->length + a->offset - a->hdr_offset;
hadcr = 0;
while (bytes > 0) {
convert_to_7bit (a->parts);
}
else if (a->type == TYPEMESSAGE &&
- mutt_strcasecmp (a->subtype, "delivery-status")) {
+ str_casecmp (a->subtype, "delivery-status")) {
if (a->encoding != ENC7BIT)
mutt_message_to_7bit (a, NULL);
}
crypt_fetch_signatures (signatures, a->parts, n);
else {
if ((*n % 5) == 0)
- safe_realloc (signatures, (*n + 6) * sizeof (BODY **));
+ mem_realloc (signatures, (*n + 6) * sizeof (BODY **));
(*signatures)[(*n)++] = a;
}
* This routine verifies a "multipart/signed" body.
*/
-void mutt_signed_handler (BODY * a, STATE * s)
+int mutt_signed_handler (BODY * a, STATE * s)
{
char tempfile[_POSIX_PATH_MAX];
char *protocol;
int sigcnt = 0;
int i;
short goodsig = 1;
+ int rc = 0;
if (!WithCrypto)
- return;
+ return (-1);
protocol = mutt_get_parameter ("protocol", a->parameter);
a = a->parts;
/* consistency check */
if (!(a && a->next && a->next->type == protocol_major &&
- !mutt_strcasecmp (a->next->subtype, protocol_minor))) {
+ !str_casecmp (a->next->subtype, protocol_minor))) {
state_attach_puts (_("[-- Error: "
"Inconsistent multipart/signed structure! --]\n\n"),
s);
- mutt_body_handler (a, s);
- return;
+ return mutt_body_handler (a, s);
}
if ((WithCrypto & APPLICATION_PGP)
&& protocol_major == TYPEAPPLICATION
- && !mutt_strcasecmp (protocol_minor, "pgp-signature"));
+ && !str_casecmp (protocol_minor, "pgp-signature"));
else if ((WithCrypto & APPLICATION_SMIME)
&& protocol_major == TYPEAPPLICATION
- && !(mutt_strcasecmp (protocol_minor, "x-pkcs7-signature")
- && mutt_strcasecmp (protocol_minor, "pkcs7-signature")));
+ && !(str_casecmp (protocol_minor, "x-pkcs7-signature")
+ && str_casecmp (protocol_minor, "pkcs7-signature")));
else if (protocol_major == TYPEMULTIPART
- && !mutt_strcasecmp (protocol_minor, "mixed"));
+ && !str_casecmp (protocol_minor, "mixed"));
else {
state_printf (s, _("[-- Error: "
"Unknown multipart/signed protocol %s! --]\n\n"),
protocol);
- mutt_body_handler (a, s);
- return;
+ return mutt_body_handler (a, s);
}
if (s->flags & M_DISPLAY) {
for (i = 0; i < sigcnt; i++) {
if ((WithCrypto & APPLICATION_PGP)
&& signatures[i]->type == TYPEAPPLICATION
- && !mutt_strcasecmp (signatures[i]->subtype, "pgp-signature")) {
+ && !str_casecmp (signatures[i]->subtype, "pgp-signature")) {
if (crypt_pgp_verify_one (signatures[i], s, tempfile) != 0)
goodsig = 0;
if ((WithCrypto & APPLICATION_SMIME)
&& signatures[i]->type == TYPEAPPLICATION
&&
- (!mutt_strcasecmp (signatures[i]->subtype, "x-pkcs7-signature")
- || !mutt_strcasecmp (signatures[i]->subtype,
+ (!str_casecmp (signatures[i]->subtype, "x-pkcs7-signature")
+ || !str_casecmp (signatures[i]->subtype,
"pkcs7-signature"))) {
if (crypt_smime_verify_one (signatures[i], s, tempfile) != 0)
goodsig = 0;
state_attach_puts (_("[-- The following data is signed --]\n\n"), s);
- FREE (&signatures);
+ mem_free (&signatures);
}
else
state_attach_puts (_("[-- Warning: Can't find any signatures. --]\n\n"),
s);
}
- mutt_body_handler (a, s);
+ rc = mutt_body_handler (a, s);
if (s->flags & M_DISPLAY && sigcnt)
state_attach_puts (_("\n[-- End of signed data --]\n"), s);
+
+ return (rc);
}