Combined chatwin OTR SMP functions

This commit is contained in:
James Booth
2015-10-27 22:25:02 +00:00
parent 40dcd59727
commit ff9abecd50
8 changed files with 93 additions and 126 deletions

View File

@@ -102,89 +102,51 @@ chatwin_otr_unsecured(ProfChatWin *chatwin)
}
void
chatwin_otr_smp_init(ProfChatWin *chatwin)
chatwin_otr_smp_event(ProfChatWin *chatwin, prof_otr_smp_event_t event, void *data)
{
assert(chatwin != NULL);
win_vprint((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "",
"%s wants to authenticate your identity, use '/otr secret <secret>'.", chatwin->barejid);
}
void
chatwin_otr_smp_init_q(ProfChatWin *chatwin, const char *question)
{
assert(chatwin != NULL);
win_vprint((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "",
"%s wants to authenticate your identity with the following question:", chatwin->barejid);
win_vprint((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "", " %s", question);
win_print((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "", "use '/otr answer <answer>'.");
}
void
chatwin_otr_smp_sender_failed(ProfChatWin *chatwin)
{
assert(chatwin != NULL);
win_vprint((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "",
"Authentication failed, the secret you entered does not match the secret entered by %s.", chatwin->barejid);
}
void
chatwin_otr_smp_receiver_failed(ProfChatWin *chatwin)
{
assert(chatwin != NULL);
win_vprint((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "",
"Authentication failed, the secret entered by %s does not match yours.", chatwin->barejid);
}
void
chatwin_otr_smp_aborted(ProfChatWin *chatwin)
{
assert(chatwin != NULL);
win_print((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "", "SMP session aborted.");
}
void
chatwin_otr_smp_success(ProfChatWin *chatwin)
{
assert(chatwin != NULL);
win_print((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "", "Authentication successful.");
}
void
chatwin_otr_smp_answer_success(ProfChatWin *chatwin)
{
assert(chatwin != NULL);
win_vprint((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "", "%s successfully authenticated you.", chatwin->barejid);
}
void
chatwin_otr_smp_answer_failure(ProfChatWin *chatwin)
{
assert(chatwin != NULL);
win_vprint((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "", "%s failed to authenticate you.", chatwin->barejid);
}
void
chatwin_otr_smp_authenticating(ProfChatWin *chatwin)
{
assert(chatwin != NULL);
win_vprint((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "", "Authenticating %s...", chatwin->barejid);
}
void
chatwin_otr_smp_authenticaton_wait(ProfChatWin *chatwin)
{
assert(chatwin != NULL);
win_vprint((ProfWin*)chatwin, '!', 0, NULL, 0, 0, "", "Awaiting authentication from %s...", chatwin->barejid);
switch (event) {
case PROF_OTR_SMP_INIT:
win_vprintln_ch((ProfWin*)chatwin, '!',
"%s wants to authenticate your identity, use '/otr secret <secret>'.", chatwin->barejid);
break;
case PROF_OTR_SMP_INIT_Q:
win_vprintln_ch((ProfWin*)chatwin, '!',
"%s wants to authenticate your identity with the following question:", chatwin->barejid);
win_vprintln_ch((ProfWin*)chatwin, '!', " %s", (char*)data);
win_vprintln_ch((ProfWin*)chatwin, '!', "use '/otr answer <answer>'.");
break;
case PROF_OTR_SMP_SENDER_FAIL:
win_vprintln_ch((ProfWin*)chatwin, '!',
"Authentication failed, the secret you entered does not match the secret entered by %s.",
chatwin->barejid);
break;
case PROF_OTR_SMP_RECEIVER_FAIL:
win_vprintln_ch((ProfWin*)chatwin, '!',
"Authentication failed, the secret entered by %s does not match yours.", chatwin->barejid);
break;
case PROF_OTR_SMP_ABORT:
win_vprintln_ch((ProfWin*)chatwin, '!', "SMP session aborted.");
break;
case PROF_OTR_SMP_SUCCESS:
win_vprintln_ch((ProfWin*)chatwin, '!', "Authentication successful.");
break;
case PROF_OTR_SMP_SUCCESS_Q:
win_vprintln_ch((ProfWin*)chatwin, '!', "%s successfully authenticated you.", chatwin->barejid);
break;
case PROF_OTR_SMP_FAIL_Q:
win_vprintln_ch((ProfWin*)chatwin, '!', "%s failed to authenticate you.", chatwin->barejid);
break;
case PROF_OTR_SMP_AUTH:
win_vprintln_ch((ProfWin*)chatwin, '!', "Authenticating %s...", chatwin->barejid);
break;
case PROF_OTR_SMP_AUTH_WAIT:
win_vprintln_ch((ProfWin*)chatwin, '!', "Awaiting authentication from %s...", chatwin->barejid);
break;
default:
break;
}
}
void

View File

@@ -38,6 +38,7 @@
#include "command/commands.h"
#include "ui/win_types.h"
#include "muc.h"
#include "otr/otr.h"
#define NO_ME 1
#define NO_DATE 2
@@ -66,19 +67,7 @@ void chatwin_otr_secured(ProfChatWin *chatwin, gboolean trusted);
void chatwin_otr_unsecured(ProfChatWin *chatwin);
void chatwin_otr_trust(ProfChatWin *chatwin);
void chatwin_otr_untrust(ProfChatWin *chatwin);
void chatwin_otr_smp_init(ProfChatWin *chatwin);
void chatwin_otr_smp_init_q(ProfChatWin *chatwin, const char *question);
void chatwin_otr_smp_success(ProfChatWin *chatwin);
void chatwin_otr_smp_sender_failed(ProfChatWin *chatwin);
void chatwin_otr_smp_receiver_failed(ProfChatWin *chatwin);
void chatwin_otr_smp_aborted(ProfChatWin *chatwin);
void chatwin_otr_smp_answer_success(ProfChatWin *chatwin);
void chatwin_otr_smp_answer_failure(ProfChatWin *chatwin);
void chatwin_otr_smp_authenticating(ProfChatWin *chatwin);
void chatwin_otr_smp_authenticaton_wait(ProfChatWin *chatwin);
void chatwin_otr_smp_event(ProfChatWin *chatwin, prof_otr_smp_event_t event, void *data);
void ui_handle_otr_error(const char *const barejid, const char *const message);
@@ -372,6 +361,7 @@ void win_show_occupant_info(ProfWin *window, const char *const room, Occupant *o
void win_show_contact(ProfWin *window, PContact contact);
void win_show_info(ProfWin *window, PContact contact);
void win_println(ProfWin *window, int pad, const char *const message);
void win_vprintln_ch(ProfWin *window, char ch, const char *const message, ...);
// desktop notifier actions
void notifier_initialise(void);

View File

@@ -963,6 +963,18 @@ win_println(ProfWin *window, int pad, const char *const message)
win_print(window, '-', pad, NULL, 0, 0, "", message);
}
void
win_vprintln_ch(ProfWin *window, char ch, const char *const message, ...)
{
va_list arg;
va_start(arg, message);
GString *fmt_msg = g_string_new(NULL);
g_string_vprintf(fmt_msg, message, arg);
win_print(window, ch, 0, NULL, 0, 0, "", fmt_msg->str);
g_string_free(fmt_msg, TRUE);
va_end(arg);
}
void
win_newline(ProfWin *window)
{