diff options
Diffstat (limited to 'src/pgp')
-rw-r--r-- | src/pgp/gpg.c | 14 | ||||
-rw-r--r-- | src/pgp/gpg.h | 2 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/pgp/gpg.c b/src/pgp/gpg.c index 7828c934..b40df96f 100644 --- a/src/pgp/gpg.c +++ b/src/pgp/gpg.c @@ -424,12 +424,13 @@ p_gpg_libver(void) } gboolean -p_gpg_valid_key(const char *const keyid) +p_gpg_valid_key(const char *const keyid, char **err_str) { gpgme_ctx_t ctx; gpgme_error_t error = gpgme_new(&ctx); if (error) { log_error("GPG: Failed to create gpgme context. %s %s", gpgme_strsource(error), gpgme_strerror(error)); + *err_str = strdup(gpgme_strerror(error)); return FALSE; } @@ -438,18 +439,21 @@ p_gpg_valid_key(const char *const keyid) if (error || key == NULL) { log_error("GPG: Failed to get key. %s %s", gpgme_strsource(error), gpgme_strerror(error)); + *err_str = strdup(gpgme_strerror(error)); gpgme_release(ctx); return FALSE; } - if (key) { + if (key == NULL) { + *err_str = strdup("Unknown error"); gpgme_release(ctx); - gpgme_key_unref(key); - return TRUE; + return FALSE; } gpgme_release(ctx); - return FALSE; + gpgme_key_unref(key); + return TRUE; + } gboolean diff --git a/src/pgp/gpg.h b/src/pgp/gpg.h index f699e889..5149343f 100644 --- a/src/pgp/gpg.h +++ b/src/pgp/gpg.h @@ -59,7 +59,7 @@ GHashTable* p_gpg_list_keys(void); void p_gpg_free_keys(GHashTable *keys); gboolean p_gpg_addkey(const char *const jid, const char *const keyid); GHashTable* p_gpg_pubkeys(void); -gboolean p_gpg_valid_key(const char *const keyid); +gboolean p_gpg_valid_key(const char *const keyid, char **err_str); gboolean p_gpg_available(const char *const barejid); const char* p_gpg_libver(void); char* p_gpg_sign(const char *const str, const char *const fp); |