+2004-08-25 [colin] 0.9.12cvs81.1
+
+ * src/plugins/pgpmime/pgpmime.c
+ * src/plugins/pgpmime/sgpgme.c
+ * src/plugins/pgpmime/sgpgme.h
+ Sync with HEAD.
+
2004-08-24 [colin] 0.9.12cvs80.3
* src/wizard.c
( cvs diff -u -r 1.213.2.13 -r 1.213.2.14 src/folder.c; ) > 0.9.12cvs80.1.patchset
( cvs diff -u -r 1.155.2.10 -r 1.155.2.11 src/Makefile.am; cvs diff -u -r 1.115.2.15 -r 1.115.2.16 src/main.c; cvs diff -u -r 1.5.2.1 -r 1.5.2.2 src/setup.c; cvs diff -u -r 1.1.1.1 -r 1.1.1.2 src/setup.h; cvs diff -u -r 1.25.2.5 -r 1.25.2.6 src/stock_pixmap.c; cvs diff -u -r 1.18.2.3 -r 1.18.2.4 src/stock_pixmap.h; cvs diff -u -r 0 -r 1 src/wizard.c; cvs diff -u -r 0 -r 1 src/wizard.h; cvs diff -u -r 0 -r 1 src/pixmaps/sylpheed_icon.xpm; ) > 0.9.12cvs80.2.patchset
( cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/wizard.c; ) > 0.9.12cvs80.3.patchset
+( cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/pgpmime.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/sgpgme.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/sgpgme.h; ) > 0.9.12cvs81.1.patchset
MICRO_VERSION=12
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=80
+EXTRA_VERSION=81
EXTRA_RELEASE=
-EXTRA_GTK2_VERSION=.3
+EXTRA_GTK2_VERSION=.1
if test \( $EXTRA_VERSION -eq 0 \) -o \( "x$EXTRA_RELEASE" != "x" \); then
VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}${EXTRA_RELEASE}${EXTRA_GTK2_VERSION}
g_return_val_if_fail(fp != NULL, SIGNATURE_INVALID);
boundary = g_hash_table_lookup(parent->parameters, "boundary");
+ if (!boundary)
+ return 0;
+
boundary_len = strlen(boundary);
while (fgets(buf, sizeof(buf), fp) != NULL)
if (IS_BOUNDARY(buf, boundary, boundary_len))
gint nread;
gchar *fname;
gchar buf[BUFFSIZE];
+ GpgmeSigStat sigstat = 0;
+ PrivacyDataPGP *data = NULL;
+ GpgmeCtx ctx;
+
+ if (gpgme_new(&ctx) != GPGME_No_Error)
+ return NULL;
+
g_return_val_if_fail(pgpmime_is_encrypted(mimeinfo), NULL);
encinfo = (MimeInfo *) g_node_nth_child(mimeinfo->node, 1)->data;
cipher = sgpgme_data_from_mimeinfo(encinfo);
- plain = sgpgme_decrypt(cipher);
+ plain = sgpgme_decrypt_verify(cipher, &sigstat, ctx);
+
gpgme_data_release(cipher);
if (plain == NULL)
return NULL;
procmime_mimeinfo_free_all(parseinfo);
decinfo->tmpfile = TRUE;
+
+ if (sigstat != GPGME_SIG_STAT_NONE) {
+ if (decinfo->privacy != NULL) {
+ data = (PrivacyDataPGP *) decinfo->privacy;
+ } else {
+ data = pgpmime_new_privacydata();
+ decinfo->privacy = (PrivacyData *) data;
+ }
+ data->done_sigtest = TRUE;
+ data->is_signed = TRUE;
+ data->sigstatus = sigstat;
+ if (data->ctx)
+ gpgme_release(data->ctx);
+ data->ctx = ctx;
+ }
+
return decinfo;
}
return data;
}
-GpgmeData sgpgme_decrypt(GpgmeData cipher)
+GpgmeData sgpgme_decrypt_verify(GpgmeData cipher, GpgmeSigStat *status, GpgmeCtx ctx)
{
- GpgmeCtx ctx;
struct passphrase_cb_info_s info;
GpgmeData plain;
GpgmeError err;
+ GpgmeSigStat sigstat;
memset (&info, 0, sizeof info);
- if (gpgme_new(&ctx) != GPGME_No_Error)
- return NULL;
-
if (gpgme_data_new(&plain) != GPGME_No_Error) {
gpgme_release(ctx);
return NULL;
gpgme_set_passphrase_cb (ctx, gpgmegtk_passphrase_cb, &info);
}
- err = gpgme_op_decrypt(ctx, cipher, plain);
- gpgme_release(ctx);
+ err = gpgme_op_decrypt_verify(ctx, cipher, plain, status);
if (err != GPGME_No_Error) {
gpgmegtk_free_passphrase();
gchar *sgpgme_sigstat_info_full (GpgmeCtx ctx,
GpgmeSigStat status);
GpgmeData sgpgme_data_from_mimeinfo (MimeInfo *mimeinfo);
-GpgmeData sgpgme_decrypt (GpgmeData cipher);
+GpgmeData sgpgme_decrypt_verify (GpgmeData cipher, GpgmeSigStat *status,
+ GpgmeCtx ctx);
#endif /* SGPGME_H */