diff -ur balsa-jeff/libbalsa/gmime-application-pkcs7.c balsa/libbalsa/gmime-application-pkcs7.c
--- balsa-jeff/libbalsa/gmime-application-pkcs7.c	2008-06-10 22:50:25.000000000 -0400
+++ balsa/libbalsa/gmime-application-pkcs7.c	2008-06-10 22:43:07.000000000 -0400
@@ -323,6 +323,7 @@
     GMimeFilter *crlf_filter;
     GMimeParser *parser;
     const char *smime_type;
+    GMimeSignatureValidity *validity;
 
     g_return_val_if_fail(GMIME_IS_PART(pkcs7), NULL);
     g_return_val_if_fail(GMIME_IS_CIPHER_CONTEXT(ctx), NULL);
@@ -353,7 +354,8 @@
     g_object_unref(crlf_filter);
 
     /* get the cleartext */
-    if (g_mime_cipher_context_decrypt(ctx, ciphertext, filtered_stream, err) == -1) {
+    validity = g_mime_cipher_context_decrypt(ctx, ciphertext, filtered_stream, err);
+    if (validity == NULL) {
 	g_object_unref(filtered_stream);
 	g_object_unref(ciphertext);
 	g_object_unref(stream);
@@ -361,6 +363,7 @@
 	return NULL;
     }
 
+    g_mime_signature_validity_free(validity);
     g_mime_stream_flush(filtered_stream);
     g_object_unref(filtered_stream);
     g_object_unref(ciphertext);
diff -ur balsa-jeff/libbalsa/gmime-gpgme-context.c balsa/libbalsa/gmime-gpgme-context.c
--- balsa-jeff/libbalsa/gmime-gpgme-context.c	2008-06-10 22:50:09.000000000 -0400
+++ balsa/libbalsa/gmime-gpgme-context.c	2008-06-10 21:36:19.000000000 -0400
@@ -62,9 +62,10 @@
 				GMimeStream * istream,
 				GMimeStream * ostream, GError ** err);
 
-static int g_mime_gpgme_decrypt(GMimeCipherContext * ctx,
-				GMimeStream * istream,
-				GMimeStream * ostream, GError ** err);
+static GMimeSignatureValidity *g_mime_gpgme_decrypt(GMimeCipherContext * ctx,
+                                                    GMimeStream * istream,
+                                                    GMimeStream * ostream,
+                                                    GError ** err);
 
 
 /* internal passphrase callback */
@@ -634,7 +635,7 @@
  * Decrypt istream to ostream. In RFC 2440 mode, also try to check an included
  * signature (if any).
  */
-static int
+static GMimeSignatureValidity *
 g_mime_gpgme_decrypt(GMimeCipherContext * context, GMimeStream * istream,
 		     GMimeStream * ostream, GError ** error)
 {
@@ -649,10 +650,11 @@
 	NULL,			/* seek method */
 	cb_data_release		/* release method */
     };
+    GMimeSignatureValidity *validity;
 
     /* some paranoia checks */
-    g_return_val_if_fail(ctx, -1);
-    g_return_val_if_fail(ctx->gpgme_ctx, -1);
+    g_return_val_if_fail(ctx, NULL);
+    g_return_val_if_fail(ctx->gpgme_ctx, NULL);
     gpgme_ctx = ctx->gpgme_ctx;
     protocol = gpgme_get_protocol(gpgme_ctx);
 
@@ -672,13 +674,13 @@
 	 gpgme_data_new_from_cbs(&crypt, &cbs,
 				 istream)) != GPG_ERR_NO_ERROR) {
 	g_set_error_from_gpgme(error, err, _("could not get data from stream"));
-	return -1;
+	return NULL;
     }
     if ((err = gpgme_data_new_from_cbs(&plain, &cbs, ostream)) !=
 	GPG_ERR_NO_ERROR) {
 	g_set_error_from_gpgme(error, err, _("could not create new data object"));
 	gpgme_data_release(crypt);
-	return -1;
+	return NULL;
     }
 
     /* try to decrypt */
@@ -688,7 +690,7 @@
 	g_set_error_from_gpgme(error, err, _("decryption failed"));
 	gpgme_data_release(plain);
 	gpgme_data_release(crypt);
-	return -1;
+	return NULL;
     }
     gpgme_data_release(plain);
     gpgme_data_release(crypt);
