about summary refs log tree commit diff stats
path: root/src/pgp
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-12-15 00:38:16 +0000
committerJames Booth <boothj5@gmail.com>2015-12-15 00:38:16 +0000
commit88fd2a25ee8fdd9f2f8f36f3a705364800206867 (patch)
treed49752fd8533c1a4ecc295e6a72750ab78727331 /src/pgp
parent482eea4fcf68b9f2bd9f8d6f1db98fe313bef141 (diff)
downloadprofani-tty-88fd2a25ee8fdd9f2f8f36f3a705364800206867.tar.gz
Show PGP error strings
Diffstat (limited to 'src/pgp')
-rw-r--r--src/pgp/gpg.c14
-rw-r--r--src/pgp/gpg.h2
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);