diff options
author | Werner Koch <[email protected]> | 2020-01-02 13:21:12 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2020-01-02 13:21:12 +0000 |
commit | f4da1455c7ab858ea9007d0813774c6d04cd4576 (patch) | |
tree | 0380bf55daa9295f2a650875a3eb7bde6b8072da /kbx/backend-support.c | |
parent | Update wk's signing key (diff) | |
download | gnupg-f4da1455c7ab858ea9007d0813774c6d04cd4576.tar.gz gnupg-f4da1455c7ab858ea9007d0813774c6d04cd4576.zip |
kbx: Initial support for an SQLite backend
* kbx/backend-sqlite.c: New.
* kbx/Makefile.am (keyboxd_SOURCES): Add it.
(keyboxd_CFLAGS, keyboxd_LDADD): Add SQLite flags.
* kbx/backend.h (enum database_types): Add DB_TYPE_SQLITE.
(be_sqlite_local_t): New typedef.
(struct db_request_part_s): Add field besqlite.
* kbx/backend-support.c (strdbtype): Add string for DB_TYPE_SQLITE.
(be_generic_release_backend): Support SQLite.
(be_release_request): Ditto.
(be_find_request_part): Ditto.
(is_x509_blob): Rename to ...
(be_is_x509_blob): this and make global.
* kbx/frontend.c (kbxd_set_database): Detect ".db" suffix and use that
for SQLite.
(kbxd_search): Support SQLite
(kbxd_store): Ditto.
(kbxd_delete): Ditto.
* kbx/frontend.h (kbxd_store_modes): Move to ...
* kbx/keyboxd.h (enum kbxd_store_modes): here.
* kbx/keyboxd.c (main): USe pubring.db for now. This is a temporary
hack.
* kbx/backend-kbx.c (be_kbx_delete): Remove unused var cert.
--
Take care: This is not finished and in particular filling the database
takes quite long.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'kbx/backend-support.c')
-rw-r--r-- | kbx/backend-support.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/kbx/backend-support.c b/kbx/backend-support.c index f1e80b0c3..c8965da9a 100644 --- a/kbx/backend-support.c +++ b/kbx/backend-support.c @@ -51,6 +51,7 @@ strdbtype (enum database_types t) case DB_TYPE_NONE: return "none"; case DB_TYPE_CACHE:return "cache"; case DB_TYPE_KBX: return "keybox"; + case DB_TYPE_SQLITE: return "sqlite"; } return "?"; } @@ -87,6 +88,9 @@ be_generic_release_backend (ctrl_t ctrl, backend_handle_t hd) case DB_TYPE_KBX: be_kbx_release_resource (ctrl, hd); break; + case DB_TYPE_SQLITE: + be_sqlite_release_resource (ctrl, hd); + break; default: log_error ("%s: faulty backend handle of type %d given\n", __func__, hd->db_type); @@ -107,6 +111,7 @@ be_release_request (db_request_t req) { partn = part->next; be_kbx_release_kbx_hd (part->kbx_hd); + be_sqlite_release_local (part->besqlite); xfree (part); } } @@ -140,6 +145,15 @@ be_find_request_part (backend_handle_t backend_hd, db_request_t request, return err; } } + else if (backend_hd->db_type == DB_TYPE_SQLITE) + { + err = be_sqlite_init_local (backend_hd, part); + if (err) + { + xfree (part); + return err; + } + } part->next = request->part; request->part = part; } @@ -174,8 +188,8 @@ be_return_pubkey (ctrl_t ctrl, const void *buffer, size_t buflen, /* Return true if (BLOB/BLOBLEN) seems to be an X509 certificate. */ -static int -is_x509_blob (const unsigned char *blob, size_t bloblen) +int +be_is_x509_blob (const unsigned char *blob, size_t bloblen) { const unsigned char *p; size_t n, objlen, hdrlen; @@ -237,7 +251,7 @@ be_ubid_from_blob (const void *blob, size_t bloblen, { gpg_error_t err; - if (is_x509_blob (blob, bloblen)) + if (be_is_x509_blob (blob, bloblen)) { /* Although libksba has a dedicated function to compute the * fingerprint we compute it here directly because we know that |