about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/command/command.c7
-rw-r--r--src/command/commands.c20
-rw-r--r--src/otr.c10
-rw-r--r--src/otr.h1
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
@@ -260,6 +260,16 @@ otr_account_load(ProfAccount *account)
 }
 
 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)
 {
 //    cons_debug("otr_encrypt_message, account: %s, recipient: %s, message: %s", jid, to, 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);