mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
sm: Implement delete key in keyboxd mode
* sm/keydb.c (keydb_delete): Implement keyboxd mode. (keydb_update_cert): Disable unused function. * kbx/backend-sqlite.c (be_sqlite_delete): Delete from issuer. -- Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
8a84a71f3a
commit
c772770574
@ -1520,6 +1520,9 @@ be_sqlite_delete (ctrl_t ctrl, backend_handle_t backend_hd,
|
|||||||
if (!err)
|
if (!err)
|
||||||
err = run_sql_statement_bind_ubid
|
err = run_sql_statement_bind_ubid
|
||||||
("DELETE from fingerprint WHERE ubid = :1", ubid);
|
("DELETE from fingerprint WHERE ubid = :1", ubid);
|
||||||
|
if (!err)
|
||||||
|
err = run_sql_statement_bind_ubid
|
||||||
|
("DELETE from issuer WHERE ubid = :1", ubid);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = run_sql_statement_bind_ubid
|
err = run_sql_statement_bind_ubid
|
||||||
("DELETE from pubkey WHERE ubid = :1", ubid);
|
("DELETE from pubkey WHERE ubid = :1", ubid);
|
||||||
|
@ -112,7 +112,7 @@ delete_one (ctrl_t ctrl, const char *username)
|
|||||||
goto leave;
|
goto leave;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We need to search again to get back to the right position. Neo
|
/* We need to search again to get back to the right position. Note
|
||||||
* that the lock is kept until the KH is released. */
|
* that the lock is kept until the KH is released. */
|
||||||
rc = keydb_lock (kh);
|
rc = keydb_lock (kh);
|
||||||
if (rc)
|
if (rc)
|
||||||
|
32
sm/keydb.c
32
sm/keydb.c
@ -1,6 +1,6 @@
|
|||||||
/* keydb.c - key database dispatcher
|
/* keydb.c - key database dispatcher
|
||||||
* Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
|
* Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
|
||||||
* Copyright (C) 2014 g10 Code GmbH
|
* Copyright (C) 2014, 2020 g10 Code GmbH
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -109,6 +109,7 @@ struct keydb_handle {
|
|||||||
|
|
||||||
/* Various flags. */
|
/* Various flags. */
|
||||||
unsigned int last_ubid_valid:1;
|
unsigned int last_ubid_valid:1;
|
||||||
|
unsigned int last_is_ephemeral; /* Last found key is ephemeral. */
|
||||||
|
|
||||||
/* The UBID of the last returned keyblock. */
|
/* The UBID of the last returned keyblock. */
|
||||||
unsigned char last_ubid[UBID_LEN];
|
unsigned char last_ubid[UBID_LEN];
|
||||||
@ -1217,6 +1218,10 @@ keydb_insert_cert (KEYDB_HANDLE hd, ksba_cert_t cert)
|
|||||||
gpg_error_t
|
gpg_error_t
|
||||||
keydb_update_cert (KEYDB_HANDLE hd, ksba_cert_t cert)
|
keydb_update_cert (KEYDB_HANDLE hd, ksba_cert_t cert)
|
||||||
{
|
{
|
||||||
|
(void)hd;
|
||||||
|
(void)cert;
|
||||||
|
return GPG_ERR_BUG;
|
||||||
|
#if 0
|
||||||
gpg_error_t err;
|
gpg_error_t err;
|
||||||
unsigned char digest[20];
|
unsigned char digest[20];
|
||||||
|
|
||||||
@ -1260,6 +1265,7 @@ keydb_update_cert (KEYDB_HANDLE hd, ksba_cert_t cert)
|
|||||||
if (DBG_CLOCK)
|
if (DBG_CLOCK)
|
||||||
log_clock ("%s: leave (err=%s)\n", __func__, gpg_strerror (err));
|
log_clock ("%s: leave (err=%s)\n", __func__, gpg_strerror (err));
|
||||||
return err;
|
return err;
|
||||||
|
#endif /*0*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1274,7 +1280,7 @@ keydb_delete (KEYDB_HANDLE hd)
|
|||||||
if (!hd)
|
if (!hd)
|
||||||
return gpg_error (GPG_ERR_INV_VALUE);
|
return gpg_error (GPG_ERR_INV_VALUE);
|
||||||
|
|
||||||
if ( hd->found < 0 || hd->found >= hd->used)
|
if (!hd->use_keyboxd && (hd->found < 0 || hd->found >= hd->used))
|
||||||
return gpg_error (GPG_ERR_NOT_FOUND);
|
return gpg_error (GPG_ERR_NOT_FOUND);
|
||||||
|
|
||||||
if (opt.dry_run)
|
if (opt.dry_run)
|
||||||
@ -1285,7 +1291,21 @@ keydb_delete (KEYDB_HANDLE hd)
|
|||||||
|
|
||||||
if (hd->use_keyboxd)
|
if (hd->use_keyboxd)
|
||||||
{
|
{
|
||||||
/* FIXME */
|
unsigned char hexubid[UBID_LEN * 2 + 1];
|
||||||
|
char line[ASSUAN_LINELENGTH];
|
||||||
|
|
||||||
|
if (!hd->last_ubid_valid)
|
||||||
|
{
|
||||||
|
err = gpg_error (GPG_ERR_VALUE_NOT_FOUND);
|
||||||
|
goto leave;
|
||||||
|
}
|
||||||
|
|
||||||
|
bin2hex (hd->last_ubid, UBID_LEN, hexubid);
|
||||||
|
snprintf (line, sizeof line, "DELETE %s", hexubid);
|
||||||
|
err = assuan_transact (hd->kbl->ctx, line,
|
||||||
|
NULL, NULL,
|
||||||
|
NULL, NULL,
|
||||||
|
NULL, NULL);
|
||||||
goto leave;
|
goto leave;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1506,6 +1526,9 @@ search_status_cb (void *opaque, const char *line)
|
|||||||
hd->last_ubid_valid = 1;
|
hd->last_ubid_valid = 1;
|
||||||
else
|
else
|
||||||
err = gpg_error (GPG_ERR_INV_VALUE);
|
err = gpg_error (GPG_ERR_INV_VALUE);
|
||||||
|
while (spacep (s))
|
||||||
|
s++;
|
||||||
|
hd->last_is_ephemeral = (*s == 'e');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1717,7 +1740,8 @@ keydb_search (ctrl_t ctrl, KEYDB_HANDLE hd,
|
|||||||
&hd->kbl->search_result.len)))
|
&hd->kbl->search_result.len)))
|
||||||
{
|
{
|
||||||
/* if (hd->last_ubid_valid) */
|
/* if (hd->last_ubid_valid) */
|
||||||
/* log_printhex (hd->last_ubid, 20, "found UBID:"); */
|
/* log_printhex (hd->last_ubid, 20, "found UBID%s:", */
|
||||||
|
/* hd->last_is_ephemeral? "(ephemeral)":""); */
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user