X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;f=keydb_pg.c;h=7663c3db8799ce518994649901d48d557e95068c;hb=5cb163e87c7f0717aa94ca281a56e572c2a6c8f3;hp=d599afecc97ee3012f1dd96294d78b2490eea6b7;hpb=2458360e75aa46091f60c16e041c07bffe2edefb;p=onak.git diff --git a/keydb_pg.c b/keydb_pg.c index d599afe..7663c3d 100644 --- a/keydb_pg.c +++ b/keydb_pg.c @@ -13,8 +13,7 @@ * 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 @@ -248,13 +247,14 @@ static int pg_fetch_key_text(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 pg_delete_key(struct onak_dbctx *dbctx, uint64_t keyid, bool intrans) +static int pg_delete_key(struct onak_dbctx *dbctx, + struct openpgp_fingerprint *fp, bool intrans) { PGconn *dbconn = (PGconn *) dbctx->priv; PGresult *result = NULL; @@ -263,11 +263,14 @@ static int pg_delete_key(struct onak_dbctx *dbctx, uint64_t keyid, bool intrans) int found = 1; int i; Oid key_oid; + uint64_t keyid; if (!intrans) { result = PQexec(dbconn, "BEGIN"); PQclear(result); } + + keyid = fingerprint2keyid(fp); snprintf(statement, 1023, "SELECT keydata FROM onak_keys WHERE keyid = '%" @@ -348,6 +351,7 @@ static int pg_store_key(struct onak_dbctx *dbctx, int i; uint64_t keyid; struct pg_fc_ctx fcctx; + struct openpgp_fingerprint fp; if (!intrans) { result = PQexec(dbconn, "BEGIN"); @@ -368,7 +372,8 @@ static int pg_store_key(struct onak_dbctx *dbctx, * it definitely needs updated. */ if (update) { - pg_delete_key(dbctx, keyid, true); + get_fingerprint(publickey->publickey, &fp); + pg_delete_key(dbctx, &fp, true); } next = publickey->next; @@ -677,13 +682,13 @@ struct onak_dbctx *keydb_pg_init(struct onak_db_config *dbcfg, bool readonly) } dbctx->config = dbcfg; - dbconn = PQsetdbLogin(config.pg_dbhost, // host + dbconn = PQsetdbLogin(dbcfg->hostname, // host NULL, // port NULL, // options NULL, // tty - config.pg_dbname, // database - config.pg_dbuser, //login - config.pg_dbpass); // password + dbcfg->location, // database + dbcfg->username, //login + dbcfg->password); // password if (PQstatus(dbconn) == CONNECTION_BAD) { logthing(LOGTHING_CRITICAL, "Connection to database failed.");