From e294a6db92b23956be777844d3796393147f5f30 Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 10 Jan 2014 20:20:38 +0000 Subject: [PATCH] Added "/otr fp" to show users fingerprint --- src/command/command.c | 7 ++++--- src/command/commands.c | 20 ++++++++++++-------- src/otr.c | 10 ++++++++++ src/otr.h | 1 + 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/command/command.c b/src/command/command.c index 9aca7185..3f220cee 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -570,10 +570,11 @@ static struct cmd_t command_defs[] = { "/otr", cmd_otr, parse_args, 1, 2, NULL, - { "/otr gen|start|end|trust|untrust [contact]", "Off The Record encryption commands.", - { "/otr gen|start|end|trust|untrust [contact]", - "-----------------------------------------", + { "/otr gen|fp", "Off The Record encryption commands.", + { "/otr gen|fp", + "-----------", "gen - Load or create private key and fingerprints.", + "fp - Show your fingerprint.", NULL } } }, { "/outtype", diff --git a/src/command/commands.c b/src/command/commands.c index b71e2af8..cb38d934 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -2287,15 +2287,19 @@ gboolean cmd_otr(gchar **args, struct cmd_help_t help) { #ifdef HAVE_LIBOTR + if (jabber_get_connection_status() != JABBER_CONNECTED) { + cons_show("You must be connected with an account to load OTR information."); + return TRUE; + } + if (strcmp(args[0], "gen") == 0) { - if (jabber_get_connection_status() != JABBER_CONNECTED) { - cons_show("You must be connected with an account to load OTR information."); - return TRUE; - } else { - ProfAccount *account = accounts_get_account(jabber_get_account_name()); - otr_account_load(account); - return TRUE; - } + ProfAccount *account = accounts_get_account(jabber_get_account_name()); + otr_account_load(account); + return TRUE; + } else if (strcmp(args[0], "fp") == 0) { + char *fingerprint = otr_get_fingerprint(); + cons_show("Your fingerprint: %s", fingerprint); + return TRUE; } else { cons_show("Usage: %s", help.usage); return TRUE; diff --git a/src/otr.c b/src/otr.c index bb48d1f0..b6b19252 100644 --- a/src/otr.c +++ b/src/otr.c @@ -259,6 +259,16 @@ otr_account_load(ProfAccount *account) return; } +char * +otr_get_fingerprint(void) +{ + char fingerprint[45]; + otrl_privkey_fingerprint(user_state, fingerprint, jid, "xmpp"); + char *result = strdup(fingerprint); + + return result; +} + char * otr_encrypt_message(const char * const to, const char * const message) { diff --git a/src/otr.h b/src/otr.h index ae8e2cb1..cb964908 100644 --- a/src/otr.h +++ b/src/otr.h @@ -27,6 +27,7 @@ void otr_init(void); void otr_account_load(ProfAccount *account); +char * otr_get_fingerprint(void); char * otr_encrypt_message(const char * const to, const char * const message); char * otr_decrypt_message(const char * const from, const char * const message); void otr_free_message(char *message);