diff options
author | Michael Vetter <jubalh@iodoru.org> | 2022-05-04 12:05:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-04 12:05:39 +0200 |
commit | 1f9a75e8f7b066a280639062627cb96b6900687b (patch) | |
tree | 7cbbe9d88167cf240e905c7b62600c17e78a9bf4 /src/pgp/gpg.c | |
parent | be55b16bef18532d46161842412236629bde5601 (diff) | |
parent | e5e661e92d44ac21a4d19ef429091ef8e38203d3 (diff) | |
download | profani-tty-1f9a75e8f7b066a280639062627cb96b6900687b.tar.gz |
Merge pull request #1703 from profanity-im/feat/ox-improvements1
Several OX improvements
Diffstat (limited to 'src/pgp/gpg.c')
-rw-r--r-- | src/pgp/gpg.c | 23 |
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; } |