|
|
|
@ -152,12 +152,12 @@ static const char *sql_update_person =
|
|
|
|
|
" (select device_group from person where id = ?1)"
|
|
|
|
|
" where id = ?1 ;";
|
|
|
|
|
|
|
|
|
|
static const char *sql_set_as_pep_user =
|
|
|
|
|
"update person set is_pep_user = 1 "
|
|
|
|
|
static const char *sql_set_as_pEp_user =
|
|
|
|
|
"update person set is_pEp_user = 1 "
|
|
|
|
|
" where id = ?1 ; ";
|
|
|
|
|
|
|
|
|
|
static const char *sql_is_pep_user =
|
|
|
|
|
"select is_pep_user from person "
|
|
|
|
|
static const char *sql_is_pEp_user =
|
|
|
|
|
"select is_pEp_user from person "
|
|
|
|
|
" where id = ?1 ; ";
|
|
|
|
|
|
|
|
|
|
static const char* sql_exists_person =
|
|
|
|
@ -489,7 +489,10 @@ void errorLogCallback(void *pArg, int iErrCode, const char *zMsg){
|
|
|
|
|
PEP_STATUS pgp_import_ultimately_trusted_keypairs(PEP_SESSION session);
|
|
|
|
|
#endif // USE_GPG
|
|
|
|
|
|
|
|
|
|
DYNAMIC_API PEP_STATUS init(PEP_SESSION *session)
|
|
|
|
|
DYNAMIC_API PEP_STATUS init(
|
|
|
|
|
PEP_SESSION *session,
|
|
|
|
|
messageToSend_t messageToSend
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
PEP_STATUS status = PEP_STATUS_OK;
|
|
|
|
|
int int_result;
|
|
|
|
@ -536,6 +539,7 @@ DYNAMIC_API PEP_STATUS init(PEP_SESSION *session)
|
|
|
|
|
goto enomem;
|
|
|
|
|
|
|
|
|
|
_session->version = PEP_ENGINE_VERSION;
|
|
|
|
|
_session->messageToSend = messageToSend;
|
|
|
|
|
|
|
|
|
|
#ifdef DEBUG_ERRORSTACK
|
|
|
|
|
_session->errorstack = new_stringlist("init()");
|
|
|
|
@ -655,7 +659,7 @@ DYNAMIC_API PEP_STATUS init(PEP_SESSION *session)
|
|
|
|
|
" lang text,\n"
|
|
|
|
|
" comment text,\n"
|
|
|
|
|
" device_group text,\n"
|
|
|
|
|
" is_pep_user integer default 0\n"
|
|
|
|
|
" is_pEp_user integer default 0\n"
|
|
|
|
|
");\n"
|
|
|
|
|
"create table if not exists identity (\n"
|
|
|
|
|
" address text,\n"
|
|
|
|
@ -758,7 +762,7 @@ DYNAMIC_API PEP_STATUS init(PEP_SESSION *session)
|
|
|
|
|
if (table_contains_column(_session, "identity", "timestamp") > 0) {
|
|
|
|
|
version = 8;
|
|
|
|
|
}
|
|
|
|
|
if (table_contains_column(_session, "person", "is_pep_user") > 0) {
|
|
|
|
|
if (table_contains_column(_session, "person", "is_pEp_user") > 0) {
|
|
|
|
|
version = 7;
|
|
|
|
|
}
|
|
|
|
|
else if (table_contains_column(_session, "identity", "is_own") > 0) {
|
|
|
|
@ -926,7 +930,7 @@ DYNAMIC_API PEP_STATUS init(PEP_SESSION *session)
|
|
|
|
|
int_result = sqlite3_exec(
|
|
|
|
|
_session->db,
|
|
|
|
|
"alter table person\n"
|
|
|
|
|
" add column is_pep_user integer default 0;\n",
|
|
|
|
|
" add column is_pEp_user integer default 0;\n",
|
|
|
|
|
NULL,
|
|
|
|
|
NULL,
|
|
|
|
|
NULL
|
|
|
|
@ -935,7 +939,7 @@ DYNAMIC_API PEP_STATUS init(PEP_SESSION *session)
|
|
|
|
|
int_result = sqlite3_exec(
|
|
|
|
|
_session->db,
|
|
|
|
|
"update person\n"
|
|
|
|
|
" set is_pep_user = 1\n"
|
|
|
|
|
" set is_pEp_user = 1\n"
|
|
|
|
|
" where id = "
|
|
|
|
|
" (select distinct id from person "
|
|
|
|
|
" join trust on id = user_id "
|
|
|
|
@ -1099,12 +1103,12 @@ DYNAMIC_API PEP_STATUS init(PEP_SESSION *session)
|
|
|
|
|
(int)strlen(sql_exists_person), &_session->exists_person, NULL);
|
|
|
|
|
assert(int_result == SQLITE_OK);
|
|
|
|
|
|
|
|
|
|
int_result = sqlite3_prepare_v2(_session->db, sql_set_as_pep_user,
|
|
|
|
|
(int)strlen(sql_set_as_pep_user), &_session->set_as_pep_user, NULL);
|
|
|
|
|
int_result = sqlite3_prepare_v2(_session->db, sql_set_as_pEp_user,
|
|
|
|
|
(int)strlen(sql_set_as_pEp_user), &_session->set_as_pEp_user, NULL);
|
|
|
|
|
assert(int_result == SQLITE_OK);
|
|
|
|
|
|
|
|
|
|
int_result = sqlite3_prepare_v2(_session->db, sql_is_pep_user,
|
|
|
|
|
(int)strlen(sql_is_pep_user), &_session->is_pep_user, NULL);
|
|
|
|
|
int_result = sqlite3_prepare_v2(_session->db, sql_is_pEp_user,
|
|
|
|
|
(int)strlen(sql_is_pEp_user), &_session->is_pEp_user, NULL);
|
|
|
|
|
assert(int_result == SQLITE_OK);
|
|
|
|
|
|
|
|
|
|
int_result = sqlite3_prepare_v2(_session->db, sql_set_device_group,
|
|
|
|
@ -1358,10 +1362,10 @@ DYNAMIC_API void release(PEP_SESSION session)
|
|
|
|
|
sqlite3_finalize(session->remove_fpr_as_default);
|
|
|
|
|
if (session->set_person)
|
|
|
|
|
sqlite3_finalize(session->set_person);
|
|
|
|
|
if (session->set_as_pep_user)
|
|
|
|
|
sqlite3_finalize(session->set_as_pep_user);
|
|
|
|
|
if (session->is_pep_user)
|
|
|
|
|
sqlite3_finalize(session->is_pep_user);
|
|
|
|
|
if (session->set_as_pEp_user)
|
|
|
|
|
sqlite3_finalize(session->set_as_pEp_user);
|
|
|
|
|
if (session->is_pEp_user)
|
|
|
|
|
sqlite3_finalize(session->is_pEp_user);
|
|
|
|
|
if (session->exists_person)
|
|
|
|
|
sqlite3_finalize(session->exists_person);
|
|
|
|
|
if (session->set_device_group)
|
|
|
|
@ -2305,7 +2309,7 @@ PEP_STATUS set_trust(PEP_SESSION session, pEp_identity* identity) {
|
|
|
|
|
status = _set_trust_internal(session, identity, true);
|
|
|
|
|
if (status == PEP_STATUS_OK) {
|
|
|
|
|
if ((identity->comm_type | PEP_ct_confirmed) == PEP_ct_pEp)
|
|
|
|
|
status = set_as_pep_user(session, identity);
|
|
|
|
|
status = set_as_pEp_user(session, identity);
|
|
|
|
|
}
|
|
|
|
|
return status;
|
|
|
|
|
}
|
|
|
|
@ -2330,7 +2334,7 @@ PEP_STATUS set_identity_entry(PEP_SESSION session, pEp_identity* identity,
|
|
|
|
|
guard_transaction);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// This will NOT call set_as_pep_user; you have to do that separately.
|
|
|
|
|
// This will NOT call set_as_pEp_user; you have to do that separately.
|
|
|
|
|
DYNAMIC_API PEP_STATUS set_identity(
|
|
|
|
|
PEP_SESSION session, const pEp_identity *identity
|
|
|
|
|
)
|
|
|
|
@ -2408,7 +2412,7 @@ pep_free:
|
|
|
|
|
return status;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PEP_STATUS update_pep_user_trust_vals(PEP_SESSION session,
|
|
|
|
|
PEP_STATUS update_pEp_user_trust_vals(PEP_SESSION session,
|
|
|
|
|
pEp_identity* user) {
|
|
|
|
|
if (!user->user_id)
|
|
|
|
|
return PEP_ILLEGAL_VALUE;
|
|
|
|
@ -2426,7 +2430,7 @@ PEP_STATUS update_pep_user_trust_vals(PEP_SESSION session,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// This ONLY sets the user flag. Must be called outside of a transaction.
|
|
|
|
|
PEP_STATUS set_as_pep_user(PEP_SESSION session, pEp_identity* user) {
|
|
|
|
|
PEP_STATUS set_as_pEp_user(PEP_SESSION session, pEp_identity* user) {
|
|
|
|
|
|
|
|
|
|
assert(session);
|
|
|
|
|
assert(user);
|
|
|
|
@ -2448,16 +2452,16 @@ PEP_STATUS set_as_pep_user(PEP_SESSION session, pEp_identity* user) {
|
|
|
|
|
status = set_person(session, user, true);
|
|
|
|
|
|
|
|
|
|
// Ok, let's set it.
|
|
|
|
|
sqlite3_reset(session->set_as_pep_user);
|
|
|
|
|
sqlite3_bind_text(session->set_as_pep_user, 1, user->user_id, -1,
|
|
|
|
|
sqlite3_reset(session->set_as_pEp_user);
|
|
|
|
|
sqlite3_bind_text(session->set_as_pEp_user, 1, user->user_id, -1,
|
|
|
|
|
SQLITE_STATIC);
|
|
|
|
|
int result = sqlite3_step(session->set_as_pep_user);
|
|
|
|
|
sqlite3_reset(session->set_as_pep_user);
|
|
|
|
|
int result = sqlite3_step(session->set_as_pEp_user);
|
|
|
|
|
sqlite3_reset(session->set_as_pEp_user);
|
|
|
|
|
|
|
|
|
|
if (result != SQLITE_DONE)
|
|
|
|
|
return PEP_CANNOT_SET_PERSON;
|
|
|
|
|
|
|
|
|
|
status = update_pep_user_trust_vals(session, user);
|
|
|
|
|
status = update_pEp_user_trust_vals(session, user);
|
|
|
|
|
|
|
|
|
|
return status;
|
|
|
|
|
}
|
|
|
|
@ -2512,7 +2516,7 @@ PEP_STATUS exists_person(PEP_SESSION session, pEp_identity* identity,
|
|
|
|
|
return status;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DYNAMIC_API PEP_STATUS is_pep_user(PEP_SESSION session, pEp_identity *identity, bool* is_pep)
|
|
|
|
|
DYNAMIC_API PEP_STATUS is_pEp_user(PEP_SESSION session, pEp_identity *identity, bool* is_pep)
|
|
|
|
|
{
|
|
|
|
|
assert(session);
|
|
|
|
|
assert(is_pep);
|
|
|
|
@ -2538,23 +2542,23 @@ DYNAMIC_API PEP_STATUS is_pep_user(PEP_SESSION session, pEp_identity *identity,
|
|
|
|
|
alias_default = strdup(user_id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sqlite3_reset(session->is_pep_user);
|
|
|
|
|
sqlite3_bind_text(session->is_pep_user, 1, user_id, -1,
|
|
|
|
|
sqlite3_reset(session->is_pEp_user);
|
|
|
|
|
sqlite3_bind_text(session->is_pEp_user, 1, user_id, -1,
|
|
|
|
|
SQLITE_STATIC);
|
|
|
|
|
int result = sqlite3_step(session->is_pep_user);
|
|
|
|
|
int result = sqlite3_step(session->is_pEp_user);
|
|
|
|
|
switch (result) {
|
|
|
|
|
case SQLITE_ROW: {
|
|
|
|
|
// yeah yeah, I know, we could be lazy here, but it looks bad.
|
|
|
|
|
*is_pep = (sqlite3_column_int(session->is_pep_user, 0) != 0);
|
|
|
|
|
*is_pep = (sqlite3_column_int(session->is_pEp_user, 0) != 0);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
sqlite3_reset(session->is_pep_user);
|
|
|
|
|
sqlite3_reset(session->is_pEp_user);
|
|
|
|
|
free(alias_default);
|
|
|
|
|
return PEP_CANNOT_FIND_PERSON;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sqlite3_reset(session->is_pep_user);
|
|
|
|
|
sqlite3_reset(session->is_pEp_user);
|
|
|
|
|
return PEP_STATUS_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -3778,7 +3782,7 @@ DYNAMIC_API const char* get_engine_version() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DYNAMIC_API PEP_STATUS reset_peptest_hack(PEP_SESSION session)
|
|
|
|
|
DYNAMIC_API PEP_STATUS reset_pEptest_hack(PEP_SESSION session)
|
|
|
|
|
{
|
|
|
|
|
assert(session);
|
|
|
|
|
|
|
|
|
@ -3787,7 +3791,7 @@ DYNAMIC_API PEP_STATUS reset_peptest_hack(PEP_SESSION session)
|
|
|
|
|
|
|
|
|
|
int int_result = sqlite3_exec(
|
|
|
|
|
session->db,
|
|
|
|
|
"delete from identity where address like '%@peptest.ch' ;",
|
|
|
|
|
"delete from identity where address like '%@pEptest.ch' ;",
|
|
|
|
|
NULL,
|
|
|
|
|
NULL,
|
|
|
|
|
NULL
|
|
|
|
|