|
|
@ -659,10 +659,10 @@ DYNAMIC_API PEP_STATUS trust_personal_key( |
|
|
|
} |
|
|
|
|
|
|
|
DYNAMIC_API PEP_STATUS own_key_is_listed( |
|
|
|
PEP_SESSION session, |
|
|
|
const char *fpr, |
|
|
|
bool *listed |
|
|
|
) |
|
|
|
PEP_SESSION session, |
|
|
|
const char *fpr, |
|
|
|
bool *listed |
|
|
|
) |
|
|
|
{ |
|
|
|
PEP_STATUS status = PEP_STATUS_OK; |
|
|
|
int count; |
|
|
@ -695,37 +695,63 @@ DYNAMIC_API PEP_STATUS own_key_is_listed( |
|
|
|
return status; |
|
|
|
} |
|
|
|
|
|
|
|
DYNAMIC_API PEP_STATUS own_key_retrieve( |
|
|
|
PEP_SESSION session, |
|
|
|
stringlist_t **own_key |
|
|
|
) |
|
|
|
DYNAMIC_API PEP_STATUS own_identities_retrieve( |
|
|
|
PEP_SESSION session, |
|
|
|
identity_list **own_identities |
|
|
|
) |
|
|
|
{ |
|
|
|
PEP_STATUS status = PEP_STATUS_OK; |
|
|
|
|
|
|
|
assert(session); |
|
|
|
assert(own_key); |
|
|
|
|
|
|
|
if (!(session && own_key)) |
|
|
|
assert(session && own_identities); |
|
|
|
if (!(session && own_identities)) |
|
|
|
return PEP_ILLEGAL_VALUE; |
|
|
|
|
|
|
|
*own_key = NULL; |
|
|
|
stringlist_t *_own_key = new_stringlist(NULL); |
|
|
|
if (_own_key == NULL) |
|
|
|
*own_identities = NULL; |
|
|
|
identity_list *_own_identities = new_identity_list(NULL); |
|
|
|
if (_own_identities == NULL) |
|
|
|
goto enomem; |
|
|
|
|
|
|
|
sqlite3_reset(session->own_key_retrieve); |
|
|
|
sqlite3_reset(session->own_identities_retrieve); |
|
|
|
|
|
|
|
int result; |
|
|
|
// address, fpr, username, user_id, comm_type, lang, flags |
|
|
|
const char *address = NULL; |
|
|
|
const char *fpr = NULL; |
|
|
|
const char *username = NULL; |
|
|
|
const char *user_id = NULL; |
|
|
|
PEP_comm_type comm_type = PEP_ct_unknown; |
|
|
|
const char *lang = NULL; |
|
|
|
unsigned int flags = 0; |
|
|
|
|
|
|
|
stringlist_t *_bl = _own_key; |
|
|
|
identity_list *_bl = _own_identities; |
|
|
|
do { |
|
|
|
result = sqlite3_step(session->own_key_retrieve); |
|
|
|
result = sqlite3_step(session->own_identities_retrieve); |
|
|
|
switch (result) { |
|
|
|
case SQLITE_ROW: |
|
|
|
fpr = (const char *) sqlite3_column_text(session->own_key_retrieve, 0); |
|
|
|
|
|
|
|
_bl = stringlist_add(_bl, fpr); |
|
|
|
address = (const char *) |
|
|
|
sqlite3_column_text(session->own_identities_retrieve, 0); |
|
|
|
fpr = (const char *) |
|
|
|
sqlite3_column_text(session->own_identities_retrieve, 1); |
|
|
|
username = (const char *) |
|
|
|
sqlite3_column_text(session->own_identities_retrieve, 2); |
|
|
|
user_id = (const char *) |
|
|
|
sqlite3_column_text(session->own_identities_retrieve, 3); |
|
|
|
comm_type = (PEP_comm_type) |
|
|
|
sqlite3_column_int(session->own_key_is_listed, 4); |
|
|
|
lang = (const char *) |
|
|
|
sqlite3_column_text(session->own_identities_retrieve, 5); |
|
|
|
flags = (unsigned int) |
|
|
|
sqlite3_column_int(session->own_key_is_listed, 6); |
|
|
|
|
|
|
|
pEp_identity *ident = new_identity(address, fpr, username, user_id); |
|
|
|
ident->comm_type = comm_type; |
|
|
|
if (lang && lang[0]) { |
|
|
|
ident->lang[0] = lang[0]; |
|
|
|
ident->lang[1] = lang[1]; |
|
|
|
} |
|
|
|
ident->flags = flags; |
|
|
|
|
|
|
|
_bl = identity_list_add(_bl, ident); |
|
|
|
if (_bl == NULL) |
|
|
|
goto enomem; |
|
|
|
|
|
|
@ -740,18 +766,19 @@ DYNAMIC_API PEP_STATUS own_key_retrieve( |
|
|
|
} |
|
|
|
} while (result != SQLITE_DONE); |
|
|
|
|
|
|
|
sqlite3_reset(session->own_key_retrieve); |
|
|
|
sqlite3_reset(session->own_identities_retrieve); |
|
|
|
if (status == PEP_STATUS_OK) |
|
|
|
*own_key = _own_key; |
|
|
|
*own_identities = _own_identities; |
|
|
|
else |
|
|
|
free_stringlist(_own_key); |
|
|
|
free_identity_list(_own_identities); |
|
|
|
|
|
|
|
goto the_end; |
|
|
|
|
|
|
|
enomem: |
|
|
|
free_stringlist(_own_key); |
|
|
|
free_identity_list(_own_identities); |
|
|
|
status = PEP_OUT_OF_MEMORY; |
|
|
|
|
|
|
|
the_end: |
|
|
|
return status; |
|
|
|
} |
|
|
|
|