- for (curkey = *keys; curkey != NULL; curkey = curkey->next) {
- intrans = config.dbbackend->starttrans();
- get_keyid(curkey, &keyid);
- logthing(LOGTHING_INFO,
- "Fetching key 0x%" PRIX64 ", result: %d",
- keyid,
- config.dbbackend->fetch_key_id(keyid, &oldkey,
- intrans));
+ curkey = keys;
+ while (*curkey != NULL) {
+ get_fingerprint((*curkey)->publickey, &fp);
+ if (blacklist && array_find(blacklist, &fp)) {
+ logthing(LOGTHING_INFO, "Ignoring blacklisted key.");
+ tmp = *curkey;
+ *curkey = (*curkey)->next;
+ tmp->next = NULL;
+ free_publickey(tmp);
+ continue;
+ }
+
+ intrans = dbctx->starttrans(dbctx);
+
+ ret = dbctx->fetch_key_fp(dbctx, &fp, &oldkey, intrans);
+ if (ret == 0 && updateonly) {
+ logthing(LOGTHING_INFO,
+ "Skipping new key as update only set.");
+ curkey = &(*curkey)->next;
+ goto next;
+ }