diff --git a/em-format/e-mail-formatter-headers.c b/em-format/e-mail-formatter-headers.c
index a6c8cae..81c7924 100644
--- a/em-format/e-mail-formatter-headers.c
+++ b/em-format/e-mail-formatter-headers.c
@@ -478,6 +478,86 @@
 	g_object_unref (mime_part);
 }
 
+static void
+add_security_button_to_header (EMailFormatterContext *context,
+                               EMailPart *part,
+                               GString *buffer)
+{
+	GQueue queue = G_QUEUE_INIT;
+	GList *head, *link;
+	const gchar *part_id;
+	gchar *part_id_prefix;
+
+	/* Get prefix of this PURI */
+	part_id = e_mail_part_get_id (part);
+	part_id_prefix = g_strndup (part_id, g_strrstr (part_id, ".") - part_id);
+
+	e_mail_part_list_queue_parts (context->part_list, NULL, &queue);
+
+	head = g_queue_peek_head_link (&queue);
+
+	g_string_append (buffer, "<td style=\"width:35px; overflow:hidden; float:left;\" >");
+
+	/* Find first secured part. */
+	for (link = head; link != NULL; link = g_list_next(link)) {
+		EMailPart *mail_part = link->data;
+
+		if (!e_mail_part_has_validity (mail_part))
+			continue;
+
+		if (!e_mail_part_id_has_prefix (mail_part, part_id_prefix))
+			continue;
+		/*
+		 * mail_display_plugin_widget_requested will only return one widget per part, therefore at least at the moment
+		 * there is only one button displayed even if part is encrypted and signed
+		 */
+		if (e_mail_part_get_validity (mail_part, E_MAIL_PART_VALIDITY_PGP | E_MAIL_PART_VALIDITY_SIGNED)) {
+			gchar* str = g_strdup_printf (
+				"<object type=\"application/vnd.evolution.widget.secure-button-no-text\" "
+					"height=\"20\" data=\"%s\" id=\"h.%s\"></object>",
+				e_mail_part_get_id (mail_part),
+				e_mail_part_get_id (mail_part));
+			g_string_append (buffer, str);
+
+		}
+
+		if (e_mail_part_get_validity (mail_part, E_MAIL_PART_VALIDITY_PGP | E_MAIL_PART_VALIDITY_ENCRYPTED)) {
+			gchar* str = g_strdup_printf (
+				"<object type=\"application/vnd.evolution.widget.secure-button-no-text\" "
+					"height=\"20\" data=\"%s\" id=\"h.%s\"></object>",
+				e_mail_part_get_id (mail_part),
+				e_mail_part_get_id (mail_part));
+			g_string_append (buffer, str);
+
+		}
+
+		if (e_mail_part_get_validity (mail_part, E_MAIL_PART_VALIDITY_SMIME | E_MAIL_PART_VALIDITY_SIGNED)) {
+			gchar* str = g_strdup_printf (
+				"<object type=\"application/vnd.evolution.widget.secure-button-no-text\" "
+					"height=\"20\" data=\"%s\" id=\"h.%s\"></object>",
+				e_mail_part_get_id (mail_part),
+				e_mail_part_get_id (mail_part));
+			g_string_append (buffer, str);
+
+		}
+
+		if (e_mail_part_get_validity (mail_part, E_MAIL_PART_VALIDITY_SMIME | E_MAIL_PART_VALIDITY_ENCRYPTED)) {
+			gchar* str = g_strdup_printf (
+				"<object type=\"application/vnd.evolution.widget.secure-button-no-text\" "
+					"height=\"20\" data=\"%s\" id=\"h.%s\"></object>",
+				e_mail_part_get_id (mail_part),
+				e_mail_part_get_id (mail_part));
+			g_string_append (buffer, str);
+
+		}
+
+		break;
+	}
+
+	g_string_append (buffer, "</td>");
+
+}
+
 static gboolean
 emfe_headers_format (EMailFormatterExtension *extension,
                      EMailFormatter *formatter,
@@ -558,6 +638,8 @@
 
 	g_string_append (buffer, "</td>");
 
+	add_security_button_to_header (context, part, buffer);
+
 	g_string_append (buffer, "</tr></table></div>");
 
 	g_output_stream_write_all (
diff --git a/em-format/e-mail-formatter-secure-button.c b/em-format/e-mail-formatter-secure-button.c
index c457a11..8b3e410 100644
--- a/em-format/e-mail-formatter-secure-button.c
+++ b/em-format/e-mail-formatter-secure-button.c
@@ -42,6 +42,7 @@
 
 static const gchar *formatter_mime_types[] = {
 	"application/vnd.evolution.widget.secure-button",
+	"application/vnd.evolution.widget.secure-button-no-text",
 	NULL
 };
 
@@ -362,7 +363,7 @@
 }
 
 static GtkWidget *
-secure_button_get_widget_for_validity (CamelCipherValidity *validity)
+secure_button_get_widget_for_validity (CamelCipherValidity *validity, gboolean with_text)
 {
 	GtkWidget *box, *button, *layout, *widget;
 	const gchar *icon_name;
@@ -370,34 +371,6 @@
 	GString *buffer;
 
 	g_return_val_if_fail (validity != NULL, NULL);
-
-	buffer = g_string_new ("");
-
-	if (validity->sign.status != CAMEL_CIPHER_VALIDITY_SIGN_NONE) {
-		const gchar *desc;
-		gint status;
-
-		status = validity->sign.status;
-		desc = smime_sign_table[status].shortdesc;
-
-		g_string_append (buffer, gettext (desc));
-
-		format_cert_infos (&validity->sign.signers, buffer);
-	}
-
-	if (validity->encrypt.status != CAMEL_CIPHER_VALIDITY_ENCRYPT_NONE) {
-		const gchar *desc;
-		gint status;
-
-		if (validity->sign.status != CAMEL_CIPHER_VALIDITY_SIGN_NONE)
-			g_string_append (buffer, "\n");
-
-		status = validity->encrypt.status;
-		desc = smime_encrypt_table[status].shortdesc;
-		g_string_append (buffer, gettext (desc));
-	}
-
-	description = g_string_free (buffer, FALSE);
 
 	/* FIXME: need to have it based on encryption and signing too */
 	if (validity->sign.status != 0)
@@ -424,12 +397,41 @@
 			icon_name, GTK_ICON_SIZE_LARGE_TOOLBAR);
 	gtk_button_set_image (GTK_BUTTON (button), widget);
 
-	widget = gtk_label_new (description);
-	/* make sure the text color doesn't change with theme */
-	gtk_widget_override_color (widget, GTK_STATE_FLAG_NORMAL, &smime_sign_colour[5]);
-	gtk_box_pack_start (GTK_BOX (layout), widget, FALSE, FALSE, 0);
+	if (with_text) {
+		buffer = g_string_new ("");
 
-	g_free (description);
+		if (validity->sign.status != CAMEL_CIPHER_VALIDITY_SIGN_NONE) {
+			const gchar *desc;
+			gint status;
+
+			status = validity->sign.status;
+			desc = smime_sign_table[status].shortdesc;
+
+			g_string_append (buffer, gettext (desc));
+
+			format_cert_infos (&validity->sign.signers, buffer);
+		}
+
+		if (validity->encrypt.status != CAMEL_CIPHER_VALIDITY_ENCRYPT_NONE) {
+			const gchar *desc;
+			gint status;
+
+			if (validity->sign.status != CAMEL_CIPHER_VALIDITY_SIGN_NONE)
+				g_string_append (buffer, "\n");
+
+			status = validity->encrypt.status;
+			desc = smime_encrypt_table[status].shortdesc;
+			g_string_append (buffer, gettext (desc));
+		}
+
+		description = g_string_free (buffer, FALSE);
+		widget = gtk_label_new (description);
+		/* make sure the text color doesn't change with theme */
+		gtk_widget_override_color (widget, GTK_STATE_FLAG_NORMAL, &smime_sign_colour[5]);
+		gtk_box_pack_start (GTK_BOX (layout), widget, FALSE, FALSE, 0);
+
+		g_free (description);
+	}
 
 	return box;
 }
