+/**
+ * @brief Takes a key and stores it.
+ * @param publickey A pointer to the public key to store.
+ * @param intrans If we're already in a transaction.
+ * @param update If true the key exists and should be updated.
+ *
+ * This function stores a public key in whatever storage mechanism we are
+ * using. intrans indicates if we're already in a transaction so don't
+ * need to start one. update indicates if the key already exists and is
+ * just being updated.
+ *
+ * TODO: Do we store multiple keys of the same id? Or only one and replace it?
+ */
+ int (*store_key)(struct onak_dbctx *,
+ struct openpgp_publickey *publickey, bool intrans,
+ bool update);
+
+/**
+ * @brief Given a keyid delete the key from storage.
+ * @param fp The fingerprint of the key to delete.
+ * @param 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.
+ */
+ int (*delete_key)(struct onak_dbctx *, struct openpgp_fingerprint *fp,
+ bool intrans);
+