Allow deletion of ephemeral keys.

This commit is contained in:
Werner Koch 2009-03-23 16:17:49 +00:00
parent 36d681d98e
commit 9828f9be11
2 changed files with 20 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2009-03-23 Werner Koch <wk@g10code.com>
* delete.c (delete_one): Also delete ephemeral certificates if
specified uniquely.
2009-03-20 Werner Koch <wk@g10code.com> 2009-03-20 Werner Koch <wk@g10code.com>
* keylist.c (list_internal_keys): Set released cert to NULL. * keylist.c (list_internal_keys): Set released cert to NULL.

View File

@ -1,5 +1,5 @@
/* delete.c /* delete.c - Delete certificates from the keybox.
* Copyright (C) 2002 Free Software Foundation, Inc. * Copyright (C) 2002, 2009 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of GnuPG.
* *
@ -43,6 +43,7 @@ delete_one (ctrl_t ctrl, const char *username)
KEYDB_HANDLE kh = NULL; KEYDB_HANDLE kh = NULL;
ksba_cert_t cert = NULL; ksba_cert_t cert = NULL;
int duplicates = 0; int duplicates = 0;
int is_ephem = 0;
rc = keydb_classify_name (username, &desc); rc = keydb_classify_name (username, &desc);
if (rc) if (rc)
@ -60,11 +61,21 @@ delete_one (ctrl_t ctrl, const char *username)
goto leave; goto leave;
} }
/* If the key is specified in a unique way, include ephemeral keys
in the search. */
if ( desc.mode == KEYDB_SEARCH_MODE_FPR
|| desc.mode == KEYDB_SEARCH_MODE_FPR20
|| desc.mode == KEYDB_SEARCH_MODE_FPR16
|| desc.mode == KEYDB_SEARCH_MODE_KEYGRIP )
{
is_ephem = 1;
keydb_set_ephemeral (kh, 1);
}
rc = keydb_search (kh, &desc, 1); rc = keydb_search (kh, &desc, 1);
if (!rc) if (!rc)
rc = keydb_get_cert (kh, &cert); rc = keydb_get_cert (kh, &cert);
if (!rc) if (!rc && !is_ephem)
{ {
unsigned char fpr[20]; unsigned char fpr[20];