2004-08-25 [colin] 0.9.12cvs81.1
authorColin Leroy <colin@colino.net>
Wed, 25 Aug 2004 07:18:58 +0000 (07:18 +0000)
committerColin Leroy <colin@colino.net>
Wed, 25 Aug 2004 07:18:58 +0000 (07:18 +0000)
* src/plugins/pgpmime/pgpmime.c
* src/plugins/pgpmime/sgpgme.c
* src/plugins/pgpmime/sgpgme.h
Sync with HEAD.

ChangeLog-gtk2.claws
PATCHSETS
configure.ac
src/plugins/pgpmime/pgpmime.c
src/plugins/pgpmime/sgpgme.c
src/plugins/pgpmime/sgpgme.h

index 0c19d12480aa7921b258ab477b6dbcbcd65ad707..0e93ec9fa37423728a8947f819df9f2353ef6336 100644 (file)
@@ -1,3 +1,10 @@
+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
index 6bef76d7cc6e60633808d90ef2b55b2d7260a0b9..36b1d47358ad2dd92f471762fed0f6a68db67012 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( 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
index f4e38fae6869859e5e689dc593c28cd4874cdbf6..2f40daa40ce2129f2b81f5559c61631094c3194c 100644 (file)
@@ -11,9 +11,9 @@ MINOR_VERSION=9
 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}
index fe0793daac9f98e41eadc38dc7c0d607632cba5a..b45b0e02718c391b529153a1e8f1dd2e672f133c 100644 (file)
@@ -144,6 +144,9 @@ static gint pgpmime_check_signature(MimeInfo *mimeinfo)
        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))
@@ -243,13 +246,21 @@ static MimeInfo *pgpmime_decrypt(MimeInfo *mimeinfo)
        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;
@@ -286,6 +297,22 @@ static MimeInfo *pgpmime_decrypt(MimeInfo *mimeinfo)
        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;
 }
index 7c9551032266f8c1a2ad26e3026c6df4bb76d223..8e0eca648b227da496304ccce10132942e96a6e1 100644 (file)
@@ -239,18 +239,15 @@ GpgmeData sgpgme_data_from_mimeinfo(MimeInfo *mimeinfo)
        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;
@@ -261,8 +258,7 @@ GpgmeData sgpgme_decrypt(GpgmeData cipher)
                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();
index ddcf1a84e95da1367a077e83d571060b693efc6b..c380ef4ac50d2cbba7dea7f28b3a659f5c651ee5 100644 (file)
@@ -38,6 +38,7 @@ gchar *sgpgme_sigstat_info_short      (GpgmeCtx ctx,
 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 */