Moved pgp signature generation to cl_ev_presence_send

This commit is contained in:
James Booth
2015-05-08 00:07:21 +01:00
parent 0db7bcbdcd
commit acd2d2309f
7 changed files with 49 additions and 27 deletions

View File

@@ -42,6 +42,9 @@
#ifdef HAVE_LIBOTR
#include "otr/otr.h"
#endif
#ifdef HAVE_LIBGPGME
#include "pgp/gpg.h"
#endif
jabber_conn_status_t
cl_ev_connect_jid(const char * const jid, const char * const passwd, const char * const altdomain, const int port)
@@ -63,7 +66,19 @@ cl_ev_connect_account(ProfAccount *account)
void
cl_ev_presence_send(const resource_presence_t presence_type, const char * const msg, const int idle)
{
presence_send(presence_type, msg, idle);
char *signed_status = NULL;
#ifdef HAVE_LIBGPGME
char *account_name = jabber_get_account_name();
ProfAccount *account = accounts_get_account(account_name);
if (account->pgp_keyid) {
signed_status = p_gpg_sign(msg, account->pgp_keyid);
}
#endif
presence_send(presence_type, msg, idle, signed_status);
free(signed_status);
}
void

View File

@@ -196,7 +196,7 @@ presence_reset_sub_request_search(void)
}
void
presence_send(const resource_presence_t presence_type, const char * const msg, const int idle)
presence_send(const resource_presence_t presence_type, const char * const msg, const int idle, char *signed_status)
{
if (jabber_get_connection_status() != JABBER_CONNECTED) {
log_warning("Error setting presence, not connected.");
@@ -224,27 +224,17 @@ presence_send(const resource_presence_t presence_type, const char * const msg, c
stanza_attach_status(ctx, presence, msg);
#ifdef HAVE_LIBGPGME
char *account_name = jabber_get_account_name();
ProfAccount *account = accounts_get_account(account_name);
if (account->pgp_keyid) {
char *signed_status = p_gpg_sign(msg, account->pgp_keyid);
if (signed_status) {
xmpp_stanza_t *x = xmpp_stanza_new(ctx);
xmpp_stanza_set_name(x, STANZA_NAME_X);
xmpp_stanza_set_ns(x, STANZA_NS_SIGNED);
xmpp_stanza_t *signed_text = xmpp_stanza_new(ctx);
xmpp_stanza_set_text(signed_text, signed_status);
xmpp_stanza_add_child(x, signed_text);
xmpp_stanza_release(signed_text);
xmpp_stanza_add_child(presence, x);
xmpp_stanza_release(x);
free(signed_status);
}
if (signed_status) {
xmpp_stanza_t *x = xmpp_stanza_new(ctx);
xmpp_stanza_set_name(x, STANZA_NAME_X);
xmpp_stanza_set_ns(x, STANZA_NS_SIGNED);
xmpp_stanza_t *signed_text = xmpp_stanza_new(ctx);
xmpp_stanza_set_text(signed_text, signed_status);
xmpp_stanza_add_child(x, signed_text);
xmpp_stanza_release(signed_text);
xmpp_stanza_add_child(presence, x);
xmpp_stanza_release(x);
}
#endif
stanza_attach_priority(ctx, presence, pri);
stanza_attach_last_activity(ctx, presence, idle);

View File

@@ -168,8 +168,7 @@ char * presence_sub_request_find(const char * const search_str);
void presence_join_room(char *room, char *nick, char * passwd);
void presence_change_room_nick(const char * const room, const char * const nick);
void presence_leave_chat_room(const char * const room_jid);
void presence_send(resource_presence_t status, const char * const msg,
int idle);
void presence_send(resource_presence_t status, const char * const msg, int idle, char *signed_status);
gboolean presence_sub_request_exists(const char * const bare_jid);
// iq functions