...
1 // This file is under GNU General Public License 3.0
4 #include "pEp_internal.h"
7 DYNAMIC_API PEP_STATUS blacklist_add(PEP_SESSION session, const char *fpr)
9 PEP_STATUS status = PEP_STATUS_OK;
11 assert(session && fpr && fpr[0]);
13 if (!(session && fpr && fpr[0]))
14 return PEP_ILLEGAL_VALUE;
16 sqlite3_exec(session->db, "BEGIN ;", NULL, NULL, NULL);
18 sqlite3_reset(session->blacklist_add);
19 sqlite3_bind_text(session->blacklist_add, 1, fpr, -1, SQLITE_STATIC);
23 result = sqlite3_step(session->blacklist_add);
26 status = PEP_STATUS_OK;
27 sqlite3_exec(session->db, "COMMIT ;", NULL, NULL, NULL);
31 sqlite3_exec(session->db, "ROLLBACK ;", NULL, NULL, NULL);
32 status = PEP_UNKNOWN_ERROR;
35 sqlite3_reset(session->blacklist_add);
39 DYNAMIC_API PEP_STATUS blacklist_delete(PEP_SESSION session, const char *fpr)
41 PEP_STATUS status = PEP_STATUS_OK;
43 assert(session && fpr && fpr[0]);
45 if (!(session && fpr && fpr[0]))
46 return PEP_ILLEGAL_VALUE;
48 sqlite3_reset(session->blacklist_delete);
49 sqlite3_bind_text(session->blacklist_delete, 1, fpr, -1, SQLITE_STATIC);
53 result = sqlite3_step(session->blacklist_delete);
56 status = PEP_STATUS_OK;
60 status = PEP_UNKNOWN_ERROR;
63 sqlite3_reset(session->blacklist_delete);
67 DYNAMIC_API PEP_STATUS blacklist_is_listed(
73 PEP_STATUS status = PEP_STATUS_OK;
76 assert(session && fpr && fpr[0] && listed);
78 if (!(session && fpr && fpr[0] && listed))
79 return PEP_ILLEGAL_VALUE;
83 sqlite3_reset(session->blacklist_is_listed);
84 sqlite3_bind_text(session->blacklist_is_listed, 1, fpr, -1, SQLITE_STATIC);
88 result = sqlite3_step(session->blacklist_is_listed);
91 count = sqlite3_column_int(session->blacklist_is_listed, 0);
93 status = PEP_STATUS_OK;
97 status = PEP_UNKNOWN_ERROR;
100 sqlite3_reset(session->blacklist_is_listed);
104 DYNAMIC_API PEP_STATUS blacklist_retrieve(
106 stringlist_t **blacklist
109 PEP_STATUS status = PEP_STATUS_OK;
114 if (!(session && blacklist))
115 return PEP_ILLEGAL_VALUE;
118 stringlist_t *_blacklist = new_stringlist(NULL);
119 if (_blacklist == NULL)
122 sqlite3_reset(session->blacklist_retrieve);
126 stringlist_t *_bl = _blacklist;
128 result = sqlite3_step(session->blacklist_retrieve);
132 const char *fpr = (const char *) sqlite3_column_text(session->blacklist_retrieve, 0);
134 _bl = stringlist_add(_bl, fpr);
144 status = PEP_UNKNOWN_ERROR;
145 result = SQLITE_DONE;
147 } while (result != SQLITE_DONE);
149 sqlite3_reset(session->blacklist_retrieve);
150 if (status == PEP_STATUS_OK)
151 *blacklist = _blacklist;
153 free_stringlist(_blacklist);
158 free_stringlist(_blacklist);
159 status = PEP_OUT_OF_MEMORY;