aboutsummaryrefslogtreecommitdiffstats
path: root/kbx/backend-support.c
diff options
context:
space:
mode:
Diffstat (limited to 'kbx/backend-support.c')
-rw-r--r--kbx/backend-support.c20
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