@@ -696,7 +698,10 @@
     /* try to get information about the signature (if any) */
     ctx->sig_state = g_mime_gpgme_sigstat_new_from_gpgme_ctx(gpgme_ctx);
 
-    return 0;
+    validity = g_mime_signature_validity_new();
+    g_mime_signature_validity_set_status(validity, GMIME_SIGNATURE_STATUS_NONE);
+
+    return validity;
 }
 
 
diff -ur balsa-jeff/libbalsa/gmime-part-rfc2440.c balsa/libbalsa/gmime-part-rfc2440.c
--- balsa-jeff/libbalsa/gmime-part-rfc2440.c	2008-06-10 22:50:24.000000000 -0400
+++ balsa/libbalsa/gmime-part-rfc2440.c	2008-06-10 22:43:07.000000000 -0400
@@ -267,8 +267,8 @@
 {
     GMimeStream *stream, *plainstream;
     GMimeDataWrapper * wrapper;
-    gint result;
     gchar *headbuf = g_malloc0(1024);
+    GMimeSignatureValidity *validity;
 
     g_return_val_if_fail(GMIME_IS_PART(part), -1);
     g_return_val_if_fail(GMIME_IS_GPGME_CONTEXT(ctx), -1);
@@ -289,16 +289,18 @@
     plainstream = g_mime_stream_mem_new();
 
     /* decrypt and (if possible) verify the input */
-    result =
+    validity =
 	g_mime_cipher_context_decrypt(GMIME_CIPHER_CONTEXT(ctx), stream,
 			      plainstream, err);
 
-    if (result == 0) {
+    if (validity != NULL) {
 	GMimeStream *filter_stream;
 	GMimeStream *out_stream;
 	GMimeFilter *filter;
 	GMimeDataWrapper *wrapper = g_mime_data_wrapper_new();
 
+        g_mime_signature_validity_free(validity);
+
 	/* strip crlf off encrypted stuff coming from Winbloze crap */
 	filter_stream = g_mime_stream_filter_new(plainstream);
 	filter = g_mime_filter_crlf_new(FALSE,
@@ -353,5 +355,5 @@
     g_object_unref(stream);
     g_free(headbuf);
 
-    return result;
+    return validity != NULL ? 0 : -1;
 }
diff -ur balsa-jeff/libbalsa/mailbox_mbox.c balsa/libbalsa/mailbox_mbox.c
--- balsa-jeff/libbalsa/mailbox_mbox.c	2008-06-10 22:50:24.000000000 -0400
+++ balsa/libbalsa/mailbox_mbox.c	2008-06-10 22:43:07.000000000 -0400
@@ -49,11 +49,11 @@
 struct message_info {
     LibBalsaMailboxLocalMessageInfo local_info;
     LibBalsaMessageFlag orig_flags;     /* Has only real flags */
-    off_t start;
-    off_t status;		/* Offset of the "Status:" header. */
-    off_t x_status;		/* Offset of the "X-Status:" header. */
-    off_t mime_version;		/* Offset of the "MIME-Version:" header. */
-    off_t end;
+    gint64 start;
+    gint64 status;		/* Offset of the "Status:" header. */
+    gint64 x_status;		/* Offset of the "X-Status:" header. */
+    gint64 mime_version;		/* Offset of the "MIME-Version:" header. */
+    gint64 end;
     size_t from_len;
 };
 
@@ -244,7 +244,7 @@
 /* Helper: seek to offset, and return TRUE if the seek succeeds and a
  * message begins there. */
 static gboolean
-lbm_mbox_stream_seek_to_message(GMimeStream * stream, off_t offset)
+lbm_mbox_stream_seek_to_message(GMimeStream * stream, gint64 offset)
 {
     char buffer[5];
     gboolean retval;
@@ -259,7 +259,7 @@
 }
 
 static gboolean
-lbm_mbox_seek_to_message(LibBalsaMailboxMbox * mbox, off_t offset)
+lbm_mbox_seek_to_message(LibBalsaMailboxMbox * mbox, gint64 offset)
 {
     gboolean retval;
     
@@ -340,7 +340,7 @@
  */
 static void
 lbm_mbox_header_cb(GMimeParser * parser, const char *header,
-                   const char *value, off_t offset,
+                   const char *value, gint64 offset,
                    struct message_info **msg_info_p)
 {
     struct message_info *msg_info = *msg_info_p;
@@ -479,7 +479,7 @@
 	GMimeMessage *mime_message;
         LibBalsaMessage *msg;
         gchar *from;
-        off_t offset;
+        gint64 offset;
 
         msg_info.status = msg_info.x_status = msg_info.mime_version = -1;
         mime_message   = g_mime_parser_construct_message(gmime_parser);
@@ -572,7 +572,7 @@
     gchar *contents;
     gsize length;
     gboolean tmp;
-    off_t end;
+    gint64 end;
     struct message_info *msg_info;
     GMimeStream *mbox_stream;
 
@@ -613,7 +613,7 @@
             break;
         end = msg_info->end;
         if (msg_info->from_len < 6
-            || (off_t) (msg_info->start + msg_info->from_len) >= end
+            || (gint64) (msg_info->start + msg_info->from_len) >= end
             || end > mbox->size)
             /* Error: various. */
             break;
@@ -742,8 +742,8 @@
     GMimeStream *stream;
 } LbmMboxStreamBuffer;
 
-static off_t
-lbm_mbox_seek(LbmMboxStreamBuffer * buffer, off_t offset)
+static gint64
+lbm_mbox_seek(LbmMboxStreamBuffer * buffer, gint64 offset)
 {
     if (offset >= 0) {
         buffer->start =
@@ -958,7 +958,7 @@
     GMimeStream *mbox_stream;
     guint msgno;
     time_t mtime;
-    off_t start;
+    gint64 start;
 
     g_assert(LIBBALSA_IS_MAILBOX_MBOX(mailbox));
 
@@ -1018,7 +1018,7 @@
     start = mbox->size + 1;
 
     while ((msgno = mbox->msgno_2_msg_info->len) > 0) {
-	off_t offset;
+	gint64 offset;
         struct message_info *msg_info;
 
         if (lbm_mbox_stream_seek_to_message(mbox_stream, start))
@@ -1174,7 +1174,7 @@
  * If TRUE, on return, buf contains the new header text.
  */
 static gboolean
-lbm_mbox_rewrite_helper(off_t offset, GMimeStream * stream,
+lbm_mbox_rewrite_helper(gint64 offset, GMimeStream * stream,
 			GString * header, gchar * buf, guint len,
 			const gchar * name)
 {
@@ -1271,7 +1271,7 @@
 /* Length of the line beginning at offset, including trailing '\n'.
  * Returns -1 if no '\n' found, or if seek to offset fails. */
 static gint
-lbm_mbox_line_len(LibBalsaMailboxMbox * mbox, off_t offset)
+lbm_mbox_line_len(LibBalsaMailboxMbox * mbox, gint64 offset)
 {
     GMimeStream *stream = mbox->gmime_stream;
     gint retval = -1;
@@ -1303,7 +1303,7 @@
 }
 
 static gboolean
-lbm_mbox_copy_stream(LibBalsaMailboxMbox * mbox, off_t start, off_t end,
+lbm_mbox_copy_stream(LibBalsaMailboxMbox * mbox, gint64 start, gint64 end,
 		     GMimeStream * dest)
 {
     GMimeStream *substream;
@@ -1357,7 +1357,7 @@
     struct stat st;
     gint messages;
     struct message_info *msg_info;
-    off_t offset;
+    gint64 offset;
     int first;
     int i;
     guint j;
@@ -1476,7 +1476,7 @@
 	} else {
             msg_info->status = msg_info->mime_version >= 0 ?
 		msg_info->mime_version :
-                (off_t) (msg_info->start + msg_info->from_len);
+                (gint64) (msg_info->start + msg_info->from_len);
 	    
 	    status_len = 0;
 	}
diff -ur balsa-jeff/libbalsa/rfc3156.c balsa/libbalsa/rfc3156.c
--- balsa-jeff/libbalsa/rfc3156.c	2008-06-10 22:50:09.000000000 -0400
+++ balsa/libbalsa/rfc3156.c	2008-06-10 21:22:49.000000000 -0400
@@ -390,6 +390,7 @@
 	result = 
 	    g_mime_multipart_encrypted_encrypt(mpe, *content,
 					       GMIME_CIPHER_CONTEXT(ctx),
+                                               FALSE, NULL,
 					       recipients, error);
     }
 #ifdef HAVE_SMIME
