|
|
@ -35,6 +35,8 @@ DYNAMIC_API PEP_STATUS init(PEP_SESSION *session) |
|
|
|
static const char *sql_own_key_is_listed; |
|
|
|
static const char *sql_own_key_retrieve; |
|
|
|
|
|
|
|
static const char *sql_sequence_value; |
|
|
|
|
|
|
|
bool in_first = false; |
|
|
|
|
|
|
|
assert(sqlite3_threadsafe()); |
|
|
@ -179,6 +181,11 @@ DYNAMIC_API PEP_STATUS init(PEP_SESSION *session) |
|
|
|
" references pgp_keypair (fpr)\n" |
|
|
|
" on delete cascade\n" |
|
|
|
");\n" |
|
|
|
// sequences |
|
|
|
"create table if not exists sequences(\n" |
|
|
|
" name text primary key,\n" |
|
|
|
" value integer default 0\n" |
|
|
|
");\n" |
|
|
|
, |
|
|
|
NULL, |
|
|
|
NULL, |
|
|
@ -256,7 +263,12 @@ DYNAMIC_API PEP_STATUS init(PEP_SESSION *session) |
|
|
|
sql_own_key_is_listed = "select count(*) from own_keys where fpr = upper(replace(?1,' ','')) ;"; |
|
|
|
|
|
|
|
sql_own_key_retrieve = "select * from own_keys ;"; |
|
|
|
|
|
|
|
|
|
|
|
sql_sequence_value = "insert or replace into sequences (name, value) " |
|
|
|
"values (?1, " |
|
|
|
"(select coalesce((select value + 1 from sequences " |
|
|
|
"where name = ?1), 1 ))) ; " |
|
|
|
"select value from sequences where name = ?1 ;"; |
|
|
|
} |
|
|
|
|
|
|
|
int_result = sqlite3_prepare_v2(_session->db, sql_log, (int)strlen(sql_log), |
|
|
@ -716,10 +728,13 @@ DYNAMIC_API PEP_STATUS get_identity( |
|
|
|
assert(session); |
|
|
|
assert(address); |
|
|
|
assert(address[0]); |
|
|
|
assert(identity); |
|
|
|
|
|
|
|
if (!(session && address && address[0])) |
|
|
|
if (!(session && address && address[0] && identity)) |
|
|
|
return PEP_ILLEGAL_VALUE; |
|
|
|
|
|
|
|
*identity = NULL; |
|
|
|
|
|
|
|
sqlite3_reset(session->get_identity); |
|
|
|
sqlite3_bind_text(session->get_identity, 1, address, -1, SQLITE_STATIC); |
|
|
|
sqlite3_bind_text(session->get_identity, 2, user_id, -1, SQLITE_STATIC); |
|
|
@ -928,11 +943,11 @@ DYNAMIC_API PEP_STATUS least_trust( |
|
|
|
assert(fpr); |
|
|
|
assert(comm_type); |
|
|
|
|
|
|
|
*comm_type = PEP_ct_unknown; |
|
|
|
|
|
|
|
if (!(session && fpr && comm_type)) |
|
|
|
return PEP_ILLEGAL_VALUE; |
|
|
|
|
|
|
|
*comm_type = PEP_ct_unknown; |
|
|
|
|
|
|
|
sqlite3_reset(session->least_trust); |
|
|
|
sqlite3_bind_text(session->least_trust, 1, fpr, -1, SQLITE_STATIC); |
|
|
|
|
|
|
@ -1211,6 +1226,8 @@ DYNAMIC_API PEP_STATUS get_crashdump_log( |
|
|
|
CRASHDUMP_MAX_LINES)) |
|
|
|
return PEP_ILLEGAL_VALUE; |
|
|
|
|
|
|
|
*logdata = NULL; |
|
|
|
|
|
|
|
int limit = maxlines ? maxlines : CRASHDUMP_DEFAULT_LINES; |
|
|
|
const char *timestamp = NULL; |
|
|
|
const char *title = NULL; |
|
|
@ -1291,6 +1308,8 @@ DYNAMIC_API PEP_STATUS get_languagelist( |
|
|
|
if (!(session && languages)) |
|
|
|
return PEP_ILLEGAL_VALUE; |
|
|
|
|
|
|
|
*languages = NULL; |
|
|
|
|
|
|
|
const char *lang = NULL; |
|
|
|
const char *name = NULL; |
|
|
|
const char *phrase = NULL; |
|
|
@ -1351,13 +1370,13 @@ DYNAMIC_API PEP_STATUS get_phrase( |
|
|
|
) |
|
|
|
{ |
|
|
|
PEP_STATUS status = PEP_STATUS_OK; |
|
|
|
*phrase = NULL; |
|
|
|
|
|
|
|
assert(session && lang && lang[0] && lang[1] && lang[2] == 0 && phrase); |
|
|
|
|
|
|
|
if (!(session && lang && lang[0] && lang[1] && lang[2] == 0 && phrase)) |
|
|
|
return PEP_ILLEGAL_VALUE; |
|
|
|
|
|
|
|
*phrase = NULL; |
|
|
|
|
|
|
|
sqlite3_reset(session->i18n_token); |
|
|
|
sqlite3_bind_text(session->i18n_token, 1, lang, -1, SQLITE_STATIC); |
|
|
|
sqlite3_bind_int(session->i18n_token, 2, phrase_id); |
|
|
@ -1395,6 +1414,43 @@ the_end: |
|
|
|
return status; |
|
|
|
} |
|
|
|
|
|
|
|
DYNAMIC_API PEP_STATUS sequence_value( |
|
|
|
PEP_SESSION session, |
|
|
|
const char *name, |
|
|
|
int64_t *value |
|
|
|
) |
|
|
|
{ |
|
|
|
PEP_STATUS status = PEP_STATUS_OK; |
|
|
|
int result; |
|
|
|
|
|
|
|
assert(session); |
|
|
|
assert(name); |
|
|
|
assert(value); |
|
|
|
|
|
|
|
if (!(session && name && value)) |
|
|
|
return PEP_ILLEGAL_VALUE; |
|
|
|
|
|
|
|
*value = 0; |
|
|
|
|
|
|
|
sqlite3_reset(session->sequence_value); |
|
|
|
sqlite3_bind_text(session->sequence_value, 1, name, -1, SQLITE_STATIC); |
|
|
|
|
|
|
|
result = sqlite3_step(session->sequence_value); |
|
|
|
switch (result) { |
|
|
|
case SQLITE_ROW: { |
|
|
|
int64_t _value = (int64_t) |
|
|
|
sqlite3_column_int64(session->sequence_value, 0); |
|
|
|
*value = _value; |
|
|
|
break; |
|
|
|
} |
|
|
|
default: |
|
|
|
status = PEP_CANNOT_FIND_IDENTITY; |
|
|
|
} |
|
|
|
|
|
|
|
sqlite3_reset(session->sequence_value); |
|
|
|
return status; |
|
|
|
} |
|
|
|
|
|
|
|
DYNAMIC_API PEP_STATUS reset_peptest_hack(PEP_SESSION session) |
|
|
|
{ |
|
|
|
assert(session); |
|
|
|