@@ -442,8 +444,15 @@
 {
 	GtkWidget *grid;
 	GList *head, *link;
+	gboolean with_text = TRUE;
+	gchar *type;
 
 	g_return_val_if_fail (part != NULL, NULL);
+
+	type = g_hash_table_lookup (params, "type");
+	if (0 == g_strcmp0 (type, "application/vnd.evolution.widget.secure-button-no-text")) {
+		with_text = FALSE;
+	}
 
 	grid = g_object_new (
 		GTK_TYPE_GRID,
@@ -462,10 +471,15 @@
 		if (pair == NULL)
 			continue;
 
-		widget = secure_button_get_widget_for_validity (pair->validity);
+		widget = secure_button_get_widget_for_validity (pair->validity, with_text);
 		if (widget != NULL) {
-			gtk_widget_set_halign (widget, GTK_ALIGN_FILL);
-			gtk_widget_set_hexpand (widget, TRUE);
+			if (with_text) {
+				gtk_widget_set_halign (widget, GTK_ALIGN_FILL);
+				gtk_widget_set_hexpand (widget, TRUE);
+			} else {
+				gtk_widget_set_halign (widget, GTK_ALIGN_CENTER);
+				gtk_widget_set_hexpand (widget, FALSE);
+			}
 			gtk_container_add (GTK_CONTAINER (grid), widget);
 		}
 	}