X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;f=keydb_keyd.c;h=597507e5e78d3ecb41b8043c9be162dfe65a9d62;hb=5cb163e87c7f0717aa94ca281a56e572c2a6c8f3;hp=6836e9a2db02cbbe28d22b1a123a2103ee56da05;hpb=2458360e75aa46091f60c16e041c07bffe2edefb;p=onak.git
diff --git a/keydb_keyd.c b/keydb_keyd.c
index 6836e9a..597507e 100644
--- a/keydb_keyd.c
+++ b/keydb_keyd.c
@@ -13,12 +13,13 @@
* 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.
+ * this program. If not, see .
*/
#include
#include
+#include
+#include
#include
#include
#include
@@ -34,6 +35,7 @@
#include "keystructs.h"
#include "log.h"
#include "mem.h"
+#include "onak.h"
#include "onak-conf.h"
#include "parsekey.h"
@@ -185,19 +187,19 @@ static int keyd_fetch_key_fp(struct onak_dbctx *dbctx,
/**
* delete_key - Given a keyid delete the key from storage.
-* @keyid: The keyid to delete.
+ * @fp: The fingerprint of the key to delete.
* @intrans: If we're already in a transaction.
*
* This function deletes a public key from whatever storage mechanism we
* are using. Returns 0 if the key existed.
*/
static int keyd_delete_key(struct onak_dbctx *dbctx,
- uint64_t keyid, bool intrans)
+ struct openpgp_fingerprint *fp, bool intrans)
{
int keyd_fd = (intptr_t) dbctx->priv;
if (keyd_send_cmd(keyd_fd, KEYD_CMD_DELETE)) {
- write(keyd_fd, &keyid, sizeof(keyid));
+ write(keyd_fd, fp, sizeof(*fp));
}
return 0;
@@ -227,6 +229,7 @@ static int keyd_store_key(struct onak_dbctx *dbctx,
struct openpgp_packet_list *list_end = NULL;
struct openpgp_publickey *next = NULL;
uint64_t keyid;
+ enum keyd_ops cmd = KEYD_CMD_STORE;
if (get_keyid(publickey, &keyid) != ONAK_E_OK) {
logthing(LOGTHING_ERROR, "Couldn't find key ID for key.");
@@ -234,10 +237,10 @@ static int keyd_store_key(struct onak_dbctx *dbctx,
}
if (update) {
- keyd_delete_key(dbctx, keyid, false);
+ cmd = KEYD_CMD_UPDATE;
}
- if (keyd_send_cmd(keyd_fd, KEYD_CMD_STORE)) {
+ if (keyd_send_cmd(keyd_fd, cmd)) {
keybuf.offset = 0;
keybuf.size = 8192;
keybuf.buffer = malloc(keybuf.size);