Add trust command

This commit is contained in:
Paul Fariello
2019-03-07 19:45:11 +01:40
parent 23485eb4e7
commit 063a5d1c52
6 changed files with 268 additions and 47 deletions

View File

@@ -579,6 +579,7 @@ cmd_ac_init(void)
omemo_ac = autocomplete_new();
autocomplete_add(omemo_ac, "gen");
autocomplete_add(omemo_ac, "start");
autocomplete_add(omemo_ac, "trust");
autocomplete_add(omemo_ac, "fingerprint");
connect_property_ac = autocomplete_new();

View File

@@ -2331,10 +2331,11 @@ static struct cmd_t command_defs[] =
},
{ "/omemo",
parse_args, 1, 2, NULL,
parse_args, 1, 3, NULL,
CMD_SUBFUNCS(
{ "gen", cmd_omemo_gen },
{ "start", cmd_omemo_start },
{ "trust", cmd_omemo_trust },
{ "fingerprint", cmd_omemo_fingerprint })
CMD_NOMAINFUNC
CMD_TAGS(
@@ -2343,6 +2344,7 @@ static struct cmd_t command_defs[] =
CMD_SYN(
"/omemo gen",
"/omemo start [<contact>]",
"/omemo trust [<contact>] <fingerprint>",
"/omemo fingerprint")
CMD_DESC(
"Omemo commands to manage keys, and perform encryption during chat sessions.")
@@ -2352,7 +2354,8 @@ static struct cmd_t command_defs[] =
{ "fingerprint", "Show current device fingerprint." })
CMD_EXAMPLES(
"/omemo gen",
"/omemo start buddy@buddychat.org")
"/omemo start buddy@buddychat.org",
"/omemo trust c4f9c875-144d7a3b-0c4a05b6-ca3be51a-a037f329-0bd3ae62-07f99719-55559d2a")
},
};

View File

@@ -8003,12 +8003,60 @@ cmd_omemo_fingerprint(ProfWin *window, const char *const command, gchar **args)
return TRUE;
}
char *fingerprint = omemo_own_fingerprint();
char *formated_fingerprint = omemo_format_fingerprint(fingerprint);
cons_show("%s", formated_fingerprint);
char *fingerprint = omemo_own_fingerprint(TRUE);
cons_show("%s", fingerprint);
free(fingerprint);
free(formated_fingerprint);
return TRUE;
#else
cons_show("This version of Profanity has not been built with OMEMO support enabled");
return TRUE;
#endif
}
gboolean
cmd_omemo_trust(ProfWin *window, const char *const command, gchar **args)
{
#ifdef HAVE_OMEMO
if (connection_get_status() != JABBER_CONNECTED) {
cons_show("You must be connected with an account to load OMEMO information.");
return TRUE;
}
if (!args[1]) {
cons_bad_cmd_usage(command);
return TRUE;
}
if (!omemo_loaded()) {
win_println(window, THEME_DEFAULT, '!', "You have not generated or loaded a cryptographic materials, use '/omemo gen'");
return TRUE;
}
char *fingerprint;
char *barejid;
/* Contact not provided */
if (!args[2]) {
fingerprint = args[1];
if (window->type != WIN_CHAT) {
win_println(window, THEME_DEFAULT, '-', "You must be in a regular chat window to trust a device without providing the contact.");
return TRUE;
}
ProfChatWin *chatwin = (ProfChatWin*)window;
assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
barejid = chatwin->barejid;
} else {
char *contact = args[2];
barejid = roster_barejid_from_name(contact);
if (barejid == NULL) {
barejid = contact;
}
}
omemo_trust(barejid, fingerprint);
return TRUE;
#else

View File

@@ -217,5 +217,6 @@ gboolean cmd_form_field(ProfWin *window, char *tag, gchar **args);
gboolean cmd_omemo_gen(ProfWin *window, const char *const command, gchar **args);
gboolean cmd_omemo_start(ProfWin *window, const char *const command, gchar **args);
gboolean cmd_omemo_fingerprint(ProfWin *window, const char *const command, gchar **args);
gboolean cmd_omemo_trust(ProfWin *window, const char *const command, gchar **args);
#endif