mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
gpg: Take care to use pubring.kbx if it has ever been used.
* kbx/keybox-defs.h (struct keybox_handle): Add field for_openpgp. * kbx/keybox-file.c (_keybox_write_header_blob): Set openpgp header flag. * kbx/keybox-blob.c (_keybox_update_header_blob): Add arg for_openpgp and set header flag. * kbx/keybox-init.c (keybox_new): Rename to do_keybox_new, make static and add arg for_openpgp. (keybox_new_openpgp, keybox_new_x509): New. Use them instead of the former keybox_new. * kbx/keybox-update.c (blob_filecopy): Add arg for_openpgp and set the openpgp header flags. * g10/keydb.c (rt_from_file): New. Factored out and extended from keydb_add_resource. (keydb_add_resource): Switch to the kbx file if it has the openpgp flag set. * kbx/keybox-dump.c (dump_header_blob): Print header flags. -- The problem was reported by dkg on gnupg-devel (2014-10-07): I just discovered a new problem, though, which will affect people on systems that have gpg and gpg2 coinstalled: 0) create a new keyring with gpg2, and use it exclusively with gpg2 for a while. 1) somehow (accidentally?) use gpg (1.4.x) again -- this creates ~/.gnupg/pubring.gpg 2) future runs of gpg2 now only look at pubring.gpg and ignore pubring.kbx -- the keys you had accumulated in the keybox are no longer listed in the output of gpg2 --list-keys Note that gpgsm has always used pubring.kbx and thus this file might already be there but without gpg ever inserted a key. The new flag in the KBX header gives us an indication whether a KBX file has ever been written by gpg >= 2.1. If that is the case we will use it instead of the default pubring.gpg. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
d8c01d826f
commit
ec332d58ef
9 changed files with 153 additions and 49 deletions
|
@ -62,7 +62,8 @@ typedef enum
|
|||
void *keybox_register_file (const char *fname, int secret);
|
||||
int keybox_is_writable (void *token);
|
||||
|
||||
KEYBOX_HANDLE keybox_new (void *token, int secret);
|
||||
KEYBOX_HANDLE keybox_new_openpgp (void *token, int secret);
|
||||
KEYBOX_HANDLE keybox_new_x509 (void *token, int secret);
|
||||
void keybox_release (KEYBOX_HANDLE hd);
|
||||
void keybox_push_found_state (KEYBOX_HANDLE hd);
|
||||
void keybox_pop_found_state (KEYBOX_HANDLE hd);
|
||||
|
@ -74,7 +75,7 @@ int keybox_lock (KEYBOX_HANDLE hd, int yes);
|
|||
/*-- keybox-file.c --*/
|
||||
/* Fixme: This function does not belong here: Provide a better
|
||||
interface to create a new keybox file. */
|
||||
int _keybox_write_header_blob (FILE *fp);
|
||||
int _keybox_write_header_blob (FILE *fp, int openpgp_flag);
|
||||
|
||||
/*-- keybox-search.c --*/
|
||||
gpg_error_t keybox_get_keyblock (KEYBOX_HANDLE hd, iobuf_t *r_iobuf,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue