/*
- * keydb.h - Routines to store and fetch keys.
+ * keydb_fs.c - Routines to store and fetch keys in a filesystem hierarchy.
*
- * Daniel Silverstone <dsilvers@digital-scurf.org>
+ * Copyright 2004 Daniel Silverstone <dsilvers@digital-scurf.org>
*
- * Copyright 2004 Daniel Silverstone and Project Purple
+ * This program 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; version 2 of the License.
+ *
+ * This program 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, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <sys/types.h>
* @publickey: A pointer to a structure to return the key in.
* @intrans: If we're already in a transaction.
*/
-static int fs_fetch_key(uint64_t keyid, struct openpgp_publickey **publickey,
+static int fs_fetch_key_id(uint64_t keyid,
+ struct openpgp_publickey **publickey,
bool intrans)
{
static char buffer[PATH_MAX];
struct openpgp_packet_list *packets = NULL;
struct openpgp_packet_list *list_end = NULL;
struct openpgp_publickey *next = NULL;
- uint64_t keyid = get_keyid(publickey);
+ uint64_t keyid;
struct ll *wordlist = NULL, *wl = NULL;
struct skshash hash;
uint64_t *subkeyids = NULL;
uint32_t hashid;
int i = 0;
+ if (get_keyid(publickey, &keyid) != ONAK_E_OK) {
+ logthing(LOGTHING_ERROR, "Couldn't find key ID for key.");
+ return 0;
+ }
if (!intrans)
fs_starttrans();
if (!intrans)
fs_starttrans();
- ret = fs_fetch_key(keyid, &pk, true);
+ ret = fs_fetch_key_id(keyid, &pk, true);
if (ret) {
logthing(LOGTHING_DEBUG, "Wordlist for key %016" PRIX64,
while (wl) {
logthing(LOGTHING_DEBUG, "Adding key: %s", wl->object);
addedkeys +=
- fs_fetch_key(strtoull(wl->object, NULL, 16), publickey,
+ fs_fetch_key_id(strtoull(wl->object, NULL, 16), publickey,
false);
if (addedkeys >= config.maxkeys)
break;
#define NEED_KEYID2UID 1
#define NEED_GETKEYSIGS 1
#define NEED_UPDATEKEYS 1
+#define NEED_GET_FP 1
#include "keydb.c"
struct dbfuncs keydb_fs_funcs = {
.cleanupdb = fs_cleanupdb,
.starttrans = fs_starttrans,
.endtrans = fs_endtrans,
- .fetch_key = fs_fetch_key,
+ .fetch_key_id = fs_fetch_key_id,
+ .fetch_key_fp = generic_fetch_key_fp,
.fetch_key_text = fs_fetch_key_text,
.fetch_key_skshash = fs_fetch_key_skshash,
.store_key = fs_store_key,