Commit db9f97c6 authored by Andreas Rönnquist's avatar Andreas Rönnquist

New upstream version 0.9.10

parent 3ae487f5
2016-11-19 Werner Koch <wk@gnupg.org>
Release 0.9.10.
po: Auto update.
po: Update German translation.
po: Add zh_CN translation.
2016-11-19 Andreas Rönnquist <gusnan@gusnan.se>
Fix some minor problems in original English strings.
2016-11-05 Werner Koch <wk@gnupg.org>
Fix make distcheck broken by last commit.
Add new tab to the key details with TOFU information.
* src/gpa-tofu-list.c: New.
* src/gpa-tofu-list.h: New.
* src/Makefile.am (gpa_SOURCES): Add new files.
* src/gpa.h (ENABLE_TOFU_INFO): Define depending on GPGME version.
* src/keymanager.c (key_manager_selection_changed): List with tofu
info.
* src/convert.c (gpa_expiry_date_string): Factor code out to ...
(gpa_date_string): new.
* src/gpa-key-details.c: Include gpa-tofu-list.h.
(struct _GpaKeyDetails): Add fields tofu_list and tofu_page.
(gpa_key_details_finalize): Release tofu objects.
(build_tofu_page): New.
(ui_mode_changed): Call that.
(gpa_key_details_update): Add TOFU notebook page.
* src/gpa-key-details.c (details_page_fill_key): Move KeyID after the
fingerprint.
2016-09-16 Werner Koch <wk@gnupg.org>
Remove the keyid column from two lists.
* src/keylist.c (GPA_KEYLIST_COLUMN_KEYID): Remove.
(gpa_keylist_init): Remove corresponding entry.
(gpa_keylist_next): Remove keyid setting.
(search_keylist_function): Remove keyid searching.
(setup_columns): Don't fill keyid column.
* src/gpakeyselector.c: Include gtktools.h and convert.h.
(GPA_KEY_SELECTOR_COLUMN_KEYID): Renamed to
GPA_KEY_SELECTOR_COLUMN_CREATED.
(gpa_key_selector_init): Show Creation date instead of Keyid.
2016-07-18 Justus Winter <justus@g10code.com>
Fix drag-and-drop.
* src/fileman.c (dnd_drop_handler): Instead of hard-coding the
position of the expected target (which may crash if the list is
shorter), look for the expected target in the list supplied by the
source window.
GnuPG-bug-id: 2413
2016-05-20 Werner Koch <wk@gnupg.org>
Make the gpgme edito FSM more robust.
* src/gpgmeedit.c (edit_fnc): Whitelist instead of blacklisting needed
status codes.
2015-11-03 Neal H. Walfield <neal@gnu.org>
Provide an option to choose an alternate name for files that exist.
* src/gpgmetools.c (check_overwriting): Change return type from a
boolean to a char *. If the file exists, offer the user the option to
select a different file. Return the file that is actually used.
(gpa_fopen): Take an additional parameter, FILENAME_USED. Save the
filename returned by check_overwriting there. Update users.
(gpa_open_output): Likewise.
2015-09-11 Werner Koch <wk@gnupg.org>
Fix segv when if build against gpgme 1.6.1.
* src/gpasubkeylist.c (gpa_subkey_list_new): Remove one STRING column
for gpgme >= 1.6.1.
Allow deletion of X.509 keys.
* src/gpakeydeleteop.c (gpa_key_delete_operation_start): Set the
protocol before calling the delete function.
2015-09-09 Werner Koch <wk@gnupg.org>
Post release updates.
Release 0.9.9.
Fix build problem for gpgme < 1.6.1.
......
......@@ -332,6 +332,8 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
......
Noteworthy changes in version 0.9.10 (2016-11-19)
-------------------------------------------------
* Addded basic support for TOFU information.
* Removed key-ID from some listings in favor of using the
fingerprint.
* Fixed deletion of X.509 keys.
* Allow for saving to an alternate file name if the file already
exists.
* Fixed several problems with key edit functions.
* Fixed drag-and-drop.
Noteworthy changes in version 0.9.9 (2015-09-09)
------------------------------------------------
......
......@@ -9,7 +9,7 @@ files, to verify signatures and to manage the private and public keys.
Copyright (C) 2000-2002 G-N-U GmbH (http://www.g-n-u.de)
Copyright (C) 2002-2004 Miguel Coca.
Copyright (C) 2005-2014 g10 Code GmbH
Copyright (C) 2005-2016 g10 Code GmbH
GPA uses fragments from the following programs and libraries:
JNLIB, Copyright (C) 1998-2000 Free Software Foundation, Inc.
......
This diff is collapsed.
This diff is collapsed.
......@@ -28,7 +28,7 @@ min_automake_version="1.10"
# (git tag -s gpa-1.n.m) and run "./autogen.sh --force". Please
# bump the version number immediately *after* the release and do
# another commit and push so that the git magic is able to work.
m4_define([mym4_version], [0.9.9])
m4_define([mym4_version], [0.9.10])
# Below is m4 magic to extract and compute the git revision number,
# the decimalized short revision number, a beta version string and a
......
......@@ -220,6 +220,8 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
......
......@@ -189,6 +189,8 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
......
......@@ -210,6 +210,8 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
......
# Set of available languages.
de cs fr zh_TW pt_BR ja nl es sv pl ru tr ar
de cs fr zh_TW zh_CN pt_BR ja nl es sv pl ru tr ar
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
This diff is collapsed.
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
File added
This diff is collapsed.
No preview for this file type
This diff is collapsed.
......@@ -119,6 +119,7 @@ gpa_SOURCES = \
selectkeydlg.c selectkeydlg.h \
keymanager.c keymanager.h \
gpa-key-details.c gpa-key-details.h \
gpa-tofu-list.c gpa-tofu-list.h \
ownertrustdlg.c ownertrustdlg.h \
keysigndlg.c keysigndlg.h \
keygendlg.c keygendlg.h \
......
This diff is collapsed.
......@@ -1102,7 +1102,7 @@ change_pin (GpaCMOpenpgp *card, int pinno)
"Entering a wrong value for the PIN "
"decrements the retry counter. If the retry counters "
"of the PIN and of the Reset Code are both down "
"to zero, the PIN can still be reseted by using the "
"to zero, the PIN can still be reset by using the "
"Admin-PIN.\n"
"\n"
"A fresh standard card has set the PIN to the value "
......@@ -1120,7 +1120,7 @@ change_pin (GpaCMOpenpgp *card, int pinno)
"value of the PIN and then to enter a new value for the "
"Reset Code and repeat that new value at another prompt.");
else if (reset_mode && pinno < 2)
string = _("<b>Reseting the PIN or the Reset Code</b>\n"
string = _("<b>Resetting the PIN or the Reset Code</b>\n"
"\n"
"If the retry counters of the PIN and of the Reset Code are "
"both down to zero, it is only possible to reset them if you "
......
......@@ -72,31 +72,44 @@ gpa_time_unit_from_string (const char *string)
char *
gpa_expiry_date_string (unsigned long expiry_time)
gpa_date_string (unsigned long t)
{
gchar *result;
GDate expiry_date;
GDate date;
if (sizeof (time_t) <= 4 && expiry_time == (time_t)2145914603)
if (sizeof (time_t) <= 4 && t == (time_t)2145914603)
{
/* 2145914603 (2037-12-31 23:23:23) is used by GPGME to indicate
a time we can't represent. */
result = g_strdup (">= 2038");
}
else if ( expiry_time > 0 )
else if ( t > 0 )
{
g_date_set_time_t (&expiry_date, (time_t) expiry_time);
g_date_set_time_t (&date, (time_t)t );
result = g_strdup_printf ("%04d-%02d-%02d",
g_date_get_year (&expiry_date),
g_date_get_month (&expiry_date),
g_date_get_day (&expiry_date));
g_date_get_year (&date),
g_date_get_month (&date),
g_date_get_day (&date));
}
else
result = g_strdup (_("never expires"));
result = g_strdup ("");
return result;
}
char *
gpa_expiry_date_string (unsigned long expiry_time)
{
char *p = gpa_date_string (expiry_time);
if (!*p)
{
g_free (p);
p = g_strdup (_("never expires"));
}
return p;
}
char *
gpa_creation_date_string (unsigned long creation_time)
{
......
......@@ -14,7 +14,7 @@
* License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CONVERT_H
......@@ -22,6 +22,7 @@
const char *gpa_unit_expiry_time_string (int idx);
char gpa_time_unit_from_string (const char *string);
char *gpa_date_string (unsigned long t);
char *gpa_expiry_date_string (unsigned long expiry_time);
char *gpa_creation_date_string (unsigned long creation_time);
const char *gpa_sex_char_to_string (char sex);
......
......@@ -656,13 +656,12 @@ static gboolean
dnd_drop_handler (GtkWidget *widget, GdkDragContext *context,
gint x, gint y, guint tim, gpointer user_data)
{
GdkAtom target_type;
GdkAtom target_type = gdk_atom_intern ("text/uri-list", FALSE);
/* If the source offers a target we request the data from her. */
if (context->targets)
if (context->targets && g_list_find (context->targets,
GDK_ATOM_TO_POINTER (target_type)))
{
target_type = GDK_POINTER_TO_ATOM
(g_list_nth_data (context->targets, DND_TARGET_URI_LIST));
gtk_drag_get_data (widget, context, target_type, tim);
return TRUE;
......
......@@ -37,6 +37,7 @@
#include "siglist.h"
#include "certchain.h"
#include "gpasubkeylist.h"
#include "gpa-tofu-list.h"
#include "gpa-key-details.h"
#include "gtktools.h"
......@@ -73,10 +74,14 @@ struct _GpaKeyDetails
GtkWidget *signatures_uids;
GtkWidget *certchain_list;
/* The widgets in the subkeys list. */
/* The widgets in the subkeys page. */
GtkWidget *subkeys_page;
GtkWidget *subkeys_list;
/* The widgets in the TOFU page. */
GtkWidget *tofu_page;
GtkWidget *tofu_list;
/* The key currently shown or NULL. */
gpgme_key_t current_key;
......@@ -159,13 +164,13 @@ details_page_fill_key (GpaKeyDetails *kdt, gpgme_key_t key)
gtk_label_set_text (GTK_LABEL (kdt->detail_name), text);
g_free (text);
text = (gchar*) gpa_gpgme_key_get_short_keyid (key);
gtk_label_set_text (GTK_LABEL (kdt->detail_key_id), text);
text = gpa_gpgme_key_format_fingerprint (key->subkeys->fpr);
gtk_label_set_text (GTK_LABEL (kdt->detail_fingerprint), text);
g_free (text);
text = (gchar*) gpa_gpgme_key_get_short_keyid (key);
gtk_label_set_text (GTK_LABEL (kdt->detail_key_id), text);
text = gpa_expiry_date_string (key->subkeys->expires);
gtk_label_set_text (GTK_LABEL (kdt->detail_expiry), text);
g_free (text);
......@@ -305,10 +310,10 @@ construct_details_page (GpaKeyDetails *kdt)
(table, table_row++, "", TRUE);
kdt->detail_name = add_details_row
(table, table_row++, _("User name:"), TRUE);
kdt->detail_key_id = add_details_row
(table, table_row++, _("Key ID:"), TRUE);
kdt->detail_fingerprint = add_details_row
(table, table_row++, _("Fingerprint:"), TRUE);
kdt->detail_key_id = add_details_row
(table, table_row++, _("Key ID:"), TRUE);
kdt->detail_expiry = add_details_row
(table, table_row++, _("Expires at:"), FALSE);
kdt->detail_owner_trust = add_details_row
......@@ -496,6 +501,57 @@ build_subkeys_page (GpaKeyDetails *kdt, gpgme_key_t key)
}
/* Create and append new page with TOFU info for KEY. If KEY is NULL
remove an existing TOFU page. */
static void
build_tofu_page (GpaKeyDetails *kdt, gpgme_key_t key)
{
#ifdef ENABLE_TOFU_INFO
GtkWidget *vbox;
GtkWidget *scrolled;
GtkWidget *tofulist;
int pnum;
/* First remove an existing page. */
if (kdt->tofu_page)
{
pnum = gtk_notebook_page_num (GTK_NOTEBOOK (kdt), kdt->tofu_page);
if (pnum >= 0)
gtk_notebook_remove_page (GTK_NOTEBOOK (kdt), pnum);
kdt->tofu_page = NULL;
if (kdt->tofu_list)
{
g_object_unref (kdt->tofu_list);
kdt->tofu_list = NULL;
}
}
if (!key)
return;
/* Create a new page. */
vbox = gtk_vbox_new (FALSE, 5);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
scrolled = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled),
GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (vbox), scrolled, TRUE, TRUE, 0);
tofulist = gpa_tofu_list_new ();
gtk_container_add (GTK_CONTAINER (scrolled), tofulist);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
kdt->tofu_list = tofulist;
g_object_ref (kdt->tofu_list);
kdt->tofu_page = vbox;
gtk_notebook_append_page (GTK_NOTEBOOK (kdt), kdt->tofu_page,
gtk_label_new (_("Tofu")));
/* Fill this page. */
gpa_tofu_list_set_key (kdt->tofu_list, key);
#endif /*ENABLE_TOFU_INFO*/
}
/* Signal handler for the "changed_ui_mode" signal. */
static void
ui_mode_changed (GpaOptions *options, gpointer param)
......@@ -512,6 +568,7 @@ ui_mode_changed (GpaOptions *options, gpointer param)
build_signatures_page (kdt, kdt->current_key);
build_subkeys_page (kdt, kdt->current_key);
}
build_tofu_page (kdt, kdt->current_key);
gtk_notebook_set_show_tabs
(GTK_NOTEBOOK (kdt), gtk_notebook_get_n_pages (GTK_NOTEBOOK (kdt)) > 1);
gtk_widget_show_all (GTK_WIDGET (kdt));
......@@ -583,6 +640,11 @@ gpa_key_details_finalize (GObject *object)
g_object_unref (kdt->subkeys_list);
kdt->subkeys_list = NULL;
}
if (kdt->tofu_list)
{
g_object_unref (kdt->tofu_list);
kdt->tofu_list = NULL;
}
parent_class->finalize (object);
}
......@@ -651,6 +713,10 @@ gpa_key_details_update (GtkWidget *keydetails, gpgme_key_t key, int keycount)
pnum = 1;
else if (widget == kdt->subkeys_page)
pnum = 2;
#ifdef ENABLE_TOFU_INFO
else if (widget == kdt->tofu_page)
pnum = 3;
#endif /*ENABLE_TOFU_INFO*/
else
pnum = 0;
}
......@@ -686,8 +752,9 @@ gpa_key_details_update (GtkWidget *keydetails, gpgme_key_t key, int keycount)
{
details_page_fill_num_keys (kdt, keycount);
build_signatures_page (kdt, NULL);
build_subkeys_page (kdt, NULL);
}
build_tofu_page (kdt, key);
gtk_notebook_set_show_tabs
(GTK_NOTEBOOK (kdt), gtk_notebook_get_n_pages (GTK_NOTEBOOK (kdt)) > 1);
......@@ -698,6 +765,10 @@ gpa_key_details_update (GtkWidget *keydetails, gpgme_key_t key, int keycount)
pnum = gtk_notebook_page_num (GTK_NOTEBOOK (kdt), kdt->signatures_page);
else if (pnum == 2 && kdt->subkeys_page)
pnum = gtk_notebook_page_num (GTK_NOTEBOOK (kdt), kdt->subkeys_page);
#ifdef ENABLE_TOFU_INFO
else if (pnum == 3 && kdt->tofu_page)
pnum = gtk_notebook_page_num (GTK_NOTEBOOK (kdt), kdt->tofu_page);
#endif /*ENABLE_TOFU_INFO*/
else
pnum = 0;
gtk_notebook_set_current_page (GTK_NOTEBOOK (kdt), pnum);
......
......@@ -62,9 +62,9 @@ gpa_marshal_INT__STRING_STRING (GClosure *closure,
gpointer arg_1,
gpointer arg_2,
gpointer data2);
register GMarshalFunc_INT__STRING_STRING callback;
register GCClosure *cc = (GCClosure*) closure;
register gpointer data1, data2;
GMarshalFunc_INT__STRING_STRING callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
gint v_return;
g_return_if_fail (return_value != NULL);
......
This diff is collapsed.
/* gpa-tofu-list.h - A list to show TOFU information
* Copyright (C) 2016 g10 Code GmbH
*
* This file is part of GPA
*
* GPA is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* GPA is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GPA_TOFU_LIST_H
#define GPA_TOFU_LIST_H
#include <gtk/gtk.h>
/* Create a new TOFU list. */
GtkWidget * gpa_tofu_list_new (void);
/* Set the key for which TOFU information shall be shown. */
void gpa_tofu_list_set_key (GtkWidget *list, gpgme_key_t key);
#endif /* GPA_TOFU_LIST_H */
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment