about summary refs log tree commit diff stats
path: root/src/pgp/gpg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pgp/gpg.c')
-rw-r--r--src/pgp/gpg.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/pgp/gpg.c b/src/pgp/gpg.c
index 99d37c64..7dc57d96 100644
--- a/src/pgp/gpg.c
+++ b/src/pgp/gpg.c
@@ -914,6 +914,7 @@ p_ox_gpg_signcrypt(const char* const sender_barejid, const char* const recipient
     // lookup own key
     recp[0] = _ox_key_lookup(sender_barejid, TRUE);
     if (error != 0) {
+        cons_show_error("Can't find OX key for %s", xmpp_jid_me);
         log_error("OX: Key not found for %s. Error: %s", xmpp_jid_me, gpgme_strerror(error));
         return NULL;
     }
@@ -927,13 +928,14 @@ p_ox_gpg_signcrypt(const char* const sender_barejid, const char* const recipient
     // lookup key of recipient
     recp[1] = _ox_key_lookup(recipient_barejid, FALSE);
     if (error != 0) {
+        cons_show_error("Can't find OX key for %s", xmpp_jid_recipient);
         log_error("OX: Key not found for %s. Error: %s", xmpp_jid_recipient, gpgme_strerror(error));
         return NULL;
     }
 
     recp[2] = NULL;
-    log_debug("%s <%s>", recp[0]->uids->name, recp[0]->uids->email);
-    log_debug("%s <%s>", recp[1]->uids->name, recp[1]->uids->email);
+    log_debug("OX: %s <%s>", recp[0]->uids->name, recp[0]->uids->email);
+    log_debug("OX: %s <%s>", recp[1]->uids->name, recp[1]->uids->email);
 
     gpgme_encrypt_flags_t flags = 0;
 
@@ -1110,9 +1112,22 @@ _ox_key_is_usable(gpgme_key_t key, const char* const barejid, gboolean secret)
     gboolean result = TRUE;
 
     if (key->revoked || key->expired || key->disabled) {
+        cons_show_error("%s's key is revoked, expired or disabled", barejid);
+        log_info("OX:  %s's key is revoked, expired or disabled", barejid);
         result = FALSE;
     }
 
+    // This might be a nice features but AFAIK is not defined in the XEP.
+    // If we add this we need to expand our documentation on how to set the
+    // trust leven in gpg. I'll add an example to this commit body.
+    /*
+    if (key->owner_trust < GPGME_VALIDITY_MARGINAL) {
+        cons_show_error(" %s's key is has a trust level lower than marginal", barejid);
+        log_info("OX: Owner trust of %s's key is < GPGME_VALIDITY_MARGINAL", barejid);
+        result = FALSE;
+    }
+    */
+
     return result;
 }
 
@@ -1180,11 +1195,13 @@ p_ox_gpg_decrypt(char* base64)
             return NULL;
         }
     }
+
     size_t len;
     char* plain_str = gpgme_data_release_and_get_mem(plain, &len);
     char* result = malloc(len + 1);
-    strcpy(result, plain_str);
+    memcpy(result, plain_str, len);
     result[len] = '\0';
+    gpgme_free(plain_str);
     return result;
 }